diff options
Diffstat (limited to 'arm9/modules')
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 72 | ||||
-rw-r--r-- | arm9/modules/11/asm/module_11.s | 694 | ||||
-rw-r--r-- | arm9/modules/12/asm/module_12.s | 48108 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_arm1.s | 6051 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_arm2.s | 35373 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_init.s | 33 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_thumb.s | 14779 | ||||
-rw-r--r-- | arm9/modules/14/asm/module_14.s | 30403 |
8 files changed, 135130 insertions, 383 deletions
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index e4c836c6..9374c856 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -61,9 +61,9 @@ _021D752C: lsl r0, r0, #8 lsr r0, r0, #0x1c beq _021D7564 - ldr r0, _021D7678 ; =0x00000006 + ldr r0, _021D7678 ; =SDK_MODULE_06_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay _021D7564: ldr r2, [r4, #0x70] mov r0, #3 @@ -174,7 +174,7 @@ _021D7666: .balign 4, 0 _021D7670: .word 0x04000050 _021D7674: .word 0x04001050 -_021D7678: .word 0x00000006 +_021D7678: .word SDK_MODULE_06_ID thumb_func_start MOD05_021D767C MOD05_021D767C: ; 0x021D767C @@ -367,8 +367,8 @@ _021D7806: lsl r0, r0, #8 lsr r0, r0, #0x1c beq _021D7856 - ldr r0, _021D7860 ; =0x00000006 - bl FUN_02005F60 + ldr r0, _021D7860 ; =SDK_MODULE_06_ID + bl UnloadOverlayByID _021D7856: mov r0, #1 pop {r3, r4, r5, pc} @@ -376,7 +376,7 @@ _021D785A: mov r0, #0 pop {r3, r4, r5, pc} nop -_021D7860: .word 0x00000006 +_021D7860: .word SDK_MODULE_06_ID thumb_func_start MOD05_021D7864 MOD05_021D7864: ; 0x021D7864 @@ -9485,16 +9485,16 @@ _021DBE9C: .word 0x02050E2D MOD05_021DBEA0: ; 0x021DBEA0 push {r4, lr} add r4, r0, #0 - ldr r0, _021DBEB8 ; =0x00000033 + ldr r0, _021DBEB8 ; =SDK_MODULE_51_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay add r0, r4, #0 bl FUN_02254A68 add r4, #0x80 str r0, [r4] pop {r4, pc} .balign 4, 0 -_021DBEB8: .word 0x00000033 +_021DBEB8: .word SDK_MODULE_51_ID thumb_func_start MOD05_021DBEBC MOD05_021DBEBC: ; 0x021DBEBC @@ -9516,11 +9516,11 @@ MOD05_021DBECC: ; 0x021DBECC add r0, #0x80 ldr r0, [r0] bl FUN_02254AB8 - ldr r0, _021DBEE0 ; =0x00000033 - bl FUN_02005F60 + ldr r0, _021DBEE0 ; =SDK_MODULE_51_ID + bl UnloadOverlayByID pop {r3, pc} nop -_021DBEE0: .word 0x00000033 +_021DBEE0: .word SDK_MODULE_51_ID thumb_func_start MOD05_021DBEE4 MOD05_021DBEE4: ; 0x021DBEE4 @@ -24576,11 +24576,11 @@ _021E33A0: ldr r0, [r5, #0xc] bl FUN_0204C1A8 add r6, r0, #0 - ldr r0, _021E341C ; =0x00000013 - bl FUN_02005F60 - ldr r0, _021E3420 ; =0x00000014 + ldr r0, _021E341C ; =SDK_MODULE_19_ID + bl UnloadOverlayByID + ldr r0, _021E3420 ; =SDK_MODULE_20_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay add r0, r6, #0 bl FUN_0204BEB8 mov r0, #1 @@ -24624,8 +24624,8 @@ _021E3414: add sp, #4 pop {r3, r4, r5, r6, pc} nop -_021E341C: .word 0x00000013 -_021E3420: .word 0x00000014 +_021E341C: .word SDK_MODULE_19_ID +_021E3420: .word SDK_MODULE_20_ID thumb_func_start MOD05_021E3424 MOD05_021E3424: ; 0x021E3424 @@ -50085,9 +50085,9 @@ MOD05_021EFAAC: ; 0x021EFAAC bl FUN_0205F1E4 cmp r0, #0 bne _021EFAF8 - ldr r0, _021EFB0C ; =0x00000014 + ldr r0, _021EFB0C ; =SDK_MODULE_20_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay mov r0, #1 bl FUN_0200A03C str r0, [sp] @@ -50100,16 +50100,16 @@ MOD05_021EFAAC: ; 0x021EFAAC add sp, #4 pop {r3, r4, r5, r6, pc} _021EFAF8: - ldr r0, _021EFB10 ; =0x00000013 + ldr r0, _021EFB10 ; =SDK_MODULE_19_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay ldr r0, [r5, #8] bl FUN_02252440 add sp, #4 pop {r3, r4, r5, r6, pc} nop -_021EFB0C: .word 0x00000014 -_021EFB10: .word 0x00000013 +_021EFB0C: .word SDK_MODULE_20_ID +_021EFB10: .word SDK_MODULE_19_ID thumb_func_start MOD05_021EFB14 MOD05_021EFB14: ; 0x021EFB14 @@ -50165,8 +50165,8 @@ MOD05_021EFB50: ; 0x021EFB50 ldr r0, [r5, #4] mov r1, #0 str r1, [r0, #0x14] - ldr r0, _021EFBAC ; =0x00000014 - bl FUN_02005F60 + ldr r0, _021EFBAC ; =SDK_MODULE_20_ID + bl UnloadOverlayByID mov r0, #1 pop {r4, r5, r6, pc} _021EFB94: @@ -50174,29 +50174,29 @@ _021EFB94: bl FUN_02252504 cmp r0, #0 beq _021EFBA8 - ldr r0, _021EFBB0 ; =0x00000013 - bl FUN_02005F60 + ldr r0, _021EFBB0 ; =SDK_MODULE_19_ID + bl UnloadOverlayByID mov r0, #1 pop {r4, r5, r6, pc} _021EFBA8: mov r0, #0 pop {r4, r5, r6, pc} .balign 4, 0 -_021EFBAC: .word 0x00000014 -_021EFBB0: .word 0x00000013 +_021EFBAC: .word SDK_MODULE_20_ID +_021EFBB0: .word SDK_MODULE_19_ID thumb_func_start MOD05_021EFBB4 MOD05_021EFBB4: ; 0x021EFBB4 push {r4, lr} add r4, r0, #0 - ldr r0, _021EFBC8 ; =0x00000013 + ldr r0, _021EFBC8 ; =SDK_MODULE_19_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay ldr r0, [r4, #8] bl FUN_02252440 pop {r4, pc} .balign 4, 0 -_021EFBC8: .word 0x00000013 +_021EFBC8: .word SDK_MODULE_19_ID thumb_func_start MOD05_021EFBCC MOD05_021EFBCC: ; 0x021EFBCC @@ -50213,15 +50213,15 @@ MOD05_021EFBD8: ; 0x021EFBD8 bl FUN_02252504 cmp r0, #0 beq _021EFBEE - ldr r0, _021EFBF4 ; =0x00000013 - bl FUN_02005F60 + ldr r0, _021EFBF4 ; =SDK_MODULE_19_ID + bl UnloadOverlayByID mov r0, #1 pop {r3, pc} _021EFBEE: mov r0, #0 pop {r3, pc} nop -_021EFBF4: .word 0x00000013 +_021EFBF4: .word SDK_MODULE_19_ID thumb_func_start MOD05_021EFBF8 MOD05_021EFBF8: ; 0x021EFBF8 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index 7f7ae7cf..1f539d08 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -128,8 +128,8 @@ _0222D6AC: bl MOD11_0222FC38
cmp r0, #1
bne _0222D6D2
- ldr r0, _0222D7F0 ; =0x00000007
- bl FUN_02005F60
+ ldr r0, _0222D7F0 ; =SDK_MODULE_07_ID
+ bl UnloadOverlayByID
mov r0, #7
str r0, [r4]
mov r0, #0x3d
@@ -147,9 +147,9 @@ _0222D6D4: str r0, [r4]
b _0222D7EA
_0222D6DA:
- ldr r0, _0222D7F4 ; =0x00000008
+ ldr r0, _0222D7F4 ; =SDK_MODULE_08_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r6, #0
bl MOD11_0222DB50
mov r0, #9
@@ -184,8 +184,8 @@ _0222D720: bl MOD11_0222FE58
cmp r0, #1
bne _0222D7EA
- ldr r0, _0222D7F0 ; =0x00000007
- bl FUN_02005F60
+ ldr r0, _0222D7F0 ; =SDK_MODULE_07_ID
+ bl UnloadOverlayByID
mov r0, #5
bl FUN_020168D0
mov r0, #0x3e
@@ -279,8 +279,8 @@ _0222D7EA: add sp, #0x28
pop {r4, r5, r6, pc}
.align 2, 0
-_0222D7F0: .word 0x00000007
-_0222D7F4: .word 0x00000008
+_0222D7F0: .word SDK_MODULE_07_ID
+_0222D7F4: .word SDK_MODULE_08_ID
thumb_func_start MOD11_0222D7F8
MOD11_0222D7F8: ; 0x0222D7F8
@@ -302,16 +302,16 @@ MOD11_0222D7F8: ; 0x0222D7F8 add r0, r4, #0
mov r1, #3
bl MOD11_02231338
- ldr r0, _0222D838 ; =0x00000008
- bl FUN_02005F60
- ldr r0, _0222D83C ; =0x00000009
+ ldr r0, _0222D838 ; =SDK_MODULE_08_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222D83C ; =SDK_MODULE_09_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
pop {r4, pc}
.align 2, 0
_0222D834: .word 0x000023FB
-_0222D838: .word 0x00000008
-_0222D83C: .word 0x00000009
+_0222D838: .word SDK_MODULE_08_ID
+_0222D83C: .word SDK_MODULE_09_ID
thumb_func_start MOD11_0222D840
MOD11_0222D840: ; 0x0222D840
@@ -349,11 +349,11 @@ MOD11_0222D840: ; 0x0222D840 MOD11_0222D88C: ; 0x0222D88C
push {r3, r4, r5, lr}
add r4, r0, #0
- ldr r0, _0222D938 ; =0x00000009
- bl FUN_02005F60
- ldr r0, _0222D93C ; =0x00000008
+ ldr r0, _0222D938 ; =SDK_MODULE_09_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222D93C ; =SDK_MODULE_08_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r4, #0
mov r1, #0
bl MOD11_02231338
@@ -363,7 +363,7 @@ MOD11_0222D88C: ; 0x0222D88C add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_02031190
add r1, r0, #0
add r0, r4, #0
@@ -415,8 +415,8 @@ MOD11_0222D88C: ; 0x0222D88C bl FUN_02008D24
pop {r3, r4, r5, pc}
.align 2, 0
-_0222D938: .word 0x00000009
-_0222D93C: .word 0x00000008
+_0222D938: .word SDK_MODULE_09_ID
+_0222D93C: .word SDK_MODULE_08_ID
_0222D940: .word 0x000023FB
thumb_func_start MOD11_0222D944
@@ -663,14 +663,14 @@ MOD11_0222DB50: ; 0x0222DB50 add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_02022300
add r5, r0, #0
bl FUN_020222F8
add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_0201B9D4
ldr r1, _0222DF0C ; =0x00002430
str r0, [r4, r1]
@@ -915,14 +915,14 @@ _0222DC42: ldr r1, _0222DF24 ; =0x00002224
mov r2, #0xe0
add r1, r4, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4, #0x28]
mov r1, #2
bl FUN_020031FC
ldr r1, _0222DF28 ; =0x00002304
mov r2, #0xe0
add r1, r4, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl MOD11_02230C68
mov r1, #0
@@ -1396,13 +1396,13 @@ _0222E220: bl FUN_0201C350
add r0, r4, #0
bl FUN_02016A18
- ldr r0, _0222E25C ; =0x00000008
- bl FUN_02005F60
+ ldr r0, _0222E25C ; =SDK_MODULE_08_ID
+ bl UnloadOverlayByID
bl FUN_02033590
cmp r0, #0
bne _0222E244
- ldr r0, _0222E260 ; =0x00000010
- bl FUN_02005F60
+ ldr r0, _0222E260 ; =SDK_MODULE_16_ID
+ bl UnloadOverlayByID
_0222E244:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -1411,8 +1411,8 @@ _0222E24C: .word 0x00002410 _0222E250: .word 0x000023F9
_0222E254: .word 0x00002430
_0222E258: .word 0x00000704
-_0222E25C: .word 0x00000008
-_0222E260: .word 0x00000010
+_0222E25C: .word SDK_MODULE_08_ID
+_0222E260: .word SDK_MODULE_16_ID
thumb_func_start MOD11_0222E264
MOD11_0222E264: ; 0x0222E264
@@ -1440,25 +1440,25 @@ _0222E282: mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #1
mov r0, #0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r6, _0222E454 ; =0x0225D9A8
add r3, sp, #0x10
add r2, r3, #0
@@ -3032,13 +3032,13 @@ MOD11_0222EF50: ; 0x0222EF50 add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0
ldr r2, _0222EFC8 ; =0x00007FFF
add r1, r0, #0
mov r3, #0x3f
str r0, [sp]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _0222EFCC ; =0xBFFF0000
ldr r0, _0222EFD0 ; =0x04000580
str r1, [r0]
@@ -3384,13 +3384,13 @@ MOD11_0222F284: ; 0x0222F284 bl FUN_02033590
cmp r0, #0
bne _0222F296
- ldr r0, _0222F298 ; =0x00000010
+ ldr r0, _0222F298 ; =SDK_MODULE_16_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
_0222F296:
pop {r3, pc}
.align 2, 0
-_0222F298: .word 0x00000010
+_0222F298: .word SDK_MODULE_16_ID
thumb_func_start MOD11_0222F29C
MOD11_0222F29C: ; 0x0222F29C
@@ -3454,31 +3454,31 @@ _0222F30E: mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #1
mov r0, #0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #5
mov r2, #2
mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #8
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r6, _0222F4CC ; =0x0225D9B8
add r3, sp, #0x30
add r2, r3, #0
@@ -4229,7 +4229,7 @@ MOD11_0222F988: ; 0x0222F988 ldr r2, _0222FAB4 ; =0x00002444
mov r0, #0
add r1, r4, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0
add r1, r6, #0
bl MOD11_0222E520
@@ -4244,9 +4244,9 @@ _0222F9C6: mov r0, #0
pop {r4, r5, r6, pc}
_0222F9CA:
- ldr r0, _0222FAB8 ; =0x00000007
+ ldr r0, _0222FAB8 ; =SDK_MODULE_07_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
ldr r1, [r4, #0x2c]
mov r0, #8
tst r0, r1
@@ -4263,7 +4263,7 @@ _0222F9DE: ldr r1, [r4, r1]
mov r0, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r5, #0
bl FUN_020313CC
cmp r0, #3
@@ -4363,7 +4363,7 @@ _0222FAA4: pop {r4, r5, r6, pc}
nop
_0222FAB4: .word 0x00002444
-_0222FAB8: .word 0x00000007
+_0222FAB8: .word SDK_MODULE_07_ID
thumb_func_start MOD11_0222FABC
MOD11_0222FABC: ; 0x0222FABC
@@ -4435,7 +4435,7 @@ _0222FB2E: ldr r1, [r4, r1]
mov r0, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [r4, #0x2c]
mov r0, #8
tst r0, r1
@@ -4612,9 +4612,9 @@ _0222FCA2: mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0222FCA8:
- ldr r0, _0222FE54 ; =0x00000007
+ ldr r0, _0222FE54 ; =SDK_MODULE_07_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
mov r0, #5
mov r1, #0x2c
bl FUN_02016998
@@ -4625,7 +4625,7 @@ _0222FCA8: mov r0, #0
add r1, r6, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
str r7, [r6]
ldr r0, [r7, #0x14]
cmp r0, #5
@@ -4818,7 +4818,7 @@ _0222FE48: add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
-_0222FE54: .word 0x00000007
+_0222FE54: .word SDK_MODULE_07_ID
thumb_func_start MOD11_0222FE58
MOD11_0222FE58: ; 0x0222FE58
@@ -6514,7 +6514,7 @@ _02230AA2: mul r1, r0
add r0, r1, #0
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x20]
cmp r0, #0
bne _02230AC2
@@ -6686,7 +6686,7 @@ _02230BFC: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #8]
_02230C28:
ldr r0, [sp, #0x18]
@@ -7242,7 +7242,7 @@ MOD11_02230FCC: ; 0x02230FCC ldr r0, _02231224 ; =0x06010000
ldr r1, [r4, r1]
lsl r2, r2, #0x10
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
mov r0, #0x22
lsl r0, r0, #4
ldr r5, [r4, r0]
@@ -7252,7 +7252,7 @@ MOD11_02230FCC: ; 0x02230FCC mov r2, #2
add r1, r5, #0
lsl r2, r2, #8
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
mov r0, #0x19
lsl r0, r0, #0x16
str r0, [sp, #0x24]
@@ -11434,7 +11434,7 @@ _02232FB4: ldr r1, [r5, r1]
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022330E4 ; =0x00002144
str r0, [r5, r1]
_02233040:
@@ -11456,7 +11456,7 @@ _02233040: add r0, #0xa
mul r0, r1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _022330E4 ; =0x00002144
str r0, [r5, r1]
_0223306E:
@@ -11497,7 +11497,7 @@ _02233094: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022330E4 ; =0x00002144
add sp, #0x1c
str r0, [r5, r1]
@@ -12655,7 +12655,7 @@ _022339C6: ldrb r0, [r2, r0]
mul r0, r1
mov r1, #7
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
ldr r1, [sp]
lsr r0, r0, #0x10
@@ -12664,7 +12664,7 @@ _022339C6: lsr r4, r0, #1
ldr r1, [sp, #4]
add r0, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0x9c
str r0, [r1]
@@ -12680,7 +12680,7 @@ _022339C6: _02233A1E:
ldr r1, [sp]
add r0, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0xa0
str r0, [r1]
@@ -12695,7 +12695,7 @@ _02233A1E: b _02233A6A
_02233A3E:
ldr r1, [sp, #4]
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0x9c
str r0, [r1]
@@ -13311,7 +13311,7 @@ _02233EEA: _02233EF4:
ldr r0, [r4]
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
b _02233F42
_02233F00:
@@ -14219,7 +14219,7 @@ _022345FE: b _02234648
_02234606:
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0xc]
b _02234648
_02234610:
@@ -14442,7 +14442,7 @@ MOD11_022347B0: ; 0x022347B0 add r6, r0, #0
bl FUN_0201B9EC
add r1, r4, #1
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4d
add r1, r6, r1
lsl r0, r0, #2
@@ -14548,7 +14548,7 @@ _02234890: _0223489A:
ldr r0, [r4]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
b _022348F6
_022348A6:
@@ -14709,7 +14709,7 @@ _022349C0: _022349CA:
ldr r0, [sp, #0xc]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0xc]
b _02234A26
_022349D6:
@@ -15703,7 +15703,7 @@ _0223519E: _022351A0:
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [r4, #0x64]
mov r0, #0xc0
mul r0, r2
@@ -16388,7 +16388,7 @@ _022356AA: lsr r5, r0, #0x10
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
bge _0223572C
ldr r1, [r4, #0x64]
@@ -16476,7 +16476,7 @@ _02235784: lsr r5, r0, #0x10
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
bge _022357DA
ldr r1, [r4, #0x64]
@@ -16623,7 +16623,7 @@ _022358DE: _022358E0:
ldr r0, [r4]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
cmp r0, #0
bne _022358F0
@@ -16802,7 +16802,7 @@ MOD11_02235A2C: ; 0x02235A2C _02235A3C:
bl FUN_0201B9EC
ldr r1, _02235A80 ; =0x000001D3
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #1
ldr r1, [r6, #0x64]
lsl r0, r0, #0x10
@@ -17258,7 +17258,7 @@ _02235D7E: add r5, r2, #0
mul r5, r1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [r4, r5]
mov r0, #0x38
bic r2, r0
@@ -18521,7 +18521,7 @@ _022367DE: _022367EA:
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0xc]
add r5, r1, #0
add r5, r5, r0
@@ -19867,7 +19867,7 @@ MOD11_02237290: ; 0x02237290 bne _0223731C
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0223732C ; =0x00003120
strb r1, [r4, r0]
ldrb r1, [r4, r0]
@@ -20322,7 +20322,7 @@ MOD11_02237584: ; 0x02237584 mov r0, #0x28
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237668 ; =0x00002154
add r0, #0x1e
str r0, [r4, r1]
@@ -20331,7 +20331,7 @@ MOD11_02237584: ; 0x02237584 mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #1
ldr r0, _0223766C ; =0x00002160
str r1, [r4, r0]
@@ -20496,7 +20496,7 @@ MOD11_022376D0: ; 0x022376D0 mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r5, r4]
b _022377AC
_022377A4:
@@ -20701,7 +20701,7 @@ _02237900: str r2, [r5, r1]
lsl r0, r4, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
add r0, r0, #2
ldr r2, [r5, r1]
@@ -20723,12 +20723,12 @@ _02237900: add r1, r0, #0
ldr r0, _02237AB0 ; =0x00002144
ldr r0, [r5, r0]
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
ldr r0, [r5, r1]
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
ldr r0, [r5, r1]
@@ -20753,7 +20753,7 @@ _02237900: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
_022379CC:
@@ -21220,7 +21220,7 @@ _02237D8A: beq _02237DA8
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #1
add r0, sp, #0x18
ldrh r2, [r0, r1]
@@ -21713,7 +21713,7 @@ MOD11_02238130: ; 0x02238130 add r1, r1, #4
ldr r1, [r2, r1]
mul r0, r3
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _02238178 ; =0x00002154
str r0, [r4, r1]
ldr r0, [r4, r1]
@@ -22681,7 +22681,7 @@ MOD11_022388C0: ; 0x022388C0 lsl r2, r2, #2
add r2, r4, r2
ldr r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #1
ldr r0, _02238900 ; =0x00002154
str r1, [r4, r0]
@@ -22743,7 +22743,7 @@ MOD11_02238904: ; 0x02238904 mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022389F4 ; =0x00002144
str r0, [r5, r1]
mov r0, #0x71
@@ -22906,7 +22906,7 @@ MOD11_02238A84: ; 0x02238A84 add r1, r1, #4
ldr r1, [r3, r1]
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #1
ldr r0, _02238AB8 ; =0x00002154
str r1, [r4, r0]
@@ -23905,12 +23905,12 @@ _02239222: bne _022392EC
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _022392EC
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r5, r1, #0
add r0, r4, #0
mov r1, #0xa0
@@ -23918,7 +23918,7 @@ _02239222: bl FUN_020671BC
sub r0, r0, #1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, #0xa
@@ -23999,7 +23999,7 @@ _02239324: _0223932E:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [sp, #0xc]
ldr r0, _02239378 ; =0x0225E15C
ldrb r0, [r0, r2]
@@ -24716,7 +24716,7 @@ _022398F0: _022398F8:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r4
bge _0223991E
add r0, r5, #0
@@ -24799,7 +24799,7 @@ _022399A0: _022399A2:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r4
ble _022399C2
add r0, r5, #0
@@ -25529,7 +25529,7 @@ _02239F82: beq _02239FB0
bl FUN_0201B9EC
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0
ldr r0, [r0, r1]
@@ -25721,7 +25721,7 @@ MOD11_0223A0D8: ; 0x0223A0D8 bne _0223A126
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp]
cmp r1, r0
bge _0223A126
@@ -26840,7 +26840,7 @@ _0223A96C: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A980:
ldr r0, [sp, #0x1c]
@@ -26850,7 +26850,7 @@ _0223A980: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A994:
ldr r0, [r4]
@@ -26870,7 +26870,7 @@ _0223A994: mov r0, #0xaa
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
b _0223A9D0
_0223A9C2:
@@ -26878,7 +26878,7 @@ _0223A9C2: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A9D0:
mov r1, #2
@@ -29543,7 +29543,7 @@ _0223BFEE: add r0, r2, #0
ldr r2, _0223C208 ; =0x0225DCF1
ldrb r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp]
b _0223C03A
_0223C026:
@@ -29697,7 +29697,7 @@ _0223C12E: add r0, r1, #0
mul r0, r5
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _0223C218 ; =0x00002D8C
add r2, r4, r6
ldr r1, [r2, r1]
@@ -29706,7 +29706,7 @@ _0223C12E: mul r1, r0
add r0, r1, #0
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0
ldr r0, _0223C21C ; =0x00002DAC
add r2, r4, r6
@@ -29722,7 +29722,7 @@ _0223C170: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0
_0223C182:
cmp r1, #0xff
@@ -29735,7 +29735,7 @@ _0223C18A: strh r2, [r0]
mov r0, #0xff
lsl r0, r0, #0x10
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _0223C224 ; =0x040002B8
add r2, r1, #0
str r0, [r1]
@@ -29772,7 +29772,7 @@ _0223C1CC: ldr r1, _0223C228 ; =0x040002B4
ldr r0, _0223C22C ; =0x000FFFF0
ldr r1, [r1]
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
mov r5, #0
_0223C1E0:
@@ -31753,7 +31753,7 @@ MOD11_0223D1DC: ; 0x0223D1DC ldr r2, _0223D22C ; =0x0000314C
mov r0, #0
add r1, r4, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0
bl MOD11_02245494
add r0, r5, #0
@@ -36663,7 +36663,7 @@ MOD11_0223F770: ; 0x0223F770 str r0, [r4, #0xc]
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4e
lsl r0, r0, #2
str r1, [r4, r0]
@@ -36709,7 +36709,7 @@ MOD11_0223F7CC: ; 0x0223F7CC str r0, [r4, #0xc]
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4e
lsl r0, r0, #2
str r1, [r4, r0]
@@ -37667,7 +37667,7 @@ _0223FF42: beq _0223FF9E
bl FUN_0201B9EC
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _0223FF82
ldr r0, [sp, #0x1c]
@@ -38595,7 +38595,7 @@ _02240688: ldr r2, _02240880 ; =0x0225E179
ldrb r1, [r2, r1]
mul r0, r4
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r5, #0
@@ -38606,7 +38606,7 @@ _02240688: mov r0, #0x82
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022406B6:
@@ -38644,7 +38644,7 @@ _022406B6: mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240708:
@@ -38664,7 +38664,7 @@ _02240708: mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240732:
@@ -38678,7 +38678,7 @@ _02240732: mov r0, #6
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224074E:
@@ -38693,7 +38693,7 @@ _0224074E: mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224076E:
@@ -38713,7 +38713,7 @@ _0224076E: mov r0, #0x32
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240798:
@@ -38730,7 +38730,7 @@ _02240798: mov r1, #0x64
sub r0, r1, r0
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022407BE:
@@ -38748,7 +38748,7 @@ _022407BE: add r0, #0x64
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022407E6:
@@ -38763,7 +38763,7 @@ _022407E6: add r0, r4, #0
mul r0, r6
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240806:
@@ -38781,7 +38781,7 @@ _02240806: mov r0, #0x78
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224082A:
@@ -38795,13 +38795,13 @@ _0224082A: mov r0, #0xa
mul r0, r4
mov r1, #6
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240846:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #1
cmp r0, r4
ble _02240860
@@ -39876,7 +39876,7 @@ _0224106A: bne _022410A4
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp]
cmp r1, r0
bge _022410A4
@@ -42997,7 +42997,7 @@ MOD11_02242870: ; 0x02242870 _022428B8:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r6
bge _0224290A
ldr r0, _02242918 ; =0x00003044
@@ -46522,7 +46522,7 @@ _02244356: mul r0, r2
ldr r2, _0224456C ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r6, r0, #0
ldr r0, [sp, #0x14]
lsl r1, r7, #1
@@ -46534,7 +46534,7 @@ _02244356: mul r0, r2
ldr r2, _0224456C ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
mov r0, #0xd
str r0, [sp]
@@ -46630,7 +46630,7 @@ _0224442E: mov r0, #0xf
mul r0, r6
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
_02244440:
ldr r0, [sp, #0x58]
@@ -46658,7 +46658,7 @@ _02244456: mov r0, #0xf
mul r0, r6
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
b _02244488
_02244478:
@@ -46721,14 +46721,14 @@ _022444DE: bne _0224451C
ldr r1, [sp, #0x54]
mov r0, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #8]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _02244584 ; =0x0000310C
ldrh r0, [r2, r0]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _0224451C
mov r0, #1
@@ -46806,7 +46806,7 @@ _02244594: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0
_022445A6:
ldr r0, [sp, #0x50]
@@ -46834,7 +46834,7 @@ _022445BC: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0
b _022445EE
_022445DE:
@@ -46897,14 +46897,14 @@ _02244644: bne _02244682
ldr r1, [sp, #0x4c]
mov r0, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #0xc]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _022448A0 ; =0x0000310C
ldrh r0, [r2, r0]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _02244682
mov r0, #1
@@ -47517,7 +47517,7 @@ _02244AF4: _02244AFC:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r6
bge _02244B16
ldr r1, _02244C1C ; =0x0000213C
@@ -47586,7 +47586,7 @@ _02244B7C: _02244B84:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r7
bge _02244C00
ldr r2, _02244C04 ; =0x00002174
@@ -48866,7 +48866,7 @@ _02245558: mov r0, #0
add r1, r6, #0
mov r2, #0x1c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r1, r5, r4
ldr r0, _02245584 ; =0x000021A4
add r4, r4, #1
@@ -49765,11 +49765,11 @@ _02245C7A: mov r0, #0
add r1, r7, #0
mov r2, #0x40
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0
add r1, r6, #0
mov r2, #4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _02245D24 ; =0x00002DB0
ldr r1, [r4, r0]
ldr r0, [sp, #8]
@@ -50618,7 +50618,7 @@ _02246346: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x50]
_02246354:
add r0, r5, #0
@@ -50866,7 +50866,7 @@ _02246532: str r0, [sp, #0x1c]
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x50]
_0224654A:
ldr r0, [sp, #0x54]
@@ -51718,7 +51718,7 @@ MOD11_02246B58: ; 0x02246B58 blo _02246B76
bl FUN_0201B9EC
mov r1, #0x70
- blx _u32_div_f
+ bl _u32_div_f
add r6, r1, #0
mov r0, #0
_02246B76:
@@ -51758,7 +51758,7 @@ _02246BA8: ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
_02246BC2:
cmp r6, r7
@@ -51768,7 +51768,7 @@ _02246BC2: ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
_02246BD6:
add r4, r4, #3
@@ -52481,7 +52481,7 @@ _0224711C: cmp r2, r1
bhs _02247164
lsl r0, r2, #7
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _0224718C ; =0x0000311E
ldrb r2, [r5, r1]
mov r1, #0x1e
@@ -53156,7 +53156,7 @@ _02247616: beq _02247696
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02247696
ldr r0, [sp, #4]
@@ -53237,7 +53237,7 @@ MOD11_022476C0: ; 0x022476C0 _022476CC:
mov r4, #1
_022476CE:
- blx _s32_div_f
+ bl _s32_div_f
cmp r0, #0
bne _022476D8
add r0, r4, #0
@@ -53740,7 +53740,7 @@ _02247A56: ldr r0, _02247D6C ; =0x0225E284
ldrb r0, [r0, r2]
mul r0, r3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x78]
add r0, r1, r0
str r0, [sp, #0x78]
@@ -53755,7 +53755,7 @@ _02247A56: ldr r0, _02247D6C ; =0x0225E284
ldrb r0, [r0, r2]
mul r0, r3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x74]
add r0, r1, r0
str r0, [sp, #0x74]
@@ -54211,7 +54211,7 @@ _02247E08: add r6, r0, #0
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0xc0
add r2, r5, #0
mul r2, r0
@@ -54974,7 +54974,7 @@ _022483C6: beq _022483E6
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
blt _022483E8
_022483E6:
@@ -55214,12 +55214,12 @@ _0224859A: beq _02248650
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248650
bl FUN_0201B9EC
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _022485D0
cmp r1, #1
@@ -55322,7 +55322,7 @@ _02248688: beq _02248770
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248770
add r0, r5, #0
@@ -55396,7 +55396,7 @@ _02248712: beq _02248770
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248770
add r0, r5, #0
@@ -55482,7 +55482,7 @@ _022487AC: beq _0224887A
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _0224887A
add r0, r5, #0
@@ -56527,7 +56527,7 @@ _02248F98: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56561,7 +56561,7 @@ _02248FDC: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56599,7 +56599,7 @@ _02249024: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56634,7 +56634,7 @@ _0224906A: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56669,7 +56669,7 @@ _022490B0: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56704,7 +56704,7 @@ _022490F6: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56740,7 +56740,7 @@ _0224913A: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56765,7 +56765,7 @@ _02249168: _02249172:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r6]
cmp r0, #0xc
@@ -56833,7 +56833,7 @@ _022491EA: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56859,7 +56859,7 @@ _0224921E: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57417,7 +57417,7 @@ _0224965C: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57444,7 +57444,7 @@ _02249692: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57654,7 +57654,7 @@ _02249838: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57689,7 +57689,7 @@ _0224987E: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57725,7 +57725,7 @@ _022498C6: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57761,7 +57761,7 @@ _0224990E: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57800,7 +57800,7 @@ _02249958: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57836,7 +57836,7 @@ _022499A0: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57870,7 +57870,7 @@ _022499E4: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57894,7 +57894,7 @@ _02249A12: _02249A1A:
bl FUN_0201B9EC
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r7]
cmp r0, #0xc
@@ -59203,7 +59203,7 @@ _0224A3F2: _0224A3FC:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [r4, #0x64]
add r2, r0, #0
mul r2, r6
@@ -60053,7 +60053,7 @@ _0224AA5A: _0224AA64:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [r4, #0x6c]
add r2, r0, #0
mul r2, r6
@@ -61458,7 +61458,7 @@ _0224B564: mov r1, #0xa
ldr r0, [r5, r0]
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, sp, #0x90
@@ -61489,7 +61489,7 @@ _0224B594: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B5B2:
@@ -61503,7 +61503,7 @@ _0224B5B2: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B5CE:
@@ -61561,7 +61561,7 @@ _0224B620: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _0224B648
@@ -61578,7 +61578,7 @@ _0224B648: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61590,7 +61590,7 @@ _0224B660: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61613,7 +61613,7 @@ _0224B678: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61636,7 +61636,7 @@ _0224B6A6: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -61727,7 +61727,7 @@ _0224B774: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B78A:
@@ -61748,7 +61748,7 @@ _0224B798: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7B2:
@@ -61762,7 +61762,7 @@ _0224B7B2: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7CE:
@@ -61777,7 +61777,7 @@ _0224B7CE: add r0, #0x64
str r0, [sp, #0x2c]
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7EC:
@@ -61802,7 +61802,7 @@ _0224B808: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61816,7 +61816,7 @@ _0224B81E: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61835,7 +61835,7 @@ _0224B83A: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x78]
@@ -61855,7 +61855,7 @@ _0224B862: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61875,7 +61875,7 @@ _0224B88C: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61910,14 +61910,14 @@ _0224B8E6: bne _0224B90A
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B90A
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B90A:
@@ -61927,14 +61927,14 @@ _0224B90A: bne _0224B92E
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B92E
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B92E:
@@ -61944,14 +61944,14 @@ _0224B92E: bne _0224B952
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B952
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B952:
@@ -61961,14 +61961,14 @@ _0224B952: bne _0224B976
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B976
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B976:
@@ -61996,7 +61996,7 @@ _0224B98E: mov r0, #0x7d
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B9B0:
@@ -62129,7 +62129,7 @@ _0224BA5C: mov r0, #0x7d
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224BAAA:
@@ -62148,7 +62148,7 @@ _0224BAAA: mov r0, #0x4b
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224BAD0:
@@ -62164,7 +62164,7 @@ _0224BAD4: mov r0, #0xc
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _0224BAF8
@@ -62203,7 +62203,7 @@ _0224BAF8: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -62223,7 +62223,7 @@ _0224BB54: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -62244,7 +62244,7 @@ _0224BB66: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -62270,7 +62270,7 @@ _0224BB92: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -62303,7 +62303,7 @@ _0224BBE0: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BC24
_0224BC08:
@@ -62319,7 +62319,7 @@ _0224BC0E: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BC24:
ldr r0, [sp, #0x84]
@@ -62329,7 +62329,7 @@ _0224BC24: str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
@@ -62347,7 +62347,7 @@ _0224BC24: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x78]
b _0224BC76
_0224BC60:
@@ -62359,14 +62359,14 @@ _0224BC60: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x78]
_0224BC76:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x78]
- blx _s32_div_f
+ bl _s32_div_f
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0x48]
mov r1, #0x10
@@ -62406,7 +62406,7 @@ _0224BCB2: ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BDC8
_0224BCD6:
@@ -62432,7 +62432,7 @@ _0224BCE2: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BD24
_0224BD08:
@@ -62448,7 +62448,7 @@ _0224BD0E: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BD24:
ldr r0, [sp, #0x84]
@@ -62458,7 +62458,7 @@ _0224BD24: str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
@@ -62476,7 +62476,7 @@ _0224BD24: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x10]
b _0224BD76
_0224BD60:
@@ -62488,14 +62488,14 @@ _0224BD60: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x10]
_0224BD76:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x10]
- blx _s32_div_f
+ bl _s32_div_f
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0xc]
mov r1, #2
@@ -62520,7 +62520,7 @@ _0224BD76: ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BDC8
_0224BDBE:
@@ -62628,7 +62628,7 @@ _0224BE8C: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BE9A:
ldr r1, _0224BF0C ; =0x000080CF
@@ -62658,7 +62658,7 @@ _0224BEC4: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BEDE
_0224BED4:
@@ -62681,7 +62681,7 @@ _0224BEDE: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BF00:
ldr r0, [sp, #0x84]
@@ -62707,7 +62707,7 @@ MOD11_0224BF10: ; 0x0224BF10 mov r1, #0x64
sub r0, r1, r0
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
bne _0224BF36
mov r4, #1
@@ -62812,7 +62812,7 @@ _0224BFE0: bl FUN_0201B9EC
ldr r1, _0224C040 ; =0x0225E244
ldrb r1, [r1, r5]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _0224C026
ldr r1, [sp]
@@ -64223,7 +64223,7 @@ _0224C9A6: mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #1
cmp r5, #9
blt _0224CA54
@@ -64295,7 +64295,7 @@ MOD11_0224CA64: ; 0x0224CA64 mov r0, #0
add r1, r4, #0
lsl r2, r2, #2
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
ldrb r1, [r5]
lsl r0, r0, #2
@@ -66824,7 +66824,7 @@ MOD11_0224DE50: ; 0x0224DE50 mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r7, [r4, #0xc]
lsl r0, r0, #2
@@ -66918,7 +66918,7 @@ MOD11_0224DF18: ; 0x0224DF18 mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r6, [r4, #0xc]
lsl r0, r0, #2
@@ -66957,7 +66957,7 @@ MOD11_0224DF60: ; 0x0224DF60 mov r0, #0
add r1, r4, #0
mov r2, #0x3c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r7, #0
strb r7, [r4, #0xa]
strb r7, [r4, #0xb]
@@ -67569,7 +67569,7 @@ _0224E422: add r0, r4, #0
mov r1, #0
mov r2, #1
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r7, [r4, #0xc]
add r0, r4, #0
ldrb r1, [r5]
@@ -67637,7 +67637,7 @@ _0224E4AE: add r0, r4, #0
mov r1, #0
mov r2, #1
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r7, [r4, #0xc]
add r0, r4, #0
ldrb r1, [r5]
@@ -68275,7 +68275,7 @@ MOD11_0224E9C0: ; 0x0224E9C0 mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r7, [r4, #0xc]
lsl r0, r0, #2
@@ -72931,11 +72931,11 @@ MOD11_02250F94: ; 0x02250F94 add r0, r2, #0
ldr r2, _02251010 ; =0x0225E831
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #0
bl FUN_0201B9EC
mov r1, #0xff
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
ldr r0, [r4]
bgt _02250FEA
@@ -73224,7 +73224,7 @@ _0225122E: blt _0225121C
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x10
ldr r4, [r0, r1]
@@ -74576,7 +74576,7 @@ _02251CEC: mov r1, #0
mov r2, #1
add r5, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r4]
add r1, r6, #0
bl MOD11_02230260
@@ -77140,7 +77140,7 @@ _0225319A: bl MOD11_02231244
add r1, r7, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4]
bl MOD11_0222FF74
cmp r0, #0x4a
@@ -77153,7 +77153,7 @@ _0225319A: bl MOD11_02231250
add r1, r7, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_022531DC:
ldr r0, [r4]
@@ -77168,7 +77168,7 @@ _022531DC: bl MOD11_02231250
add r1, r7, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_02253200:
ldr r0, [r4]
@@ -77184,7 +77184,7 @@ _02253200: bl MOD11_02231250
add r1, r7, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_02253226:
add r0, r5, #0
@@ -77195,7 +77195,7 @@ _02253226: bl MOD11_02231250
add r1, r7, #0
mov r2, #0x80
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225323E:
mov r0, #0x10
str r0, [sp]
@@ -77292,7 +77292,7 @@ _022532F6: bl MOD11_02231244
add r1, r6, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4]
bl MOD11_0222FF74
cmp r0, #0x4a
@@ -77305,7 +77305,7 @@ _022532F6: bl MOD11_02231250
add r1, r6, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_02253332:
ldr r0, [r4]
@@ -77320,7 +77320,7 @@ _02253332: bl MOD11_02231250
add r1, r6, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_02253356:
ldr r0, [r4]
@@ -77336,7 +77336,7 @@ _02253356: bl MOD11_02231250
add r1, r6, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_0225337C:
add r0, r5, #0
@@ -77347,7 +77347,7 @@ _0225337C: bl MOD11_02231250
add r1, r6, #0
mov r2, #0x80
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02253394:
mov r3, #0
str r3, [sp]
@@ -79823,7 +79823,7 @@ _022546D4: asr r1, r0, #0x1f
lsl r2, r2, #0xa
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
add r2, r1, #0
mov r1, #4
add r5, r0, #0
@@ -81204,7 +81204,7 @@ MOD11_02255188: ; 0x02255188 add r1, sp, #0x28
mov r2, #0x2c
add r6, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp, #4]
bl MOD11_0222FF78
ldr r1, [sp, #0xc]
@@ -82911,7 +82911,7 @@ MOD11_02255EAC: ; 0x02255EAC mov r0, #0x64
mul r0, r1
add r1, r2, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, sp, #4
strh r0, [r1, #2]
mov r0, #4
@@ -82952,7 +82952,7 @@ _02255F12: mul r0, r1
add r1, r2, #4
ldr r1, [r6, r1]
- blx _u32_div_f
+ bl _u32_div_f
add r1, sp, #4
strh r0, [r1, #2]
_02255F24:
@@ -84395,7 +84395,7 @@ MOD11_022569DC: ; 0x022569DC add r1, r5, #0
mov r2, #8
add r6, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp]
bl MOD11_0222FF74
add r4, r0, #0
@@ -85259,7 +85259,7 @@ _0225705C: add r1, r1, r3
ldr r3, _0225713C ; =0x0225E9B2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x45
bl MOD11_02257F60
add r1, r5, #0
@@ -85273,7 +85273,7 @@ _0225705C: add r1, r1, r3
ldr r3, _02257144 ; =0x0225EA12
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [r5, #0x28]
add r0, r5, #0
mov r2, #6
@@ -85295,7 +85295,7 @@ _022570E8: add r1, r1, r3
ldr r3, _0225713C ; =0x0225E9B2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x44
bl MOD11_02257F60
add r1, r5, #0
@@ -85309,7 +85309,7 @@ _022570E8: add r1, r1, r3
ldr r3, _0225714C ; =0x0225E9E2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [r5, #0x28]
add r0, r5, #0
mov r2, #1
@@ -85908,7 +85908,7 @@ MOD11_022574F0: ; 0x022574F0 add r0, r6, #0
ldrh r2, [r2, r7]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0
add r0, #0x25
ldrb r0, [r0]
@@ -85923,7 +85923,7 @@ MOD11_022574F0: ; 0x022574F0 ldr r0, [sp, #0x20]
ldrh r2, [r2, r7]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0
add r0, #0x25
ldrb r0, [r0]
@@ -85940,7 +85940,7 @@ MOD11_022574F0: ; 0x022574F0 add r1, r1, r3
ldr r3, _02257648 ; =0x0225EC92
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, #0x25
ldrb r0, [r5]
ldr r4, [r4, #4]
@@ -85957,7 +85957,7 @@ MOD11_022574F0: ; 0x022574F0 ldr r3, _02257650 ; =0x0225EC96
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x24
bl FUN_02019178
ldr r0, [sp, #0x18]
@@ -86022,7 +86022,7 @@ _02257670: ldrh r2, [r3, r2]
add r0, r0, r1
add r1, r7, #0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp]
ldr r1, _02257754 ; =0x0225EABC
add r0, #0x25
@@ -86039,7 +86039,7 @@ _02257670: add r0, r0, r1
add r1, r7, #0
add r1, #0x40
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0
add r1, r2, #0
_022576D6:
@@ -86077,7 +86077,7 @@ _022576DA: ldr r3, _02257750 ; =0x0225EABA
add r0, r7, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp]
ldr r3, _02257754 ; =0x0225EABC
add r0, #0x25
@@ -86095,7 +86095,7 @@ _022576DA: ldr r3, _02257758 ; =0x0225EABE
add r0, #0x40
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r7, #0
bl FUN_02016A18
add sp, #8
@@ -86122,7 +86122,7 @@ MOD11_0225775C: ; 0x0225775C add r0, r4, #0
mov r1, #0xff
mov r2, #0x60
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #4]
ldr r0, [r0, #0xc]
bl MOD11_022300BC
@@ -86153,7 +86153,7 @@ MOD11_0225775C: ; 0x0225775C ldrh r2, [r3, r2]
add r0, r0, r1
add r1, r7, #0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #4]
ldr r1, _02257874 ; =0x0225EA2C
add r0, #0x25
@@ -86170,7 +86170,7 @@ MOD11_0225775C: ; 0x0225775C add r0, r0, r1
add r1, r7, #0
add r1, #0x60
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0
add r1, r2, #0
_022577EE:
@@ -86208,7 +86208,7 @@ _022577F2: ldr r3, _02257870 ; =0x0225EA2A
add r0, r7, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #4]
ldr r3, _02257874 ; =0x0225EA2C
add r0, #0x25
@@ -86226,7 +86226,7 @@ _022577F2: ldr r3, _02257878 ; =0x0225EA2E
add r0, #0x60
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
add r0, r7, #0
@@ -86250,7 +86250,7 @@ MOD11_0225787C: ; 0x0225787C mov r1, #0xff
mov r2, #0x60
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
bl MOD11_022300B4
str r4, [sp]
@@ -86276,7 +86276,7 @@ MOD11_0225787C: ; 0x0225787C ldr r3, _022578FC ; =0x0225EA5A
add r0, r4, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, #0x25
ldrb r0, [r5]
ldr r3, _02257900 ; =0x0225EA5C
@@ -86290,7 +86290,7 @@ MOD11_0225787C: ; 0x0225787C ldr r3, _02257904 ; =0x0225EA5E
ldrh r2, [r3, r2]
add r0, r4, r0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
pop {r3, r4, r5, r6, r7, pc}
@@ -86310,7 +86310,7 @@ MOD11_02257908: ; 0x02257908 mov r1, #0xff
mov r2, #0x60
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
bl MOD11_022300B4
str r4, [sp]
@@ -86335,7 +86335,7 @@ MOD11_02257908: ; 0x02257908 ldr r3, _02257964 ; =0x0225E9FA
add r0, r4, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
pop {r3, r4, r5, pc}
@@ -86376,7 +86376,7 @@ _02257982: ldr r3, _022579B4 ; =0x0225E9CA
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, pc}
nop
_022579B0: .word 0x0225E9C8
@@ -86406,7 +86406,7 @@ MOD11_022579B8: ; 0x022579B8 ldr r3, _022579F4 ; =0x0225E99A
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, pc}
nop
_022579F0: .word 0x0225E998
@@ -86473,7 +86473,7 @@ _02257A26: add r1, r1, r2
add r0, r5, #0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0xd
mov r0, #0x1a
lsl r2, r2, #6
@@ -86483,7 +86483,7 @@ _02257A26: add r1, r1, r2
add r0, r5, r0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0xa
lsl r2, r2, #8
add r0, r5, #0
@@ -86492,7 +86492,7 @@ _02257A26: add r1, r1, r2
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x1a
mov r1, #0xb
lsl r0, r0, #4
@@ -86503,7 +86503,7 @@ _02257A26: add r1, r2, r1
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x18
bl FUN_02019178
add r0, r7, #0
@@ -86598,7 +86598,7 @@ _02257B1E: add r1, r1, r2
add r0, r5, #0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0x15
mov r0, #0x1a
lsl r2, r2, #6
@@ -86608,7 +86608,7 @@ _02257B1E: add r1, r1, r2
add r0, r5, r0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #3
lsl r2, r2, #0xa
add r0, r5, #0
@@ -86617,7 +86617,7 @@ _02257B1E: add r1, r1, r2
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x1a
mov r1, #0xd
lsl r0, r0, #4
@@ -86628,7 +86628,7 @@ _02257B1E: add r1, r2, r1
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x24
bl FUN_02019178
add r0, r6, #0
@@ -86671,8 +86671,8 @@ _02257C10: _02257C22:
ldr r6, [r5, #0x40]
add r0, r6, #0
- blx _s32_div_f
- blx abs
+ bl _s32_div_f
+ bl abs
mov r1, #0xb
lsl r0, r0, #0x10
add r3, r5, #0
@@ -86793,7 +86793,7 @@ _02257CE6: add r2, r3, r2
add r1, r1, r2
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02257D42
_02257D16:
ldrb r0, [r0, r4]
@@ -86816,7 +86816,7 @@ _02257D16: add r1, r1, r3
add r1, r2, r1
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02257D42:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -86877,7 +86877,7 @@ _02257D9C: add r0, r6, r0
add r1, r3, r1
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02257DD0
_02257DBA:
ldrb r0, [r0, r4]
@@ -86889,7 +86889,7 @@ _02257DBA: add r1, r1, r2
add r0, r6, r0
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02257DD0:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -86957,7 +86957,7 @@ _02257E3E: bge _02257E7E
lsl r0, r0, #8
add r1, r2, #0
- blx _s32_div_f
+ bl _s32_div_f
cmp r6, #0
ldr r1, [r5]
bge _02257E62
@@ -87043,14 +87043,14 @@ _02257ECE: add r0, r1, #0
mul r0, r2
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
lsr r0, r0, #8
b _02257EEC
_02257EE2:
add r0, r1, #0
mul r0, r2
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
_02257EEC:
add r2, r0, #0
cmp r0, #0
@@ -87103,18 +87103,18 @@ _02257F38: add r0, r7, #0
mul r0, r6
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
add r7, r0, #0
add r0, r4, #0
mul r0, r6
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r7, #0x18
lsl r0, r0, #0x18
asr r1, r1, #0x18
asr r0, r0, #0x18
sub r0, r1, r0
- blx abs
+ bl abs
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -87281,7 +87281,7 @@ MOD11_0225805C: ; 0x0225805C mov r1, #0
mov r2, #0xc
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r2, #0xfa
str r5, [r4]
ldr r0, _0225808C ; =MOD11_02258090
@@ -87493,7 +87493,7 @@ _022581FC: asr r1, r0, #0x1f
lsl r2, r2, #0xa
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
add r3, r0, #0
add r5, r1, #0
@@ -87722,7 +87722,7 @@ MOD11_022583D8: ; 0x022583D8 add r1, r5, #0
mov r2, #0x10
add r7, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
str r4, [r5, #4]
strb r6, [r5, #8]
strb r7, [r5, #9]
@@ -87748,7 +87748,7 @@ MOD11_0225840C: ; 0x0225840C mov r0, #0
add r1, r4, #0
mov r2, #0x10
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r4, pc}
.align 2, 0
@@ -87763,7 +87763,7 @@ MOD11_02258428: ; 0x02258428 mov r1, #0
lsl r2, r2, #8
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0
ldr r0, _0225844C ; =0x0000069F
mvn r1, r1
@@ -87891,7 +87891,7 @@ _02258512: ldr r0, [sp, #0x18]
add r2, r7, #0
add r0, #0xc
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
add r0, r5, #0
bl FUN_02016A18
add r4, r4, #1
@@ -87919,7 +87919,7 @@ _0225854E: mov r2, #2
ldr r1, [r6, #0x58]
lsl r2, r2, #8
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, r6, #0
mov r7, #0x46
mov r4, #0
@@ -87932,7 +87932,7 @@ _02258592: add r0, r5, r0
mov r1, #0xff
mov r2, #0x18
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r4, r4, #1
_022585A2:
cmp r4, #4
@@ -87981,7 +87981,7 @@ _022585DE: ldr r1, [r6, #0x5c]
ldr r0, [r6, #0x58]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #7
mov r1, #0xca
add r2, sp, #0x14
@@ -87992,7 +87992,7 @@ _022585DE: ldr r1, [r6, #0x60]
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
bl FUN_02002BE4
@@ -88226,7 +88226,7 @@ MOD11_02258820: ; 0x02258820 add r0, r3, #0
add r1, #0x18
mov r2, #0x22
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0225883A:
ldr r0, _0225893C ; =0x000006A2
mov r1, #0
@@ -88333,7 +88333,7 @@ _022588D0: ldr r0, _02258950 ; =0x04001050
mov r1, #2
mov r3, #0x1b
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
add r0, r7, #0
bl MOD11_0225ACB0
ldr r0, [sp, #0x2c]
@@ -89077,7 +89077,7 @@ _02258F20: add r0, r5, r0
mov r1, #0
mov r2, #4
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02258F54 ; =0x000006EC
ldr r0, [r5, r0]
bl MOD11_0225D648
@@ -89445,7 +89445,7 @@ MOD11_0225916C: ; 0x0225916C add r4, r0, #0
mov r1, #0
mov r2, #0x14
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r5, [r4]
ldr r0, _02259254 ; =0xFFFF9C64
strb r6, [r4, #0x12]
@@ -89458,7 +89458,7 @@ MOD11_0225916C: ; 0x0225916C ldr r0, _02259258 ; =0x0000639C
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r4, #0xc]
mov r0, #0xa
ldrsh r1, [r4, r0]
@@ -89466,7 +89466,7 @@ MOD11_0225916C: ; 0x0225916C lsl r0, r0, #4
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r4, #0xe]
ldr r0, _0225925C ; =0x0000070E
bl FUN_020054C8
@@ -91621,7 +91621,7 @@ MOD11_0225A428: ; 0x0225A428 add r1, r4, r1
asr r5, r1, #3
mov r1, #8
- blx FX_ModS32
+ bl FX_ModS32
cmp r0, #0
beq _0225A450
add r5, r5, #1
@@ -92109,7 +92109,7 @@ _0225A7CE: ldr r0, [r0, #0x14]
ldr r1, [r1, #0x18]
ldr r2, [sp, #0xc]
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
ldr r0, [sp, #0x44]
bl FUN_02016A18
_0225A814:
@@ -92426,7 +92426,7 @@ _0225AA24: lsl r3, r3, #0x14
ldr r0, [r0, #0x18]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225AA9E:
add r4, r4, #1
_0225AAA0:
@@ -92821,7 +92821,7 @@ _0225AD90: add r0, r4, r0
mov r1, #0
mov r2, #0x24
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0225ADAC ; =0x00000514
add r0, r5, #0
add r1, r4, #0
@@ -92845,7 +92845,7 @@ MOD11_0225ADB0: ; 0x0225ADB0 add r0, r4, r0
mov r2, #0x24
str r1, [r4, #8]
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0225ADCE:
pop {r4, pc}
@@ -93706,13 +93706,13 @@ _0225B454: lsl r0, r0, #2
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0xc]
mov r0, #0xa
ldrsh r0, [r5, r0]
mov r1, #0x64
neg r0, r0
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0xe]
mov r0, #8
ldrsh r0, [r5, r0]
@@ -93829,7 +93829,7 @@ _0225B55A: ldrsh r0, [r5, r0]
mov r1, #0x64
neg r0, r0
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
b _0225B5B6
_0225B586:
@@ -93852,7 +93852,7 @@ _0225B590: mov r0, #8
ldrsh r0, [r5, r0]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
add r4, #0xff
_0225B5B6:
@@ -93869,7 +93869,7 @@ _0225B5B6: mov r0, #0xa
ldrsh r0, [r5, r0]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, #0x90
cmp r4, #0
bge _0225B5E2
@@ -94210,7 +94210,7 @@ _0225B866: add r0, #0x16
add r1, #0x16
mov r2, #0xa
- blx memcmp
+ bl memcmp
cmp r0, #0
bne _0225B8A8
ldr r0, [r5, #0x60]
@@ -94218,7 +94218,7 @@ _0225B866: add r0, #0x16
add r1, r4, #0
mov r2, #0xa
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, r6, r7, pc}
_0225B888:
ldr r1, [r5, #0x60]
@@ -94226,7 +94226,7 @@ _0225B888: add r0, #0x16
add r1, #0x16
mov r2, #0xa
- blx memcmp
+ bl memcmp
cmp r0, #0
bne _0225B8A8
ldr r0, [r5, #0x5c]
@@ -94234,7 +94234,7 @@ _0225B888: add r0, #0x16
add r1, r4, #0
mov r2, #0xa
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225B8A8:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -94819,7 +94819,7 @@ _0225BD10: ldr r0, _0225BDD8 ; =0x0225F6A0
add r1, sp, #8
mov r2, #6
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0
mov r1, #2
mov r2, #3
@@ -95001,7 +95001,7 @@ MOD11_0225BE30: ; 0x0225BE30 str r0, [sp, #0x48]
ldr r0, _0225C13C ; =0x0225F690
add r1, sp, #0x50
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r1, sp, #0x58
add r0, r6, #0
add r1, #2
@@ -96552,7 +96552,7 @@ MOD11_0225C9D4: ; 0x0225C9D4 mov r1, #0
lsl r2, r2, #6
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0
pop {r4, pc}
.align 2, 0
@@ -96741,7 +96741,7 @@ _0225CB32: add r0, r5, #0
mov r1, #0
mov r2, #0x1c
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp, #0x18]
ldr r2, _0225CBA8 ; =0x0225FE48
add r0, r7, #0
@@ -96958,7 +96958,7 @@ _0225CCBC: sub r0, r0, r3
str r0, [sp]
ldr r0, _0225CDA0 ; =0x04000050
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
ldrb r0, [r4, #0x1a]
add r0, r0, #1
strb r0, [r4, #0x1a]
@@ -97076,7 +97076,7 @@ _0225CDD4: add r0, r5, #0
mov r1, #0
mov r2, #0x30
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, _0225CEA4 ; =0x0225FE7C
@@ -98000,7 +98000,7 @@ _0225D496: mov r1, #0
mov r2, #0x18
str r0, [sp]
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r5, [sp]
mov r4, #0
_0225D4CE:
@@ -98351,7 +98351,7 @@ _0225D74C: mov r1, #0
mov r2, #0x20
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp]
add r0, r7, #0
add r2, sp, #4
@@ -98497,7 +98497,7 @@ _0225D886: bne _0225D8DA
ldr r0, [r4, #0x10]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_0201B93C
@@ -98505,7 +98505,7 @@ _0225D886: asr r1, r0, #0x1f
lsl r2, r2, #0xc
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0
ldr r1, [r4, #8]
mov r2, #2
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s new file mode 100644 index 00000000..9748eb5c --- /dev/null +++ b/arm9/modules/12/asm/module_12.s @@ -0,0 +1,48108 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD12_0222D5C0 +MOD12_0222D5C0: ; 0x0222D5C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _0222D85C ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _0222D860 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _0222D864 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #7 + mov r0, #3 + mov r1, #0x15 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0222D868 ; =0x00001658 + add r0, r5, #0 + mov r2, #0x15 + bl FUN_02006268 + ldr r2, _0222D868 ; =0x00001658 + mov r1, #0 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x15 + bl MOD12_022312D8 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r4] + lsl r1, r1, #2 + str r4, [r0, r1] + ldr r2, [r4] + mov r3, #2 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r4] + str r0, [r4, #0xc] + add r0, r4, #0 + bl MOD12_0222DCEC + mov r0, #0x15 + bl FUN_02002FD0 + str r0, [r4, #0x5c] + mov r1, #1 + bl FUN_020038F0 + mov r2, #2 + ldr r0, [r4, #0x5c] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x15 + bl FUN_02003008 + mov r1, #1 + ldr r0, [r4, #0x5c] + lsl r2, r1, #9 + mov r3, #0x15 + bl FUN_02003008 + mov r2, #7 + ldr r0, [r4, #0x5c] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x15 + bl FUN_02003008 + mov r2, #2 + ldr r0, [r4, #0x5c] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x15 + bl FUN_02003008 + mov r0, #0x15 + bl FUN_02016B94 + str r0, [r4, #0x30] + mov r0, #0x40 + mov r1, #0x15 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r2, #0x23 + add r1, r4, #0 + lsl r2, r2, #4 + ldr r0, [r4] + add r1, #0xc + add r2, r4, r2 + bl MOD12_02231A24 + ldr r1, _0222D86C ; =0x0000081C + str r0, [r4, r1] + ldr r0, [r4, #0x30] + bl MOD12_0222DB50 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x15 + bl FUN_02002C50 + mov r0, #0x15 + bl FUN_0200BB14 + ldr r1, _0222D870 ; =0x022449C8 + ldr r2, _0222D874 ; =0x0224499C + mov r3, #0x20 + str r0, [r4, #0x24] + bl FUN_0200BB6C + ldr r1, _0222D878 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r4, #0x24] + bl FUN_0200BB34 + str r0, [r4, #0x28] + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + ldr r2, _0222D87C ; =0x022449B0 + bl FUN_0200BF60 + ldr r0, [r4, #0x24] + bl FUN_0200BB68 + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D24 + mov r0, #0x15 + bl FUN_02006D98 + str r0, [r4, #0x10] + bl MOD12_0222DCAC + mov r0, #0x15 + bl FUN_02211F5C + mov r1, #1 + str r0, [r4, #0x2c] + bl FUN_02211FF0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xbf + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x44] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc0 + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x48] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc5 + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x4c] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc6 + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x50] + mov r0, #8 + mov r1, #0x15 + bl FUN_02011744 + str r0, [r4, #0x60] + mov r0, #0x15 + bl FUN_0200AA80 + str r0, [r4, #0x54] + mov r0, #0x1e + lsl r0, r0, #4 + mov r1, #0x15 + bl FUN_020219F4 + str r0, [r4, #0x58] + add r0, r4, #0 + bl MOD12_0222DFC4 + add r0, r4, #0 + bl MOD12_0222E0F8 + add r0, r4, #0 + bl MOD12_0222DC80 + add r0, r4, #0 + bl MOD12_022335B0 + add r0, r4, #0 + bl MOD12_0222DD20 + add r0, r4, #0 + bl MOD12_0222DE30 + ldr r7, _0222D880 ; =0x00000123 + mov r6, #0 + add r5, sp, #0xc +_0222D7BC: + ldr r1, [r4] + mov r2, #0 + ldrb r0, [r1, r7] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r6, #0 + add r1, #0x36 + bl FUN_020671BC + strh r0, [r5] + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #4 + blt _0222D7BC + ldr r0, _0222D86C ; =0x0000081C + add r1, sp, #0xc + ldr r0, [r4, r0] + bl MOD12_02232C08 + ldr r0, _0222D86C ; =0x0000081C + mov r1, #0 + ldr r0, [r4, r0] + mov r2, #1 + add r3, r1, #0 + bl MOD12_02231B4C + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233758 + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x15 + str r1, [sp, #8] + mov r1, #0x1f + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _0222D884 ; =MOD12_0222DB18 + ldr r2, _0222D888 ; =0x0000EA60 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r0, _0222D88C ; =0x00000824 + mov r1, #1 + strb r1, [r4, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _0222D890 ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r4] + ldr r0, _0222D894 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + ldr r0, _0222D898 ; =MOD12_0222DAE4 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0222D85C: .word 0xFFFFE0FF +_0222D860: .word 0x04001000 +_0222D864: .word 0xFFFF1FFF +_0222D868: .word 0x00001658 +_0222D86C: .word 0x0000081C +_0222D870: .word 0x022449C8 +_0222D874: .word 0x0224499C +_0222D878: .word 0x00100010 +_0222D87C: .word 0x022449B0 +_0222D880: .word 0x00000123 +_0222D884: .word MOD12_0222DB18 +_0222D888: .word 0x0000EA60 +_0222D88C: .word 0x00000824 +_0222D890: .word 0x0000046F +_0222D894: .word 0x00000171 +_0222D898: .word MOD12_0222DAE4 + + thumb_func_start MOD12_0222D89C +MOD12_0222D89C: ; 0x0222D89C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _0222D8BE + cmp r0, #1 + beq _0222D8CC + cmp r0, #2 + beq _0222D986 + b _0222D994 +_0222D8BE: + bl FUN_0200E308 + cmp r0, #1 + bne _0222D994 + mov r0, #1 + str r0, [r5] + b _0222D994 +_0222D8CC: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _0222D93E + ldr r2, _0222D99C ; =0x00000822 + ldr r1, _0222D9A0 ; =0x00001648 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _0222D9A4 ; =0x02244A10 + ldr r2, [r2, r3] + blx r2 + sub r1, r0, #1 + cmp r1, #1 + bhi _0222D910 + cmp r0, #1 + bne _0222D8FA + ldr r0, _0222D99C ; =0x00000822 + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0222D900 +_0222D8FA: + ldr r0, _0222D9A8 ; =0x0000164A + ldrh r1, [r4, r0] + ldr r0, _0222D99C ; =0x00000822 +_0222D900: + strh r1, [r4, r0] + ldr r0, _0222D9A0 ; =0x00001648 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _0222D93E +_0222D910: + cmp r0, #3 + bne _0222D93E + mov r0, #2 + str r0, [r5] + ldr r0, _0222D9A0 ; =0x00001648 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x15 + mov r1, #0x20 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0222D994 +_0222D93E: + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD12_022410A0 + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r4, r0 + add r1, r4, #0 + bl MOD12_02241114 + ldr r0, _0222D9AC ; =0x00001650 + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0222D994 + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x15 + mov r1, #0x20 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0222D994 +_0222D986: + bl FUN_0200E308 + cmp r0, #1 + bne _0222D994 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0222D994: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_0222D99C: .word 0x00000822 +_0222D9A0: .word 0x00001648 +_0222D9A4: .word 0x02244A10 +_0222D9A8: .word 0x0000164A +_0222D9AC: .word 0x00001650 + + thumb_func_start MOD12_0222D9B0 +MOD12_0222D9B0: ; 0x0222D9B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02012EAC + ldr r0, [r4, #0x2c] + bl FUN_02212024 + add r0, r4, #0 + bl MOD12_0222DDC4 + add r0, r4, #0 + bl MOD12_0222DEEC + add r0, r4, #0 + bl MOD12_0222E0F4 + add r0, r4, #0 + bl MOD12_0222E0FC + add r0, r4, #0 + add r0, #0x34 + bl FUN_02019178 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + bl MOD12_022319FC + ldr r0, _0222DAD8 ; =0x0000081C + ldr r0, [r4, r0] + bl MOD12_02231AE8 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl FUN_0200C398 + ldr r0, [r4, #0x24] + bl FUN_0200BD04 + bl FUN_0201C29C + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233848 + ldr r0, [r4, #0x10] + bl FUN_020072E8 + mov r0, #2 + bl FUN_02002CF8 + ldr r0, [r4, #0x60] + bl FUN_020117BC + ldr r0, [r4, #0x5c] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + mov r1, #1 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + mov r1, #2 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + mov r1, #3 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + bl FUN_02002FEC + ldr r0, [r4, #0x58] + bl FUN_02021A20 + ldr r0, [r4, #0x54] + bl FUN_0200AB18 + ldr r0, [r4, #0x44] + bl FUN_0200A8B8 + ldr r0, [r4, #0x48] + bl FUN_0200A8B8 + ldr r0, [r4, #0x4c] + bl FUN_0200A8B8 + ldr r0, [r4, #0x50] + bl FUN_0200A8B8 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl MOD12_02231378 + bl FUN_0201CD04 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x15 + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + ldr r0, _0222DADC ; =SDK_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _0222DAE0 ; =SDK_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0222DAD8: .word 0x0000081C +_0222DADC: .word SDK_MODULE_08_ID +_0222DAE0: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_0222DAE4 +MOD12_0222DAE4: ; 0x0222DAE4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r0, [r4, #0x5c] + bl FUN_0200372C + ldr r0, [r4, #0x30] + bl FUN_0201AB60 + ldr r3, _0222DB10 ; =0x027E0000 + ldr r1, _0222DB14 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_0222DB10: .word 0x027E0000 +_0222DB14: .word 0x00003FF8 + + thumb_func_start MOD12_0222DB18 +MOD12_0222DB18: ; 0x0222DB18 + push {r4, lr} + ldr r0, _0222DB48 ; =0x00000824 + add r4, r1, #0 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0222DB3E + ldr r0, [r4, #0x10] + bl FUN_02006ED4 + bl FUN_02215A44 + ldr r0, [r4, #0x28] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _0222DB4C ; =0x04000540 + mov r1, #1 + str r1, [r0] +_0222DB3E: + ldr r1, [r4, #0x30] + mov r0, #0x15 + bl FUN_020335F0 + pop {r4, pc} + .align 2, 0 +_0222DB48: .word 0x00000824 +_0222DB4C: .word 0x04000540 + + thumb_func_start MOD12_0222DB50 +MOD12_0222DB50: ; 0x0222DB50 + push {r4, r5, lr} + sub sp, #0x8c + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _0222DC70 ; =0x022449E8 + add r3, sp, #0x10 + mov r2, #5 +_0222DB60: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222DB60 + add r0, sp, #0x10 + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + ldr r5, _0222DC74 ; =0x0224498C + add r3, sp, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0222DC78 ; =0x02244A50 + add r3, sp, #0x38 + mov r2, #0xa +_0222DBC0: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222DBC0 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _0222DC7C ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #2 + orr r0, r2 + strh r0, [r1] + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD12_022319A4 + add sp, #0x8c + pop {r4, r5, pc} + .align 2, 0 +_0222DC70: .word 0x022449E8 +_0222DC74: .word 0x0224498C +_0222DC78: .word 0x02244A50 +_0222DC7C: .word 0x04000008 + + thumb_func_start MOD12_0222DC80 +MOD12_0222DC80: ; 0x0222DC80 + push {lr} + sub sp, #0x14 + add r1, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x14 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #3 + lsl r0, r0, #8 + str r0, [sp, #0x10] + ldr r0, [r1, #0x30] + add r1, #0x34 + mov r2, #1 + mov r3, #0xb + bl FUN_02019064 + add sp, #0x14 + pop {pc} + + thumb_func_start MOD12_0222DCAC +MOD12_0222DCAC: ; 0x0222DCAC + push {r3, r4, r5, lr} + ldr r3, _0222DCE4 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _0222DCE8 ; =0x021064C0 + mov r1, #0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + add r2, r1, #0 + blx r3 + add r5, r0, #0 + cmp r4, #0 + bne _0222DCD4 + bl ErrorHandling +_0222DCD4: + cmp r5, #0 + bne _0222DCDC + bl ErrorHandling +_0222DCDC: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_0222DCE4: .word 0x021064B8 +_0222DCE8: .word 0x021064C0 + + thumb_func_start MOD12_0222DCEC +MOD12_0222DCEC: ; 0x0222DCEC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0222DCFA + bl ErrorHandling +_0222DCFA: + ldr r1, _0222DD1C ; =0x00000172 + mov r0, #0 + add r2, r1, #0 + add r2, #0xbf +_0222DD02: + ldr r3, [r4] + add r3, r3, r0 + ldrb r5, [r3, r1] + add r3, r4, r0 + add r0, r0, #1 + strb r5, [r3, r2] + cmp r0, #4 + blt _0222DD02 + add r0, r4, #0 + bl MOD12_02235D7C + pop {r3, r4, r5, pc} + nop +_0222DD1C: .word 0x00000172 + + thumb_func_start MOD12_0222DD20 +MOD12_0222DD20: ; 0x0222DD20 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #6 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _0222DDB8 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + ldr r0, [r4, #0x5c] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + bl FUN_0200C0DC + mov r0, #0x2e + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _0222DDBC ; =0x000080ED + mov r1, #2 + str r0, [sp, #0x14] + ldr r0, [r4, #0x5c] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + bl FUN_0200C0DC + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl MOD12_02235194 + add r0, r4, #0 + bl MOD12_022350F8 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0xc + bl MOD12_02233A8C + add r0, r4, #0 + ldr r2, [r4] + ldr r1, _0222DDC0 ; =0x0000011E + add r0, #0xc + ldrb r1, [r2, r1] + bl MOD12_02233EEC + ldr r0, [r4, #0x5c] + ldr r1, [r4, #0x24] + ldr r2, [r4, #0x28] + bl MOD12_02233B04 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233B7C + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl MOD12_02233FAC + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl MOD12_022342A8 + add sp, #0x18 + pop {r4, pc} + nop +_0222DDB8: .word 0x000080E9 +_0222DDBC: .word 0x000080ED +_0222DDC0: .word 0x0000011E + + thumb_func_start MOD12_0222DDC4 +MOD12_0222DDC4: ; 0x0222DDC4 + push {r4, lr} + add r4, r0, #0 + add r0, #0xc + bl MOD12_02233F78 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233AD4 + add r0, r4, #0 + bl MOD12_02235114 + add r0, r4, #0 + add r0, #0xc + bl MOD12_0223524C + ldr r0, [r4, #0x28] + bl MOD12_022351E0 + ldr r0, [r4, #0x28] + ldr r1, _0222DE28 ; =0x000080E9 + bl FUN_0200C368 + ldr r0, [r4, #0x28] + ldr r1, _0222DE2C ; =0x000080ED + bl FUN_0200C368 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233BBC + ldr r0, [r4, #0x28] + bl MOD12_02233B58 + ldr r0, [r4, #0x28] + bl MOD12_02233FF8 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02234044 + ldr r0, [r4, #0x28] + bl MOD12_02234334 + add r4, #0xc + add r0, r4, #0 + bl MOD12_0223439C + pop {r4, pc} + nop +_0222DE28: .word 0x000080E9 +_0222DE2C: .word 0x000080ED + + thumb_func_start MOD12_0222DE30 +MOD12_0222DE30: ; 0x0222DE30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r1, #3 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _0222DED8 ; =0x000080EF + str r0, [sp, #0x14] + ldr r0, [r5, #0x5c] + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + bl FUN_0200C0DC + mov r0, #0x2e + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _0222DEDC ; =0x000080F0 + mov r1, #3 + str r0, [sp, #0x14] + ldr r0, [r5, #0x5c] + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + bl FUN_0200C0DC + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + bl MOD12_022334A4 + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + bl MOD12_022333F8 + ldr r2, _0222DEE0 ; =0x000080F4 + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + add r3, r2, #0 + bl MOD12_02240E34 + ldr r7, _0222DEE4 ; =0x000080F6 + ldr r6, _0222DEE8 ; =0x00000123 + mov r4, #0 +_0222DE9E: + ldr r1, [r5] + mov r2, #0 + ldrb r0, [r1, r6] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + cmp r0, #0 + beq _0222DEBE + mov r1, #0xb + bl FUN_0206AB18 + add r3, r0, #0 + b _0222DEC0 +_0222DEBE: + mov r3, #0 +_0222DEC0: + add r0, r4, r7 + str r0, [sp] + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + mov r2, #2 + bl MOD12_02240E00 + add r4, r4, #1 + cmp r4, #4 + blt _0222DE9E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222DED8: .word 0x000080EF +_0222DEDC: .word 0x000080F0 +_0222DEE0: .word 0x000080F4 +_0222DEE4: .word 0x000080F6 +_0222DEE8: .word 0x00000123 + + thumb_func_start MOD12_0222DEEC +MOD12_0222DEEC: ; 0x0222DEEC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x28] + ldr r1, _0222DF24 ; =0x000080EF + bl FUN_0200C368 + ldr r0, [r5, #0x28] + bl MOD12_0223353C + ldr r0, [r5, #0x28] + bl MOD12_02233478 + ldr r1, _0222DF28 ; =0x000080F4 + ldr r0, [r5, #0x28] + add r2, r1, #0 + bl MOD12_02240E84 + ldr r6, _0222DF2C ; =0x000080F6 + mov r4, #0 +_0222DF12: + ldr r0, [r5, #0x28] + add r1, r4, r6 + bl MOD12_02240E7C + add r4, r4, #1 + cmp r4, #4 + blt _0222DF12 + pop {r4, r5, r6, pc} + nop +_0222DF24: .word 0x000080EF +_0222DF28: .word 0x000080F4 +_0222DF2C: .word 0x000080F6 + + thumb_func_start MOD12_0222DF30 +MOD12_0222DF30: ; 0x0222DF30 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #0 + bne _0222DF9A + mov r0, #0 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xe + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #3 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #5 + mov r3, #2 + bl FUN_020068C8 + mov r0, #1 + add r1, r0, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + add r0, r5, #0 + bl MOD12_022335B0 + cmp r4, #1 + bne _0222DFBE + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0222DF9A: + mov r0, #2 + lsl r1, r0, #0xd + mov r2, #0 + mov r3, #0x15 + bl FUN_02017F18 + ldr r0, [r5, #0x30] + mov r1, #2 + bl FUN_02018744 + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC +_0222DFBE: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0222DFC4 +MOD12_0222DFC4: ; 0x0222DFC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #2 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #4 + bl FUN_020068C8 + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + bl MOD12_0222DF30 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x5c] + mov r1, #0x2d + mov r2, #0x1d + mov r3, #0x15 + bl FUN_020030E8 + mov r0, #0x15 + mov r1, #0x20 + bl FUN_02016998 + add r7, r0, #0 + mov r0, #0x15 + mov r1, #0x20 + bl FUN_02016998 + str r0, [sp, #0x10] + ldr r0, [r5, #0x5c] + mov r1, #0 + bl FUN_020031FC + add r4, r0, #0 + ldr r0, [r5, #0x5c] + mov r1, #0 + bl FUN_02003204 + str r0, [sp, #0x14] + ldr r0, _0222E0EC ; =0x022451D0 + add r1, r7, #0 + ldrb r0, [r0] + mov r2, #0x20 + lsl r6, r0, #5 + add r0, r4, r6 + bl MIi_CpuCopy16 + ldr r1, [r5] + ldr r0, _0222E0F0 ; =0x00000123 + mov r2, #0x20 + ldrb r1, [r1, r0] + ldr r0, _0222E0EC ; =0x022451D0 + ldrb r0, [r0, r1] + ldr r1, [sp, #0x10] + lsl r0, r0, #5 + add r0, r4, r0 + bl MIi_CpuCopy16 + ldr r2, [r5] + ldr r1, _0222E0F0 ; =0x00000123 + add r0, r7, #0 + ldrb r2, [r2, r1] + ldr r1, _0222E0EC ; =0x022451D0 + ldrb r1, [r1, r2] + mov r2, #0x20 + lsl r1, r1, #5 + add r1, r4, r1 + bl MIi_CpuCopy16 + ldr r0, [sp, #0x10] + add r1, r4, r6 + mov r2, #0x20 + bl MIi_CpuCopy16 + ldr r2, [r5] + ldr r1, _0222E0F0 ; =0x00000123 + add r0, r7, #0 + ldrb r2, [r2, r1] + ldr r1, _0222E0EC ; =0x022451D0 + ldrb r1, [r1, r2] + lsl r2, r1, #5 + ldr r1, [sp, #0x14] + add r1, r1, r2 + mov r2, #0x20 + bl MIi_CpuCopy16 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + add r1, r1, r6 + mov r2, #0x20 + bl MIi_CpuCopy16 + add r0, r7, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x10] + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E0EC: .word 0x022451D0 +_0222E0F0: .word 0x00000123 + + thumb_func_start MOD12_0222E0F4 +MOD12_0222E0F4: ; 0x0222E0F4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222E0F8 +MOD12_0222E0F8: ; 0x0222E0F8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222E0FC +MOD12_0222E0FC: ; 0x0222E0FC + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222E100 +MOD12_0222E100: ; 0x0222E100 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E128 + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r2, r0 + add r1, r2, #0 + mov r2, #2 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E148 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E148 +_0222E128: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r2] + ldr r4, _0222E14C ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E148 + mov r0, #1 + pop {r4, pc} +_0222E148: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222E14C: .word 0x00000127 + + thumb_func_start MOD12_0222E150 +MOD12_0222E150: ; 0x0222E150 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_020832EC + cmp r0, #0 + bne _0222E164 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E164: + ldrh r0, [r4] + cmp r0, #0 + bne _0222E196 + ldr r3, _0222E1BC ; =0x0000040C + mov r1, #0 + strb r1, [r5, r3] + add r0, r3, #2 + strb r1, [r5, r0] + add r0, r3, #3 + strb r1, [r5, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe4 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0x14 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E1B6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E1B6 +_0222E196: + ldr r4, _0222E1C0 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E1B6 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E1B6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222E1BC: .word 0x0000040C +_0222E1C0: .word 0x00000127 + + thumb_func_start MOD12_0222E1C4 +MOD12_0222E1C4: ; 0x0222E1C4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E218 + ldr r0, [r5] + bl FUN_020832EC + cmp r0, #1 + bne _0222E1E2 + ldr r0, _0222E23C ; =0x0000040C + mov r1, #0x2d + strb r1, [r5, r0] + b _0222E1F0 +_0222E1E2: + ldr r1, [r5] + ldr r0, _0222E240 ; =0x0000011F + ldrb r0, [r1, r0] + bl MOD12_02235A98 + ldr r1, _0222E23C ; =0x0000040C + strb r0, [r5, r1] +_0222E1F0: + ldr r3, _0222E244 ; =0x0000040E + mov r1, #0 + strb r1, [r5, r3] + add r0, r3, #1 + strb r1, [r5, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe6 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0x14 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E238 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E238 +_0222E218: + ldr r4, _0222E248 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E238 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E238: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E23C: .word 0x0000040C +_0222E240: .word 0x0000011F +_0222E244: .word 0x0000040E +_0222E248: .word 0x00000127 + + thumb_func_start MOD12_0222E24C +MOD12_0222E24C: ; 0x0222E24C + mov r0, #1 + bx lr + + thumb_func_start MOD12_0222E250 +MOD12_0222E250: ; 0x0222E250 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r1, [sp] + ldrh r1, [r1] + add r4, r0, #0 + cmp r1, #0 + beq _0222E268 + cmp r1, #1 + beq _0222E288 + cmp r1, #2 + beq _0222E2B0 + b _0222E2F0 +_0222E268: + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E300 + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _0222E300 +_0222E288: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222E308 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E300 + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _0222E300 +_0222E2B0: + add r1, sp, #4 + bl MOD12_0223900C + ldr r1, [r4] + ldr r0, _0222E308 ; =0x00000127 + ldrb r0, [r1, r0] + cmp r0, #4 + bge _0222E2E4 + lsl r2, r0, #1 + add r3, sp, #4 + add r1, r3, r2 + ldr r7, _0222E30C ; =0x0000023E + add r2, r4, r2 + add r3, r3, r0 +_0222E2CC: + ldrh r6, [r1] + ldr r5, _0222E310 ; =0x00000236 + add r1, r1, #2 + strh r6, [r2, r5] + ldrb r6, [r3, #8] + add r5, r4, r0 + add r0, r0, #1 + strb r6, [r5, r7] + add r2, r2, #2 + add r3, r3, #1 + cmp r0, #4 + blt _0222E2CC +_0222E2E4: + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _0222E300 +_0222E2F0: + mov r1, #0xce + lsl r1, r1, #2 + add r1, r4, r1 + bl MOD12_0223808C + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222E300: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E308: .word 0x00000127 +_0222E30C: .word 0x0000023E +_0222E310: .word 0x00000236 + + thumb_func_start MOD12_0222E314 +MOD12_0222E314: ; 0x0222E314 + push {r3, r4, r5, r6, r7, lr} + ldr r2, _0222E394 ; =0x00000235 + add r4, r0, #0 + ldrb r0, [r4, r2] + add r1, r4, r0 + sub r0, r2, #4 + ldrb r0, [r1, r0] + add r1, r2, #0 + add r1, #0xf3 + strb r0, [r4, r1] + str r0, [sp] + add r0, r2, #0 + ldrb r1, [r4, r2] + add r0, #0xf4 + strb r1, [r4, r0] + ldr r0, [sp] + add r1, r4, r0 + add r0, r2, #0 + add r0, #9 + ldrb r3, [r1, r0] + add r0, r2, #0 + add r0, #0xf5 + strb r3, [r4, r0] + add r3, r2, #0 + mov r0, #0 + add r3, #0xf6 + strb r0, [r4, r3] + ldrb r2, [r4, r2] + cmp r2, #0 + ble _0222E374 + ldr r7, _0222E398 ; =0x0000023E + mov r5, #1 + add r3, r7, #0 +_0222E356: + ldr r2, _0222E39C ; =0x00000231 + add r6, r4, r0 + ldrb r2, [r6, r2] + add r2, r4, r2 + ldrb r6, [r2, r7] + ldrb r2, [r1, r3] + cmp r6, r2 + bne _0222E36A + ldr r2, _0222E3A0 ; =0x0000032B + strb r5, [r4, r2] +_0222E36A: + ldr r2, _0222E394 ; =0x00000235 + add r0, r0, #1 + ldrb r2, [r4, r2] + cmp r0, r2 + blt _0222E356 +_0222E374: + mov r1, #1 + lsl r1, r1, #0xa + ldr r2, [sp] + add r0, r4, #0 + add r1, r4, r1 + bl MOD12_02235274 + ldr r1, _0222E3A4 ; =0x00000406 + ldr r2, [sp] + add r0, r4, #0 + add r1, r4, r1 + bl MOD12_02235274 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E394: .word 0x00000235 +_0222E398: .word 0x0000023E +_0222E39C: .word 0x00000231 +_0222E3A0: .word 0x0000032B +_0222E3A4: .word 0x00000406 + + thumb_func_start MOD12_0222E3A8 +MOD12_0222E3A8: ; 0x0222E3A8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E3D4 + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #4 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E3F4 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E3F4 +_0222E3D4: + ldr r4, _0222E3F8 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E3F4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E3F4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E3F8: .word 0x00000127 + + thumb_func_start MOD12_0222E3FC +MOD12_0222E3FC: ; 0x0222E3FC + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #0 + bne _0222E42C + ldr r3, _0222E458 ; =0x0000040C + mov r0, #0 + strb r0, [r4, r3] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #6 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E452 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222E452 +_0222E42C: + ldr r5, _0222E45C ; =0x00000127 + ldr r3, [r4] + sub r2, r5, #4 + ldrb r1, [r3, r5] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + add r0, r4, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E452 + ldr r0, _0222E458 ; =0x0000040C + mov r1, #0 + strb r1, [r4, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E452: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222E458: .word 0x0000040C +_0222E45C: .word 0x00000127 + + thumb_func_start MOD12_0222E460 +MOD12_0222E460: ; 0x0222E460 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #0 + beq _0222E472 + cmp r0, #1 + beq _0222E4A2 + b _0222E4C2 +_0222E472: + ldr r0, _0222E4F0 ; =0x0000040C + mov r1, #4 + strb r1, [r4, r0] + add r1, r0, #0 + sub r1, #0xe1 + ldrb r1, [r4, r1] + cmp r1, #1 + bne _0222E486 + mov r1, #5 + b _0222E488 +_0222E486: + mov r1, #0 +_0222E488: + mov r2, #0xce + add r0, r0, #1 + strb r1, [r4, r0] + lsl r2, r2, #2 + add r1, r4, r2 + sub r2, #0x10 + ldrb r2, [r4, r2] + add r0, r4, #0 + bl MOD12_02238224 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] +_0222E4A2: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #7 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E4EC + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222E4EC +_0222E4C2: + ldr r5, _0222E4F4 ; =0x00000127 + ldr r3, [r4] + sub r2, r5, #4 + ldrb r1, [r3, r5] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + add r0, r4, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E4EC + ldr r0, _0222E4F0 ; =0x0000040C + mov r1, #0 + strb r1, [r4, r0] + add r0, r0, #1 + strb r1, [r4, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E4EC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E4F0: .word 0x0000040C +_0222E4F4: .word 0x00000127 + + thumb_func_start MOD12_0222E4F8 +MOD12_0222E4F8: ; 0x0222E4F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrh r1, [r4] + add r5, r0, #0 + cmp r1, #0xc + bls _0222E506 + b _0222E6B6 +_0222E506: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222E512: ; jump table + .short _0222E52C - _0222E512 - 2 ; case 0 + .short _0222E542 - _0222E512 - 2 ; case 1 + .short _0222E556 - _0222E512 - 2 ; case 2 + .short _0222E576 - _0222E512 - 2 ; case 3 + .short _0222E59C - _0222E512 - 2 ; case 4 + .short _0222E5B6 - _0222E512 - 2 ; case 5 + .short _0222E5D6 - _0222E512 - 2 ; case 6 + .short _0222E5FA - _0222E512 - 2 ; case 7 + .short _0222E614 - _0222E512 - 2 ; case 8 + .short _0222E634 - _0222E512 - 2 ; case 9 + .short _0222E658 - _0222E512 - 2 ; case 10 + .short _0222E672 - _0222E512 - 2 ; case 11 + .short _0222E692 - _0222E512 - 2 ; case 12 +_0222E52C: + mov r2, #0xce + lsl r2, r2, #2 + add r1, r5, r2 + sub r2, #0x10 + ldrb r2, [r5, r2] + bl MOD12_022380FC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E542: + mov r2, #0xce + lsl r2, r2, #2 + add r1, r5, r2 + sub r2, #0x10 + ldrb r2, [r5, r2] + bl MOD12_02238280 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E556: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xa + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E592 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E576: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222E594 +_0222E592: + b _0222E6CA +_0222E594: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E59C: + mov r3, #0xce + lsl r3, r3, #2 + add r2, r3, #0 + add r1, r5, r3 + sub r2, #0x10 + sub r3, #0xf + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022382A8 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E5B6: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xb + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E5D6: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E5FA: + mov r3, #0xce + lsl r3, r3, #2 + add r2, r3, #0 + add r1, r5, r3 + sub r2, #0x10 + sub r3, #0xf + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_02238370 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E614: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xc + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E634: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E658: + mov r3, #0xce + lsl r3, r3, #2 + add r2, r3, #0 + sub r2, #0x10 + ldrb r2, [r5, r2] + add r1, r5, r3 + add r3, #0xc8 + add r3, r5, r3 + bl MOD12_0223850C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E672: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xd + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E692: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E6B6: + mov r2, #0xce + lsl r2, r2, #2 + add r1, r5, r2 + sub r2, #0x10 + ldrb r2, [r5, r2] + add r0, r5, #0 + bl MOD12_02238160 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E6CA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222E6D0: .word 0x00000127 + + thumb_func_start MOD12_0222E6D4 +MOD12_0222E6D4: ; 0x0222E6D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E700 + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #5 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E720 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E720 +_0222E700: + ldr r4, _0222E724 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E720 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E720: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E724: .word 0x00000127 + + thumb_func_start MOD12_0222E728 +MOD12_0222E728: ; 0x0222E728 + ldr r2, _0222E744 ; =0x00000235 + ldrb r3, [r0, r2] + add r3, r3, #1 + strb r3, [r0, r2] + ldrb r0, [r0, r2] + cmp r0, #4 + blo _0222E73A + mov r0, #1 + bx lr +_0222E73A: + mov r0, #5 + strh r0, [r1, #2] + mov r0, #2 + bx lr + nop +_0222E744: .word 0x00000235 + + thumb_func_start MOD12_0222E748 +MOD12_0222E748: ; 0x0222E748 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r7, r1, #0 + ldrh r1, [r7] + str r0, [sp] + cmp r1, #0x18 + bls _0222E758 + b _0222EBFA +_0222E758: + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E764: ; jump table + .short _0222E796 - _0222E764 - 2 ; case 0 + .short _0222E79C - _0222E764 - 2 ; case 1 + .short _0222E7BA - _0222E764 - 2 ; case 2 + .short _0222E7E8 - _0222E764 - 2 ; case 3 + .short _0222E80C - _0222E764 - 2 ; case 4 + .short _0222E834 - _0222E764 - 2 ; case 5 + .short _0222E850 - _0222E764 - 2 ; case 6 + .short _0222E878 - _0222E764 - 2 ; case 7 + .short _0222E9CE - _0222E764 - 2 ; case 8 + .short _0222E9D6 - _0222E764 - 2 ; case 9 + .short _0222E9FA - _0222E764 - 2 ; case 10 + .short _0222EA2C - _0222E764 - 2 ; case 11 + .short _0222EA44 - _0222E764 - 2 ; case 12 + .short _0222EA50 - _0222E764 - 2 ; case 13 + .short _0222EA6E - _0222E764 - 2 ; case 14 + .short _0222EA9C - _0222E764 - 2 ; case 15 + .short _0222EAC0 - _0222E764 - 2 ; case 16 + .short _0222EB12 - _0222E764 - 2 ; case 17 + .short _0222EB2A - _0222E764 - 2 ; case 18 + .short _0222EB36 - _0222E764 - 2 ; case 19 + .short _0222EB48 - _0222E764 - 2 ; case 20 + .short _0222EB66 - _0222E764 - 2 ; case 21 + .short _0222EB94 - _0222E764 - 2 ; case 22 + .short _0222EBB8 - _0222E764 - 2 ; case 23 + .short _0222EBDE - _0222E764 - 2 ; case 24 +_0222E796: + add r0, r1, #1 + strh r0, [r7] + b _0222EC00 +_0222E79C: + ldr r1, [r7, #4] + ldr r0, [sp] + ldr r2, _0222EAE4 ; =0x00000231 + add r0, r0, r1 + ldrb r3, [r0, r2] + add r1, r2, #0 + ldr r0, [sp] + add r1, #0xf7 + strb r3, [r0, r1] + ldr r1, [r7, #4] + add r2, #0xf8 + strb r1, [r0, r2] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222E7BA: + mov r3, #0xce + ldr r0, [sp] + lsl r3, r3, #2 + add r4, r3, #0 + add r1, r0, #0 + add r1, r1, r3 + sub r4, #0x10 + add r2, r0, #0 + ldrb r2, [r2, r4] + sub r3, #0xf + add r4, r0, #0 + ldrb r3, [r4, r3] + bl MOD12_022383EC + cmp r0, #1 + bne _0222E7E2 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E7E2: + mov r0, #5 + strh r0, [r7] + b _0222EC00 +_0222E7E8: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0xe + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E82A + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E80C: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EAE8 ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222E82C +_0222E82A: + b _0222EC00 +_0222E82C: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E834: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #4 + blt _0222E84A + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E84A: + mov r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E850: + mov r6, #0xce + lsl r6, r6, #2 + add r5, r6, #0 + mov r4, #0 + add r5, #0xc8 +_0222E85A: + ldr r0, [sp] + add r2, r4, #0 + add r1, r0, #0 + add r3, r0, #0 + add r1, r1, r6 + add r3, r3, r5 + bl MOD12_02238660 + add r4, r4, #1 + cmp r4, #4 + blt _0222E85A + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E878: + mov r5, #0 + add r2, sp, #0x40 + add r3, sp, #0x34 + add r6, sp, #4 + mov r0, #4 +_0222E882: + mov r1, #0 + str r1, [r2] + str r5, [r3] + add r4, r6, #0 +_0222E88A: + add r1, r1, #1 + stmia r4!, {r0} + cmp r1, #4 + blt _0222E88A + add r5, r5, #1 + add r2, r2, #4 + add r3, r3, #4 + add r6, #0x10 + cmp r5, #3 + blt _0222E882 + mov r3, #0 + add r6, sp, #0x40 +_0222E8A2: + ldr r0, [sp] + add r1, r0, r3 + ldr r0, _0222EAE4 ; =0x00000231 + ldrb r1, [r1, r0] + ldr r0, [sp] + add r2, r0, r1 + ldr r0, _0222EAEC ; =0x0000023E + ldrb r0, [r2, r0] + lsl r0, r0, #2 + ldr r4, [r6, r0] + add r4, r4, #1 + str r4, [r6, r0] + ldr r0, _0222EAEC ; =0x0000023E + mov r4, #0 + ldrb r0, [r2, r0] + lsl r2, r0, #4 + add r0, sp, #4 + add r5, r0, r2 + add r2, r5, #0 +_0222E8C8: + ldr r0, [r2] + cmp r0, #4 + bne _0222E8D4 + lsl r0, r4, #2 + str r1, [r5, r0] + b _0222E8DC +_0222E8D4: + add r4, r4, #1 + add r2, r2, #4 + cmp r4, #4 + blt _0222E8C8 +_0222E8DC: + add r3, r3, #1 + cmp r3, #4 + blt _0222E8A2 + mov r6, #0 +_0222E8E4: + mov r2, #2 + cmp r6, #2 + bge _0222E910 + add r0, sp, #0x48 + add r1, sp, #0x3c +_0222E8EE: + sub r3, r0, #4 + ldr r5, [r0] + ldr r4, [r3] + cmp r4, r5 + bge _0222E906 + str r4, [r0] + str r5, [r3] + sub r3, r1, #4 + ldr r5, [r1] + ldr r4, [r3] + str r4, [r1] + str r5, [r3] +_0222E906: + sub r2, r2, #1 + sub r0, r0, #4 + sub r1, r1, #4 + cmp r2, r6 + bgt _0222E8EE +_0222E910: + add r6, r6, #1 + cmp r6, #2 + blt _0222E8E4 + ldr r0, [r7, #4] + mov r2, #0x41 + lsl r0, r0, #2 + add r1, sp, #0x34 + ldr r3, [r1, r0] + ldr r0, [sp] + lsl r2, r2, #4 + strb r3, [r0, r2] + mov r3, #0 + ldr r6, _0222EAF0 ; =0x00000411 + add r2, r3, #0 + add r5, sp, #4 +_0222E92E: + ldr r0, [r7, #4] + ldr r4, [sp] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r4, r4, r3 + lsl r0, r0, #4 + add r0, r5, r0 + ldr r0, [r2, r0] + add r3, r3, #1 + add r2, r2, #4 + strb r0, [r4, r6] + cmp r3, #4 + blt _0222E92E + ldr r0, [r7, #4] + lsl r1, r0, #2 + add r0, sp, #0x40 + ldr r0, [r0, r1] + cmp r0, #4 + bhi _0222E992 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E960: ; jump table + .short _0222E992 - _0222E960 - 2 ; case 0 + .short _0222E96A - _0222E960 - 2 ; case 1 + .short _0222E974 - _0222E960 - 2 ; case 2 + .short _0222E97E - _0222E960 - 2 ; case 3 + .short _0222E988 - _0222E960 - 2 ; case 4 +_0222E96A: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #0xa + strb r2, [r0, r1] + b _0222E99C +_0222E974: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #7 + strb r2, [r0, r1] + b _0222E99C +_0222E97E: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #8 + strb r2, [r0, r1] + b _0222E99C +_0222E988: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #9 + strb r2, [r0, r1] + b _0222E99C +_0222E992: + mov r0, #0xc + strh r0, [r7] + add sp, #0x4c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0222E99C: + ldr r2, _0222EAF8 ; =0x0000040D + ldr r0, [sp] + mov r1, #0 + add r3, r2, #0 + strb r1, [r0, r2] + sub r3, #0xd + add r1, r0, #0 + add r1, r1, r3 + sub r2, #0xe5 + add r3, r0, #0 + ldrb r2, [r3, r2] + bl MOD12_02235274 + ldr r0, [sp] + ldr r3, _0222EAFC ; =0x00000406 + add r1, r0, #0 + add r1, r1, r3 + sub r3, #0xde + add r2, r0, #0 + ldrb r2, [r2, r3] + bl MOD12_02235274 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222E9CE: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E9D6: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0x10 + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EADE + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E9FA: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EAE8 ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EADE + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #0 + strb r2, [r0, r1] + add r1, r1, #1 + strb r2, [r0, r1] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA2C: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #3 + bge _0222EA3C + mov r0, #7 + strh r0, [r7] + b _0222EC00 +_0222EA3C: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA44: + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA50: + ldr r1, [r7, #4] + ldr r0, [sp] + ldr r2, _0222EAE4 ; =0x00000231 + add r0, r0, r1 + ldrb r3, [r0, r2] + add r1, r2, #0 + ldr r0, [sp] + add r1, #0xf7 + strb r3, [r0, r1] + ldr r1, [r7, #4] + add r2, #0xf8 + strb r1, [r0, r2] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222EA6E: + mov r3, #0xce + ldr r0, [sp] + lsl r3, r3, #2 + add r4, r3, #0 + add r1, r0, #0 + add r1, r1, r3 + sub r4, #0x10 + add r2, r0, #0 + ldrb r2, [r2, r4] + sub r3, #0xf + add r4, r0, #0 + ldrb r3, [r4, r3] + bl MOD12_0223844C + cmp r0, #0 + bne _0222EA94 + mov r0, #0x11 + strh r0, [r7] + b _0222EC00 +_0222EA94: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA9C: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0x11 + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EADE + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EAC0: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EAE8 ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222EAE0 +_0222EADE: + b _0222EC00 +_0222EAE0: + ldr r1, _0222EAF4 ; =0x0000040C + b _0222EB00 + .align 2, 0 +_0222EAE4: .word 0x00000231 +_0222EAE8: .word 0x00000127 +_0222EAEC: .word 0x0000023E +_0222EAF0: .word 0x00000411 +_0222EAF4: .word 0x0000040C +_0222EAF8: .word 0x0000040D +_0222EAFC: .word 0x00000406 +_0222EB00: + ldr r0, [sp] + mov r2, #0 + strb r2, [r0, r1] + add r1, r1, #1 + strb r2, [r0, r1] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB12: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #4 + bge _0222EB22 + mov r0, #0xd + strh r0, [r7] + b _0222EC00 +_0222EB22: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB2A: + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB36: + mov r1, #0xce + ldr r0, [sp] + lsl r1, r1, #2 + add r0, r0, r1 + bl MOD12_02238210 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222EB48: + ldr r1, [r7, #4] + ldr r0, [sp] + ldr r2, _0222EC08 ; =0x00000231 + add r0, r0, r1 + ldrb r3, [r0, r2] + add r1, r2, #0 + ldr r0, [sp] + add r1, #0xf7 + strb r3, [r0, r1] + ldr r1, [r7, #4] + add r2, #0xf8 + strb r1, [r0, r2] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222EB66: + mov r3, #0xce + ldr r0, [sp] + lsl r3, r3, #2 + add r4, r3, #0 + add r1, r0, #0 + add r1, r1, r3 + sub r4, #0x10 + add r2, r0, #0 + ldrb r2, [r2, r4] + sub r3, #0xf + add r4, r0, #0 + ldrb r3, [r4, r3] + bl MOD12_022384AC + cmp r0, #1 + bne _0222EB8E + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB8E: + mov r0, #0x18 + strh r0, [r7] + b _0222EC00 +_0222EB94: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0xf + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EC00 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EBB8: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EC0C ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EC00 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EBDE: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #4 + blt _0222EBF4 + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EBF4: + mov r0, #0x14 + strh r0, [r7] + b _0222EC00 +_0222EBFA: + add sp, #0x4c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0222EC00: + mov r0, #0 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_0222EC08: .word 0x00000231 +_0222EC0C: .word 0x00000127 + + thumb_func_start MOD12_0222EC10 +MOD12_0222EC10: ; 0x0222EC10 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0222EC26 + cmp r0, #1 + beq _0222EC2C + cmp r0, #2 + beq _0222EC4C + b _0222EC70 +_0222EC26: + add r0, r0, #1 + strh r0, [r4] + b _0222EC74 +_0222EC2C: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0x12 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EC74 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EC74 +_0222EC4C: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222EC78 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EC74 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EC74 +_0222EC70: + mov r0, #1 + pop {r3, r4, r5, pc} +_0222EC74: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222EC78: .word 0x00000127 + + thumb_func_start MOD12_0222EC7C +MOD12_0222EC7C: ; 0x0222EC7C + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrh r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bls _0222EC8A + b _0222EDEE +_0222EC8A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222EC96: ; jump table + .short _0222ECA4 - _0222EC96 - 2 ; case 0 + .short _0222ECC4 - _0222EC96 - 2 ; case 1 + .short _0222ECEA - _0222EC96 - 2 ; case 2 + .short _0222ED4A - _0222EC96 - 2 ; case 3 + .short _0222ED6E - _0222EC96 - 2 ; case 4 + .short _0222EDAA - _0222EC96 - 2 ; case 5 + .short _0222EDCA - _0222EC96 - 2 ; case 6 +_0222ECA4: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0x15 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222ECE0 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ECC4: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222EE14 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222ECE2 +_0222ECE0: + b _0222EE0E +_0222ECE2: + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ECEA: + mov r2, #0x36 + mov r1, #0 + lsl r2, r2, #4 + add r0, r1, #0 + add r2, r4, r2 +_0222ECF4: + ldr r3, [r2] + lsl r3, r3, #0x1a + lsr r3, r3, #0x1e + beq _0222ECFE + add r1, r1, #1 +_0222ECFE: + add r0, r0, #1 + add r2, #0x2c + cmp r0, #4 + blt _0222ECF4 + mov r0, #0x23 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #3 + bhs _0222ED1C + cmp r1, #4 + bge _0222ED1C + ldr r0, _0222EE18 ; =0x0000040C + mov r1, #0x2a + strb r1, [r4, r0] + b _0222ED22 +_0222ED1C: + ldr r0, _0222EE18 ; =0x0000040C + mov r1, #0 + strb r1, [r4, r0] +_0222ED22: + ldr r3, _0222EE1C ; =0x0000040E + mov r1, #0 + strb r1, [r4, r3] + add r0, r3, #1 + strb r1, [r4, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe6 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0x14 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ED4A: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222EE14 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ED6E: + mov r1, #0xce + lsl r1, r1, #2 + add r1, r4, r1 + bl MOD12_0223818C + mov r0, #0x23 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD12_02235C60 + ldr r0, _0222EE20 ; =0x00000236 + mov r6, #0 + add r1, r0, #0 + add r3, r4, #0 + add r1, #0x20 +_0222ED8C: + ldrh r2, [r3, r0] + add r6, r6, #1 + strh r2, [r3, r1] + add r3, r3, #2 + cmp r6, #4 + blt _0222ED8C + mov r0, #0x23 + lsl r0, r0, #4 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222EDAA: + mov r0, #0xc3 + mov r3, #0x23 + lsl r0, r0, #4 + lsl r3, r3, #4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0x13 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222EDCA: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222EE14 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222EDEE: + mov r0, #0x23 + lsl r0, r0, #4 + ldrb r1, [r4, r0] + cmp r1, #4 + blo _0222EE00 + mov r0, #0xf + strh r0, [r5, #2] + mov r0, #2 + pop {r4, r5, r6, pc} +_0222EE00: + mov r1, #0 + add r0, r0, #5 + strb r1, [r4, r0] + mov r0, #3 + strh r0, [r5, #2] + mov r0, #2 + pop {r4, r5, r6, pc} +_0222EE0E: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0222EE14: .word 0x00000127 +_0222EE18: .word 0x0000040C +_0222EE1C: .word 0x0000040E +_0222EE20: .word 0x00000236 + + thumb_func_start MOD12_0222EE24 +MOD12_0222EE24: ; 0x0222EE24 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #3 + bhi _0222EED0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222EE3C: ; jump table + .short _0222EE44 - _0222EE3C - 2 ; case 0 + .short _0222EE66 - _0222EE3C - 2 ; case 1 + .short _0222EE90 - _0222EE3C - 2 ; case 2 + .short _0222EEB4 - _0222EE3C - 2 ; case 3 +_0222EE44: + mov r1, #0 + ldr r7, _0222EEF4 ; =0x0000012E + add r2, r3, #0 + add r5, r1, #0 +_0222EE4C: + ldr r0, _0222EEF8 ; =0x00000242 + ldr r6, [r3] + ldrsh r0, [r2, r0] + add r6, r6, r5 + add r1, r1, #1 + strh r0, [r6, r7] + add r2, r2, #2 + add r5, #0xc + cmp r1, #4 + blt _0222EE4C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222EE66: + ldr r5, _0222EEFC ; =0x0000040C + mov r0, #0x2b + strb r0, [r3, r5] + add r0, r5, #1 + mov r1, #0 + strb r1, [r3, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r5, #0xe4 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #3 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EEF0 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EEF0 +_0222EE90: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _0222EF00 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EEF0 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EEF0 +_0222EEB4: + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #1 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EEF0 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EEF0 +_0222EED0: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222EF00 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EEF0 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_0222EEF0: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222EEF4: .word 0x0000012E +_0222EEF8: .word 0x00000242 +_0222EEFC: .word 0x0000040C +_0222EF00: .word 0x00000127 + + thumb_func_start MOD12_0222EF04 +MOD12_0222EF04: ; 0x0222EF04 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _0222F15C ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _0222F160 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _0222F164 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #7 + mov r0, #3 + mov r1, #0x16 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0222F168 ; =0x00000F68 + add r0, r4, #0 + mov r2, #0x16 + bl FUN_02006268 + ldr r2, _0222F168 ; =0x00000F68 + mov r1, #0 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0x16 + bl MOD12_022312D8 + str r0, [r5, #8] + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r5] + lsl r1, r1, #2 + str r5, [r0, r1] + ldr r2, [r5] + mov r3, #0 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r5] + str r0, [r5, #0xc] + add r0, r5, #0 + bl MOD12_0222F720 + mov r0, #0x16 + bl FUN_02002FD0 + str r0, [r5, #0x50] + mov r1, #1 + bl FUN_020038F0 + mov r2, #2 + ldr r0, [r5, #0x50] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x16 + bl FUN_02003008 + mov r1, #1 + ldr r0, [r5, #0x50] + lsl r2, r1, #9 + mov r3, #0x16 + bl FUN_02003008 + mov r2, #7 + ldr r0, [r5, #0x50] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x16 + bl FUN_02003008 + mov r2, #2 + ldr r0, [r5, #0x50] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x16 + bl FUN_02003008 + mov r0, #0x16 + bl FUN_02016B94 + str r0, [r5, #0x30] + mov r0, #0x40 + mov r1, #0x16 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + ldr r0, [r5, #0x30] + bl MOD12_0222F548 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x16 + bl FUN_02002C50 + mov r0, #0x16 + bl FUN_0200BB14 + ldr r1, _0222F16C ; =0x02244AFC + ldr r2, _0222F170 ; =0x02244AB4 + mov r3, #0x20 + str r0, [r5, #0x28] + bl FUN_0200BB6C + ldr r1, _0222F174 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r5, #0x28] + bl FUN_0200BB34 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _0222F178 ; =0x02244AC8 + bl FUN_0200BF60 + ldr r0, [r5, #0x28] + bl FUN_0200BB68 + mov r2, #1 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r0, #0x16 + bl FUN_02006D98 + str r0, [r5, #0x10] + bl MOD12_0222F6E0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc4 + mov r3, #0x16 + bl FUN_0200A86C + str r0, [r5, #0x44] + mov r0, #0x16 + bl FUN_0200AA80 + str r0, [r5, #0x48] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #0x16 + bl FUN_020219F4 + str r0, [r5, #0x4c] + add r0, r5, #0 + bl MOD12_0222F834 + add r0, r5, #0 + bl MOD12_0222F938 + add r0, r5, #0 + bl MOD12_0222F6B4 + add r0, r5, #0 + bl MOD12_0222F748 + add r0, r5, #0 + bl MOD12_0222F7F4 + mov r0, #1 + str r0, [sp] + add r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + add r2, r1, #0 + bl FUN_02003914 + mov r1, #1 + add r0, r1, #0 + str r1, [sp] + add r0, #0xff + str r0, [sp, #4] + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + mov r2, #0 + bl FUN_02003914 + mov r2, #0 + str r2, [sp] + mov r0, #0xe0 + str r0, [sp, #4] + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + mov r1, #2 + bl FUN_02003914 + mov r2, #0 + mov r0, #1 + str r2, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + mov r1, #3 + bl FUN_02003914 + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x16 + str r1, [sp, #8] + mov r1, #0x1b + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _0222F180 ; =MOD12_0222F4F4 + ldr r2, _0222F184 ; =0x0000EA60 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + ldr r0, _0222F188 ; =0x000004F8 + mov r1, #1 + strb r1, [r5, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #0 + bl FUN_0200415C + ldr r1, _0222F18C ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r5] + ldr r0, _0222F190 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + ldr r0, _0222F194 ; =MOD12_0222F458 + add r1, r5, #0 + bl FUN_02015F10 + ldr r0, _0222F198 ; =0x00000605 + bl FUN_020054C8 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_0222F15C: .word 0xFFFFE0FF +_0222F160: .word 0x04001000 +_0222F164: .word 0xFFFF1FFF +_0222F168: .word 0x00000F68 +_0222F16C: .word 0x02244AFC +_0222F170: .word 0x02244AB4 +_0222F174: .word 0x00100010 +_0222F178: .word 0x02244AC8 +_0222F17C: .word 0x00007FFF +_0222F180: .word MOD12_0222F4F4 +_0222F184: .word 0x0000EA60 +_0222F188: .word 0x000004F8 +_0222F18C: .word 0x0000046F +_0222F190: .word 0x00000171 +_0222F194: .word MOD12_0222F458 +_0222F198: .word 0x00000605 + + thumb_func_start MOD12_0222F19C +MOD12_0222F19C: ; 0x0222F19C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _0222F1C0 + cmp r0, #1 + beq _0222F236 + cmp r0, #2 + bne _0222F1BE + b _0222F2EC +_0222F1BE: + b _0222F2FA +_0222F1C0: + bl FUN_0200E308 + cmp r0, #1 + beq _0222F1CA + b _0222F2FA +_0222F1CA: + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0222F300 ; =0x00007FFF + ldr r2, _0222F304 ; =0x0000FFFF + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #1 + mov r3, #6 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0222F300 ; =0x00007FFF + ldr r2, _0222F304 ; =0x0000FFFF + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #2 + mov r3, #6 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + ldr r2, _0222F300 ; =0x00007FFF + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #4 + lsr r2, r2, #1 + mov r3, #6 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0222F300 ; =0x00007FFF + ldr r2, _0222F304 ; =0x0000FFFF + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #8 + mov r3, #6 + bl FUN_02003210 + ldr r0, _0222F308 ; =0x000006E5 + bl FUN_020054C8 + mov r0, #1 + str r0, [r5] + b _0222F2FA +_0222F236: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _0222F2A8 + ldr r2, _0222F30C ; =0x000004F6 + ldr r1, _0222F310 ; =0x00000F14 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _0222F314 ; =0x02244B44 + ldr r2, [r2, r3] + blx r2 + sub r1, r0, #1 + cmp r1, #1 + bhi _0222F27A + cmp r0, #1 + bne _0222F264 + ldr r0, _0222F30C ; =0x000004F6 + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0222F26A +_0222F264: + ldr r0, _0222F318 ; =0x00000F16 + ldrh r1, [r4, r0] + ldr r0, _0222F30C ; =0x000004F6 +_0222F26A: + strh r1, [r4, r0] + ldr r0, _0222F310 ; =0x00000F14 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _0222F2A8 +_0222F27A: + cmp r0, #3 + bne _0222F2A8 + mov r0, #2 + str r0, [r5] + ldr r0, _0222F310 ; =0x00000F14 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x16 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x24 + mov r3, #0 + bl FUN_0200E1D0 + b _0222F2FA +_0222F2A8: + ldr r0, _0222F31C ; =0x000004FC + add r0, r4, r0 + bl MOD12_022410A0 + ldr r0, _0222F31C ; =0x000004FC + add r1, r4, #0 + add r0, r4, r0 + bl MOD12_02241114 + ldr r0, _0222F320 ; =0x00000F1C + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0222F2FA + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x16 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x24 + mov r3, #0 + bl FUN_0200E1D0 + b _0222F2FA +_0222F2EC: + bl FUN_0200E308 + cmp r0, #1 + bne _0222F2FA + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0222F2FA: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0222F300: .word 0x00007FFF +_0222F304: .word 0x0000FFFF +_0222F308: .word 0x000006E5 +_0222F30C: .word 0x000004F6 +_0222F310: .word 0x00000F14 +_0222F314: .word 0x02244B44 +_0222F318: .word 0x00000F16 +_0222F31C: .word 0x000004FC +_0222F320: .word 0x00000F1C + + thumb_func_start MOD12_0222F324 +MOD12_0222F324: ; 0x0222F324 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02012EAC + add r0, r4, #0 + bl MOD12_0222F7C0 + add r0, r4, #0 + bl MOD12_0222F824 + add r0, r4, #0 + bl MOD12_0222F934 + add r0, r4, #0 + bl MOD12_0222F98C + add r0, r4, #0 + add r0, #0x34 + bl FUN_02019178 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl FUN_020178A0 + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x30] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl FUN_0200C398 + ldr r0, [r4, #0x28] + bl FUN_0200BD04 + bl FUN_0201C29C + mov r7, #0xf2 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_0222F3A4: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0222F3AE + bl FUN_021DD540 +_0222F3AE: + add r6, r6, #1 + add r5, #0x10 + cmp r6, #4 + blt _0222F3A4 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02239874 + add r0, r4, #0 + bl MOD12_02239A58 + ldr r0, [r4, #0x10] + bl FUN_020072E8 + mov r0, #2 + bl FUN_02002CF8 + ldr r0, [r4, #0x50] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0x50] + mov r1, #1 + bl FUN_02003038 + ldr r0, [r4, #0x50] + mov r1, #2 + bl FUN_02003038 + ldr r0, [r4, #0x50] + mov r1, #3 + bl FUN_02003038 + ldr r0, [r4, #0x50] + bl FUN_02002FEC + ldr r0, [r4, #0x48] + bl FUN_0200AB18 + ldr r0, [r4, #0x4c] + bl FUN_02021A20 + ldr r0, [r4, #0x44] + bl FUN_0200A8B8 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl MOD12_02231378 + bl FUN_0201CD04 + ldr r0, [sp] + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x16 + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + ldr r0, _0222F450 ; =SDK_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _0222F454 ; =SDK_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F450: .word SDK_MODULE_08_ID +_0222F454: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_0222F458 +MOD12_0222F458: ; 0x0222F458 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _0222F4E4 ; =0x00000F63 + sub r1, r0, #2 + ldrb r3, [r6, r1] + sub r1, r0, #3 + ldrb r1, [r6, r1] + sub r5, r0, #1 + ldrb r5, [r6, r5] + lsl r2, r1, #8 + mov r1, #0xff + lsl r1, r1, #8 + and r2, r1 + orr r2, r5 + ldrb r4, [r6, r0] + ldr r5, _0222F4E8 ; =0x04000040 + strh r2, [r5] + lsl r2, r3, #8 + and r2, r1 + orr r2, r4 + strh r2, [r5, #4] + add r2, r0, #4 + ldrb r4, [r6, r2] + add r2, r0, #2 + ldrb r3, [r6, r2] + add r2, r0, #1 + ldrb r2, [r6, r2] + add r0, r0, #3 + ldrb r0, [r6, r0] + lsl r2, r2, #8 + and r2, r1 + orr r0, r2 + strh r0, [r5, #2] + lsl r0, r3, #8 + and r0, r1 + orr r0, r4 + strh r0, [r5, #6] + ldr r0, [r6, #0x10] + bl FUN_020081C4 + mov r7, #0xf2 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_0222F4B0: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0222F4BA + bl FUN_021DD58C +_0222F4BA: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0222F4B0 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r0, [r6, #0x50] + bl FUN_0200372C + ldr r0, [r6, #0x30] + bl FUN_0201AB60 + ldr r3, _0222F4EC ; =0x027E0000 + ldr r1, _0222F4F0 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222F4E4: .word 0x00000F63 +_0222F4E8: .word 0x04000040 +_0222F4EC: .word 0x027E0000 +_0222F4F0: .word 0x00003FF8 + + thumb_func_start MOD12_0222F4F4 +MOD12_0222F4F4: ; 0x0222F4F4 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _0222F540 ; =0x000004F8 + add r6, r1, #0 + ldrb r0, [r6, r0] + cmp r0, #1 + bne _0222F534 + ldr r0, [r6, #0x10] + bl FUN_02006ED4 + mov r7, #0xf2 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_0222F50E: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0222F518 + bl FUN_021DD518 +_0222F518: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0222F50E + bl FUN_02215A44 + ldr r0, [r6, #0x2c] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _0222F544 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_0222F534: + ldr r1, [r6, #0x30] + mov r0, #0x16 + bl FUN_020335F0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F540: .word 0x000004F8 +_0222F544: .word 0x04000540 + + thumb_func_start MOD12_0222F548 +MOD12_0222F548: ; 0x0222F548 + push {r3, r4, r5, lr} + sub sp, #0xa8 + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _0222F6A0 ; =0x02244B1C + add r3, sp, #0x2c + mov r2, #5 +_0222F558: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222F558 + add r0, sp, #0x2c + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + ldr r5, _0222F6A4 ; =0x02244AA4 + add r3, sp, #0x1c + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0222F6A8 ; =0x02244B70 + add r3, sp, #0x54 + mov r2, #0xa +_0222F5B8: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222F5B8 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x8c + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _0222F6AC ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r2, r0 + strh r2, [r1] + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r5, _0222F6B0 ; =0x02244AE0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #4 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #4 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add sp, #0xa8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F6A0: .word 0x02244B1C +_0222F6A4: .word 0x02244AA4 +_0222F6A8: .word 0x02244B70 +_0222F6AC: .word 0x04000008 +_0222F6B0: .word 0x02244AE0 + + thumb_func_start MOD12_0222F6B4 +MOD12_0222F6B4: ; 0x0222F6B4 + push {lr} + sub sp, #0x14 + add r1, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + ldr r0, [r1, #0x30] + add r1, #0x34 + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + add sp, #0x14 + pop {pc} + .align 2, 0 + + thumb_func_start MOD12_0222F6E0 +MOD12_0222F6E0: ; 0x0222F6E0 + push {r3, r4, r5, lr} + ldr r3, _0222F718 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _0222F71C ; =0x021064C0 + mov r1, #0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + add r2, r1, #0 + blx r3 + add r5, r0, #0 + cmp r4, #0 + bne _0222F708 + bl ErrorHandling +_0222F708: + cmp r5, #0 + bne _0222F710 + bl ErrorHandling +_0222F710: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_0222F718: .word 0x021064B8 +_0222F71C: .word 0x021064C0 + + thumb_func_start MOD12_0222F720 +MOD12_0222F720: ; 0x0222F720 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0222F72E + bl ErrorHandling +_0222F72E: + mov r3, #0 + mov r0, #3 +_0222F732: + add r1, r4, r3 + sub r2, r0, r3 + add r1, #0xd4 + add r3, r3, #1 + strb r2, [r1] + cmp r3, #4 + blt _0222F732 + add r0, r4, #0 + bl MOD12_02239B88 + pop {r4, pc} + + thumb_func_start MOD12_0222F748 +MOD12_0222F748: ; 0x0222F748 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _0222F7B8 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + ldr r0, [r4, #0x50] + ldr r2, [r4, #0x28] + ldr r3, [r4, #0x2c] + bl FUN_0200C0DC + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl MOD12_0223988C + mov r0, #0 + mvn r0, r0 + ldr r3, _0222F7B8 ; =0x000080E9 + str r0, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + ldr r2, [r4, #0x50] + bl MOD12_022316F8 + ldr r3, _0222F7B8 ; =0x000080E9 + mov r0, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0xc8 + str r0, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0x14] + ldr r0, _0222F7BC ; =0x0000C350 + str r0, [sp, #0x18] + add r0, r4, #0 + ldr r1, [r4, #0x28] + ldr r2, [r4, #0x2c] + add r0, #0xb4 + bl MOD12_022317C8 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_0222F7B8: .word 0x000080E9 +_0222F7BC: .word 0x0000C350 + + thumb_func_start MOD12_0222F7C0 +MOD12_0222F7C0: ; 0x0222F7C0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x2c] + bl MOD12_022398D8 + add r0, r4, #0 + add r0, #0xb4 + bl MOD12_0223185C + ldr r1, _0222F7F0 ; =0x000080E9 + mov r2, #0 + str r1, [sp] + ldr r0, [r4, #0x2c] + mvn r2, r2 + add r3, r1, #0 + bl MOD12_02231780 + ldr r0, [r4, #0x2c] + ldr r1, _0222F7F0 ; =0x000080E9 + bl FUN_0200C368 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222F7F0: .word 0x000080E9 + + thumb_func_start MOD12_0222F7F4 +MOD12_0222F7F4: ; 0x0222F7F4 + push {r3, lr} + sub sp, #0x18 + add r3, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _0222F820 ; =0x000080EA + mov r1, #3 + str r0, [sp, #0x14] + ldr r0, [r3, #0x50] + ldr r2, [r3, #0x28] + ldr r3, [r3, #0x2c] + bl FUN_0200C0DC + add sp, #0x18 + pop {r3, pc} + .align 2, 0 +_0222F820: .word 0x000080EA + + thumb_func_start MOD12_0222F824 +MOD12_0222F824: ; 0x0222F824 + ldr r3, _0222F82C ; =0x0200C369 + ldr r0, [r0, #0x2c] + ldr r1, _0222F830 ; =0x000080EA + bx r3 + .align 2, 0 +_0222F82C: .word 0x0200C369 +_0222F830: .word 0x000080EA + + thumb_func_start MOD12_0222F834 +MOD12_0222F834: ; 0x0222F834 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r1, #0x16 + str r1, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x15 + mov r3, #3 + bl FUN_020068C8 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x2d + mov r2, #0x22 + mov r3, #0x16 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x16 + bl FUN_020030E8 + ldr r1, [r5] + ldr r0, _0222F930 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x16 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #0x30] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x26 + mov r3, #0x16 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x17 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x14 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xc0 + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x2d + mov r2, #0x24 + mov r3, #0x16 + bl FUN_020030E8 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F930: .word 0x00001988 + + thumb_func_start MOD12_0222F934 +MOD12_0222F934: ; 0x0222F934 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222F938 +MOD12_0222F938: ; 0x0222F938 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x12 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x13 + mov r3, #4 + bl FUN_020068C8 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #0x2d + mov r2, #0x21 + mov r3, #0x16 + bl FUN_020030E8 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD12_0222F98C +MOD12_0222F98C: ; 0x0222F98C + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222F990 +MOD12_0222F990: ; 0x0222F990 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222F9BC + ldr r0, [r5, #0x50] + bl FUN_020038E4 + cmp r0, #0 + bne _0222F9C0 + ldr r0, [r5] + mov r1, #0x16 + bl MOD12_022314CC + ldr r0, [r5] + bl MOD12_0223150C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222F9C0 +_0222F9BC: + mov r0, #1 + pop {r3, r4, r5, pc} +_0222F9C0: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0222F9C4 +MOD12_0222F9C4: ; 0x0222F9C4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #0 + bne _0222FA10 + ldr r0, [r4] + bl FUN_020832EC + cmp r0, #1 + bne _0222F9DE + mov r1, #2 + b _0222F9E0 +_0222F9DE: + mov r1, #1 +_0222F9E0: + add r0, r4, #0 + add r0, #0xe9 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xea + strb r1, [r0] + add r0, r4, #0 + add r0, #0xeb + strb r1, [r0] + ldr r0, _0222FA34 ; =0x000004FC + add r1, r4, #0 + add r0, r4, r0 + add r4, #0xe2 + mov r2, #0xd + add r3, r4, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FA2E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222FA2E +_0222FA10: + ldr r0, _0222FA34 ; =0x000004FC + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222FA38 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FA2E + mov r0, #1 + pop {r3, r4, r5, pc} +_0222FA2E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222FA34: .word 0x000004FC +_0222FA38: .word 0x00000127 + + thumb_func_start MOD12_0222FA3C +MOD12_0222FA3C: ; 0x0222FA3C + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222FA74 + add r0, r3, #0 + add r0, #0xd8 + ldrb r0, [r0] + mov r2, #0 + add r0, r3, r0 + add r0, #0xd4 + ldrb r1, [r0] + add r0, r3, #0 + add r0, #0xe2 + strb r1, [r0] + ldr r0, _0222FA98 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FA92 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FA92 +_0222FA74: + ldr r0, _0222FA98 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FA9C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FA92 + mov r0, #1 + pop {r4, pc} +_0222FA92: + mov r0, #0 + pop {r4, pc} + nop +_0222FA98: .word 0x000004FC +_0222FA9C: .word 0x00000127 + + thumb_func_start MOD12_0222FAA0 +MOD12_0222FAA0: ; 0x0222FAA0 + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222FAE6 + add r1, r3, #0 + mov r0, #0 + add r1, #0xec + strb r0, [r1] + add r2, r0, #0 + add r1, r3, #0 + sub r2, #0x10 + add r1, #0xed + strb r2, [r1] + add r1, r3, #0 + mov r2, #0x10 + add r1, #0xee + strb r2, [r1] + add r1, r3, #0 + add r1, #0xf0 + strh r0, [r1] + ldr r0, _0222FB08 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0xe + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FB04 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FB04 +_0222FAE6: + ldr r0, _0222FB08 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FB0C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FB04 + mov r0, #1 + pop {r4, pc} +_0222FB04: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222FB08: .word 0x000004FC +_0222FB0C: .word 0x00000127 + + thumb_func_start MOD12_0222FB10 +MOD12_0222FB10: ; 0x0222FB10 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _0222FB58 ; =0x000004FC + bne _0222FB36 + add r0, r2, r0 + add r1, r2, #0 + mov r2, #0xf + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FB52 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FB52 +_0222FB36: + ldr r3, [r2] + ldr r4, _0222FB5C ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FB52 + mov r0, #1 + pop {r4, pc} +_0222FB52: + mov r0, #0 + pop {r4, pc} + nop +_0222FB58: .word 0x000004FC +_0222FB5C: .word 0x00000127 + + thumb_func_start MOD12_0222FB60 +MOD12_0222FB60: ; 0x0222FB60 + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _0222FBA8 ; =0x000004FC + bne _0222FB86 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #2 + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FBA2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FBA2 +_0222FB86: + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FBAC ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FBA2 + mov r0, #1 + pop {r4, pc} +_0222FBA2: + mov r0, #0 + pop {r4, pc} + nop +_0222FBA8: .word 0x000004FC +_0222FBAC: .word 0x00000127 + + thumb_func_start MOD12_0222FBB0 +MOD12_0222FBB0: ; 0x0222FBB0 + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0222FBC2 + cmp r0, #1 + beq _0222FC1C + b _0222FC36 +_0222FBC2: + add r0, r3, #0 + add r0, #0xd8 + ldrb r0, [r0] + cmp r0, #0 + beq _0222FBD6 + cmp r0, #1 + beq _0222FBE0 + cmp r0, #2 + beq _0222FBEA + b _0222FBF4 +_0222FBD6: + add r0, r3, #0 + mov r1, #3 + add r0, #0xe9 + strb r1, [r0] + b _0222FBFC +_0222FBE0: + add r0, r3, #0 + mov r1, #4 + add r0, #0xe9 + strb r1, [r0] + b _0222FBFC +_0222FBEA: + add r0, r3, #0 + mov r1, #5 + add r0, #0xe9 + strb r1, [r0] + b _0222FBFC +_0222FBF4: + add r0, r3, #0 + mov r1, #6 + add r0, #0xe9 + strb r1, [r0] +_0222FBFC: + add r0, r3, #0 + mov r1, #0 + add r0, #0xea + strb r1, [r0] + add r0, r3, #0 + add r0, #0xeb + strb r1, [r0] + add r0, r3, #0 + add r0, #0xe2 + ldrb r1, [r0] + add r0, r3, #0 + add r0, #0xe5 + strb r1, [r0] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222FC1C: + ldr r0, _0222FC58 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0xd + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FC54 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FC54 +_0222FC36: + ldr r0, _0222FC58 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FC5C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FC54 + mov r0, #1 + pop {r4, pc} +_0222FC54: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222FC58: .word 0x000004FC +_0222FC5C: .word 0x00000127 + + thumb_func_start MOD12_0222FC60 +MOD12_0222FC60: ; 0x0222FC60 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0222FC76 + cmp r0, #1 + beq _0222FCA0 + cmp r0, #2 + beq _0222FCBC + b _0222FCDE +_0222FC76: + add r1, r5, #0 + add r1, #0xe2 + ldrb r1, [r1] + ldr r0, [r5] + bl FUN_02083308 + add r1, r5, #0 + add r1, #0xe3 + strb r0, [r1] + add r1, r5, #0 + add r1, #0xe2 + ldrb r1, [r1] + ldr r0, [r5] + bl FUN_0208336C + add r1, r5, #0 + add r1, #0xe4 + strb r0, [r1] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222FCA0: + ldr r0, _0222FCE8 ; =0x000004FC + add r1, r5, #0 + add r0, r5, r0 + add r5, #0xe2 + mov r2, #6 + add r3, r5, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FCE2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FCE2 +_0222FCBC: + ldr r0, _0222FCE8 ; =0x000004FC + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222FCEC ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FCE2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FCE2 +_0222FCDE: + mov r0, #1 + pop {r3, r4, r5, pc} +_0222FCE2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222FCE8: .word 0x000004FC +_0222FCEC: .word 0x00000127 + + thumb_func_start MOD12_0222FCF0 +MOD12_0222FCF0: ; 0x0222FCF0 + ldrh r2, [r1] + cmp r2, #0 + bne _0222FD0A + add r2, r0, #0 + add r2, #0xd8 + ldrb r2, [r2] + add r0, #0xd8 + add r2, r2, #1 + strb r2, [r0] + ldrh r0, [r1] + add r0, r0, #1 + strh r0, [r1] + b _0222FD1C +_0222FD0A: + add r0, #0xd8 + ldrb r0, [r0] + cmp r0, #4 + blo _0222FD16 + mov r0, #1 + bx lr +_0222FD16: + mov r0, #2 + strh r0, [r1, #2] + bx lr +_0222FD1C: + mov r0, #0 + bx lr + + thumb_func_start MOD12_0222FD20 +MOD12_0222FD20: ; 0x0222FD20 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #3 + bhi _0222FDC8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222FD38: ; jump table + .short _0222FD40 - _0222FD38 - 2 ; case 0 + .short _0222FD62 - _0222FD38 - 2 ; case 1 + .short _0222FD84 - _0222FD38 - 2 ; case 2 + .short _0222FDAE - _0222FD38 - 2 ; case 3 +_0222FD40: + add r0, r3, #0 + ldr r1, _0222FDEC ; =0x000006E5 + add r0, #0xf2 + strh r1, [r0] + ldr r0, _0222FDF0 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0x10 + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FDE6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FDE6 +_0222FD62: + ldr r0, _0222FDF0 ; =0x000004FC + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _0222FDF4 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FDE6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FDE6 +_0222FD84: + ldr r1, [r3] + ldr r0, _0222FDF8 ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #2 + bne _0222FD92 + mov r1, #7 + b _0222FD94 +_0222FD92: + mov r1, #0 +_0222FD94: + add r0, r3, #0 + add r0, #0xe9 + strb r1, [r0] + add r0, r3, #0 + mov r1, #0 + add r0, #0xea + strb r1, [r0] + add r0, r3, #0 + add r0, #0xeb + strb r1, [r0] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222FDAE: + ldr r0, _0222FDF0 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0xd + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FDE6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FDE6 +_0222FDC8: + ldr r0, _0222FDF0 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FDF4 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FDE6 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222FDE6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222FDEC: .word 0x000006E5 +_0222FDF0: .word 0x000004FC +_0222FDF4: .word 0x00000127 +_0222FDF8: .word 0x00000121 + + thumb_func_start MOD12_0222FDFC +MOD12_0222FDFC: ; 0x0222FDFC + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _0222FE44 ; =0x000004FC + bne _0222FE22 + add r0, r2, r0 + add r1, r2, #0 + mov r2, #1 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FE3E + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FE3E +_0222FE22: + ldr r3, [r2] + ldr r4, _0222FE48 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FE3E + mov r0, #3 + pop {r4, pc} +_0222FE3E: + mov r0, #0 + pop {r4, pc} + nop +_0222FE44: .word 0x000004FC +_0222FE48: .word 0x00000127 + + thumb_func_start MOD12_0222FE4C +MOD12_0222FE4C: ; 0x0222FE4C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _022300E0 ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _022300E4 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _022300E8 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #0xa + mov r0, #3 + mov r1, #0x17 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _022300EC ; =0x00001BF4 + add r0, r4, #0 + mov r2, #0x17 + bl FUN_02006268 + ldr r2, _022300EC ; =0x00001BF4 + mov r1, #0 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0x17 + bl MOD12_022312D8 + str r0, [r5, #0x10] + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r5] + lsl r1, r1, #2 + str r5, [r0, r1] + ldr r2, [r5] + mov r3, #1 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r5] + str r0, [r5, #0x14] + add r0, r5, #0 + bl MOD12_022306F8 + mov r0, #0x17 + bl FUN_02002FD0 + add r1, r5, #0 + add r1, #0xa4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #1 + bl FUN_020038F0 + add r0, r5, #0 + add r0, #0xa4 + mov r2, #2 + ldr r0, [r0] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x17 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xa4 + mov r1, #1 + ldr r0, [r0] + lsl r2, r1, #9 + mov r3, #0x17 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xa4 + mov r2, #7 + ldr r0, [r0] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x17 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xa4 + mov r2, #2 + ldr r0, [r0] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x17 + bl FUN_02003008 + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + ldr r1, _022300F0 ; =0x0000110C + str r0, [r5, r1] + add r0, r5, #0 + mov r1, #1 + bl MOD12_0223EC7C + mov r0, #0x17 + bl FUN_02016B94 + str r0, [r5, #0x74] + mov r0, #0x40 + mov r1, #0x17 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r1, r5, #0 + ldr r0, [r5] + add r1, #0x14 + bl MOD12_0223B49C + ldr r1, _022300F4 ; =0x00001130 + str r0, [r5, r1] + ldr r0, [r5, #0x74] + bl MOD12_02230574 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x17 + bl FUN_02002C50 + mov r0, #0x17 + bl FUN_0200BB14 + ldr r1, _022300F8 ; =0x02244C18 + ldr r2, _022300FC ; =0x02244BD4 + mov r3, #0x20 + str r0, [r5, #0x6c] + bl FUN_0200BB6C + ldr r1, _02230100 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r5, #0x6c] + bl FUN_0200BB34 + str r0, [r5, #0x70] + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + ldr r2, _02230104 ; =0x02244C00 + bl FUN_0200BF60 + ldr r0, [r5, #0x6c] + bl FUN_0200BB68 + mov r2, #1 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r0, #0x17 + bl FUN_02006D98 + str r0, [r5, #0x58] + bl MOD12_022306F0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc1 + mov r3, #0x17 + bl FUN_0200A86C + add r1, r5, #0 + add r1, #0x98 + str r0, [r1] + mov r0, #0x17 + bl FUN_0200AA80 + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #0x17 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0xa0 + str r0, [r1] + mov r0, #9 + mov r1, #0x17 + bl FUN_02011744 + add r1, r5, #0 + add r1, #0xa8 + str r0, [r1] + add r0, r5, #0 + bl MOD12_022308F0 + add r0, r5, #0 + bl MOD12_022309D0 + add r0, r5, #0 + bl MOD12_022306A4 + add r0, r5, #0 + bl MOD12_02230750 + add r0, r5, #0 + bl MOD12_02230880 + ldr r0, _022300F4 ; =0x00001130 + mov r1, #0 + ldr r0, [r5, r0] + mov r2, #1 + add r3, r1, #0 + bl MOD12_0223B758 + add r0, r5, #0 + bl MOD12_0223C248 + add r0, r5, #0 + add r0, #0x14 + bl MOD12_0223D0CC + add r0, r5, #0 + bl MOD12_022309D8 + add r0, r5, #0 + bl MOD12_0223CAF8 + add r0, r5, #0 + bl MOD12_0223D55C + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x17 + str r1, [sp, #8] + mov r1, #0x11 + mov r2, #0x25 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _02230108 ; =MOD12_02230520 + ldr r2, _0223010C ; =0x00013880 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + ldr r0, _02230110 ; =0x00001154 + mov r1, #1 + strb r1, [r5, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _02230114 ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r5] + ldr r0, _02230118 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + mov r1, #0x39 + add r2, r1, #0 + ldr r0, _0223011C ; =0x04000050 + sub r2, #0x3f + bl G2x_SetBlendBrightness_ + ldr r0, _02230120 ; =0x000006E5 + bl FUN_020054C8 + ldr r0, _02230124 ; =MOD12_022303C0 + add r1, r5, #0 + bl FUN_02015F10 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022300E0: .word 0xFFFFE0FF +_022300E4: .word 0x04001000 +_022300E8: .word 0xFFFF1FFF +_022300EC: .word 0x00001BF4 +_022300F0: .word 0x0000110C +_022300F4: .word 0x00001130 +_022300F8: .word 0x02244C18 +_022300FC: .word 0x02244BD4 +_02230100: .word 0x00100010 +_02230104: .word 0x02244C00 +_02230108: .word MOD12_02230520 +_0223010C: .word 0x00013880 +_02230110: .word 0x00001154 +_02230114: .word 0x0000046F +_02230118: .word 0x00000171 +_0223011C: .word 0x04000050 +_02230120: .word 0x000006E5 +_02230124: .word MOD12_022303C0 + + thumb_func_start MOD12_02230128 +MOD12_02230128: ; 0x02230128 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _0223014A + cmp r0, #1 + beq _02230158 + cmp r0, #2 + beq _0223020E + b _0223021C +_0223014A: + bl FUN_0200E308 + cmp r0, #1 + bne _0223021C + mov r0, #1 + str r0, [r5] + b _0223021C +_02230158: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _022301CA + ldr r2, _02230224 ; =0x00001152 + ldr r1, _02230228 ; =0x00001BE8 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _0223022C ; =0x02244C60 + ldr r2, [r2, r3] + blx r2 + sub r1, r0, #1 + cmp r1, #1 + bhi _0223019C + cmp r0, #1 + bne _02230186 + ldr r0, _02230224 ; =0x00001152 + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0223018C +_02230186: + ldr r0, _02230230 ; =0x00001BEA + ldrh r1, [r4, r0] + ldr r0, _02230224 ; =0x00001152 +_0223018C: + strh r1, [r4, r0] + ldr r0, _02230228 ; =0x00001BE8 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _022301CA +_0223019C: + cmp r0, #3 + bne _022301CA + mov r0, #2 + str r0, [r5] + ldr r0, _02230228 ; =0x00001BE8 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x17 + mov r1, #0x1e + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0223021C +_022301CA: + ldr r0, _02230234 ; =0x00001158 + add r0, r4, r0 + bl MOD12_022410A0 + ldr r0, _02230234 ; =0x00001158 + add r1, r4, #0 + add r0, r4, r0 + bl MOD12_02241114 + ldr r0, _02230238 ; =0x00001BF0 + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0223021C + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x17 + mov r1, #0x1e + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0223021C +_0223020E: + bl FUN_0200E308 + cmp r0, #1 + bne _0223021C + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0223021C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_02230224: .word 0x00001152 +_02230228: .word 0x00001BE8 +_0223022C: .word 0x02244C60 +_02230230: .word 0x00001BEA +_02230234: .word 0x00001158 +_02230238: .word 0x00001BF0 + + thumb_func_start MOD12_0223023C +MOD12_0223023C: ; 0x0223023C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020133C8 + cmp r0, #0 + beq _02230254 + bl ErrorHandling +_02230254: + add r0, r4, #0 + bl MOD12_02230A40 + bl FUN_02012EAC + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CA1C + add r0, r4, #0 + bl MOD12_0223CB18 + add r0, r4, #0 + bl MOD12_0223D578 + add r0, r4, #0 + bl MOD12_0223DCC0 + add r0, r4, #0 + bl MOD12_02230808 + add r0, r4, #0 + bl MOD12_022308EC + add r0, r4, #0 + bl MOD12_022309CC + add r0, r4, #0 + bl MOD12_022309D4 + add r5, r4, #0 + mov r6, #0 + add r5, #0x78 +_02230296: + add r0, r5, #0 + bl FUN_02019178 + add r6, r6, #1 + add r5, #0x10 + cmp r6, #2 + blt _02230296 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x74] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x74] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x74] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x74] + bl MOD12_0223B474 + ldr r0, _022303B0 ; =0x00001130 + ldr r0, [r4, r0] + bl MOD12_0223B4C0 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl FUN_0200C398 + ldr r0, [r4, #0x6c] + bl FUN_0200BD04 + bl FUN_0201C29C + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C300 + ldr r0, [r4, #0x58] + bl FUN_020072E8 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_020117BC + mov r0, #2 + bl FUN_02002CF8 + ldr r0, _022303B4 ; =0x0000110C + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #1 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #2 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #3 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_02002FEC + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl FUN_0200AB18 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + bl FUN_0200A8B8 + ldr r0, [r4, #0x74] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #0x10] + bl MOD12_02231378 + bl FUN_0201CD04 + add r0, r7, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x17 + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + ldr r0, _022303B8 ; =SDK_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _022303BC ; =SDK_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022303B0: .word 0x00001130 +_022303B4: .word 0x0000110C +_022303B8: .word SDK_MODULE_08_ID +_022303BC: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_022303C0 +MOD12_022303C0: ; 0x022303C0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, _02230494 ; =0x00001134 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _02230450 + add r1, r0, #4 + add r3, r4, r1 + ldr r2, [r4, r1] + mov r5, #0 + ldr r1, [r3, #4] + add r2, r2, #1 + adc r1, r5 + add r0, r0, #4 + str r2, [r4, r0] + mov r0, #7 + str r1, [r3, #4] + bl FUN_02004F64 + ldr r1, _02230498 ; =0x00000AF8 + ldr r1, [r4, r1] + mul r0, r1 + ldr r1, _0223049C ; =0x00001388 + add r0, r0, r1 + lsl r1, r1, #1 + bl _u32_div_f + ldr r7, _022304A0 ; =0x0000114C + add r5, r0, #1 + add r1, r7, #0 + str r0, [r4, r7] + sub r1, #0x14 + ldr r2, [r4, r1] + add r1, r7, #0 + sub r1, #0x10 + add r0, r5, #0 + ldr r6, [r4, r1] + mov r3, #0 + add r1, r3, #0 + eor r1, r6 + eor r0, r2 + orr r0, r1 + beq _0223044C + sub r0, r7, #4 + ldr r0, [r4, r0] + cmp r0, #0x12 + bhi _02230430 + mov ip, r3 + mov r0, ip + sub r1, r5, r2 + sbc r0, r6 + mov r6, #0 + mov r2, #1 + sub r1, r2, r1 + sbc r6, r0 + bhs _02230440 +_02230430: + ldr r1, _022304A4 ; =0x00001138 + str r5, [r4, r1] + add r0, r1, #4 + str r3, [r4, r0] + mov r0, #0 + add r1, #0x10 + str r0, [r4, r1] + b _02230450 +_02230440: + sub r0, r7, #4 + ldr r0, [r4, r0] + add r1, r0, #1 + sub r0, r7, #4 + str r1, [r4, r0] + b _02230450 +_0223044C: + sub r0, r7, #4 + str r3, [r4, r0] +_02230450: + ldr r0, [r4, #0x58] + bl FUN_020081C4 + mov r6, #0 + add r5, r4, #0 +_0223045A: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _02230464 + bl FUN_021DD58C +_02230464: + add r6, r6, #1 + add r5, #0x10 + cmp r6, #4 + blt _0223045A + bl FUN_0201C30C + bl FUN_0200BC30 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_0200372C + ldr r0, [r4, #0x74] + bl FUN_0201AB60 + ldr r3, _022304A8 ; =0x027E0000 + ldr r1, _022304AC ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_02230494: .word 0x00001134 +_02230498: .word 0x00000AF8 +_0223049C: .word 0x00001388 +_022304A0: .word 0x0000114C +_022304A4: .word 0x00001138 +_022304A8: .word 0x027E0000 +_022304AC: .word 0x00003FF8 + + thumb_func_start MOD12_022304B0 +MOD12_022304B0: ; 0x022304B0 + push {r3, r4, r5, lr} + ldr r1, _0223051C ; =0x0000110C + add r5, r0, r1 + ldrb r1, [r5, #0x11] + cmp r1, #0 + beq _02230518 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + bl FUN_02003204 + add r4, r0, #0 + mov r2, #2 + ldr r0, [r5] + add r1, r4, #0 + lsl r2, r2, #8 + bl MIi_CpuCopy16 + ldrb r0, [r5, #0x10] + cmp r0, #1 + bne _02230518 + ldrh r0, [r5, #0xe] + add r1, r4, #0 + str r0, [sp] + ldrh r3, [r5, #8] + ldrh r2, [r5, #6] + ldr r0, [r5] + asr r3, r3, #8 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02003A30 + ldrh r3, [r5, #0xa] + ldrh r1, [r5, #8] + cmp r1, r3 + bne _022304FE + mov r0, #0 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_022304FE: + mov r0, #0xc + ldrsh r2, [r5, r0] + add r0, r1, r2 + cmp r2, #0 + ble _0223050C + cmp r0, r3 + bge _02230514 +_0223050C: + cmp r2, #0 + bge _02230516 + cmp r0, r3 + bgt _02230516 +_02230514: + add r0, r3, #0 +_02230516: + strh r0, [r5, #8] +_02230518: + pop {r3, r4, r5, pc} + nop +_0223051C: .word 0x0000110C + + thumb_func_start MOD12_02230520 +MOD12_02230520: ; 0x02230520 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD12_022304B0 + ldr r0, _0223056C ; =0x00001154 + ldrb r0, [r6, r0] + cmp r0, #1 + bne _02230562 + ldr r0, [r6, #0x58] + bl FUN_02006ED4 + mov r4, #0 + add r5, r6, #0 +_0223053C: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _02230546 + bl FUN_021DD518 +_02230546: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0223053C + bl FUN_02215A44 + ldr r0, [r6, #0x70] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _02230570 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_02230562: + ldr r1, [r6, #0x74] + mov r0, #0x17 + bl FUN_020335F0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223056C: .word 0x00001154 +_02230570: .word 0x04000540 + + thumb_func_start MOD12_02230574 +MOD12_02230574: ; 0x02230574 + push {r4, r5, lr} + sub sp, #0x8c + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _02230694 ; =0x02244C38 + add r3, sp, #0x10 + mov r2, #5 +_02230584: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02230584 + add r0, sp, #0x10 + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + ldr r5, _02230698 ; =0x02244BC4 + add r3, sp, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0223069C ; =0x02244C94 + add r3, sp, #0x38 + mov r2, #0xa +_022305E4: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022305E4 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _022306A0 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #2 + orr r0, r2 + strh r0, [r1] + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD12_0223B41C + add sp, #0x8c + pop {r4, r5, pc} + .align 2, 0 +_02230694: .word 0x02244C38 +_02230698: .word 0x02244BC4 +_0223069C: .word 0x02244C94 +_022306A0: .word 0x04000008 + + thumb_func_start MOD12_022306A4 +MOD12_022306A4: ; 0x022306A4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x74] + add r1, #0x78 + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + mov r0, #0xb + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + ldr r0, [r4, #0x74] + add r4, #0x88 + add r1, r4, #0 + mov r2, #1 + bl FUN_02019064 + add sp, #0x14 + pop {r3, r4, pc} + + thumb_func_start MOD12_022306F0 +MOD12_022306F0: ; 0x022306F0 + ldr r3, _022306F4 ; =0x02012CC9 + bx r3 + .align 2, 0 +_022306F4: .word 0x02012CC9 + + thumb_func_start MOD12_022306F8 +MOD12_022306F8: ; 0x022306F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + bne _02230706 + bl ErrorHandling +_02230706: + mov r4, #0xad + lsl r4, r4, #4 + mov r1, #0 + mov r2, #3 + add r6, r4, #5 +_02230710: + sub r3, r2, r1 + lsl r3, r3, #0x18 + add r0, r5, r1 + lsr r3, r3, #0x18 + strb r3, [r0, r4] + add r1, r1, #1 + strb r3, [r0, r6] + cmp r1, #4 + blt _02230710 + add r0, r5, #0 + bl MOD12_0223EE80 + mov r4, #0 + ldr r7, _0223074C ; =0x00000AB4 + add r6, r4, #0 +_0223072E: + ldr r0, [r5] + mov r1, #5 + ldr r0, [r0, r6] + mov r2, #0 + bl FUN_020671BC + bl MOD12_0223EE70 + add r1, r5, r4 + add r4, r4, #1 + add r6, r6, #4 + strb r0, [r1, r7] + cmp r4, #4 + blt _0223072E + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223074C: .word 0x00000AB4 + + thumb_func_start MOD12_02230750 +MOD12_02230750: ; 0x02230750 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _02230804 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, [r4, #0x6c] + ldr r3, [r4, #0x70] + bl FUN_0200C0DC + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223C320 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223C450 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223C668 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223C6DC + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C734 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CA44 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223CAB8 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223E2B8 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, r4, #0 + bl MOD12_0223E32C + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CB54 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223CBC8 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CD40 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223CDB4 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CDBC + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_02230804: .word 0x000080E9 + + thumb_func_start MOD12_02230808 +MOD12_02230808: ; 0x02230808 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x70] + bl MOD12_0223C324 + ldr r0, [r4, #0x70] + bl MOD12_0223C4E8 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C640 + ldr r0, [r4, #0x70] + bl MOD12_0223C6B8 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C710 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C878 + ldr r0, [r4, #0x70] + bl MOD12_0223CA94 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CADC + add r0, r4, #0 + bl MOD12_0223E38C + ldr r0, [r4, #0x70] + bl MOD12_0223E308 + ldr r0, [r4, #0x70] + bl MOD12_0223CBA4 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CC70 + ldr r0, [r4, #0x70] + bl MOD12_0223CD90 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CDB8 + ldr r0, [r4, #0x70] + bl MOD12_0223CE0C + ldr r0, [r4, #0x70] + ldr r1, _0223087C ; =0x000080E9 + bl FUN_0200C368 + pop {r4, pc} + .align 2, 0 +_0223087C: .word 0x000080E9 + + thumb_func_start MOD12_02230880 +MOD12_02230880: ; 0x02230880 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _022308E0 ; =0x000080EA + mov r1, #3 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, [r4, #0x6c] + ldr r3, [r4, #0x70] + bl FUN_0200C0DC + mov r0, #0x2e + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _022308E4 ; =0x000080EB + mov r1, #3 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, [r4, #0x6c] + ldr r3, [r4, #0x70] + bl FUN_0200C0DC + ldr r0, _022308E8 ; =0x00001130 + ldr r0, [r4, r0] + bl MOD12_0223B4E0 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_022308E0: .word 0x000080EA +_022308E4: .word 0x000080EB +_022308E8: .word 0x00001130 + + thumb_func_start MOD12_022308EC +MOD12_022308EC: ; 0x022308EC + bx lr + .align 2, 0 + + thumb_func_start MOD12_022308F0 +MOD12_022308F0: ; 0x022308F0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + mov r0, #0x2d + mov r1, #0xd + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + mov r0, #0x2d + mov r1, #0xe + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x1f + mov r3, #0x17 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x17 + bl FUN_020030E8 + ldr r1, [r5] + ldr r0, _022309C4 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #0x74] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0x26 + mov r3, #0x17 + bl FUN_020030E8 + add r0, r5, #0 + bl MOD12_0223E734 + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + bl FUN_020031FC + ldr r1, _022309C8 ; =0x0000110C + mov r2, #2 + ldr r1, [r5, r1] + lsl r2, r2, #8 + bl MIi_CpuCopy16 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_022309C4: .word 0x00001988 +_022309C8: .word 0x0000110C + + thumb_func_start MOD12_022309CC +MOD12_022309CC: ; 0x022309CC + bx lr + .align 2, 0 + + thumb_func_start MOD12_022309D0 +MOD12_022309D0: ; 0x022309D0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022309D4 +MOD12_022309D4: ; 0x022309D4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022309D8 +MOD12_022309D8: ; 0x022309D8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _022309E8 + bl ErrorHandling +_022309E8: + mov r1, #0x12 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r3, #0x12 + ldr r0, _02230A38 ; =MOD12_02230A60 + ldr r1, _02230A3C ; =MOD12_02230A7C + lsl r3, r3, #0xa + bl FUN_02012CDC + str r0, [r4, #0xc] + bl FUN_0201343C + add r2, r0, #0 + mov r0, #1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 + mov r0, #0x3d + mov r1, #3 + mov r2, #0x17 + bl FUN_0201318C + add r1, r0, #0 + ldr r0, [r4, #0xc] + mov r2, #0xa + mov r3, #1 + bl FUN_02013194 + add sp, #8 + pop {r4, pc} + nop +_02230A38: .word MOD12_02230A60 +_02230A3C: .word MOD12_02230A7C + + thumb_func_start MOD12_02230A40 +MOD12_02230A40: ; 0x02230A40 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020133E8 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02012DE4 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02230A60 +MOD12_02230A60: ; 0x02230A60 + push {r4, lr} + ldr r3, _02230A78 ; =0x021064B8 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_0201327C + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02230A78: .word 0x021064B8 + + thumb_func_start MOD12_02230A7C +MOD12_02230A7C: ; 0x02230A7C + push {r4, lr} + ldr r3, _02230A94 ; =0x021064C0 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_020132BC + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02230A94: .word 0x021064C0 + + thumb_func_start MOD12_02230A98 +MOD12_02230A98: ; 0x02230A98 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230AE4 ; =0x00001158 + bne _02230AC2 + mov r3, #0xad + lsl r3, r3, #4 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xa + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230ADE + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230ADE +_02230AC2: + ldr r4, _02230AE8 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230ADE + mov r0, #1 + pop {r3, r4, r5, pc} +_02230ADE: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230AE4: .word 0x00001158 +_02230AE8: .word 0x00000127 + + thumb_func_start MOD12_02230AEC +MOD12_02230AEC: ; 0x02230AEC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02230AFE + cmp r0, #1 + beq _02230B52 + b _02230B74 +_02230AFE: + ldr r0, _02230B7C ; =0x00000B37 + mov r2, #0 + strb r2, [r5, r0] + add r1, r0, #1 + strb r2, [r5, r1] + ldr r2, [r5] + ldr r1, _02230B80 ; =0x00000123 + sub r0, r0, #7 + ldrb r2, [r2, r1] + strb r2, [r5, r0] + ldr r2, [r5] + sub r0, r1, #3 + ldrb r0, [r2, r0] + bl MOD12_0223E464 + ldr r1, _02230B84 ; =0x00000B34 + strb r0, [r5, r1] + ldr r0, [r5] + bl FUN_020832EC + cmp r0, #1 + bne _02230B2E + mov r1, #2 + b _02230B30 +_02230B2E: + mov r1, #1 +_02230B30: + ldr r0, _02230B88 ; =0x00000B36 + mov r3, #0xb + strb r1, [r5, r0] + ldr r0, _02230B8C ; =0x00001158 + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #9 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230B78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230B78 +_02230B52: + ldr r0, _02230B8C ; =0x00001158 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02230B90 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230B78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230B78 +_02230B74: + mov r0, #1 + pop {r3, r4, r5, pc} +_02230B78: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02230B7C: .word 0x00000B37 +_02230B80: .word 0x00000123 +_02230B84: .word 0x00000B34 +_02230B88: .word 0x00000B36 +_02230B8C: .word 0x00001158 +_02230B90: .word 0x00000127 + + thumb_func_start MOD12_02230B94 +MOD12_02230B94: ; 0x02230B94 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230BDC ; =0x00001158 + bne _02230BBA + add r0, r2, r0 + add r1, r2, #0 + mov r2, #3 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _02230BD6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230BD6 +_02230BBA: + ldr r3, [r2] + ldr r4, _02230BE0 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230BD6 + mov r0, #1 + pop {r4, pc} +_02230BD6: + mov r0, #0 + pop {r4, pc} + nop +_02230BDC: .word 0x00001158 +_02230BE0: .word 0x00000127 + + thumb_func_start MOD12_02230BE4 +MOD12_02230BE4: ; 0x02230BE4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #4 + bls _02230BF2 + b _02230D7C +_02230BF2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02230BFE: ; jump table + .short _02230C08 - _02230BFE - 2 ; case 0 + .short _02230CFE - _02230BFE - 2 ; case 1 + .short _02230D1C - _02230BFE - 2 ; case 2 + .short _02230D3E - _02230BFE - 2 ; case 3 + .short _02230D5A - _02230BFE - 2 ; case 4 +_02230C08: + mov r0, #0x12 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _02230C18 + cmp r0, #1 + bne _02230C1C +_02230C18: + mov r1, #0 + b _02230C1E +_02230C1C: + mov r1, #1 +_02230C1E: + mov r0, #0xc + add r6, r1, #0 + mul r6, r0 + ldr r0, _02230D84 ; =0x02244BE8 + add r1, r0, r6 + mov r0, #0xab + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02230D88 ; =0x02244BEA + ldrh r7, [r0, r6] + ldr r0, _02230D8C ; =0x0112A880 + add r1, r7, #0 + bl _s32_div_f + ldr r1, _02230D90 ; =0x00000AE8 + mov r3, #0 + str r0, [r4, r1] + ldr r0, [r4, r1] + ldr r2, _02230D94 ; =0x00001388 + lsl r0, r0, #4 + mov ip, r3 + mov r1, ip + add r0, r0, r2 + adc r1, r3 + lsl r2, r2, #1 + bl _ll_udiv + ldr r1, _02230D98 ; =0x00000AEC + str r0, [r4, r1] + add r0, r1, #0 + add r0, #0x10 + strh r7, [r4, r0] + sub r0, r1, #4 + ldr r2, [r4, r0] + ldr r0, _02230D9C ; =0x02244BEE + add r3, r2, #0 + ldrb r0, [r0, r6] + mul r3, r0 + add r0, r1, #4 + str r3, [r4, r0] + sub r0, r1, #4 + ldr r2, [r4, r0] + ldr r0, _02230DA0 ; =0x02244BEF + add r3, r2, #0 + ldrb r0, [r0, r6] + mul r3, r0 + add r0, r1, #0 + add r0, #8 + str r3, [r4, r0] + sub r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #0x30 + bl _u32_div_f + ldr r1, _02230DA4 ; =0x00000AF8 + str r0, [r4, r1] + ldr r0, _02230DA8 ; =0x02244BED + ldrb r2, [r0, r6] + add r0, r1, #6 + strb r2, [r4, r0] + ldr r0, _02230D84 ; =0x02244BE8 + ldrh r2, [r0, r6] + add r0, r1, #0 + sub r0, #0x14 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x48 + ldr r0, [r4, r0] + add r2, r1, #0 + ldrh r3, [r0] + add r2, #0x2c + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #2] + add r2, #0x2e + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #4] + add r2, #0x30 + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #6] + add r2, #0x32 + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #8] + add r2, #0x34 + strh r3, [r4, r2] + ldrh r2, [r0, #0xa] + add r0, r1, #0 + add r0, #0x36 + strh r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x10 + ldr r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xc + ldr r2, [r4, r0] + add r0, r1, #0 + add r0, #0x14 + str r2, [r4, r0] + add r0, r1, #4 + ldrh r0, [r4, r0] + add r1, #0x18 + strh r0, [r4, r1] + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230CFE: + ldr r0, _02230DAC ; =0x00001158 + mov r3, #0xad + lsl r3, r3, #4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0xa + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D1C: + ldr r0, _02230DAC ; =0x00001158 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02230DB0 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D3E: + ldr r0, _02230DAC ; =0x00001158 + mov r2, #0xb + lsl r3, r2, #8 + add r0, r4, r0 + add r1, r4, #0 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D5A: + ldr r0, _02230DAC ; =0x00001158 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02230DB0 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D7C: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02230D80: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02230D84: .word 0x02244BE8 +_02230D88: .word 0x02244BEA +_02230D8C: .word 0x0112A880 +_02230D90: .word 0x00000AE8 +_02230D94: .word 0x00001388 +_02230D98: .word 0x00000AEC +_02230D9C: .word 0x02244BEE +_02230DA0: .word 0x02244BEF +_02230DA4: .word 0x00000AF8 +_02230DA8: .word 0x02244BED +_02230DAC: .word 0x00001158 +_02230DB0: .word 0x00000127 + + thumb_func_start MOD12_02230DB4 +MOD12_02230DB4: ; 0x02230DB4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrh r0, [r1] + str r1, [sp] + cmp r0, #0 + bne _02230E0E + ldr r1, _02230E18 ; =0x00000AD4 + mov r4, #0 + ldrb r0, [r5, r1] + add r2, r5, r0 + sub r0, r1, #4 + ldrb r0, [r2, r0] + add r1, #0x2c + strb r0, [r5, r1] + ldr r0, _02230E1C ; =0x00000AD5 + add r1, r0, #0 + add r1, #0x2d +_02230DD6: + add r3, r5, r4 + ldrb r2, [r3, r0] + add r4, r4, #1 + cmp r4, #4 + strb r2, [r3, r1] + blt _02230DD6 + ldr r1, [r5] + ldr r0, _02230E20 ; =0x00000127 + ldrb r6, [r1, r0] + cmp r6, #4 + bge _02230E02 + lsl r0, r6, #2 + ldr r7, _02230E24 ; =0x00000B14 + add r4, r5, r0 +_02230DF2: + ldr r0, [r5] + bl FUN_02082878 + str r0, [r4, r7] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02230DF2 +_02230E02: + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _02230E12 +_02230E0E: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02230E12: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02230E18: .word 0x00000AD4 +_02230E1C: .word 0x00000AD5 +_02230E20: .word 0x00000127 +_02230E24: .word 0x00000B14 + + thumb_func_start MOD12_02230E28 +MOD12_02230E28: ; 0x02230E28 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230E74 ; =0x00001158 + bne _02230E52 + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #7 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230E6E + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230E6E +_02230E52: + ldr r4, _02230E78 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230E6E + mov r0, #1 + pop {r3, r4, r5, pc} +_02230E6E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230E74: .word 0x00001158 +_02230E78: .word 0x00000127 + + thumb_func_start MOD12_02230E7C +MOD12_02230E7C: ; 0x02230E7C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230EC8 ; =0x00001158 + bne _02230EA6 + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #5 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230EC2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230EC2 +_02230EA6: + ldr r4, _02230ECC ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230EC2 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230EC2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230EC8: .word 0x00001158 +_02230ECC: .word 0x00000127 + + thumb_func_start MOD12_02230ED0 +MOD12_02230ED0: ; 0x02230ED0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230F1C ; =0x00001158 + bne _02230EFA + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #8 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230F16 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230F16 +_02230EFA: + ldr r4, _02230F20 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230F16 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230F16: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230F1C: .word 0x00001158 +_02230F20: .word 0x00000127 + + thumb_func_start MOD12_02230F24 +MOD12_02230F24: ; 0x02230F24 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _02230F76 + ldr r1, _02230F98 ; =0x00000AD4 + ldrb r0, [r5, r1] + cmp r0, #3 + blo _02230F3C + mov r0, #1 + pop {r3, r4, r5, pc} +_02230F3C: + add r0, r1, #2 + ldrb r0, [r5, r0] + add r1, #0x5c + strb r0, [r5, r1] + mov r0, #0x12 + ldr r1, [r5] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + bl MOD12_0223E464 + ldr r3, _02230F9C ; =0x00000B34 + mov r1, #0 + strb r0, [r5, r3] + add r0, r3, #2 + strb r1, [r5, r0] + ldr r0, _02230FA0 ; =0x00001158 + sub r3, #0x34 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #6 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230F94 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230F94 +_02230F76: + ldr r4, _02230FA4 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + ldr r0, _02230FA0 ; =0x00001158 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230F94 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230F94: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02230F98: .word 0x00000AD4 +_02230F9C: .word 0x00000B34 +_02230FA0: .word 0x00001158 +_02230FA4: .word 0x00000127 + + thumb_func_start MOD12_02230FA8 +MOD12_02230FA8: ; 0x02230FA8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02230FBE + cmp r0, #1 + beq _02230FE8 + cmp r0, #2 + beq _02231006 + b _02231028 +_02230FBE: + ldr r0, _0223104C ; =0x00000AD5 + ldr r1, _0223104C ; =0x00000AD5 + ldrb r7, [r3, r0] + mov r6, #0 + add r0, r0, #1 +_02230FC8: + add r5, r3, r6 + ldrb r2, [r5, r0] + add r6, r6, #1 + cmp r6, #3 + strb r2, [r5, r1] + blt _02230FC8 + ldr r0, _02231050 ; =0x00000AD8 + strb r7, [r3, r0] + sub r1, r0, #4 + ldrb r1, [r3, r1] + sub r0, r0, #4 + add r1, r1, #1 + strb r1, [r3, r0] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_02230FE8: + ldr r0, _02231054 ; =0x00001158 + mov r5, #0xad + lsl r5, r5, #4 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #0xa + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _02231048 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02231048 +_02231006: + ldr r0, _02231054 ; =0x00001158 + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _02231058 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _02231048 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02231048 +_02231028: + ldr r1, _0223105C ; =0x00000AD4 + ldrb r0, [r3, r1] + cmp r0, #4 + bhs _02231044 + add r0, r1, #0 + add r0, #0x2d + ldrb r0, [r3, r0] + add r1, #0x2d + add r0, r0, #1 + strb r0, [r3, r1] + mov r0, #4 + strh r0, [r4, #2] + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_02231044: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02231048: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223104C: .word 0x00000AD5 +_02231050: .word 0x00000AD8 +_02231054: .word 0x00001158 +_02231058: .word 0x00000127 +_0223105C: .word 0x00000AD4 + + thumb_func_start MOD12_02231060 +MOD12_02231060: ; 0x02231060 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02231072 + cmp r0, #1 + beq _02231090 + b _022310B2 +_02231072: + ldr r0, _022310BC ; =0x00001158 + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xc + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022310B6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022310B6 +_02231090: + ldr r0, _022310BC ; =0x00001158 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _022310C0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _022310B6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022310B6 +_022310B2: + mov r0, #1 + pop {r3, r4, r5, pc} +_022310B6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022310BC: .word 0x00001158 +_022310C0: .word 0x00000127 + + thumb_func_start MOD12_022310C4 +MOD12_022310C4: ; 0x022310C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp] + ldrh r0, [r1] + str r1, [sp, #4] + cmp r0, #0 + beq _022310DE + cmp r0, #1 + beq _022311D4 + cmp r0, #2 + bne _022310DC + b _022311FA +_022310DC: + b _02231222 +_022310DE: + mov r1, #0 + mov r6, #0x4b + ldr r2, [sp] + ldr r5, _02231230 ; =0x00000ADA + add r3, r1, #0 + lsl r6, r6, #2 +_022310EA: + ldr r4, [sp] + ldrsh r0, [r2, r5] + ldr r4, [r4] + add r1, r1, #1 + add r4, r4, r3 + strh r0, [r4, r6] + add r2, r2, #2 + add r3, #0xc + cmp r1, #4 + blt _022310EA + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0] + add r2, sp, #0x1c + bl MOD12_022435E4 + ldr r0, [sp] + mov r1, #1 + ldr r0, [r0] + add r2, sp, #0x14 + bl MOD12_022435E4 + mov r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x1c + add r4, sp, #0xc + add r5, sp, #8 + add r7, r6, #0 +_02231122: + mov r0, #0 + ldrsh r1, [r3, r0] + ldrsh r0, [r2, r7] + strb r6, [r5] + add r6, r6, #1 + add r0, r1, r0 + strh r0, [r4] + add r2, r2, #2 + add r3, r3, #2 + add r4, r4, #2 + add r5, r5, #1 + cmp r6, #4 + blt _02231122 + mov r6, #0 + sub r7, r6, #2 +_02231140: + mov r3, #3 + cmp r6, #3 + bge _02231172 + add r4, sp, #0x10 + add r5, sp, #8 + add r4, #2 + add r5, #3 +_0223114E: + mov r0, #0 + ldrsh r0, [r4, r0] + ldrsh r1, [r4, r7] + cmp r1, r0 + bge _02231168 + strh r1, [r4] + sub r1, r4, #2 + strh r0, [r1] + sub r0, r5, #1 + ldrb r2, [r5] + ldrb r1, [r0] + strb r1, [r5] + strb r2, [r0] +_02231168: + sub r3, r3, #1 + sub r4, r4, #2 + sub r5, r5, #1 + cmp r3, r6 + bgt _0223114E +_02231172: + add r6, r6, #1 + cmp r6, #3 + blt _02231140 + ldr r1, _02231234 ; =0x00000172 + mov r4, #0 + add r3, sp, #8 +_0223117E: + ldr r0, [sp] + ldrb r2, [r3] + ldr r0, [r0] + add r3, r3, #1 + add r0, r0, r4 + add r4, r4, #1 + strb r2, [r0, r1] + cmp r4, #4 + blt _0223117E + ldr r2, _02231238 ; =0x00000B37 + ldr r1, [sp] + mov r0, #0 + strb r0, [r1, r2] + add r3, r2, #1 + strb r0, [r1, r3] + ldr r1, [r1] + ldr r4, _02231234 ; =0x00000172 + sub r3, r2, #7 + ldrb r5, [r1, r4] + ldr r1, [sp] + sub r4, #0x51 + strb r5, [r1, r3] + ldr r1, [r1] + ldrb r1, [r1, r4] + cmp r1, #0 + beq _022311BA + cmp r1, #1 + beq _022311BA + cmp r1, #2 + bne _022311C4 +_022311BA: + ldr r1, _0223123C ; =0x00000B36 + ldr r0, [sp] + mov r2, #6 + strb r2, [r0, r1] + b _022311CA +_022311C4: + ldr r1, [sp] + sub r2, r2, #1 + strb r0, [r1, r2] +_022311CA: + ldr r0, [sp, #4] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] +_022311D4: + ldr r1, _02231240 ; =0x00001158 + ldr r0, [sp] + mov r4, #0xb + add r0, r0, r1 + ldr r1, [sp] + lsl r4, r4, #8 + add r3, r1, #0 + mov r2, #9 + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _02231228 + ldr r0, [sp, #4] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] + b _02231228 +_022311FA: + ldr r0, [sp] + ldr r4, _02231244 ; =0x00000127 + ldr r3, [r0] + ldr r1, _02231240 ; =0x00001158 + sub r2, r4, #4 + add r0, r0, r1 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02231228 + ldr r0, [sp, #4] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] + b _02231228 +_02231222: + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02231228: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02231230: .word 0x00000ADA +_02231234: .word 0x00000172 +_02231238: .word 0x00000B37 +_0223123C: .word 0x00000B36 +_02231240: .word 0x00001158 +_02231244: .word 0x00000127 + + thumb_func_start MOD12_02231248 +MOD12_02231248: ; 0x02231248 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0223125A + cmp r0, #1 + beq _0223125E + b _0223128E +_0223125A: + add r0, r0, #1 + strh r0, [r4] +_0223125E: + ldr r3, _022312B0 ; =0x00000172 + mov r0, #0 + add r1, sp, #0 +_02231264: + ldr r5, [r2] + add r5, r5, r0 + ldrb r5, [r5, r3] + add r0, r0, #1 + strb r5, [r1] + add r1, r1, #1 + cmp r0, #4 + blt _02231264 + ldr r0, _022312B4 ; =0x00001158 + add r1, r2, #0 + add r0, r2, r0 + mov r2, #4 + add r3, sp, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _022312AC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022312AC +_0223128E: + ldr r0, _022312B4 ; =0x00001158 + ldr r3, [r2] + ldr r4, _022312B8 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022312AC + mov r0, #3 + pop {r3, r4, r5, pc} +_022312AC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022312B0: .word 0x00000172 +_022312B4: .word 0x00001158 +_022312B8: .word 0x00000127 + + thumb_func_start MOD12_022312BC +MOD12_022312BC: ; 0x022312BC + push {r3, lr} + ldr r0, _022312D0 ; =SDK_MODULE_08_ID + mov r1, #2 + bl HandleLoadOverlay + ldr r0, _022312D4 ; =SDK_MODULE_17_ID + mov r1, #2 + bl HandleLoadOverlay + pop {r3, pc} + .align 2, 0 +_022312D0: .word SDK_MODULE_08_ID +_022312D4: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_022312D8 +MOD12_022312D8: ; 0x022312D8 + push {r3, lr} + sub sp, #8 + mov r2, #2 + ldr r1, _022312F0 ; =MOD12_022312F4 + str r2, [sp] + str r1, [sp, #4] + mov r1, #0 + add r3, r1, #0 + bl FUN_02022318 + add sp, #8 + pop {r3, pc} + .align 2, 0 +_022312F0: .word MOD12_022312F4 + + thumb_func_start MOD12_022312F4 +MOD12_022312F4: ; 0x022312F4 + push {r3, lr} + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r0, _02231360 ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + add r0, #0x58 + ldrh r2, [r0] + ldr r1, _02231364 ; =0xFFFFCFFD + and r2, r1 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _02231368 ; =0x0000CFFB + and r3, r2 + strh r3, [r0] + ldrh r3, [r0] + sub r2, #0x1c + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl G3X_SetFog + mov r0, #0 + ldr r2, _0223136C ; =0x00007FFF + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _02231370 ; =0xBFFF0000 + ldr r0, _02231374 ; =0x04000580 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_02231360: .word 0x04000008 +_02231364: .word 0xFFFFCFFD +_02231368: .word 0x0000CFFB +_0223136C: .word 0x00007FFF +_02231370: .word 0xBFFF0000 +_02231374: .word 0x04000580 + + thumb_func_start MOD12_02231378 +MOD12_02231378: ; 0x02231378 + ldr r3, _0223137C ; =0x020223BD + bx r3 + .align 2, 0 +_0223137C: .word 0x020223BD + + thumb_func_start MOD12_02231380 +MOD12_02231380: ; 0x02231380 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + str r2, [sp, #0x20] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x8c] + mov r2, #0 + str r3, [sp, #0x24] + ldr r5, [sp, #0x88] + ldr r4, [sp, #0xa0] + bl FUN_02002E14 + add r7, r0, #0 + asr r1, r7, #2 + lsr r1, r1, #0x1d + add r1, r7, r1 + asr r6, r1, #3 + mov r1, #8 + bl FX_ModS32 + cmp r0, #0 + beq _022313B0 + add r6, r6, #1 +_022313B0: + add r0, sp, #0x34 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + lsl r2, r6, #0x18 + ldr r0, [sp, #0x1c] + add r1, sp, #0x34 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x94] + ldr r1, [sp, #0x90] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x8c] + add r0, sp, #0x34 + str r3, [sp, #0x14] + bl FUN_0201BE3C + ldr r2, [sp, #0x18] + add r0, sp, #0x34 + mov r1, #1 + bl FUN_02011898 + mov r1, #1 + add r2, r1, #0 + add r3, sp, #0x28 + bl FUN_0201D568 + ldr r0, [sp, #0xa8] + cmp r0, #1 + bne _02231408 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r0, r0, #1 + sub r4, r4, r0 +_02231408: + ldr r0, [sp, #0x24] + str r0, [sp, #0x44] + add r0, sp, #0x34 + str r0, [sp, #0x48] + ldr r0, [sp, #0x20] + bl FUN_0200CA40 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x9c] + bl FUN_0200C334 + str r0, [sp, #0x50] + mov r0, #0 + str r0, [sp, #0x54] + ldr r0, [sp, #0x2c] + str r4, [sp, #0x5c] + str r0, [sp, #0x58] + ldr r0, [sp, #0xa4] + sub r0, #8 + str r0, [sp, #0x60] + ldr r0, [sp, #0xac] + str r0, [sp, #0x64] + ldr r0, [sp, #0xb0] + str r0, [sp, #0x68] + mov r0, #1 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x18] + str r0, [sp, #0x70] + add r0, sp, #0x44 + bl FUN_020117E8 + ldr r1, [sp, #0x98] + add r6, r0, #0 + cmp r1, #0 + beq _02231454 + bl FUN_02011A90 +_02231454: + ldr r2, [sp, #0xa4] + add r0, r6, #0 + add r1, r4, #0 + sub r2, #8 + bl FUN_020118C4 + add r0, sp, #0x34 + bl FUN_02019178 + str r6, [r5] + add r3, sp, #0x28 + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + strh r7, [r5, #0x10] + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223147C +MOD12_0223147C: ; 0x0223147C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02011870 + add r0, r4, #4 + bl FUN_0201D5E8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02231490 +MOD12_02231490: ; 0x02231490 + cmp r3, #1 + bne _0223149A + ldrh r3, [r0, #0x10] + lsr r3, r3, #1 + sub r1, r1, r3 +_0223149A: + ldr r3, _022314A4 ; =0x020118C5 + ldr r0, [r0] + sub r2, #8 + bx r3 + nop +_022314A4: .word 0x020118C5 + + thumb_func_start MOD12_022314A8 +MOD12_022314A8: ; 0x022314A8 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r3, r1, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0xc2 + 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} + + thumb_func_start MOD12_022314CC +MOD12_022314CC: ; 0x022314CC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, r1, #0 + ldr r1, _02231504 ; =0x00000122 + ldrb r1, [r5, r1] + bl MOD12_0224473C + add r7, r0, #0 + mov r6, #0 + add r4, r5, #0 +_022314E0: + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r1, r7, #0 + bl MOD12_02244710 + ldr r1, _02231508 ; =0x0000012A + add r6, r6, #1 + strh r0, [r4, r1] + add r5, r5, #4 + add r4, #0xc + cmp r6, #4 + blt _022314E0 + add r0, r7, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02231504: .word 0x00000122 +_02231508: .word 0x0000012A + + thumb_func_start MOD12_0223150C +MOD12_0223150C: ; 0x0223150C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + ldr r4, [sp] + mov r0, #0 + str r0, [sp, #0x10] + add r0, r4, #0 + str r0, [sp, #4] +_0223151C: + ldr r0, [r4] + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + mov r6, #0x64 + add r5, r0, #0 + add r0, r6, #0 + ldr r1, [sp] + add r0, #0xbb + ldrb r0, [r1, r0] + cmp r0, #4 + bls _02231538 + b _022316AA +_02231538: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02231544: ; jump table + .short _0223154E - _02231544 - 2 ; case 0 + .short _02231594 - _02231544 - 2 ; case 1 + .short _022315DA - _02231544 - 2 ; case 2 + .short _02231620 - _02231544 - 2 ; case 3 + .short _02231666 - _02231544 - 2 ; case 4 +_0223154E: + ldr r0, [r4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa0 + cmp r5, r0 + beq _0223158C + add r0, r6, #0 + add r0, #0xa1 + cmp r5, r0 + beq _02231590 + add r0, r6, #0 + add r0, #0xa4 + cmp r5, r0 + beq _02231590 + b _022316B2 +_0223158C: + mov r6, #0x6e + b _022316B2 +_02231590: + mov r6, #0x69 + b _022316B2 +_02231594: + ldr r0, [r4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa0 + cmp r5, r0 + beq _022315D6 + add r0, r6, #0 + add r0, #0xa1 + cmp r5, r0 + beq _022315D2 + add r0, r6, #0 + add r0, #0xa2 + cmp r5, r0 + beq _022315D6 + b _022316B2 +_022315D2: + mov r6, #0x6e + b _022316B2 +_022315D6: + mov r6, #0x69 + b _022316B2 +_022315DA: + ldr r0, [r4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa1 + cmp r5, r0 + beq _0223161C + add r0, r6, #0 + add r0, #0xa2 + cmp r5, r0 + beq _02231618 + add r0, r6, #0 + add r0, #0xa3 + cmp r5, r0 + beq _0223161C + b _022316B2 +_02231618: + mov r6, #0x6e + b _022316B2 +_0223161C: + mov r6, #0x69 + b _022316B2 +_02231620: + ldr r0, [r4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa2 + cmp r5, r0 + beq _02231662 + add r0, r6, #0 + add r0, #0xa3 + cmp r5, r0 + beq _0223165E + add r0, r6, #0 + add r0, #0xa4 + cmp r5, r0 + beq _02231662 + b _022316B2 +_0223165E: + mov r6, #0x6e + b _022316B2 +_02231662: + mov r6, #0x69 + b _022316B2 +_02231666: + ldr r0, [r4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa0 + cmp r5, r0 + beq _022316A6 + add r0, r6, #0 + add r0, #0xa3 + cmp r5, r0 + beq _022316A6 + add r0, r6, #0 + add r0, #0xa4 + cmp r5, r0 + bne _022316B2 + mov r6, #0x6e + b _022316B2 +_022316A6: + mov r6, #0x69 + b _022316B2 +_022316AA: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_022316B2: + ldr r0, [r4] + mov r1, #0x18 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #8] + add r1, r1, r7 + add r1, r0, r1 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + ldr r0, [sp, #0xc] + add r1, r0, r1 + add r0, r1, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + mov r1, #0x4a + ldr r2, [sp, #4] + lsl r1, r1, #2 + strh r0, [r2, r1] + add r0, r2, #0 + add r0, #0xc + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #4 + bge _022316F2 + b _0223151C +_022316F2: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_022316F8 +MOD12_022316F8: ; 0x022316F8 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r6, r2, #0 + mov r2, #0 + mvn r2, r2 + add r5, r0, #0 + add r4, r1, #0 + cmp r3, r2 + beq _0223171A + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + str r3, [sp, #8] + mov r2, #0x2e + mov r3, #0x49 + bl FUN_0200C00C +_0223171A: + mov r1, #0 + ldr r0, [sp, #0x28] + mvn r1, r1 + cmp r0, r1 + beq _02231744 + mov r1, #0x2e + str r1, [sp] + mov r1, #7 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #1 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #2 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC +_02231744: + mov r0, #0 + ldr r1, [sp, #0x2c] + mvn r0, r0 + cmp r1, r0 + beq _02231760 + mov r0, #1 + str r0, [sp] + str r1, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0x4a + bl FUN_0200C124 +_02231760: + mov r0, #0 + ldr r1, [sp, #0x30] + mvn r0, r0 + cmp r1, r0 + beq _0223177C + mov r0, #1 + str r0, [sp] + str r1, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0x4b + bl FUN_0200C13C +_0223177C: + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02231780 +MOD12_02231780: ; 0x02231780 + push {r4, r5, r6, lr} + add r4, r2, #0 + mov r2, #0 + mvn r2, r2 + add r5, r0, #0 + add r6, r3, #0 + cmp r1, r2 + beq _02231794 + bl FUN_0200C358 +_02231794: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _022317A4 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C368 +_022317A4: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _022317B4 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C378 +_022317B4: + mov r0, #0 + ldr r1, [sp, #0x10] + mvn r0, r0 + cmp r1, r0 + beq _022317C4 + add r0, r5, #0 + bl FUN_0200C388 +_022317C4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_022317C8 +MOD12_022317C8: ; 0x022317C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + ldr r5, _02231850 ; =0x02244D18 + str r2, [sp, #4] + str r0, [sp] + add r7, r1, #0 + add r4, sp, #8 + mov r2, #6 +_022317D8: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + bne _022317D8 + ldr r0, [r5] + ldr r5, _02231854 ; =0x02244CE8 + str r0, [r4] + ldr r0, [sp, #0x50] + ldr r4, [sp] + str r0, [sp, #0x20] + ldr r0, [sp, #0x54] + str r3, [sp, #0x1c] + str r0, [sp, #0x24] + ldr r0, [sp, #0x58] + mov r6, #0 + str r0, [sp, #0x28] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x14] + ldr r0, [sp, #0x60] + str r0, [sp, #0x10] + ldr r0, [sp, #0x64] + str r0, [sp, #0x34] +_02231804: + ldr r1, [sp, #4] + add r0, r7, #0 + add r2, sp, #8 + bl FUN_0200C154 + str r0, [r4] + mov r1, #0 + mov r2, #2 + ldrsh r1, [r5, r1] + ldrsh r2, [r5, r2] + bl FUN_0200C714 + ldrb r1, [r5, #6] + ldr r0, [r4] + bl FUN_0200C5C0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200C840 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0200C59C + add r6, r6, #1 + add r4, r4, #4 + add r5, #8 + cmp r6, #6 + blt _02231804 + ldr r0, _02231858 ; =MOD12_02231880 + ldr r1, [sp] + ldr r2, [sp, #0x68] + bl FUN_0200CA44 + ldr r1, [sp] + str r0, [r1, #0x18] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02231850: .word 0x02244D18 +_02231854: .word 0x02244CE8 +_02231858: .word MOD12_02231880 + + thumb_func_start MOD12_0223185C +MOD12_0223185C: ; 0x0223185C + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02231864: + ldr r0, [r5] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02231864 + ldr r0, [r6, #0x18] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r6, #0x18] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02231880 +MOD12_02231880: ; 0x02231880 + push {r3, r4, r5, r6, r7, lr} + ldr r4, _022318A0 ; =0x02244CE8 + add r5, r1, #0 + mov r6, #0 + mov r7, #4 +_0223188A: + ldrsh r1, [r4, r7] + ldr r0, [r5] + bl FUN_0200C8BC + add r6, r6, #1 + add r4, #8 + add r5, r5, #4 + cmp r6, #6 + blt _0223188A + pop {r3, r4, r5, r6, r7, pc} + nop +_022318A0: .word 0x02244CE8 + + thumb_func_start MOD12_022318A4 +MOD12_022318A4: ; 0x022318A4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov r1, #0x14 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r5, [r4, #4] + str r6, [r4, #0xc] + ldr r0, [sp, #0x18] + strb r7, [r4, #0x10] + strb r0, [r4, #0x12] + ldr r0, _022318D8 ; =MOD12_0223190C + ldr r2, [sp, #0x1c] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022318D8: .word MOD12_0223190C + + thumb_func_start MOD12_022318DC +MOD12_022318DC: ; 0x022318DC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _022318EA + bl ErrorHandling +_022318EA: + ldr r0, [r4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD12_022318F8 +MOD12_022318F8: ; 0x022318F8 + push {r3, lr} + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _02231908 + mov r0, #1 + pop {r3, pc} +_02231908: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD12_0223190C +MOD12_0223190C: ; 0x0223190C + push {r3, r4, lr} + sub sp, #4 + mov r0, #1 + add r4, r1, #0 + bl FUN_0200A344 + cmp r0, #0 + beq _02231972 + ldr r0, [r4, #8] + add r2, r0, #1 + str r2, [r4, #8] + ldrb r0, [r4, #0x11] + ldr r1, [r4, #0xc] + lsl r0, r0, #1 + ldrh r0, [r1, r0] + cmp r2, r0 + ble _02231972 + mov r0, #1 + str r0, [sp] + mov r0, #6 + mov r1, #0 + mov r2, #4 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, _02231978 ; =0x000005F8 + bl FUN_020054C8 + mov r0, #0 + str r0, [r4, #8] + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r1, [r4, #0x11] + ldrb r0, [r4, #0x10] + cmp r1, r0 + blo _02231972 + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _02231966 + add r0, r4, #0 + bl MOD12_022318DC + add sp, #4 + pop {r3, r4, pc} +_02231966: + cmp r0, #0xff + beq _0223196E + sub r0, r0, #1 + strb r0, [r4, #0x12] +_0223196E: + mov r0, #0 + strb r0, [r4, #0x11] +_02231972: + add sp, #4 + pop {r3, r4, pc} + nop +_02231978: .word 0x000005F8 + + thumb_func_start MOD12_0223197C +MOD12_0223197C: ; 0x0223197C + push {r4, lr} + mov r1, #0x32 + mov r0, #0x15 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x32 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r1, #0 + mov r0, #0x2e + mvn r1, r1 + lsl r0, r0, #4 + strb r1, [r4, r0] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_022319A4 +MOD12_022319A4: ; 0x022319A4 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _022319F8 ; =0x02244F64 + add r5, r0, #0 + add r7, r4, #0 +_022319AE: + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl FUN_02016C18 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_02018768 + add r1, r4, #4 + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r4, r4, #1 + add r6, #0x1c + cmp r4, #4 + blo _022319AE + pop {r3, r4, r5, r6, r7, pc} + nop +_022319F8: .word 0x02244F64 + + thumb_func_start MOD12_022319FC +MOD12_022319FC: ; 0x022319FC + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_02231A04: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0 + bl FUN_0201797C + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #4 + blo _02231A04 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02231A24 +MOD12_02231A24: ; 0x02231A24 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD12_0223197C + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + mov r0, #0xc + mov r1, #0x15 + str r7, [r4, #8] + bl FUN_02011744 + mov r7, #2 + str r0, [r4, #0x3c] + mov r5, #0 + lsl r7, r7, #0xa + b _02231A88 +_02231A4C: + mov r0, #0x15 + add r1, r7, #0 + bl FUN_02016998 + lsl r1, r5, #2 + add r1, r4, r1 + str r0, [r1, #0x20] + mov r0, #0x15 + str r0, [sp] + ldr r1, _02231AE0 ; =0x02244D6C + lsl r2, r5, #1 + ldrh r1, [r1, r2] + mov r0, #0x2d + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BDC + add r6, r0, #0 + lsl r0, r5, #2 + add r0, r4, r0 + ldr r1, [r0, #0x20] + ldr r0, [sp, #0xc] + add r2, r7, #0 + add r0, #0xc + bl MIi_CpuCopy32 + add r0, r6, #0 + bl FUN_02016A18 + add r5, r5, #1 +_02231A88: + cmp r5, #5 + blt _02231A4C + ldr r0, [r4, #4] + mov r7, #2 + ldr r6, [r0, #0x50] + mov r5, #0 + lsl r7, r7, #8 + b _02231AD6 +_02231A98: + mov r0, #0x15 + add r1, r7, #0 + bl FUN_02016998 + lsl r1, r5, #2 + add r1, r4, r1 + str r0, [r1, #0x34] + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r2, _02231AE4 ; =0x02244D54 + lsl r3, r5, #1 + ldrh r2, [r2, r3] + add r0, r6, #0 + mov r1, #0x2d + mov r3, #0x15 + bl FUN_020030E8 + add r0, r6, #0 + mov r1, #1 + bl FUN_020031FC + lsl r1, r5, #2 + add r1, r4, r1 + ldr r1, [r1, #0x34] + add r2, r7, #0 + bl MIi_CpuCopy16 + add r5, r5, #1 +_02231AD6: + cmp r5, #2 + blt _02231A98 + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02231AE0: .word 0x02244D6C +_02231AE4: .word 0x02244D54 + + thumb_func_start MOD12_02231AE8 +MOD12_02231AE8: ; 0x02231AE8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + bl MOD12_02232638 + ldr r0, [r6, #0x3c] + bl FUN_020117BC + ldr r3, _02231B48 ; =0x000080F8 + str r3, [sp] + ldr r0, [r6, #4] + add r1, r3, #5 + ldr r0, [r0, #0x1c] + sub r2, r3, #7 + bl MOD12_022447C0 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl MOD12_0224486C + mov r4, #0 + add r5, r6, #0 +_02231B16: + ldr r0, [r5, #0x20] + bl FUN_02016A18 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02231B16 + mov r5, #0 + add r4, r6, #0 +_02231B28: + ldr r0, [r4, #0x34] + bl FUN_02016A18 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #2 + blt _02231B28 + add r0, r6, #0 + bl MOD12_02232B7C + add r0, r6, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02231B48: .word 0x000080F8 + + thumb_func_start MOD12_02231B4C +MOD12_02231B4C: ; 0x02231B4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r3, [r7, #0xc] + ldr r0, [r7, #4] + str r2, [sp, #8] + ldr r0, [r0, #0x24] + str r1, [sp, #4] + str r0, [sp, #0xc] + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r2, [r7, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02231B76 + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0x10] + b _02231B80 +_02231B76: + mov r0, #0x30 + ldr r1, _02231C70 ; =0x02245074 + mul r0, r2 + add r0, r1, r0 + str r0, [sp, #0x10] +_02231B80: + ldr r0, [sp, #4] + mov r1, #0x30 + ldr r2, _02231C70 ; =0x02245074 + mul r1, r0 + add r0, r2, r1 + str r0, [sp, #0x14] + mov r4, #0 + add r5, r0, #0 +_02231B90: + ldrh r1, [r5, #0xc] + add r0, r4, #4 + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _02231B90 + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + ldr r1, [sp, #0x14] + ldr r0, [r7, #4] + ldrh r1, [r1, #2] + ldr r0, [r0, #0x50] + mov r2, #1 + lsl r1, r1, #2 + add r1, r7, r1 + ldr r1, [r1, #0x34] + mov r3, #0 + bl FUN_02003054 + ldr r6, [sp, #0x14] + ldr r4, [sp, #0x10] + mov r5, #0 +_02231BCA: + ldrh r2, [r6, #4] + ldr r0, _02231C74 ; =0x0000FFFF + cmp r2, r0 + beq _02231C00 + ldr r0, [sp, #8] + cmp r0, #1 + beq _02231BDE + ldrh r0, [r4, #4] + cmp r2, r0 + beq _02231C00 +_02231BDE: + lsl r2, r2, #2 + add r1, r5, #4 + add r2, r7, r2 + lsl r1, r1, #0x18 + mov r3, #2 + ldr r0, [sp, #0xc] + ldr r2, [r2, #0x20] + lsr r1, r1, #0x18 + lsl r3, r3, #0xa + bl FUN_02017DFC + add r1, r5, #4 + lsl r1, r1, #0x18 + ldr r0, [sp, #0xc] + lsr r1, r1, #0x18 + bl FUN_0201AC68 +_02231C00: + add r5, r5, #1 + add r6, r6, #2 + add r4, r4, #2 + cmp r5, #4 + blt _02231BCA + mov r1, #0x2e + ldr r0, [sp, #4] + lsl r1, r1, #4 + strb r0, [r7, r1] + add r0, r7, #0 + bl MOD12_02232638 + ldr r0, [sp, #0x14] + ldr r3, [r0, #0x28] + cmp r3, #0 + beq _02231C28 + ldr r1, [sp, #4] + ldr r2, [sp, #8] + add r0, r7, #0 + blx r3 +_02231C28: + ldr r0, [sp, #0x14] + ldrh r1, [r0] + ldr r0, _02231C74 ; =0x0000FFFF + cmp r1, r0 + beq _02231C62 + ldr r0, [sp, #8] + cmp r0, #1 + beq _02231C40 + ldr r0, [sp, #0x10] + ldrh r0, [r0] + cmp r1, r0 + beq _02231C62 +_02231C40: + mov r3, #0xb7 + mov r0, #0x15 + lsl r3, r3, #2 + str r0, [sp] + mov r0, #0x2d + mov r2, #1 + add r3, r7, r3 + bl FUN_02006BB0 + mov r1, #0xb6 + lsl r1, r1, #2 + str r0, [r7, r1] + ldr r0, _02231C78 ; =MOD12_0223336C + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 +_02231C62: + ldr r0, _02231C7C ; =MOD12_022333A8 + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02231C70: .word 0x02245074 +_02231C74: .word 0x0000FFFF +_02231C78: .word MOD12_0223336C +_02231C7C: .word MOD12_022333A8 + + thumb_func_start MOD12_02231C80 +MOD12_02231C80: ; 0x02231C80 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r1, [r5, r0] + mov r6, #0 + sub r0, r6, #1 + cmp r1, r0 + bne _02231C96 + bl ErrorHandling +_02231C96: + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r1, [r5, r0] + ldr r3, _02231D44 ; =0x02245074 + mov r0, #0x30 + add r2, r1, #0 + mul r2, r0 + add r4, r3, r2 + ldr r1, [r4, #0x14] + cmp r1, #0 + bne _02231CB0 + sub r0, #0x31 + pop {r3, r4, r5, r6, r7, pc} +_02231CB0: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02231CBA + bl ErrorHandling +_02231CBA: + ldr r0, [r4, #0x14] + bl FUN_02020988 + add r7, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r7, r0 + bne _02231CD4 + add r0, r5, #0 + bl MOD12_02232E18 + add r7, r0, #0 + add r6, r6, #1 +_02231CD4: + mov r0, #0 + mvn r0, r0 + str r0, [sp] + cmp r7, r0 + bne _02231CE2 + mov r2, #0xff + b _02231CEE +_02231CE2: + ldr r1, [r4, #0x18] + lsl r0, r7, #2 + ldr r0, [r1, r0] + str r0, [sp] + ldr r0, [r4, #0x1c] + ldrb r2, [r0, r7] +_02231CEE: + ldr r3, [r4, #0x2c] + cmp r3, #0 + beq _02231D3E + ldr r1, [sp] + add r0, r5, #0 + blx r3 + mov r1, #0 + mvn r1, r1 + str r0, [sp] + cmp r0, r1 + beq _02231D3E + ldr r2, [r4, #0x24] + cmp r2, #0 + beq _02231D10 + add r0, r5, #0 + add r1, r7, #0 + blx r2 +_02231D10: + mov r0, #0xc6 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD12_0224493C + cmp r6, #0 + ble _02231D36 + mov r0, #0xc7 + mov r1, #1 + lsl r0, r0, #2 + strb r1, [r5, r0] + b _02231D3E +_02231D36: + mov r0, #0xc7 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] +_02231D3E: + ldr r0, [sp] + pop {r3, r4, r5, r6, r7, pc} + nop +_02231D44: .word 0x02245074 + + thumb_func_start MOD12_02231D48 +MOD12_02231D48: ; 0x02231D48 + ldr r1, [r0, #0x10] + cmp r1, #0 + bne _02231D58 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _02231D58 + mov r0, #1 + bx lr +_02231D58: + mov r0, #0 + bx lr + + thumb_func_start MOD12_02231D5C +MOD12_02231D5C: ; 0x02231D5C + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r0] + add r1, r2, #1 + ldrb r0, [r3, r2] + ldrb r1, [r3, r1] + ldr r3, [r5] + add r2, #0x51 + ldrb r2, [r3, r2] + bl FUN_02083228 + add r4, r0, #0 + ldr r0, [r5, #4] + ldr r1, _02231E28 ; =0x0000011F + ldr r2, [r0] + ldrb r0, [r2, r1] + add r1, r1, #2 + ldrb r1, [r2, r1] + bl FUN_020832A4 + add r6, r0, #0 + ldr r0, [r5, #4] + add r1, r4, #0 + ldr r0, [r0, #0x38] + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [r5, #4] + add r1, r6, #0 + ldr r0, [r0, #0x38] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, _02231E2C ; =0x00010200 + add r1, r5, #0 + str r0, [sp] + mov r3, #0 + ldr r0, _02231E30 ; =0x000080F0 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x7f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r1, #0x40 + add r2, r4, #0 + str r3, [sp, #0x18] + bl MOD12_022322C0 + ldr r0, _02231E2C ; =0x00010200 + add r1, r5, #0 + str r0, [sp] + mov r3, #0 + ldr r0, _02231E30 ; =0x000080F0 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x9f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r1, #0x54 + add r2, r6, #0 + str r3, [sp, #0x18] + bl MOD12_022322C0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r2, [r5, #4] + mov r0, #1 + str r0, [sp] + mov r1, #0x20 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r0, [r2] + add r1, #0xff + ldrb r0, [r0, r1] + mov r1, #0x2d + mov r3, #0x15 + lsl r0, r0, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [r2, #0x50] + mov r2, #0x25 + bl FUN_02003084 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_02231E28: .word 0x0000011F +_02231E2C: .word 0x00010200 +_02231E30: .word 0x000080F0 + + thumb_func_start MOD12_02231E34 +MOD12_02231E34: ; 0x02231E34 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r6, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + add r5, r6, r0 + ldr r0, _022320A0 ; =0x000002E1 + mov r1, #0xff + strb r1, [r6, r0] + add r0, r5, #0 + str r0, [sp, #0x24] + add r0, #0x50 + str r0, [sp, #0x24] + add r0, r5, #0 + add r7, r6, #0 + str r0, [sp, #0x28] + add r0, #0xa0 + mov r4, #0 + add r7, #0x40 + str r0, [sp, #0x28] + b _02231F80 +_02231E5E: + ldr r0, [r6, #4] + ldr r1, _022320A4 ; =0x00000123 + ldr r0, [r0] + mov r2, #0 + ldrb r1, [r0, r1] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + lsl r1, r4, #1 + add r2, sp, #0x3c + strh r0, [r2, r1] + add r0, r2, #0 + ldrh r0, [r0, r1] + cmp r0, #0 + beq _02231E8C + mov r0, #0x4b + add r2, r5, r4 + lsl r0, r0, #2 + ldrb r2, [r2, r0] + b _02231E8E +_02231E8C: + mov r2, #0 +_02231E8E: + add r0, sp, #0x34 + strh r2, [r0, r1] + ldr r0, _022320A8 ; =0x00010708 + ldr r1, _022320AC ; =0x02244D94 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022320B0 ; =0x000080F0 + mov r2, #0 + str r0, [sp, #8] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + mov r3, #2 + str r1, [sp, #0xc] + ldr r1, _022320AC ; =0x02244D94 + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + add r0, r5, r1 + str r0, [sp, #0x18] + add r0, r6, #0 + add r1, r7, r1 + bl MOD12_022322C0 + ldr r0, _022320B4 ; =0x00010200 + ldr r1, _022320B8 ; =0x02244E30 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022320B0 ; =0x000080F0 + add r2, r4, #4 + str r0, [sp, #8] + lsl r0, r4, #3 + ldrh r1, [r1, r0] + str r1, [sp, #0xc] + ldr r1, _022320B8 ; =0x02244E30 + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + ldr r0, [sp, #0x24] + add r0, r0, r1 + mov r1, #0x14 + mul r1, r2 + mov r2, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + add r1, r7, r1 + add r3, r2, #0 + bl MOD12_022322C0 + ldr r0, _022320B4 ; =0x00010200 + add r2, r4, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022320B0 ; =0x000080F0 + lsl r1, r4, #3 + str r0, [sp, #8] + ldr r0, _022320B8 ; =0x02244E30 + add r2, #8 + add r1, r0, r1 + ldrh r0, [r1, #4] + str r0, [sp, #0xc] + ldrh r0, [r1, #6] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + ldr r0, [sp, #0x28] + add r0, r0, r1 + mov r1, #0x14 + mul r1, r2 + mov r2, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + add r1, r7, r1 + add r3, r2, #0 + bl MOD12_022322C0 + lsl r1, r4, #1 + add r0, sp, #0x3c + ldrh r0, [r0, r1] + cmp r0, #0 + bne _02231F7E + mov r0, #0x14 + mul r0, r4 + add r0, r6, r0 + ldr r0, [r0, #0x40] + mov r1, #0 + bl FUN_020119D0 + add r1, r4, #4 + mov r0, #0x14 + mul r0, r1 + add r0, r6, r0 + ldr r0, [r0, #0x40] + mov r1, #0 + bl FUN_020119D0 + add r1, r4, #0 + add r1, #8 + mov r0, #0x14 + mul r0, r1 + add r0, r6, r0 + ldr r0, [r0, #0x40] + mov r1, #0 + bl FUN_020119D0 +_02231F7E: + add r4, r4, #1 +_02231F80: + cmp r4, #4 + bge _02231F86 + b _02231E5E +_02231F86: + mov r4, #0 + add r7, sp, #0x3c + b _02231FB4 +_02231F8C: + lsl r0, r4, #1 + ldrh r0, [r7, r0] + cmp r0, #0 + beq _02231FA6 + mov r0, #0x13 + add r1, r5, r4 + lsl r0, r0, #4 + ldrb r1, [r1, r0] + add r0, r6, #0 + add r2, r4, #0 + bl MOD12_022325AC + b _02231FB2 +_02231FA6: + mov r1, #0 + add r0, r6, #0 + mvn r1, r1 + add r2, r4, #0 + bl MOD12_022325AC +_02231FB2: + add r4, r4, #1 +_02231FB4: + cmp r4, #4 + blt _02231F8C + mov r4, #0 + mov r7, #0x20 + add r5, sp, #0x3c + b _02232006 +_02231FC0: + lsl r0, r4, #1 + ldrh r2, [r5, r0] + cmp r2, #0 + beq _02232004 + ldr r1, [r6, #4] + ldr r0, [r6, #8] + ldr r3, [r1] + ldr r1, _022320A4 ; =0x00000123 + ldrb r1, [r3, r1] + bl MOD12_02235BEC + cmp r0, #0 + bne _02232004 + str r7, [sp] + ldr r0, [r6, #4] + mov r1, #1 + add r3, r4, #4 + lsl r3, r3, #0x14 + ldr r2, [r6, #0x38] + lsl r1, r1, #8 + add r1, r2, r1 + ldr r0, [r0, #0x50] + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + ldr r0, _022320A0 ; =0x000002E1 + ldrb r0, [r6, r0] + cmp r0, #0xff + beq _02232000 + bl ErrorHandling +_02232000: + ldr r0, _022320A0 ; =0x000002E1 + strb r4, [r6, r0] +_02232004: + add r4, r4, #1 +_02232006: + cmp r4, #4 + blt _02231FC0 + add r0, r6, #0 + add r1, sp, #0x3c + bl MOD12_02232470 + mov r4, #0 + b _02232096 +_02232016: + lsl r1, r4, #1 + add r0, sp, #0x3c + ldrh r0, [r0, r1] + cmp r0, #0 + beq _02232094 + add r0, sp, #0x34 + ldrh r0, [r0, r1] + bl FUN_02083114 + str r0, [sp, #0x20] + cmp r0, #0 + bge _02232030 + neg r0, r0 +_02232030: + mov r1, #0xa + bl _s32_div_f + str r0, [sp, #0x1c] + cmp r0, #6 + ble _02232040 + bl ErrorHandling +_02232040: + mov r0, #0x18 + mul r0, r4 + add r7, r6, r0 + lsl r0, r4, #3 + ldr r1, _022320BC ; =0x02244E50 + str r0, [sp, #0x2c] + add r0, r1, r0 + mov r5, #0 + str r0, [sp, #0x30] + b _0223208E +_02232054: + lsl r0, r5, #2 + add r1, r7, r0 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02232066 + bl ErrorHandling +_02232066: + ldr r0, [sp, #0x20] + ldr r3, _022320BC ; =0x02244E50 + str r0, [sp] + ldr r2, [sp, #0x2c] + ldr r1, [r6, #4] + ldr r3, [r3, r2] + lsl r2, r5, #3 + add r2, r3, r2 + ldr r3, [sp, #0x30] + ldr r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + ldr r3, [r3, #4] + bl MOD12_022334F4 + lsl r1, r5, #2 + add r2, r7, r1 + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r2, r1] + add r5, r5, #1 +_0223208E: + ldr r0, [sp, #0x1c] + cmp r5, r0 + blt _02232054 +_02232094: + add r4, r4, #1 +_02232096: + cmp r4, #4 + blt _02232016 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_022320A0: .word 0x000002E1 +_022320A4: .word 0x00000123 +_022320A8: .word 0x00010708 +_022320AC: .word 0x02244D94 +_022320B0: .word 0x000080F0 +_022320B4: .word 0x00010200 +_022320B8: .word 0x02244E30 +_022320BC: .word 0x02244E50 + + thumb_func_start MOD12_022320C0 +MOD12_022320C0: ; 0x022320C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + add r6, r5, r0 + add r7, r5, #0 + mov r4, #0 + add r6, #0xf0 + add r7, #0x40 + b _0223210E +_022320D6: + ldr r0, _0223216C ; =0x0001090A + ldr r1, _02232170 ; =0x02244D78 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _02232174 ; =0x000080F0 + mov r2, #0 + str r0, [sp, #8] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + mov r3, #2 + str r1, [sp, #0xc] + ldr r1, _02232170 ; =0x02244D78 + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + add r0, r6, r1 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r7, r1 + bl MOD12_022322C0 + add r4, r4, #1 +_0223210E: + cmp r4, #3 + blt _022320D6 + ldr r0, [r5, #4] + mov r1, #0x35 + ldr r0, [r0, #0x38] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, _0223216C ; =0x0001090A + ldr r1, _02232174 ; =0x000080F0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #0x80 + str r1, [sp, #0xc] + mov r1, #0xa4 + str r1, [sp, #0x10] + mov r1, #1 + str r1, [sp, #0x14] + add r2, r5, #0 + mov r1, #0x14 + str r0, [sp, #0x18] + add r2, #0x40 + mul r1, r4 + add r1, r2, r1 + add r0, r5, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD12_022322C0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r2, [r5, #4] + ldr r0, [r2, #0x18] + ldr r1, [r2, #0x1c] + ldr r3, [r2] + ldr r2, _02232178 ; =0x0000011E + ldrb r2, [r3, r2] + bl MOD12_02233448 + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223216C: .word 0x0001090A +_02232170: .word 0x02244D78 +_02232174: .word 0x000080F0 +_02232178: .word 0x0000011E + + thumb_func_start MOD12_0223217C +MOD12_0223217C: ; 0x0223217C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #1 + str r2, [sp] + cmp r0, #4 + bhi _022321A0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232196: ; jump table + .short _022321A0 - _02232196 - 2 ; case 0 + .short _022321A6 - _02232196 - 2 ; case 1 + .short _022321A6 - _02232196 - 2 ; case 2 + .short _022321A6 - _02232196 - 2 ; case 3 + .short _022321A6 - _02232196 - 2 ; case 4 +_022321A0: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022321A6: + ldr r0, [r4, #4] + mov r2, #0 + ldr r1, [r0] + ldr r0, _02232208 ; =0x00000123 + ldrb r0, [r1, r0] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r5, #0 + add r1, #0x36 + bl FUN_020671BC + cmp r0, #0 + beq _022321C8 + ldr r0, _0223220C ; =0x000002E1 + ldrb r0, [r4, r0] + cmp r0, r5 + bne _022321CE +_022321C8: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022321CE: + mov r0, #6 + ldr r1, _02232210 ; =0x02244E00 + mul r0, r5 + add r7, r1, r0 + ldr r1, _02232214 ; =0x02244EA4 + lsl r0, r5, #4 + add r6, r1, r0 + ldr r1, [sp] + add r0, r4, #0 + bl MOD12_02232AB8 + ldr r0, _02232218 ; =MOD12_022327E0 + add r1, r4, #0 + bl MOD12_02232654 + mov r1, #0xbd + lsl r1, r1, #2 + str r7, [r4, r1] + add r0, r1, #4 + str r6, [r4, r0] + add r0, r1, #0 + mov r2, #2 + add r0, #0xc + strb r2, [r4, r0] + add r1, #8 + str r5, [r4, r1] + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232208: .word 0x00000123 +_0223220C: .word 0x000002E1 +_02232210: .word 0x02244E00 +_02232214: .word 0x02244EA4 +_02232218: .word MOD12_022327E0 + + thumb_func_start MOD12_0223221C +MOD12_0223221C: ; 0x0223221C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #1 + cmp r0, #4 + bhi _0223223E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232234: ; jump table + .short _0223223E - _02232234 - 2 ; case 0 + .short _02232242 - _02232234 - 2 ; case 1 + .short _02232246 - _02232234 - 2 ; case 2 + .short _0223224A - _02232234 - 2 ; case 3 + .short _0223224E - _02232234 - 2 ; case 4 +_0223223E: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_02232242: + mov r6, #0 + b _02232250 +_02232246: + mov r6, #1 + b _02232250 +_0223224A: + mov r6, #2 + b _02232250 +_0223224E: + mov r6, #3 +_02232250: + ldr r0, [r4, #4] + ldr r1, [r0] + ldr r0, _022322B0 ; =0x0000011E + ldrb r0, [r1, r0] + cmp r5, r0 + bne _02232260 + mov r7, #1 + b _02232262 +_02232260: + mov r7, #0 +_02232262: + add r0, r4, #0 + add r1, r2, #0 + bl MOD12_02232AB8 + ldr r0, _022322B4 ; =MOD12_022326A4 + add r1, r4, #0 + bl MOD12_02232654 + mov r0, #6 + ldr r1, _022322B8 ; =0x02244E18 + mul r0, r5 + add r0, r1, r0 + mov r1, #0xbd + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r2, _022322BC ; =0x02244EE4 + lsl r0, r5, #4 + add r2, r2, r0 + add r0, r1, #4 + str r2, [r4, r0] + mov r2, #3 + lsl r0, r2, #8 + strb r2, [r4, r0] + add r0, r1, #0 + add r0, #8 + str r5, [r4, r0] + add r0, r1, #0 + add r0, #0xd + strb r6, [r4, r0] + cmp r7, #1 + bne _022322AA + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + sub r1, #0xc + str r0, [r4, r1] +_022322AA: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022322B0: .word 0x0000011E +_022322B4: .word MOD12_022326A4 +_022322B8: .word 0x02244E18 +_022322BC: .word 0x02244EE4 + + thumb_func_start MOD12_022322C0 +MOD12_022322C0: ; 0x022322C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + ldr r6, [sp, #0x9c] + ldr r4, [sp, #0xa8] + cmp r0, #0 + beq _022322DA + bl ErrorHandling +_022322DA: + ldr r1, [r7, #4] + cmp r4, #0 + ldr r0, [r1, #0x24] + str r0, [sp, #0x24] + ldr r0, [r1, #0x1c] + str r0, [sp, #0x20] + bne _022322F6 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD12_02232DE8 + b _022322FE +_022322F6: + ldrh r0, [r4, #0x12] + str r0, [sp, #0x2c] + ldrh r0, [r4, #0x10] + str r0, [sp, #0x28] +_022322FE: + cmp r4, #0 + bne _0223233C + add r0, sp, #0x3c + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r2, [sp, #0x28] + ldr r0, [sp, #0x24] + lsl r2, r2, #0x18 + add r1, sp, #0x3c + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x1c] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x18] + add r0, sp, #0x3c + str r3, [sp, #0x14] + bl FUN_0201BE3C + b _02232348 +_0223233C: + add r3, r4, #0 + add r2, sp, #0x3c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} +_02232348: + add r0, sp, #0x3c + mov r1, #2 + mov r2, #0x15 + bl FUN_02011898 + mov r1, #1 + mov r2, #2 + add r3, sp, #0x30 + bl FUN_0201D568 + ldr r0, [sp, #0xa4] + cmp r0, #1 + bne _0223236C + ldr r1, [sp, #0x2c] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + sub r6, r6, r0 +_0223236C: + ldr r0, [r7, #0x3c] + str r0, [sp, #0x4c] + add r0, sp, #0x3c + str r0, [sp, #0x50] + ldr r0, [sp, #0x20] + bl FUN_0200CA40 + str r0, [sp, #0x54] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x98] + bl FUN_0200C334 + str r0, [sp, #0x58] + mov r0, #0 + ldr r1, [sp, #0x34] + str r0, [sp, #0x5c] + str r0, [sp, #0x6c] + mov r0, #0x64 + str r1, [sp, #0x60] + mov r1, #0x42 + str r0, [sp, #0x70] + mov r0, #2 + str r0, [sp, #0x74] + mov r0, #0x15 + str r0, [sp, #0x78] + ldr r2, [sp, #0xa0] + lsl r1, r1, #2 + add r1, r2, r1 + add r0, sp, #0x4c + str r6, [sp, #0x64] + str r1, [sp, #0x68] + bl FUN_020117E8 + ldr r1, [sp, #0x94] + add r7, r0, #0 + bl FUN_02011AC0 + mov r2, #0x42 + ldr r3, [sp, #0xa0] + lsl r2, r2, #2 + add r0, r7, #0 + add r1, r6, #0 + add r2, r3, r2 + bl FUN_020118C4 + cmp r4, #0 + bne _022323D0 + add r0, sp, #0x3c + bl FUN_02019178 +_022323D0: + str r7, [r5] + add r3, sp, #0x30 + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #0x2c] + strh r0, [r5, #0x10] + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_022323E8 +MOD12_022323E8: ; 0x022323E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r4, #0x44 + add r7, r6, #0 +_022323F4: + ldr r0, [r5, #0x40] + cmp r0, #0 + beq _02232406 + bl FUN_02011870 + add r0, r4, #0 + bl FUN_0201D5E8 + str r7, [r5, #0x40] +_02232406: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #0xc + blt _022323F4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232414 +MOD12_02232414: ; 0x02232414 + push {r4, lr} + add r4, r0, #0 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223242E + bl MOD12_0223349C + mov r0, #5 + mov r1, #0 + lsl r0, r0, #6 + str r1, [r4, r0] +_0223242E: + pop {r4, pc} + + thumb_func_start MOD12_02232430 +MOD12_02232430: ; 0x02232430 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #0 + mov r7, #0x51 + str r0, [sp, #4] + add r6, r0, #0 + lsl r7, r7, #2 +_02232440: + ldr r5, [sp] + mov r4, #0 +_02232444: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232454 + bl MOD12_02233534 + mov r0, #0x51 + lsl r0, r0, #2 + str r6, [r5, r0] +_02232454: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02232444 + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _02232440 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02232470 +MOD12_02232470: ; 0x02232470 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r5, r0, #0 + add r7, r1, #0 + ldr r1, [r5, #4] + ldr r4, _02232504 ; =0x02244E70 + ldr r0, [r1, #0x18] + add r3, sp, #8 + str r0, [sp, #4] + ldr r0, [r1, #0x1c] + mov r2, #6 + str r0, [sp] +_02232488: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02232488 + ldr r0, [r4] + mov r4, #0 + str r0, [r3] + add r6, sp, #8 + b _022324FC +_0223249A: + lsl r0, r4, #2 + add r1, r5, r0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022324AC + bl ErrorHandling +_022324AC: + lsl r0, r4, #1 + ldrh r0, [r7, r0] + cmp r0, #0 + beq _022324FA + mov r0, #0xb5 + add r1, r5, r4 + lsl r0, r0, #2 + ldrb r2, [r1, r0] + ldr r0, _02232508 ; =0x000080F6 + ldr r1, _0223250C ; =0x02244DB4 + add r0, r4, r0 + str r0, [sp, #0x1c] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + add r3, sp, #8 + strh r1, [r6] + ldr r1, _0223250C ; =0x02244DB4 + add r0, r1, r0 + ldrh r0, [r0, #2] + ldr r1, [sp] + strh r0, [r6, #2] + ldr r0, [sp, #4] + bl MOD12_02240E98 + lsl r1, r4, #2 + mov r2, #0x13 + mov r3, #0x11 + add r1, r5, r1 + lsl r2, r2, #4 + str r0, [r1, r2] + add r0, r2, #0 + ldr r0, [r1, r0] + mov r1, #0 + mov r2, #2 + ldrsh r1, [r6, r1] + ldrsh r2, [r6, r2] + lsl r3, r3, #0x10 + bl FUN_0200C750 +_022324FA: + add r4, r4, #1 +_022324FC: + cmp r4, #4 + blt _0223249A + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02232504: .word 0x02244E70 +_02232508: .word 0x000080F6 +_0223250C: .word 0x02244DB4 + + thumb_func_start MOD12_02232510 +MOD12_02232510: ; 0x02232510 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x13 + add r5, r0, #0 + add r6, r4, #0 + lsl r7, r7, #4 +_0223251C: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223252C + bl MOD12_02240EC8 + mov r0, #0x13 + lsl r0, r0, #4 + str r6, [r5, r0] +_0223252C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0223251C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232538 +MOD12_02232538: ; 0x02232538 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + ldr r0, [r0, #0x24] + add r7, r3, #0 + mov r1, #4 + add r4, r2, #0 + str r0, [sp, #4] + bl FUN_0201886C + mov ip, r0 + lsl r0, r7, #2 + add r0, r5, r0 + ldr r0, [r0, #0x20] + ldr r7, [r4] + str r0, [sp] + ldr r0, [sp, #0x20] + lsl r0, r0, #1 + ldrsh r1, [r6, r0] + ldr r0, [r4, #4] + cmp r7, r0 + bgt _0223259E + lsl r6, r7, #5 +_0223256A: + lsl r2, r6, #1 + mov r0, ip + add r5, r0, r2 + ldr r0, [sp] + ldr r3, [r4, #0xc] + add r2, r0, r2 + ldr r0, [r4, #8] + cmp r0, r3 + bgt _02232594 + lsl r3, r0, #1 + add r2, r2, r3 + add r3, r5, r3 +_02232582: + ldrh r5, [r2] + add r0, r0, #1 + add r2, r2, #2 + add r5, r1, r5 + strh r5, [r3] + ldr r5, [r4, #0xc] + add r3, r3, #2 + cmp r0, r5 + ble _02232582 +_02232594: + ldr r0, [r4, #4] + add r7, r7, #1 + add r6, #0x20 + cmp r7, r0 + ble _0223256A +_0223259E: + ldr r0, [sp, #4] + mov r1, #4 + bl FUN_0201AC68 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_022325AC +MOD12_022325AC: ; 0x022325AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r6, _02232624 ; =0x02244DD8 + add r5, r2, #0 + add r4, r0, #0 + add r3, r1, #0 + add r2, sp, #4 + ldmia r6!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + mov r0, #0 + mvn r0, r0 + cmp r3, r0 + beq _022325EC + mov r0, #0x20 + str r0, [sp] + lsl r1, r3, #2 + ldr r0, [r4, #4] + add r3, r5, #4 + lsl r3, r3, #0x14 + ldr r0, [r0, #0x50] + ldr r1, [r7, r1] + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_022325EC: + ldr r2, _02232628 ; =0x02244D64 + lsl r1, r5, #1 + mov r0, #0 + add r1, r2, r1 + str r0, [sp] + ldr r3, _0223262C ; =0x02244F24 + lsl r2, r5, #4 + add r2, r3, r2 + add r0, r4, #0 + mov r3, #2 + bl MOD12_02232538 + mov r2, #0x20 + str r2, [sp] + ldr r0, [r4, #4] + add r3, r5, #4 + lsl r3, r3, #0x14 + ldr r1, [r4, #0x38] + add r2, #0xe0 + add r1, r1, r2 + ldr r0, [r0, #0x50] + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232624: .word 0x02244DD8 +_02232628: .word 0x02244D64 +_0223262C: .word 0x02244F24 + + thumb_func_start MOD12_02232630 +MOD12_02232630: ; 0x02232630 + ldr r3, _02232634 ; =MOD12_02232638 + bx r3 + .align 2, 0 +_02232634: .word MOD12_02232638 + + thumb_func_start MOD12_02232638 +MOD12_02232638: ; 0x02232638 + push {r4, lr} + add r4, r0, #0 + bl MOD12_02232414 + add r0, r4, #0 + bl MOD12_02232430 + add r0, r4, #0 + bl MOD12_02232510 + add r0, r4, #0 + bl MOD12_022323E8 + pop {r4, pc} + + thumb_func_start MOD12_02232654 +MOD12_02232654: ; 0x02232654 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02232664 + bl ErrorHandling +_02232664: + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + ldr r2, _02232680 ; =0x00000514 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + pop {r3, r4, r5, pc} + .align 2, 0 +_02232680: .word 0x00000514 + + thumb_func_start MOD12_02232684 +MOD12_02232684: ; 0x02232684 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022326A2 + bl FUN_0200CAB4 + mov r0, #0xb9 + lsl r0, r0, #2 + mov r1, #0 + add r0, r4, r0 + mov r2, #0x20 + str r1, [r4, #0x10] + bl MI_CpuFill8 +_022326A2: + pop {r4, pc} + + thumb_func_start MOD12_022326A4 +MOD12_022326A4: ; 0x022326A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r3, #0xb9 + add r5, r1, #0 + lsl r3, r3, #2 + ldrsh r0, [r5, r3] + cmp r0, #0 + beq _022326BE + cmp r0, #1 + beq _02232730 + cmp r0, #2 + beq _0223274C + b _022327BC +_022326BE: + mov r0, #2 + str r0, [sp] + add r1, r3, #0 + add r2, r3, #0 + add r3, #0x1c + add r1, #0x10 + add r2, #0x14 + ldrb r3, [r5, r3] + ldr r1, [r5, r1] + ldr r2, [r5, r2] + add r0, r5, #0 + bl MOD12_02232538 + ldr r0, _022327DC ; =0x00000301 + add r2, sp, #4 + ldrb r1, [r5, r0] + mov r0, #0x14 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + add r1, sp, #8 + bl FUN_020119A4 + ldr r0, _022327DC ; =0x00000301 + ldr r2, [sp, #4] + ldrb r1, [r5, r0] + mov r0, #0x14 + sub r2, r2, #2 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + ldr r1, [sp, #8] + bl FUN_020118C4 + mov r7, #0xba + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_0223270A: + ldr r0, [r4, r7] + cmp r0, #0 + beq _0223271A + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC +_0223271A: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _0223270A + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r5, r0] + add sp, #0xc + add r1, r1, #1 + strh r1, [r5, r0] + pop {r4, r5, r6, r7, pc} +_02232730: + add r0, r3, #2 + ldrsh r0, [r5, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r5, r0] + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022327D8 + mov r1, #0 + add r0, r3, #2 + strh r1, [r5, r0] + ldrsh r0, [r5, r3] + add r0, r0, #1 + strh r0, [r5, r3] +_0223274C: + mov r0, #1 + mov r3, #0xbd + str r0, [sp] + lsl r3, r3, #2 + add r2, r3, #4 + ldr r1, [r5, r3] + add r3, #0xc + ldrb r3, [r5, r3] + ldr r2, [r5, r2] + add r0, r5, #0 + bl MOD12_02232538 + ldr r0, _022327DC ; =0x00000301 + add r2, sp, #4 + ldrb r1, [r5, r0] + mov r0, #0x14 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + add r1, sp, #8 + bl FUN_020119A4 + ldr r0, _022327DC ; =0x00000301 + ldr r2, [sp, #4] + ldrb r1, [r5, r0] + mov r0, #0x14 + add r2, r2, #1 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + ldr r1, [sp, #8] + bl FUN_020118C4 + mov r7, #0xba + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_02232796: + ldr r0, [r4, r7] + cmp r0, #0 + beq _022327A6 + ldr r0, [r0] + mov r1, #0 + mov r2, #1 + bl FUN_0200C7FC +_022327A6: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _02232796 + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r5, r0] + add sp, #0xc + add r1, r1, #1 + strh r1, [r5, r0] + pop {r4, r5, r6, r7, pc} +_022327BC: + add r0, r3, #2 + ldrsh r0, [r5, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r5, r0] + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022327D8 + add r0, r5, #0 + bl MOD12_02232630 + add r0, r5, #0 + bl MOD12_02232684 +_022327D8: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022327DC: .word 0x00000301 + + thumb_func_start MOD12_022327E0 +MOD12_022327E0: ; 0x022327E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r7, _02232A64 ; =0x00000123 + add r4, r1, #0 + mov r6, #0 + add r5, sp, #0x20 +_022327EC: + ldr r0, [r4, #4] + mov r2, #0 + ldr r0, [r0] + ldrb r1, [r0, r7] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + add r1, #0x36 + bl FUN_020671BC + strh r0, [r5] + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #4 + blt _022327EC + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #3 + bhi _02232870 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232820: ; jump table + .short _02232828 - _02232820 - 2 ; case 0 + .short _0223283A - _02232820 - 2 ; case 1 + .short _0223284C - _02232820 - 2 ; case 2 + .short _0223285E - _02232820 - 2 ; case 3 +_02232828: + mov r0, #8 + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0] + mov r5, #0 + mov r6, #4 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_0223283A: + mov r0, #9 + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0, #2] + mov r5, #1 + mov r6, #5 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_0223284C: + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0, #4] + mov r5, #2 + mov r6, #6 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_0223285E: + mov r0, #0xb + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0, #6] + mov r5, #3 + mov r6, #7 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_02232870: + mov r5, #0 + add r6, r5, #0 + str r5, [sp, #0xc] + str r5, [sp, #8] +_02232878: + mov r3, #0xb9 + lsl r3, r3, #2 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0223288C + cmp r0, #1 + beq _0223295A + cmp r0, #2 + beq _02232976 + b _02232A42 +_0223288C: + mov r0, #2 + str r0, [sp] + add r1, r3, #0 + add r2, r3, #0 + add r3, #0x1c + add r1, #0x10 + add r2, #0x14 + ldrb r3, [r4, r3] + ldr r1, [r4, r1] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD12_02232538 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r5 + add r7, #0x40 + str r0, [sp, #0x10] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + sub r2, r2, #2 + bl FUN_020118C4 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r6 + add r7, #0x40 + str r0, [sp, #0x14] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + sub r2, r2, #2 + bl FUN_020118C4 + ldr r0, [sp, #0xc] + add r6, r4, #0 + mov r1, #0x14 + add r7, r0, #0 + mul r7, r1 + add r6, #0x40 + ldr r0, [r6, r7] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r2, [sp, #0x28] + ldr r0, [r6, r7] + ldr r1, [sp, #0x2c] + sub r2, r2, #2 + bl FUN_020118C4 + ldr r0, [sp, #8] + cmp r0, #0 + beq _0223294C + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC + mov r7, #0x51 + ldr r0, [sp, #4] + mov r1, #0x18 + mul r1, r0 + mov r6, #0 + add r5, r4, r1 + lsl r7, r7, #2 +_02232934: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232944 + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC +_02232944: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _02232934 +_0223294C: + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + add sp, #0x30 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_0223295A: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _02232A5E + mov r1, #0 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r3] + add r0, r0, #1 + strh r0, [r4, r3] +_02232976: + mov r0, #1 + mov r3, #0xbd + str r0, [sp] + lsl r3, r3, #2 + add r2, r3, #4 + ldr r1, [r4, r3] + add r3, #0xc + ldrb r3, [r4, r3] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD12_02232538 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r5 + add r7, #0x40 + str r0, [sp, #0x18] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + add r2, r2, #1 + bl FUN_020118C4 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r6 + add r7, #0x40 + str r0, [sp, #0x1c] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + add r2, r2, #1 + bl FUN_020118C4 + ldr r0, [sp, #0xc] + add r6, r4, #0 + mov r1, #0x14 + add r7, r0, #0 + mul r7, r1 + add r6, #0x40 + ldr r0, [r6, r7] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r2, [sp, #0x28] + ldr r0, [r6, r7] + ldr r1, [sp, #0x2c] + add r2, r2, #1 + bl FUN_020118C4 + ldr r0, [sp, #8] + cmp r0, #0 + beq _02232A34 + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + ldr r0, [r0] + mov r2, #1 + bl FUN_0200C7FC + mov r7, #0x51 + ldr r0, [sp, #4] + mov r1, #0x18 + mul r1, r0 + mov r6, #0 + add r5, r4, r1 + lsl r7, r7, #2 +_02232A1C: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232A2C + ldr r0, [r0] + mov r1, #0 + mov r2, #1 + bl FUN_0200C7FC +_02232A2C: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _02232A1C +_02232A34: + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + add sp, #0x30 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_02232A42: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _02232A5E + add r0, r4, #0 + bl MOD12_02232630 + add r0, r4, #0 + bl MOD12_02232684 +_02232A5E: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232A64: .word 0x00000123 + + thumb_func_start MOD12_02232A68 +MOD12_02232A68: ; 0x02232A68 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02232A78 + bl ErrorHandling +_02232A78: + mov r0, #0xc1 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r2, _02232A94 ; =0x00000528 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x14] + pop {r3, r4, r5, pc} + .align 2, 0 +_02232A94: .word 0x00000528 + + thumb_func_start MOD12_02232A98 +MOD12_02232A98: ; 0x02232A98 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02232AB6 + bl FUN_0200CAB4 + mov r0, #0xc1 + lsl r0, r0, #2 + mov r1, #0 + add r0, r4, r0 + mov r2, #0xc + str r1, [r4, #0x14] + bl MI_CpuFill8 +_02232AB6: + pop {r4, pc} + + thumb_func_start MOD12_02232AB8 +MOD12_02232AB8: ; 0x02232AB8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0xff + beq _02232ACE + ldr r0, _02232AD0 ; =MOD12_02232AD8 + add r1, r5, #0 + bl MOD12_02232A68 + ldr r0, _02232AD4 ; =0x0000030D + strb r4, [r5, r0] +_02232ACE: + pop {r3, r4, r5, pc} + .align 2, 0 +_02232AD0: .word MOD12_02232AD8 +_02232AD4: .word 0x0000030D + + thumb_func_start MOD12_02232AD8 +MOD12_02232AD8: ; 0x02232AD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r0, #0xc1 + add r5, r1, #0 + lsl r0, r0, #2 + add r2, r5, r0 + ldr r0, [r5, #4] + mov r4, #0 + ldr r3, [r0, #0x50] + ldrb r0, [r2, #8] + cmp r0, #0 + beq _02232AF8 + cmp r0, #1 + beq _02232B14 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02232AF8: + mov r0, #0xa + lsl r0, r0, #8 + strh r0, [r2, #4] + ldr r0, _02232B74 ; =0xFFFFFB00 + strh r0, [r2, #6] + mov r0, #4 + ldrsh r1, [r2, r0] + mov r0, #6 + ldrsh r0, [r2, r0] + sub r0, r1, r0 + strh r0, [r2, #4] + ldrb r0, [r2, #8] + add r0, r0, #1 + strb r0, [r2, #8] +_02232B14: + mov r7, #4 + mov r6, #6 + ldrsh r1, [r2, r7] + ldrsh r0, [r2, r6] + add r0, r1, r0 + strh r0, [r2, #4] + ldrsh r6, [r2, r6] + cmp r6, #0 + blt _02232B34 + ldrsh r1, [r2, r7] + lsl r0, r7, #0xa + cmp r1, r0 + blt _02232B34 + strh r0, [r2, #4] + mov r4, #1 + b _02232B46 +_02232B34: + cmp r6, #0 + bge _02232B46 + mov r0, #4 + ldrsh r0, [r2, r0] + cmp r0, #0 + bgt _02232B46 + mov r0, #0 + strh r0, [r2, #4] + mov r4, #1 +_02232B46: + mov r0, #4 + ldrsh r0, [r2, r0] + mov r1, #1 + asr r0, r0, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, _02232B78 ; =0x00007FFF + str r0, [sp, #4] + ldrb r2, [r2, #9] + add r0, r3, #0 + mov r3, #0x10 + lsl r2, r2, #0x14 + lsr r2, r2, #0x10 + bl FUN_020039E8 + cmp r4, #1 + bne _02232B70 + add r0, r5, #0 + bl MOD12_02232A98 +_02232B70: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232B74: .word 0xFFFFFB00 +_02232B78: .word 0x00007FFF + + thumb_func_start MOD12_02232B7C +MOD12_02232B7C: ; 0x02232B7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x69 + add r5, r0, #0 + mov r0, #0 + lsl r1, r1, #2 + str r0, [sp, #4] + add r0, r5, r1 + str r0, [sp] + add r0, r1, #0 + add r0, #0x50 + add r1, #0xa0 + add r4, r5, #0 + add r7, r5, r0 + add r6, r5, r1 +_02232B9A: + mov r0, #0x1b + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BAA + ldr r0, [sp] + bl FUN_02019178 +_02232BAA: + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BBA + add r0, r7, #0 + bl FUN_02019178 +_02232BBA: + mov r0, #0x25 + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BCA + add r0, r6, #0 + bl FUN_02019178 +_02232BCA: + ldr r0, [sp] + add r4, #0x14 + add r0, #0x14 + str r0, [sp] + ldr r0, [sp, #4] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #4] + cmp r0, #4 + blt _02232B9A + mov r0, #0xa5 + lsl r0, r0, #2 + add r7, r0, #0 + mov r6, #0 + add r4, r5, r0 + add r7, #0xc +_02232BEC: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232BF8 + add r0, r4, #0 + bl FUN_02019178 +_02232BF8: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #3 + blt _02232BEC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232C08 +MOD12_02232C08: ; 0x02232C08 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + add r6, r5, r0 + mov r0, #0 + str r0, [sp, #0x20] + add r0, r6, #0 + str r0, [sp, #0x18] + add r0, #0x50 + str r0, [sp, #0x18] + add r0, r6, #0 + str r0, [sp, #0x14] + add r0, #0xa0 + add r7, r1, #0 + str r6, [sp, #0x1c] + str r0, [sp, #0x14] +_02232C2C: + ldrh r0, [r7] + cmp r0, #0 + beq _02232C52 + ldr r1, [sp, #0x20] + add r4, r6, r1 + mov r1, #0xa + bl FUN_0206AB18 + mov r1, #0x4b + lsl r1, r1, #2 + strb r0, [r4, r1] + ldrh r0, [r7] + mov r1, #0xb + bl FUN_0206AB18 + mov r1, #0x13 + lsl r1, r1, #4 + strb r0, [r4, r1] + b _02232C62 +_02232C52: + ldr r0, [sp, #0x20] + mov r1, #0 + add r4, r6, r0 + mov r0, #0x4b + lsl r0, r0, #2 + strb r1, [r4, r0] + add r0, r0, #4 + strb r1, [r4, r0] +_02232C62: + ldrh r0, [r7] + mov r1, #0x15 + bl FUN_0200AA14 + str r0, [sp, #0x24] + ldr r0, _02232D6C ; =0x00010708 + ldr r1, [sp, #0x24] + str r0, [sp] + ldr r3, [sp, #0x1c] + add r0, r5, #0 + mov r2, #2 + bl MOD12_02232D7C + ldr r0, [sp, #0x24] + bl FUN_02021A20 + mov r0, #0x4b + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r1, sp, #0x34 + add r2, sp, #0x30 + bl FUN_02083130 + ldr r0, [r5, #4] + ldr r1, [sp, #0x34] + ldr r0, [r0, #0x40] + bl FUN_0200A914 + str r0, [sp, #0x28] + ldr r0, [r5, #4] + ldr r1, [sp, #0x30] + ldr r0, [r0, #0x40] + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, _02232D70 ; =0x00010200 + ldr r1, [sp, #0x28] + str r0, [sp] + ldr r3, [sp, #0x18] + add r0, r5, #0 + mov r2, #0 + bl MOD12_02232D7C + ldr r0, _02232D70 ; =0x00010200 + ldr r3, [sp, #0x14] + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD12_02232D7C + ldr r0, [sp, #0x28] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + add r7, r7, #2 + add r0, #0x14 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, #0x14 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, #0x14 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #4 + blt _02232C2C + mov r7, #0 + add r4, r7, #0 + add r6, #0xf0 +_02232CF8: + ldr r0, [r5, #4] + mov r1, #0x15 + ldr r0, [r0] + add r0, r0, r4 + add r0, #0xd0 + ldrh r0, [r0] + bl MOD12_022314A8 + str r0, [sp, #0x2c] + ldr r0, _02232D74 ; =0x0001090A + ldr r1, [sp, #0x2c] + str r0, [sp] + add r0, r5, #0 + mov r2, #2 + add r3, r6, #0 + bl MOD12_02232D7C + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + add r7, r7, #1 + add r4, #8 + add r6, #0x14 + cmp r7, #3 + blt _02232CF8 + ldr r3, _02232D78 ; =0x000080F1 + ldr r2, [r5, #4] + add r0, r3, #7 + str r3, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r2, #0x18] + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x50] + add r3, #0xc + bl MOD12_02244750 + ldr r3, _02232D78 ; =0x000080F1 + ldr r1, [r5, #4] + add r0, r3, #7 + str r3, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r2, #0x15 + add r3, #0xc + bl MOD12_022447E8 + mov r1, #0xc5 + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232D6C: .word 0x00010708 +_02232D70: .word 0x00010200 +_02232D74: .word 0x0001090A +_02232D78: .word 0x000080F1 + + thumb_func_start MOD12_02232D7C +MOD12_02232D7C: ; 0x02232D7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r7, r2, #0 + add r6, r1, #0 + add r5, r0, #0 + add r4, r3, #0 + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #0x1c + add r3, sp, #0x18 + bl MOD12_02232DE8 + ldr r0, [sp, #0x1c] + strh r0, [r4, #0x12] + ldr r0, [sp, #0x18] + strh r0, [r4, #0x10] + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02232DA8 + add r0, r4, #0 + bl FUN_02019178 +_02232DA8: + add r0, r4, #0 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r5, #4] + ldr r2, [sp, #0x18] + ldr r0, [r0, #0x24] + lsl r2, r2, #0x18 + add r1, r4, #0 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x38] + add r1, r7, #0 + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + add r0, r4, #0 + add r2, r6, #0 + str r3, [sp, #0x14] + bl FUN_0201BE3C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232DE8 +MOD12_02232DE8: ; 0x02232DE8 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r6, r2, #0 + add r0, r1, #0 + add r1, r4, #0 + mov r2, #0 + add r7, r3, #0 + bl FUN_02002E14 + add r4, r0, #0 + asr r1, r4, #2 + lsr r1, r1, #0x1d + add r1, r4, r1 + asr r5, r1, #3 + mov r1, #8 + bl FX_ModS32 + cmp r0, #0 + beq _02232E10 + add r5, r5, #1 +_02232E10: + str r4, [r6] + str r5, [r7] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232E18 +MOD12_02232E18: ; 0x02232E18 + push {r4, r5, r6, lr} + mov r6, #0xc6 + lsl r6, r6, #2 + add r2, r6, #0 + add r5, r0, #0 + sub r2, #0x38 + ldrsb r2, [r5, r2] + ldr r1, _02232E7C ; =0x02245074 + mov r3, #0x30 + add r4, r2, #0 + mul r4, r3 + add r4, r1, r4 + ldr r2, [r4, #0x20] + cmp r2, #0 + bne _02232E3C + sub r3, #0x31 + add r0, r3, #0 + pop {r4, r5, r6, pc} +_02232E3C: + ldrb r1, [r5, r6] + cmp r1, #0 + bne _02232E76 + add r0, r6, #4 + ldrb r0, [r5, r0] + cmp r0, #1 + beq _02232E54 + ldr r1, _02232E80 ; =0x021C48B8 + ldr r2, [r1, #0x48] + ldr r1, _02232E84 ; =0x00000CF3 + tst r1, r2 + beq _02232E70 +_02232E54: + cmp r0, #0 + bne _02232E5E + ldr r0, _02232E88 ; =0x000005DC + bl FUN_020054C8 +_02232E5E: + mov r1, #1 + mov r0, #0xc7 + strb r1, [r5, r6] + mov r2, #0 + lsl r0, r0, #2 + strb r2, [r5, r0] + ldr r2, [r4, #0x20] + add r0, r5, #0 + blx r2 +_02232E70: + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6, pc} +_02232E76: + mov r1, #0 + blx r2 + pop {r4, r5, r6, pc} + .align 2, 0 +_02232E7C: .word 0x02245074 +_02232E80: .word 0x021C48B8 +_02232E84: .word 0x00000CF3 +_02232E88: .word 0x000005DC + + thumb_func_start MOD12_02232E8C +MOD12_02232E8C: ; 0x02232E8C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r1, [sp, #8] + mov r1, #0x31 + add r5, r0, #0 + lsl r1, r1, #4 + add r0, r5, r1 + str r0, [sp, #0xc] + add r0, r1, #0 + sub r1, #0x30 + add r0, #8 + add r6, r5, r0 + ldrsb r1, [r5, r1] + mov r0, #0x30 + ldr r2, _02232FE4 ; =0x02245074 + mul r0, r1 + add r7, r2, r0 + mov r4, #0 + b _02232ED0 +_02232EB2: + ldr r0, [r5, #4] + ldr r1, _02232FE8 ; =0x00000123 + ldr r0, [r0] + mov r2, #0 + ldrb r1, [r0, r1] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + lsl r2, r4, #1 + add r1, sp, #0x10 + strh r0, [r1, r2] + add r4, r4, #1 +_02232ED0: + cmp r4, #4 + blt _02232EB2 + ldr r0, [sp, #8] + cmp r0, #1 + bne _02232F4E + ldr r0, [sp, #0xc] + mov r1, #0 + ldrsb r0, [r0, r1] + mov r4, #1 + strb r0, [r6, #2] + ldr r0, [sp, #0xc] + ldrsb r0, [r0, r4] + strb r0, [r6, #1] + ldrsb r0, [r6, r4] + lsl r3, r0, #1 + mov r0, #2 + ldrsb r2, [r6, r0] + ldr r0, _02232FEC ; =0x02244D58 + add r0, r0, r3 + ldrb r3, [r2, r0] + add r0, sp, #0x10 + lsl r2, r3, #1 + ldrh r0, [r0, r2] + cmp r0, #0 + bne _02232F1A + ldr r0, [sp, #0xc] + strb r1, [r0] + strb r1, [r0, #1] + strb r1, [r6, #2] + strb r1, [r6, #1] + ldrsb r0, [r6, r4] + lsl r2, r0, #1 + mov r0, #2 + ldrsb r1, [r6, r0] + ldr r0, _02232FEC ; =0x02244D58 + add r0, r0, r2 + ldrb r3, [r1, r0] +_02232F1A: + ldr r0, [r7, #0x14] + lsl r3, r3, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r7, #0x14] + mov r0, #0xc5 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + mov r0, #0 + add sp, #0x1c + mvn r0, r0 + pop {r4, r5, r6, r7, pc} +_02232F4E: + ldr r0, _02232FEC ; =0x02244D58 + add r1, sp, #0x18 + mov r2, #4 + bl MI_CpuCopy8 + mov r1, #2 + add r0, r6, #0 + add r2, r1, #0 + add r3, sp, #0x18 + bl MOD12_0223318C + cmp r0, #0x20 + bhi _02232F7E + bhs _02232F8A + cmp r0, #2 + bhi _02232F78 + cmp r0, #1 + blo _02232FDC + beq _02232FC8 + cmp r0, #2 + b _02232FDC +_02232F78: + cmp r0, #0x10 + beq _02232F8A + b _02232FDC +_02232F7E: + cmp r0, #0x40 + bhi _02232F86 + beq _02232F8A + b _02232FDC +_02232F86: + cmp r0, #0x80 + bne _02232FDC +_02232F8A: + mov r0, #1 + ldrsb r0, [r6, r0] + ldr r2, _02232FEC ; =0x02244D58 + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r6, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r7, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r7, #0x14] + mov r0, #0xc5 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + b _02232FDC +_02232FC8: + mov r0, #1 + ldrsb r0, [r6, r0] + ldr r2, _02232FEC ; =0x02244D58 + add sp, #0x1c + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r6, r0] + add r0, r2, r3 + ldrb r0, [r1, r0] + pop {r4, r5, r6, r7, pc} +_02232FDC: + mov r0, #0 + mvn r0, r0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02232FE4: .word 0x02245074 +_02232FE8: .word 0x00000123 +_02232FEC: .word 0x02244D58 + + thumb_func_start MOD12_02232FF0 +MOD12_02232FF0: ; 0x02232FF0 + push {r4, r5, r6, r7} + mov r2, #0x31 + lsl r2, r2, #4 + mov r4, #0 + add r2, r0, r2 + ldr r7, _02233028 ; =0x02244D58 + add r0, r4, #0 + b _0223301E +_02233000: + lsl r5, r4, #1 + add r3, r0, #0 + add r6, r7, r5 + b _02233018 +_02233008: + ldrb r5, [r3, r6] + cmp r1, r5 + bne _02233016 + strb r3, [r2] + strb r4, [r2, #1] + pop {r4, r5, r6, r7} + bx lr +_02233016: + add r3, r3, #1 +_02233018: + cmp r3, #2 + blt _02233008 + add r4, r4, #1 +_0223301E: + cmp r4, #2 + blt _02233000 + pop {r4, r5, r6, r7} + bx lr + nop +_02233028: .word 0x02244D58 + + thumb_func_start MOD12_0223302C +MOD12_0223302C: ; 0x0223302C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r7, #0x31 + lsl r7, r7, #4 + add r3, r7, #0 + add r5, r0, #0 + sub r3, #0x30 + add r0, r7, #0 + ldrsb r6, [r5, r3] + add r0, #8 + add r4, r5, r0 + mov r3, #0x30 + add r2, r1, #0 + ldr r0, _02233144 ; =0x02245074 + mul r3, r6 + add r1, r5, r7 + add r6, r0, r3 + cmp r2, #1 + bne _022330A0 + mov r0, #2 + ldrsb r2, [r1, r0] + strb r2, [r4, #2] + mov r2, #3 + ldrsb r1, [r1, r2] + strb r1, [r4, #1] + mov r1, #1 + ldrsb r2, [r4, r1] + ldrsb r3, [r4, r0] + lsl r1, r2, #1 + add r2, r2, r1 + ldr r1, _02233148 ; =0x02244D5C + add r0, r1, r2 + ldrb r1, [r3, r0] + ldr r0, [r6, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r6, #0x14] + add r0, r7, #4 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022330A0: + ldr r0, _02233148 ; =0x02244D5C + add r1, sp, #8 + mov r2, #6 + bl MI_CpuCopy8 + add r0, r4, #0 + mov r1, #3 + mov r2, #2 + add r3, sp, #8 + bl MOD12_0223318C + cmp r0, #0x20 + bhi _022330D2 + bhs _022330DE + cmp r0, #2 + bhi _022330CC + cmp r0, #1 + blo _0223313A + beq _0223311E + cmp r0, #2 + beq _02233134 + b _0223313A +_022330CC: + cmp r0, #0x10 + beq _022330DE + b _0223313A +_022330D2: + cmp r0, #0x40 + bhi _022330DA + beq _022330DE + b _0223313A +_022330DA: + cmp r0, #0x80 + bne _0223313A +_022330DE: + mov r0, #1 + ldrsb r1, [r4, r0] + ldr r2, _02233148 ; =0x02244D5C + lsl r0, r1, #1 + add r3, r1, r0 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r6, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r6, #0x14] + mov r0, #0xc5 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + b _0223313A +_0223311E: + mov r0, #1 + ldrsb r1, [r4, r0] + ldr r2, _02233148 ; =0x02244D5C + add sp, #0x10 + lsl r0, r1, #1 + add r3, r1, r0 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r0, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_02233134: + add sp, #0x10 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_0223313A: + mov r0, #0 + mvn r0, r0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233144: .word 0x02245074 +_02233148: .word 0x02244D5C + + thumb_func_start MOD12_0223314C +MOD12_0223314C: ; 0x0223314C + push {r4, r5, r6, r7} + cmp r1, #3 + beq _02233184 + mov r2, #0x31 + lsl r2, r2, #4 + add r3, r0, r2 + mov r5, #0 + ldr r0, _02233188 ; =0x02244D5C + add r2, r5, #0 + b _02233180 +_02233160: + lsl r6, r5, #1 + add r6, r5, r6 + add r4, r2, #0 + add r7, r0, r6 + b _0223317A +_0223316A: + ldrb r6, [r4, r7] + cmp r1, r6 + bne _02233178 + strb r4, [r3, #2] + strb r5, [r3, #3] + pop {r4, r5, r6, r7} + bx lr +_02233178: + add r4, r4, #1 +_0223317A: + cmp r4, #3 + blt _0223316A + add r5, r5, #1 +_02233180: + cmp r5, #2 + blt _02233160 +_02233184: + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02233188: .word 0x02244D5C + + thumb_func_start MOD12_0223318C +MOD12_0223318C: ; 0x0223318C + push {r3, r4, r5, r6, r7, lr} + mov r7, #2 + add r4, r1, #0 + ldrsb r1, [r0, r7] + mov r5, #1 + add r6, r2, #0 + str r1, [sp] + ldrsb r1, [r0, r5] + add r2, r3, #0 + mov r3, #0x40 + mov ip, r1 + ldr r1, _02233364 ; =0x021C48B8 + ldr r1, [r1, #0x48] + tst r3, r1 + beq _022331FA + mov r1, ip + sub r1, r1, #1 + strb r1, [r0, #1] + ldrsb r1, [r0, r5] + cmp r1, #0 + bge _022331BA + mov r1, #0 + strb r1, [r0, #1] +_022331BA: + cmp r2, #0 + beq _022331F6 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _022331F6 + add r1, r0, #1 + mov r7, #0 + mov r6, #1 +_022331D6: + ldrsb r3, [r1, r7] + sub r3, r3, #1 + strb r3, [r1] + ldrsb r3, [r0, r6] + cmp r3, #0 + bge _022331E8 + mov r1, ip + strb r1, [r0, #1] + b _022331F6 +_022331E8: + mov r5, #2 + ldrsb r5, [r0, r5] + mul r3, r4 + add r5, r2, r5 + ldrb r3, [r3, r5] + cmp r3, #0xff + beq _022331D6 +_022331F6: + mov r5, #0x40 + b _0223330E +_022331FA: + mov r3, #0x80 + tst r3, r1 + beq _02233250 + mov r1, ip + add r1, r1, #1 + strb r1, [r0, #1] + ldrsb r1, [r0, r5] + cmp r1, r6 + blt _02233210 + sub r1, r6, #1 + strb r1, [r0, #1] +_02233210: + cmp r2, #0 + beq _0223324C + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _0223324C + add r1, r0, #1 + mov r7, #1 +_0223322A: + mov r3, #0 + ldrsb r3, [r1, r3] + add r3, r3, #1 + strb r3, [r1] + ldrsb r3, [r0, r7] + cmp r3, r6 + blt _0223323E + mov r1, ip + strb r1, [r0, #1] + b _0223324C +_0223323E: + mov r5, #2 + ldrsb r5, [r0, r5] + mul r3, r4 + add r5, r2, r5 + ldrb r3, [r3, r5] + cmp r3, #0xff + beq _0223322A +_0223324C: + mov r5, #0x80 + b _0223330E +_02233250: + mov r3, #0x20 + tst r3, r1 + beq _022332A6 + ldr r1, [sp] + sub r1, r1, #1 + strb r1, [r0, #2] + ldrsb r1, [r0, r7] + cmp r1, #0 + bge _02233266 + mov r1, #0 + strb r1, [r0, #2] +_02233266: + cmp r2, #0 + beq _022332A2 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _022332A2 + add r5, r0, #2 + mov r7, #0 + mov r6, #2 +_02233282: + ldrsb r1, [r5, r7] + sub r1, r1, #1 + strb r1, [r5] + ldrsb r3, [r0, r6] + cmp r3, #0 + bge _02233294 + ldr r1, [sp] + strb r1, [r0, #2] + b _022332A2 +_02233294: + mov r1, #1 + ldrsb r1, [r0, r1] + add r3, r2, r3 + mul r1, r4 + ldrb r1, [r1, r3] + cmp r1, #0xff + beq _02233282 +_022332A2: + mov r5, #0x20 + b _0223330E +_022332A6: + mov r3, #0x10 + tst r3, r1 + beq _022332FC + ldr r1, [sp] + add r1, r1, #1 + strb r1, [r0, #2] + ldrsb r1, [r0, r7] + cmp r1, r4 + blt _022332BC + sub r1, r4, #1 + strb r1, [r0, #2] +_022332BC: + cmp r2, #0 + beq _022332F8 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _022332F8 + add r5, r0, #2 + mov r7, #0 + mov r6, #2 +_022332D8: + ldrsb r1, [r5, r7] + add r1, r1, #1 + strb r1, [r5] + ldrsb r3, [r0, r6] + cmp r3, r4 + blt _022332EA + ldr r1, [sp] + strb r1, [r0, #2] + b _022332F8 +_022332EA: + mov r1, #1 + ldrsb r1, [r0, r1] + add r3, r2, r3 + mul r1, r4 + ldrb r1, [r1, r3] + cmp r1, #0xff + beq _022332D8 +_022332F8: + mov r5, #0x10 + b _0223330E +_022332FC: + add r3, r1, #0 + tst r3, r5 + bne _0223330E + tst r1, r7 + beq _0223330A + add r5, r7, #0 + b _0223330E +_0223330A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223330E: + cmp r2, #0 + beq _02233338 + mov r1, ip + add r3, r4, #0 + mul r3, r1 + ldr r1, [sp] + add r1, r1, r3 + mov r3, #2 + ldrsb r6, [r0, r3] + mov r3, #1 + ldrsb r3, [r0, r3] + ldrb r1, [r2, r1] + mul r3, r4 + add r3, r6, r3 + ldrb r2, [r2, r3] + cmp r1, r2 + bne _02233338 + ldr r1, [sp] + strb r1, [r0, #2] + mov r1, ip + strb r1, [r0, #1] +_02233338: + mov r1, #2 + ldrsb r2, [r0, r1] + ldr r1, [sp] + cmp r2, r1 + bne _0223334C + mov r1, #1 + ldrsb r1, [r0, r1] + mov r0, ip + cmp r1, r0 + beq _02233354 +_0223334C: + ldr r0, _02233368 ; =0x000005DC + bl FUN_020054C8 + b _0223335E +_02233354: + mov r0, #0xf0 + tst r0, r5 + beq _0223335E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223335E: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233364: .word 0x021C48B8 +_02233368: .word 0x000005DC + + thumb_func_start MOD12_0223336C +MOD12_0223336C: ; 0x0223336C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + mov r2, #0xb7 + add r4, r1, #0 + str r0, [sp] + lsl r2, r2, #2 + ldr r0, [r4, #4] + ldr r2, [r4, r2] + mov r3, #6 + ldr r0, [r0, #0x24] + ldr r2, [r2, #0x14] + mov r1, #4 + lsl r3, r3, #0xc + bl FUN_02017E14 + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xb6 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022333A8 +MOD12_022333A8: ; 0x022333A8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r1, [r1, r0] + mov r0, #0x30 + mov r4, #0 + ldr r2, _022333F0 ; =0x02245074 + mul r0, r1 + ldr r6, _022333F4 ; =0x0000FFFF + add r5, r2, r0 + add r7, r4, #0 +_022333C0: + ldrh r0, [r5, #4] + cmp r0, r6 + bne _022333D4 + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r7, #0 + bl FUN_0201797C + b _022333E0 +_022333D4: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C +_022333E0: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _022333C0 + ldr r0, [sp] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022333F0: .word 0x02245074 +_022333F4: .word 0x0000FFFF + + thumb_func_start MOD12_022333F8 +MOD12_022333F8: ; 0x022333F8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r2, _02233440 ; =0x000080FB + mov r3, #0x2a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233444 ; =0x000080F6 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x2b + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233444 ; =0x000080F6 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x2c + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02233440: .word 0x000080FB +_02233444: .word 0x000080F6 + + thumb_func_start MOD12_02233448 +MOD12_02233448: ; 0x02233448 + push {r3, r4, r5, lr} + add r5, r2, #0 + ldr r2, _02233474 ; =0x02245168 + bl FUN_0200C154 + mov r1, #0x58 + mul r1, r5 + add r1, #0x28 + lsl r1, r1, #0x10 + mov r3, #0x11 + add r4, r0, #0 + asr r1, r1, #0x10 + mov r2, #0x60 + lsl r3, r3, #0x10 + bl FUN_0200C750 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02233474: .word 0x02245168 + + thumb_func_start MOD12_02233478 +MOD12_02233478: ; 0x02233478 + push {r4, lr} + ldr r1, _02233494 ; =0x000080FB + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02233498 ; =0x000080F6 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02233498 ; =0x000080F6 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233494: .word 0x000080FB +_02233498: .word 0x000080F6 + + thumb_func_start MOD12_0223349C +MOD12_0223349C: ; 0x0223349C + ldr r3, _022334A0 ; =0x0200C3DD + bx r3 + .align 2, 0 +_022334A0: .word 0x0200C3DD + + thumb_func_start MOD12_022334A4 +MOD12_022334A4: ; 0x022334A4 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r2, _022334EC ; =0x000080FA + mov r3, #0x2d + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _022334F0 ; =0x000080F5 + mov r2, #0x2e + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022334F0 ; =0x000080F5 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x2f + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022334EC: .word 0x000080FA +_022334F0: .word 0x000080F5 + + thumb_func_start MOD12_022334F4 +MOD12_022334F4: ; 0x022334F4 + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, [sp, #0x10] + add r6, r3, #0 + cmp r2, #0 + blt _02233508 + ldr r2, _0223352C ; =0x02245134 + bl FUN_0200C154 + b _0223350E +_02233508: + ldr r2, _02233530 ; =0x0224519C + bl FUN_0200C154 +_0223350E: + add r4, r0, #0 + lsl r1, r5, #0x10 + lsl r2, r6, #0x10 + mov r3, #0x11 + add r0, r4, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x10 + bl FUN_0200C750 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223352C: .word 0x02245134 +_02233530: .word 0x0224519C + + thumb_func_start MOD12_02233534 +MOD12_02233534: ; 0x02233534 + ldr r3, _02233538 ; =0x0200C3DD + bx r3 + .align 2, 0 +_02233538: .word 0x0200C3DD + + thumb_func_start MOD12_0223353C +MOD12_0223353C: ; 0x0223353C + push {r4, lr} + ldr r1, _02233558 ; =0x000080FA + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223355C ; =0x000080F5 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223355C ; =0x000080F5 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233558: .word 0x000080FA +_0223355C: .word 0x000080F5 + + thumb_func_start MOD12_02233560 +MOD12_02233560: ; 0x02233560 + ldr r0, _02233568 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_02233568: .word 0x04000050 + + thumb_func_start MOD12_0223356C +MOD12_0223356C: ; 0x0223356C + push {r3, r4, r5, r6, r7, lr} + ldr r0, [r0, #0x30] + add r5, r1, #0 + mov r1, #2 + add r4, r2, #0 + bl FUN_0201886C + mov r1, #0xc0 + mul r1, r5 + lsl r1, r1, #1 + mov r2, #0 + ldr r6, _022335AC ; =0x00000FFF + add r0, r0, r1 + add r3, r2, #0 + lsl r4, r4, #0xc +_0223358A: + lsl r5, r3, #1 + mov r1, #0 + add r5, r0, r5 +_02233590: + ldrh r7, [r5] + add r1, r1, #1 + and r7, r6 + orr r7, r4 + strh r7, [r5] + add r5, r5, #2 + cmp r1, #0xa + blt _02233590 + add r2, r2, #1 + add r3, #0x20 + cmp r2, #6 + blt _0223358A + pop {r3, r4, r5, r6, r7, pc} + nop +_022335AC: .word 0x00000FFF + + thumb_func_start MOD12_022335B0 +MOD12_022335B0: ; 0x022335B0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r4, #0 + ldr r6, _022335DC ; =0x022451D0 + ldr r7, _022335E0 ; =0x00000231 + b _022335CC +_022335BC: + add r2, r5, r4 + ldrb r2, [r2, r7] + add r0, r5, #0 + add r1, r4, #0 + ldrb r2, [r6, r2] + bl MOD12_0223356C + add r4, r4, #1 +_022335CC: + cmp r4, #4 + blt _022335BC + ldr r0, [r5, #0x30] + mov r1, #2 + bl FUN_0201AC68 + pop {r3, r4, r5, r6, r7, pc} + nop +_022335DC: .word 0x022451D0 +_022335E0: .word 0x00000231 + + thumb_func_start MOD12_022335E4 +MOD12_022335E4: ; 0x022335E4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0xc + bl FUN_02016998 + mov r1, #0 + mov r2, #0xc + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [r5, #0x5c] + ldr r2, _02233614 ; =0x00009CA4 + str r0, [r4] + ldr r0, _02233618 ; =MOD12_02233648 + add r1, r4, #0 + strb r6, [r4, #0xa] + bl FUN_0200CA44 + str r0, [r4, #4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_02233614: .word 0x00009CA4 +_02233618: .word MOD12_02233648 + + thumb_func_start MOD12_0223361C +MOD12_0223361C: ; 0x0223361C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0223362A + bl ErrorHandling +_0223362A: + ldr r0, [r4, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD12_02233638 +MOD12_02233638: ; 0x02233638 + mov r1, #1 + strb r1, [r0, #0xb] + mov r1, #0xa + lsl r1, r1, #8 + strh r1, [r0, #8] + bx lr + + thumb_func_start MOD12_02233644 +MOD12_02233644: ; 0x02233644 + ldrb r0, [r0, #0xb] + bx lr + + thumb_func_start MOD12_02233648 +MOD12_02233648: ; 0x02233648 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0223369E + mov r0, #8 + ldrsh r0, [r4, r0] + ldr r2, _022336A4 ; =0x022451D0 + mov r1, #0 + asr r0, r0, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, _022336A8 ; =0x00007FFF + str r0, [sp, #4] + ldrb r3, [r4, #0xa] + ldr r0, [r4] + ldrb r2, [r2, r3] + mov r3, #4 + lsl r2, r2, #4 + add r2, r2, #1 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020039E8 + mov r1, #8 + ldrsh r2, [r4, r1] + cmp r2, #0 + bne _0223368C + mov r0, #0 + add sp, #8 + strb r0, [r4, #0xb] + pop {r4, pc} +_0223368C: + mov r0, #0xa + lsl r0, r0, #6 + sub r0, r2, r0 + strh r0, [r4, #8] + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _0223369E + mov r0, #0 + strh r0, [r4, #8] +_0223369E: + add sp, #8 + pop {r4, pc} + nop +_022336A4: .word 0x022451D0 +_022336A8: .word 0x00007FFF + + thumb_func_start MOD12_022336AC +MOD12_022336AC: ; 0x022336AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + str r0, [sp, #0x18] + add r0, #8 + str r0, [sp, #0x18] + add r6, r1, #0 + lsl r0, r6, #2 + ldr r1, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [r1, r0] + bl FUN_02007534 + lsl r0, r6, #4 + add r0, r5, r0 + ldr r0, [r0, #0x58] + cmp r0, #0 + bne _022336D4 + bl ErrorHandling +_022336D4: + add r2, r5, #0 + add r2, #0x58 + lsl r1, r6, #4 + add r0, r2, r1 + str r0, [sp, #0x14] + ldr r0, [r2, r1] + mov r2, #0x32 + mov r1, #0 + lsl r2, r2, #6 + bl MI_CpuFill8 + ldr r1, [sp, #0x14] + lsl r0, r6, #5 + str r1, [sp] + mov r1, #0x15 + str r1, [sp, #4] + mov r1, #0xd8 + sub r1, r1, r0 + str r1, [sp, #8] + mov r1, #0x70 + sub r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, _02233754 ; =0xFFFFFE00 + add r7, r5, #0 + str r0, [sp, #0x10] + ldr r2, [r5] + lsl r4, r6, #2 + ldr r0, [r5, #4] + ldr r2, [r2, r4] + add r7, #8 + add r1, r6, #0 + mov r3, #0 + bl FUN_02082E64 + str r0, [r7, r4] + ldr r0, [r7, r4] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r7, r4] + mov r1, #0x25 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r5] + mov r1, #5 + ldr r0, [r0, r4] + mov r2, #0 + bl FUN_020671BC + bl MOD08_0222A6C8 + cmp r0, #1 + bne _02233750 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + mov r2, #1 + ldr r0, [r1, r0] + mov r1, #0x23 + bl FUN_02007558 +_02233750: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02233754: .word 0xFFFFFE00 + + thumb_func_start MOD12_02233758 +MOD12_02233758: ; 0x02233758 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0x14] + ldr r7, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x1c] + add r6, r0, #0 + add r0, r7, #0 + str r0, [sp, #0x18] + add r0, #0x58 + ldr r4, [sp, #0x1c] + str r0, [sp, #0x18] + add r5, r7, #0 +_02233772: + ldr r0, [r7, #0x58] + cmp r0, #0 + beq _0223377C + bl ErrorHandling +_0223377C: + mov r1, #0x32 + mov r0, #0x15 + lsl r1, r1, #6 + bl FUN_02016998 + str r0, [r7, #0x58] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x14] + str r0, [sp] + mov r0, #0x15 + str r0, [sp, #4] + mov r0, #0xd8 + sub r0, r0, r6 + str r0, [sp, #8] + mov r0, #0x70 + sub r0, r0, r6 + str r0, [sp, #0xc] + ldr r0, _02233844 ; =0xFFFFFE00 + ldr r1, [sp, #0x1c] + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r2, [r2] + ldr r0, [r0, #4] + ldr r2, [r2, r4] + mov r3, #0 + bl FUN_02082E64 + str r0, [r5, #8] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r5, #8] + mov r1, #0x25 + mov r2, #1 + bl FUN_02007558 + ldr r0, [sp, #0x14] + mov r1, #5 + ldr r0, [r0] + mov r2, #0 + ldr r0, [r0, r4] + bl FUN_020671BC + bl MOD08_0222A6C8 + cmp r0, #1 + bne _022337E6 + ldr r0, [r5, #8] + mov r1, #0x23 + mov r2, #1 + bl FUN_02007558 +_022337E6: + ldr r0, [sp, #0x18] + add r7, #0x10 + add r0, #0x10 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + add r6, #0x20 + add r0, r0, #1 + add r4, r4, #4 + add r5, r5, #4 + str r0, [sp, #0x1c] + cmp r0, #4 + blt _02233772 + ldr r0, [sp, #0x14] + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _0223380C + bl ErrorHandling +_0223380C: + mov r1, #0x32 + mov r0, #0x15 + lsl r1, r1, #6 + bl FUN_02016998 + ldr r1, [sp, #0x14] + mov r2, #0x32 + add r1, #0x98 + str r0, [r1] + ldr r0, [sp, #0x14] + lsl r2, r2, #6 + ldr r1, [r0, #0x60] + add r0, #0xa0 + str r1, [r0] + ldr r0, [sp, #0x14] + ldr r1, [r0, #0x5c] + add r0, #0x9c + str r1, [r0] + ldr r1, [sp, #0x14] + mov r0, #0 + add r1, #0x98 + str r1, [sp, #0x14] + ldr r1, [r1] + bl MIi_CpuClear32 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233844: .word 0xFFFFFE00 + + thumb_func_start MOD12_02233848 +MOD12_02233848: ; 0x02233848 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + str r0, [sp] + add r4, r0, #0 + add r5, r0, #0 + add r7, r6, #0 +_02233854: + ldr r0, [r4, #8] + bl FUN_02007534 + ldr r0, [r5, #0x58] + bl FUN_02016A18 + str r7, [r5, #0x58] + add r6, r6, #1 + add r4, r4, #4 + add r5, #0x10 + cmp r6, #4 + blt _02233854 + ldr r0, [sp] + add r0, #0x98 + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, [sp] + mov r1, #0 + add r0, #0x98 + str r0, [sp] + str r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02233884 +MOD12_02233884: ; 0x02233884 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + ldr r4, [sp, #0x70] + str r0, [sp, #0x18] + add r5, r1, #0 + add r7, r2, #0 + cmp r4, #0 + beq _0223389A + cmp r4, #1 + beq _022338A8 + b _022338B6 +_0223389A: + mov r0, #0x20 + str r0, [sp, #0x20] + mov r0, #0x1e + mov r3, #0x1f + mov r6, #1 + str r0, [sp, #0x1c] + b _022338C2 +_022338A8: + mov r0, #0x26 + str r0, [sp, #0x20] + mov r0, #0x24 + mov r3, #0x25 + mov r6, #3 + str r0, [sp, #0x1c] + b _022338C2 +_022338B6: + mov r0, #0x23 + str r0, [sp, #0x20] + mov r0, #0x21 + mov r3, #0x22 + mov r6, #2 + str r0, [sp, #0x1c] +_022338C2: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223396C ; =0x000080E9 + add r1, r7, #0 + add r0, r4, r0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + bl FUN_0200C00C + mov r0, #0x2e + str r0, [sp] + str r6, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02233970 ; =0x000080EA + mov r1, #2 + add r0, r4, r0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r2, r5, #0 + add r3, r7, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + ldr r0, _0223396C ; =0x000080E9 + ldr r3, [sp, #0x20] + add r0, r4, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x2e + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223396C ; =0x000080E9 + ldr r3, [sp, #0x1c] + add r0, r4, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x2e + bl FUN_0200C13C + ldr r6, _02233974 ; =0x022453D8 + add r3, sp, #0x24 + mov r2, #6 +_0223392C: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223392C + ldr r0, [r6] + add r2, sp, #0x24 + str r0, [r3] + ldr r0, _0223396C ; =0x000080E9 + add r1, r4, r0 + add r0, r0, #1 + add r0, r4, r0 + str r0, [sp, #0x3c] + str r1, [sp, #0x38] + str r1, [sp, #0x40] + str r1, [sp, #0x44] + lsl r1, r4, #5 + add r1, #0x60 + add r0, sp, #0x24 + strh r1, [r0] + mov r1, #0x28 + strh r1, [r0, #2] + add r0, r5, #0 + add r1, r7, #0 + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223396C: .word 0x000080E9 +_02233970: .word 0x000080EA +_02233974: .word 0x022453D8 + + thumb_func_start MOD12_02233978 +MOD12_02233978: ; 0x02233978 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + bl FUN_0200C3DC + ldr r1, _022339B0 ; =0x000080E9 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C358 + ldr r1, _022339B4 ; =0x000080EA + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C368 + ldr r1, _022339B0 ; =0x000080E9 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C378 + ldr r1, _022339B0 ; =0x000080E9 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C388 + pop {r3, r4, r5, pc} + nop +_022339B0: .word 0x000080E9 +_022339B4: .word 0x000080EA + + thumb_func_start MOD12_022339B8 +MOD12_022339B8: ; 0x022339B8 + push {r4, r5, lr} + sub sp, #0xc + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02233A04 ; =0x000080EC + add r4, r2, #0 + add r5, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0x27 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233A04 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x28 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233A04 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x29 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_02233A04: .word 0x000080EC + + thumb_func_start MOD12_02233A08 +MOD12_02233A08: ; 0x02233A08 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + ldr r4, _02233A5C ; =0x0224520C + add r6, r2, #0 + add r3, r0, #0 + add r7, r1, #0 + ldmia r4!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r4] + ldr r5, _02233A60 ; =0x0224533C + str r0, [r2] + add r4, sp, #0xc + mov r2, #6 +_02233A24: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + bne _02233A24 + ldr r0, [r5] + lsl r1, r6, #5 + str r0, [r4] + add r1, #0x60 + add r0, sp, #0 + strh r1, [r0, #0xc] + mov r1, #0x20 + strh r1, [r0, #0xe] + lsl r1, r6, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + add r1, r7, #0 + str r0, [sp, #0x18] + add r0, r3, #0 + add r2, sp, #0xc + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02233A5C: .word 0x0224520C +_02233A60: .word 0x0224533C + + thumb_func_start MOD12_02233A64 +MOD12_02233A64: ; 0x02233A64 + ldr r3, _02233A68 ; =0x0200C3DD + bx r3 + .align 2, 0 +_02233A68: .word 0x0200C3DD + + thumb_func_start MOD12_02233A6C +MOD12_02233A6C: ; 0x02233A6C + push {r4, lr} + ldr r1, _02233A88 ; =0x000080EC + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02233A88 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02233A88 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233A88: .word 0x000080EC + + thumb_func_start MOD12_02233A8C +MOD12_02233A8C: ; 0x02233A8C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + ldr r0, [r7, #0x50] + ldr r1, [r7, #0x18] + ldr r2, [r7, #0x1c] + bl MOD12_022339B8 + mov r4, #0 + add r5, r7, #0 + add r6, #0xd0 +_02233AA2: + ldr r0, [r7, #0x18] + ldr r1, [r7, #0x1c] + add r2, r4, #0 + bl MOD12_02233A08 + add r1, r5, #0 + add r1, #0xb4 + str r0, [r1] + str r4, [sp] + ldr r0, [r7, #0x50] + ldr r1, [r7, #0x18] + ldr r2, [r7, #0x1c] + add r3, r6, #0 + bl MOD12_02233884 + add r1, r5, #0 + add r1, #0xa8 + add r4, r4, #1 + str r0, [r1] + add r5, r5, #4 + add r6, #8 + cmp r4, #3 + blt _02233AA2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02233AD4 +MOD12_02233AD4: ; 0x02233AD4 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02233ADC: + add r1, r5, #0 + add r1, #0xa8 + ldr r0, [r6, #0x1c] + ldr r1, [r1] + add r2, r4, #0 + bl MOD12_02233978 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl MOD12_02233A64 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _02233ADC + ldr r0, [r6, #0x1c] + bl MOD12_02233A6C + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02233B04 +MOD12_02233B04: ; 0x02233B04 + push {r4, r5, lr} + sub sp, #0xc + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02233B50 ; =0x000080F5 + add r4, r2, #0 + add r5, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0xe + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233B54 ; =0x000080F3 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0xd + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233B54 ; =0x000080F3 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0xc + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_02233B50: .word 0x000080F5 +_02233B54: .word 0x000080F3 + + thumb_func_start MOD12_02233B58 +MOD12_02233B58: ; 0x02233B58 + push {r4, lr} + ldr r1, _02233B74 ; =0x000080F5 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02233B78 ; =0x000080F3 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02233B78 ; =0x000080F3 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233B74: .word 0x000080F5 +_02233B78: .word 0x000080F3 + + thumb_func_start MOD12_02233B7C +MOD12_02233B7C: ; 0x02233B7C + push {r4, r5, lr} + sub sp, #0x34 + ldr r4, _02233BB8 ; =0x022452D4 + add r5, r0, #0 + add r3, sp, #0 + mov r2, #6 +_02233B88: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02233B88 + ldr r0, [r4] + add r2, sp, #0 + str r0, [r3] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + bl FUN_0200C154 + add r4, r0, #0 + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4] + bl FUN_0200C59C + mov r0, #0x5f + lsl r0, r0, #2 + str r4, [r5, r0] + add sp, #0x34 + pop {r4, r5, pc} + nop +_02233BB8: .word 0x022452D4 + + thumb_func_start MOD12_02233BBC +MOD12_02233BBC: ; 0x02233BBC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02233BCE + bl ErrorHandling +_02233BCE: + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200C3DC + mov r0, #0x5f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02233BE4 +MOD12_02233BE4: ; 0x02233BE4 + push {r4, r5, r6, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r6, r1, #0 + add r5, r2, #0 + cmp r0, #0 + bne _02233BFA + bl ErrorHandling +_02233BFA: + ldr r1, _02233C60 ; =0x02245200 + lsl r2, r6, #2 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r3, _02233C64 ; =0x02245202 + ldrsh r1, [r1, r2] + ldrsh r2, [r3, r2] + ldr r0, [r4, r0] + bl FUN_0200C714 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r5, #0 + bl FUN_0200C5C0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 + cmp r5, #3 + bhi _02233C5C + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02233C36: ; jump table + .short _02233C3E - _02233C36 - 2 ; case 0 + .short _02233C46 - _02233C36 - 2 ; case 1 + .short _02233C4E - _02233C36 - 2 ; case 2 + .short _02233C56 - _02233C36 - 2 ; case 3 +_02233C3E: + ldr r0, _02233C68 ; =0x000006E1 + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_02233C46: + ldr r0, _02233C6C ; =0x000006DF + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_02233C4E: + ldr r0, _02233C70 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_02233C56: + ldr r0, _02233C70 ; =0x000005DD + bl FUN_020054C8 +_02233C5C: + pop {r4, r5, r6, pc} + nop +_02233C60: .word 0x02245200 +_02233C64: .word 0x02245202 +_02233C68: .word 0x000006E1 +_02233C6C: .word 0x000006DF +_02233C70: .word 0x000005DD + + thumb_func_start MOD12_02233C74 +MOD12_02233C74: ; 0x02233C74 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02233C86 + bl ErrorHandling +_02233C86: + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + pop {r4, pc} + + thumb_func_start MOD12_02233C94 +MOD12_02233C94: ; 0x02233C94 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + mov r0, #0x15 + mov r1, #0x28 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + strb r0, [r7] + str r7, [r4, #4] + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [sp] + str r5, [r4] + strb r0, [r4, #8] + lsl r0, r0, #2 + add r0, r5, r0 + add r0, #0xb4 + ldr r0, [r0] + add r1, #0xc + add r2, #0xe + bl FUN_0200C7A0 + cmp r6, #6 + bhi _02233CEE + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02233CE0: ; jump table + .short _02233CEE - _02233CE0 - 2 ; case 0 + .short _02233D04 - _02233CE0 - 2 ; case 1 + .short _02233D10 - _02233CE0 - 2 ; case 2 + .short _02233D20 - _02233CE0 - 2 ; case 3 + .short _02233D30 - _02233CE0 - 2 ; case 4 + .short _02233D40 - _02233CE0 - 2 ; case 5 + .short _02233D50 - _02233CE0 - 2 ; case 6 +_02233CEE: + mov r0, #1 + strb r0, [r4, #0x18] + ldr r0, _02233D64 ; =0xFFFFFE00 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D04: + ldr r0, _02233D70 ; =MOD12_02233D84 + ldr r2, _02233D68 ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D10: + ldr r0, _02233D74 ; =0xFFFFFD00 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D20: + ldr r0, _02233D78 ; =0xFFFFFC00 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D30: + ldr r0, _02233D7C ; =0xFFFFFB80 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D40: + ldr r0, _02233D80 ; =0xFFFFFD80 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D50: + mov r0, #0xff + mvn r0, r0 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + ldr r2, _02233D68 ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233D64: .word 0xFFFFFE00 +_02233D68: .word 0x00009C40 +_02233D6C: .word MOD12_02233E48 +_02233D70: .word MOD12_02233D84 +_02233D74: .word 0xFFFFFD00 +_02233D78: .word 0xFFFFFC00 +_02233D7C: .word 0xFFFFFB80 +_02233D80: .word 0xFFFFFD80 + + thumb_func_start MOD12_02233D84 +MOD12_02233D84: ; 0x02233D84 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _02233D9A + cmp r0, #1 + beq _02233DB0 + cmp r0, #2 + beq _02233DF0 + b _02233E0A +_02233D9A: + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x10] + mov r0, #0xe + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x14] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] +_02233DB0: + ldrb r0, [r2, #0x18] + mov r1, #1 + tst r0, r1 + beq _02233DC4 + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r3, r0, #8 + lsl r0, r1, #9 + add r0, r3, r0 + b _02233DCE +_02233DC4: + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r3, r0, #8 + lsl r0, r1, #9 + sub r0, r3, r0 +_02233DCE: + str r0, [r2, #0x10] + ldrb r0, [r2, #0x18] + add r0, r0, #1 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0x18] + cmp r0, #4 + bls _02233E1E + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x10] + mov r0, #0 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] + b _02233E1E +_02233DF0: + mov r0, #9 + ldrsb r1, [r2, r0] + add r1, r1, #1 + strb r1, [r2, #9] + ldrsb r0, [r2, r0] + cmp r0, #0xf + ble _02233E1E + mov r0, #0 + strb r0, [r2, #9] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] + b _02233E1E +_02233E0A: + ldr r0, [r2, #4] + mov r1, #1 + strb r1, [r0] + add r0, r2, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} +_02233E1E: + ldrb r0, [r2, #8] + ldr r1, [r2] + ldr r3, [r2, #0x10] + lsl r0, r0, #2 + add r0, r1, r0 + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + ldr r3, [r2, #0x14] + add r0, #0xb4 + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r4, pc} + + thumb_func_start MOD12_02233E48 +MOD12_02233E48: ; 0x02233E48 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _02233E5A + cmp r0, #1 + beq _02233E70 + b _02233ED8 +_02233E5A: + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x10] + mov r0, #0xe + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x14] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] +_02233E70: + mov r0, #0x24 + ldrsh r1, [r2, r0] + ldr r3, [r2, #0x14] + add r1, r3, r1 + str r1, [r2, #0x14] + ldrsh r0, [r2, r0] + add r0, #0x80 + strh r0, [r2, #0x24] + mov r0, #0xe + ldrsh r0, [r2, r0] + lsl r1, r0, #8 + ldr r0, [r2, #0x14] + cmp r0, r1 + blt _02233EAE + str r1, [r2, #0x14] + ldrb r0, [r2, #0x18] + cmp r0, #0 + beq _02233EA8 + mov r0, #0x26 + ldrsh r0, [r2, r0] + strh r0, [r2, #0x24] + ldrb r0, [r2, #0x18] + sub r0, r0, #1 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0xa] + sub r0, r0, #1 + strb r0, [r2, #0xa] + b _02233EAE +_02233EA8: + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] +_02233EAE: + ldrb r0, [r2, #8] + ldr r1, [r2] + ldr r3, [r2, #0x10] + lsl r0, r0, #2 + add r0, r1, r0 + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + ldr r3, [r2, #0x14] + add r0, #0xb4 + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r4, pc} +_02233ED8: + ldr r0, [r2, #4] + mov r1, #1 + strb r1, [r0] + add r0, r2, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD12_02233EEC +MOD12_02233EEC: ; 0x02233EEC + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, #0xc0 + ldr r0, [r0] + add r4, r1, #0 + cmp r0, #0 + beq _02233F00 + bl ErrorHandling +_02233F00: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02233F70 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r3, #0x14 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233F70 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r3, #0x13 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233F70 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r3, #0x12 + bl FUN_0200C13C + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + ldr r2, _02233F74 ; =0x02245370 + bl FUN_0200C154 + add r1, r5, #0 + add r1, #0xc0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_0200C59C + lsl r1, r4, #5 + add r5, #0xc0 + add r1, #0x60 + lsl r1, r1, #0x10 + ldr r0, [r5] + asr r1, r1, #0x10 + mov r2, #0x38 + bl FUN_0200C714 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02233F70: .word 0x000080ED +_02233F74: .word 0x02245370 + + thumb_func_start MOD12_02233F78 +MOD12_02233F78: ; 0x02233F78 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r1, _02233FA8 ; =0x000080ED + bl FUN_0200C358 + ldr r0, [r4, #0x1c] + ldr r1, _02233FA8 ; =0x000080ED + bl FUN_0200C378 + ldr r0, [r4, #0x1c] + ldr r1, _02233FA8 ; =0x000080ED + bl FUN_0200C388 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + bl FUN_0200C3DC + mov r0, #0 + add r4, #0xc0 + str r0, [r4] + pop {r4, pc} + nop +_02233FA8: .word 0x000080ED + + thumb_func_start MOD12_02233FAC +MOD12_02233FAC: ; 0x02233FAC + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _02233FF4 ; =0x000080EE + mov r3, #0x11 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233FF4 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x10 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233FF4 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0xf + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_02233FF4: .word 0x000080EE + + thumb_func_start MOD12_02233FF8 +MOD12_02233FF8: ; 0x02233FF8 + push {r4, lr} + ldr r1, _02234014 ; =0x000080EE + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02234014 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02234014 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02234014: .word 0x000080EE + + thumb_func_start MOD12_02234018 +MOD12_02234018: ; 0x02234018 + push {r4, r5, r6, lr} + mov r2, #0x18 + mov r4, #0 + mul r2, r1 + add r5, r0, r2 + add r6, r4, #0 +_02234024: + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _02234038 + bl FUN_0200C3DC + add r0, r5, #0 + add r0, #0xc4 + str r6, [r0] +_02234038: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02234024 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02234044 +MOD12_02234044: ; 0x02234044 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0223404A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02234018 + add r4, r4, #1 + cmp r4, #4 + blt _0223404A + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223405C +MOD12_0223405C: ; 0x0223405C + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, _02234084 ; =0x022453A4 + add r4, r3, #0 + bl FUN_0200C154 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C59C + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_02234084: .word 0x022453A4 + + thumb_func_start MOD12_02234088 +MOD12_02234088: ; 0x02234088 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + add r7, r1, #0 + add r0, r3, #0 + mov r1, #0xa + str r2, [sp, #4] + bl _s32_div_f + str r0, [sp, #8] + cmp r0, #0x18 + ble _022340A4 + mov r0, #0x18 + str r0, [sp, #8] +_022340A4: + mov r0, #0x18 + add r1, r7, #0 + mul r1, r0 + ldr r0, [sp] + ldr r4, [sp, #8] + mov r6, #0 + add r5, r0, r1 + b _022340CE +_022340B4: + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _022340CC + bl FUN_0200C3DC + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xc4 + str r6, [r0] +_022340CC: + add r4, r4, #1 +_022340CE: + cmp r4, #6 + blt _022340B4 + ldr r0, [sp, #8] + add r1, r7, #0 + sub r4, r0, #1 + mov r0, #0x18 + mul r1, r0 + ldr r0, [sp] + add r7, r0, r1 + ldr r0, [sp, #4] + ldr r1, _02234190 ; =0x02245228 + lsl r0, r0, #2 + str r0, [sp, #0xc] + add r0, r1, r0 + str r0, [sp, #0x10] + b _02234170 +_022340EE: + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + add r5, r1, #0 + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + str r0, [sp, #0x14] + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + bne _0223414C + ldr r3, _02234190 ; =0x02245228 + ldr r2, [sp, #0xc] + ldr r0, [sp] + ldrsh r3, [r3, r2] + lsl r2, r5, #3 + ldr r1, [sp] + add r2, r3, r2 + ldr r6, [sp, #0x10] + mov r3, #2 + ldrsh r3, [r6, r3] + ldr r0, [r0, #0x18] + ldr r1, [r1, #0x1c] + bl MOD12_0223405C + lsl r2, r5, #2 + add r1, r7, r2 + add r1, #0xc4 + str r0, [r1] + add r0, r7, r2 + add r0, #0xc4 + ldr r0, [r0] + ldr r1, [sp, #0x14] + bl FUN_0200C5C0 + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + bl MOD12_0223419C + b _0223416E +_0223414C: + bl FUN_0200C5CC + ldr r1, [sp, #0x14] + cmp r0, r1 + bhs _0223416E + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_0200C5C0 + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + bl MOD12_0223419C +_0223416E: + sub r4, r4, #1 +_02234170: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bgt _022340EE + ldr r0, _02234194 ; =0x000006E1 + bl FUN_020054C8 + ldr r2, [sp, #8] + ldr r0, _02234194 ; =0x000006E1 + sub r2, r2, #1 + ldr r1, _02234198 ; =0x0000FFFF + lsl r2, r2, #6 + bl FUN_02004D34 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234190: .word 0x02245228 +_02234194: .word 0x000006E1 +_02234198: .word 0x0000FFFF + + thumb_func_start MOD12_0223419C +MOD12_0223419C: ; 0x0223419C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x15 + mov r1, #0x10 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x10 + add r4, r0, #0 + bl MI_CpuFill8 + add r0, r5, #0 + mov r1, #0 + str r5, [r4] + bl FUN_0200C644 + ldr r0, _022341C8 ; =MOD12_022341D0 + ldr r2, _022341CC ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_022341C8: .word MOD12_022341D0 +_022341CC: .word 0x00009C40 + + thumb_func_start MOD12_022341D0 +MOD12_022341D0: ; 0x022341D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _022341E6 + cmp r0, #1 + beq _02234202 + cmp r0, #2 + beq _0223423C + b _0223428A +_022341E6: + ldr r0, [r4] + mov r1, #2 + bl FUN_0200C840 + ldr r0, _022342A0 ; =0x3DCCCCCD + mov r1, #1 + str r0, [r4, #4] + str r0, [r4, #8] + ldr r0, [r4] + bl FUN_0200C644 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02234202: + ldr r0, [r4, #4] + ldr r1, _022342A4 ; =0x3E99999A + bl _fadd + str r0, [r4, #4] + ldr r0, [r4, #8] + ldr r1, _022342A4 ; =0x3E99999A + bl _fadd + str r0, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl FUN_0200C884 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C8BC + mov r1, #0xff + ldr r0, [r4, #4] + lsl r1, r1, #0x16 + bl _fgeq + blo _0223429E + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223423C: + ldr r0, [r4, #4] + ldr r1, _022342A4 ; =0x3E99999A + bl _fsub + str r0, [r4, #4] + ldr r0, [r4, #8] + ldr r1, _022342A4 ; =0x3E99999A + bl _fsub + str r0, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl FUN_0200C884 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C8BC + mov r1, #0xfe + ldr r0, [r4, #4] + lsl r1, r1, #0x16 + bl _fleq + bhi _0223429E + mov r1, #0xfe + lsl r1, r1, #0x16 + ldr r0, [r4] + add r2, r1, #0 + bl FUN_0200C884 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C898 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223428A: + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C840 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223429E: + pop {r3, r4, r5, pc} + .align 2, 0 +_022342A0: .word 0x3DCCCCCD +_022342A4: .word 0x3E99999A + + thumb_func_start MOD12_022342A8 +MOD12_022342A8: ; 0x022342A8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223432C ; =0x000080F0 + mov r3, #0x1a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223432C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x19 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223432C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x18 + bl FUN_0200C13C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02234330 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x1d + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02234330 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x1c + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02234330 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x1b + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0223432C: .word 0x000080F0 +_02234330: .word 0x000080EF + + thumb_func_start MOD12_02234334 +MOD12_02234334: ; 0x02234334 + push {r4, lr} + ldr r1, _02234368 ; =0x000080F0 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02234368 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02234368 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C388 + ldr r1, _0223436C ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223436C ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223436C ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02234368: .word 0x000080F0 +_0223436C: .word 0x000080EF + + thumb_func_start MOD12_02234370 +MOD12_02234370: ; 0x02234370 + push {r3, r4, r5, r6, r7, lr} + mov r2, #0x14 + mov r4, #0 + mul r2, r1 + mov r7, #0x49 + add r5, r0, r2 + add r6, r4, #0 + lsl r7, r7, #2 +_02234380: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02234390 + bl FUN_0200C3DC + mov r0, #0x49 + lsl r0, r0, #2 + str r6, [r5, r0] +_02234390: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02234380 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223439C +MOD12_0223439C: ; 0x0223439C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_022343A2: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02234370 + add r4, r4, #1 + cmp r4, #3 + blt _022343A2 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022343B4 +MOD12_022343B4: ; 0x022343B4 + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, _022343DC ; =0x02245308 + add r4, r3, #0 + bl FUN_0200C154 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C59C + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_022343DC: .word 0x02245308 + + thumb_func_start MOD12_022343E0 +MOD12_022343E0: ; 0x022343E0 + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, _02234408 ; =0x02245238 + add r4, r3, #0 + bl FUN_0200C154 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C59C + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_02234408: .word 0x02245238 + + thumb_func_start MOD12_0223440C +MOD12_0223440C: ; 0x0223440C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + cmp r0, #5 + bls _0223441E + b _022345AC +_0223441E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223442A: ; jump table + .short _02234436 - _0223442A - 2 ; case 0 + .short _0223447C - _0223442A - 2 ; case 1 + .short _022344BC - _0223442A - 2 ; case 2 + .short _022344EC - _0223442A - 2 ; case 3 + .short _0223452A - _0223442A - 2 ; case 4 + .short _0223457C - _0223442A - 2 ; case 5 +_02234436: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0200C840 + mov r0, #2 + ldr r1, [r4, #0x10] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r4, #0x20] + mov r0, #0x12 + ldr r1, [r4, #0x14] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [r4, #0x24] + ldr r1, [r4, #0x20] + ldr r0, [r4, #0x10] + sub r0, r1, r0 + mov r1, #0xa + bl _s32_div_f + strh r0, [r4, #0x28] + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + mov r1, #0xa + bl _s32_div_f + strh r0, [r4, #0x2a] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] +_0223447C: + mov r1, #0x28 + ldrsh r0, [r4, r1] + ldr r2, [r4, #0x10] + add r0, r2, r0 + str r0, [r4, #0x10] + mov r0, #0x2a + ldrsh r0, [r4, r0] + ldr r2, [r4, #0x14] + add r0, r2, r0 + str r0, [r4, #0x14] + ldrsh r2, [r4, r1] + cmp r2, #0 + ble _0223449E + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + bge _022344AC +_0223449E: + cmp r2, #0 + bge _022344AA + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + ble _022344AC +_022344AA: + b _022345D0 +_022344AC: + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_022344BC: + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + cmp r0, #3 + bls _022345D0 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_022344EC: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x20] + add r0, r4, #0 + add r0, #0x2d + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x24] + ldr r1, [r4, #0x20] + ldr r0, [r4, #0x10] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + strh r0, [r4, #0x28] + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + strh r0, [r4, #0x2a] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] +_0223452A: + mov r1, #0x28 + ldrsh r0, [r4, r1] + ldr r2, [r4, #0x10] + add r0, r2, r0 + str r0, [r4, #0x10] + mov r0, #0x2a + ldrsh r0, [r4, r0] + ldr r2, [r4, #0x14] + add r0, r2, r0 + str r0, [r4, #0x14] + ldrsh r2, [r4, r1] + cmp r2, #0 + ble _0223454C + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + bge _02234558 +_0223454C: + cmp r2, #0 + bge _022345D0 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + bgt _022345D0 +_02234558: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x2d + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x14] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_0223457C: + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + cmp r0, #2 + bls _022345D0 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_022345AC: + ldr r0, [r4, #4] + bl FUN_0200C3DC + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_0200C644 + mov r0, #0x6e + lsl r0, r0, #4 + bl FUN_020054C8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_022345D0: + mov r1, #2 + ldr r0, [r4, #4] + lsl r1, r1, #0xc + bl FUN_0200C8BC + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r4, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022345FC +MOD12_022345FC: ; 0x022345FC + push {r4, r5, r6, lr} + mov r2, #0x14 + mul r2, r1 + mov r6, #0x49 + mov r4, #0 + add r5, r0, r2 + lsl r6, r6, #2 +_0223460A: + ldr r0, [r5, r6] + cmp r0, #0 + beq _0223461C + bl FUN_0200C658 + cmp r0, #0 + bne _0223461C + mov r0, #0 + pop {r4, r5, r6, pc} +_0223461C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _0223460A + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02234628 +MOD12_02234628: ; 0x02234628 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r4, r2, #0 + str r0, [sp, #0x1c] + str r1, [sp] + add r0, r4, #0 + mov r1, #0xa + bl _s32_div_f + str r0, [sp, #4] + cmp r0, #5 + ble _02234644 + bl ErrorHandling +_02234644: + ldr r0, [sp] + mov r1, #0x14 + lsl r7, r0, #2 + ldr r0, _02234770 ; =0x022451F4 + mov r5, #0 + add r0, r0, r7 + str r0, [sp, #0xc] + ldr r0, [sp] + mul r1, r0 + ldr r0, [sp, #0x1c] + add r0, r0, r1 + str r0, [sp, #8] + ldr r0, _02234774 ; =0x02245200 + add r0, r0, r7 + str r0, [sp, #0x10] + ldr r0, [sp] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + b _02234738 +_02234672: + ldr r0, [sp, #8] + lsl r2, r5, #2 + add r1, r0, r2 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02234736 + ldr r3, _02234770 ; =0x022451F4 + ldr r0, [sp, #0x1c] + ldrsh r3, [r3, r7] + add r2, r5, r2 + ldr r4, [sp, #0xc] + ldr r1, [sp, #0x1c] + add r2, r3, r2 + mov r3, #2 + ldrsh r3, [r4, r3] + ldr r0, [r0, #0x18] + ldr r1, [r1, #0x1c] + bl MOD12_022343B4 + ldr r1, [sp, #8] + lsl r2, r5, #2 + add r2, r1, r2 + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r2, r1] + add r0, r1, #0 + ldr r0, [r2, r0] + mov r1, #0 + bl FUN_0200C644 + mov r0, #0x15 + mov r1, #0x34 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x34 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x1c] + lsl r1, r5, #2 + str r0, [r4] + ldr r0, [sp, #8] + ldr r2, _02234774 ; =0x02245200 + add r1, r0, r1 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r6, [sp, #0x10] + str r0, [r4, #8] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x1c] + mov r3, #2 + ldrsh r2, [r2, r7] + ldrsh r3, [r6, r3] + ldr r0, [r0, #0x18] + ldr r1, [r1, #0x1c] + bl MOD12_022343E0 + str r0, [r4, #4] + ldr r0, _02234774 ; =0x02245200 + ldr r1, [sp, #0x10] + ldrsh r0, [r0, r7] + ldr r2, _02234778 ; =0x00009C40 + lsl r0, r0, #8 + str r0, [r4, #0x10] + mov r0, #2 + ldrsh r0, [r1, r0] + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, _02234770 ; =0x022451F4 + ldrsh r1, [r0, r7] + lsl r0, r5, #2 + add r0, r5, r0 + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] + ldr r1, [sp, #0xc] + mov r0, #2 + ldrsh r1, [r1, r0] + add r0, r4, #0 + add r0, #0x2d + strb r1, [r0] + add r1, r4, #0 + ldr r0, [sp, #0x14] + add r1, #0x30 + strb r0, [r1] + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x31 + strb r0, [r1] + ldr r0, _0223477C ; =MOD12_0223440C + add r1, r4, #0 + bl FUN_0200CA44 +_02234736: + add r5, r5, #1 +_02234738: + ldr r0, [sp, #4] + cmp r5, r0 + blt _02234672 + ldr r0, [sp] + mov r1, #0x14 + mul r1, r0 + ldr r0, [sp, #0x1c] + mov r7, #0x49 + lsl r7, r7, #2 + add r4, r0, r1 + add r6, r7, #0 + b _02234768 +_02234750: + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, r6] + cmp r0, #0 + beq _02234766 + bl FUN_0200C3DC + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0 + str r0, [r1, r7] +_02234766: + add r5, r5, #1 +_02234768: + cmp r5, #5 + blt _02234750 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234770: .word 0x022451F4 +_02234774: .word 0x02245200 +_02234778: .word 0x00009C40 +_0223477C: .word MOD12_0223440C + + thumb_func_start MOD12_02234780 +MOD12_02234780: ; 0x02234780 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + str r0, [sp] + cmp r2, #1 + bne _02234790 + mov r6, #1 + b _02234792 +_02234790: + mov r6, #0 +_02234792: + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp] + str r0, [sp, #8] + str r0, [sp, #4] +_0223479C: + ldr r5, [sp] + mov r4, #0 +_022347A0: + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + cmp r0, #0 + beq _022347BC + add r1, r7, #0 + bl FUN_0200C90C + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + add r1, r6, #0 + bl FUN_0200C644 +_022347BC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _022347A0 + mov r1, #0x5b + ldr r0, [sp, #8] + lsl r1, r1, #2 + ldr r0, [r0, r1] + cmp r0, #0 + beq _022347E4 + add r1, r7, #0 + bl FUN_0200C90C + mov r1, #0x5b + ldr r0, [sp, #8] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + bl FUN_0200C644 +_022347E4: + mov r1, #0x63 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r7, #0 + bl FUN_02011AF0 + mov r1, #0x77 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r7, #0 + bl FUN_02011AF0 + mov r1, #0x63 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + bl FUN_020119D0 + mov r1, #0x77 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + bl FUN_020119D0 + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #8] + add r0, r0, #4 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, #0x14 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #4 + blt _0223479C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223483C +MOD12_0223483C: ; 0x0223483C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r0, #0 + strb r0, [r7] + mov r0, #0x15 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + str r5, [r4] + mov r2, #0xfa + strb r6, [r4, #0xd] + ldr r0, _02234870 ; =MOD12_02234874 + add r1, r4, #0 + lsl r2, r2, #2 + str r7, [r4, #4] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02234870: .word MOD12_02234874 + + thumb_func_start MOD12_02234874 +MOD12_02234874: ; 0x02234874 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #3 + bls _02234882 + b _022349B8 +_02234882: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223488E: ; jump table + .short _02234896 - _0223488E - 2 ; case 0 + .short _022348F2 - _0223488E - 2 ; case 1 + .short _02234926 - _0223488E - 2 ; case 2 + .short _0223497A - _0223488E - 2 ; case 3 +_02234896: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _022348BE + mov r0, #1 + lsl r0, r0, #0xc + strh r0, [r4, #8] + mov r1, #0 + strh r1, [r4, #0xa] + ldr r0, _022349D0 ; =0x04000050 + str r1, [sp] + mov r2, #0xe + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_02234780 + b _022348E0 +_022348BE: + mov r3, #0 + mov r0, #1 + strh r3, [r4, #8] + lsl r0, r0, #0xc + strh r0, [r4, #0xa] + mov r0, #0x10 + str r0, [sp] + ldr r0, _022349D0 ; =0x04000050 + mov r1, #4 + mov r2, #0xe + bl G2x_SetBlendAlpha_ + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + bl MOD12_0222DF30 +_022348E0: + ldr r0, _022349D4 ; =MOD12_022349D8 + add r1, r4, #0 + mov r2, #0xa + bl FUN_0200CA98 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022348F2: + ldrb r1, [r4, #0xd] + cmp r1, #0 + bne _02234912 + mov r0, #8 + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _02234912 + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_02234780 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02234912: + cmp r1, #1 + bne _022349CE + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _022349CE + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02234926: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _02234946 + mov r0, #1 + lsl r0, r0, #0xc + strh r0, [r4, #8] + mov r0, #0 + strh r0, [r4, #0xa] + str r0, [sp] + ldr r0, _022349D0 ; =0x04000050 + mov r1, #4 + mov r2, #0xe + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + b _02234968 +_02234946: + mov r1, #0 + mov r0, #1 + strh r1, [r4, #8] + lsl r0, r0, #0xc + strh r0, [r4, #0xa] + mov r0, #0x10 + str r0, [sp] + ldr r0, _022349D0 ; =0x04000050 + mov r2, #0xe + add r3, r1, #0 + bl G2x_SetBlendAlpha_ + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_02234780 +_02234968: + ldr r0, _022349D4 ; =MOD12_022349D8 + add r1, r4, #0 + mov r2, #0xa + bl FUN_0200CA98 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223497A: + ldrb r1, [r4, #0xd] + cmp r1, #0 + bne _0223499A + mov r0, #8 + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _0223499A + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_0222DF30 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223499A: + cmp r1, #1 + bne _022349CE + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _022349CE + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + bl MOD12_02234780 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022349B8: + bl MOD12_02233560 + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022349CE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022349D0: .word 0x04000050 +_022349D4: .word MOD12_022349D8 + + thumb_func_start MOD12_022349D8 +MOD12_022349D8: ; 0x022349D8 + push {r3, r4, r5, lr} + ldrb r3, [r1, #0xd] + mov r2, #0 + cmp r3, #0 + bne _02234A10 + mov r4, #8 + ldrsh r5, [r1, r4] + lsl r3, r4, #8 + sub r3, r5, r3 + strh r3, [r1, #8] + mov r3, #0xa + ldrsh r5, [r1, r3] + lsl r3, r4, #8 + add r3, r5, r3 + strh r3, [r1, #0xa] + ldrsh r3, [r1, r4] + cmp r3, #0 + bgt _02234A00 + strh r2, [r1, #8] + add r2, r2, #1 +_02234A00: + mov r3, #0xa + ldrsh r4, [r1, r3] + mov r3, #1 + lsl r3, r3, #0xc + cmp r4, r3 + blt _02234A3C + strh r3, [r1, #0xa] + b _02234A3C +_02234A10: + mov r4, #8 + ldrsh r5, [r1, r4] + lsl r3, r4, #8 + add r3, r5, r3 + strh r3, [r1, #8] + mov r3, #0xa + ldrsh r5, [r1, r3] + lsl r3, r4, #8 + sub r3, r5, r3 + strh r3, [r1, #0xa] + ldrsh r5, [r1, r4] + lsl r3, r4, #9 + cmp r5, r3 + blt _02234A30 + strh r3, [r1, #8] + add r2, r2, #1 +_02234A30: + mov r3, #0xa + ldrsh r3, [r1, r3] + cmp r3, #0 + bgt _02234A3C + mov r3, #0 + strh r3, [r1, #0xa] +_02234A3C: + mov r3, #8 + ldrsh r3, [r1, r3] + asr r4, r3, #8 + mov r3, #0xa + ldrsh r3, [r1, r3] + mov r1, #0xff + bic r3, r1 + orr r3, r4 + ldr r1, _02234A5C ; =0x04000052 + cmp r2, #0 + strh r3, [r1] + ble _02234A58 + bl FUN_0200CAB4 +_02234A58: + pop {r3, r4, r5, pc} + nop +_02234A5C: .word 0x04000052 + + thumb_func_start MOD12_02234A60 +MOD12_02234A60: ; 0x02234A60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + add r6, r3, #0 + cmp r7, #2 + blt _02234A78 + cmp r5, #0 + bne _02234A78 + bl ErrorHandling +_02234A78: + cmp r7, #0x1c + bls _02234A7E + b _02234EF2 +_02234A7E: + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02234A8A: ; jump table + .short _02234EF6 - _02234A8A - 2 ; case 0 + .short _02234AC4 - _02234A8A - 2 ; case 1 + .short _02234AE2 - _02234A8A - 2 ; case 2 + .short _02234AFC - _02234A8A - 2 ; case 3 + .short _02234B16 - _02234A8A - 2 ; case 4 + .short _02234B24 - _02234A8A - 2 ; case 5 + .short _02234B38 - _02234A8A - 2 ; case 6 + .short _02234B50 - _02234A8A - 2 ; case 7 + .short _02234B80 - _02234A8A - 2 ; case 8 + .short _02234BA4 - _02234A8A - 2 ; case 9 + .short _02234BD0 - _02234A8A - 2 ; case 10 + .short _02234BFE - _02234A8A - 2 ; case 11 + .short _02234C2E - _02234A8A - 2 ; case 12 + .short _02234C52 - _02234A8A - 2 ; case 13 + .short _02234C7E - _02234A8A - 2 ; case 14 + .short _02234CAE - _02234A8A - 2 ; case 15 + .short _02234CD2 - _02234A8A - 2 ; case 16 + .short _02234CF6 - _02234A8A - 2 ; case 17 + .short _02234D16 - _02234A8A - 2 ; case 18 + .short _02234D3A - _02234A8A - 2 ; case 19 + .short _02234D64 - _02234A8A - 2 ; case 20 + .short _02234D8E - _02234A8A - 2 ; case 21 + .short _02234DAC - _02234A8A - 2 ; case 22 + .short _02234DD6 - _02234A8A - 2 ; case 23 + .short _02234E04 - _02234A8A - 2 ; case 24 + .short _02234E32 - _02234A8A - 2 ; case 25 + .short _02234E54 - _02234A8A - 2 ; case 26 + .short _02234E7E - _02234A8A - 2 ; case 27 + .short _02234EB6 - _02234A8A - 2 ; case 28 +_02234AC4: + mov r0, #0xca + lsl r0, r0, #2 + ldrb r0, [r4, r0] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234AE2: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234AFC: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B16: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B24: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B38: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B50: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B80: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234BA4: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234BD0: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #1 + bl FUN_0200B244 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234BFE: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234C2E: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234C52: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234C7E: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234CAE: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234CD2: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234CF6: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D16: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D3A: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D64: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D8E: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234DAC: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234DD6: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E04: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E32: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E54: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E7E: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #1 + bl FUN_0200B244 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #2 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234EB6: + ldrb r2, [r6] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + mov r5, #0 +_02234ECC: + add r0, r6, r5 + ldrb r0, [r0, #1] + cmp r0, #4 + beq _02234EF6 + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + add r1, r5, #1 + bl FUN_0200ACF8 + add r5, r5, #1 + cmp r5, #4 + blt _02234ECC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234EF2: + bl ErrorHandling +_02234EF6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02234EFC +MOD12_02234EFC: ; 0x02234EFC + push {r4, lr} + add r4, r0, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + add r4, #0x34 + add r0, r4, #0 + bl FUN_020191D0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02234F14 +MOD12_02234F14: ; 0x02234F14 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [sp, #0x30] + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp, #0xc] + cmp r0, #1 + bne _02234F2A + mov r4, #0 + b _02234F42 +_02234F2A: + ldr r1, [r5] + ldr r0, _02234FA8 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _02234F40 + ldr r0, _02234FAC ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _02234F42 +_02234F40: + mov r4, #1 +_02234F42: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + add r0, r5, #0 + bl MOD12_02234A60 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x58] + add r0, #0x34 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x8b + lsl r1, r1, #2 + strb r0, [r5, r1] + cmp r4, #0 + bne _02234F96 + mov r0, #0xff + strb r0, [r5, r1] + add r0, r5, #0 + add r0, #0x34 + bl FUN_020191D0 +_02234F96: + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_02017B48 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234FA8: .word 0x00000171 +_02234FAC: .word 0x00001988 + + thumb_func_start MOD12_02234FB0 +MOD12_02234FB0: ; 0x02234FB0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r7, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + cmp r5, #0x2f + blo _02234FC4 + bl ErrorHandling +_02234FC4: + ldr r0, _02234FE4 ; =0x0224540F + lsl r3, r5, #2 + ldrb r0, [r0, r3] + str r4, [sp] + ldr r2, _02234FE8 ; =0x0224540C + str r6, [sp, #4] + str r0, [sp, #8] + ldr r4, _02234FEC ; =0x0224540E + ldrh r2, [r2, r3] + ldrb r3, [r4, r3] + ldr r1, [r7, #0x44] + add r0, r7, #0 + bl MOD12_02234F14 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02234FE4: .word 0x0224540F +_02234FE8: .word 0x0224540C +_02234FEC: .word 0x0224540E + + thumb_func_start MOD12_02234FF0 +MOD12_02234FF0: ; 0x02234FF0 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + add r5, r3, #0 + add r0, r1, #0 + add r1, r2, #0 + add r2, sp, #0x10 + add r3, sp, #0xc + bl FUN_02083170 + ldr r0, [sp, #0x20] + str r5, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r4, #0x50] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + add r0, r4, #0 + bl MOD12_02234F14 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02235020 +MOD12_02235020: ; 0x02235020 + push {r3, lr} + mov r1, #0x8b + lsl r1, r1, #2 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _02235030 + mov r0, #0 + pop {r3, pc} +_02235030: + bl FUN_0201BD70 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02235038 +MOD12_02235038: ; 0x02235038 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0xc + mov r1, #0x15 + bl FUN_020219F4 + str r0, [sp, #0x30] + lsl r0, r4, #2 + ldr r1, [r5, #0xc] + str r0, [sp, #0x2c] + ldr r0, [r1, r0] + ldr r2, [sp, #0x30] + mov r1, #0x76 + bl FUN_020671BC + ldr r1, [r5] + ldr r0, _022350E8 ; =0x00000123 + ldrb r0, [r1, r0] + cmp r4, r0 + bne _02235068 + ldr r6, _022350EC ; =0x00010200 + b _0223506A +_02235068: + ldr r6, _022350F0 ; =0x00050600 +_0223506A: + mov r0, #0x14 + add r7, r4, #0 + mul r7, r0 + mov r0, #0x77 + lsl r0, r0, #2 + add r0, r5, r0 + add r0, r0, r7 + str r0, [sp] + ldr r0, [sp, #0x30] + mov r1, #0 + str r0, [sp, #4] + str r1, [sp, #8] + str r6, [sp, #0xc] + ldr r0, _022350F4 ; =0x000080ED + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + mov r0, #0xf + str r0, [sp, #0x28] + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x28] + ldr r3, [r5, #0x60] + mov r0, #0x15 + bl MOD12_02231380 + mov r0, #0x63 + lsl r0, r0, #2 + add r0, r5, r0 + add r0, r0, r7 + str r0, [sp] + ldr r1, [r5] + ldr r0, [sp, #0x2c] + add r0, r1, r0 + add r0, #0xe8 + ldr r0, [r0] + mov r1, #0 + str r0, [sp, #4] + str r1, [sp, #8] + str r6, [sp, #0xc] + ldr r0, _022350F4 ; =0x000080ED + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + mov r0, #0xf + str r0, [sp, #0x28] + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x28] + ldr r3, [r5, #0x60] + mov r0, #0x15 + bl MOD12_02231380 + ldr r0, [sp, #0x30] + bl FUN_02021A20 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_022350E8: .word 0x00000123 +_022350EC: .word 0x00010200 +_022350F0: .word 0x00050600 +_022350F4: .word 0x000080ED + + thumb_func_start MOD12_022350F8 +MOD12_022350F8: ; 0x022350F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_022350FE: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02235038 + add r4, r4, #1 + cmp r4, #4 + blt _022350FE + add r0, r5, #0 + bl MOD12_0223513C + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02235114 +MOD12_02235114: ; 0x02235114 + push {r4, r5, r6, lr} + mov r1, #0x77 + lsl r1, r1, #2 + add r4, r0, r1 + sub r1, #0x50 + mov r6, #0 + add r5, r0, r1 +_02235122: + add r0, r4, #0 + bl MOD12_0223147C + add r0, r5, #0 + bl MOD12_0223147C + add r6, r6, #1 + add r4, #0x14 + add r5, #0x14 + cmp r6, #4 + blt _02235122 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223513C +MOD12_0223513C: ; 0x0223513C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r1, #0x77 + lsl r1, r1, #2 + str r0, [sp] + add r0, r0, r1 + str r0, [sp, #4] + ldr r0, [sp] + sub r1, #0x50 + add r0, r0, r1 + mov r4, #0 + mov r6, #0xc + mov r5, #0x1c + str r0, [sp, #8] +_02235158: + ldr r0, [sp] + add r2, r6, #0 + add r1, r0, r4 + ldr r0, _02235190 ; =0x00000231 + mov r3, #0 + ldrb r1, [r1, r0] + mov r0, #0x14 + add r7, r1, #0 + mul r7, r0 + ldr r0, [sp, #4] + mov r1, #1 + add r0, r0, r7 + bl MOD12_02231490 + ldr r0, [sp, #8] + mov r1, #1 + add r0, r0, r7 + add r2, r5, #0 + mov r3, #0 + bl MOD12_02231490 + add r4, r4, #1 + add r6, #0x30 + add r5, #0x30 + cmp r4, #4 + blt _02235158 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02235190: .word 0x00000231 + + thumb_func_start MOD12_02235194 +MOD12_02235194: ; 0x02235194 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _022351DC ; =0x000080F1 + mov r3, #0x17 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _022351DC ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x16 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022351DC ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x15 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_022351DC: .word 0x000080F1 + + thumb_func_start MOD12_022351E0 +MOD12_022351E0: ; 0x022351E0 + push {r4, lr} + ldr r1, _022351FC ; =0x000080F1 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _022351FC ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _022351FC ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_022351FC: .word 0x000080F1 + + thumb_func_start MOD12_02235200 +MOD12_02235200: ; 0x02235200 + push {r3, r4, r5, r6, r7, lr} + add r3, r0, #0 + mov r0, #0x16 + add r6, r1, #0 + lsl r0, r0, #4 + lsl r5, r6, #2 + add r4, r3, r0 + ldr r0, [r4, r5] + add r7, r2, #0 + cmp r0, #0 + bne _02235222 + ldr r0, [r3, #0x18] + ldr r1, [r3, #0x1c] + ldr r2, _02235248 ; =0x0224526C + bl FUN_0200C154 + str r0, [r4, r5] +_02235222: + ldr r0, [r4, r5] + add r1, r7, #0 + bl FUN_0200C5C0 + mov r2, #0x30 + mul r2, r6 + add r2, #0x2a + lsl r2, r2, #0x10 + ldr r0, [r4, r5] + mov r1, #0x40 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, r5] + ldr r0, [r0] + bl FUN_0200C59C + pop {r3, r4, r5, r6, r7, pc} + nop +_02235248: .word 0x0224526C + + thumb_func_start MOD12_0223524C +MOD12_0223524C: ; 0x0223524C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x16 + add r5, r0, #0 + add r6, r4, #0 + lsl r7, r7, #4 +_02235258: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02235268 + bl FUN_0200C3DC + mov r0, #0x16 + lsl r0, r0, #4 + str r6, [r5, r0] +_02235268: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02235258 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02235274 +MOD12_02235274: ; 0x02235274 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #6 + bl MI_CpuFill8 + lsl r0, r6, #1 + add r1, r5, r0 + ldr r0, _0223529C ; =0x00000236 + strb r6, [r4] + ldrh r1, [r1, r0] + add r0, #8 + strh r1, [r4, #2] + add r1, r5, r6 + ldrb r0, [r1, r0] + strb r0, [r4, #5] + pop {r4, r5, r6, pc} + .align 2, 0 +_0223529C: .word 0x00000236 + + thumb_func_start MOD12_022352A0 +MOD12_022352A0: ; 0x022352A0 + strb r0, [r2] + cmp r1, #0 + bgt _022352AA + mov r0, #0x1f + bx lr +_022352AA: + cmp r1, #0x14 + bgt _022352B2 + mov r0, #0x20 + bx lr +_022352B2: + cmp r1, #0x32 + bgt _022352BA + mov r0, #0x21 + bx lr +_022352BA: + cmp r1, #0x5a + bgt _022352C2 + mov r0, #0x22 + bx lr +_022352C2: + mov r0, #0x23 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022352C8 +MOD12_022352C8: ; 0x022352C8 + push {r4, lr} + mov r1, #0x32 + bl _s32_div_f + cmp r0, #4 + blo _022352D6 + mov r0, #3 +_022352D6: + lsl r1, r0, #2 + ldr r0, _022352F0 ; =0x02245218 + ldr r4, [r0, r1] + cmp r4, #0 + bge _022352E4 + bl ErrorHandling +_022352E4: + cmp r4, #0x7f + ble _022352EC + bl ErrorHandling +_022352EC: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_022352F0: .word 0x02245218 + + thumb_func_start MOD12_022352F4 +MOD12_022352F4: ; 0x022352F4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + ldr r0, [sp, #0x1c] + mov r1, #0 + strb r1, [r0] + mov r0, #0x15 + mov r1, #0x14 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x1c] + str r5, [r4] + str r0, [r4, #0x10] + strb r7, [r4, #0xd] + ldr r0, [sp] + strb r6, [r4, #0xb] + str r0, [r4, #4] + ldr r0, [sp, #0x18] + ldr r2, _02235334 ; =0x00000BB8 + strb r0, [r4, #0xe] + ldr r0, _02235338 ; =MOD12_0223533C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235334: .word 0x00000BB8 +_02235338: .word MOD12_0223533C + + thumb_func_start MOD12_0223533C +MOD12_0223533C: ; 0x0223533C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _02235354 + cmp r0, #1 + beq _02235376 + cmp r0, #2 + beq _022353A6 + b _0223541C +_02235354: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _02235362 + sub r0, r0, #1 + add sp, #0x10 + strb r0, [r4, #0xd] + pop {r3, r4, r5, pc} +_02235362: + ldr r0, _02235468 ; =0x000006E5 + bl FUN_020054C8 + ldr r0, _02235468 ; =0x000006E5 + ldr r1, [r4, #4] + bl FUN_0200488C + ldrb r0, [r4, #8] + add r0, r0, #1 + strb r0, [r4, #8] +_02235376: + ldrb r0, [r4, #9] + cmp r0, #0 + bne _02235380 + mov r1, #0 + b _02235382 +_02235380: + mov r1, #2 +_02235382: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x2d + ldr r2, [r2, #0x30] + mov r3, #3 + bl FUN_020068C8 + ldrb r0, [r4, #8] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_022353A6: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + cmp r0, #2 + bls _022353DE + mov r0, #0 + strb r0, [r4, #0xc] + ldrb r1, [r4, #9] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #9] + ldrb r0, [r4, #8] + sub r0, r0, #1 + strb r0, [r4, #8] + ldrb r0, [r4, #9] + cmp r0, #0 + bne _022353DE + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xa] + cmp r0, #2 + bls _022353DE + mov r0, #0xff + add sp, #0x10 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_022353DE: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _02235464 + ldrb r0, [r4, #0xb] + mov r1, #0x32 + lsl r0, r0, #4 + bl _s32_div_f + mov r1, #0xf + ldrsb r2, [r4, r1] + cmp r2, r0 + bge _02235464 + add r2, r2, #2 + strb r2, [r4, #0xf] + ldrsb r1, [r4, r1] + cmp r1, r0 + ble _02235402 + strb r0, [r4, #0xf] +_02235402: + ldrb r0, [r4, #0xf] + mov r1, #0 + mov r2, #1 + str r0, [sp] + ldr r0, _0223546C ; =0x0000237E + mov r3, #2 + str r0, [sp, #4] + ldr r0, [r4] + ldr r0, [r0, #0x5c] + bl FUN_020039E8 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0223541C: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _02235452 + mov r0, #0xf + ldrsb r1, [r4, r0] + cmp r1, #0 + beq _02235452 + sub r1, r1, #2 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _02235438 + mov r0, #0 + strb r0, [r4, #0xf] +_02235438: + ldrb r0, [r4, #0xf] + mov r1, #0 + mov r2, #1 + str r0, [sp] + ldr r0, _0223546C ; =0x0000237E + mov r3, #2 + str r0, [sp, #4] + ldr r0, [r4] + ldr r0, [r0, #0x5c] + bl FUN_020039E8 + add sp, #0x10 + pop {r3, r4, r5, pc} +_02235452: + ldr r0, [r4, #0x10] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02235464: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02235468: .word 0x000006E5 +_0223546C: .word 0x0000237E + + thumb_func_start MOD12_02235470 +MOD12_02235470: ; 0x02235470 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r3, #0 + ldr r3, [sp, #0x38] + add r6, sp, #0x1c + str r3, [sp, #0x38] + mov r3, #0 + str r3, [sp, #8] + strb r3, [r5] + mov r3, #0x30 + mul r3, r2 + ldr r2, [sp, #8] + str r3, [sp, #0x10] + add r3, #0x18 + str r2, [sp, #4] + str r2, [sp, #0xc] + mov r2, #0x18 + mul r2, r1 + add r7, r0, r2 + add r0, r3, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r3, [sp, #0x10] + str r0, [sp, #0x18] +_022354A0: + add r0, r7, #0 + add r0, #0xd0 + ldr r0, [r0] + cmp r0, #0 + bne _022354AC + b _0223560C +_022354AC: + ldrb r1, [r5] + cmp r1, #0 + bne _02235576 + add r1, sp, #0x20 + add r1, #2 + add r2, sp, #0x20 + bl FUN_0200C7A0 + mov r0, #4 + ldrsh r1, [r6, r0] + ldr r0, [sp, #0x10] + sub r1, r1, r0 + bpl _022354C8 + neg r1, r1 +_022354C8: + mov r0, #6 + ldrsh r0, [r6, r0] + sub r0, #0x28 + bpl _022354D2 + neg r0, r0 +_022354D2: + bl FUN_020799F4 + lsl r0, r0, #8 + str r0, [sp, #8] + mov r0, #6 + ldrsh r0, [r6, r0] + sub r0, #0x28 + bl _fflt + str r0, [sp, #0x14] + mov r0, #4 + ldrsh r1, [r6, r0] + ldr r0, [sp, #0x10] + sub r0, r1, r0 + bl _fflt + add r4, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0 + bl _fgr + ldr r0, _02235620 ; =0x45800000 + bls _02235514 + ldr r1, [sp, #0x14] + bl _fmul + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp] + b _02235524 +_02235514: + ldr r1, [sp, #0x14] + bl _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp] +_02235524: + add r0, r4, #0 + mov r1, #0 + bl _fgr + ldr r0, _02235620 ; =0x45800000 + bls _02235542 + add r1, r4, #0 + bl _fmul + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _02235550 +_02235542: + add r1, r4, #0 + bl _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_02235550: + bl _ffix + add r4, r0, #0 + ldr r0, [sp] + bl _ffix + add r1, r0, #0 + add r0, r4, #0 + bl FX_Atan2 + ldr r1, _02235624 ; =0x00008CA0 + mul r1, r0 + add r0, r1, #0 + ldr r1, _02235628 ; =0x0000FFFF + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] +_02235576: + mov r0, #0x15 + mov r1, #0x28 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x38] + add r1, r4, #0 + str r0, [r4, #4] + add r0, r7, #0 + add r0, #0xd0 + ldr r0, [r0] + add r1, #0x21 + str r0, [r4, #8] + ldr r0, [sp, #8] + add r2, sp, #0x1c + str r0, [r4, #0x10] + ldr r0, [sp, #4] + strh r0, [r4, #0x1e] + mov r0, #2 + lsl r0, r0, #0xa + str r0, [r4, #0x14] + mov r0, #0x28 + strb r0, [r1] + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x22 + strb r0, [r1] + str r5, [r4, #0xc] + mov r0, #6 + ldrsh r1, [r6, r0] + add r0, r4, #0 + add r0, #0x23 + strb r1, [r0] + mov r0, #4 + ldrsh r1, [r6, r0] + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r7, #0 + add r0, #0xd0 + add r1, sp, #0x1c + ldr r0, [r0] + add r1, #2 + bl FUN_0200C7A0 + mov r0, #6 + ldrsh r1, [r6, r0] + mov r0, #2 + ldrsh r0, [r6, r0] + sub r0, r1, r0 + bpl _022355E6 + neg r0, r0 +_022355E6: + ldrb r2, [r5] + lsl r0, r0, #8 + lsl r1, r2, #1 + add r1, r2, r1 + bl _s32_div_f + strh r0, [r4, #0x1c] + mov r0, #2 + ldrsh r0, [r6, r0] + ldr r2, _0223562C ; =0x00009C40 + add r1, r4, #0 + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldr r0, _02235630 ; =MOD12_02235634 + bl FUN_0200CA44 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_0223560C: + ldr r0, [sp, #0xc] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #6 + bge _0223561A + b _022354A0 +_0223561A: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02235620: .word 0x45800000 +_02235624: .word 0x00008CA0 +_02235628: .word 0x0000FFFF +_0223562C: .word 0x00009C40 +_02235630: .word MOD12_02235634 + + thumb_func_start MOD12_02235634 +MOD12_02235634: ; 0x02235634 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _0223564C + cmp r0, #1 + beq _02235696 + b _02235778 +_0223564C: + ldrh r0, [r5, #0x1c] + ldr r1, [r5, #0x18] + sub r1, r1, r0 + add r0, r5, #0 + str r1, [r5, #0x18] + add r0, #0x23 + ldrb r0, [r0] + lsl r0, r0, #8 + cmp r1, r0 + bgt _02235670 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x20 + strb r1, [r0] +_02235670: + add r1, sp, #0xc + ldr r0, [r5, #8] + add r1, #2 + add r2, sp, #0xc + bl FUN_0200C7A0 + ldr r0, [r5, #0x18] + add r3, sp, #0xc + asr r0, r0, #8 + strh r0, [r3, #2] + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r5, #8] + bl FUN_0200C714 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02235696: + ldrh r2, [r5, #0x1e] + ldr r1, [r5, #0x14] + add r0, r5, #0 + add r1, r2, r1 + strh r1, [r5, #0x1e] + ldrh r2, [r5, #0x1e] + ldr r1, _022357A4 ; =0x00008CA0 + add r0, #0x1e + cmp r2, r1 + blo _022356B0 + ldrh r2, [r0] + sub r1, r2, r1 + strh r1, [r0] +_022356B0: + mov r0, #3 + ldr r1, [r5, #0x10] + lsl r0, r0, #8 + cmp r1, r0 + bls _022356BE + sub r0, r1, r0 + b _022356C0 +_022356BE: + mov r0, #0 +_022356C0: + str r0, [r5, #0x10] + mov r0, #2 + ldr r1, [r5, #0x10] + lsl r0, r0, #8 + cmp r1, r0 + bhi _022356DA + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x20 + strb r1, [r0] +_022356DA: + ldr r0, [r5, #0x10] + mov r1, #0x64 + lsr r4, r0, #8 + ldrh r0, [r5, #0x1e] + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B954 + str r0, [sp] + lsl r6, r4, #0xc + ldrh r0, [r5, #0x1e] + mov r1, #0x64 + asr r7, r6, #0x1f + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + str r0, [sp, #4] + ldr r0, [sp] + add r2, r6, #0 + asr r1, r0, #0x1f + add r3, r7, #0 + bl _ll_mul + str r0, [sp, #8] + ldr r0, [sp, #4] + add r4, r1, #0 + asr r1, r0, #0x1f + add r2, r6, #0 + add r3, r7, #0 + bl _ll_mul + mov r3, #2 + add r2, r1, #0 + add r1, r5, #0 + add r7, r0, #0 + add r1, #0x21 + ldr r6, [sp, #8] + lsl r3, r3, #0xa + add r6, r6, r3 + ldr r3, _022357A8 ; =0x00000000 + ldrb r1, [r1] + adc r4, r3 + lsl r3, r4, #0x14 + lsr r4, r6, #0xc + orr r4, r3 + asr r3, r4, #0xb + lsr r3, r3, #0x14 + add r3, r4, r3 + asr r3, r3, #0xc + add r1, r1, r3 + mov r4, #2 + ldr r0, [r5, #8] + lsl r1, r1, #0x10 + add r5, #0x22 + lsl r4, r4, #0xa + asr r1, r1, #0x10 + ldrb r3, [r5] + add r5, r7, r4 + ldr r4, _022357A8 ; =0x00000000 + adc r2, r4 + lsl r2, r2, #0x14 + lsr r4, r5, #0xc + orr r4, r2 + asr r2, r4, #0xb + lsr r2, r2, #0x14 + add r2, r4, r2 + asr r2, r2, #0xc + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02235778: + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_0200C644 + ldr r0, _022357AC ; =0x000005E1 + bl FUN_020054C8 + ldr r0, [r5, #4] + bl MOD12_02233638 + ldr r1, [r5, #0xc] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022357A4: .word 0x00008CA0 +_022357A8: .word 0x00000000 +_022357AC: .word 0x000005E1 + + thumb_func_start MOD12_022357B0 +MOD12_022357B0: ; 0x022357B0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0xc + bl FUN_02016998 + mov r1, #0 + mov r2, #0xc + add r4, r0, #0 + bl MI_CpuFill8 + str r5, [r4] + ldr r0, _022357DC ; =MOD12_022357F8 + ldr r2, _022357E0 ; =0x00009C40 + add r1, r4, #0 + strb r6, [r4, #8] + bl FUN_0200CA44 + str r0, [r4, #4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_022357DC: .word MOD12_022357F8 +_022357E0: .word 0x00009C40 + + thumb_func_start MOD12_022357E4 +MOD12_022357E4: ; 0x022357E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_022357F8 +MOD12_022357F8: ; 0x022357F8 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x13 + add r6, r1, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_02235804: + ldrb r2, [r6, #8] + mov r1, #0x14 + ldr r0, [r6] + mul r1, r2 + add r0, r0, r1 + add r0, r5, r0 + ldr r0, [r0, r7] + cmp r0, #0 + beq _0223581A + bl FUN_0200C5A8 +_0223581A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02235804 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02235824 +MOD12_02235824: ; 0x02235824 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #0x30 + mul r0, r2 + add r0, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x14 + add r2, r3, #0 + mul r2, r1 + ldr r1, [sp] + ldr r5, [sp, #0x20] + mov r7, #0 + strb r7, [r5] + add r6, r1, r2 + str r0, [sp, #4] +_02235846: + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02235890 + mov r0, #0x15 + mov r1, #0x28 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223589C ; =0x00009C40 + str r0, [r4] + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r6, r0] + str r0, [r4, #4] + str r5, [r4, #8] + mov r0, #0x28 + strb r0, [r4, #0xf] + ldr r0, [sp, #4] + strb r0, [r4, #0x10] + ldrb r1, [r5] + mov r0, #0xc + mul r0, r1 + strh r0, [r4, #0x24] + ldr r0, _022358A0 ; =MOD12_022358A4 + add r1, r4, #0 + bl FUN_0200CA44 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_02235890: + add r7, r7, #1 + add r6, r6, #4 + cmp r7, #5 + blt _02235846 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223589C: .word 0x00009C40 +_022358A0: .word MOD12_022358A4 + + thumb_func_start MOD12_022358A4 +MOD12_022358A4: ; 0x022358A4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _022358BE + cmp r0, #1 + beq _022358FE + cmp r0, #2 + bne _022358BC + b _02235A26 +_022358BC: + b _02235A5E +_022358BE: + mov r0, #0x24 + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022358CE + sub r0, r0, #1 + add sp, #8 + strh r0, [r5, #0x24] + pop {r3, r4, r5, r6, r7, pc} +_022358CE: + add r1, sp, #4 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #4 + bl FUN_0200C7A0 + add r2, sp, #4 + mov r1, #0 + ldrsh r0, [r2, r1] + add r0, r0, #6 + strh r0, [r2] + mov r0, #2 + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r5, #0x1c] + ldrsh r0, [r2, r1] + lsl r0, r0, #8 + str r0, [r5, #0x20] + ldr r0, _02235A84 ; =0x000007F9 + bl FUN_020054C8 + ldrb r0, [r5, #0xe] + add r0, r0, #1 + strb r0, [r5, #0xe] +_022358FE: + ldrh r2, [r5, #0xc] + mov r1, #2 + lsl r1, r1, #0xa + add r1, r2, r1 + strh r1, [r5, #0xc] + ldrh r2, [r5, #0xc] + ldr r1, _02235A88 ; =0x00008CA0 + add r0, r5, #0 + add r0, #0xc + cmp r2, r1 + blo _0223591A + ldrh r2, [r0] + sub r1, r2, r1 + strh r1, [r0] +_0223591A: + ldrh r0, [r5, #0xc] + mov r1, #0x64 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + add r4, r0, #0 + ldrh r0, [r5, #0xc] + mov r1, #0x64 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B954 + add r6, r0, #0 + ldr r0, [r5, #0x20] + mov r2, #3 + add r0, #0x80 + str r0, [r5, #0x20] + asr r1, r4, #0x1f + add r0, r4, #0 + lsl r2, r2, #0xe + mov r3, #0 + bl _ll_mul + mov r2, #6 + str r0, [sp] + add r4, r1, #0 + asr r1, r6, #0x1f + add r0, r6, #0 + lsl r2, r2, #0xc + mov r3, #0 + bl _ll_mul + add r2, r1, #0 + ldr r1, [r5, #0x1c] + mov r6, #2 + add r7, r0, #0 + ldr r3, [sp] + lsl r6, r6, #0xa + asr r1, r1, #8 + add r6, r3, r6 + ldr r3, _02235A8C ; =0x00000000 + ldr r0, [r5, #4] + adc r4, r3 + lsl r3, r4, #0x14 + lsr r4, r6, #0xc + orr r4, r3 + asr r3, r4, #0xb + lsr r3, r3, #0x14 + add r3, r4, r3 + asr r3, r3, #0xc + add r1, r1, r3 + ldr r3, [r5, #0x20] + mov r4, #2 + lsl r1, r1, #0x10 + ldr r6, _02235A8C ; =0x00000000 + lsl r4, r4, #0xa + asr r1, r1, #0x10 + asr r3, r3, #8 + add r4, r7, r4 + adc r2, r6 + lsl r6, r2, #0x14 + lsr r2, r4, #0xc + orr r2, r6 + asr r4, r2, #0xb + lsr r4, r4, #0x14 + add r4, r2, r4 + asr r2, r4, #0xc + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + mov r0, #0x24 + ldrsh r1, [r5, r0] + add r1, r1, #1 + strh r1, [r5, #0x24] + ldrsh r0, [r5, r0] + cmp r0, #0x50 + ble _02235A80 + mov r0, #0 + strh r0, [r5, #0x24] + add r1, sp, #4 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #4 + bl FUN_0200C7A0 + add r2, sp, #4 + mov r0, #2 + ldrsh r0, [r2, r0] + lsl r1, r0, #8 + str r1, [r5, #0x1c] + mov r1, #0 + ldrsh r6, [r2, r1] + lsl r1, r6, #8 + str r1, [r5, #0x20] + ldrb r1, [r5, #0xf] + sub r0, r0, r1 + bpl _022359EC + neg r0, r0 +_022359EC: + ldrb r1, [r5, #0x10] + lsl r0, r0, #8 + sub r4, r6, r1 + bpl _022359F6 + neg r4, r4 +_022359F6: + mov r1, #3 + lsl r1, r1, #8 + str r1, [r5, #0x14] + bl _s32_div_f + add r1, r0, #0 + lsl r0, r4, #8 + bl _s32_div_f + str r0, [r5, #0x18] + ldrb r0, [r5, #0x10] + cmp r0, r6 + bge _02235A16 + ldr r0, [r5, #0x18] + neg r0, r0 + str r0, [r5, #0x18] +_02235A16: + ldr r0, _02235A90 ; =0x000006EA + bl FUN_020054C8 + ldrb r0, [r5, #0xe] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02235A26: + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x14] + sub r0, r1, r0 + str r0, [r5, #0x1c] + ldr r1, [r5, #0x20] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [r5, #0x20] + ldrb r0, [r5, #0xf] + lsl r1, r0, #8 + ldr r0, [r5, #0x1c] + cmp r0, r1 + bgt _02235A48 + str r1, [r5, #0x1c] + ldrb r0, [r5, #0xe] + add r0, r0, #1 + strb r0, [r5, #0xe] +_02235A48: + ldr r1, [r5, #0x1c] + ldr r2, [r5, #0x20] + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02235A5E: + ldr r0, [r5, #4] + mov r1, #0 + bl FUN_0200C644 + ldr r0, _02235A94 ; =0x000005E1 + bl FUN_020054C8 + ldr r1, [r5, #8] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02235A80: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235A84: .word 0x000007F9 +_02235A88: .word 0x00008CA0 +_02235A8C: .word 0x00000000 +_02235A90: .word 0x000006EA +_02235A94: .word 0x000005E1 + + thumb_func_start MOD12_02235A98 +MOD12_02235A98: ; 0x02235A98 + push {r4} + sub sp, #0xc + ldr r3, _02235AC0 ; =0x022451D4 + add r2, sp, #0 + ldrh r4, [r3, #0x14] + add r1, sp, #0 + lsl r0, r0, #1 + strh r4, [r2] + ldrh r4, [r3, #0x16] + strh r4, [r2, #2] + ldrh r4, [r3, #0x18] + strh r4, [r2, #4] + ldrh r4, [r3, #0x1a] + ldrh r3, [r3, #0x1c] + strh r4, [r2, #6] + strh r3, [r2, #8] + ldrh r0, [r1, r0] + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 +_02235AC0: .word 0x022451D4 + + thumb_func_start MOD12_02235AC4 +MOD12_02235AC4: ; 0x02235AC4 + push {r4} + sub sp, #0xc + ldr r3, _02235AEC ; =0x022451D4 + add r2, sp, #0 + ldrh r4, [r3, #0xa] + add r1, sp, #0 + lsl r0, r0, #1 + strh r4, [r2] + ldrh r4, [r3, #0xc] + strh r4, [r2, #2] + ldrh r4, [r3, #0xe] + strh r4, [r2, #4] + ldrh r4, [r3, #0x10] + ldrh r3, [r3, #0x12] + strh r4, [r2, #6] + strh r3, [r2, #8] + ldrh r0, [r1, r0] + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 +_02235AEC: .word 0x022451D4 + + thumb_func_start MOD12_02235AF0 +MOD12_02235AF0: ; 0x02235AF0 + push {r4} + sub sp, #0xc + ldr r3, _02235B18 ; =0x022451D4 + add r2, sp, #0 + ldrh r4, [r3] + add r1, sp, #0 + lsl r0, r0, #1 + strh r4, [r2] + ldrh r4, [r3, #2] + strh r4, [r2, #2] + ldrh r4, [r3, #4] + strh r4, [r2, #4] + ldrh r4, [r3, #6] + ldrh r3, [r3, #8] + strh r4, [r2, #6] + strh r3, [r2, #8] + ldrh r0, [r1, r0] + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 +_02235B18: .word 0x022451D4 + + thumb_func_start MOD12_02235B1C +MOD12_02235B1C: ; 0x02235B1C + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + strh r5, [r4, #4] + cmp r5, #0x8f + bgt _02235B52 + bge _02235B8A + cmp r5, #0x4c + bgt _02235B44 + bge _02235B8A + cmp r5, #0xd + beq _02235B8A + pop {r3, r4, r5, r6, r7, pc} +_02235B44: + cmp r5, #0x77 + bgt _02235B4C + beq _02235BC8 + pop {r3, r4, r5, r6, r7, pc} +_02235B4C: + cmp r5, #0x82 + beq _02235B8A + pop {r3, r4, r5, r6, r7, pc} +_02235B52: + ldr r1, _02235BE4 ; =0x0000010B + cmp r5, r1 + bgt _02235B72 + bge _02235BCE + cmp r5, #0xae + bgt _02235B62 + beq _02235B9C + pop {r3, r4, r5, r6, r7, pc} +_02235B62: + cmp r5, #0xda + bgt _02235BE2 + cmp r5, #0xd8 + blt _02235BE2 + beq _02235B90 + cmp r5, #0xda + beq _02235B96 + pop {r3, r4, r5, r6, r7, pc} +_02235B72: + add r0, r1, #0 + add r0, #0xd + cmp r5, r0 + bgt _02235B82 + add r1, #0xd + cmp r5, r1 + beq _02235BD4 + pop {r3, r4, r5, r6, r7, pc} +_02235B82: + add r1, #0xc8 + cmp r5, r1 + beq _02235BDA + pop {r3, r4, r5, r6, r7, pc} +_02235B8A: + mov r0, #1 + strb r0, [r4, #6] + pop {r3, r4, r5, r6, r7, pc} +_02235B90: + mov r0, #0xff + strb r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02235B96: + mov r0, #0 + strb r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02235B9C: + lsl r5, r7, #2 + ldr r0, [r6, r5] + mov r1, #0xb0 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + ldr r0, [r6, r5] + mov r1, #0xb1 + mov r2, #0 + bl FUN_020671BC + cmp r7, #7 + beq _02235BBC + cmp r0, #7 + bne _02235BC2 +_02235BBC: + mov r0, #1 + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_02235BC2: + mov r0, #0 + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_02235BC8: + mov r0, #1 + strh r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_02235BCE: + mov r0, #0xa1 + strh r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_02235BD4: + mov r0, #1 + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_02235BDA: + mov r0, #1 + strb r0, [r4, #6] + ldr r0, _02235BE8 ; =0x200400C0 + str r0, [r4] +_02235BE2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235BE4: .word 0x0000010B +_02235BE8: .word 0x200400C0 + + thumb_func_start MOD12_02235BEC +MOD12_02235BEC: ; 0x02235BEC + cmp r2, #0 + bne _02235BF4 + mov r0, #0 + bx lr +_02235BF4: + lsl r3, r1, #1 + add r3, r0, r3 + ldrh r3, [r3, #0x26] + cmp r2, r3 + bne _02235C12 + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0xe0 + ldr r0, [r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r2, r0 + beq _02235C12 + mov r0, #0 + bx lr +_02235C12: + mov r0, #1 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02235C18 +MOD12_02235C18: ; 0x02235C18 + push {r3, r4} + add r1, r0, r1 + ldrb r4, [r1, #0xe] + mov r3, #0 + add r2, r3, #0 +_02235C22: + add r1, r0, r2 + ldrb r1, [r1, #0xe] + cmp r1, r4 + bne _02235C2C + add r3, r3, #1 +_02235C2C: + add r2, r2, #1 + cmp r2, #4 + blt _02235C22 + sub r0, r3, #1 + pop {r3, r4} + bx lr + + thumb_func_start MOD12_02235C38 +MOD12_02235C38: ; 0x02235C38 + ldr r1, _02235C40 ; =0x022454C8 + ldrb r0, [r1, r0] + bx lr + nop +_02235C40: .word 0x022454C8 + + thumb_func_start MOD12_02235C44 +MOD12_02235C44: ; 0x02235C44 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #0xb + bl FUN_0206AB18 + lsl r1, r4, #2 + add r2, r4, r1 + ldr r1, _02235C5C ; =0x022454E4 + add r1, r1, r2 + ldrsb r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_02235C5C: .word 0x022454E4 + + thumb_func_start MOD12_02235C60 +MOD12_02235C60: ; 0x02235C60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r3, #0 + mov lr, r0 + add r2, sp, #8 + add r1, sp, #4 + add r7, r3, #0 + add r0, sp, #0 + mov r6, #0x1a + b _02235C9A +_02235C74: + lsl r4, r3, #1 + mov r5, lr + add r5, r5, r4 + ldrsh r5, [r5, r6] + strb r3, [r1, r3] + strh r5, [r2, r4] + add r4, r7, #0 + b _02235C94 +_02235C84: + mov r5, lr + add r5, r5, r4 + ldrb r5, [r5, #1] + cmp r3, r5 + bne _02235C92 + strb r4, [r0, r3] + b _02235C98 +_02235C92: + add r4, r4, #1 +_02235C94: + cmp r4, #4 + blt _02235C84 +_02235C98: + add r3, r3, #1 +_02235C9A: + cmp r3, #4 + blt _02235C74 + mov r3, #0 + ldr r6, _02235D70 ; =0x022454D4 + add r1, sp, #8 + ldr r0, _02235D74 ; =0x022454CC + ldr r2, _02235D78 ; =0x022454DC + mov r7, #0x2c + b _02235CFC +_02235CAC: + add r5, r3, #0 + mul r5, r7 + mov r4, lr + add r4, r4, r5 + ldr r4, [r4, #0x58] + lsl r5, r4, #0x1a + lsr r5, r5, #0x1e + cmp r5, #3 + bhi _02235CFA + add r5, r5, r5 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_02235CCA: ; jump table + .short _02235CFA - _02235CCA - 2 ; case 0 + .short _02235CD2 - _02235CCA - 2 ; case 1 + .short _02235CE0 - _02235CCA - 2 ; case 2 + .short _02235CEE - _02235CCA - 2 ; case 3 +_02235CD2: + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + lsl r4, r4, #1 + ldrsh r5, [r2, r4] + lsl r4, r3, #1 + strh r5, [r1, r4] + b _02235CFA +_02235CE0: + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + lsl r4, r4, #1 + ldrsh r5, [r0, r4] + lsl r4, r3, #1 + strh r5, [r1, r4] + b _02235CFA +_02235CEE: + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + lsl r4, r4, #1 + ldrsh r5, [r6, r4] + lsl r4, r3, #1 + strh r5, [r1, r4] +_02235CFA: + add r3, r3, #1 +_02235CFC: + cmp r3, #4 + blt _02235CAC + mov r3, #0 + b _02235D52 +_02235D04: + mov r4, #3 + add r2, sp, #8 + add r7, sp, #0 + b _02235D4C +_02235D0C: + sub r1, r4, #1 + lsl r0, r1, #1 + lsl r5, r4, #1 + ldrsh r0, [r2, r0] + ldrsh r5, [r2, r5] + cmp r0, r5 + bgt _02235D26 + cmp r0, r5 + bne _02235D4A + ldrb r1, [r7, r1] + ldrb r0, [r7, r4] + cmp r1, r0 + bhs _02235D4A +_02235D26: + sub r0, r4, #1 + lsl r1, r4, #1 + lsl r5, r0, #1 + mov ip, r5 + ldrsh r6, [r2, r1] + ldrsh r5, [r2, r5] + strh r5, [r2, r1] + mov r1, ip + strh r6, [r2, r1] + add r1, sp, #4 + ldrb r6, [r1, r4] + ldrb r5, [r1, r0] + strb r5, [r1, r4] + strb r6, [r1, r0] + ldrb r5, [r7, r4] + ldrb r1, [r7, r0] + strb r1, [r7, r4] + strb r5, [r7, r0] +_02235D4A: + sub r4, r4, #1 +_02235D4C: + cmp r4, r3 + bgt _02235D0C + add r3, r3, #1 +_02235D52: + cmp r3, #3 + blt _02235D04 + mov r3, #0 + add r2, sp, #4 + b _02235D66 +_02235D5C: + ldrb r1, [r2, r3] + mov r0, lr + add r0, r0, r3 + strb r1, [r0, #1] + add r3, r3, #1 +_02235D66: + cmp r3, #4 + blt _02235D5C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235D70: .word 0x022454D4 +_02235D74: .word 0x022454CC +_02235D78: .word 0x022454DC + + thumb_func_start MOD12_02235D7C +MOD12_02235D7C: ; 0x02235D7C + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _02235DB4 ; =0x02245500 + add r3, sp, #0 + str r1, [sp] + mov r1, #0x16 + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _02235DB8 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + mov r1, #0xc3 + lsl r1, r1, #4 + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + nop +_02235DB4: .word 0x02245500 +_02235DB8: .word 0x00000123 + + thumb_func_start MOD12_02235DBC +MOD12_02235DBC: ; 0x02235DBC + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235DD4 +MOD12_02235DD4: ; 0x02235DD4 + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + + thumb_func_start MOD12_02235DE8 +MOD12_02235DE8: ; 0x02235DE8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02235DEC +MOD12_02235DEC: ; 0x02235DEC + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235E04 +MOD12_02235E04: ; 0x02235E04 + push {r3, lr} + ldr r0, _02235E20 ; =0x00001650 + mov r3, #1 + strb r3, [r1, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + nop +_02235E20: .word 0x00001650 + + thumb_func_start MOD12_02235E24 +MOD12_02235E24: ; 0x02235E24 + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235E3C +MOD12_02235E3C: ; 0x02235E3C + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x10 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + ldr r2, _02235E74 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02235E78 ; =MOD12_02235E7C + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_02235E74: .word 0x00007530 +_02235E78: .word MOD12_02235E7C + + thumb_func_start MOD12_02235E7C +MOD12_02235E7C: ; 0x02235E7C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r1, [r4, #0xf] + add r5, r0, #0 + cmp r1, #0 + beq _02235E94 + cmp r1, #1 + beq _02235EB2 + cmp r1, #2 + beq _02235ECC + b _02235EDA +_02235E94: + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0xe + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x46 + bl MOD12_022352F4 + ldrb r0, [r4, #0xf] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xf] + pop {r3, r4, r5, pc} +_02235EB2: + ldrh r0, [r4, #0xc] + add r0, r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0xc] + cmp r0, #0x1e + bls _02235EF8 + mov r0, #0 + strh r0, [r4, #0xc] + ldrb r0, [r4, #0xf] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xf] + pop {r3, r4, r5, pc} +_02235ECC: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _02235EF8 + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xf] + pop {r3, r4, r5, pc} +_02235EDA: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02235EF8: + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02235EFC +MOD12_02235EFC: ; 0x02235EFC + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235F14 +MOD12_02235F14: ; 0x02235F14 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02235F6C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + add r0, r6, #0 + add r0, #0xe4 + ldrb r0, [r0] + strb r0, [r4, #0x18] + add r0, r6, #0 + add r0, #0xd8 + ldrh r0, [r0] + strh r0, [r4, #0x12] + add r0, r6, #0 + add r0, #0xda + ldrh r0, [r0] + add r6, #0xdc + strh r0, [r4, #0x14] + ldrh r0, [r6] + strh r0, [r4, #0x16] + ldr r0, _02235F70 ; =MOD12_02235F74 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235F6C: .word 0x00007530 +_02235F70: .word MOD12_02235F74 + + thumb_func_start MOD12_02235F74 +MOD12_02235F74: ; 0x02235F74 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bhi _0223601A + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02235F8E: ; jump table + .short _02235F98 - _02235F8E - 2 ; case 0 + .short _02235FBA - _02235F8E - 2 ; case 1 + .short _02235FD4 - _02235F8E - 2 ; case 2 + .short _02235FEE - _02235F8E - 2 ; case 3 + .short _0223600C - _02235F8E - 2 ; case 4 +_02235F98: + ldrb r1, [r4, #0x18] + cmp r1, #0 + beq _02235FAA + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x12 + mov r3, #0 + bl MOD12_02234FB0 +_02235FAA: + ldr r0, _0223603C ; =0x000006F9 + bl FUN_020054C8 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02235FBA: + ldrb r0, [r4, #0x18] + cmp r0, #0 + beq _02235FCA + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236038 +_02235FCA: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02235FD4: + ldrh r0, [r4, #0xe] + add r0, r0, #1 + strh r0, [r4, #0xe] + ldrh r0, [r4, #0xe] + cmp r0, #0x1e + bls _02236038 + mov r0, #0 + strh r0, [r4, #0xe] + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02235FEE: + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0x10 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x46 + bl MOD12_022352F4 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223600C: + ldrb r1, [r4, #0x10] + cmp r1, #1 + bne _02236038 + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223601A: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236038: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223603C: .word 0x000006F9 + + thumb_func_start MOD12_02236040 +MOD12_02236040: ; 0x02236040 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236058 +MOD12_02236058: ; 0x02236058 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + add r2, r4, #0 + mov r1, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + add r2, #0x16 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldrb r0, [r7] + strb r0, [r4, #0x15] + add r0, r6, #0 + bl MOD12_0223483C + ldr r0, _022360A8 ; =MOD12_022360B0 + ldr r2, _022360AC ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + add r0, r6, #0 + bl MOD12_02234EFC + pop {r3, r4, r5, r6, r7, pc} + nop +_022360A8: .word MOD12_022360B0 +_022360AC: .word 0x00007530 + + thumb_func_start MOD12_022360B0 +MOD12_022360B0: ; 0x022360B0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x15] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02068E14 + add r5, r0, #0 + ldrb r0, [r4, #0x14] + cmp r0, #3 + bls _022360D0 + b _022361DA +_022360D0: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022360DC: ; jump table + .short _022360E4 - _022360DC - 2 ; case 0 + .short _02236100 - _022360DC - 2 ; case 1 + .short _02236162 - _022360DC - 2 ; case 2 + .short _0223617C - _022360DC - 2 ; case 3 +_022360E4: + mov r0, #0x18 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x18] + ldrsh r0, [r4, r0] + cmp r0, #0xa + bgt _022360F4 + b _022361FE +_022360F4: + mov r0, #0 + strh r0, [r4, #0x18] + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02236100: + ldrb r0, [r4, #0x15] + mov r1, #0 + lsl r5, r0, #2 + ldr r0, [r4] + ldr r0, [r0, #0xc] + ldr r0, [r0, r5] + bl FUN_02068E14 + add r6, r0, #0 + ldr r0, [r4] + mov r1, #0x25 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #6 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r2, #1 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r1, #0 + lsl r2, r2, #8 + bl FUN_02007558 + ldr r0, [r4] + add r6, #0xac + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r6, #0 + bl FUN_02007558 + mov r0, #1 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + mov r0, #0x2b + lsl r0, r0, #0xa + str r0, [r4, #0x10] + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02236162: + ldr r0, [r4] + ldrb r2, [r4, #0x15] + ldr r1, [r0] + ldr r0, _02236200 ; =0x00000123 + ldrb r0, [r1, r0] + cmp r2, r0 + bne _02236176 + ldr r0, _02236204 ; =0x000006F8 + bl FUN_020054C8 +_02236176: + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] +_0223617C: + ldr r1, [r4, #0xc] + ldr r0, _02236208 ; =0x000005B6 + sub r0, r1, r0 + str r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r0, _0223620C ; =0x00000892 + sub r0, r1, r0 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + asr r0, r0, #8 + cmp r0, #0xd8 + ble _0223619C + ldr r0, [r4, #0x10] + asr r0, r0, #8 + cmp r0, #0x70 + bgt _022361AE +_0223619C: + mov r0, #0x36 + lsl r0, r0, #0xa + str r0, [r4, #0xc] + mov r0, #7 + lsl r0, r0, #0xc + str r0, [r4, #0x10] + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] +_022361AE: + ldrb r0, [r4, #0x15] + ldr r2, [r4, #0xc] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldrb r0, [r4, #0x15] + ldr r2, [r4, #0x10] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + asr r2, r2, #8 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r2, r5 + bl FUN_02007558 + pop {r4, r5, r6, pc} +_022361DA: + ldrb r0, [r4, #0x16] + cmp r0, #1 + bne _022361FE + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_022361FE: + pop {r4, r5, r6, pc} + .align 2, 0 +_02236200: .word 0x00000123 +_02236204: .word 0x000006F8 +_02236208: .word 0x000005B6 +_0223620C: .word 0x00000892 + + thumb_func_start MOD12_02236210 +MOD12_02236210: ; 0x02236210 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236228 +MOD12_02236228: ; 0x02236228 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldrb r0, [r7] + strb r0, [r4, #0x15] + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02068E14 + mov r0, #0x36 + lsl r0, r0, #0xa + str r0, [r4, #0xc] + mov r0, #7 + lsl r0, r0, #0xc + str r0, [r4, #0x10] + ldr r0, _0223627C ; =MOD12_02236284 + ldr r2, _02236280 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223627C: .word MOD12_02236284 +_02236280: .word 0x00007530 + + thumb_func_start MOD12_02236284 +MOD12_02236284: ; 0x02236284 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldrb r0, [r5, #0x15] + mov r1, #0 + lsl r4, r0, #2 + ldr r0, [r5] + ldr r0, [r0, #0xc] + ldr r0, [r0, r4] + bl FUN_02068E14 + add r6, r0, #0 + ldrb r0, [r5, #0x14] + cmp r0, #0 + beq _022362A8 + cmp r0, #1 + beq _0223631A + b _02236342 +_022362A8: + ldr r1, [r5, #0xc] + ldr r0, _02236364 ; =0x000005B6 + add r0, r1, r0 + str r0, [r5, #0xc] + ldr r1, [r5, #0x10] + ldr r0, _02236368 ; =0x00000892 + add r0, r1, r0 + str r0, [r5, #0x10] + ldr r0, [r5, #0xc] + asr r1, r0, #8 + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + bge _022362CC + ldr r0, [r5, #0x10] + asr r0, r0, #8 + cmp r0, #0xac + blt _022362EE +_022362CC: + ldr r0, [r5] + mov r1, #0x25 + add r0, r0, r4 + ldr r0, [r0, #0x14] + mov r2, #1 + bl FUN_02007558 + ldr r0, [r5] + mov r1, #6 + add r0, r0, r4 + ldr r0, [r0, #0x14] + mov r2, #1 + bl FUN_02007558 + ldrb r0, [r5, #0x14] + add r0, r0, #1 + strb r0, [r5, #0x14] +_022362EE: + ldrb r0, [r5, #0x15] + ldr r2, [r5, #0xc] + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldrb r0, [r5, #0x15] + ldr r2, [r5, #0x10] + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + asr r2, r2, #8 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r2, r6 + bl FUN_02007558 + pop {r3, r4, r5, r6, r7, pc} +_0223631A: + ldrb r1, [r5, #0x15] + ldr r0, [r5] + ldr r2, _0223636C ; =0x00001652 + add r3, r0, r1 + ldrb r2, [r3, r2] + cmp r2, #1 + bne _0223633A + add r0, #0xc + bl MOD12_022336AC + ldrb r0, [r5, #0x15] + ldr r1, [r5] + mov r2, #0 + add r1, r1, r0 + ldr r0, _0223636C ; =0x00001652 + strb r2, [r1, r0] +_0223633A: + ldrb r0, [r5, #0x14] + add r0, r0, #1 + strb r0, [r5, #0x14] + pop {r3, r4, r5, r6, r7, pc} +_02236342: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236364: .word 0x000005B6 +_02236368: .word 0x00000892 +_0223636C: .word 0x00001652 + + thumb_func_start MOD12_02236370 +MOD12_02236370: ; 0x02236370 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236388 +MOD12_02236388: ; 0x02236388 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + ldr r2, _022363EC ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #2] + strb r0, [r4, #0xe] + add r0, r5, #0 + add r0, #0xe4 + ldrb r0, [r0] + strb r0, [r4, #0x1a] + add r0, r5, #0 + add r0, #0xd8 + ldrh r0, [r0] + strh r0, [r4, #0x14] + add r0, r5, #0 + add r0, #0xda + ldrh r0, [r0] + strh r0, [r4, #0x16] + add r0, r5, #0 + add r0, #0xdc + ldrh r0, [r0] + strh r0, [r4, #0x18] + ldrb r0, [r5, #3] + strb r0, [r4, #0x10] + ldr r0, _022363F0 ; =MOD12_022363F4 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022363EC: .word 0x00007530 +_022363F0: .word MOD12_022363F4 + + thumb_func_start MOD12_022363F4 +MOD12_022363F4: ; 0x022363F4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #8 + bhi _02236502 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223640E: ; jump table + .short _02236420 - _0223640E - 2 ; case 0 + .short _0223645C - _0223640E - 2 ; case 1 + .short _0223646A - _0223640E - 2 ; case 2 + .short _02236472 - _0223640E - 2 ; case 3 + .short _02236496 - _0223640E - 2 ; case 4 + .short _022364AA - _0223640E - 2 ; case 5 + .short _022364B2 - _0223640E - 2 ; case 6 + .short _022364D6 - _0223640E - 2 ; case 7 + .short _022364E4 - _0223640E - 2 ; case 8 +_02236420: + ldrb r0, [r4, #0xd] + ldr r1, [r4] + lsl r0, r0, #1 + add r1, r1, r0 + ldr r0, _02236524 ; =0x00000242 + ldrsh r0, [r1, r0] + bl MOD12_022352C8 + add r3, r0, #0 + cmp r3, #0 + ble _0223644A + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0x12 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_022352F4 + b _02236452 +_0223644A: + mov r0, #2 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236452: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223645C: + ldrb r1, [r4, #0x12] + cmp r1, #1 + bne _02236520 + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223646A: + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236472: + ldrb r1, [r4, #0x1a] + cmp r1, #0 + beq _0223648E + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x14 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223648E: + mov r0, #5 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236496: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236520 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364AA: + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364B2: + ldr r0, [r4] + ldrb r1, [r4, #0xe] + ldrb r2, [r4, #0x10] + add r0, #0xc + bl MOD12_02233BE4 + add r3, r4, #0 + ldrb r1, [r4, #0xe] + ldrb r2, [r4, #0x10] + ldr r0, [r4] + add r3, #0xf + bl MOD12_02233C94 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364D6: + ldrb r1, [r4, #0xf] + cmp r1, #1 + bne _02236520 + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364E4: + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x11] + cmp r0, #5 + bls _02236520 + ldr r0, [r4] + add r0, #0xc + bl MOD12_02233C74 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236502: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236520: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02236524: .word 0x00000242 + + thumb_func_start MOD12_02236528 +MOD12_02236528: ; 0x02236528 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236540 +MOD12_02236540: ; 0x02236540 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0x49 + mov r0, #0x15 + lsl r1, r1, #2 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x49 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r1, [r5] + mov r0, #0x2c + add r2, r1, #0 + mul r2, r0 + add r1, r5, r2 + ldrh r1, [r1, #0x10] + strh r1, [r4, #0xe] + add r1, r5, #0 + add r1, #0xe4 + ldrb r2, [r1] + add r1, r0, #0 + add r1, #0xe2 + strb r2, [r4, r1] + add r1, r5, #0 + add r1, #0xd8 + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xdc + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xda + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xde + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xdc + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xe0 + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xe5 + ldrb r2, [r1] + add r1, r0, #0 + add r1, #0xea + strb r2, [r4, r1] + add r1, r5, #0 + add r1, #0xde + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xe4 + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xe0 + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xe6 + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xe2 + ldrh r1, [r1] + add r0, #0xe8 + mov r2, #0x1e + strh r1, [r4, r0] +_022365E6: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022365E6 + ldr r0, [r5] + add r1, r4, #0 + str r0, [r3] + ldr r0, _02236600 ; =MOD12_02236604 + mov r2, #5 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236600: .word MOD12_02236604 + + thumb_func_start MOD12_02236604 +MOD12_02236604: ; 0x02236604 + push {r4, r5, r6, r7, lr} + sub sp, #0x114 + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r6, r0, #0 + add r2, r4, #0 + mov r5, #0x2c + add r0, r1, #0 + add r2, #0x24 + mul r0, r5 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0xe + bls _02236622 + b _02236A70 +_02236622: + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223662E: ; jump table + .short _0223664C - _0223662E - 2 ; case 0 + .short _02236674 - _0223662E - 2 ; case 1 + .short _02236688 - _0223662E - 2 ; case 2 + .short _02236690 - _0223662E - 2 ; case 3 + .short _022366B6 - _0223662E - 2 ; case 4 + .short _022366CA - _0223662E - 2 ; case 5 + .short _022366D2 - _0223662E - 2 ; case 6 + .short _022366FA - _0223662E - 2 ; case 7 + .short _02236710 - _0223662E - 2 ; case 8 + .short _02236718 - _0223662E - 2 ; case 9 + .short _0223672C - _0223662E - 2 ; case 10 + .short _022369D6 - _0223662E - 2 ; case 11 + .short _02236A2C - _0223662E - 2 ; case 12 + .short _02236A4C - _0223662E - 2 ; case 13 + .short _02236A62 - _0223662E - 2 ; case 14 +_0223664C: + add r0, r5, #0 + add r0, #0xe2 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _0223666C + add r5, #0xdc + ldr r0, [r4] + add r2, r4, r5 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_0223666C: + mov r0, #2 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236674: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236704 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236688: + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236690: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _022366AE + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366AE: + mov r0, #5 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366B6: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236704 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366CA: + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366D2: + add r0, r5, #0 + add r0, #0xea + ldrb r1, [r4, r0] + cmp r1, #0 + beq _022366F2 + add r5, #0xdc + ldr r0, [r4] + add r2, r4, r5 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366F2: + mov r0, #8 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366FA: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + beq _02236706 +_02236704: + b _02236A8E +_02236706: + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236710: + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236718: + ldr r0, [r4] + ldrh r2, [r4, #0xe] + add r5, #0xec + ldr r0, [r0] + add r3, r4, r5 + bl MOD12_02235B1C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223672C: + ldrb r0, [r4, #0xd] + add r5, r0, #1 + cmp r5, #4 + blt _02236736 + mov r5, #0 +_02236736: + add r0, sp, #0xbc + mov r1, #0 + mov r2, #0x58 + bl MI_CpuFill8 + add r0, sp, #0x2c + mov r1, #0 + mov r2, #0x90 + bl MI_CpuFill8 + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_020671BC + add r6, r0, #0 + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x6f + bl FUN_020671BC + add r7, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02068A80 + str r0, [sp, #0x20] + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x70 + bl FUN_020671BC + str r0, [sp, #0x1c] + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + lsl r5, r5, #2 + ldr r0, [r0, #0xc] + mov r1, #5 + ldr r0, [r0, r5] + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x18] + ldr r0, [r4] + mov r1, #0x6f + ldr r0, [r0, #0xc] + mov r2, #0 + ldr r0, [r0, r5] + bl FUN_020671BC + str r0, [sp, #0x14] + ldr r0, [r4] + ldr r0, [r0, #0xc] + ldr r0, [r0, r5] + bl FUN_02068A80 + str r0, [sp, #0x10] + ldr r0, [r4] + mov r1, #0x70 + ldr r0, [r0, #0xc] + mov r2, #0 + ldr r0, [r0, r5] + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0xc] + add r2, r1, #0 + ldr r0, [r0, r5] + bl FUN_020671BC + str r0, [sp, #4] + mov r2, #0x47 + mov r0, #0 + add r1, sp, #0xbc + strb r0, [r1] + strb r0, [r1, #1] + lsl r2, r2, #2 + ldrh r3, [r4, r2] + mov r5, #1 + strh r3, [r1, #2] + str r5, [sp, #0xc0] + mov r3, #0xa + strh r3, [r1, #8] + add r3, r2, #3 + ldrb r3, [r4, r3] + add r2, r2, #4 + strh r3, [r1, #0xa] + ldrb r2, [r4, r2] + strh r2, [r1, #0xc] + str r0, [sp, #0xcc] + strh r0, [r1, #0x14] + strh r5, [r1, #0x16] + mov r2, #9 + str r2, [sp, #0x110] + lsl r2, r6, #0x10 + lsr r2, r2, #0x10 +_0223682A: + add r0, r0, #1 + strh r2, [r1, #0x18] + add r1, r1, #2 + cmp r0, #4 + blt _0223682A + ldr r0, [sp, #0x18] + add r1, sp, #0xbc + strh r0, [r1, #0x1a] + ldr r0, [r4] + mov r5, #0 + ldr r0, [r0, #0x30] + str r0, [sp, #0x30] + ldr r0, [r4] + ldr r0, [r0, #0x5c] + str r0, [sp, #0x34] + ldrb r0, [r4, #0xd] + ldr r1, [r4] + add r1, #0x64 + lsl r0, r0, #4 + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4] + add r1, sp, #0x2c + add r0, #0xa4 + str r0, [sp, #0x3c] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x28] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r2, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov ip, r0 + ldr r0, [sp, #0x1c] + add r3, r1, #0 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_0223687A: + mov r0, #0xff + strb r0, [r1, #0x1c] + ldr r0, [sp, #0x28] + add r6, r1, #0 + strh r0, [r2, #0x34] + ldr r0, [sp, #0x24] + add r6, #0x3c + strb r0, [r6] + add r6, r1, #0 + add r6, #0x40 + mov r0, ip + strb r0, [r6] + add r0, r1, #0 + add r0, #0x44 + strb r7, [r0] + ldr r0, [sp, #8] + add r5, r5, #1 + str r0, [r3, #0x48] + mov r0, #0 + str r0, [r3, #0x58] + add r1, r1, #1 + add r2, r2, #2 + add r3, r3, #4 + cmp r5, #4 + blt _0223687A + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, sp, #0x2c + str r0, [sp, #0x84] + mov r0, #0 + strb r0, [r2, #0x1c] + mov r0, #1 + ldr r1, [sp, #0x18] + strb r0, [r2, #0x1d] + strh r1, [r2, #0x36] + ldr r1, [sp, #0x14] + add r2, sp, #0x4c + strb r1, [r2, #0x1d] + ldr r1, [sp, #0x10] + add r2, sp, #0x6c + strb r1, [r2, #1] + ldr r1, [sp, #0xc] + strb r1, [r2, #5] + ldr r1, [sp, #4] + str r1, [sp, #0x78] + ldrb r1, [r4, #0xd] + ldr r2, [r4] + lsl r1, r1, #2 + add r1, r2, r1 + ldr r1, [r1, #0x14] + str r1, [sp, #0x4c] + ldrb r1, [r4, #0xd] + cmp r1, #0 + beq _022368EA + mov r0, #0 +_022368EA: + lsl r5, r0, #2 + ldr r0, [r4] + mov r2, #0x57 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r1, #8 + str r1, [sp, #0x94] + mov r1, #0x2d + str r1, [sp, #0x98] + mov r1, #1 + str r1, [sp, #0x9c] + mov r1, #0x1d + str r0, [sp, #0x50] + mov r0, #0 + str r1, [sp, #0xa0] + mov r1, #2 + str r0, [sp, #0x5c] + str r0, [sp, #0xa8] + mov r0, #3 + str r1, [sp, #0xa4] + str r0, [sp, #0xac] + ldr r0, [r4] + lsl r2, r2, #2 + ldr r0, [r0, #0x24] + add r3, sp, #0x2c + str r0, [sp, #0x2c] + ldr r0, [r4] + ldr r1, [r0] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, r2] + sub r2, #0x40 + str r0, [sp, #0xb0] + ldr r0, [r4] + ldrh r2, [r4, r2] + ldr r0, [r0, #0x2c] + add r1, sp, #0xbc + bl FUN_02212048 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02068E14 + add r6, r0, #0 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r4, r0] + ldr r0, _02236A94 ; =0xDFFBFF3F + cmp r1, r0 + beq _0223696A + ldrb r0, [r4, #0xd] + ldr r1, [r4] + mov r2, #0 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #6 + bl FUN_02007558 +_0223696A: + ldrb r0, [r4, #0xd] + ldr r1, [r4] + mov r2, #0 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0x25 + bl FUN_02007558 + ldrb r0, [r4, #0xd] + ldr r1, [r4] + mov r2, #0xd8 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + bl FUN_02007558 + ldrb r0, [r4, #0xd] + add r6, #0x70 + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r6, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #0x25 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #1 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #0 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0x50 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #1 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0x2a + bl FUN_02007558 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022369D6: + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl FUN_02212384 + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl FUN_022123A0 + cmp r0, #0 + bne _02236A8E + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl FUN_022123B0 + add r1, r5, #0 + add r1, #0xf2 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _02236A22 + sub r0, r0, #1 + strb r0, [r4, r1] + add r0, r1, #1 + ldrb r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #1 + strb r2, [r4, r0] + sub r0, r1, #6 + ldr r2, [r4, r0] + ldr r0, _02236A98 ; =0x200400C0 + cmp r2, r0 + bne _02236A1A + ldr r2, _02236A94 ; =0xDFFBFF3F + sub r0, r1, #6 + str r2, [r4, r0] +_02236A1A: + mov r0, #0xa + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A22: + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A2C: + add r5, #0xf0 + ldrh r0, [r4, r5] + cmp r0, #0x90 + beq _02236A38 + cmp r0, #0xa4 + bne _02236A42 +_02236A38: + ldr r0, [r4] + mov r2, #1 + add r1, r0, r1 + ldr r0, _02236A9C ; =0x00001652 + strb r2, [r1, r0] +_02236A42: + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A4C: + add r2, r4, #0 + ldr r0, [r4] + mov r1, #1 + add r2, #0x10 + bl MOD12_0223483C + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A62: + ldrb r1, [r4, #0x10] + cmp r1, #1 + bne _02236A8E + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A70: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02236A8E: + add sp, #0x114 + pop {r4, r5, r6, r7, pc} + nop +_02236A94: .word 0xDFFBFF3F +_02236A98: .word 0x200400C0 +_02236A9C: .word 0x00001652 + + thumb_func_start MOD12_02236AA0 +MOD12_02236AA0: ; 0x02236AA0 + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236AB8 +MOD12_02236AB8: ; 0x02236AB8 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x14 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + mov r2, #0x64 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r1, [r6, #0xc] + ldr r0, _02236AF8 ; =0x00000123 + ldrb r0, [r1, r0] + add r1, r4, #0 + strb r0, [r4, #0xd] + ldr r0, _02236AFC ; =MOD12_02236B00 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_02236AF8: .word 0x00000123 +_02236AFC: .word MOD12_02236B00 + + thumb_func_start MOD12_02236B00 +MOD12_02236B00: ; 0x02236B00 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0xa + bls _02236B10 + b _02236C9E +_02236B10: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02236B1C: ; jump table + .short _02236B32 - _02236B1C - 2 ; case 0 + .short _02236B4C - _02236B1C - 2 ; case 1 + .short _02236BAA - _02236B1C - 2 ; case 2 + .short _02236BBA - _02236B1C - 2 ; case 3 + .short _02236BF4 - _02236B1C - 2 ; case 4 + .short _02236C08 - _02236B1C - 2 ; case 5 + .short _02236C0E - _02236B1C - 2 ; case 6 + .short _02236C42 - _02236B1C - 2 ; case 7 + .short _02236C52 - _02236B1C - 2 ; case 8 + .short _02236C76 - _02236B1C - 2 ; case 9 + .short _02236C98 - _02236B1C - 2 ; case 10 +_02236B32: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #1 + add r3, r2, #0 + bl MOD12_02231B4C + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236B4C: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #2 + add r3, r2, #0 + bl MOD12_02231B4C + mov r0, #0x23 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r2, r0, #1 + cmp r2, #4 + bne _02236B6E + mov r1, #3 + b _02236B70 +_02236B6E: + mov r1, #2 +_02236B70: + add r0, sp, #0 + strb r2, [r0, #0xa] + add r2, sp, #4 + ldr r0, [r4] + add r2, #2 + mov r3, #0 + bl MOD12_02234FB0 + mov r0, #0x23 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r0, r0, #1 + cmp r0, #4 + bne _02236BA0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _02236BA0 + ldr r0, _02236CEC ; =0x000006F6 + bl FUN_020054C8 + ldrb r0, [r4, #0xe] + add r0, r0, #1 + strb r0, [r4, #0xe] +_02236BA0: + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236BAA: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236BCE + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236BBA: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231C80 + add r1, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _02236BD0 +_02236BCE: + b _02236CE4 +_02236BD0: + ldr r0, [r4] + add r1, #0x36 + ldr r2, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r2, r0] + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x10] + ldr r0, _02236CF0 ; =0x000005DD + bl FUN_020054C8 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236BF4: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231D48 + cmp r0, #0 + beq _02236CE4 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C08: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C0E: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #3 + add r3, r2, #0 + bl MOD12_02231B4C + mov r0, #0x23 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r2, sp, #0 + mov r3, #0 + add r1, r0, #1 + add r0, sp, #0 + strb r1, [r0, #4] + ldr r0, [r4] + mov r1, #1 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236C42: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236CE4 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C52: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231C80 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02236CE4 + strh r0, [r4, #0x12] + ldr r0, _02236CF0 ; =0x000005DD + bl FUN_020054C8 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236C76: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231D48 + cmp r0, #0 + beq _02236CE4 + ldrh r0, [r4, #0x12] + cmp r0, #3 + bne _02236C92 + mov r0, #1 + add sp, #0xc + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236C92: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C98: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C9E: + ldr r0, [r4] + ldr r1, _02236CF4 ; =0x00000171 + ldr r2, [r0] + ldrb r1, [r2, r1] + cmp r1, #1 + bne _02236CB4 + mov r2, #0 + mov r1, #0x2e + add r3, r2, #0 + bl MOD12_02234FB0 +_02236CB4: + mov r0, #0xc3 + add r2, r4, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r2, #0x10 + mov r3, #4 + bl MOD12_02240FB0 + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD12_02231B4C + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236CE4: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02236CE8: .word 0x0000081C +_02236CEC: .word 0x000006F6 +_02236CF0: .word 0x000005DD +_02236CF4: .word 0x00000171 + + thumb_func_start MOD12_02236CF8 +MOD12_02236CF8: ; 0x02236CF8 + push {r4, r5} + ldr r0, [sp, #8] + lsl r2, r0, #2 + ldr r5, [r3, r2] + lsl r2, r0, #1 + ldrh r4, [r5] + add r3, r1, r2 + ldr r2, _02236D18 ; =0x00000236 + add r0, r1, r0 + strh r4, [r3, r2] + ldrh r3, [r5, #2] + add r2, #8 + strb r3, [r0, r2] + pop {r4, r5} + bx lr + nop +_02236D18: .word 0x00000236 + + thumb_func_start MOD12_02236D1C +MOD12_02236D1C: ; 0x02236D1C + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236D34 +MOD12_02236D34: ; 0x02236D34 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02236D38 +MOD12_02236D38: ; 0x02236D38 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236D50 +MOD12_02236D50: ; 0x02236D50 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_02236D8E: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02236D8E + ldr r0, [r5] + ldr r2, _02236DA8 ; =0x00007530 + str r0, [r3] + ldr r0, _02236DAC ; =MOD12_02236DB0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236DA8: .word 0x00007530 +_02236DAC: .word MOD12_02236DB0 + + thumb_func_start MOD12_02236DB0 +MOD12_02236DB0: ; 0x02236DB0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r3, r4, #0 + add r2, r1, #0 + mov r0, #0x2c + ldrb r1, [r4, #0xc] + add r3, #0x24 + mul r2, r0 + add r2, r3, r2 + cmp r1, #4 + bhi _02236E48 + add r3, r1, r1 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02236DD6: ; jump table + .short _02236DE0 - _02236DD6 - 2 ; case 0 + .short _02236DF0 - _02236DD6 - 2 ; case 1 + .short _02236DF6 - _02236DD6 - 2 ; case 2 + .short _02236E2E - _02236DD6 - 2 ; case 3 + .short _02236E48 - _02236DD6 - 2 ; case 4 +_02236DE0: + mov r0, #0x1a + ldrsh r1, [r2, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236DF0: + add r0, r1, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236DF6: + add r0, #0xdc + mov r3, #0x18 + ldrsh r1, [r4, r0] + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _02236E28 + add r0, r3, #0 + add r0, #0xf0 + ldrsh r1, [r4, r0] + add r0, r3, #0 + add r0, #0xf0 + add r1, #0xa + strh r1, [r4, r0] + add r3, #0xf0 + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r3] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236E28: + mov r0, #4 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236E2E: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02236E66 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236E48: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236E66: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02236E68 +MOD12_02236E68: ; 0x02236E68 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236E80 +MOD12_02236E80: ; 0x02236E80 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_02236EBE: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02236EBE + ldr r0, [r5] + ldr r2, _02236ED8 ; =0x00007530 + str r0, [r3] + ldr r0, _02236EDC ; =MOD12_02236EE0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236ED8: .word 0x00007530 +_02236EDC: .word MOD12_02236EE0 + + thumb_func_start MOD12_02236EE0 +MOD12_02236EE0: ; 0x02236EE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r1, [r4, #0xd] + str r0, [sp, #4] + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0x10 + bls _02236EFC + b _022370D4 +_02236EFC: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02236F08: ; jump table + .short _02236F2A - _02236F08 - 2 ; case 0 + .short _02236F3C - _02236F08 - 2 ; case 1 + .short _02236F62 - _02236F08 - 2 ; case 2 + .short _02236F76 - _02236F08 - 2 ; case 3 + .short _02236F7A - _02236F08 - 2 ; case 4 + .short _02236F80 - _02236F08 - 2 ; case 5 + .short _02236FB2 - _02236F08 - 2 ; case 6 + .short _02236FD0 - _02236F08 - 2 ; case 7 + .short _02236FD4 - _02236F08 - 2 ; case 8 + .short _02237000 - _02236F08 - 2 ; case 9 + .short _02237052 - _02236F08 - 2 ; case 10 + .short _0223706E - _02236F08 - 2 ; case 11 + .short _02237072 - _02236F08 - 2 ; case 12 + .short _02237078 - _02236F08 - 2 ; case 13 + .short _022370C8 - _02236F08 - 2 ; case 14 + .short _022370CE - _02236F08 - 2 ; case 15 + .short _022370D4 - _02236F08 - 2 ; case 16 +_02236F2A: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + add sp, #8 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F3C: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _02236F5A + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F5A: + mov r0, #3 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F62: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236FC0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F76: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236F7A: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236F80: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02236FAA + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FAA: + mov r0, #7 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FB2: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + bgt _02236FC2 +_02236FC0: + b _022370F2 +_02236FC2: + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FD0: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236FD4: + ldr r0, [r3, #0x28] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02236FF8 + ldrb r0, [r3, #3] + add sp, #8 + add r1, r4, r0 + mov r0, #0xe4 + ldrsb r1, [r1, r0] + add r0, #0x26 + strh r1, [r4, r0] + mov r0, #0 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FF8: + mov r0, #0xb + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237000: + mov r0, #0x10 + ldrsb r0, [r4, r0] + mov r6, #0 + add r5, r6, #0 + add r0, r0, #1 + strb r0, [r4, #0x10] + mov r7, #0xe7 +_0223700E: + mov r2, #0x10 + ldrsb r3, [r4, r2] + add r1, r4, r5 + mov r0, #0xe4 + mov r2, #0xa + ldrsb r0, [r1, r0] + mul r2, r3 + sub r2, r0, r2 + ldrsb r0, [r1, r7] + cmp r0, r2 + bgt _02237036 + ldr r0, [r4] + add r1, r5, #0 + add r0, #0xc + add r6, r6, #1 + bl MOD12_02234628 + ldr r0, _022370F8 ; =0x000006DF + bl FUN_020054C8 +_02237036: + add r5, r5, #1 + cmp r5, #3 + blt _0223700E + cmp r6, #0 + ble _0223704A + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223704A: + mov r0, #0xb + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237052: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _022370F2 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223706E: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237072: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237078: + add r6, r4, #0 + mov r5, #0 + add r6, #0x4c +_0223707E: + ldr r2, [r4] + ldr r0, _022370FC ; =0x00000231 + add r1, r2, r5 + ldrb r1, [r1, r0] + mov r0, #0x2c + add r7, r1, #0 + mul r7, r0 + ldr r0, [r6, r7] + lsl r1, r0, #0x1a + lsl r3, r0, #0x16 + lsr r1, r1, #0x1e + lsr r3, r3, #0x1e + cmp r1, r3 + bne _022370A6 + lsl r1, r0, #0x18 + lsl r0, r0, #0x14 + lsr r1, r1, #0x1e + lsr r0, r0, #0x1e + cmp r1, r0 + beq _022370BC +_022370A6: + add r2, #0xc + add r0, r2, #0 + ldr r2, [r6, r7] + add r1, r5, #0 + lsl r2, r2, #0x18 + lsr r2, r2, #0x1e + bl MOD12_02235200 + ldr r0, _02237100 ; =0x000006E2 + bl FUN_020054C8 +_022370BC: + add r5, r5, #1 + cmp r5, #4 + blt _0223707E + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022370C8: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022370CE: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022370D4: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #4] + bl FUN_0200CAB4 +_022370F2: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022370F8: .word 0x000006DF +_022370FC: .word 0x00000231 +_02237100: .word 0x000006E2 + + thumb_func_start MOD12_02237104 +MOD12_02237104: ; 0x02237104 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_0223711C +MOD12_0223711C: ; 0x0223711C + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_0223715A: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223715A + ldr r0, [r5] + ldr r2, _02237174 ; =0x00007530 + str r0, [r3] + ldr r0, _02237178 ; =MOD12_0223717C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237174: .word 0x00007530 +_02237178: .word MOD12_0223717C + + thumb_func_start MOD12_0223717C +MOD12_0223717C: ; 0x0223717C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #8 + bhi _0223724C + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022371A0: ; jump table + .short _022371B2 - _022371A0 - 2 ; case 0 + .short _022371C2 - _022371A0 - 2 ; case 1 + .short _022371E4 - _022371A0 - 2 ; case 2 + .short _022371F6 - _022371A0 - 2 ; case 3 + .short _022371FA - _022371A0 - 2 ; case 4 + .short _02237200 - _022371A0 - 2 ; case 5 + .short _0223722E - _022371A0 - 2 ; case 6 + .short _02237248 - _022371A0 - 2 ; case 7 + .short _0223724C - _022371A0 - 2 ; case 8 +_022371B2: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371C2: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _022371DE + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371DE: + mov r0, #3 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371E4: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _0223726A + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371F6: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022371FA: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237200: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02237228 + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237228: + mov r0, #7 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223722E: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _0223726A + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237248: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223724C: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223726A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223726C +MOD12_0223726C: ; 0x0223726C + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237284 +MOD12_02237284: ; 0x02237284 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_022372C2: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022372C2 + ldr r0, [r5] + ldr r2, _022372DC ; =0x00007530 + str r0, [r3] + ldr r0, _022372E0 ; =MOD12_022372E4 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_022372DC: .word 0x00007530 +_022372E0: .word MOD12_022372E4 + + thumb_func_start MOD12_022372E4 +MOD12_022372E4: ; 0x022372E4 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r6, r0, #0 + add r3, r4, #0 + add r2, r1, #0 + mov r0, #0x2c + ldrb r1, [r4, #0xc] + add r3, #0x24 + mul r2, r0 + add r5, r3, r2 + cmp r1, #0x19 + bls _02237302 + b _02237624 +_02237302: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223730E: ; jump table + .short _02237342 - _0223730E - 2 ; case 0 + .short _02237358 - _0223730E - 2 ; case 1 + .short _0223739C - _0223730E - 2 ; case 2 + .short _022373AC - _0223730E - 2 ; case 3 + .short _022373B0 - _0223730E - 2 ; case 4 + .short _022373D8 - _0223730E - 2 ; case 5 + .short _022373EC - _0223730E - 2 ; case 6 + .short _022373F0 - _0223730E - 2 ; case 7 + .short _02237424 - _0223730E - 2 ; case 8 + .short _02237442 - _0223730E - 2 ; case 9 + .short _02237446 - _0223730E - 2 ; case 10 + .short _0223744C - _0223730E - 2 ; case 11 + .short _022374B8 - _0223730E - 2 ; case 12 + .short _022374D0 - _0223730E - 2 ; case 13 + .short _022374EA - _0223730E - 2 ; case 14 + .short _0223750A - _0223730E - 2 ; case 15 + .short _02237532 - _0223730E - 2 ; case 16 + .short _02237548 - _0223730E - 2 ; case 17 + .short _0223754C - _0223730E - 2 ; case 18 + .short _02237578 - _0223730E - 2 ; case 19 + .short _02237586 - _0223730E - 2 ; case 20 + .short _0223758A - _0223730E - 2 ; case 21 + .short _0223759C - _0223730E - 2 ; case 22 + .short _022375E0 - _0223730E - 2 ; case 23 + .short _022375FC - _0223730E - 2 ; case 24 + .short _02237624 - _0223730E - 2 ; case 25 +_02237342: + ldrb r0, [r5, #3] + add sp, #8 + add r1, r4, r0 + mov r0, #0xe4 + ldrsb r1, [r1, r0] + add r0, #0x26 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237358: + ldrb r1, [r5, #3] + mov r0, #0xe7 + add r3, r4, r1 + ldrsb r2, [r3, r0] + mov r0, #0xe4 + ldrsb r0, [r3, r0] + cmp r2, r0 + ble _02237394 + cmp r2, #0x32 + blt _02237370 + mov r6, #3 + b _02237372 +_02237370: + mov r6, #2 +_02237372: + ldr r0, [r4] + add r2, r6, #0 + add r0, #0xc + bl MOD12_02233BE4 + ldr r3, _0223764C ; =0x0000010E + ldrb r1, [r5, #3] + ldr r0, [r4] + add r2, r6, #0 + add r3, r4, r3 + bl MOD12_02233C94 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237394: + mov r0, #3 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223739C: + add r0, #0xe2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _02237432 + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373AC: + add r0, r1, #1 + strb r0, [r4, #0xc] +_022373B0: + add r0, r4, #0 + add r0, #0xf8 + ldrb r1, [r0] + cmp r1, #0 + beq _022373D0 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xec + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373D0: + mov r0, #6 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373D8: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237432 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373EC: + add r0, r1, #1 + strb r0, [r4, #0xc] +_022373F0: + ldrb r0, [r5, #3] + add r2, r4, r0 + mov r0, #0xe7 + ldrsb r1, [r2, r0] + mov r0, #0xe4 + ldrsb r0, [r2, r0] + cmp r1, r0 + ble _02237416 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + add r0, #0x11 + str r0, [sp, #4] + ldr r0, [r4] + mov r2, #0 + mov r3, #0x46 + bl MOD12_022352F4 + b _0223741A +_02237416: + mov r0, #1 + strb r0, [r4, #0x11] +_0223741A: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237424: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #8 + bgt _02237434 +_02237432: + b _02237648 +_02237434: + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237442: + add r0, r1, #1 + strb r0, [r4, #0xc] +_02237446: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223744C: + ldrb r0, [r5, #3] + add r3, r4, r0 + mov r0, #0xe7 + ldrsb r1, [r3, r0] + add r0, #0x23 + ldrsh r0, [r4, r0] + cmp r0, r1 + beq _022374B0 + mov r2, #0xe4 + ldrsb r0, [r3, r2] + sub r0, r1, r0 + cmp r0, #0 + ble _02237484 + add r0, r2, #0 + add r0, #0x26 + ldrsh r1, [r4, r0] + add r0, r2, #0 + add r0, #0x26 + add r1, #0xa + strh r1, [r4, r0] + add r2, #0x26 + ldr r0, [r4] + ldrb r1, [r5, #3] + ldrsh r2, [r4, r2] + add r0, #0xc + bl MOD12_02234628 + b _022374A6 +_02237484: + add r0, r2, #0 + add r0, #0x26 + ldrsh r1, [r4, r0] + add r0, r2, #0 + add r0, #0x26 + sub r1, #0xa + strh r1, [r4, r0] + add r2, #0x26 + ldr r0, [r4] + ldrb r1, [r5, #3] + ldrsh r2, [r4, r2] + add r0, #0xc + bl MOD12_02234628 + ldr r0, _02237650 ; =0x000006DF + bl FUN_020054C8 +_022374A6: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374B0: + mov r0, #0xe + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374B8: + ldr r0, [r4] + ldrb r1, [r5, #3] + add r0, #0xc + bl MOD12_022345FC + cmp r0, #1 + bne _0223753C + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374D0: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _0223753C + mov r0, #0 + strb r0, [r4, #0xf] + mov r0, #0xb + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374EA: + add r0, #0xde + ldrsh r0, [r4, r0] + cmp r0, #0x32 + blt _02237500 + ldrb r1, [r5, #3] + ldr r0, [r4] + bl MOD12_022357B0 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [r4, r1] +_02237500: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223750A: + add r0, r4, #0 + add r0, #0xf9 + ldrb r1, [r0] + cmp r1, #0 + beq _0223752A + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xf2 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223752A: + mov r0, #0x11 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237532: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + beq _0223753E +_0223753C: + b _02237648 +_0223753E: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237548: + add r0, r1, #1 + strb r0, [r4, #0xc] +_0223754C: + ldr r0, _02237654 ; =0x0000010A + ldrsh r0, [r4, r0] + cmp r0, #0x32 + blt _02237570 + add r0, r4, #0 + add r0, #0x12 + str r0, [sp] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrb r3, [r5, #3] + ldr r0, [r4] + bl MOD12_02235824 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237570: + mov r0, #0x14 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237578: + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _02237648 + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237586: + add r0, r1, #1 + strb r0, [r4, #0xc] +_0223758A: + mov r0, #0x1a + ldrsh r1, [r5, r0] + add r0, #0xee + add sp, #8 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223759C: + add r0, #0xdc + mov r3, #0x18 + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r3] + cmp r1, r0 + bge _022375D0 + add r0, r3, #0 + add r0, #0xf0 + ldrsh r1, [r4, r0] + add r0, r3, #0 + add r0, #0xf0 + add r1, #0xa + strh r1, [r4, r0] + add r3, #0xf0 + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r3] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022375D0: + ldr r0, [r4] + add r0, #0xc + bl MOD12_02233C74 + mov r0, #0x18 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022375E0: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02237648 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022375FC: + add r1, r0, #0 + add r1, #0xde + ldrsh r1, [r4, r1] + cmp r1, #0x32 + blt _0223761A + add r0, #0xe4 + ldr r0, [r4, r0] + bl MOD12_022357E4 + ldr r0, [r4] + ldrb r1, [r5, #3] + add r0, #0xc + mov r2, #0 + bl MOD12_02234628 +_0223761A: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237624: + ldrb r0, [r4, #0x11] + cmp r0, #1 + bne _02237648 + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02237648: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223764C: .word 0x0000010E +_02237650: .word 0x000006DF +_02237654: .word 0x0000010A + + thumb_func_start MOD12_02237658 +MOD12_02237658: ; 0x02237658 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237670 +MOD12_02237670: ; 0x02237670 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_022376AE: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022376AE + ldr r0, [r5] + ldr r2, _022376C8 ; =0x00007530 + str r0, [r3] + ldr r0, _022376CC ; =MOD12_022376D0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_022376C8: .word 0x00007530 +_022376CC: .word MOD12_022376D0 + + thumb_func_start MOD12_022376D0 +MOD12_022376D0: ; 0x022376D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #8 + bhi _022377A0 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022376F4: ; jump table + .short _02237706 - _022376F4 - 2 ; case 0 + .short _02237716 - _022376F4 - 2 ; case 1 + .short _02237738 - _022376F4 - 2 ; case 2 + .short _0223774A - _022376F4 - 2 ; case 3 + .short _0223774E - _022376F4 - 2 ; case 4 + .short _02237754 - _022376F4 - 2 ; case 5 + .short _02237782 - _022376F4 - 2 ; case 6 + .short _0223779C - _022376F4 - 2 ; case 7 + .short _022377A0 - _022376F4 - 2 ; case 8 +_02237706: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237716: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _02237732 + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237732: + mov r0, #3 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237738: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _022377BE + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223774A: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223774E: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237754: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02237776 + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + b _0223777A +_02237776: + mov r0, #7 + strb r0, [r4, #0xc] +_0223777A: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237782: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _022377BE + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223779C: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022377A0: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022377BE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_022377C0 +MOD12_022377C0: ; 0x022377C0 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_022377D8 +MOD12_022377D8: ; 0x022377D8 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xf7 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x43 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + add r3, r4, #0 + add r3, #0x10 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] +_0223780E: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223780E + ldr r0, [r6] + ldr r2, _02237828 ; =0x00007530 + str r0, [r3] + ldr r0, _0223782C ; =MOD12_02237830 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237828: .word 0x00007530 +_0223782C: .word MOD12_02237830 + + thumb_func_start MOD12_02237830 +MOD12_02237830: ; 0x02237830 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + ldr r0, _02237A8C ; =0x00000106 + add r4, r1, #0 + ldrb r0, [r4, r0] + mov r7, #0 + add r0, r4, r0 + add r0, #0xf9 + ldrb r1, [r0] + cmp r1, #4 + beq _0223786C + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x20 + mul r0, r1 + add r5, r2, r0 + ldr r3, [r4] + ldr r6, _02237A90 ; =0x00000231 + add r2, r7, #0 +_02237858: + ldrb r0, [r3, r6] + cmp r1, r0 + bne _02237862 + add r7, r2, #0 + b _0223786E +_02237862: + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #4 + blt _02237858 + b _0223786E +_0223786C: + add r5, r7, #0 +_0223786E: + ldrb r0, [r4, #0xc] + cmp r0, #0x11 + bls _02237876 + b _02237A6A +_02237876: + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02237882: ; jump table + .short _022378A6 - _02237882 - 2 ; case 0 + .short _022378B4 - _02237882 - 2 ; case 1 + .short _02237908 - _02237882 - 2 ; case 2 + .short _02237918 - _02237882 - 2 ; case 3 + .short _0223791C - _02237882 - 2 ; case 4 + .short _02237944 - _02237882 - 2 ; case 5 + .short _0223795A - _02237882 - 2 ; case 6 + .short _0223795E - _02237882 - 2 ; case 7 + .short _02237988 - _02237882 - 2 ; case 8 + .short _0223799C - _02237882 - 2 ; case 9 + .short _022379A0 - _02237882 - 2 ; case 10 + .short _022379C8 - _02237882 - 2 ; case 11 + .short _022379DC - _02237882 - 2 ; case 12 + .short _022379E0 - _02237882 - 2 ; case 13 + .short _022379F2 - _02237882 - 2 ; case 14 + .short _02237A24 - _02237882 - 2 ; case 15 + .short _02237A40 - _02237882 - 2 ; case 16 + .short _02237A6A - _02237882 - 2 ; case 17 +_022378A6: + mov r0, #0x1a + ldrsh r1, [r5, r0] + add r0, #0xea + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022378B4: + ldrb r0, [r5, #9] + cmp r0, #0 + bne _022378C6 + mov r0, #0x6f + lsl r0, r0, #4 + mov r6, #4 + bl FUN_020054C8 + b _022378F0 +_022378C6: + cmp r0, #1 + bne _022378D4 + ldr r0, _02237A94 ; =0x000006EF + mov r6, #5 + bl FUN_020054C8 + b _022378F0 +_022378D4: + cmp r0, #2 + bne _022378E2 + ldr r0, _02237A98 ; =0x000006EE + mov r6, #6 + bl FUN_020054C8 + b _022378F0 +_022378E2: + mov r0, #3 + strb r0, [r4, #0xc] + ldr r0, _02237A9C ; =0x000006DF + bl FUN_020054C8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022378F0: + ldr r3, _02237AA0 ; =0x00000107 + ldrb r1, [r5, #3] + ldr r0, [r4] + add r2, r6, #0 + add r3, r4, r3 + bl MOD12_02233C94 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237908: + ldr r1, _02237AA0 ; =0x00000107 + ldrb r1, [r4, r1] + cmp r1, #1 + bne _0223794E + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237918: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223791C: + ldrb r1, [r5, #0x12] + cmp r1, #0 + beq _0223793C + mov r0, #0 + str r0, [sp] + ldrb r2, [r5, #0x13] + add r5, #0xc + ldr r0, [r4] + add r3, r5, #0 + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223793C: + mov r0, #6 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237944: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + beq _02237950 +_0223794E: + b _02237A88 +_02237950: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223795A: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223795E: + add r0, r4, #0 + add r0, #0xf4 + ldrb r1, [r0] + cmp r1, #0 + beq _02237980 + add r2, r4, #0 + add r3, r4, #0 + ldr r0, [r4] + add r2, #0xe8 + add r3, #0xf8 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237980: + mov r0, #9 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237988: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237A88 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223799C: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022379A0: + add r0, r4, #0 + add r0, #0xf5 + ldrb r1, [r0] + cmp r1, #0 + beq _022379C0 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xee + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379C0: + mov r0, #0xc + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379C8: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237A88 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379DC: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022379E0: + mov r0, #0x1a + ldrsh r1, [r5, r0] + add r0, #0xea + add sp, #8 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379F2: + mov r3, #0x41 + lsl r3, r3, #2 + mov r2, #0x18 + ldrsh r0, [r4, r3] + ldrsh r2, [r5, r2] + cmp r0, r2 + bge _02237A12 + add r0, #0xa + strh r0, [r4, r3] + ldr r0, [r4] + ldrsh r3, [r4, r3] + add r0, #0xc + add r2, r7, #0 + bl MOD12_02234088 + b _02237A1A +_02237A12: + mov r0, #0x10 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A1A: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A24: + mov r0, #0xd + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xd] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02237A88 + mov r0, #0 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A40: + ldr r0, _02237A8C ; =0x00000106 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #4 + bhs _02237A60 + add r0, r4, r0 + add r0, #0xf9 + ldrb r0, [r0] + cmp r0, #4 + beq _02237A60 + mov r0, #0xd + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A60: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A6A: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #4] + bl FUN_0200CAB4 +_02237A88: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237A8C: .word 0x00000106 +_02237A90: .word 0x00000231 +_02237A94: .word 0x000006EF +_02237A98: .word 0x000006EE +_02237A9C: .word 0x000006DF +_02237AA0: .word 0x00000107 + + thumb_func_start MOD12_02237AA4 +MOD12_02237AA4: ; 0x02237AA4 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237ABC +MOD12_02237ABC: ; 0x02237ABC + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_02237AFA: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02237AFA + ldr r0, [r5] + ldr r2, _02237B14 ; =0x00007530 + str r0, [r3] + ldr r0, _02237B18 ; =MOD12_02237B1C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237B14: .word 0x00007530 +_02237B18: .word MOD12_02237B1C + + thumb_func_start MOD12_02237B1C +MOD12_02237B1C: ; 0x02237B1C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0xe + bls _02237B36 + b _02237C6E +_02237B36: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02237B42: ; jump table + .short _02237B60 - _02237B42 - 2 ; case 0 + .short _02237B70 - _02237B42 - 2 ; case 1 + .short _02237B92 - _02237B42 - 2 ; case 2 + .short _02237BA4 - _02237B42 - 2 ; case 3 + .short _02237BA8 - _02237B42 - 2 ; case 4 + .short _02237BCC - _02237B42 - 2 ; case 5 + .short _02237BDE - _02237B42 - 2 ; case 6 + .short _02237BE2 - _02237B42 - 2 ; case 7 + .short _02237C06 - _02237B42 - 2 ; case 8 + .short _02237C18 - _02237B42 - 2 ; case 9 + .short _02237C1C - _02237B42 - 2 ; case 10 + .short _02237C22 - _02237B42 - 2 ; case 11 + .short _02237C50 - _02237B42 - 2 ; case 12 + .short _02237C6A - _02237B42 - 2 ; case 13 + .short _02237C6E - _02237B42 - 2 ; case 14 +_02237B60: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237B70: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _02237B8C + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237B8C: + mov r0, #3 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237B92: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237C8C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BA4: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237BA8: + add r0, r4, #0 + add r0, #0xf8 + ldrb r1, [r0] + cmp r1, #0 + beq _02237BC6 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xec + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BC6: + mov r0, #6 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BCC: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237C8C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BDE: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237BE2: + add r0, r4, #0 + add r0, #0xf9 + ldrb r1, [r0] + cmp r1, #0 + beq _02237C00 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xf2 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C00: + mov r0, #9 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C06: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237C8C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C18: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237C1C: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237C22: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02237C44 + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + b _02237C48 +_02237C44: + mov r0, #0xd + strb r0, [r4, #0xc] +_02237C48: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C50: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02237C8C + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C6A: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237C6E: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02237C8C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02237C90 +MOD12_02237C90: ; 0x02237C90 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237CA8 +MOD12_02237CA8: ; 0x02237CA8 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r1, [r7, #0xc] + ldr r0, _02237D04 ; =0x00000123 + ldrb r0, [r1, r0] + strb r0, [r4, #0xd] + ldrb r0, [r6, #1] + strb r0, [r4, #0xe] +_02237CEA: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02237CEA + ldr r0, [r6] + ldr r2, _02237D08 ; =0x00007530 + str r0, [r3] + ldr r0, _02237D0C ; =MOD12_02237D10 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237D04: .word 0x00000123 +_02237D08: .word 0x00007530 +_02237D0C: .word MOD12_02237D10 + + thumb_func_start MOD12_02237D10 +MOD12_02237D10: ; 0x02237D10 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xd] + add r2, r4, #0 + mov r1, #0x2c + add r2, #0x24 + mul r1, r0 + add r2, r2, r1 + ldrb r1, [r4, #0xc] + cmp r1, #0 + beq _02237D34 + cmp r1, #1 + beq _02237D54 + cmp r1, #2 + beq _02237D68 + b _02237D70 +_02237D34: + mov r1, #0x18 + ldrsh r1, [r2, r1] + add r2, sp, #0 + bl MOD12_022352A0 + add r1, r0, #0 + ldr r0, [r4] + add r2, sp, #0 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237D54: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237D8E + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237D68: + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237D70: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02237D8E: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02237D94 +MOD12_02237D94: ; 0x02237D94 + push {r3, lr} + mov r1, #0xf4 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02237DA8 +MOD12_02237DA8: ; 0x02237DA8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x15 + mov r1, #0x28 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x28 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02237DE4 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02237DE8 ; =MOD12_02237DEC + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237DE4: .word 0x00007530 +_02237DE8: .word MOD12_02237DEC + + thumb_func_start MOD12_02237DEC +MOD12_02237DEC: ; 0x02237DEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #3 + bhi _02237EC2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237E0A: ; jump table + .short _02237E12 - _02237E0A - 2 ; case 0 + .short _02237E36 - _02237E0A - 2 ; case 1 + .short _02237E78 - _02237E0A - 2 ; case 2 + .short _02237EC2 - _02237E0A - 2 ; case 3 +_02237E12: + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0x27 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x46 + bl MOD12_022352F4 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02237E36: + add r7, r4, #0 + mov r5, #0 + add r6, r4, #0 + add r7, #0x23 +_02237E3E: + ldr r0, [r4] + ldr r1, _02237EE8 ; =0x00000231 + add r2, r0, r5 + ldrb r1, [r2, r1] + bl MOD12_022335E4 + str r0, [r6, #0x10] + ldr r1, [r4] + add r3, r7, r5 + str r0, [sp] + add r0, r1, #0 + add r2, r1, r5 + ldr r1, _02237EE8 ; =0x00000231 + ldrb r1, [r2, r1] + add r2, r5, #0 + bl MOD12_02235470 + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #4 + blt _02237E3E + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02237E78: + mov r7, #0 + add r6, r7, #0 + add r5, r4, #0 +_02237E7E: + add r0, r4, r6 + add r0, #0x23 + ldrb r0, [r0] + cmp r0, #0 + bne _02237E94 + ldr r0, [r5, #0x10] + bl MOD12_02233644 + cmp r0, #0 + bne _02237E94 + add r7, r7, #1 +_02237E94: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02237E7E + cmp r7, #4 + bne _02237EE4 + mov r6, #0 + add r5, r4, #0 +_02237EA4: + ldr r0, [r5, #0x10] + bl MOD12_0223361C + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02237EA4 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02237EC2: + add r0, r4, #0 + add r0, #0x27 + ldrb r0, [r0] + cmp r0, #1 + bne _02237EE4 + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02237EE4: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237EE8: .word 0x00000231 + + thumb_func_start MOD12_02237EEC +MOD12_02237EEC: ; 0x02237EEC + push {r3, lr} + mov r0, #0xf8 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237F04 +MOD12_02237F04: ; 0x02237F04 + push {r4, r5, r6, lr} + mov r0, #0x23 + add r5, r1, #0 + lsl r0, r0, #4 + add r4, r2, #0 + add r6, r5, r0 + mov r2, #0x1f +_02237F12: + ldmia r3!, {r0, r1} + stmia r6!, {r0, r1} + sub r2, r2, #1 + bne _02237F12 + add r0, r5, #0 + add r0, #0xc + bl MOD12_02234044 + add r0, r5, #0 + add r0, #0xc + bl MOD12_0223524C + add r0, r5, #0 + bl MOD12_0223513C + add r0, r5, #0 + bl MOD12_022335B0 + mov r0, #0xc3 + lsl r0, r0, #4 + mov r2, #0 + add r0, r5, r0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02237F48 +MOD12_02237F48: ; 0x02237F48 + push {r3, lr} + mov r1, #0xf4 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02237F5C +MOD12_02237F5C: ; 0x02237F5C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x15 + mov r1, #0x20 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _02237FCC ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + add r0, r5, #0 + add r0, #0xd8 + ldrh r0, [r0] + strh r0, [r4, #0x14] + add r0, r5, #0 + add r0, #0xda + ldrh r0, [r0] + strh r0, [r4, #0x16] + add r0, r5, #0 + add r0, #0xdc + ldrh r0, [r0] + strh r0, [r4, #0x18] + add r0, r5, #0 + add r0, #0xe4 + ldrb r0, [r0] + strb r0, [r4, #0x1a] + add r0, r5, #0 + add r0, #0xe7 + ldrb r0, [r0] + add r5, #0xe6 + strb r0, [r4, #0x1c] + ldrb r0, [r5] + strb r0, [r4, #0x1b] + ldr r0, _02237FD0 ; =MOD12_02237FD4 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237FCC: .word 0x00007530 +_02237FD0: .word MOD12_02237FD4 + + thumb_func_start MOD12_02237FD4 +MOD12_02237FD4: ; 0x02237FD4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02237FEA + cmp r0, #1 + beq _0223800A + cmp r0, #2 + beq _0223801C + b _02238040 +_02237FEA: + ldrb r1, [r4, #0x1a] + cmp r1, #0 + beq _02238004 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x14 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02238004: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223800A: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02238058 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223801C: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _02238030 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02238030: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x1b] + cmp r1, r0 + blo _02238058 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02238040: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02238058: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223805C +MOD12_0223805C: ; 0x0223805C + strb r1, [r0, #0x12] + ldr r1, _02238088 ; =0x00007530 + strb r2, [r0, #0x13] + cmp r3, r1 + beq _02238068 + strb r3, [r0, #0xc] +_02238068: + ldr r2, [sp] + ldr r1, _02238088 ; =0x00007530 + cmp r2, r1 + beq _02238072 + strb r2, [r0, #0xd] +_02238072: + ldr r2, [sp, #4] + ldr r1, _02238088 ; =0x00007530 + cmp r2, r1 + beq _0223807C + strh r2, [r0, #0xe] +_0223807C: + ldr r2, [sp, #8] + ldr r1, _02238088 ; =0x00007530 + cmp r2, r1 + beq _02238086 + strb r2, [r0, #0x10] +_02238086: + bx lr + .align 2, 0 +_02238088: .word 0x00007530 + + thumb_func_start MOD12_0223808C +MOD12_0223808C: ; 0x0223808C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x26 + add r5, r1, #0 + lsl r0, r0, #4 + add r4, r6, r0 + add r3, r5, #0 + mov r2, #0x19 +_0223809C: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223809C + add r0, r5, #0 + bl MOD12_02238688 + add r0, r5, #0 + mov r1, #0 + mov r2, #0xb0 + bl MI_CpuFill8 + mov r4, #0 + add r7, r6, #0 +_022380B8: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0xc + add r2, r4, #0 + bl MOD12_02235274 + ldr r0, _022380F4 ; =0x0000023E + add r1, r6, r4 + ldrb r0, [r1, r0] + mov r1, #0xa + strb r0, [r5, #3] + ldr r0, _022380F8 ; =0x00000236 + ldrh r0, [r7, r0] + strh r0, [r5] + bl FUN_0206AB18 + strb r0, [r5, #2] + mov r0, #0x23 + lsl r0, r0, #4 + add r0, r6, r0 + add r1, r4, #0 + bl MOD12_02235C18 + strb r0, [r5, #9] + add r4, r4, #1 + add r5, #0x2c + add r7, r7, #2 + cmp r4, #4 + blt _022380B8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022380F4: .word 0x0000023E +_022380F8: .word 0x00000236 + + thumb_func_start MOD12_022380FC +MOD12_022380FC: ; 0x022380FC + push {r4, r5, r6, r7} + add r3, r1, #0 + ldr r5, _02238154 ; =0xFFFFFCFF + ldr r6, _02238158 ; =0xFFFFF3FF + add r4, r0, #0 + mov r1, #0 + add r2, r3, #0 +_0223810A: + ldr r7, [r2, #0x28] + add r1, r1, #1 + add r0, r7, #0 + lsl r7, r7, #0x1a + lsr r7, r7, #0x1e + lsl r7, r7, #0x1e + and r0, r5 + lsr r7, r7, #0x16 + orr r7, r0 + add r0, r7, #0 + lsl r7, r7, #0x18 + lsr r7, r7, #0x1e + lsl r7, r7, #0x1e + and r0, r6 + lsr r7, r7, #0x14 + orr r0, r7 + str r0, [r2, #0x28] + add r2, #0x2c + cmp r1, #4 + blt _0223810A + ldr r1, _0223815C ; =0x00000252 + mov r0, #0 + add r5, r1, #0 +_02238138: + add r7, r4, r0 + ldrsb r6, [r7, r1] + add r2, r3, r0 + add r2, #0xc0 + strb r6, [r2] + add r2, r3, r0 + ldrsb r6, [r7, r5] + add r2, #0xc3 + add r0, r0, #1 + strb r6, [r2] + cmp r0, #3 + blt _02238138 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02238154: .word 0xFFFFFCFF +_02238158: .word 0xFFFFF3FF +_0223815C: .word 0x00000252 + + thumb_func_start MOD12_02238160 +MOD12_02238160: ; 0x02238160 + push {r4, r5, r6, r7} + mov r5, #0 + ldr r2, _02238188 ; =0x00000252 + add r3, r5, #0 +_02238168: + add r7, r1, r5 + mov r6, #0xc3 + ldrsb r7, [r7, r6] + ldr r6, _02238188 ; =0x00000252 + add r4, r0, r5 + strb r7, [r4, r6] + ldrsb r6, [r4, r2] + cmp r6, #0x32 + blt _0223817E + ldr r6, _02238188 ; =0x00000252 + strb r3, [r4, r6] +_0223817E: + add r5, r5, #1 + cmp r5, #3 + blt _02238168 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02238188: .word 0x00000252 + + thumb_func_start MOD12_0223818C +MOD12_0223818C: ; 0x0223818C + push {r3, r4, r5, r6, r7, lr} + ldr r7, _022381D4 ; =0x00000242 + mov ip, r1 + add r5, r7, #0 + mov lr, r0 + mov r1, #0 + mov r2, ip + add r3, r0, #0 + mov r6, #0x18 + add r5, #8 +_022381A0: + ldr r0, _022381D4 ; =0x00000242 + mov r4, #0x18 + ldrsh r0, [r3, r0] + ldrsh r4, [r2, r4] + add r1, r1, #1 + add r0, r0, r4 + strh r0, [r3, r7] + ldrsh r0, [r2, r6] + add r2, #0x2c + strh r0, [r3, r5] + add r3, r3, #2 + cmp r1, #4 + blt _022381A0 + mov r1, #0x26 + lsl r1, r1, #4 + mov r0, lr + add r4, r0, r1 + mov r3, #0x19 +_022381C4: + mov r2, ip + ldmia r2!, {r0, r1} + mov ip, r2 + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _022381C4 + pop {r3, r4, r5, r6, r7, pc} + nop +_022381D4: .word 0x00000242 + + thumb_func_start MOD12_022381D8 +MOD12_022381D8: ; 0x022381D8 + push {r3, r4} + mov r2, #0x2c + mul r2, r1 + add r2, r0, r2 + mov r1, #0x18 + ldrsh r1, [r2, r1] + mov r4, #0 + strh r1, [r2, #0x1a] + strh r4, [r2, #0x1e] + strh r4, [r2, #0x20] + mov r1, #0xc3 +_022381EE: + add r3, r0, r4 + ldrsb r2, [r3, r1] + add r3, #0xc0 + add r4, r4, #1 + strb r2, [r3] + cmp r4, #3 + blt _022381EE + mov r2, #0 + add r1, r2, #0 +_02238200: + strb r1, [r0, #0x14] + strb r1, [r0, #0x12] + add r2, r2, #1 + add r0, #0x2c + cmp r2, #4 + blt _02238200 + pop {r3, r4} + bx lr + + thumb_func_start MOD12_02238210 +MOD12_02238210: ; 0x02238210 + mov r3, #0 + mov r1, #0x18 +_02238214: + ldrsh r2, [r0, r1] + add r3, r3, #1 + strh r2, [r0, #0x1c] + add r0, #0x2c + cmp r3, #4 + blt _02238214 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02238224 +MOD12_02238224: ; 0x02238224 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r2, #0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r7, #0 + mul r4, r0 + add r6, r5, #2 + ldrb r0, [r6, r4] + ldr r1, _02238274 ; =0x02245619 + lsl r2, r0, #3 + ldrb r1, [r1, r2] + cmp r1, #0 + bne _0223826E + mov r1, #4 + add r2, sp, #0x10 + add r3, sp, #0xc + bl FUN_02083170 + ldr r1, [sp, #0x10] + ldr r0, _02238278 ; =0x0000FFFF + cmp r1, r0 + beq _0223826E + ldr r0, _0223827C ; =0x00007530 + mov r2, #4 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldrb r1, [r6, r4] + add r0, r5, r4 + add r3, r7, #0 + bl MOD12_0223805C +_0223826E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02238274: .word 0x02245619 +_02238278: .word 0x0000FFFF +_0223827C: .word 0x00007530 + + thumb_func_start MOD12_02238280 +MOD12_02238280: ; 0x02238280 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD12_022381D8 + add r4, r6, #0 + mov r0, #0x2c + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + add r6, r5, #4 + bl FUN_02083114 + strb r0, [r6, r4] + ldrb r1, [r6, r4] + add r0, r5, r4 + strh r1, [r0, #0x18] + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_022382A8 +MOD12_022382A8: ; 0x022382A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + str r0, [sp, #4] + str r2, [sp, #8] + add r0, r7, #0 + add r1, r2, #0 + str r3, [sp, #0xc] + bl MOD12_022381D8 + ldr r0, [sp, #8] + mov r1, #0x2c + add r4, r0, #0 + mul r4, r1 + add r0, r7, r4 + ldrb r0, [r0, #2] + lsl r6, r0, #3 + ldr r0, _02238364 ; =0x02245618 + ldrb r0, [r0, r6] + cmp r0, #3 + bne _022382FE + ldr r0, [sp, #0xc] + ldr r5, _02238368 ; =0x02245614 + str r0, [sp] + ldr r2, [sp, #8] + ldr r0, [sp, #4] + ldr r5, [r5, r6] + add r1, r7, #0 + add r3, r2, #0 + blx r5 + add r2, r7, #0 + mov r0, #1 + add r3, r7, r4 + strb r0, [r3, #0x14] + mov r0, #0x1e + add r2, #0x18 + mov r5, #0x20 + ldrsh r0, [r3, r0] + ldrsh r3, [r3, r5] + ldrsh r1, [r2, r4] + add r0, r0, r3 + add r0, r1, r0 + strh r0, [r2, r4] +_022382FE: + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + cmp r0, #0 + blt _02238360 +_02238308: + ldr r1, [sp, #4] + ldr r0, [sp, #0x10] + add r1, r1, r0 + ldr r0, _0223836C ; =0x00000231 + ldrb r5, [r1, r0] + mov r0, #0x2c + mul r0, r5 + add r4, r7, r0 + ldrb r0, [r4, #2] + lsl r1, r0, #3 + ldr r0, _02238368 ; =0x02245614 + add r0, r0, r1 + ldrb r0, [r0, #4] + cmp r0, #2 + bne _02238354 + add r0, r7, #0 + add r1, r5, #0 + bl MOD12_022381D8 + ldr r0, [sp, #0xc] + add r3, r5, #0 + str r0, [sp] + ldrb r5, [r4, #2] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + lsl r6, r5, #3 + ldr r5, _02238368 ; =0x02245614 + add r1, r7, #0 + ldr r5, [r5, r6] + blx r5 + mov r0, #1 + strb r0, [r4, #0x14] + mov r0, #0x18 + ldrsh r1, [r4, r0] + mov r0, #0x1e + ldrsh r0, [r4, r0] + add r0, r1, r0 + strh r0, [r4, #0x18] +_02238354: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, r1 + ble _02238308 +_02238360: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238364: .word 0x02245618 +_02238368: .word 0x02245614 +_0223836C: .word 0x00000231 + + thumb_func_start MOD12_02238370 +MOD12_02238370: ; 0x02238370 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r2, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD12_022381D8 + add r7, r5, #0 + lsl r0, r6, #2 + add r7, #0xb0 + str r0, [sp, #0xc] + ldr r0, [r7, r0] + lsl r0, r0, #8 + lsr r0, r0, #0x18 + beq _022383C6 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r1, r5, r4 + mov r0, #0x18 + ldrsh r0, [r1, r0] + add r1, r5, #0 + add r1, #0x1e + ldrsh r2, [r1, r4] + add r2, r2, r0 + strh r2, [r1, r4] + mov r1, #0xa + bl _s32_div_f + ldr r1, _022383E8 ; =0x00007530 + mov r2, #0 + str r1, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + ldr r1, [sp, #0xc] + add r0, r5, r4 + ldr r1, [r7, r1] + add r3, r6, #0 + lsl r1, r1, #8 + lsr r1, r1, #0x18 + bl MOD12_0223805C +_022383C6: + mov r0, #0x2c + add r2, r6, #0 + add r1, r5, #0 + mul r2, r0 + add r1, #0x18 + add r5, r5, r2 + mov r3, #0x1e + ldrsh r4, [r5, r3] + mov r3, #0x20 + ldrsh r3, [r5, r3] + ldrsh r0, [r1, r2] + add r3, r4, r3 + add r0, r0, r3 + strh r0, [r1, r2] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022383E8: .word 0x00007530 + + thumb_func_start MOD12_022383EC +MOD12_022383EC: ; 0x022383EC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + lsl r7, r0, #3 + ldr r0, _02238444 ; =0x02245618 + ldrb r0, [r0, r7] + cmp r0, #4 + bne _0223843C + ldr r0, [sp, #8] + add r2, r6, #0 + add r3, r6, #0 + ldr r6, _02238448 ; =0x02245614 + str r0, [sp] + ldr r0, [sp, #4] + ldr r6, [r6, r7] + add r1, r5, #0 + blx r6 + add r3, r5, r4 + mov r0, #1 + strb r0, [r3, #0x14] + add r5, #0x18 + mov r1, #0x1e + ldrsh r2, [r5, r4] + ldrsh r1, [r3, r1] + add sp, #0xc + add r1, r2, r1 + strh r1, [r5, r4] + pop {r4, r5, r6, r7, pc} +_0223843C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238444: .word 0x02245618 +_02238448: .word 0x02245614 + + thumb_func_start MOD12_0223844C +MOD12_0223844C: ; 0x0223844C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + lsl r7, r0, #3 + ldr r0, _022384A4 ; =0x02245618 + ldrb r0, [r0, r7] + cmp r0, #5 + bne _0223849C + ldr r0, [sp, #8] + add r2, r6, #0 + add r3, r6, #0 + ldr r6, _022384A8 ; =0x02245614 + str r0, [sp] + ldr r0, [sp, #4] + ldr r6, [r6, r7] + add r1, r5, #0 + blx r6 + add r3, r5, r4 + mov r0, #1 + strb r0, [r3, #0x14] + add r5, #0x18 + mov r1, #0x1e + ldrsh r2, [r5, r4] + ldrsh r1, [r3, r1] + add sp, #0xc + add r1, r2, r1 + strh r1, [r5, r4] + pop {r4, r5, r6, r7, pc} +_0223849C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022384A4: .word 0x02245618 +_022384A8: .word 0x02245614 + + thumb_func_start MOD12_022384AC +MOD12_022384AC: ; 0x022384AC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + lsl r7, r0, #3 + ldr r0, _02238504 ; =0x02245618 + ldrb r0, [r0, r7] + cmp r0, #6 + bne _022384FC + ldr r0, [sp, #8] + add r2, r6, #0 + add r3, r6, #0 + ldr r6, _02238508 ; =0x02245614 + str r0, [sp] + ldr r0, [sp, #4] + ldr r6, [r6, r7] + add r1, r5, #0 + blx r6 + add r3, r5, r4 + mov r0, #1 + strb r0, [r3, #0x14] + add r5, #0x18 + mov r1, #0x1e + ldrsh r2, [r5, r4] + ldrsh r1, [r3, r1] + add sp, #0xc + add r1, r2, r1 + strh r1, [r5, r4] + pop {r4, r5, r6, r7, pc} +_022384FC: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238504: .word 0x02245618 +_02238508: .word 0x02245614 + + thumb_func_start MOD12_0223850C +MOD12_0223850C: ; 0x0223850C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + str r0, [sp] + add r0, r4, #0 + add r1, r2, #0 + str r2, [sp, #4] + add r7, r3, #0 + bl MOD12_022381D8 + mov r0, #0 + strb r0, [r7, #0xc] + strb r0, [r7, #0xd] + ldr r1, [sp] + ldr r0, [sp, #4] + mov r6, #0x2c + add r1, r1, r0 + ldr r0, _02238658 ; =0x0000023E + ldrb r5, [r1, r0] + ldr r0, [sp] + ldr r3, [r0] + ldr r0, [sp, #4] + add r2, r5, #0 + add r1, r0, #0 + mul r1, r6 + add r0, r4, r1 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xf3 + str r1, [sp, #0x10] + add r6, #0xf2 + ldrb r0, [r3, r0] + ldrh r1, [r4, r1] + ldrb r3, [r3, r6] + bl MOD12_02235C44 + add r6, r0, #0 + cmp r6, #0 + ble _0223857A + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x28] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _0223857A + add r0, r4, #0 + add r0, #0xc3 + ldrsb r1, [r0, r5] + add r1, r1, r6 + strb r1, [r0, r5] + ldrsb r1, [r0, r5] + cmp r1, #0x32 + blt _022385A6 + mov r1, #0x32 + strb r1, [r0, r5] + b _022385A6 +_0223857A: + cmp r6, #0 + bge _022385A4 + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x28] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _022385A4 + add r0, r4, #0 + add r0, #0xc3 + add r1, r0, r5 + ldrsb r0, [r0, r5] + cmp r0, #0 + ble _022385A4 + add r0, r0, r6 + mov r2, #0 + strb r0, [r1] + ldrsb r0, [r1, r2] + cmp r0, #0 + bgt _022385A6 + strb r2, [r1] + b _022385A6 +_022385A4: + mov r6, #0 +_022385A6: + add r1, r4, #0 + add r1, #0xc3 + add r0, r1, r5 + str r0, [sp, #8] + ldrsb r0, [r1, r5] + cmp r0, #0x32 + blt _022385D2 + ldr r0, [sp] + ldr r1, [r0] + ldr r0, _0223865C ; =0x0000011E + ldrb r0, [r1, r0] + cmp r5, r0 + bne _022385CA + ldr r0, [sp, #0x10] + mov r1, #0x50 + add r0, r4, r0 + strb r1, [r0, #8] + b _022385D2 +_022385CA: + ldr r0, [sp, #0x10] + mov r1, #0x32 + add r0, r4, r0 + strb r1, [r0, #8] +_022385D2: + add r0, r4, #0 + ldr r1, [sp, #0x10] + add r0, #8 + add r5, r0, r1 + ldrsb r0, [r0, r1] + mov r1, #0xa + bl _s32_div_f + strb r0, [r7, #0xa] + cmp r6, #0 + ble _0223862C + ldr r0, [sp, #0xc] + mov r1, #0xb + ldrh r0, [r0] + bl FUN_0206AB18 + bl MOD12_02235AC4 + strb r0, [r7, #0xc] + ldr r0, [sp, #8] + mov r1, #0 + ldrsb r0, [r0, r1] + mov r1, #0xa + bl _s32_div_f + cmp r0, #5 + bhi _0223863E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02238614: ; jump table + .short _0223863E - _02238614 - 2 ; case 0 + .short _0223863E - _02238614 - 2 ; case 1 + .short _0223863E - _02238614 - 2 ; case 2 + .short _0223863E - _02238614 - 2 ; case 3 + .short _02238620 - _02238614 - 2 ; case 4 + .short _02238626 - _02238614 - 2 ; case 5 +_02238620: + mov r0, #0x19 + strb r0, [r7, #0xd] + b _0223863E +_02238626: + mov r0, #0x1a + strb r0, [r7, #0xd] + b _0223863E +_0223862C: + bge _0223863E + ldr r0, [sp, #0xc] + mov r1, #0xb + ldrh r0, [r0] + bl FUN_0206AB18 + bl MOD12_02235AF0 + strb r0, [r7, #0xc] +_0223863E: + ldr r0, [sp, #4] + mov r1, #0x2c + add r2, r0, #0 + mov r0, #0 + add r4, #0x18 + mul r2, r1 + ldrsh r1, [r4, r2] + ldrsb r0, [r5, r0] + add r0, r1, r0 + strh r0, [r4, r2] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02238658: .word 0x0000023E +_0223865C: .word 0x0000011E + + thumb_func_start MOD12_02238660 +MOD12_02238660: ; 0x02238660 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #9] + bl MOD12_02235C38 + add r5, #0x18 + ldrsh r1, [r5, r4] + add r0, r1, r0 + strh r0, [r5, r4] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02238688 +MOD12_02238688: ; 0x02238688 + push {r3, r4, r5, r6} + add r3, r0, #0 + ldr r4, _022386B8 ; =0xFFFF0000 + ldr r5, _022386BC ; =0xFF00FFFF + mov r2, #0 + add r3, #0xb0 +_02238694: + ldr r1, [r3] + add r2, r2, #1 + and r1, r4 + str r1, [r3] + ldr r6, [r0, #0x28] + and r1, r5 + lsl r6, r6, #0xc + lsr r6, r6, #0x18 + lsl r6, r6, #0x18 + lsr r6, r6, #8 + orr r1, r6 + add r0, #0x2c + stmia r3!, {r1} + cmp r2, #4 + blt _02238694 + pop {r3, r4, r5, r6} + bx lr + nop +_022386B8: .word 0xFFFF0000 +_022386BC: .word 0xFF00FFFF + + thumb_func_start MOD12_022386C0 +MOD12_022386C0: ; 0x022386C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r0, #4 + str r3, [sp, #0xc] + mov ip, r0 + add r7, r1, #0 + mov r0, #0 + add r2, sp, #0x10 + mov r3, #0xff +_022386D2: + ldr r4, [r1, #0x28] + lsl r5, r4, #0x1a + lsr r5, r5, #0x1e + bne _022386DE + strb r3, [r2] + b _022386F2 +_022386DE: + cmp r5, #1 + bne _022386EA + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + bne _022386EA + mov ip, r0 +_022386EA: + ldr r4, [r1, #0x28] + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + strb r4, [r2] +_022386F2: + add r0, r0, #1 + add r1, #0x2c + add r2, r2, #1 + cmp r0, #4 + blt _022386D2 + ldr r0, [sp, #0xc] + mov r1, #0xff + add r6, sp, #0x10 + strb r1, [r6, r0] + mov r4, #0 +_02238706: + mov r1, #0 + add r2, r6, #0 + add r3, r7, #0 +_0223870C: + ldrb r0, [r2] + cmp r0, #0xff + beq _02238728 + cmp r4, r0 + bne _02238728 + ldr r5, [r3, #0x28] + lsl r5, r5, #0x18 + lsr r5, r5, #0x1e + cmp r0, r5 + bne _02238728 + ldrb r0, [r6, r1] + add r0, r0, #1 + strb r0, [r6, r1] + b _02238732 +_02238728: + add r1, r1, #1 + add r2, r2, #1 + add r3, #0x2c + cmp r1, #4 + blt _0223870C +_02238732: + cmp r1, #4 + beq _0223873C + add r4, r4, #1 + cmp r4, #4 + blt _02238706 +_0223873C: + mov r3, #0 + add r1, sp, #0x10 + add r2, r7, #0 + mov r4, #0xc0 +_02238744: + ldrb r5, [r1] + cmp r5, #0xff + beq _02238756 + ldr r0, [r2, #0x28] + lsl r5, r5, #0x1e + bic r0, r4 + lsr r5, r5, #0x18 + orr r0, r5 + str r0, [r2, #0x28] +_02238756: + add r3, r3, #1 + add r1, r1, #1 + add r2, #0x2c + cmp r3, #4 + blt _02238744 + ldr r0, [sp, #0xc] + mov r1, #0x2c + mul r1, r0 + add r0, r7, r1 + ldr r2, [r0, #0x28] + mov r1, #0x30 + bic r2, r1 + mov r1, #0x10 + orr r2, r1 + mov r1, #0xc0 + bic r2, r1 + mov r1, ip + str r2, [r0, #0x28] + cmp r1, #4 + beq _02238794 + mov r1, ip + str r1, [sp] + ldr r1, _022387AC ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #1 + bl MOD12_0223805C + b _022387A6 +_02238794: + ldr r1, _022387AC ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C +_022387A6: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022387AC: .word 0x00007530 + + thumb_func_start MOD12_022387B0 +MOD12_022387B0: ; 0x022387B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r0, #4 + str r3, [sp, #0xc] + mov ip, r0 + add r7, r1, #0 + mov r0, #0 + add r2, sp, #0x10 + mov r3, #0xff +_022387C2: + ldr r4, [r1, #0x28] + lsl r5, r4, #0x1a + lsr r5, r5, #0x1e + bne _022387CE + strb r3, [r2] + b _022387E4 +_022387CE: + cmp r5, #2 + bne _022387DC + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + cmp r4, #3 + bne _022387DC + mov ip, r0 +_022387DC: + ldr r4, [r1, #0x28] + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + strb r4, [r2] +_022387E4: + add r0, r0, #1 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + add r1, #0x2c + add r2, r2, #1 + cmp r0, #4 + blt _022387C2 + ldr r0, [sp, #0xc] + mov r1, #0xff + add r6, sp, #0x10 + strb r1, [r6, r0] + mov r4, #3 +_022387FC: + mov r1, #0 + add r2, r6, #0 + add r3, r7, #0 +_02238802: + ldrb r0, [r2] + cmp r0, #0xff + beq _0223881E + cmp r4, r0 + bne _0223881E + ldr r5, [r3, #0x28] + lsl r5, r5, #0x18 + lsr r5, r5, #0x1e + cmp r0, r5 + bne _0223881E + ldrb r0, [r6, r1] + sub r0, r0, #1 + strb r0, [r6, r1] + b _0223882C +_0223881E: + add r0, r1, #1 + lsl r0, r0, #0x18 + asr r1, r0, #0x18 + add r2, r2, #1 + add r3, #0x2c + cmp r1, #4 + blt _02238802 +_0223882C: + cmp r1, #4 + beq _0223883E + sub r0, r4, #1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bgt _022387FC +_0223883E: + mov r3, #0 + add r1, sp, #0x10 + add r2, r7, #0 + mov r4, #0xc0 +_02238846: + ldrb r5, [r1] + cmp r5, #0xff + beq _02238858 + ldr r0, [r2, #0x28] + lsl r5, r5, #0x1e + bic r0, r4 + lsr r5, r5, #0x18 + orr r0, r5 + str r0, [r2, #0x28] +_02238858: + add r0, r3, #1 + lsl r0, r0, #0x18 + asr r3, r0, #0x18 + add r1, r1, #1 + add r2, #0x2c + cmp r3, #4 + blt _02238846 + ldr r0, [sp, #0xc] + mov r1, #0x2c + mul r1, r0 + add r0, r7, r1 + ldr r2, [r0, #0x28] + mov r1, #0x30 + bic r2, r1 + mov r1, #0x20 + orr r2, r1 + mov r1, #0xc0 + bic r2, r1 + mov r1, #0xc0 + orr r1, r2 + str r1, [r0, #0x28] + mov r1, ip + cmp r1, #4 + bne _0223889C + ldr r1, _022388B8 ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + b _022388B0 +_0223889C: + mov r1, ip + str r1, [sp] + ldr r1, _022388B8 ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #1 + bl MOD12_0223805C +_022388B0: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022388B8: .word 0x00007530 + + thumb_func_start MOD12_022388BC +MOD12_022388BC: ; 0x022388BC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r4, #0 + mov r0, #0x2c + add r7, r3, #0 + mul r3, r0 + add r2, #9 + add r1, #0x1e + ldrb r6, [r2, r3] + mov r5, #0x14 + ldrsh r0, [r1, r3] + mul r5, r6 + add r0, r0, r5 + strh r0, [r1, r3] + ldrb r0, [r2, r3] + cmp r0, #0 + beq _022388EA + cmp r0, #1 + beq _022388EE + cmp r0, #2 + beq _022388F2 + b _022388F6 +_022388EA: + mov r2, #0 + b _022388F8 +_022388EE: + mov r2, #1 + b _022388F8 +_022388F2: + mov r2, #2 + b _022388F8 +_022388F6: + mov r2, #3 +_022388F8: + ldr r0, _02238910 ; =0x00007530 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r4, r3 + ldrb r1, [r0, #2] + add r3, r7, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238910: .word 0x00007530 + + thumb_func_start MOD12_02238914 +MOD12_02238914: ; 0x02238914 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r3, [sp, #0xc] + ldr r3, [r0] + ldr r0, [sp, #0xc] + mov r6, #0x2c + add r4, r0, #0 + add r0, r6, #0 + mul r4, r6 + add r5, r1, #0 + add r7, r5, r4 + add r0, #0xf3 + add r6, #0xf2 + ldrb r0, [r3, r0] + ldrh r1, [r5, r4] + ldrb r2, [r7, #3] + ldrb r3, [r3, r6] + bl MOD12_02235C44 + cmp r0, #0 + ble _0223896C + ldr r0, [r7, #0x28] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _0223896C + add r1, r5, #0 + add r1, #0x1e + ldrsh r0, [r1, r4] + ldr r2, _02238974 ; =0x00007530 + ldr r3, [sp, #0xc] + add r0, #0x14 + strh r0, [r1, r4] + str r2, [sp] + ldrh r1, [r5, r4] + add r0, r7, #0 + str r1, [sp, #4] + str r2, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223896C: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02238974: .word 0x00007530 + + thumb_func_start MOD12_02238978 +MOD12_02238978: ; 0x02238978 + mov r0, #1 + bx lr + + thumb_func_start MOD12_0223897C +MOD12_0223897C: ; 0x0223897C + push {r3, r4, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + mul r4, r0 + add r0, r1, r4 + ldrb r2, [r0, #9] + cmp r2, #0 + bne _022389A8 + add r1, #0x1e + ldrsh r2, [r1, r4] + add r2, #0x1e + strh r2, [r1, r4] + ldr r1, _022389C0 ; =0x00007530 + mov r2, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C + b _022389B8 +_022389A8: + ldr r1, _022389C0 ; =0x00007530 + mov r2, #1 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C +_022389B8: + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + nop +_022389C0: .word 0x00007530 + + thumb_func_start MOD12_022389C4 +MOD12_022389C4: ; 0x022389C4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsl r4, r3, #1 + add r2, r1, #0 + add r4, r0, r4 + ldr r0, _02238A10 ; =0x00000256 + mov r1, #0x2c + add r7, r3, #0 + mul r7, r1 + ldrh r1, [r2, r7] + ldrh r0, [r4, r0] + cmp r1, r0 + beq _02238A0A + add r6, r2, #0 + add r6, #0xb0 + lsl r5, r3, #2 + lsl r1, r1, #0x10 + ldr r4, [r6, r5] + ldr r0, _02238A14 ; =0xFFFF0000 + lsr r1, r1, #0x10 + and r0, r4 + orr r0, r1 + str r0, [r6, r5] + ldr r0, _02238A18 ; =0x00007530 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r2, r7 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02238A0A: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238A10: .word 0x00000256 +_02238A14: .word 0xFFFF0000 +_02238A18: .word 0x00007530 + + thumb_func_start MOD12_02238A1C +MOD12_02238A1C: ; 0x02238A1C + push {r4, r5, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + add r5, r1, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #3] + add r2, r5, #0 + add r2, #0x1e + add r1, r5, r0 + mov r0, #0xc0 + ldrsb r0, [r1, r0] + ldrsh r1, [r2, r4] + add r1, r1, r0 + strh r1, [r2, r4] + mov r1, #0xa + bl _s32_div_f + ldr r3, _02238A5C ; =0x00007530 + mov r2, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_02238A5C: .word 0x00007530 + + thumb_func_start MOD12_02238A60 +MOD12_02238A60: ; 0x02238A60 + push {r3, r4, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + mul r4, r0 + add r0, r1, r4 + ldrb r2, [r0, #9] + cmp r2, #3 + bne _02238A8C + add r1, #0x1e + ldrsh r2, [r1, r4] + add r2, #0x96 + strh r2, [r1, r4] + ldr r1, _02238AA4 ; =0x00007530 + mov r2, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C + b _02238A9C +_02238A8C: + ldr r1, _02238AA4 ; =0x00007530 + mov r2, #1 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C +_02238A9C: + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + nop +_02238AA4: .word 0x00007530 + + thumb_func_start MOD12_02238AA8 +MOD12_02238AA8: ; 0x02238AA8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r0, #0x2c + add r7, r3, #0 + add r4, r1, #0 + mul r7, r0 + add r1, r4, r7 + ldr r0, [r1, #0x28] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02238AC6 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238AC6: + mov r3, #0 + mov r0, #0xc3 +_02238ACA: + add r2, r4, r3 + ldrsb r2, [r2, r0] + cmp r2, #0 + bne _02238AD8 + add r3, r3, #1 + cmp r3, #3 + blt _02238ACA +_02238AD8: + cmp r3, #3 + bne _02238AE2 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238AE2: + ldr r2, [r1, #0x28] + mov r0, #8 + orr r0, r2 + mov r3, #0xc3 + str r0, [r1, #0x28] + mov r2, #0 + add r5, r3, #0 +_02238AF0: + add r0, r4, r2 + ldrsb r6, [r0, r5] + cmp r6, #0 + ble _02238B00 + ldrsb r6, [r0, r3] + add r0, #0xc3 + sub r6, #0xa + strb r6, [r0] +_02238B00: + add r2, r2, #1 + cmp r2, #3 + blt _02238AF0 + ldr r3, _02238B20 ; =0x00007530 + add r0, r1, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r1, r4, r7 + ldrb r1, [r1, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238B20: .word 0x00007530 + + thumb_func_start MOD12_02238B24 +MOD12_02238B24: ; 0x02238B24 + mov r0, #0x2c + mul r0, r3 + add r2, r1, r0 + ldr r1, [r2, #0x28] + ldr r0, _02238B40 ; =0xFFF00FFF + and r1, r0 + ldrb r0, [r2, #2] + lsl r0, r0, #0x18 + lsr r0, r0, #0xc + orr r0, r1 + str r0, [r2, #0x28] + mov r0, #1 + bx lr + nop +_02238B40: .word 0xFFF00FFF + + thumb_func_start MOD12_02238B44 +MOD12_02238B44: ; 0x02238B44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r2, r1, #0 + ldr r1, [sp, #0x20] + add r4, r0, #0 + mov ip, r3 + cmp r1, #4 + bge _02238B70 + ldr r7, _02238B90 ; =0x00000231 + mov r6, #0x2c + mov r3, #2 +_02238B5A: + add r0, r4, r1 + ldrb r0, [r0, r7] + add r1, r1, #1 + add r5, r0, #0 + mul r5, r6 + add r0, r2, r5 + ldr r5, [r0, #0x28] + orr r5, r3 + str r5, [r0, #0x28] + cmp r1, #4 + blt _02238B5A +_02238B70: + ldr r3, _02238B94 ; =0x00007530 + mov r1, #0x2c + mov r0, ip + str r3, [sp] + mul r1, r0 + str r3, [sp, #4] + add r0, r2, r1 + str r3, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238B90: .word 0x00000231 +_02238B94: .word 0x00007530 + + thumb_func_start MOD12_02238B98 +MOD12_02238B98: ; 0x02238B98 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, [sp, #0x20] + cmp r1, #0 + bne _02238BAA + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02238BAA: + sub r1, r1, #1 + add r1, r0, r1 + ldr r0, _02238BF0 ; =0x00000231 + ldrb r4, [r1, r0] + mov r0, #0x2c + add r1, r4, #0 + mul r1, r0 + add r2, r5, r1 + mov r1, #8 + ldrsb r2, [r2, r1] + cmp r2, #0 + bne _02238BC8 + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02238BC8: + add r1, r3, #0 + mul r1, r0 + add r0, r5, #0 + add r0, #0x1e + ldrsh r6, [r0, r1] + add r2, r6, r2 + strh r2, [r0, r1] + ldr r0, _02238BF4 ; =0x00007530 + str r4, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, r1 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02238BF0: .word 0x00000231 +_02238BF4: .word 0x00007530 + + thumb_func_start MOD12_02238BF8 +MOD12_02238BF8: ; 0x02238BF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + str r1, [sp, #0xc] + str r3, [sp, #0x10] + mov r3, #0 + add r0, sp, #0x18 + add r1, sp, #0x14 +_02238C08: + lsl r2, r3, #0x18 + lsr r2, r2, #0x18 + strb r2, [r0] + strb r2, [r1] + add r2, r3, #1 + lsl r2, r2, #0x18 + asr r3, r2, #0x18 + add r0, r0, #1 + add r1, r1, #1 + cmp r3, #4 + blt _02238C08 + mov r4, #0 + add r7, sp, #0x18 + add r6, sp, #0x14 +_02238C24: + ldr r0, [r5] + bl FUN_02082878 + mov r1, #4 + sub r1, r1, r4 + bl _s32_div_f + lsl r0, r1, #0x18 + lsr r2, r0, #0x18 + mov r1, #0 + add r3, r6, #0 +_02238C3A: + ldrb r0, [r3] + cmp r0, #0xff + beq _02238C52 + cmp r2, #0 + bne _02238C4C + mov r0, #0xff + strb r4, [r7, r1] + strb r0, [r6, r1] + b _02238C5E +_02238C4C: + sub r0, r2, #1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 +_02238C52: + add r0, r1, #1 + lsl r0, r0, #0x18 + asr r1, r0, #0x18 + add r3, r3, #1 + cmp r1, #4 + blt _02238C3A +_02238C5E: + add r0, r4, #1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + cmp r4, #4 + blt _02238C24 + ldr r1, [sp, #0xc] + mov r3, #0 + add r2, sp, #0x18 + mov r4, #0x30 + mov r7, #0x30 + mov r5, #0xc0 +_02238C74: + ldr r0, [r1, #0x28] + bic r0, r4 + orr r0, r7 + str r0, [r1, #0x28] + ldrb r6, [r2] + bic r0, r5 + add r2, r2, #1 + lsl r6, r6, #0x1e + lsr r6, r6, #0x18 + orr r0, r6 + str r0, [r1, #0x28] + add r0, r3, #1 + lsl r0, r0, #0x18 + asr r3, r0, #0x18 + add r1, #0x2c + cmp r3, #4 + blt _02238C74 + ldr r3, _02238CB8 ; =0x00007530 + ldr r0, [sp, #0x10] + mov r1, #0x2c + mul r1, r0 + str r3, [sp] + ldr r0, [sp, #0xc] + str r3, [sp, #4] + str r3, [sp, #8] + add r0, r0, r1 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02238CB8: .word 0x00007530 + + thumb_func_start MOD12_02238CBC +MOD12_02238CBC: ; 0x02238CBC + push {r4, r5, lr} + sub sp, #0xc + ldr r0, [sp, #0x18] + add r5, r1, #0 + cmp r0, #3 + bne _02238CFE + add r4, r3, #0 + mov r0, #0x2c + add r3, r5, #0 + add r2, r5, #0 + mul r4, r0 + add r3, #0x18 + add r2, #0x1e + ldrsh r1, [r2, r4] + ldrsh r0, [r3, r4] + add r0, r1, r0 + strh r0, [r2, r4] + ldrsh r0, [r3, r4] + mov r1, #0xa + bl _s32_div_f + ldr r3, _02238D04 ; =0x00007530 + mov r2, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_02238CFE: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02238D04: .word 0x00007530 + + thumb_func_start MOD12_02238D08 +MOD12_02238D08: ; 0x02238D08 + push {r4, r5, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + add r5, r1, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #3] + add r1, r5, r0 + mov r0, #0xc0 + ldrsb r0, [r1, r0] + mov r1, #0xa + bl _s32_div_f + ldr r1, _02238D50 ; =0x0224560C + add r2, r5, #0 + add r2, #0x1e + ldrb r0, [r1, r0] + ldrsh r1, [r2, r4] + add r1, r1, r0 + strh r1, [r2, r4] + mov r1, #0xa + bl _s32_div_f + ldr r3, _02238D54 ; =0x00007530 + mov r2, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02238D50: .word 0x0224560C +_02238D54: .word 0x00007530 + + thumb_func_start MOD12_02238D58 +MOD12_02238D58: ; 0x02238D58 + push {r3, r4, lr} + sub sp, #0xc + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _02238D8A + add r4, r3, #0 + mov r0, #0x2c + add r2, r1, #0 + mul r4, r0 + add r2, #0x1e + ldrsh r0, [r2, r4] + ldr r3, _02238D90 ; =0x00007530 + add r0, #0x14 + strh r0, [r2, r4] + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r0, r1, r4 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_02238D8A: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02238D90: .word 0x00007530 + + thumb_func_start MOD12_02238D94 +MOD12_02238D94: ; 0x02238D94 + push {r3, r4, lr} + sub sp, #0xc + ldr r0, [sp, #0x18] + cmp r0, #3 + bne _02238DC6 + add r4, r3, #0 + mov r0, #0x2c + add r2, r1, #0 + mul r4, r0 + add r2, #0x1e + ldrsh r0, [r2, r4] + ldr r3, _02238DCC ; =0x00007530 + add r0, #0x14 + strh r0, [r2, r4] + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r0, r1, r4 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_02238DC6: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02238DCC: .word 0x00007530 + + thumb_func_start MOD12_02238DD0 +MOD12_02238DD0: ; 0x02238DD0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r2, r1, #0 + ldr r1, [sp, #0x20] + add r4, r0, #0 + mov ip, r3 + cmp r1, #4 + bge _02238DFC + ldr r7, _02238E1C ; =0x00000231 + mov r6, #0x2c + mov r3, #4 +_02238DE6: + add r0, r4, r1 + ldrb r0, [r0, r7] + add r1, r1, #1 + add r5, r0, #0 + mul r5, r6 + add r0, r2, r5 + ldr r5, [r0, #0x28] + orr r5, r3 + str r5, [r0, #0x28] + cmp r1, #4 + blt _02238DE6 +_02238DFC: + ldr r3, _02238E20 ; =0x00007530 + mov r1, #0x2c + mov r0, ip + str r3, [sp] + mul r1, r0 + str r3, [sp, #4] + add r0, r2, r1 + str r3, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238E1C: .word 0x00000231 +_02238E20: .word 0x00007530 + + thumb_func_start MOD12_02238E24 +MOD12_02238E24: ; 0x02238E24 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r0, #0 + ldr r0, [sp, #0x38] + add r5, r1, #0 + str r3, [sp, #0xc] + cmp r0, #0 + bne _02238E3A + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238E3A: + sub r0, r0, #1 + add r1, r6, r0 + ldr r0, _02238EDC ; =0x00000231 + mov r3, #0x2c + ldrb r0, [r1, r0] + str r0, [sp, #0x1c] + ldr r0, [sp, #0xc] + add r4, r0, #0 + mul r4, r3 + add r0, r5, r4 + str r0, [sp, #0x18] + ldr r0, [r0, #0x28] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _02238E6C + ldr r0, [sp, #0x1c] + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r0, [sp, #0x14] + ldr r0, [r0, #0x28] + str r1, [sp, #0x10] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _02238E72 +_02238E6C: + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238E72: + add r0, r3, #0 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x18] + ldr r7, [r6] + add r0, #0xf3 + add r3, #0xf2 + ldrb r0, [r7, r0] + ldrh r1, [r1] + ldrb r2, [r2, #3] + ldrb r3, [r7, r3] + bl MOD12_02235C44 + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r5, r2 + ldr r6, [r6] + ldr r3, _02238EE0 ; =0x0000011F + str r0, [sp, #0x20] + ldrb r0, [r6, r3] + sub r3, r3, #1 + ldrh r1, [r1] + ldrb r2, [r2, #3] + ldrb r3, [r6, r3] + bl MOD12_02235C44 + cmp r0, #0 + ble _02238ED6 + ldr r0, [sp, #0x20] + cmp r0, #0 + ble _02238ED6 + add r1, r5, #0 + add r1, #0x1e + ldrsh r0, [r1, r4] + ldr r3, [sp, #0xc] + mov r2, #0 + add r0, #0x1e + strh r0, [r1, r4] + ldr r0, [sp, #0x1c] + add r1, r5, r4 + str r0, [sp] + ldr r0, _02238EE4 ; =0x00007530 + str r0, [sp, #4] + str r0, [sp, #8] + ldrb r1, [r1, #2] + ldr r0, [sp, #0x18] + bl MOD12_0223805C + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02238ED6: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238EDC: .word 0x00000231 +_02238EE0: .word 0x0000011F +_02238EE4: .word 0x00007530 + + thumb_func_start MOD12_02238EE8 +MOD12_02238EE8: ; 0x02238EE8 + push {r4, r5, lr} + sub sp, #0xc + add r0, r1, #0 + mov r1, #0x2c + mul r1, r3 + add r4, r0, r1 + mov r1, #0x1e + ldrsh r2, [r4, r1] + ldr r1, [sp, #0x18] + ldr r5, _02238F44 ; =0x02245608 + ldrb r5, [r5, r1] + add r2, r2, r5 + strh r2, [r4, #0x1e] + cmp r1, #3 + bhi _02238F26 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02238F12: ; jump table + .short _02238F1A - _02238F12 - 2 ; case 0 + .short _02238F1E - _02238F12 - 2 ; case 1 + .short _02238F22 - _02238F12 - 2 ; case 2 + .short _02238F26 - _02238F12 - 2 ; case 3 +_02238F1A: + mov r2, #0 + b _02238F28 +_02238F1E: + mov r2, #1 + b _02238F28 +_02238F22: + mov r2, #2 + b _02238F28 +_02238F26: + mov r2, #3 +_02238F28: + ldr r1, _02238F48 ; =0x00007530 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0x2c + mul r1, r3 + add r0, r0, r1 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_02238F44: .word 0x02245608 +_02238F48: .word 0x00007530 + + thumb_func_start MOD12_02238F4C +MOD12_02238F4C: ; 0x02238F4C + push {r3, r4, lr} + sub sp, #0xc + ldr r2, [sp, #0x18] + cmp r2, #0 + bne _02238F5C + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_02238F5C: + sub r2, r2, #1 + add r2, r0, r2 + ldr r0, _02238FA4 ; =0x00000231 + ldrb r2, [r2, r0] + mov r0, #0x2c + mul r0, r2 + add r2, r1, r0 + mov r0, #8 + ldrsb r0, [r2, r0] + cmp r0, #0x32 + bge _02238F76 + cmp r0, #0x50 + blt _02238F9E +_02238F76: + add r2, r1, #0 + mov r0, #0x2c + add r4, r3, #0 + mul r4, r0 + add r2, #0x1e + ldrsh r0, [r2, r4] + add r0, #0x1e + strh r0, [r2, r4] + ldr r0, _02238FA8 ; =0x00007530 + mov r2, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r1, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_02238F9E: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02238FA4: .word 0x00000231 +_02238FA8: .word 0x00007530 + + thumb_func_start MOD12_02238FAC +MOD12_02238FAC: ; 0x02238FAC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov ip, r1 + mov r0, #0x2c + add r6, r3, #0 + mul r6, r0 + mov r0, ip + mov r2, #0 + add r4, r1, #0 + add r5, r0, r6 + mov r7, #0x1c +_02238FC2: + cmp r2, r3 + beq _02238FD0 + mov r0, #0x1a + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r7] + cmp r1, r0 + blt _02238FD8 +_02238FD0: + add r2, r2, #1 + add r4, #0x2c + cmp r2, #4 + blt _02238FC2 +_02238FD8: + cmp r2, #4 + beq _02238FE2 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238FE2: + mov r1, ip + add r1, #0x1e + ldrsh r0, [r1, r6] + mov r2, #0 + add r0, #0x1e + strh r0, [r1, r6] + ldr r0, _02239008 ; =0x00007530 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, ip + add r0, r0, r6 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02239008: .word 0x00007530 + + thumb_func_start MOD12_0223900C +MOD12_0223900C: ; 0x0223900C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + str r1, [sp, #4] + mov r0, #0x15 + mov r1, #0x32 + bl FUN_02016998 + add r7, r0, #0 + ldr r1, [r6] + ldr r0, _02239060 ; =0x00000127 + ldrb r4, [r1, r0] + cmp r4, #4 + bge _02239056 + ldr r0, [sp, #4] + lsl r1, r4, #1 + add r5, r0, r1 + add r0, #8 + str r0, [sp, #4] +_02239032: + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD12_02239064 + ldr r0, [sp, #4] + add r1, r7, #0 + add r0, r0, r4 + str r0, [sp] + add r0, r6, #0 + add r2, r4, #0 + add r3, r5, #0 + bl MOD12_022390DC + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _02239032 +_02239056: + add r0, r7, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239060: .word 0x00000127 + + thumb_func_start MOD12_02239064 +MOD12_02239064: ; 0x02239064 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + add r7, r2, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #0 + mov r2, #0x32 + bl MI_CpuFill8 + lsl r0, r7, #2 + ldr r5, [sp] + mov r4, #0 + str r0, [sp, #4] +_02239080: + ldr r1, [r6] + ldr r0, [sp, #4] + mov r2, #0 + ldr r0, [r0, r1] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + strh r0, [r5] + mov r0, #0x23 + lsl r0, r0, #4 + ldrh r2, [r5] + add r0, r6, r0 + add r1, r7, #0 + bl MOD12_02235BEC + cmp r0, #1 + bne _022390BA + ldrh r0, [r5] + mov r1, #0xa + bl FUN_0206AB18 + strb r0, [r5, #0xa] + ldrh r0, [r5] + mov r1, #0xb + bl FUN_0206AB18 + strb r0, [r5, #0xb] + b _022390BE +_022390BA: + mov r0, #0 + strh r0, [r5] +_022390BE: + add r4, r4, #1 + add r5, #0xc + cmp r4, #4 + blt _02239080 + ldr r0, [r6] + add r1, r0, r7 + mov r0, #0x43 + lsl r0, r0, #2 + ldrb r1, [r1, r0] + ldr r0, [sp] + add r0, #0x30 + str r0, [sp] + strb r1, [r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_022390DC +MOD12_022390DC: ; 0x022390DC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #4] + ldr r0, [sp, #0x58] + str r1, [sp, #8] + str r0, [sp, #0x58] + mov r1, #0x23 + ldr r0, [sp, #4] + lsl r1, r1, #4 + add r0, r0, r1 + str r0, [sp, #0x1c] + mov r0, #0 + str r2, [sp, #0xc] + str r3, [sp, #0x10] + str r0, [sp, #0x20] +_022390FA: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x20] + add r0, r1, r0 + ldrb r1, [r0, #1] + ldr r0, [sp, #0xc] + cmp r0, r1 + beq _02239112 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #4 + blt _022390FA +_02239112: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, _022393A4 ; =0x0224574C + str r0, [sp, #0x18] +_0223911A: + ldr r0, [sp, #0x20] + add r1, r0, #1 + ldr r0, [sp, #0x18] + ldrb r0, [r0] + cmp r1, r0 + bne _0223920C + mov r1, #0 + add r2, sp, #0x3c + add r2, #2 + add r0, r1, #0 +_0223912E: + add r1, r1, #1 + strb r0, [r2] + add r2, r2, #1 + cmp r1, #3 + blt _0223912E + ldr r0, [sp, #4] + add r3, sp, #0x3c + ldr r1, [r0] + ldr r0, _022393A8 ; =0x0000011F + ldr r4, [sp, #0x18] + ldrb r0, [r1, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + str r0, [sp] + ldrb r4, [r4, #1] + ldr r0, [sp, #0x1c] + add r3, #2 + lsl r5, r4, #2 + ldr r4, _022393AC ; =0x022456D8 + ldr r4, [r4, r5] + blx r4 + cmp r0, #1 + bne _0223920C + ldr r0, [sp, #0x18] + mov r1, #3 + ldrsb r0, [r0, r1] + cmp r0, #0 + beq _02239170 + cmp r0, #2 + beq _02239184 + cmp r0, #3 + beq _02239184 + b _0223919A +_02239170: + mov r2, #0 + add r1, sp, #0x3c + add r1, #2 + add r0, r2, #0 +_02239178: + add r2, r2, #1 + strb r0, [r1] + add r1, r1, #1 + cmp r2, #3 + blt _02239178 + b _0223919A +_02239184: + add r2, sp, #0x3c + mov r3, #0 + add r2, #2 + mov r0, #1 +_0223918C: + ldrb r1, [r2] + add r3, r3, #1 + eor r1, r0 + strb r1, [r2] + add r2, r2, #1 + cmp r3, #3 + blt _0223918C +_0223919A: + ldr r0, [sp, #4] + ldr r1, [r0] + ldr r0, [sp, #0xc] + add r1, r0, r1 + mov r0, #0x43 + lsl r0, r0, #2 + ldrb r2, [r1, r0] + ldr r0, [sp, #0x18] + lsl r1, r2, #1 + add r0, r0, r1 + mov r1, #4 + ldrsh r4, [r0, r1] + cmp r2, #0 + beq _022391BC + ldr r0, [sp, #0x18] + ldrsh r0, [r0, r1] + add r4, r4, r0 +_022391BC: + ldr r0, [sp, #0x18] + ldrb r0, [r0, #2] + cmp r0, #0xf0 + beq _022391CA + cmp r0, #0xf1 + beq _0223920E + b _0223924E +_022391CA: + ldr r0, [sp, #8] + mov r7, #0 + mov r5, #4 +_022391D0: + ldr r1, [sp, #4] + ldr r2, [r1] + ldr r1, _022393A8 ; =0x0000011F + ldrb r2, [r2, r1] + ldrb r1, [r0, #0xb] + cmp r2, r1 + bne _02239204 + mov r1, #2 + ldrsh r1, [r0, r1] + mov r3, #0 + add r2, r0, #0 + add r1, r1, r4 + strh r1, [r0, #2] + add r1, sp, #0x3c + add r1, #2 +_022391EE: + ldrb r6, [r1] + cmp r6, #1 + bne _022391FA + ldrsh r6, [r2, r5] + add r6, r6, r4 + strh r6, [r2, #4] +_022391FA: + add r3, r3, #1 + add r1, r1, #1 + add r2, r2, #2 + cmp r3, #3 + blt _022391EE +_02239204: + add r7, r7, #1 + add r0, #0xc + cmp r7, #4 + blt _022391D0 +_0223920C: + b _0223928C +_0223920E: + ldr r5, [sp, #8] + mov r7, #0 + mov r6, #4 +_02239214: + ldrb r0, [r5, #0xa] + bl FUN_02083114 + cmp r0, #0x14 + blt _02239244 + mov r0, #2 + ldrsh r0, [r5, r0] + mov r2, #0 + add r1, r5, #0 + add r0, r0, r4 + strh r0, [r5, #2] + add r0, sp, #0x3c + add r0, #2 +_0223922E: + ldrb r3, [r0] + cmp r3, #1 + bne _0223923A + ldrsh r3, [r1, r6] + add r3, r3, r4 + strh r3, [r1, #4] +_0223923A: + add r2, r2, #1 + add r0, r0, #1 + add r1, r1, #2 + cmp r2, #3 + blt _0223922E +_02239244: + add r7, r7, #1 + add r5, #0xc + cmp r7, #4 + blt _02239214 + b _0223928C +_0223924E: + ldr r0, [sp, #8] + mov r7, #0 + mov r5, #4 +_02239254: + ldr r1, [sp, #0x18] + ldrb r2, [r1, #2] + ldrb r1, [r0, #0xa] + cmp r2, r1 + bne _02239284 + mov r1, #2 + ldrsh r1, [r0, r1] + mov r3, #0 + add r2, r0, #0 + add r1, r1, r4 + strh r1, [r0, #2] + add r1, sp, #0x3c + add r1, #2 +_0223926E: + ldrb r6, [r1] + cmp r6, #1 + bne _0223927A + ldrsh r6, [r2, r5] + add r6, r6, r4 + strh r6, [r2, #4] +_0223927A: + add r3, r3, #1 + add r1, r1, #1 + add r2, r2, #2 + cmp r3, #3 + blt _0223926E +_02239284: + add r7, r7, #1 + add r0, #0xc + cmp r7, #4 + blt _02239254 +_0223928C: + ldr r0, [sp, #0x18] + add r0, #0xc + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #0xa5 + bge _0223929E + b _0223911A +_0223929E: + add r4, sp, #0x34 + mov r5, #0 + add r4, #2 +_022392A4: + ldr r0, [sp, #4] + ldr r0, [r0] + bl FUN_02082878 + strh r0, [r4] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022392A4 + mov r5, #0 + add r4, sp, #0x30 +_022392BA: + ldr r0, [sp, #4] + ldr r0, [r0] + bl FUN_02082878 + strh r0, [r4] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #3 + blt _022392BA + ldr r0, [sp, #8] + mov r7, #0 + ldrh r0, [r0] + cmp r0, #0 + bne _022392E2 + ldr r1, [sp, #8] +_022392D8: + add r1, #0xc + ldrh r0, [r1] + add r7, r7, #1 + cmp r0, #0 + beq _022392D8 +_022392E2: + mov r2, #0xc + add r1, r7, #0 + ldr r0, [sp, #8] + mul r1, r2 + add r1, r0, r1 + mov r0, #2 + add r4, r7, #1 + ldrsh r1, [r1, r0] + cmp r4, #4 + bge _02239336 + ldr r0, [sp, #8] + mul r2, r4 + add r2, r0, r2 + add r0, sp, #0x34 + lsl r3, r4, #1 + add r0, #2 + add r3, r0, r3 +_02239304: + ldrh r0, [r2] + cmp r0, #0 + beq _0223932C + mov r0, #2 + ldrsh r0, [r2, r0] + cmp r0, r1 + bgt _02239328 + cmp r0, r1 + bne _0223932C + ldrh r5, [r3] + lsl r6, r7, #1 + str r5, [sp, #0x28] + add r5, sp, #0x34 + add r5, #2 + ldrh r6, [r5, r6] + ldr r5, [sp, #0x28] + cmp r5, r6 + bls _0223932C +_02239328: + add r7, r4, #0 + add r1, r0, #0 +_0223932C: + add r4, r4, #1 + add r2, #0xc + add r3, r3, #2 + cmp r4, #4 + blt _02239304 +_02239336: + ldr r0, [sp, #4] + ldr r5, [r0] + ldr r0, _022393B0 ; =0x00000171 + ldrb r0, [r5, r0] + cmp r0, #0 + bne _022393CA + mov r0, #0xc + add r6, r7, #0 + mul r6, r0 + ldr r0, [sp, #8] + mov r2, #0 + add r4, r0, r6 + add r3, r2, #0 + mov r0, #4 +_02239352: + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _0223935A + add r2, r2, #1 +_0223935A: + add r3, r3, #1 + add r4, r4, #2 + cmp r3, #3 + blt _02239352 + cmp r2, #3 + bne _022393CA + ldr r1, _022393B4 ; =0x022456D4 + add r0, sp, #0x2c + ldrb r2, [r1] + strb r2, [r0] + ldrb r2, [r1, #1] + strb r2, [r0, #1] + ldrb r2, [r1, #2] + ldrb r1, [r1, #3] + strb r2, [r0, #2] + strb r1, [r0, #3] + add r0, r5, #0 + bl FUN_02082878 + ldr r1, [sp, #4] + mov r2, #0x12 + lsl r0, r0, #0x18 + ldr r1, [r1] + lsl r2, r2, #4 + ldrb r4, [r1, r2] + add r3, sp, #0x2c + lsr r0, r0, #0x18 + ldrb r3, [r3, r4] + cmp r0, r3 + bge _022393CA + add r2, r2, #3 + ldrb r2, [r1, r2] + ldr r1, [sp, #4] + ldr r0, [sp, #8] + add r2, r1, r2 + ldr r1, _022393B8 ; =0x0000023E + b _022393BC + .align 2, 0 +_022393A4: .word 0x0224574C +_022393A8: .word 0x0000011F +_022393AC: .word 0x022456D8 +_022393B0: .word 0x00000171 +_022393B4: .word 0x022456D4 +_022393B8: .word 0x0000023E +_022393BC: + add r0, r0, #4 + ldrb r1, [r2, r1] + add r0, r0, r6 + lsl r2, r1, #1 + ldrsh r1, [r0, r2] + sub r1, #0x64 + strh r1, [r0, r2] +_022393CA: + mov r0, #0 + str r0, [sp, #0x24] + mov r0, #0xc + add r1, r7, #0 + mul r1, r0 + ldr r0, [sp, #8] + add r3, sp, #0x30 + add r0, r0, r1 + mov r1, #4 + ldrsh r5, [r0, r1] + mov ip, r0 + mov r4, #1 + add r2, r0, #2 + add r3, #2 +_022393E6: + mov r0, #4 + ldrsh r6, [r2, r0] + cmp r6, r5 + bgt _02239400 + cmp r6, r5 + bne _02239404 + ldr r0, [sp, #0x24] + ldrh r7, [r3] + lsl r1, r0, #1 + add r0, sp, #0x30 + ldrh r0, [r0, r1] + cmp r7, r0 + bls _02239404 +_02239400: + str r4, [sp, #0x24] + add r5, r6, #0 +_02239404: + add r4, r4, #1 + add r2, r2, #2 + add r3, r3, #2 + cmp r4, #3 + blt _022393E6 + mov r0, ip + ldrh r1, [r0] + ldr r0, [sp, #0x10] + strh r1, [r0] + ldr r1, [sp, #0x58] + ldr r0, [sp, #0x24] + strb r0, [r1] + ldr r0, [sp, #0x10] + ldrh r0, [r0] + cmp r0, #0 + bne _02239428 + bl ErrorHandling +_02239428: + ldr r0, [sp, #0x58] + ldrb r0, [r0] + cmp r0, #3 + blo _02239434 + bl ErrorHandling +_02239434: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02239438 +MOD12_02239438: ; 0x02239438 + ldrb r0, [r0] + cmp r0, #4 + bne _02239442 + mov r0, #1 + bx lr +_02239442: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239448 +MOD12_02239448: ; 0x02239448 + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0xe0 + ldr r0, [r0] + lsl r0, r0, #8 + lsr r0, r0, #0x18 + beq _0223945A + mov r0, #1 + bx lr +_0223945A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239460 +MOD12_02239460: ; 0x02239460 + mov r1, #0 +_02239462: + ldrb r0, [r2, #0xa] + cmp r0, #5 + bne _0223946C + mov r0, #1 + bx lr +_0223946C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239462 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239478 +MOD12_02239478: ; 0x02239478 + mov r1, #0 +_0223947A: + ldrb r0, [r2, #0xa] + cmp r0, #9 + bne _02239484 + mov r0, #1 + bx lr +_02239484: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _0223947A + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239490 +MOD12_02239490: ; 0x02239490 + mov r1, #0 +_02239492: + ldrb r0, [r2, #0xa] + cmp r0, #0xc + bne _0223949C + mov r0, #1 + bx lr +_0223949C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239492 + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394A8 +MOD12_022394A8: ; 0x022394A8 + mov r1, #0 +_022394AA: + ldrb r0, [r2, #0xa] + cmp r0, #0xf + bne _022394B4 + mov r0, #1 + bx lr +_022394B4: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394AA + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394C0 +MOD12_022394C0: ; 0x022394C0 + mov r1, #0 +_022394C2: + ldrb r0, [r2, #0xa] + cmp r0, #0x11 + bne _022394CC + mov r0, #1 + bx lr +_022394CC: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394C2 + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394D8 +MOD12_022394D8: ; 0x022394D8 + mov r1, #0 +_022394DA: + ldrb r0, [r2, #0xa] + cmp r0, #0x12 + bne _022394E4 + mov r0, #1 + bx lr +_022394E4: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394DA + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394F0 +MOD12_022394F0: ; 0x022394F0 + mov r1, #0 +_022394F2: + ldrb r0, [r2, #0xa] + cmp r0, #0x13 + bne _022394FC + mov r0, #1 + bx lr +_022394FC: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394F2 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239508 +MOD12_02239508: ; 0x02239508 + mov r1, #0 +_0223950A: + ldrb r0, [r2, #0xa] + cmp r0, #0x14 + bne _02239514 + mov r0, #1 + bx lr +_02239514: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _0223950A + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239520 +MOD12_02239520: ; 0x02239520 + mov r1, #0 +_02239522: + ldrb r0, [r2, #0xa] + cmp r0, #0x15 + bne _0223952C + mov r0, #1 + bx lr +_0223952C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239522 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239538 +MOD12_02239538: ; 0x02239538 + push {r3, r4} + lsl r1, r1, #1 + add r2, r0, r1 + mov r1, #0x12 + ldrsh r3, [r2, r1] + mov r4, #0 +_02239544: + ldrsh r2, [r0, r1] + cmp r3, r2 + bgt _02239552 + add r4, r4, #1 + add r0, r0, #2 + cmp r4, #4 + blt _02239544 +_02239552: + cmp r4, #4 + bne _0223955C + mov r0, #1 + pop {r3, r4} + bx lr +_0223955C: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239564 +MOD12_02239564: ; 0x02239564 + push {r3, r4} + ldrb r2, [r0] + cmp r2, #4 + bne _0223958E + lsl r1, r1, #1 + add r2, r0, r1 + mov r1, #0x12 + ldrsh r3, [r2, r1] + mov r4, #0 +_02239576: + ldrsh r2, [r0, r1] + cmp r3, r2 + bgt _02239584 + add r4, r4, #1 + add r0, r0, #2 + cmp r4, #4 + blt _02239576 +_02239584: + cmp r4, #4 + bne _0223958E + mov r0, #1 + pop {r3, r4} + bx lr +_0223958E: + mov r0, #0 + pop {r3, r4} + bx lr + + thumb_func_start MOD12_02239594 +MOD12_02239594: ; 0x02239594 + ldr r3, [sp] + mov r1, #0 +_02239598: + ldrb r0, [r2, #0xa] + cmp r0, #4 + bne _022395A8 + ldrb r0, [r2, #0xb] + cmp r3, r0 + bne _022395A8 + mov r0, #1 + bx lr +_022395A8: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239598 + mov r0, #0 + bx lr + + thumb_func_start MOD12_022395B4 +MOD12_022395B4: ; 0x022395B4 + ldr r3, [sp] + mov r1, #0 +_022395B8: + ldrb r0, [r2, #0xb] + cmp r3, r0 + bne _022395C2 + mov r0, #1 + bx lr +_022395C2: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022395B8 + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022395D0 +MOD12_022395D0: ; 0x022395D0 + push {r3, r4, r5, r6} + ldr r5, [sp, #0x10] + mov r4, #0 +_022395D6: + ldrb r1, [r2, #0xb] + cmp r5, r1 + beq _022395E4 + add r4, r4, #1 + add r2, #0xc + cmp r4, #4 + blt _022395D6 +_022395E4: + cmp r4, #4 + bne _022395EE + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_022395EE: + mov r5, #0 + add r6, r5, #0 + mov r2, #1 + mov r1, #0x22 +_022395F6: + add r4, r0, r6 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _02239602 + strb r2, [r3, r6] + add r5, r5, #1 +_02239602: + add r6, r6, #1 + cmp r6, #3 + blt _022395F6 + cmp r5, #0 + ble _02239612 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_02239612: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239618 +MOD12_02239618: ; 0x02239618 + push {r3, r4, r5, r6} + ldr r5, [sp, #0x10] + mov r4, #0 +_0223961E: + ldrb r1, [r2, #0xb] + cmp r5, r1 + beq _0223962C + add r4, r4, #1 + add r2, #0xc + cmp r4, #4 + blt _0223961E +_0223962C: + cmp r4, #4 + bne _02239636 + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_02239636: + mov r5, #0 + add r6, r5, #0 + mov r2, #1 + mov r1, #0x22 +_0223963E: + add r4, r0, r6 + ldrsb r4, [r4, r1] + cmp r4, #0x1e + bne _0223964A + add r5, r5, #1 + strb r2, [r3, r6] +_0223964A: + add r6, r6, #1 + cmp r6, #3 + blt _0223963E + cmp r5, #0 + ble _0223965A + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_0223965A: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239660 +MOD12_02239660: ; 0x02239660 + mov r1, #0 +_02239662: + ldrb r0, [r2, #0xa] + cmp r0, #8 + bne _0223966C + mov r0, #1 + bx lr +_0223966C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239662 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239678 +MOD12_02239678: ; 0x02239678 + mov r1, #0 +_0223967A: + ldrb r0, [r2, #0xa] + cmp r0, #0xd + bne _02239684 + mov r0, #1 + bx lr +_02239684: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _0223967A + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239690 +MOD12_02239690: ; 0x02239690 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_0223969A: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _022396A6 + add r6, r6, #1 + strb r2, [r3, r5] +_022396A6: + add r5, r5, #1 + cmp r5, #3 + blt _0223969A + cmp r6, #0 + ble _022396B6 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022396B6: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022396BC +MOD12_022396BC: ; 0x022396BC + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022396C6: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x1e + bne _022396D2 + add r6, r6, #1 + strb r2, [r3, r5] +_022396D2: + add r5, r5, #1 + cmp r5, #3 + blt _022396C6 + cmp r6, #0 + ble _022396E2 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022396E2: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022396E8 +MOD12_022396E8: ; 0x022396E8 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022396F2: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0xa + bgt _022396FE + add r6, r6, #1 + strb r2, [r3, r5] +_022396FE: + add r5, r5, #1 + cmp r5, #3 + blt _022396F2 + cmp r6, #0 + ble _0223970E + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_0223970E: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239714 +MOD12_02239714: ; 0x02239714 + push {r3, r4} + mov r4, #0 + mov r1, #0x22 +_0223971A: + add r2, r0, r4 + ldrsb r2, [r2, r1] + cmp r2, #0x14 + bge _02239728 + mov r0, #0 + pop {r3, r4} + bx lr +_02239728: + add r4, r4, #1 + cmp r4, #3 + blt _0223971A + mov r1, #0 + mov r0, #1 +_02239732: + strb r0, [r3, r1] + add r1, r1, #1 + cmp r1, #3 + blt _02239732 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239740 +MOD12_02239740: ; 0x02239740 + push {r3, r4} + mov r4, #0 + mov r1, #0x22 +_02239746: + add r2, r0, r4 + ldrsb r2, [r2, r1] + cmp r2, #0x14 + ble _02239754 + mov r0, #0 + pop {r3, r4} + bx lr +_02239754: + add r4, r4, #1 + cmp r4, #3 + blt _02239746 + mov r1, #0 + mov r0, #1 +_0223975E: + strb r0, [r3, r1] + add r1, r1, #1 + cmp r1, #3 + blt _0223975E + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223976C +MOD12_0223976C: ; 0x0223976C + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_02239776: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x14 + bgt _02239782 + strb r2, [r3, r5] + add r6, r6, #1 +_02239782: + add r5, r5, #1 + cmp r5, #3 + blt _02239776 + cmp r6, #1 + bne _02239792 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_02239792: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239798 +MOD12_02239798: ; 0x02239798 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022397A2: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _022397AE + strb r2, [r3, r5] + add r6, r6, #1 +_022397AE: + add r5, r5, #1 + cmp r5, #3 + blt _022397A2 + cmp r6, #2 + bne _022397BE + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022397BE: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022397C4 +MOD12_022397C4: ; 0x022397C4 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022397CE: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0 + bne _022397DA + strb r2, [r3, r5] + add r6, r6, #1 +_022397DA: + add r5, r5, #1 + cmp r5, #3 + blt _022397CE + cmp r6, #1 + bne _022397EA + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022397EA: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022397F0 +MOD12_022397F0: ; 0x022397F0 + push {r3, r4, r5, r6} + ldr r5, [sp, #0x10] + mov r4, #0 +_022397F6: + ldrb r1, [r2, #0xb] + cmp r5, r1 + beq _02239804 + add r4, r4, #1 + add r2, #0xc + cmp r4, #4 + blt _022397F6 +_02239804: + cmp r4, #4 + bne _0223980E + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_0223980E: + mov r5, #0 + add r6, r5, #0 + mov r2, #1 + mov r1, #0x22 +_02239816: + add r4, r0, r6 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _02239822 + strb r2, [r3, r6] + add r5, r5, #1 +_02239822: + add r6, r6, #1 + cmp r6, #3 + blt _02239816 + cmp r5, #0 + ble _02239832 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_02239832: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239838 +MOD12_02239838: ; 0x02239838 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #8] + cmp r0, #0 + bne _02239858 + lsl r0, r4, #4 + add r0, r5, r0 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _02239872 + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_02239858: + bl FUN_02007534 + add r6, r5, #0 + add r6, #0x48 + lsl r7, r4, #4 + ldr r0, [r6, r7] + bl FUN_02016A18 + lsl r0, r4, #2 + mov r1, #0 + add r0, r5, r0 + str r1, [r0, #8] + str r1, [r6, r7] +_02239872: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02239874 +MOD12_02239874: ; 0x02239874 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0223987A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02239838 + add r4, r4, #1 + cmp r4, #4 + blt _0223987A + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223988C +MOD12_0223988C: ; 0x0223988C + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r2, _022398D4 ; =0x000080EA + mov r3, #0x43 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _022398D4 ; =0x000080EA + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x44 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022398D4 ; =0x000080EA + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x45 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022398D4: .word 0x000080EA + + thumb_func_start MOD12_022398D8 +MOD12_022398D8: ; 0x022398D8 + push {r4, lr} + ldr r1, _022398F4 ; =0x000080EA + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _022398F4 ; =0x000080EA + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _022398F4 ; =0x000080EA + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_022398F4: .word 0x000080EA + + thumb_func_start MOD12_022398F8 +MOD12_022398F8: ; 0x022398F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x16 + mov r1, #0x18 + add r7, r2, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _0223996C ; =0x02245F14 + bl FUN_0200C154 + lsl r1, r6, #0x10 + lsl r2, r7, #0x10 + mov r3, #1 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + str r0, [r4, #4] + bl FUN_0200C750 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _0223993C + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0200C5C0 +_0223993C: + ldr r0, [r4, #4] + ldr r0, [r0] + bl FUN_0200C59C + lsl r0, r6, #8 + str r0, [r4, #8] + lsl r0, r7, #8 + str r0, [r4, #0xc] + ldr r0, _02239970 ; =0x000004F9 + ldr r2, _02239974 ; =0x0000C350 + add r1, r5, r0 + str r1, [r4] + ldrb r0, [r1] + add r0, r0, #1 + strb r0, [r1] + ldr r0, _02239978 ; =MOD12_02239980 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r0, _0223997C ; =0x000006E1 + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223996C: .word 0x02245F14 +_02239970: .word 0x000004F9 +_02239974: .word 0x0000C350 +_02239978: .word MOD12_02239980 +_0223997C: .word 0x000006E1 + + thumb_func_start MOD12_02239980 +MOD12_02239980: ; 0x02239980 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _022399EE + ldr r0, [r4, #0x10] + bl FUN_0201B9B8 + lsl r1, r0, #3 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r5, r0, #0xc + mov r0, #6 + mov r3, #1 + ldr r1, [r4, #0x10] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + lsl r3, r3, #8 + sub r2, r0, r3 + str r2, [r4, #0xc] + ldr r1, [r4, #8] + ldr r0, [r4, #4] + asr r6, r1, #7 + lsr r6, r6, #0x18 + add r6, r1, r6 + asr r1, r6, #8 + add r1, r1, r5 + asr r5, r2, #7 + lsr r5, r5, #0x18 + add r5, r2, r5 + lsl r1, r1, #0x10 + lsl r2, r5, #8 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0xc + bl FUN_0200C750 + ldrh r0, [r4, #0x16] + add r0, r0, #1 + strh r0, [r4, #0x16] + ldrh r0, [r4, #0x16] + cmp r0, #0x3c + bhs _022399E6 + ldr r1, [r4, #0xc] + ldr r0, _02239A0C ; =0xFFFFE000 + cmp r1, r0 + bgt _02239A08 +_022399E6: + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_022399EE: + ldr r0, [r4, #4] + bl FUN_0200C3DC + ldr r1, [r4] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02239A08: + pop {r4, r5, r6, pc} + nop +_02239A0C: .word 0xFFFFE000 + + thumb_func_start MOD12_02239A10 +MOD12_02239A10: ; 0x02239A10 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [r5, #0x24] + add r4, r1, #0 + cmp r0, #0 + beq _02239A22 + bl ErrorHandling +_02239A22: + mov r1, #0x30 + ldr r2, [r5] + mul r1, r4 + add r1, r2, r1 + ldrh r1, [r1, #0x1a] + add r0, sp, #0x10 + bl FUN_020690AC + ldr r0, _02239A54 ; =0xFFFFFDC0 + mov r2, #5 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x10] + add r1, sp, #0x10 + lsl r2, r2, #6 + mov r3, #0x20 + bl FUN_020073A0 + str r0, [r5, #0x24] + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_02239A54: .word 0xFFFFFDC0 + + thumb_func_start MOD12_02239A58 +MOD12_02239A58: ; 0x02239A58 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _02239A6A + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] +_02239A6A: + pop {r4, pc} + + thumb_func_start MOD12_02239A6C +MOD12_02239A6C: ; 0x02239A6C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #0 + beq _02239A82 + cmp r6, #0 + bne _02239A82 + bl ErrorHandling +_02239A82: + cmp r4, #0 + beq _02239ACC + cmp r4, #1 + bne _02239AC8 + ldrb r4, [r6] + ldr r3, [r5] + mov r0, #1 + lsl r2, r4, #2 + str r0, [sp] + mov r0, #2 + add r2, r3, r2 + add r4, r3, r4 + mov r3, #0x42 + str r0, [sp, #4] + lsl r3, r3, #2 + add r2, #0xe8 + ldrb r3, [r4, r3] + ldr r0, [r5, #0x48] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ABB4 + ldrb r0, [r6] + ldr r1, [r5, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r5, #0x48] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_02239AC8: + bl ErrorHandling +_02239ACC: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02239AD0 +MOD12_02239AD0: ; 0x02239AD0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r0, _02239B40 ; =0x00000171 + add r7, r2, #0 + ldrb r0, [r1, r0] + str r3, [sp, #0xc] + cmp r0, #0 + bne _02239AF2 + ldr r0, _02239B44 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _02239AF4 +_02239AF2: + mov r4, #1 +_02239AF4: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD12_02239A6C + ldr r0, [r5, #0x48] + ldr r1, [r5, #0x4c] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x4c] + add r0, #0x34 + mov r1, #1 + bl FUN_0201BD84 + add r5, #0xd0 + strb r0, [r5] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239B40: .word 0x00000171 +_02239B44: .word 0x00001988 + + thumb_func_start MOD12_02239B48 +MOD12_02239B48: ; 0x02239B48 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + cmp r5, #0xf + blo _02239B5A + bl ErrorHandling +_02239B5A: + str r4, [sp] + ldr r2, _02239B74 ; =0x02245F48 + lsl r3, r5, #2 + ldr r4, _02239B78 ; =0x02245F4A + ldrh r2, [r2, r3] + ldrb r3, [r4, r3] + ldr r1, [r6, #0x44] + add r0, r6, #0 + bl MOD12_02239AD0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02239B74: .word 0x02245F48 +_02239B78: .word 0x02245F4A + + thumb_func_start MOD12_02239B7C +MOD12_02239B7C: ; 0x02239B7C + ldr r3, _02239B84 ; =0x0201BD71 + add r0, #0xd0 + ldrb r0, [r0] + bx r3 + .align 2, 0 +_02239B84: .word 0x0201BD71 + + thumb_func_start MOD12_02239B88 +MOD12_02239B88: ; 0x02239B88 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _02239BBC ; =0x02245FA4 + add r3, sp, #0 + str r1, [sp] + mov r1, #0x11 + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _02239BC0 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + ldr r1, _02239BC4 ; =0x000004FC + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02239BBC: .word 0x02245FA4 +_02239BC0: .word 0x00000123 +_02239BC4: .word 0x000004FC + + thumb_func_start MOD12_02239BC8 +MOD12_02239BC8: ; 0x02239BC8 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239BDC +MOD12_02239BDC: ; 0x02239BDC + push {r3, lr} + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239BEC +MOD12_02239BEC: ; 0x02239BEC + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239BF0 +MOD12_02239BF0: ; 0x02239BF0 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239C04 +MOD12_02239C04: ; 0x02239C04 + push {r4, lr} + ldr r3, _02239C18 ; =0x00000F1C + mov r4, #1 + strb r4, [r1, r3] + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, pc} + .align 2, 0 +_02239C18: .word 0x00000F1C + + thumb_func_start MOD12_02239C1C +MOD12_02239C1C: ; 0x02239C1C + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239C30 +MOD12_02239C30: ; 0x02239C30 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + add r6, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + mov r5, #0 + strh r0, [r4, #0xa] + ldr r0, [sp, #0x10] + str r0, [r4, #0xc] + ldrb r0, [r7] + strb r0, [r4, #0x11] + b _02239C90 +_02239C6C: + ldr r1, [r4] + lsl r0, r5, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239C8E + bl FUN_021DD540 + ldr r1, [r4] + lsl r0, r5, #4 + add r2, r1, r0 + mov r0, #0xf2 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r2, r0] +_02239C8E: + add r5, r5, #1 +_02239C90: + cmp r5, #4 + blt _02239C6C + ldrb r0, [r7] + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r0, sp, #0x14 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, #0x16 + str r0, [sp, #0x20] + mov r1, #0x80 + mov r0, #0x68 + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + ldrb r2, [r7] + lsl r2, r2, #4 + add r3, r6, r2 + ldr r2, _02239D74 ; =0x00000F24 + str r1, [r3, r2] + ldrb r1, [r7] + lsl r1, r1, #4 + add r3, r6, r1 + add r1, r2, #4 + str r0, [r3, r1] + ldrb r1, [r7] + ldr r2, [r6] + add r0, sp, #0x14 + lsl r1, r1, #2 + add r1, r2, r1 + add r1, #0xf8 + ldr r1, [r1] + bl FUN_021DD4F4 + ldrb r1, [r7] + lsl r1, r1, #4 + add r2, r6, r1 + mov r1, #0xf2 + lsl r1, r1, #4 + str r0, [r2, r1] + ldrb r0, [r7] + lsl r0, r0, #4 + add r0, r6, r0 + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_021DD594 + ldr r0, _02239D78 ; =0x04000048 + mov r2, #0x3f + ldrh r1, [r0] + mov r3, #0x1f + bic r1, r2 + add r5, r1, #0 + orr r5, r3 + mov r1, #0x20 + orr r1, r5 + strh r1, [r0] + ldrh r1, [r0, #2] + bic r1, r2 + orr r1, r3 + strh r1, [r0, #2] + mov r1, #1 + add r2, r1, #0 + add r0, #8 + sub r2, #0x11 + bl G2x_SetBlendBrightness_ + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02239D7C ; =0xFFFF1FFF + mov r3, #0xff + and r1, r0 + lsr r0, r2, #0xd + orr r0, r1 + mov r1, #0xf6 + str r0, [r2] + lsl r1, r1, #4 + mov r0, #0 + strb r0, [r6, r1] + add r2, r1, #1 + strb r0, [r6, r2] + add r2, r1, #2 + strb r3, [r6, r2] + ldr r2, _02239D80 ; =0x02245F84 + add r1, r1, #3 + ldrsb r2, [r2, r0] + mov r3, #2 + add r2, r2, #4 + lsl r2, r2, #3 + strb r2, [r6, r1] + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r1, #0x14 + bl FUN_020068C8 + ldr r0, _02239D84 ; =MOD12_02239D8C + ldr r2, _02239D88 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02239D74: .word 0x00000F24 +_02239D78: .word 0x04000048 +_02239D7C: .word 0xFFFF1FFF +_02239D80: .word 0x02245F84 +_02239D84: .word MOD12_02239D8C +_02239D88: .word 0x00007530 + + thumb_func_start MOD12_02239D8C +MOD12_02239D8C: ; 0x02239D8C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #4 + bhi _02239E6E + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02239DA4: ; jump table + .short _02239DAE - _02239DA4 - 2 ; case 0 + .short _02239DB4 - _02239DA4 - 2 ; case 1 + .short _02239E0E - _02239DA4 - 2 ; case 2 + .short _02239E14 - _02239DA4 - 2 ; case 3 + .short _02239E54 - _02239DA4 - 2 ; case 4 +_02239DAE: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239DB4: + ldr r1, _02239E88 ; =0x04000048 + mov r0, #0x3f + ldrh r2, [r1] + bic r2, r0 + mov r0, #0x1e + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r3, r0, #0 + ldrb r0, [r4, #0x11] + mov r2, #0xf2 + lsl r2, r2, #4 + lsl r1, r0, #4 + ldr r0, [r4] + add r5, r0, r1 + add r1, r2, #4 + ldr r0, [r5, r2] + add r2, #8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_021DD678 + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_021DD594 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E0E: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E14: + ldr r1, _02239E88 ; =0x04000048 + mov r0, #0x3f + ldrh r2, [r1] + bic r2, r0 + mov r0, #0x1f + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _02239E8C ; =0x00001FFF + ldr r0, [r0, #0x50] + add r3, r1, #0 + bl FUN_02003A64 + mov r3, #0 + str r3, [sp] + ldr r0, [r4] + ldr r2, _02239E90 ; =0x00003FFF + ldr r0, [r0, #0x50] + mov r1, #2 + bl FUN_02003A64 + ldr r0, _02239E94 ; =0x000006EC + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E54: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0xa + ble _02239E86 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E6E: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02239E86: + pop {r3, r4, r5, pc} + .align 2, 0 +_02239E88: .word 0x04000048 +_02239E8C: .word 0x00001FFF +_02239E90: .word 0x00003FFF +_02239E94: .word 0x000006EC + + thumb_func_start MOD12_02239E98 +MOD12_02239E98: ; 0x02239E98 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239EAC +MOD12_02239EAC: ; 0x02239EAC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02239EF0 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _02239EF4 ; =MOD12_02239EF8 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239EF0: .word 0x00007530 +_02239EF4: .word MOD12_02239EF8 + + thumb_func_start MOD12_02239EF8 +MOD12_02239EF8: ; 0x02239EF8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02239F0A + cmp r0, #1 + beq _02239F3A + b _02239F8E +_02239F0A: + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239F3A: + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + mov r0, #1 + ldr r1, [r4, #0x18] + lsl r0, r0, #8 + add r2, r1, r0 + lsl r1, r0, #6 + str r2, [r4, #0x18] + cmp r2, r1 + blt _02239F64 + lsl r0, r0, #6 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_02239F64: + ldrb r0, [r4, #0x11] + ldr r2, [r4, #0x14] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldrb r0, [r4, #0x11] + ldr r2, [r4, #0x18] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_02239F8E: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02239FA8 +MOD12_02239FA8: ; 0x02239FA8 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239FBC +MOD12_02239FBC: ; 0x02239FBC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A004 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0, #1] + strb r0, [r4, #0x12] + mov r0, #0 + strb r0, [r4, #0x1a] + ldr r0, _0223A008 ; =MOD12_0223A0BC + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A004: .word 0x00007530 +_0223A008: .word MOD12_0223A0BC + + thumb_func_start MOD12_0223A00C +MOD12_0223A00C: ; 0x0223A00C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A054 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0, #2] + strb r0, [r4, #0x12] + mov r0, #1 + strb r0, [r4, #0x1a] + ldr r0, _0223A058 ; =MOD12_0223A0BC + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A054: .word 0x00007530 +_0223A058: .word MOD12_0223A0BC + + thumb_func_start MOD12_0223A05C +MOD12_0223A05C: ; 0x0223A05C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x1c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223A0B4 ; =0x00007530 + str r0, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r1, [r6, #1] + ldrb r0, [r6, #2] + add r0, r1, r0 + strb r0, [r4, #0x12] + ldrb r0, [r6, #1] + add r1, r4, #0 + strb r0, [r4, #0x14] + ldrb r0, [r6, #2] + strb r0, [r4, #0x15] + mov r0, #0 + strb r0, [r4, #0x1a] + mov r0, #1 + strb r0, [r4, #0x1b] + ldr r0, _0223A0B8 ; =MOD12_0223A0BC + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A0B4: .word 0x00007530 +_0223A0B8: .word MOD12_0223A0BC + + thumb_func_start MOD12_0223A0BC +MOD12_0223A0BC: ; 0x0223A0BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0x10] + cmp r0, #0 + beq _0223A0D6 + cmp r0, #1 + beq _0223A0E6 + cmp r0, #2 + bne _0223A0D4 + b _0223A22E +_0223A0D4: + b _0223A248 +_0223A0D6: + ldr r0, _0223A264 ; =0x000006E5 + bl FUN_020054C8 + mov r0, #0xf + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] +_0223A0E6: + ldrb r1, [r5, #0x13] + ldrb r0, [r5, #0x12] + cmp r1, r0 + blo _0223A102 + mov r0, #0 + strb r0, [r5, #0x11] + ldr r0, _0223A264 ; =0x000006E5 + bl FUN_020054C8 + ldrb r0, [r5, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223A102: + ldrb r0, [r5, #0x1b] + cmp r0, #1 + bne _0223A112 + ldrb r0, [r5, #0x14] + cmp r1, r0 + blo _0223A112 + mov r0, #1 + strb r0, [r5, #0x1a] +_0223A112: + ldrb r0, [r5, #0x11] + cmp r0, #0 + beq _0223A120 + sub r0, r0, #1 + add sp, #8 + strb r0, [r5, #0x11] + pop {r3, r4, r5, r6, r7, pc} +_0223A120: + mov r0, #3 + strb r0, [r5, #0x11] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #0x60 + bl _s32_div_f + lsl r0, r1, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1a + sub r1, r1, r2 + mov r0, #0x1a + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #1 + tst r0, r1 + beq _0223A164 + ldr r0, [sp, #4] + add r0, #0x80 + b _0223A16A +_0223A164: + ldr r0, [sp, #4] + mov r1, #0x80 + sub r0, r1, r0 +_0223A16A: + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #1 + tst r0, r1 + beq _0223A182 + add r0, r7, #0 + add r0, #0x60 + b _0223A186 +_0223A182: + mov r0, #0x60 + sub r0, r0, r7 +_0223A186: + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + ldrb r0, [r5, #0x13] + cmp r0, #0 + beq _0223A1F6 + mov r0, #0x16 + ldrsh r0, [r5, r0] + cmp r0, #0x80 + bge _0223A19C + cmp r6, #0x80 + blt _0223A1A4 +_0223A19C: + cmp r0, #0x80 + ble _0223A1F6 + cmp r6, #0x80 + ble _0223A1F6 +_0223A1A4: + mov r0, #0x18 + ldrsh r0, [r5, r0] + cmp r0, #0x60 + bge _0223A1B0 + cmp r4, #0x60 + blt _0223A1B8 +_0223A1B0: + cmp r0, #0x60 + ble _0223A1F6 + cmp r4, #0x60 + ble _0223A1F6 +_0223A1B8: + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #1 + tst r0, r1 + beq _0223A1E2 + cmp r6, #0x80 + bge _0223A1D6 + ldr r0, [sp, #4] + add r0, #0x80 + str r0, [sp, #4] + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + b _0223A1F6 +_0223A1D6: + ldr r0, [sp, #4] + mov r1, #0x80 + sub r0, r1, r0 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + b _0223A1F6 +_0223A1E2: + cmp r4, #0x60 + bge _0223A1EE + add r7, #0x60 + lsl r0, r7, #0x10 + asr r4, r0, #0x10 + b _0223A1F6 +_0223A1EE: + mov r0, #0x60 + sub r0, r0, r7 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 +_0223A1F6: + ldrb r1, [r5, #0x13] + mov r0, #1 + tst r0, r1 + ldrb r0, [r5, #0x1a] + beq _0223A212 + str r0, [sp] + mov r3, #0x2d + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + lsl r3, r3, #0xe + bl MOD12_022398F8 + b _0223A220 +_0223A212: + str r0, [sp] + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + mov r3, #0 + bl MOD12_022398F8 +_0223A220: + strh r6, [r5, #0x16] + strh r4, [r5, #0x18] + ldrb r0, [r5, #0x13] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0x13] + pop {r3, r4, r5, r6, r7, pc} +_0223A22E: + ldrb r0, [r5, #0x11] + add r0, r0, #1 + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x11] + cmp r0, #0x1e + bls _0223A260 + mov r0, #0 + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223A248: + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A260: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223A264: .word 0x000006E5 + + thumb_func_start MOD12_0223A268 +MOD12_0223A268: ; 0x0223A268 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A27C +MOD12_0223A27C: ; 0x0223A27C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A2C0 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _0223A2C4 ; =MOD12_0223A2C8 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A2C0: .word 0x00007530 +_0223A2C4: .word MOD12_0223A2C8 + + thumb_func_start MOD12_0223A2C8 +MOD12_0223A2C8: ; 0x0223A2C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r3, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223A2EC + cmp r0, #1 + beq _0223A314 + b _0223A348 +_0223A2EC: + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + ldr r0, _0223A384 ; =0x00000F24 + ldr r1, [r1, r0] + add r0, r0, #4 + lsl r1, r1, #8 + str r1, [r4, #0x14] + ldrb r1, [r4, #0x11] + ldr r2, [r4] + lsl r1, r1, #4 + add r1, r2, r1 + ldr r0, [r1, r0] + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223A314: + mov r0, #3 + ldr r1, [r4, #0x14] + lsl r0, r0, #8 + add r1, r1, r0 + mov r0, #0x4b + lsl r0, r0, #0xa + str r1, [r4, #0x14] + cmp r1, r0 + blt _0223A32C + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A32C: + ldrb r0, [r4, #0x11] + ldr r2, [r4, #0x18] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + ldr r1, [r4, #0x14] + asr r2, r2, #8 + asr r1, r1, #8 + bl FUN_021DD678 + pop {r3, r4, r5, pc} +_0223A348: + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_021DD540 + ldrb r0, [r4, #0x11] + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_0223A384: .word 0x00000F24 + + thumb_func_start MOD12_0223A388 +MOD12_0223A388: ; 0x0223A388 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A39C +MOD12_0223A39C: ; 0x0223A39C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A3D8 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223A3DC ; =MOD12_0223A3E0 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A3D8: .word 0x00007530 +_0223A3DC: .word MOD12_0223A3E0 + + thumb_func_start MOD12_0223A3E0 +MOD12_0223A3E0: ; 0x0223A3E0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223A3F0 + b _0223A516 +_0223A3F0: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A404 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223A404: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A418 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223A418: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223A490 +_0223A430: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _0223A534 ; =0x02245F84 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223A48A + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _0223A538 ; =0x02245F8C + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _0223A484 +_0223A460: + mov r4, #0 + b _0223A478 +_0223A464: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223A478: + cmp r4, #8 + blt _0223A464 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223A484: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223A460 +_0223A48A: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223A490: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223A430 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223A4D2 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223A4D2 + ldr r0, _0223A534 ; =0x02245F84 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _0223A4CC +_0223A4BC: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223A4CC: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223A4BC +_0223A4D2: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223A530 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223A530 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223A516: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A530: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223A534: .word 0x02245F84 +_0223A538: .word 0x02245F8C + + thumb_func_start MOD12_0223A53C +MOD12_0223A53C: ; 0x0223A53C + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A550 +MOD12_0223A550: ; 0x0223A550 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A58C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223A590 ; =MOD12_0223A594 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A58C: .word 0x00007530 +_0223A590: .word MOD12_0223A594 + + thumb_func_start MOD12_0223A594 +MOD12_0223A594: ; 0x0223A594 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223A5A4 + b _0223A6F2 +_0223A5A4: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A5B8 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223A5B8: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A5CC + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223A5CC: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223A64C +_0223A5E4: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + mov r0, #4 + sub r1, r0, r1 + ldr r0, _0223A710 ; =0x02245F84 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223A646 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r1, [r0, #0x12] + mov r0, #0xb + mov r7, #0x3f + sub r0, r0, r1 + lsl r1, r0, #1 + ldr r0, _0223A714 ; =0x02245F8C + str r5, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r7, r7, #0xa + lsl r0, r0, #5 + add r6, r1, r0 + b _0223A640 +_0223A61C: + mov r4, #0 + b _0223A634 +_0223A620: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223A634: + cmp r4, #8 + blt _0223A620 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223A640: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223A61C +_0223A646: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223A64C: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223A5E4 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223A6AE + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223A6AE + mov r0, #5 + sub r1, r0, r1 + ldr r0, _0223A710 ; =0x02245F84 + mov r7, #0x3f + ldrsb r0, [r0, r1] + lsl r7, r7, #0xa + mov r6, #0x1d + add r0, r0, #3 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #2 + str r0, [sp, #4] + lsl r1, r1, #8 + b _0223A6A8 +_0223A682: + ldr r0, [sp, #4] + ldr r5, [sp, #4] + lsl r4, r0, #1 + ldrh r0, [r3, r4] + lsl r5, r5, #0x1d + and r0, r7 + strh r0, [r3, r4] + ldr r0, [sp, #4] + ldrh r2, [r3, r4] + lsr r0, r0, #0x1f + sub r5, r5, r0 + ror r5, r6 + add r0, r0, r5 + add r0, r0, r1 + orr r0, r2 + strh r0, [r3, r4] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223A6A8: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223A682 +_0223A6AE: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223A70C + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223A70C + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223A6F2: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A70C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223A710: .word 0x02245F84 +_0223A714: .word 0x02245F8C + + thumb_func_start MOD12_0223A718 +MOD12_0223A718: ; 0x0223A718 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A72C +MOD12_0223A72C: ; 0x0223A72C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A770 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _0223A774 ; =MOD12_0223A778 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A770: .word 0x00007530 +_0223A774: .word MOD12_0223A778 + + thumb_func_start MOD12_0223A778 +MOD12_0223A778: ; 0x0223A778 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223A78A + cmp r0, #1 + beq _0223A7B4 + b _0223A7F8 +_0223A78A: + ldrb r1, [r4, #0x11] + ldr r0, [r4] + bl MOD12_02239A10 + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A7B4: + mov r0, #1 + ldr r1, [r4, #0x14] + lsl r0, r0, #0xa + sub r1, r1, r0 + mov r0, #0xe6 + lsl r0, r0, #8 + str r1, [r4, #0x14] + cmp r1, r0 + bgt _0223A7CE + str r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A7CE: + ldr r3, [r4, #0x14] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #0x18] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0223A7F8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A814 +MOD12_0223A814: ; 0x0223A814 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A828 +MOD12_0223A828: ; 0x0223A828 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A86C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _0223A870 ; =MOD12_0223A874 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A86C: .word 0x00007530 +_0223A870: .word MOD12_0223A874 + + thumb_func_start MOD12_0223A874 +MOD12_0223A874: ; 0x0223A874 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223A886 + cmp r0, #1 + beq _0223A8B4 + b _0223A8F8 +_0223A886: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0223A892 + bl ErrorHandling +_0223A892: + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A8B4: + mov r0, #1 + ldr r1, [r4, #0x14] + lsl r0, r0, #0xa + add r1, r1, r0 + mov r0, #5 + lsl r0, r0, #0xe + str r1, [r4, #0x14] + cmp r1, r0 + blt _0223A8CE + str r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A8CE: + ldr r3, [r4, #0x14] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #0x18] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0223A8F8: + ldr r0, [r4] + bl MOD12_02239A58 + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223A918 +MOD12_0223A918: ; 0x0223A918 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A92C +MOD12_0223A92C: ; 0x0223A92C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r6, r1, #0 + mov r0, #0x16 + mov r1, #0x58 + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x58 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + ldr r2, _0223A988 ; =0x00007530 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r0, [r4, #0xc] + ldrb r0, [r7] + strb r0, [r4, #0x11] + str r6, [r4, #0x2c] + str r6, [r4, #0x38] + add r0, r4, #0 + ldrb r1, [r7] + add r0, #0x46 + strb r1, [r0] + str r6, [r4, #0x48] + ldrb r0, [r7] + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r4, #0 + str r0, [r4, #0x24] + ldr r0, _0223A98C ; =MOD12_0223A990 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A988: .word 0x00007530 +_0223A98C: .word MOD12_0223A990 + + thumb_func_start MOD12_0223A990 +MOD12_0223A990: ; 0x0223A990 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0x10] + cmp r0, #0 + beq _0223A9A8 + cmp r0, #1 + beq _0223AA32 + cmp r0, #2 + beq _0223AA5C + b _0223AA8A +_0223A9A8: + ldr r0, _0223AAA8 ; =MOD12_0223AB54 + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x2c + bl FUN_0200CA44 + add r1, r5, #0 + ldr r0, _0223AAB0 ; =MOD12_0223ACFC + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x48 + bl FUN_0200CA44 + ldr r0, [r5, #0x38] + ldr r1, [r0, #0xc] + add r0, r5, #0 + add r0, #0x46 + ldrb r0, [r0] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r4, r0, #0 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, #0x16 + str r0, [sp, #0xc] + mov r0, #0x80 + add r4, #0x40 + str r0, [sp, #4] + str r4, [sp, #8] + ldr r1, [r5, #0x38] + add r0, sp, #0 + ldr r2, [r1] + add r1, r5, #0 + add r1, #0x46 + ldrb r1, [r1] + lsl r1, r1, #2 + add r1, r2, r1 + add r1, #0xf8 + ldr r1, [r1] + bl FUN_021DD4F4 + add r1, r5, #0 + add r1, #0x46 + ldrb r1, [r1] + ldr r2, [r5, #0x38] + lsl r1, r1, #4 + add r2, r2, r1 + mov r1, #0xf2 + lsl r1, r1, #4 + str r0, [r2, r1] + add r0, r5, #0 + add r0, #0x46 + ldrb r0, [r0] + ldr r2, [r5, #0x38] + lsl r0, r0, #4 + add r0, r2, r0 + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_021DD594 + ldrb r0, [r5, #0x10] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_0223AA32: + add r0, r5, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + ldr r0, _0223AAB4 ; =MOD12_0223AAF8 + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x14 + bl FUN_0200CA44 + add r1, r5, #0 + ldr r0, _0223AAB8 ; =MOD12_0223ABD4 + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x38 + bl FUN_0200CA44 + ldrb r0, [r5, #0x10] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_0223AA5C: + add r0, r5, #0 + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + add r0, r5, #0 + add r0, #0x45 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + add r0, r5, #0 + add r0, #0x55 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + ldr r0, _0223AABC ; =0x000006E5 + bl FUN_020054C8 + ldrb r0, [r5, #0x10] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_0223AA8A: + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223AAA2: + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_0223AAA8: .word MOD12_0223AB54 +_0223AAAC: .word 0x0000753A +_0223AAB0: .word MOD12_0223ACFC +_0223AAB4: .word MOD12_0223AAF8 +_0223AAB8: .word MOD12_0223ABD4 +_0223AABC: .word 0x000006E5 + + thumb_func_start MOD12_0223AAC0 +MOD12_0223AAC0: ; 0x0223AAC0 + push {r3} + sub sp, #0xc + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + str r1, [r2, #8] + ldr r1, [r0, #0x20] + ldr r2, [sp] + ldr r1, [r1] + ldr r1, [r1, #4] + add r1, r2, r1 + str r1, [r0, #0x28] + ldr r1, [r0, #0x20] + ldr r2, [sp, #4] + ldr r1, [r1] + ldr r1, [r1, #8] + add r1, r2, r1 + str r1, [r0, #0x2c] + ldr r1, [r0, #0x20] + ldr r2, [sp, #8] + ldr r1, [r1] + ldr r1, [r1, #0xc] + add r1, r2, r1 + str r1, [r0, #0x30] + add sp, #0xc + pop {r3} + bx lr + + thumb_func_start MOD12_0223AAF8 +MOD12_0223AAF8: ; 0x0223AAF8 + push {r4, lr} + add r4, r1, #0 + ldrb r2, [r4, #0x14] + cmp r2, #0 + beq _0223AB08 + cmp r2, #1 + beq _0223AB2C + b _0223AB44 +_0223AB08: + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #0x10] + str r0, [r4, #8] + mov r0, #0x16 + bl MOD08_02228218 + str r0, [r4, #0xc] + bl MOD08_02228524 + ldr r0, [r4, #0xc] + ldr r1, _0223AB50 ; =MOD12_0223AAC0 + bl MOD08_02228574 + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, pc} +_0223AB2C: + ldr r0, [r4, #0xc] + bl MOD08_022285B4 + cmp r0, #0 + bne _0223AB4C + ldr r0, [r4, #0xc] + bl MOD08_02228618 + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, pc} +_0223AB44: + mov r1, #1 + strb r1, [r4, #0x15] + bl FUN_0200CAB4 +_0223AB4C: + pop {r4, pc} + nop +_0223AB50: .word MOD12_0223AAC0 + + thumb_func_start MOD12_0223AB54 +MOD12_0223AB54: ; 0x0223AB54 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _0223AB6C + cmp r0, #1 + beq _0223AB86 + cmp r0, #2 + beq _0223ABB6 + b _0223ABC0 +_0223AB6C: + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xa] + cmp r0, #1 + blo _0223ABD0 + mov r0, #0 + strb r0, [r4, #0xa] + ldrb r0, [r4, #8] + add sp, #0x28 + add r0, r0, #1 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_0223AB86: + mov r0, #0xe + str r0, [sp] + mov r0, #0x16 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r4] + ldr r0, [r0, #0x28] + str r0, [sp, #0x1c] + ldr r0, [r4] + ldr r0, [r0, #0x50] + str r0, [sp, #0x20] + mov r0, #1 + str r0, [sp, #0x14] + add r0, sp, #0 + bl MOD08_02229918 + str r0, [r4, #4] + ldrb r0, [r4, #8] + add sp, #0x28 + add r0, r0, #1 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_0223ABB6: + ldr r0, [r4, #4] + bl MOD08_022299E8 + cmp r0, #1 + beq _0223ABD0 +_0223ABC0: + ldr r0, [r4, #4] + bl MOD08_02229A2C + mov r0, #1 + strb r0, [r4, #9] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223ABD0: + add sp, #0x28 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223ABD4 +MOD12_0223ABD4: ; 0x0223ABD4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xe] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r6, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0223ABFA + cmp r0, #1 + beq _0223AC4A + b _0223ACE8 +_0223ABFA: + mov r1, #0 + str r1, [r4, #4] + str r1, [r4, #8] + ldrb r0, [r4, #0xe] + mov r3, #0xf2 + ldr r2, [r4] + lsl r0, r0, #4 + add r0, r2, r0 + lsl r3, r3, #4 + ldr r0, [r0, r3] + add r2, r1, #0 + add r3, #0xe0 + bl FUN_021DD60C + ldrb r1, [r4, #0xe] + ldr r2, [r4] + mov r0, #0x80 + lsl r1, r1, #4 + add r2, r2, r1 + ldr r1, _0223ACF8 ; =0x00000F24 + str r0, [r2, r1] + ldrb r2, [r4, #0xe] + ldr r3, [r4] + mov r0, #0x68 + lsl r2, r2, #4 + add r3, r3, r2 + add r2, r1, #4 + str r0, [r3, r2] + ldrb r0, [r4, #0xe] + ldr r2, [r4] + lsl r0, r0, #4 + add r2, r2, r0 + sub r0, r1, #4 + ldr r0, [r2, r0] + mov r1, #1 + bl FUN_021DD594 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223AC4A: + mov r0, #2 + ldr r1, [r4, #4] + lsl r0, r0, #8 + add r1, r1, r0 + str r1, [r4, #4] + ldr r1, [r4, #8] + add r1, r1, r0 + str r1, [r4, #8] + ldr r2, [r4, #4] + lsl r1, r0, #3 + cmp r2, r1 + blt _0223AC68 + lsl r0, r0, #3 + str r0, [r4, #4] + str r0, [r4, #8] +_0223AC68: + ldrb r0, [r4, #0xe] + mov r3, #0xf2 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + lsl r3, r3, #4 + ldr r0, [r0, r3] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + add r3, #0xe0 + bl FUN_021DD60C + ldrb r0, [r4, #0xe] + mov r2, #0xf2 + lsl r2, r2, #4 + lsl r1, r0, #4 + ldr r0, [r4] + add r3, r0, r1 + add r1, r2, #4 + ldr r0, [r3, r2] + add r2, #8 + ldr r1, [r3, r1] + ldr r2, [r3, r2] + add r3, r6, #0 + bl FUN_021DD678 + mov r0, #1 + ldr r1, [r4, #4] + lsl r0, r0, #0xc + cmp r1, r0 + blt _0223ACF2 + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xe] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_020671BC + add r2, r0, #0 + mov r0, #0x7f + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #0x16 + str r3, [sp, #8] + ldr r3, [r4] + lsl r2, r2, #0x10 + ldr r5, [r3] + ldrb r3, [r4, #0xe] + add r0, #0xdd + lsr r2, r2, #0x10 + lsl r3, r3, #2 + add r3, r5, r3 + ldr r0, [r3, r0] + add r3, r1, #0 + bl FUN_02069FB0 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_0223ACE8: + mov r0, #1 + strb r0, [r4, #0xd] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223ACF2: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0223ACF8: .word 0x00000F24 + + thumb_func_start MOD12_0223ACFC +MOD12_0223ACFC: ; 0x0223ACFC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bls _0223AD0A + b _0223AE32 +_0223AD0A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223AD16: ; jump table + .short _0223AD20 - _0223AD16 - 2 ; case 0 + .short _0223AD46 - _0223AD16 - 2 ; case 1 + .short _0223AD68 - _0223AD16 - 2 ; case 2 + .short _0223ADD6 - _0223AD16 - 2 ; case 3 + .short _0223ADEE - _0223AD16 - 2 ; case 4 +_0223AD20: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0223AD2C + bl ErrorHandling +_0223AD2C: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xf] + cmp r0, #1 + bhi _0223AD3A + b _0223AE42 +_0223AD3A: + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223AD46: + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #4] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #8] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223AD68: + ldrb r1, [r4, #0xe] + mov r0, #1 + tst r0, r1 + ldr r0, [r4] + beq _0223AD9A + ldr r3, [r4, #4] + ldr r0, [r0, #0x24] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + b _0223ADC2 +_0223AD9A: + ldr r3, [r4, #4] + ldr r0, [r0, #0x24] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + asr r2, r2, #8 + ldr r0, [r0, #0x24] + mov r1, #1 + sub r2, r2, #3 + bl FUN_02007558 +_0223ADC2: + ldrb r0, [r4, #0xe] + add r0, r0, #1 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xe] + cmp r0, #3 + blo _0223AE42 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223ADD6: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xf] + cmp r0, #7 + blo _0223AE42 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223ADEE: + mov r0, #1 + ldr r1, [r4, #4] + lsl r0, r0, #0xa + add r1, r1, r0 + mov r0, #5 + lsl r0, r0, #0xe + str r1, [r4, #4] + cmp r1, r0 + blt _0223AE08 + str r0, [r4, #4] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223AE08: + ldr r3, [r4, #4] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0223AE32: + ldr r0, [r4] + bl MOD12_02239A58 + mov r0, #1 + strb r0, [r4, #0xd] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223AE42: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223AE44 +MOD12_0223AE44: ; 0x0223AE44 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223AE58 +MOD12_0223AE58: ; 0x0223AE58 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x16 + mov r1, #0x1c + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x1c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223AEB8 ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + ldrb r0, [r5, #3] + strb r0, [r4, #0x13] + ldrb r0, [r5, #4] + strb r0, [r4, #0x14] + ldrb r0, [r5, #5] + strb r0, [r4, #0x15] + ldrb r0, [r5, #6] + strb r0, [r4, #0x16] + ldrb r0, [r5, #7] + strb r0, [r4, #0x17] + ldrb r0, [r5, #9] + strb r0, [r4, #0x19] + ldrb r0, [r5, #8] + strb r0, [r4, #0x18] + ldr r0, _0223AEBC ; =MOD12_0223AEC0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223AEB8: .word 0x00007530 +_0223AEBC: .word MOD12_0223AEC0 + + thumb_func_start MOD12_0223AEC0 +MOD12_0223AEC0: ; 0x0223AEC0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223AED6 + cmp r0, #1 + beq _0223AF0E + cmp r0, #2 + beq _0223AF20 + b _0223AF58 +_0223AED6: + ldrb r0, [r4, #0x17] + cmp r0, #0 + beq _0223AF08 + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + add r2, r4, #0 + ldrb r1, [r4, #0x17] + ldr r0, [r4] + add r2, #0x13 + bl MOD12_02239B48 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF08: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF0E: + ldr r0, [r4] + bl MOD12_02239B7C + cmp r0, #0 + bne _0223AF70 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF20: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x19] + cmp r0, #1 + bne _0223AF34 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF34: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x18] + cmp r1, r0 + blo _0223AF70 + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + bl FUN_0200D0E0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF58: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223AF70: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223AF74 +MOD12_0223AF74: ; 0x0223AF74 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223AF88 +MOD12_0223AF88: ; 0x0223AF88 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x16 + mov r1, #0x18 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223AFD8 ; =0x00007530 + str r0, [r4] + ldrh r0, [r5] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + mov r0, #0xa + ldrsb r0, [r6, r0] + strb r0, [r4, #0x11] + mov r0, #0xb + ldrsb r0, [r6, r0] + strb r0, [r4, #0x12] + mov r0, #0xc + ldrsb r0, [r6, r0] + strb r0, [r4, #0x13] + ldr r0, _0223AFDC ; =MOD12_0223AFE0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223AFD8: .word 0x00007530 +_0223AFDC: .word MOD12_0223AFE0 + + thumb_func_start MOD12_0223AFE0 +MOD12_0223AFE0: ; 0x0223AFE0 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223AFF4 + cmp r0, #1 + beq _0223B06C + b _0223B0A8 +_0223AFF4: + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223B0C4 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223B04E + ldr r0, _0223B0C8 ; =0x04000048 + ldr r1, _0223B0CC ; =0xFFFFC0FF + ldrh r2, [r0] + and r2, r1 + mov r1, #0x1f + lsl r1, r1, #8 + orr r1, r2 + strh r1, [r0] + ldrh r2, [r0, #2] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x1f + orr r2, r1 + mov r1, #0x20 + orr r2, r1 + strh r2, [r0, #2] + lsl r3, r1, #0x15 + ldr r2, [r3] + ldr r0, _0223B0D0 ; =0xFFFF1FFF + and r2, r0 + lsl r0, r1, #9 + orr r0, r2 + str r0, [r3] + ldr r1, [r4] + ldr r0, _0223B0D4 ; =0x00000F64 + mov r2, #0xf0 + strb r2, [r1, r0] + ldr r2, [r4] + mov r3, #0 + add r1, r0, #1 + strb r3, [r2, r1] + add r1, r0, #2 + ldr r2, [r4] + mov r3, #0xff + strb r3, [r2, r1] + ldr r1, [r4] + mov r2, #0x10 + add r0, r0, #3 + strb r2, [r1, r0] +_0223B04E: + mov r0, #1 + str r0, [sp] + mov r1, #0x12 + mov r2, #0x11 + ldrb r0, [r4, #0x13] + ldrsb r1, [r4, r1] + ldrsb r2, [r4, r2] + mov r3, #0x3d + bl FUN_0200A208 + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223B06C: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _0223B0C0 + mov r1, #0 + str r1, [sp] + mov r0, #0xd0 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + ldr r0, [r0, #0x50] + add r3, r1, #0 + bl FUN_02003914 + mov r2, #0 + str r2, [sp] + mov r0, #0xe0 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #2 + ldr r0, [r0, #0x50] + add r3, r2, #0 + bl FUN_02003914 + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223B0A8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223B0C0: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B0C4: .word 0x00000171 +_0223B0C8: .word 0x04000048 +_0223B0CC: .word 0xFFFFC0FF +_0223B0D0: .word 0xFFFF1FFF +_0223B0D4: .word 0x00000F64 + + thumb_func_start MOD12_0223B0D8 +MOD12_0223B0D8: ; 0x0223B0D8 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B0EC +MOD12_0223B0EC: ; 0x0223B0EC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223B128 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223B12C ; =MOD12_0223B130 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B128: .word 0x00007530 +_0223B12C: .word MOD12_0223B130 + + thumb_func_start MOD12_0223B130 +MOD12_0223B130: ; 0x0223B130 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r1, #0x18] + str r1, [sp] + add r1, r0, #1 + ldr r0, [sp] + cmp r1, #0x1e + str r1, [r0, #0x18] + bne _0223B14C + mov r1, #0x1e + strb r1, [r0, #0x13] + mov r1, #1 + strb r1, [r0, #0x15] +_0223B14C: + ldr r0, [sp] + ldr r0, [r0] + ldr r1, [r0] + ldr r0, _0223B344 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B186 + ldr r0, [sp] + ldr r0, [r0, #0x18] + cmp r0, #0x1e + bge _0223B186 + ldr r0, _0223B348 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0223B174 + ldr r0, _0223B34C ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + beq _0223B186 +_0223B174: + ldr r0, [sp] + mov r1, #0x1e + str r1, [r0, #0x18] + ldr r1, [sp] + mov r0, #0 + strb r0, [r1, #0x13] + mov r2, #1 + strb r2, [r1, #0x15] + b _0223B194 +_0223B186: + ldr r0, [sp] + ldr r0, [r0, #0x18] + cmp r0, #0x1e + ble _0223B192 + mov r0, #0 + b _0223B194 +_0223B192: + mov r0, #1 +_0223B194: + ldr r1, [sp] + ldrb r1, [r1, #0x10] + cmp r1, #0 + beq _0223B19E + b _0223B316 +_0223B19E: + ldr r1, [sp] + mov r2, #0x14 + ldrsb r1, [r1, r2] + cmp r1, #0 + ble _0223B1B2 + ldr r0, [sp] + sub r1, r1, #1 + strb r1, [r0, #0x14] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223B1B2: + ldr r1, [sp] + mov r2, #0x13 + ldrsb r1, [r1, r2] + cmp r1, #0 + ble _0223B1C6 + ldr r0, [sp] + sub r1, r1, #1 + strb r1, [r0, #0x13] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223B1C6: + ldr r1, [sp] + strb r0, [r1, #0x13] + add r0, r1, #0 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _0223B1DE + ldr r0, _0223B350 ; =0x000006ED + bl FUN_020054C8 + ldr r0, [sp] + mov r1, #0 + strb r1, [r0, #0x15] +_0223B1DE: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223B252 +_0223B1F2: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _0223B354 ; =0x02245F84 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223B24C + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _0223B358 ; =0x02245F8C + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _0223B246 +_0223B222: + mov r4, #0 + b _0223B23A +_0223B226: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223B23A: + cmp r4, #8 + blt _0223B226 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223B246: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223B222 +_0223B24C: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223B252: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223B1F2 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223B294 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223B294 + ldr r0, _0223B354 ; =0x02245F84 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _0223B28E +_0223B27E: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223B28E: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223B27E +_0223B294: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + mov r1, #0xc + ldrb r0, [r0, #0x12] + lsl r0, r0, #5 + bl _u32_div_f + ldr r1, [sp] + mov r2, #0x11 + ldrsb r2, [r1, r2] + ldr r1, _0223B354 ; =0x02245F84 + ldrsb r1, [r1, r2] + add r1, r1, #4 + lsl r1, r1, #3 + sub r2, r1, r0 + ldr r0, [sp] + ldr r1, _0223B35C ; =0x00000F63 + ldr r0, [r0] + strb r2, [r0, r1] + ldr r0, [sp] + ldr r0, [r0] + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223B2DE + ldr r2, _0223B360 ; =0x04000050 + mov r0, #0 + strh r0, [r2] + sub r2, #0x50 + ldr r1, [r2] + ldr r0, _0223B364 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] +_0223B2DE: + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223B340 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223B340 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223B316: + ldr r3, _0223B360 ; =0x04000050 + mov r2, #0 + strh r2, [r3] + sub r3, #0x50 + ldr r1, [r3] + ldr r0, _0223B364 ; =0xFFFF1FFF + and r0, r1 + str r0, [r3] + ldr r0, [sp] + ldr r1, [sp] + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223B340: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B344: .word 0x00000171 +_0223B348: .word 0x021C48B8 +_0223B34C: .word 0x021C48F8 +_0223B350: .word 0x000006ED +_0223B354: .word 0x02245F84 +_0223B358: .word 0x02245F8C +_0223B35C: .word 0x00000F63 +_0223B360: .word 0x04000050 +_0223B364: .word 0xFFFF1FFF + + thumb_func_start MOD12_0223B368 +MOD12_0223B368: ; 0x0223B368 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B37C +MOD12_0223B37C: ; 0x0223B37C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x14 + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrh r0, [r0, #0x10] + bl FUN_020054C8 + ldr r0, _0223B3C0 ; =MOD12_0223B3C8 + ldr r2, _0223B3C4 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223B3C0: .word MOD12_0223B3C8 +_0223B3C4: .word 0x00007530 + + thumb_func_start MOD12_0223B3C8 +MOD12_0223B3C8: ; 0x0223B3C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4] + ldr r0, _0223B3F4 ; =0x000004F9 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B3F0 + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223B3F0: + pop {r3, r4, r5, pc} + nop +_0223B3F4: .word 0x000004F9 + + thumb_func_start MOD12_0223B3F8 +MOD12_0223B3F8: ; 0x0223B3F8 + push {r4, lr} + mov r0, #0x17 + mov r1, #0xf4 + bl FUN_02016998 + mov r1, #0 + mov r2, #0xf4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + add r0, #0x96 + strb r1, [r0] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B41C +MOD12_0223B41C: ; 0x0223B41C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _0223B470 ; =0x022460DC + add r5, r0, #0 + add r7, r4, #0 +_0223B426: + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl FUN_02016C18 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_02018768 + add r1, r4, #4 + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r4, r4, #1 + add r6, #0x1c + cmp r4, #4 + blo _0223B426 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B470: .word 0x022460DC + + thumb_func_start MOD12_0223B474 +MOD12_0223B474: ; 0x0223B474 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0223B47C: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0 + bl FUN_0201797C + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #4 + blo _0223B47C + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223B49C +MOD12_0223B49C: ; 0x0223B49C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD12_0223B3F8 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + mov r0, #6 + mov r1, #0x17 + bl FUN_02011744 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD12_0223B4F8 + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223B4C0 +MOD12_0223B4C0: ; 0x0223B4C0 + push {r4, lr} + add r4, r0, #0 + bl MOD12_0223B710 + add r0, r4, #0 + mov r1, #1 + bl MOD12_0223BE50 + ldr r0, [r4, #0x18] + bl FUN_020117BC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B4E0 +MOD12_0223B4E0: ; 0x0223B4E0 + push {r4, lr} + add r4, r0, #0 + bl MOD12_0223B940 + add r0, r4, #0 + bl MOD12_0223BA0C + add r0, r4, #0 + mov r1, #0 + bl MOD12_0223BE10 + pop {r4, pc} + + thumb_func_start MOD12_0223B4F8 +MOD12_0223B4F8: ; 0x0223B4F8 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r1, #6 + add r4, r0, #0 + mov r0, #0x17 + lsl r1, r1, #0xc + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + mov r1, #6 + mov r0, #0x17 + lsl r1, r1, #0xc + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xd4 + str r0, [r1] + mov r1, #0x1b + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xd8 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xdc + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xe0 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xe4 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xe8 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xec + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xf0 + str r0, [r1] + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #9 + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + add r1, r4, #0 + add r1, #0xd0 + mov r2, #6 + ldr r0, [r0, #0x14] + ldr r1, [r1] + lsl r2, r2, #0xc + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0x11 + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + add r1, r4, #0 + add r1, #0xd4 + mov r2, #6 + ldr r0, [r0, #0x14] + ldr r1, [r1] + lsl r2, r2, #0xc + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0xf + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + add r1, r4, #0 + add r1, #0xd8 + mov r2, #0x1b + ldr r0, [r0, #0x14] + ldr r1, [r1] + lsl r2, r2, #8 + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #7 + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xdc + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #8 + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xe0 + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0x10 + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xe4 + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0x1b + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xe8 + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + mov r3, #2 + str r0, [sp, #4] + mov r0, #0x2d + mov r1, #0x1e + mov r2, #0x17 + lsl r3, r3, #8 + bl FUN_0200317C + ldr r0, [r4, #4] + mov r2, #0x17 + ldr r1, [r0] + ldr r0, _0223B70C ; =0x0000011F + mov r3, #0x20 + ldrb r0, [r1, r0] + mov r1, #0x25 + lsl r0, r0, #0x14 + lsr r0, r0, #0x10 + str r0, [sp] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r0, #0x40 + str r0, [sp, #4] + mov r0, #0x2d + bl FUN_0200317C + mov r0, #0 + mov r1, #0x20 + add r4, #0xf0 + str r0, [sp] + ldr r0, [r4] + mov r2, #0x17 + str r0, [sp, #4] + mov r0, #0x2d + lsl r3, r1, #4 + bl FUN_0200317C + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B70C: .word 0x0000011F + + thumb_func_start MOD12_0223B710 +MOD12_0223B710: ; 0x0223B710 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 +_0223B718: + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02016A18 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _0223B718 + mov r6, #0 + add r4, r5, #0 +_0223B72E: + add r0, r4, #0 + add r0, #0xdc + ldr r0, [r0] + bl FUN_02016A18 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0223B72E + mov r4, #0 +_0223B742: + add r0, r5, #0 + add r0, #0xec + ldr r0, [r0] + bl FUN_02016A18 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _0223B742 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B758 +MOD12_0223B758: ; 0x0223B758 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + str r3, [r7, #8] + ldr r0, [r7, #4] + str r2, [sp, #8] + ldr r0, [r0, #0x60] + str r1, [sp, #4] + str r0, [sp, #0xc] + mov r0, #0x96 + ldrsb r2, [r7, r0] + sub r0, #0x97 + cmp r2, r0 + bne _0223B77C + mov r0, #1 + str r0, [sp, #8] + mov r6, #0 + b _0223B784 +_0223B77C: + mov r0, #0x24 + ldr r1, _0223B868 ; =0x02246094 + mul r0, r2 + add r6, r1, r0 +_0223B784: + ldr r0, [sp, #4] + mov r1, #0x24 + ldr r2, _0223B868 ; =0x02246094 + mul r1, r0 + add r0, r2, r1 + str r0, [sp, #0x10] + mov r4, #0 + add r5, r0, #0 +_0223B794: + ldrh r1, [r5, #0xc] + add r0, r4, #4 + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _0223B794 + ldr r0, [sp, #0x10] + mov r2, #8 + ldrh r1, [r0] + add r0, r7, #0 + add r0, #0x94 + strh r1, [r0] + ldr r0, _0223B86C ; =MOD12_0223C19C + add r1, r7, #0 + bl FUN_0200CA98 + ldr r0, [sp, #0x10] + ldrh r1, [r0, #2] + ldr r0, _0223B870 ; =0x0000FFFF + cmp r1, r0 + beq _0223B7F2 + ldr r0, [sp, #8] + cmp r0, #1 + beq _0223B7D6 + ldrh r0, [r6, #2] + cmp r1, r0 + beq _0223B7F2 +_0223B7D6: + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r7, #4] + lsl r1, r1, #2 + add r1, r7, r1 + add r0, #0x90 + add r1, #0xec + ldr r0, [r0] + ldr r1, [r1] + mov r2, #1 + mov r3, #0 + bl FUN_02003054 +_0223B7F2: + ldr r4, [sp, #0x10] + mov r5, #0 +_0223B7F6: + ldrh r2, [r4, #4] + ldr r0, _0223B870 ; =0x0000FFFF + cmp r2, r0 + beq _0223B82E + ldr r0, [sp, #8] + cmp r0, #1 + beq _0223B80A + ldrh r0, [r6, #4] + cmp r2, r0 + beq _0223B82E +_0223B80A: + lsl r2, r2, #2 + add r2, r7, r2 + add r1, r5, #4 + add r2, #0xdc + lsl r1, r1, #0x18 + mov r3, #2 + ldr r0, [sp, #0xc] + ldr r2, [r2] + lsr r1, r1, #0x18 + lsl r3, r3, #0xa + bl FUN_02017DFC + add r1, r5, #4 + lsl r1, r1, #0x18 + ldr r0, [sp, #0xc] + lsr r1, r1, #0x18 + bl FUN_0201AC68 +_0223B82E: + add r5, r5, #1 + add r4, r4, #2 + add r6, r6, #2 + cmp r5, #4 + blt _0223B7F6 + add r1, r7, #0 + ldr r0, [sp, #4] + add r1, #0x96 + strb r0, [r1] + add r0, r7, #0 + mov r1, #0 + bl MOD12_0223BE50 + ldr r0, [sp, #0x10] + ldr r3, [r0, #0x1c] + cmp r3, #0 + beq _0223B858 + ldr r1, [sp, #4] + ldr r2, [sp, #8] + add r0, r7, #0 + blx r3 +_0223B858: + ldr r0, _0223B874 ; =MOD12_0223C14C + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223B868: .word 0x02246094 +_0223B86C: .word MOD12_0223C19C +_0223B870: .word 0x0000FFFF +_0223B874: .word MOD12_0223C14C + + thumb_func_start MOD12_0223B878 +MOD12_0223B878: ; 0x0223B878 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x96 + ldrsb r1, [r5, r0] + sub r0, #0x97 + cmp r1, r0 + bne _0223B88A + bl ErrorHandling +_0223B88A: + mov r0, #0x96 + ldrsb r1, [r5, r0] + ldr r3, _0223B910 ; =0x02246094 + mov r0, #0x24 + add r2, r1, #0 + mul r2, r0 + add r4, r3, r2 + ldr r1, [r4, #0x14] + cmp r1, #0 + bne _0223B8A2 + sub r0, #0x25 + pop {r4, r5, r6, pc} +_0223B8A2: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _0223B8AC + bl ErrorHandling +_0223B8AC: + ldr r0, [r4, #0x14] + bl FUN_02020988 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0223B8F0 + ldr r2, [r4, #0x18] + ldr r1, _0223B914 ; =0x02246070 + cmp r2, r1 + bne _0223B8F0 + ldr r1, _0223B918 ; =0x021C48B8 + mov r2, #0x11 + ldr r1, [r1, #0x48] + add r3, r1, #0 + tst r3, r2 + beq _0223B8D2 + mov r0, #3 + b _0223B8F0 +_0223B8D2: + mov r3, #0x82 + add r6, r1, #0 + tst r6, r3 + beq _0223B8DE + mov r0, #1 + b _0223B8F0 +_0223B8DE: + lsl r2, r2, #6 + tst r2, r1 + beq _0223B8E8 + mov r0, #0 + b _0223B8F0 +_0223B8E8: + lsl r2, r3, #4 + tst r1, r2 + beq _0223B8F0 + mov r0, #2 +_0223B8F0: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223B8FE + ldr r1, [r4, #0x18] + lsl r0, r0, #2 + ldr r1, [r1, r0] +_0223B8FE: + ldr r2, [r4, #0x20] + cmp r2, #0 + beq _0223B90A + add r0, r5, #0 + blx r2 + add r1, r0, #0 +_0223B90A: + add r0, r1, #0 + pop {r4, r5, r6, pc} + nop +_0223B910: .word 0x02246094 +_0223B914: .word 0x02246070 +_0223B918: .word 0x021C48B8 + + thumb_func_start MOD12_0223B91C +MOD12_0223B91C: ; 0x0223B91C + ldr r0, [r0, #0xc] + cmp r0, #0 + bne _0223B926 + mov r0, #1 + bx lr +_0223B926: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223B92C +MOD12_0223B92C: ; 0x0223B92C + mov r1, #0x96 + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223B934 +MOD12_0223B934: ; 0x0223B934 + ldr r3, _0223B93C ; =MOD12_0223BE10 + mov r1, #1 + bx r3 + nop +_0223B93C: .word MOD12_0223BE10 + + thumb_func_start MOD12_0223B940 +MOD12_0223B940: ; 0x0223B940 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0xbf + mov r3, #0x17 + bl FUN_0200A86C + add r4, r0, #0 + ldr r0, [r5, #4] + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r0] + add r1, r2, #1 + ldrb r0, [r3, r2] + ldrb r1, [r3, r1] + ldr r3, [r5] + add r2, #0x51 + ldrb r2, [r3, r2] + bl FUN_02083228 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, _0223B9F4 ; =0x0000011F + ldr r2, [r0] + ldrb r0, [r2, r1] + add r1, r1, #2 + ldrb r1, [r2, r1] + bl FUN_020832A4 + add r7, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldr r0, _0223B9F8 ; =0x00010200 + add r1, r5, #0 + str r0, [sp] + mov r3, #0 + ldr r0, _0223B9FC ; =0x000080EB + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x7f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r1, #0x1c + add r2, r6, #0 + bl MOD12_0223BCD8 + ldr r0, _0223B9F8 ; =0x00010200 + mov r3, #0 + str r0, [sp] + ldr r0, _0223B9FC ; =0x000080EB + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x9f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r5, #0x30 + add r1, r5, #0 + add r2, r7, #0 + bl MOD12_0223BCD8 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200A8B8 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B9F4: .word 0x0000011F +_0223B9F8: .word 0x00010200 +_0223B9FC: .word 0x000080EB + + thumb_func_start MOD12_0223BA00 +MOD12_0223BA00: ; 0x0223BA00 + ldr r3, _0223BA08 ; =MOD12_0223BE10 + mov r1, #1 + bx r3 + nop +_0223BA08: .word MOD12_0223BE10 + + thumb_func_start MOD12_0223BA0C +MOD12_0223BA0C: ; 0x0223BA0C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r2, [r0, #4] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #0x84 + ldr r5, [r0] + ldr r1, [r2] + ldr r0, _0223BB14 ; =0x00000123 + ldrb r0, [r1, r0] + add r1, r2, r0 + mov r0, #0xaa + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223BA36 + add r0, r5, #0 + mov r1, #0 + bl FUN_0200A914 + b _0223BA3E +_0223BA36: + add r0, r5, #0 + mov r1, #1 + bl FUN_0200A914 +_0223BA3E: + add r4, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #3 + bl FUN_0200A914 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #4 + bl FUN_0200A914 + add r5, r0, #0 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r4, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x18 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x44 + bl MOD12_0223BCD8 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r6, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x78 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x58 + bl MOD12_0223BCD8 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r7, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0x30 + str r0, [sp, #0xc] + mov r0, #0x40 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x6c + bl MOD12_0223BCD8 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r5, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0xd0 + str r0, [sp, #0xc] + mov r0, #0x40 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x80 + str r1, [sp, #0x18] + bl MOD12_0223BCD8 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223BB14: .word 0x00000123 +_0223BB18: .word 0x0001010B +_0223BB1C: .word 0x000080EB + + thumb_func_start MOD12_0223BB20 +MOD12_0223BB20: ; 0x0223BB20 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r4, r0, #0 + add r0, r6, #1 + cmp r0, #4 + bhi _0223BB42 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223BB38: ; jump table + .short _0223BB42 - _0223BB38 - 2 ; case 0 + .short _0223BB46 - _0223BB38 - 2 ; case 1 + .short _0223BB4A - _0223BB38 - 2 ; case 2 + .short _0223BB4E - _0223BB38 - 2 ; case 3 + .short _0223BB52 - _0223BB38 - 2 ; case 4 +_0223BB42: + add r0, r6, #0 + pop {r4, r5, r6, pc} +_0223BB46: + mov r5, #2 + b _0223BB54 +_0223BB4A: + mov r5, #3 + b _0223BB54 +_0223BB4E: + mov r5, #4 + b _0223BB54 +_0223BB52: + mov r5, #5 +_0223BB54: + ldr r0, _0223BBB0 ; =MOD12_0223BEB4 + add r1, r4, #0 + bl MOD12_0223BE64 + add r0, r4, #0 + mov r1, #2 + add r0, #0xb8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xbc + str r1, [r0] + add r0, r4, #0 + add r0, #0xc0 + str r1, [r0] + add r0, r4, #0 + mov r1, #0x12 + add r0, #0xca + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x2d + add r0, #0xc8 + strh r1, [r0] + mov r0, #0xc + ldr r1, _0223BBB4 ; =0x0224614C + mul r0, r6 + add r2, r1, r0 + add r1, r4, #0 + add r1, #0xa0 + str r2, [r1] + ldr r1, _0223BBB8 ; =0x0224617C + add r2, r1, r0 + add r1, r4, #0 + add r1, #0xa4 + str r2, [r1] + ldr r1, _0223BBBC ; =0x022461AC + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xa8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + str r6, [r0] + add r4, #0xcc + strb r5, [r4] + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223BBB0: .word MOD12_0223BEB4 +_0223BBB4: .word 0x0224614C +_0223BBB8: .word 0x0224617C +_0223BBBC: .word 0x022461AC + + thumb_func_start MOD12_0223BBC0 +MOD12_0223BBC0: ; 0x0223BBC0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x17 + mov r1, #0x20 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0223BBEC + lsl r0, r5, #2 + add r0, r6, r0 + add r0, #0xd0 + ldr r0, [r0] + str r0, [r4, #0xc] +_0223BBEC: + ldr r0, [sp, #0x1c] + lsl r0, r0, #5 + strh r0, [r4, #0x1c] + ldr r0, [sp, #0x18] + ldrh r1, [r0] + strh r1, [r4, #0x10] + ldrh r1, [r0, #2] + strh r1, [r4, #0x12] + ldrh r1, [r0, #4] + strh r1, [r4, #0x14] + ldrh r1, [r0, #6] + strh r1, [r4, #0x16] + ldrh r1, [r0, #8] + strh r1, [r4, #0x18] + ldrh r0, [r0, #0xa] + strh r0, [r4, #0x1a] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + bl FUN_020187B0 + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BC1C +MOD12_0223BC1C: ; 0x0223BC1C + push {r4, lr} + sub sp, #8 + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r4, [sp, #0x14] + str r4, [sp, #4] + bl MOD12_0223BBC0 + add r4, r0, #0 + ldr r0, _0223BC40 ; =MOD12_0223C1DC + add r1, r4, #0 + mov r2, #0x14 + bl FUN_0200CA98 + str r0, [r4] + add r0, r4, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0223BC40: .word MOD12_0223C1DC + + thumb_func_start MOD12_0223BC44 +MOD12_0223BC44: ; 0x0223BC44 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0223BC62 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0223BC58 + bl FUN_02016A18 +_0223BC58: + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_0223BC62: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BC68 +MOD12_0223BC68: ; 0x0223BC68 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrh r1, [r5, #0x16] + ldrh r0, [r5, #0x1c] + mov r6, #0 + mul r0, r1 + str r0, [sp] + ldrh r0, [r5, #0x12] + lsl r7, r0, #0xa + ldrh r0, [r5, #0x1a] + cmp r0, #0 + ble _0223BCD4 + add r4, r6, #0 +_0223BC82: + ldr r2, [r5, #0xc] + cmp r2, #0 + beq _0223BCB0 + ldrh r0, [r5, #0x14] + ldrh r3, [r5, #0x1c] + lsl r1, r0, #5 + add r0, r3, #0 + ldr r3, [sp] + mul r0, r6 + add r0, r3, r0 + add r0, r1, r0 + ldrh r1, [r5, #0x10] + add r0, r2, r0 + ldr r3, [r5, #4] + lsl r2, r1, #5 + add r1, r7, r4 + add r1, r2, r1 + ldrh r2, [r5, #0x18] + add r1, r3, r1 + lsl r2, r2, #5 + bl MIi_CpuCopy16 + b _0223BCC6 +_0223BCB0: + ldrh r1, [r5, #0x10] + ldr r3, [r5, #4] + mov r0, #0 + lsl r2, r1, #5 + add r1, r7, r4 + add r1, r2, r1 + ldrh r2, [r5, #0x18] + add r1, r3, r1 + lsl r2, r2, #5 + bl MIi_CpuClear16 +_0223BCC6: + mov r0, #1 + lsl r0, r0, #0xa + add r4, r4, r0 + ldrh r0, [r5, #0x1a] + add r6, r6, #1 + cmp r6, r0 + blt _0223BC82 +_0223BCD4: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BCD8 +MOD12_0223BCD8: ; 0x0223BCD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x78 + add r5, r1, #0 + str r0, [sp, #0x18] + ldr r0, [r5] + str r2, [sp, #0x1c] + str r3, [sp, #0x20] + ldr r4, [sp, #0x9c] + cmp r0, #0 + beq _0223BCF0 + bl ErrorHandling +_0223BCF0: + ldr r0, [sp, #0x18] + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, [r1, #0x60] + str r0, [sp, #0x28] + ldr r0, [r1, #0x5c] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + bl FUN_02002E14 + add r7, r0, #0 + asr r1, r7, #2 + lsr r1, r1, #0x1d + add r1, r7, r1 + asr r6, r1, #3 + mov r1, #8 + bl FX_ModS32 + cmp r0, #0 + beq _0223BD1C + add r6, r6, #1 +_0223BD1C: + add r0, sp, #0x38 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + lsl r2, r6, #0x18 + ldr r0, [sp, #0x28] + add r1, sp, #0x38 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x20] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x1c] + add r0, sp, #0x38 + str r3, [sp, #0x14] + bl FUN_0201BE3C + add r0, sp, #0x38 + mov r1, #2 + mov r2, #0x17 + bl FUN_02011898 + mov r1, #1 + mov r2, #2 + add r3, sp, #0x2c + bl FUN_0201D568 + ldr r0, [sp, #0xa4] + cmp r0, #1 + bne _0223BD74 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r0, r0, #1 + sub r4, r4, r0 +_0223BD74: + ldr r0, [sp, #0x18] + ldr r0, [r0, #0x18] + str r0, [sp, #0x48] + add r0, sp, #0x38 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x24] + bl FUN_0200CA40 + str r0, [sp, #0x50] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x98] + bl FUN_0200C334 + mov r1, #0 + str r0, [sp, #0x54] + ldr r0, [sp, #0x30] + str r1, [sp, #0x58] + str r0, [sp, #0x5c] + ldr r0, [sp, #0xa0] + str r4, [sp, #0x60] + add r0, #0xf8 + str r0, [sp, #0x64] + mov r0, #0x64 + str r0, [sp, #0x6c] + mov r0, #2 + str r0, [sp, #0x70] + mov r0, #0x17 + str r0, [sp, #0x74] + add r0, sp, #0x48 + str r1, [sp, #0x68] + bl FUN_020117E8 + ldr r1, [sp, #0x94] + add r6, r0, #0 + bl FUN_02011AC0 + ldr r2, [sp, #0xa0] + add r0, r6, #0 + add r1, r4, #0 + add r2, #0xf8 + bl FUN_020118C4 + add r0, sp, #0x38 + bl FUN_02019178 + str r6, [r5] + add r3, sp, #0x2c + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + strh r7, [r5, #0x10] + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BDE4 +MOD12_0223BDE4: ; 0x0223BDE4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r4, #0x20 + add r7, r6, #0 +_0223BDF0: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _0223BE02 + bl FUN_02011870 + add r0, r4, #0 + bl FUN_0201D5E8 + str r7, [r5, #0x1c] +_0223BE02: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #6 + blt _0223BDF0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BE10 +MOD12_0223BE10: ; 0x0223BE10 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + cmp r7, #1 + bne _0223BE2C + mov r1, #0x96 + ldrsb r1, [r0, r1] + cmp r1, #0 + bne _0223BE26 + mov r4, #0 + mov r6, #1 + b _0223BE30 +_0223BE26: + mov r4, #2 + mov r6, #5 + b _0223BE30 +_0223BE2C: + mov r4, #0 + mov r6, #5 +_0223BE30: + cmp r4, r6 + bgt _0223BE4E + mov r1, #0x14 + mul r1, r4 + add r5, r0, r1 +_0223BE3A: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _0223BE46 + add r1, r7, #0 + bl FUN_020119D0 +_0223BE46: + add r4, r4, #1 + add r5, #0x14 + cmp r4, r6 + ble _0223BE3A +_0223BE4E: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223BE50 +MOD12_0223BE50: ; 0x0223BE50 + push {r3, lr} + cmp r1, #1 + bne _0223BE5C + bl MOD12_0223BDE4 + pop {r3, pc} +_0223BE5C: + mov r1, #0 + bl MOD12_0223BE10 + pop {r3, pc} + + thumb_func_start MOD12_0223BE64 +MOD12_0223BE64: ; 0x0223BE64 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0223BE74 + bl ErrorHandling +_0223BE74: + add r0, r4, #0 + add r0, #0x98 + mov r1, #0 + mov r2, #0x38 + bl MI_CpuFill8 + ldr r2, _0223BE90 ; =0x00000514 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} + nop +_0223BE90: .word 0x00000514 + + thumb_func_start MOD12_0223BE94 +MOD12_0223BE94: ; 0x0223BE94 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0223BEB0 + bl FUN_0200CAB4 + mov r1, #0 + str r1, [r4, #0xc] + add r4, #0x98 + add r0, r4, #0 + mov r2, #0x38 + bl MI_CpuFill8 +_0223BEB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BEB4 +MOD12_0223BEB4: ; 0x0223BEB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r0, #0x98 + ldrsh r0, [r4, r0] + cmp r0, #8 + bls _0223BEC4 + b _0223C140 +_0223BEC4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223BED0: ; jump table + .short _0223BEE2 - _0223BED0 - 2 ; case 0 + .short _0223BF6A - _0223BED0 - 2 ; case 1 + .short _0223BF84 - _0223BED0 - 2 ; case 2 + .short _0223BFAA - _0223BED0 - 2 ; case 3 + .short _0223C034 - _0223BED0 - 2 ; case 4 + .short _0223C050 - _0223BED0 - 2 ; case 5 + .short _0223C076 - _0223BED0 - 2 ; case 6 + .short _0223C100 - _0223BED0 - 2 ; case 7 + .short _0223C11A - _0223BED0 - 2 ; case 8 +_0223BEE2: + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + add r2, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + ldrh r0, [r0] + add r3, r4, #0 + add r2, #0xc8 + str r0, [sp, #4] + add r3, #0xb8 + ldrh r2, [r2] + ldr r3, [r3] + add r0, r4, #0 + mov r1, #4 + bl MOD12_0223BC1C + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + add r2, sp, #8 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + add r1, sp, #0xc + bl FUN_020119A4 + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + ldr r2, [sp, #8] + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0xc] + add r2, #0x10 + bl FUN_020118C4 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0223BF40: + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223BF54 + ldr r0, [r0] + add r1, r7, #0 + mov r2, #0x10 + bl FUN_0200C7FC +_0223BF54: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0223BF40 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r4, #0x98 + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0223BF6A: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD12_0223BC44 + cmp r0, #0 + beq _0223C042 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223BF84: + mov r1, #0x9a + ldrsh r0, [r4, r1] + add r2, r0, #1 + add r0, r4, #0 + add r0, #0x9a + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #2 + ble _0223C042 + add r0, r4, #0 + mov r1, #0 + add r0, #0x9a + strh r1, [r0] + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223BFAA: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + add r2, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + ldrh r0, [r0] + add r3, r4, #0 + add r2, #0xc8 + str r0, [sp, #4] + add r3, #0xbc + ldrh r2, [r2] + ldr r3, [r3] + add r0, r4, #0 + mov r1, #4 + bl MOD12_0223BC1C + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + add r2, sp, #8 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + add r1, sp, #0xc + bl FUN_020119A4 + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + ldr r2, [sp, #8] + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0xc] + sub r2, r2, #4 + bl FUN_020118C4 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0223C008: + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223C01E + mov r2, #3 + ldr r0, [r0] + add r1, r7, #0 + mvn r2, r2 + bl FUN_0200C7FC +_0223C01E: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0223C008 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r4, #0x98 + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0223C034: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD12_0223BC44 + cmp r0, #0 + bne _0223C044 +_0223C042: + b _0223C146 +_0223C044: + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C050: + mov r1, #0x9a + ldrsh r0, [r4, r1] + add r2, r0, #1 + add r0, r4, #0 + add r0, #0x9a + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #2 + ble _0223C146 + add r0, r4, #0 + mov r1, #0 + add r0, #0x9a + strh r1, [r0] + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C076: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + add r2, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + ldrh r0, [r0] + add r3, r4, #0 + add r2, #0xc8 + str r0, [sp, #4] + add r3, #0xc0 + ldrh r2, [r2] + ldr r3, [r3] + add r0, r4, #0 + mov r1, #4 + bl MOD12_0223BC1C + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + add r2, sp, #8 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + add r1, sp, #0xc + bl FUN_020119A4 + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + ldr r2, [sp, #8] + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0xc] + sub r2, #0xc + bl FUN_020118C4 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0223C0D4: + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223C0EA + mov r2, #0xb + ldr r0, [r0] + add r1, r7, #0 + mvn r2, r2 + bl FUN_0200C7FC +_0223C0EA: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0223C0D4 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r4, #0x98 + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0223C100: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD12_0223BC44 + cmp r0, #0 + beq _0223C146 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C11A: + mov r1, #0x9a + ldrsh r0, [r4, r1] + add r2, r0, #1 + add r0, r4, #0 + add r0, #0x9a + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #2 + ble _0223C146 + add r0, r4, #0 + mov r1, #0 + add r0, #0x9a + strh r1, [r0] + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C140: + add r0, r4, #0 + bl MOD12_0223BE94 +_0223C146: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C14C +MOD12_0223C14C: ; 0x0223C14C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r0, #0x96 + ldrsb r1, [r1, r0] + mov r0, #0x24 + mov r4, #0 + ldr r2, _0223C194 ; =0x02246094 + mul r0, r1 + ldr r6, _0223C198 ; =0x0000FFFF + add r5, r2, r0 + add r7, r4, #0 +_0223C162: + ldrh r0, [r5, #4] + cmp r0, r6 + bne _0223C176 + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r7, #0 + bl FUN_0201797C + b _0223C182 +_0223C176: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C +_0223C182: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _0223C162 + ldr r0, [sp] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C194: .word 0x02246094 +_0223C198: .word 0x0000FFFF + + thumb_func_start MOD12_0223C19C +MOD12_0223C19C: ; 0x0223C19C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x94 + ldrh r2, [r0] + ldr r0, _0223C1D8 ; =0x0000FFFF + cmp r2, r0 + beq _0223C1CE + mov r0, #0 + lsl r2, r2, #2 + str r0, [sp] + ldr r0, [r4, #4] + add r2, r4, r2 + add r2, #0xd0 + mov r3, #6 + ldr r0, [r0, #0x60] + ldr r2, [r2] + mov r1, #4 + lsl r3, r3, #0xc + bl FUN_02017E14 + ldr r0, _0223C1D8 ; =0x0000FFFF + add r4, #0x94 + strh r0, [r4] +_0223C1CE: + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_0223C1D8: .word 0x0000FFFF + + thumb_func_start MOD12_0223C1DC +MOD12_0223C1DC: ; 0x0223C1DC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD12_0223BC68 + mov r0, #0 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223C1F4 +MOD12_0223C1F4: ; 0x0223C1F4 + push {r3, lr} + sub sp, #8 + str r2, [sp] + str r1, [sp, #4] + ldr r0, [r0, #4] + mov r1, #1 + add r0, #0x90 + ldr r0, [r0] + mov r2, #0 + mov r3, #0x40 + bl FUN_020039E8 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD12_0223C210 +MOD12_0223C210: ; 0x0223C210 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C21C ; =0x022461F4 + ldrsh r0, [r0, r1] + bx lr + nop +_0223C21C: .word 0x022461F4 + + thumb_func_start MOD12_0223C220 +MOD12_0223C220: ; 0x0223C220 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C230 ; =0x022461F4 + add r1, r0, r1 + mov r0, #2 + ldrsh r0, [r1, r0] + bx lr + nop +_0223C230: .word 0x022461F4 + + thumb_func_start MOD12_0223C234 +MOD12_0223C234: ; 0x0223C234 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C244 ; =0x022461F4 + add r1, r0, r1 + mov r0, #4 + ldrsh r0, [r1, r0] + bx lr + nop +_0223C244: .word 0x022461F4 + + thumb_func_start MOD12_0223C248 +MOD12_0223C248: ; 0x0223C248 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r4, #0 + b _0223C264 +_0223C252: + lsl r0, r4, #4 + add r0, r5, r0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223C262 + bl ErrorHandling +_0223C262: + add r4, r4, #1 +_0223C264: + cmp r4, #4 + blt _0223C252 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, #0x17 + str r0, [sp, #0xc] + mov r4, #0 + ldr r7, _0223C2F8 ; =0x022461F4 + b _0223C2F0 +_0223C27C: + ldr r0, _0223C2FC ; =0x00000AD5 + add r1, r5, r4 + ldrb r6, [r1, r0] + ldr r1, [r5] + lsl r0, r6, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r2, r0, #0 + mov r0, #6 + mul r0, r4 + ldrsh r1, [r7, r0] + add r0, r7, r0 + mov r3, #2 + ldrsh r3, [r0, r3] + str r1, [sp, #4] + add r2, r2, r3 + str r2, [sp, #8] + lsl r2, r6, #4 + add r2, r5, r2 + str r1, [r2, #0x1c] + ldr r1, [sp, #8] + str r1, [r2, #0x20] + mov r1, #4 + ldrsh r0, [r0, r1] + lsl r1, r6, #2 + str r0, [r2, #0x24] + ldr r2, [r5] + add r0, sp, #0 + add r1, r2, r1 + add r1, #0xf8 + ldr r1, [r1] + bl FUN_021DD4F4 + lsl r1, r6, #4 + add r2, r5, r1 + str r0, [r2, #0x18] + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x20] + bl FUN_021DD620 + cmp r4, #0 + ble _0223C2EE + lsl r0, r6, #4 + add r0, r5, r0 + ldr r0, [r0, #0x18] + mov r1, #0 + bl FUN_021DD59C + lsl r0, r6, #4 + add r0, r5, r0 + mov r1, #0x63 + ldr r0, [r0, #0x18] + mvn r1, r1 + bl FUN_021DD6CC +_0223C2EE: + add r4, r4, #1 +_0223C2F0: + cmp r4, #4 + blt _0223C27C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C2F8: .word 0x022461F4 +_0223C2FC: .word 0x00000AD5 + + thumb_func_start MOD12_0223C300 +MOD12_0223C300: ; 0x0223C300 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0223C308: + ldr r0, [r5, #4] + bl FUN_021DD540 + add r0, r5, #0 + add r0, #0x98 + add r4, r4, #1 + add r5, #0x10 + str r6, [r0] + cmp r4, #4 + blt _0223C308 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C320 +MOD12_0223C320: ; 0x0223C320 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223C324 +MOD12_0223C324: ; 0x0223C324 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223C328 +MOD12_0223C328: ; 0x0223C328 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + ble _0223C338 + add r1, r0, #0 +_0223C338: + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + lsr r2, r1, #0x1f + lsl r1, r1, #0x1d + asr r4, r0, #3 + sub r1, r1, r2 + mov r0, #0x1d + ror r1, r0 + add r0, r2, r1 + str r0, [sp, #4] + ldr r0, [sp] + mov r1, #3 + ldr r0, [r0, #0x60] + bl FUN_0201886C + add r2, r0, #0 + mov r1, #0 + cmp r4, #0 + ble _0223C394 + ldr r0, _0223C420 ; =0x00002014 + add r3, r2, #0 + mov r7, #0x1d +_0223C366: + lsr r6, r1, #0x1f + lsl r5, r1, #0x1d + sub r5, r5, r6 + ror r5, r7 + add r5, r6, r5 + bne _0223C37A + mov r5, #0x13 + lsl r5, r5, #6 + strh r0, [r3, r5] + b _0223C38C +_0223C37A: + mov r5, #1 + tst r5, r1 + beq _0223C384 + ldr r6, _0223C424 ; =0x00002034 + b _0223C386 +_0223C384: + ldr r6, _0223C428 ; =0x00002054 +_0223C386: + mov r5, #0x13 + lsl r5, r5, #6 + strh r6, [r3, r5] +_0223C38C: + add r1, r1, #1 + add r3, r3, #2 + cmp r1, r4 + blt _0223C366 +_0223C394: + cmp r1, #0x20 + bge _0223C3D4 + lsr r4, r1, #0x1f + lsl r3, r1, #0x1d + sub r3, r3, r4 + mov r0, #0x1d + ror r3, r0 + add r0, r4, r3 + bne _0223C3B8 + ldr r3, _0223C42C ; =0x0000200C + ldr r0, [sp, #4] + add r4, r0, r3 + lsl r0, r1, #1 + add r3, r2, r0 + mov r0, #0x13 + lsl r0, r0, #6 + strh r4, [r3, r0] + b _0223C3D2 +_0223C3B8: + mov r0, #1 + tst r0, r1 + beq _0223C3C2 + ldr r3, _0223C430 ; =0x0000202C + b _0223C3C4 +_0223C3C2: + ldr r3, _0223C434 ; =0x0000204C +_0223C3C4: + ldr r0, [sp, #4] + add r4, r0, r3 + lsl r0, r1, #1 + add r3, r2, r0 + mov r0, #0x13 + lsl r0, r0, #6 + strh r4, [r3, r0] +_0223C3D2: + add r1, r1, #1 +_0223C3D4: + cmp r1, #0x20 + bge _0223C410 + lsl r0, r1, #1 + add r2, r2, r0 + mov r4, #0x13 + ldr r0, _0223C42C ; =0x0000200C + mov r7, #1 + lsl r4, r4, #6 + mov r5, #0x1d +_0223C3E6: + lsr r6, r1, #0x1f + lsl r3, r1, #0x1d + sub r3, r3, r6 + ror r3, r5 + add r3, r6, r3 + bne _0223C3F6 + strh r0, [r2, r4] + b _0223C408 +_0223C3F6: + add r3, r1, #0 + tst r3, r7 + beq _0223C400 + ldr r6, _0223C430 ; =0x0000202C + b _0223C402 +_0223C400: + ldr r6, _0223C434 ; =0x0000204C +_0223C402: + mov r3, #0x13 + lsl r3, r3, #6 + strh r6, [r2, r3] +_0223C408: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #0x20 + blt _0223C3E6 +_0223C410: + ldr r0, [sp] + mov r1, #3 + ldr r0, [r0, #0x60] + bl FUN_0201AC68 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C420: .word 0x00002014 +_0223C424: .word 0x00002034 +_0223C428: .word 0x00002054 +_0223C42C: .word 0x0000200C +_0223C430: .word 0x0000202C +_0223C434: .word 0x0000204C + + thumb_func_start MOD12_0223C438 +MOD12_0223C438: ; 0x0223C438 + push {r4, lr} + add r4, r0, #0 + lsl r0, r1, #8 + add r1, r2, #0 + bl _s32_div_f + add r1, r0, #0 + add r0, r4, #0 + bl MOD12_0223C328 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C450 +MOD12_0223C450: ; 0x0223C450 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223C4D8 ; =0x000080EB + mov r3, #0x3a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223C4DC ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3b + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223C4E0 ; =0x000080ED + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3c + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223C4E4 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3d + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223C4D8 ; =0x000080EB + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3e + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223C4D8 ; =0x000080EB + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3f + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0223C4D8: .word 0x000080EB +_0223C4DC: .word 0x000080EC +_0223C4E0: .word 0x000080ED +_0223C4E4: .word 0x000080EE + + thumb_func_start MOD12_0223C4E8 +MOD12_0223C4E8: ; 0x0223C4E8 + push {r4, lr} + ldr r1, _0223C51C ; =0x000080EB + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223C520 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223C524 ; =0x000080ED + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223C528 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223C51C ; =0x000080EB + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223C51C ; =0x000080EB + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223C51C: .word 0x000080EB +_0223C520: .word 0x000080EC +_0223C524: .word 0x000080ED +_0223C528: .word 0x000080EE + + thumb_func_start MOD12_0223C52C +MOD12_0223C52C: ; 0x0223C52C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r4, _0223C62C ; =0x022462E0 + add r7, r2, #0 + add r6, r3, #0 + add r5, r0, #0 + mov ip, r1 + add r3, sp, #0 + mov r2, #6 +_0223C53E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223C53E + ldr r0, [r4] + cmp r6, #2 + str r0, [r3] + bne _0223C556 + ldr r0, [sp, #8] + add r0, #0xa + str r0, [sp, #8] + b _0223C586 +_0223C556: + ldr r0, [sp, #0x54] + cmp r0, #3 + bhi _0223C586 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223C568: ; jump table + .short _0223C586 - _0223C568 - 2 ; case 0 + .short _0223C570 - _0223C568 - 2 ; case 1 + .short _0223C578 - _0223C568 - 2 ; case 2 + .short _0223C580 - _0223C568 - 2 ; case 3 +_0223C570: + ldr r0, [sp, #8] + add r0, r0, #3 + str r0, [sp, #8] + b _0223C586 +_0223C578: + ldr r0, [sp, #8] + add r0, r0, #2 + str r0, [sp, #8] + b _0223C586 +_0223C580: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223C586: + ldr r0, [sp, #0x48] + cmp r0, #4 + bhi _0223C5C0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223C598: ; jump table + .short _0223C5C0 - _0223C598 - 2 ; case 0 + .short _0223C5B6 - _0223C598 - 2 ; case 1 + .short _0223C5C0 - _0223C598 - 2 ; case 2 + .short _0223C5A2 - _0223C598 - 2 ; case 3 + .short _0223C5AC - _0223C598 - 2 ; case 4 +_0223C5A2: + ldr r0, _0223C630 ; =0x000080EC + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0xc] + b _0223C5C8 +_0223C5AC: + ldr r0, _0223C634 ; =0x000080EE + str r0, [sp, #0x14] + mov r0, #6 + str r0, [sp, #0xc] + b _0223C5C8 +_0223C5B6: + ldr r0, _0223C638 ; =0x000080ED + str r0, [sp, #0x14] + mov r0, #7 + str r0, [sp, #0xc] + b _0223C5C8 +_0223C5C0: + ldr r0, _0223C63C ; =0x000080EB + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0xc] +_0223C5C8: + mov r0, ip + add r1, r7, #0 + add r2, sp, #0 + bl FUN_0200C154 + add r4, r0, #0 + add r1, r6, #0 + bl FUN_0200C5C0 + ldr r0, [r4] + bl FUN_0200C59C + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x50] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + mov r3, #1 + add r0, r4, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + add r0, r4, #0 + mov r1, #1 + bl FUN_0200C5E0 + mov r0, #0 + add r2, r5, #0 +_0223C602: + add r1, r2, #0 + add r1, #0xd8 + ldr r1, [r1] + cmp r1, #0 + bne _0223C618 + lsl r1, r0, #2 + add r1, r5, r1 + add r1, #0xd8 + add sp, #0x34 + str r4, [r1] + pop {r4, r5, r6, r7, pc} +_0223C618: + add r0, r0, #1 + add r2, r2, #4 + cmp r0, #0x44 + blt _0223C602 + bl ErrorHandling + mov r0, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_0223C62C: .word 0x022462E0 +_0223C630: .word 0x000080EC +_0223C634: .word 0x000080EE +_0223C638: .word 0x000080ED +_0223C63C: .word 0x000080EB + + thumb_func_start MOD12_0223C640 +MOD12_0223C640: ; 0x0223C640 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0223C648: + add r0, r5, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + beq _0223C65C + bl FUN_0200C3DC + add r0, r5, #0 + add r0, #0xd8 + str r6, [r0] +_0223C65C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x44 + blt _0223C648 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C668 +MOD12_0223C668: ; 0x0223C668 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223C6B0 ; =0x000080EF + mov r3, #0x37 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223C6B4 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x38 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223C6B4 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x39 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223C6B0: .word 0x000080EF +_0223C6B4: .word 0x000080EC + + thumb_func_start MOD12_0223C6B8 +MOD12_0223C6B8: ; 0x0223C6B8 + push {r4, lr} + ldr r1, _0223C6D4 ; =0x000080EF + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223C6D8 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223C6D8 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223C6D4: .word 0x000080EF +_0223C6D8: .word 0x000080EC + + thumb_func_start MOD12_0223C6DC +MOD12_0223C6DC: ; 0x0223C6DC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r4, #0 +_0223C6E6: + ldr r2, _0223C708 ; =0x02246314 + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200C154 + ldr r1, _0223C70C ; =0x000009DC + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0223C6E6 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C708: .word 0x02246314 +_0223C70C: .word 0x000009DC + + thumb_func_start MOD12_0223C710 +MOD12_0223C710: ; 0x0223C710 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _0223C730 ; =0x000009DC + add r5, r0, #0 + add r6, r4, #0 +_0223C71A: + ldr r0, _0223C730 ; =0x000009DC + ldr r0, [r5, r0] + bl FUN_0200C3DC + str r6, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0223C71A + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C730: .word 0x000009DC + + thumb_func_start MOD12_0223C734 +MOD12_0223C734: ; 0x0223C734 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #5 + bl FUN_0200A914 + str r0, [sp, #0x38] + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #6 + bl FUN_0200A914 + str r0, [sp, #0x34] + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #7 + bl FUN_0200A914 + str r0, [sp, #0x30] + mov r0, #0 + ldr r1, _0223C868 ; =0x000009E8 + str r0, [sp, #0x3c] + add r0, r5, r1 + str r0, [sp, #0x2c] + add r0, r1, #0 + add r0, #0x3c + add r1, #0x78 + add r4, r5, #0 + add r7, r5, r0 + add r6, r5, r1 +_0223C778: + ldr r0, [sp, #0x2c] + add r3, r5, #0 + str r0, [sp] + ldr r0, [sp, #0x38] + add r3, #0x94 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _0223C86C ; =0x000B0C00 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _0223C870 ; =0x000080E9 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0xc + str r0, [sp, #0x28] + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x5c] + ldr r3, [r3] + mov r0, #0x17 + bl MOD12_02231380 + ldr r0, _0223C868 ; =0x000009E8 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020119D0 + add r3, r5, #0 + ldr r0, [sp, #0x34] + str r7, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _0223C86C ; =0x000B0C00 + add r3, #0x94 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _0223C870 ; =0x000080E9 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0xc + str r0, [sp, #0x28] + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x5c] + ldr r3, [r3] + mov r0, #0x17 + bl MOD12_02231380 + ldr r0, _0223C874 ; =0x00000A24 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020119D0 + add r3, r5, #0 + ldr r0, [sp, #0x30] + str r6, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _0223C86C ; =0x000B0C00 + add r3, #0x94 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _0223C870 ; =0x000080E9 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0xc + str r0, [sp, #0x28] + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x5c] + ldr r3, [r3] + mov r0, #0x17 + bl MOD12_02231380 + mov r0, #0xa6 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020119D0 + ldr r0, [sp, #0x2c] + add r4, #0x14 + add r0, #0x14 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x3c] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #0x3c] + cmp r0, #3 + blt _0223C778 + ldr r0, [sp, #0x38] + bl FUN_02021A20 + ldr r0, [sp, #0x34] + bl FUN_02021A20 + ldr r0, [sp, #0x30] + bl FUN_02021A20 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C868: .word 0x000009E8 +_0223C86C: .word 0x000B0C00 +_0223C870: .word 0x000080E9 +_0223C874: .word 0x00000A24 + + thumb_func_start MOD12_0223C878 +MOD12_0223C878: ; 0x0223C878 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _0223C89C ; =0x000009E8 + mov r7, #0 + add r6, r0, r1 +_0223C880: + mov r4, #0 + add r5, r6, #0 +_0223C884: + add r0, r5, #0 + bl MOD12_0223147C + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223C884 + add r7, r7, #1 + add r6, #0x3c + cmp r7, #3 + blt _0223C880 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C89C: .word 0x000009E8 + + thumb_func_start MOD12_0223C8A0 +MOD12_0223C8A0: ; 0x0223C8A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + str r3, [sp] + cmp r4, #0 + bne _0223C8B2 + str r4, [sp, #4] + b _0223C8B6 +_0223C8B2: + sub r0, r4, #1 + str r0, [sp, #4] +_0223C8B6: + mov r0, #0x9a + lsl r0, r0, #4 + add r2, r5, r0 + ldr r0, [sp, #4] + mov r1, #0x14 + mul r1, r0 + add r6, r2, r1 + ldr r0, [r6, #8] + cmp r0, #0 + beq _0223C8CE + bl FUN_0200CAB4 +_0223C8CE: + add r0, r6, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + ldr r1, _0223C980 ; =0x022461E4 + lsl r2, r4, #2 + ldrsh r0, [r1, r2] + add r1, r1, r2 + str r0, [sp, #0xc] + mov r0, #2 + ldrsh r0, [r1, r0] + str r0, [sp, #8] + ldr r0, [sp, #4] + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _0223C984 ; =0x000009DC + ldr r0, [r1, r0] + ldr r1, [sp] + str r0, [r6] + bl FUN_0200C5C0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + mov r3, #1 + ldr r0, [r6] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r6] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r6] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [sp, #4] + mov r1, #0x14 + add r7, r0, #0 + mov r4, #0 + mul r7, r1 + b _0223C940 +_0223C92C: + mov r0, #0x3c + mul r0, r4 + add r0, r5, r0 + add r1, r0, r7 + ldr r0, _0223C988 ; =0x000009E8 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020119D0 + add r4, r4, #1 +_0223C940: + cmp r4, #3 + blt _0223C92C + ldr r0, _0223C988 ; =0x000009E8 + mov r1, #0x3c + add r2, r5, r0 + ldr r0, [sp] + mov r3, #1 + mul r1, r0 + add r2, r2, r1 + ldr r0, [sp, #4] + mov r1, #0x14 + mul r1, r0 + add r0, r2, r1 + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + str r0, [r6, #4] + bl MOD12_02231490 + ldr r0, [r6, #4] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + ldr r0, _0223C98C ; =MOD12_0223C994 + ldr r2, _0223C990 ; =0x00009D08 + add r1, r6, #0 + bl FUN_0200CA44 + str r0, [r6, #8] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C980: .word 0x022461E4 +_0223C984: .word 0x000009DC +_0223C988: .word 0x000009E8 +_0223C98C: .word MOD12_0223C994 +_0223C990: .word 0x00009D08 + + thumb_func_start MOD12_0223C994 +MOD12_0223C994: ; 0x0223C994 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223C9A8 + cmp r0, #1 + beq _0223C9E6 + b _0223C9FA +_0223C9A8: + ldr r0, [r4, #4] + add r1, sp, #4 + ldr r0, [r0] + add r2, sp, #0 + bl FUN_020119A4 + ldr r0, [sp] + ldr r1, [sp, #4] + sub r2, r0, #4 + str r2, [sp] + ldr r0, [r4, #4] + ldr r0, [r0] + bl FUN_020118C4 + mov r1, #0 + ldr r0, [r4] + sub r2, r1, #4 + bl FUN_0200C82C + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #4 + ble _0223CA16 + mov r0, #0 + str r0, [r4, #0xc] + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223C9E6: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0xe + ble _0223CA16 + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223C9FA: + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C644 + mov r0, #0 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223CA16: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223CA1C +MOD12_0223CA1C: ; 0x0223CA1C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _0223CA40 ; =0x000009A8 + add r5, r0, #0 + add r6, r4, #0 +_0223CA26: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223CA34 + bl FUN_0200CAB4 + ldr r0, _0223CA40 ; =0x000009A8 + str r6, [r5, r0] +_0223CA34: + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223CA26 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CA40: .word 0x000009A8 + + thumb_func_start MOD12_0223CA44 +MOD12_0223CA44: ; 0x0223CA44 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CA8C ; =0x000080F0 + mov r3, #0x40 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CA90 ; =0x000080ED + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x41 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CA90 ; =0x000080ED + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x42 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CA8C: .word 0x000080F0 +_0223CA90: .word 0x000080ED + + thumb_func_start MOD12_0223CA94 +MOD12_0223CA94: ; 0x0223CA94 + push {r4, lr} + ldr r1, _0223CAB0 ; =0x000080F0 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CAB4 ; =0x000080ED + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CAB4 ; =0x000080ED + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CAB0: .word 0x000080F0 +_0223CAB4: .word 0x000080ED + + thumb_func_start MOD12_0223CAB8 +MOD12_0223CAB8: ; 0x0223CAB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + ldr r2, _0223CAD8 ; =0x02246244 + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + mov r0, #0x7a + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, pc} + nop +_0223CAD8: .word 0x02246244 + + thumb_func_start MOD12_0223CADC +MOD12_0223CADC: ; 0x0223CADC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223CAF6 + bl FUN_0200C3DC + mov r0, #0x7a + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_0223CAF6: + pop {r4, pc} + + thumb_func_start MOD12_0223CAF8 +MOD12_0223CAF8: ; 0x0223CAF8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223CB10 ; =MOD12_0223CB28 + ldr r2, _0223CB14 ; =0x00009CAE + add r1, r4, #0 + bl FUN_0200CA44 + mov r1, #2 + lsl r1, r1, #8 + str r0, [r4, r1] + pop {r4, pc} + nop +_0223CB10: .word MOD12_0223CB28 +_0223CB14: .word 0x00009CAE + + thumb_func_start MOD12_0223CB18 +MOD12_0223CB18: ; 0x0223CB18 + mov r1, #2 + lsl r1, r1, #8 + ldr r3, _0223CB24 ; =0x0200CAB5 + ldr r0, [r0, r1] + bx r3 + nop +_0223CB24: .word 0x0200CAB5 + + thumb_func_start MOD12_0223CB28 +MOD12_0223CB28: ; 0x0223CB28 + push {r3, lr} + ldr r2, [r1] + ldr r0, _0223CB50 ; =0x00000123 + mov r3, #1 + ldrb r2, [r2, r0] + add r0, #0xd9 + ldr r0, [r1, r0] + lsl r2, r2, #4 + add r2, r1, r2 + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x20] + lsl r1, r1, #0x10 + sub r2, #0x28 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + pop {r3, pc} + .align 2, 0 +_0223CB50: .word 0x00000123 + + thumb_func_start MOD12_0223CB54 +MOD12_0223CB54: ; 0x0223CB54 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CB9C ; =0x000080F2 + mov r3, #0x5a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CBA0 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x59 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CBA0 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x58 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CB9C: .word 0x000080F2 +_0223CBA0: .word 0x000080EF + + thumb_func_start MOD12_0223CBA4 +MOD12_0223CBA4: ; 0x0223CBA4 + push {r4, lr} + ldr r1, _0223CBC0 ; =0x000080F2 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CBC4 ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CBC4 ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CBC0: .word 0x000080F2 +_0223CBC4: .word 0x000080EF + + thumb_func_start MOD12_0223CBC8 +MOD12_0223CBC8: ; 0x0223CBC8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + mov r0, #0 + str r1, [sp, #4] + str r0, [sp, #0xc] + ldr r4, [sp] + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #8 + ldr r6, [sp, #0xc] + str r2, [sp, #8] + add r7, r0, #4 + add r5, r0, r1 +_0223CBE4: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, _0223CC60 ; =0x022462AC + bl FUN_0200C154 + mov r1, #0x81 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_0200C59C + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C840 + ldr r1, [sp, #0xc] + ldr r0, _0223CC64 ; =0x00000213 + strb r1, [r4, r0] + sub r0, r0, #7 + str r7, [r4, r0] + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, r6] + bl FUN_02068E14 + mov r1, #0x85 + lsl r1, r1, #2 + strb r0, [r4, r1] + mov r1, #1 + add r0, r5, #0 + add r2, r1, #0 + bl MOD12_0223CD38 + ldr r0, _0223CC68 ; =MOD12_0223CCBC + ldr r2, _0223CC6C ; =0x0000A08C + add r1, r5, #0 + bl FUN_0200CA44 + mov r1, #2 + lsl r1, r1, #8 + str r0, [r4, r1] + ldr r0, [sp, #0xc] + add r4, #0x18 + add r0, r0, #1 + add r7, #0x10 + add r6, r6, #4 + add r5, #0x18 + str r0, [sp, #0xc] + cmp r0, #4 + blt _0223CBE4 + ldr r0, [sp] + mov r1, #0 + bl MOD12_0223CC9C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CC60: .word 0x022462AC +_0223CC64: .word 0x00000213 +_0223CC68: .word MOD12_0223CCBC +_0223CC6C: .word 0x0000A08C + + thumb_func_start MOD12_0223CC70 +MOD12_0223CC70: ; 0x0223CC70 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x81 + add r5, r0, #0 + add r6, r4, #0 + lsl r7, r7, #2 +_0223CC7C: + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200C3DC + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r5, r0] + bl FUN_0200CAB4 + str r6, [r5, r7] + add r4, r4, #1 + add r5, #0x18 + cmp r4, #4 + blt _0223CC7C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223CC9C +MOD12_0223CC9C: ; 0x0223CC9C + push {r3, r4, r5, r6, r7, lr} + mov r7, #0x81 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + lsl r7, r7, #2 +_0223CCA8: + ldr r0, [r5, r7] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, #0x18 + cmp r4, #4 + blt _0223CCA8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223CCBC +MOD12_0223CCBC: ; 0x0223CCBC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r0, [r5, #0xc] + ldr r6, [r0, #4] + ldr r4, [r0, #8] + ldr r0, [r0, #0xc] + bl MOD12_0223D06C + mov r1, #0x14 + ldrsb r2, [r5, r1] + mov r1, #0x28 + sub r2, r1, r2 + add r1, r2, #0 + mul r1, r0 + asr r2, r1, #7 + lsr r2, r2, #0x18 + add r2, r1, r2 + asr r1, r2, #8 + add r4, r4, r1 + mov r1, #0x64 + mul r1, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r0, r0, #8 + bl _fflt + ldr r1, _0223CD34 ; =0x42C80000 + bl _fdiv + add r7, r0, #0 + ldrb r0, [r5, #0x12] + cmp r0, #0 + bne _0223CD16 + add r1, sp, #0 + mov r3, #1 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #0 + lsl r3, r3, #0x14 + bl FUN_0200C7F0 + add r1, sp, #0 + mov r0, #0 + ldrsh r4, [r1, r0] +_0223CD16: + lsl r1, r6, #0x10 + lsl r2, r4, #0x10 + mov r3, #1 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r5, #4] + add r1, r7, #0 + add r2, r7, #0 + bl FUN_0200C884 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223CD34: .word 0x42C80000 + + thumb_func_start MOD12_0223CD38 +MOD12_0223CD38: ; 0x0223CD38 + strb r1, [r0, #0x11] + strb r2, [r0, #0x12] + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223CD40 +MOD12_0223CD40: ; 0x0223CD40 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CD88 ; =0x000080F3 + mov r3, #0x5d + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CD8C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5c + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CD8C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5b + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CD88: .word 0x000080F3 +_0223CD8C: .word 0x000080F0 + + thumb_func_start MOD12_0223CD90 +MOD12_0223CD90: ; 0x0223CD90 + push {r4, lr} + ldr r1, _0223CDAC ; =0x000080F3 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CDB0 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CDB0 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CDAC: .word 0x000080F3 +_0223CDB0: .word 0x000080F0 + + thumb_func_start MOD12_0223CDB4 +MOD12_0223CDB4: ; 0x0223CDB4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223CDB8 +MOD12_0223CDB8: ; 0x0223CDB8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223CDBC +MOD12_0223CDBC: ; 0x0223CDBC + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CE04 ; =0x000080F4 + mov r3, #0x60 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CE08 ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5f + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CE08 ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5e + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CE04: .word 0x000080F4 +_0223CE08: .word 0x000080F1 + + thumb_func_start MOD12_0223CE0C +MOD12_0223CE0C: ; 0x0223CE0C + push {r4, lr} + ldr r1, _0223CE28 ; =0x000080F4 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CE2C ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CE2C ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CE28: .word 0x000080F4 +_0223CE2C: .word 0x000080F1 + + thumb_func_start MOD12_0223CE30 +MOD12_0223CE30: ; 0x0223CE30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0xad + lsl r0, r0, #2 + add r7, r1, #0 + add r1, r5, r0 + sub r0, #0xf4 + mul r0, r7 + add r4, r1, r0 + str r2, [sp] + mov r1, #0 +_0223CE48: + ldr r0, [r4] + cmp r0, #0 + beq _0223CE56 + add r1, r1, #1 + add r4, #0x1c + cmp r1, #0x10 + blt _0223CE48 +_0223CE56: + cmp r1, #0x10 + bne _0223CE60 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223CE60: + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + ldr r2, _0223CF2C ; =0x02246348 + bl FUN_0200C154 + add r6, r0, #0 + bne _0223CE74 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223CE74: + lsl r1, r7, #4 + add r2, r5, r1 + ldr r1, [r2, #0x1c] + ldr r7, [r2, #0x20] + str r1, [sp, #4] + ldr r1, [sp] + bl FUN_0200C5C0 + ldr r1, [sp, #4] + lsl r2, r7, #0x10 + lsl r1, r1, #0x10 + mov r3, #1 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r6] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r6] + bl FUN_0200C59C + ldr r0, [r5] + bl FUN_02082878 + ldr r2, _0223CF30 ; =0x04000280 + mov r1, #0 + strh r1, [r2] + str r0, [r2, #0x10] + mov r0, #5 + lsl r0, r0, #8 + add r2, #0x18 + str r0, [r2] + str r1, [r2, #4] + add r0, r4, #0 + mov r2, #0x1c + bl MI_CpuFill8 + ldr r0, [sp, #4] + str r6, [r4, #4] + lsl r0, r0, #8 + str r0, [r4, #8] + lsl r0, r7, #8 + ldr r2, _0223CF30 ; =0x04000280 + str r0, [r4, #0xc] + lsr r0, r2, #0xb +_0223CED6: + ldrh r1, [r2] + tst r1, r0 + bne _0223CED6 + ldr r0, _0223CF34 ; =0x040002A8 + ldr r1, [r0] + mov r0, #1 + str r1, [r4, #0x10] + tst r0, r1 + beq _0223CEEC + neg r0, r1 + str r0, [r4, #0x10] +_0223CEEC: + ldr r0, [r5] + bl FUN_02082878 + ldr r2, _0223CF38 ; =0x04000290 + mov r1, #0xf + str r0, [r2] + lsl r1, r1, #8 + add r2, #8 + mov r0, #0 + str r1, [r2] + str r0, [r2, #4] + ldr r2, _0223CF30 ; =0x04000280 + lsr r0, r2, #0xb +_0223CF06: + ldrh r1, [r2] + tst r1, r0 + bne _0223CF06 + ldr r0, _0223CF34 ; =0x040002A8 + ldr r2, _0223CF3C ; =0x00009C40 + ldr r1, [r0] + lsr r0, r0, #0x10 + add r0, r1, r0 + neg r0, r0 + str r0, [r4, #0x14] + ldr r0, _0223CF40 ; =MOD12_0223CF44 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CF2C: .word 0x02246348 +_0223CF30: .word 0x04000280 +_0223CF34: .word 0x040002A8 +_0223CF38: .word 0x04000290 +_0223CF3C: .word 0x00009C40 +_0223CF40: .word MOD12_0223CF44 + + thumb_func_start MOD12_0223CF44 +MOD12_0223CF44: ; 0x0223CF44 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0xc] + mov r0, #2 + ldr r1, [r4, #0x14] + lsl r0, r0, #8 + add r0, r1, r0 + str r0, [r4, #0x14] + ldrh r0, [r4, #0x18] + add r0, r0, #1 + strh r0, [r4, #0x18] + ldrh r0, [r4, #0x18] + cmp r0, #0xa + bhi _0223CF8A + mov r0, #0x11 + ldr r1, [r4, #8] + lsl r0, r0, #0xc + cmp r1, r0 + bgt _0223CF8A + ldr r0, _0223CFF0 ; =0xFFFEF000 + cmp r1, r0 + blt _0223CF8A + mov r0, #0xd + ldr r2, [r4, #0xc] + lsl r0, r0, #0xc + cmp r2, r0 + ble _0223CF9E +_0223CF8A: + ldr r0, [r4, #4] + bl FUN_0200C3DC + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] + str r0, [r4] + pop {r3, r4, r5, pc} +_0223CF9E: + ldr r0, _0223CFF4 ; =0x04000280 + mov r3, #0 + strh r3, [r0] + str r1, [r0, #0x10] + add r1, r0, #0 + lsr r2, r0, #0x12 + add r1, #0x18 + str r2, [r1] + str r3, [r1, #4] + lsr r1, r0, #0xb +_0223CFB2: + ldrh r2, [r0] + tst r2, r1 + bne _0223CFB2 + ldr r3, _0223CFF8 ; =0x040002A0 + ldr r2, [r4, #0xc] + add r0, r3, #0 + ldr r1, [r3] + sub r0, #0x10 + str r2, [r0] + lsr r2, r3, #0x12 + sub r3, #8 + mov r0, #0 + str r2, [r3] + str r0, [r3, #4] + ldr r3, _0223CFF4 ; =0x04000280 + lsr r0, r3, #0xb +_0223CFD2: + ldrh r2, [r3] + tst r2, r0 + bne _0223CFD2 + ldr r2, _0223CFF8 ; =0x040002A0 + lsl r1, r1, #0x10 + ldr r2, [r2] + mov r3, #1 + lsl r2, r2, #0x10 + ldr r0, [r4, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223CFF0: .word 0xFFFEF000 +_0223CFF4: .word 0x04000280 +_0223CFF8: .word 0x040002A0 + + thumb_func_start MOD12_0223CFFC +MOD12_0223CFFC: ; 0x0223CFFC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + cmp r2, #2 + beq _0223D058 + add r0, r1, #0 + lsl r0, r0, #1 + add r1, r7, r0 + ldr r0, _0223D05C ; =0x00000ADA + ldrsh r0, [r1, r0] + cmp r0, #0 + beq _0223D058 + ldr r1, _0223D060 ; =0x04000280 + mov r6, #0 + strh r6, [r1] + str r0, [r1, #0x10] + mov r0, #2 + add r1, #0x18 + str r0, [r1] + str r6, [r1, #4] + cmp r3, #0 + beq _0223D02A + mov r6, #1 +_0223D02A: + ldr r2, _0223D060 ; =0x04000280 + lsr r0, r2, #0xb +_0223D02E: + ldrh r1, [r2] + tst r1, r0 + bne _0223D02E + ldr r0, _0223D064 ; =0x040002A0 + ldr r5, [r0] + cmp r5, #0x10 + ble _0223D03E + mov r5, #0x10 +_0223D03E: + mov r4, #0 + cmp r5, #0 + ble _0223D058 +_0223D044: + ldr r1, [sp] + add r0, r7, #0 + add r2, r6, #0 + bl MOD12_0223CE30 + cmp r0, #0 + beq _0223D058 + add r4, r4, #1 + cmp r4, r5 + blt _0223D044 +_0223D058: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D05C: .word 0x00000ADA +_0223D060: .word 0x04000280 +_0223D064: .word 0x040002A0 + + thumb_func_start MOD12_0223D068 +MOD12_0223D068: ; 0x0223D068 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223D06C +MOD12_0223D06C: ; 0x0223D06C + ldr r1, _0223D098 ; =0xFFFFFD80 + cmp r0, r1 + bne _0223D076 + mov r0, #0xc0 + bx lr +_0223D076: + add r1, #0x80 + cmp r0, r1 + bne _0223D082 + mov r0, #1 + lsl r0, r0, #8 + bx lr +_0223D082: + mov r1, #0xa + lsl r1, r1, #6 + add r0, r0, r1 + lsl r1, r0, #6 + asr r0, r1, #6 + lsr r0, r0, #0x19 + add r0, r1, r0 + asr r0, r0, #7 + add r0, #0xc0 + bx lr + nop +_0223D098: .word 0xFFFFFD80 + + thumb_func_start MOD12_0223D09C +MOD12_0223D09C: ; 0x0223D09C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0xc] + bl MOD12_0223D06C + mov r1, #1 + lsl r1, r1, #8 + cmp r0, r1 + bne _0223D0B2 + lsl r1, r1, #4 + b _0223D0BC +_0223D0B2: + lsl r1, r0, #0xc + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 +_0223D0BC: + mov r3, #1 + ldr r0, [r4] + add r2, r1, #0 + lsl r3, r3, #0xc + bl FUN_021DD60C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223D0CC +MOD12_0223D0CC: ; 0x0223D0CC + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #4 +_0223D0D4: + ldr r0, [r5, #0x48] + add r1, r4, #0 + bl MOD12_0223D09C + add r6, r6, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r6, #4 + blt _0223D0D4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223D0E8 +MOD12_0223D0E8: ; 0x0223D0E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldrb r0, [r2, #2] + str r2, [sp, #0x10] + cmp r0, r1 + bne _0223D0FC + mov r0, #0 + str r0, [sp, #0x14] + b _0223D100 +_0223D0FC: + mov r0, #1 + str r0, [sp, #0x14] +_0223D100: + ldr r0, [sp, #0x10] + mov r4, #0 + ldrb r0, [r0, #6] + lsl r6, r0, #3 + ldr r0, [sp, #0x10] + ldrb r1, [r0, #7] + ldr r0, _0223D1C0 ; =0x022461DC + ldrb r7, [r0, r1] + b _0223D156 +_0223D112: + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0223D154 + add r1, sp, #0x18 + mov r3, #1 + add r1, #2 + add r2, sp, #0x18 + lsl r3, r3, #0x14 + bl FUN_0200C7F0 + add r1, sp, #0x18 + mov r0, #2 + ldrsh r0, [r1, r0] + cmp r0, r6 + bne _0223D154 + mov r0, #0 + ldrsh r0, [r1, r0] + cmp r0, r7 + bne _0223D154 + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xec + ldr r0, [r0] + bl FUN_0200C5CC + cmp r0, #2 + beq _0223D154 + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223D154: + add r4, r4, #1 +_0223D156: + cmp r4, #0x44 + blt _0223D112 + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x14] + ldrb r0, [r0, #3] + str r0, [sp] + str r6, [sp, #4] + ldr r0, [sp, #0x10] + str r7, [sp, #8] + ldrb r0, [r0, #7] + str r0, [sp, #0xc] + add r0, r5, #0 + ldr r1, [r5, #0x6c] + ldr r2, [r5, #0x70] + add r0, #0x14 + bl MOD12_0223C52C + ldr r0, [sp, #0x10] + ldrb r0, [r0, #7] + cmp r0, #0 + bne _0223D1BA + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _0223D1BA + ldr r0, [r5] + ldr r1, _0223D1C4 ; =0x00000123 + ldr r2, _0223D1C8 ; =0x00000AD5 + ldrb r0, [r0, r1] + add r6, #0x80 + add r0, r5, r0 + ldrb r3, [r0, r2] + ldr r0, _0223D1C0 ; =0x022461DC + ldrb r3, [r0, r3] + ldr r0, [sp, #0x10] + ldrb r0, [r0, #3] + str r0, [sp] + str r6, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5] + mov r3, #2 + ldrb r0, [r0, r1] + add r0, r5, r0 + ldrb r0, [r0, r2] + str r0, [sp, #0xc] + add r0, r5, #0 + ldr r1, [r5, #0x6c] + ldr r2, [r5, #0x70] + add r0, #0x14 + bl MOD12_0223C52C +_0223D1BA: + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223D1C0: .word 0x022461DC +_0223D1C4: .word 0x00000123 +_0223D1C8: .word 0x00000AD5 + + thumb_func_start MOD12_0223D1CC +MOD12_0223D1CC: ; 0x0223D1CC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + ldrb r1, [r4, #5] + add r5, r0, #0 + ldrb r0, [r4, #2] + cmp r1, #3 + bhi _0223D200 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223D1E8: ; jump table + .short _0223D1F0 - _0223D1E8 - 2 ; case 0 + .short _0223D1F4 - _0223D1E8 - 2 ; case 1 + .short _0223D1F8 - _0223D1E8 - 2 ; case 2 + .short _0223D1FC - _0223D1E8 - 2 ; case 3 +_0223D1F0: + mov r2, #2 + b _0223D202 +_0223D1F4: + mov r2, #2 + b _0223D202 +_0223D1F8: + mov r2, #1 + b _0223D202 +_0223D1FC: + mov r2, #1 + b _0223D202 +_0223D200: + mov r2, #0 +_0223D202: + ldr r1, _0223D498 ; =0x00000ADA + lsl r0, r0, #1 + add r1, r5, r1 + add r3, r1, r0 + str r3, [sp, #8] + ldrsh r3, [r1, r0] + add r2, r3, r2 + strh r2, [r1, r0] + ldrb r0, [r4, #7] + cmp r0, #0 + bne _0223D262 + ldr r0, _0223D49C ; =0x00001BA0 + mov r2, #0 + add r3, r5, r0 + add r6, r5, #0 + sub r7, r0, #2 +_0223D222: + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0223D250 + mov r0, #0xa + mul r0, r2 + ldrh r1, [r4] + ldr r2, _0223D4A0 ; =0x00001B98 + add r0, r5, r0 + strh r1, [r0, r2] + ldrh r3, [r4, #2] + add r1, r2, #2 + strh r3, [r0, r1] + ldrh r3, [r4, #4] + add r1, r2, #4 + strh r3, [r0, r1] + add r1, r2, #6 + ldrh r3, [r4, #6] + add r2, #8 + strh r3, [r0, r1] + ldrh r1, [r4, #8] + strh r1, [r0, r2] + b _0223D262 +_0223D250: + ldrb r1, [r4, #6] + ldrb r0, [r6, r7] + cmp r1, r0 + beq _0223D262 + add r2, r2, #1 + add r3, #0xa + add r6, #0xa + cmp r2, #8 + blt _0223D222 +_0223D262: + ldrb r0, [r4, #4] + cmp r0, #0 + bne _0223D280 + ldr r0, _0223D4A4 ; =0x00000AB9 + ldrb r2, [r4, #2] + add r3, r5, r0 + add r0, r0, #4 + ldrb r1, [r3, r2] + add r1, r1, #1 + strb r1, [r3, r2] + ldrb r1, [r4, #2] + add r2, r5, r0 + ldrb r0, [r2, r1] + add r0, r0, #1 + b _0223D290 +_0223D280: + ldrb r1, [r4, #2] + mov r0, #0 + add r2, r5, r1 + ldr r1, _0223D4A4 ; =0x00000AB9 + strb r0, [r2, r1] + ldrb r2, [r4, #2] + add r1, r1, #4 + add r2, r5, r2 +_0223D290: + strb r0, [r2, r1] + ldrb r0, [r4, #4] + cmp r0, #2 + beq _0223D2A6 + ldr r0, _0223D4A8 ; =0x00000AC8 + ldrb r1, [r4, #2] + add r2, r5, r0 + ldrb r0, [r2, r1] + add r0, r0, #1 + strb r0, [r2, r1] + b _0223D2BC +_0223D2A6: + ldr r0, _0223D4AC ; =0x00000AC1 + ldrb r2, [r4, #2] + add r3, r5, r0 + add r0, r0, #7 + ldrb r1, [r3, r2] + add r1, r1, #1 + strb r1, [r3, r2] + ldrb r1, [r4, #2] + mov r2, #0 + add r1, r5, r1 + strb r2, [r1, r0] +_0223D2BC: + ldrb r0, [r4, #7] + cmp r0, #0 + beq _0223D2EE + ldrb r0, [r4, #4] + cmp r0, #0 + beq _0223D2D2 + cmp r0, #1 + beq _0223D2DC + cmp r0, #2 + beq _0223D2E6 + b _0223D2EE +_0223D2D2: + ldr r0, _0223D4B0 ; =0x00000AC5 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _0223D2EE +_0223D2DC: + ldr r0, _0223D4B4 ; =0x00000AC6 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _0223D2EE +_0223D2E6: + ldr r0, _0223D4B8 ; =0x00000AC7 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] +_0223D2EE: + ldrb r0, [r4, #2] + str r0, [sp] + ldrb r0, [r4, #7] + str r0, [sp, #4] + add r0, r5, #0 + ldrb r3, [r4, #4] + ldr r1, [r5, #0x6c] + ldr r2, [r5, #0x70] + add r0, #0x14 + bl MOD12_0223C8A0 + ldr r2, [r5] + ldr r1, _0223D4BC ; =0x00000123 + add r0, r5, #0 + ldrb r1, [r2, r1] + add r2, r4, #0 + bl MOD12_0223D0E8 + ldrb r0, [r4, #8] + mov r1, #0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + str r0, [sp] + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + str r0, [sp, #4] + ldrb r1, [r4, #2] + ldrb r2, [r4, #7] + ldrb r3, [r4, #3] + add r0, r5, #0 + bl MOD12_0223D4E8 + ldrb r1, [r4, #2] + ldrb r2, [r4, #4] + ldrb r3, [r4, #7] + add r0, r5, #0 + bl MOD12_0223CFFC + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_0223E788 + ldr r1, [r5] + ldr r0, _0223D4BC ; =0x00000123 + ldrb r2, [r4, #2] + ldrb r0, [r1, r0] + cmp r2, r0 + bne _0223D36E + ldrb r0, [r4, #4] + cmp r0, #0 + bne _0223D360 + ldrb r1, [r4, #6] + add r0, r5, #0 + mov r2, #1 + bl MOD12_0223E9C4 + b _0223D36E +_0223D360: + cmp r0, #1 + bne _0223D36E + ldrb r1, [r4, #6] + add r0, r5, #0 + mov r2, #0 + bl MOD12_0223E9C4 +_0223D36E: + ldrb r1, [r4, #7] + cmp r1, #0 + bne _0223D3AC + ldrb r0, [r4, #8] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D3AC + ldrb r1, [r4, #2] + ldr r0, _0223D4C0 ; =0x00000AFE + add r2, r5, r1 + add r1, r0, #0 + sub r1, #0x41 + ldrb r3, [r5, r0] + ldrb r1, [r2, r1] + cmp r3, r1 + bne _0223D39A + add r0, r5, #0 + mov r1, #1 + bl MOD12_0223EA48 + b _0223D3F2 +_0223D39A: + sub r0, #0x3d + ldrb r0, [r2, r0] + cmp r0, #0 + bne _0223D3F2 + add r0, r5, #0 + mov r1, #0 + bl MOD12_0223EA48 + b _0223D3F2 +_0223D3AC: + cmp r1, #0 + beq _0223D3F2 + ldrb r0, [r4, #8] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D3F2 + ldr r3, _0223D4B0 ; =0x00000AC5 + add r0, r3, #2 + ldrb r1, [r5, r0] + add r0, r3, #0 + ldrb r2, [r5, r3] + add r0, #0x39 + add r3, r3, #1 + ldrb r6, [r5, r0] + ldrb r3, [r5, r3] + lsl r0, r6, #1 + add r3, r2, r3 + add r0, r6, r0 + add r3, r1, r3 + cmp r0, r3 + bne _0223D3F2 + cmp r2, r0 + bne _0223D3E6 + add r0, r5, #0 + mov r1, #1 + bl MOD12_0223EA48 + b _0223D3F2 +_0223D3E6: + cmp r1, #0 + bne _0223D3F2 + add r0, r5, #0 + mov r1, #0 + bl MOD12_0223EA48 +_0223D3F2: + ldrb r0, [r4, #8] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D404 + ldr r0, _0223D4C4 ; =0x000006F5 + bl FUN_020054C8 + b _0223D40A +_0223D404: + ldr r0, _0223D4C8 ; =0x000006F4 + bl FUN_020054C8 +_0223D40A: + ldr r0, _0223D4CC ; =0x00000ACC + ldrb r0, [r5, r0] + cmp r0, #0 + beq _0223D426 + beq _0223D492 + ldrb r0, [r4, #7] + cmp r0, #0 + beq _0223D426 + ldr r1, [r5] + ldr r0, _0223D4BC ; =0x00000123 + ldrb r2, [r4, #2] + ldrb r0, [r1, r0] + cmp r2, r0 + bne _0223D492 +_0223D426: + ldrb r0, [r4, #4] + cmp r0, #0 + beq _0223D438 + cmp r0, #1 + beq _0223D46E + cmp r0, #2 + beq _0223D478 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D438: + ldrb r0, [r4, #2] + add r1, r5, r0 + ldr r0, _0223D4D0 ; =0x00000ABD + ldrb r1, [r1, r0] + add r0, #0x41 + ldrb r0, [r5, r0] + cmp r0, r1 + bne _0223D454 + mov r0, #0x6f + lsl r0, r0, #4 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D454: + sub r0, r0, #1 + cmp r0, r1 + bne _0223D464 + ldr r0, _0223D4D4 ; =0x000006EF + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D464: + ldr r0, _0223D4D8 ; =0x000006EE + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D46E: + ldr r0, _0223D4DC ; =0x000006F1 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D478: + ldrb r0, [r4, #8] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D48C + ldr r0, _0223D4E0 ; =0x000006F2 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D48C: + ldr r0, _0223D4E4 ; =0x000005F6 + bl FUN_020054C8 +_0223D492: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223D498: .word 0x00000ADA +_0223D49C: .word 0x00001BA0 +_0223D4A0: .word 0x00001B98 +_0223D4A4: .word 0x00000AB9 +_0223D4A8: .word 0x00000AC8 +_0223D4AC: .word 0x00000AC1 +_0223D4B0: .word 0x00000AC5 +_0223D4B4: .word 0x00000AC6 +_0223D4B8: .word 0x00000AC7 +_0223D4BC: .word 0x00000123 +_0223D4C0: .word 0x00000AFE +_0223D4C4: .word 0x000006F5 +_0223D4C8: .word 0x000006F4 +_0223D4CC: .word 0x00000ACC +_0223D4D0: .word 0x00000ABD +_0223D4D4: .word 0x000006EF +_0223D4D8: .word 0x000006EE +_0223D4DC: .word 0x000006F1 +_0223D4E0: .word 0x000006F2 +_0223D4E4: .word 0x000005F6 + + thumb_func_start MOD12_0223D4E8 +MOD12_0223D4E8: ; 0x0223D4E8 + push {r4, r5, r6, lr} + ldr r4, _0223D558 ; =0x00000F3C + add r5, r0, r4 + mov r0, #0x4c + add r4, r1, #0 + mul r4, r0 + add r1, r5, r4 + add r4, r1, #0 + add r4, #0x20 + ldrb r4, [r4] + sub r0, #0x4d + add r6, r4, #0 + cmp r4, #0x20 + bge _0223D514 +_0223D504: + ldrb r5, [r1, r6] + cmp r5, #0 + bne _0223D50E + add r0, r6, #0 + b _0223D514 +_0223D50E: + add r6, r6, #1 + cmp r6, #0x20 + blt _0223D504 +_0223D514: + mov r5, #0 + mvn r5, r5 + cmp r0, r5 + bne _0223D532 + mov r6, #0 + cmp r4, #0 + ble _0223D532 +_0223D522: + ldrb r5, [r1, r6] + cmp r5, #0 + bne _0223D52C + add r0, r6, #0 + b _0223D532 +_0223D52C: + add r6, r6, #1 + cmp r6, r4 + blt _0223D522 +_0223D532: + mov r4, #0 + mvn r4, r4 + cmp r0, r4 + bne _0223D540 + bl ErrorHandling + pop {r4, r5, r6, pc} +_0223D540: + strb r3, [r1, r0] + add r0, r1, #0 + add r0, #0x21 + strb r2, [r0] + add r0, r1, #0 + ldr r2, [sp, #0x10] + add r0, #0x22 + strb r2, [r0] + ldr r0, [sp, #0x14] + add r1, #0x23 + strb r0, [r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_0223D558: .word 0x00000F3C + + thumb_func_start MOD12_0223D55C +MOD12_0223D55C: ; 0x0223D55C + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223D570 ; =MOD12_0223D5B0 + ldr r2, _0223D574 ; =0x00009862 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #8] + pop {r4, pc} + nop +_0223D570: .word MOD12_0223D5B0 +_0223D574: .word 0x00009862 + + thumb_func_start MOD12_0223D578 +MOD12_0223D578: ; 0x0223D578 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + + thumb_func_start MOD12_0223D588 +MOD12_0223D588: ; 0x0223D588 + ldr r1, _0223D5AC ; =0x00000F3C + mov r2, #0 + add r1, r0, r1 +_0223D58E: + add r0, r1, #0 + add r0, #0x20 + ldrb r0, [r0] + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223D59E + mov r0, #0 + bx lr +_0223D59E: + add r2, r2, #1 + add r1, #0x4c + cmp r2, #4 + blt _0223D58E + mov r0, #1 + bx lr + nop +_0223D5AC: .word 0x00000F3C + + thumb_func_start MOD12_0223D5B0 +MOD12_0223D5B0: ; 0x0223D5B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r1, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x18] + ldr r1, _0223D76C ; =0x00000F3C + ldr r0, [sp, #0x10] + ldr r6, [sp, #0x10] + add r4, r0, r1 + mov r1, #0x85 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r5, [sp, #0x10] + str r0, [sp, #0x14] + add r6, #0x18 +_0223D5CE: + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + mov r7, #0 + ldrb r0, [r4, r0] + str r0, [sp, #0x1c] + cmp r0, #0 + bne _0223D5E0 + b _0223D750 +_0223D5E0: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + mov r2, #4 + bl MOD12_0223DCE8 + ldr r1, [sp, #0x10] + ldr r0, _0223D770 ; =0x00000AE8 + ldr r0, [r1, r0] + ldr r1, _0223D774 ; =0x00002710 + bl _u32_div_f + ldr r1, [sp, #0x1c] + cmp r1, #4 + bls _0223D5FE + b _0223D708 +_0223D5FE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223D60A: ; jump table + .short _0223D708 - _0223D60A - 2 ; case 0 + .short _0223D614 - _0223D60A - 2 ; case 1 + .short _0223D67E - _0223D60A - 2 ; case 2 + .short _0223D6AC - _0223D60A - 2 ; case 3 + .short _0223D6DA - _0223D60A - 2 ; case 4 +_0223D614: + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x18] + add r2, r2, r1 + ldr r1, _0223D778 ; =0x00000AB4 + ldrb r1, [r2, r1] + cmp r1, #1 + bne _0223D650 + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + ldr r1, [sp, #0x14] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223D77C + add r7, r0, #0 + b _0223D70C +_0223D650: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + add r1, r7, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223D890 + add r7, r0, #0 + b _0223D70C +_0223D67E: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223D890 + add r7, r0, #0 + b _0223D70C +_0223D6AC: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223DA10 + add r7, r0, #0 + b _0223D70C +_0223D6DA: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + add r1, r7, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223DA10 + add r7, r0, #0 + b _0223D70C +_0223D708: + bl ErrorHandling +_0223D70C: + cmp r7, #1 + bne _0223D750 + add r0, r4, #0 + add r0, #0x20 + ldrb r1, [r0] + mov r0, #0 + strb r0, [r4, r1] + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x20 + blo _0223D73A + add r1, r4, #0 + add r1, #0x20 + mov r0, #0 + strb r0, [r1] +_0223D73A: + add r0, r4, #0 + add r0, #0x24 + mov r1, #0 + mov r2, #0x28 + bl MI_CpuFill8 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + mov r2, #3 + bl MOD12_0223DCE8 +_0223D750: + ldr r0, [sp, #0x14] + add r4, #0x4c + add r0, #0x18 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r6, #0x10 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0x18] + cmp r0, #4 + bge _0223D768 + b _0223D5CE +_0223D768: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D76C: .word 0x00000F3C +_0223D770: .word 0x00000AE8 +_0223D774: .word 0x00002710 +_0223D778: .word 0x00000AB4 + + thumb_func_start MOD12_0223D77C +MOD12_0223D77C: ; 0x0223D77C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #4] + ldrb r0, [r5, #0x10] + add r4, r2, #0 + add r6, r3, #0 + cmp r0, #0 + beq _0223D796 + cmp r0, #1 + beq _0223D7E4 + b _0223D818 +_0223D796: + ldr r0, [r4, #4] + ldr r1, [sp, #0x2c] + lsl r0, r0, #8 + str r0, [r5] + ldr r0, [r4, #8] + lsr r1, r1, #1 + lsl r0, r0, #8 + str r0, [r5, #4] + ldr r0, [r5] + str r0, [r5, #8] + ldr r0, [r5, #4] + str r0, [r5, #0xc] + mov r0, #5 + lsl r0, r0, #8 + bl _u32_div_f + ldr r1, [sp, #0x20] + cmp r1, #1 + bne _0223D7CE + ldr r1, _0223D888 ; =0xFFFFF600 + strh r1, [r5, #0x14] + mov r1, #0xc8 + mul r1, r0 + add r0, r1, #0 + mov r1, #0x64 + bl _s32_div_f + b _0223D7D2 +_0223D7CE: + ldr r1, _0223D88C ; =0xFFFFFB00 + strh r1, [r5, #0x14] +_0223D7D2: + strh r0, [r5, #0x16] + ldr r0, [sp, #0x28] + mov r1, #1 + mov r2, #0 + bl MOD12_0223CD38 + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] +_0223D7E4: + mov r0, #0x14 + ldrsh r1, [r5, r0] + ldr r2, [r5, #0xc] + add r1, r2, r1 + str r1, [r5, #0xc] + ldrsh r1, [r5, r0] + mov r0, #0x16 + ldrsh r0, [r5, r0] + add r0, r1, r0 + strh r0, [r5, #0x14] + ldr r1, [r5, #4] + ldr r0, [r5, #0xc] + cmp r0, r1 + blt _0223D81E + str r1, [r5, #0xc] + mov r1, #1 + ldr r0, [sp, #0x28] + add r2, r1, #0 + bl MOD12_0223CD38 + mov r0, #1 + str r0, [sp, #4] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] + b _0223D81E +_0223D818: + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223D81E: + cmp r6, #0 + bne _0223D826 + mov r6, #0x64 + b _0223D828 +_0223D826: + mov r6, #0x28 +_0223D828: + ldr r0, [sp, #0x24] + lsl r1, r0, #9 + mov r0, #0x19 + lsl r0, r0, #0xa + cmp r1, r0 + ble _0223D836 + add r1, r0, #0 +_0223D836: + asr r0, r1, #8 + add r6, r6, r0 + ldr r0, [r5] + ldr r1, [r5, #8] + str r0, [sp] + sub r1, r1, r0 + ldr r7, [r5, #4] + ldr r0, [r5, #0xc] + sub r5, r0, r7 + add r0, r1, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #8] + add r0, r5, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp] + ldr r1, [sp, #8] + add r2, r2, r1 + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + str r1, [r4, #4] + add r1, r7, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r2, r0, #8 + str r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + bl FUN_021DD620 + ldr r0, [sp, #4] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223D888: .word 0xFFFFF600 +_0223D88C: .word 0xFFFFFB00 + + thumb_func_start MOD12_0223D890 +MOD12_0223D890: ; 0x0223D890 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + ldrb r0, [r4, #0x10] + add r6, r2, #0 + str r3, [sp] + ldr r5, [sp, #0x30] + cmp r0, #0 + beq _0223D8B0 + cmp r0, #1 + beq _0223D908 + cmp r0, #2 + beq _0223D95A + b _0223D99E +_0223D8B0: + ldr r0, [r6, #4] + ldr r1, [sp, #0x34] + lsl r0, r0, #8 + str r0, [r4] + ldr r0, [r6, #8] + lsl r0, r0, #8 + str r0, [r4, #4] + ldr r0, [r4] + str r0, [r4, #8] + ldr r0, [r4, #4] + str r0, [r4, #0xc] + mov r0, #0x1e + mul r0, r1 + mov r1, #0x64 + bl _u32_div_f + add r7, r0, #0 + mov r0, #1 + lsl r0, r0, #0xc + add r1, r7, #0 + bl _s32_div_f + ldr r1, [sp, #0x34] + str r0, [r4, #0x14] + mov r0, #1 + lsl r0, r0, #0xc + sub r1, r1, r7 + bl _s32_div_f + str r0, [r4, #0x18] + cmp r5, #0 + bne _0223D902 + ldr r1, [r4, #0x14] + mov r0, #0 + mvn r0, r0 + add r2, r1, #0 + mul r2, r0 + str r2, [r4, #0x14] + ldr r1, [r4, #0x18] + mul r0, r1 + str r0, [r4, #0x18] +_0223D902: + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223D908: + ldr r0, [sp, #0x28] + cmp r0, #1 + bne _0223D924 + ldr r1, [r4, #0x14] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r4, #0xc] + add r0, r1, r0 + str r0, [r4, #0xc] + mov r0, #0x20 + b _0223D92E +_0223D924: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0xc] + mov r0, #0x10 +_0223D92E: + lsl r0, r0, #8 + str r0, [sp, #8] + ldr r7, [r4, #4] + ldr r0, [r4, #0xc] + sub r0, r0, r7 + bl abs + ldr r1, [sp, #8] + cmp r0, r1 + blt _0223D9A4 + cmp r5, #1 + bne _0223D94C + add r0, r1, #0 + add r0, r7, r0 + b _0223D950 +_0223D94C: + add r0, r1, #0 + sub r0, r7, r0 +_0223D950: + str r0, [r4, #0xc] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + b _0223D9A4 +_0223D95A: + ldr r0, [sp, #0x28] + cmp r0, #1 + bne _0223D970 + ldr r1, [r4, #0x18] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r4, #0xc] + b _0223D974 +_0223D970: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] +_0223D974: + sub r0, r1, r0 + str r0, [r4, #0xc] + cmp r5, #1 + bne _0223D984 + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + cmp r0, r1 + ble _0223D990 +_0223D984: + cmp r5, #0 + bne _0223D9A4 + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + cmp r0, r1 + blt _0223D9A4 +_0223D990: + str r1, [r4, #0xc] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + mov r0, #1 + str r0, [sp, #0xc] + b _0223D9A4 +_0223D99E: + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223D9A4: + ldr r0, [sp] + cmp r0, #0 + bne _0223D9AE + mov r5, #0x64 + b _0223D9B0 +_0223D9AE: + mov r5, #0x28 +_0223D9B0: + ldr r0, [sp, #0x2c] + lsl r1, r0, #9 + mov r0, #0x19 + lsl r0, r0, #0xa + cmp r1, r0 + ble _0223D9BE + add r1, r0, #0 +_0223D9BE: + asr r0, r1, #8 + add r5, r5, r0 + ldr r0, [r4] + ldr r1, [r4, #8] + str r0, [sp, #4] + sub r1, r1, r0 + ldr r7, [r4, #4] + ldr r0, [r4, #0xc] + sub r4, r0, r7 + add r0, r1, #0 + mul r0, r5 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #0x10] + add r0, r4, #0 + mul r0, r5 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #4] + ldr r1, [sp, #0x10] + add r2, r2, r1 + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + str r1, [r6, #4] + add r1, r7, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r2, r0, #8 + str r2, [r6, #8] + ldr r0, [r6] + ldr r1, [r6, #4] + bl FUN_021DD620 + ldr r0, [sp, #0xc] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223DA10 +MOD12_0223DA10: ; 0x0223DA10 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #0x10] + ldrb r0, [r5, #0x10] + add r4, r2, #0 + str r3, [sp] + ldr r6, [sp, #0x38] + cmp r0, #0 + beq _0223DA30 + cmp r0, #1 + beq _0223DAB0 + cmp r0, #2 + beq _0223DB22 + b _0223DB84 +_0223DA30: + ldr r0, [r4, #4] + ldr r1, [sp, #0x3c] + lsl r0, r0, #8 + str r0, [r5] + ldr r0, [r4, #8] + lsl r0, r0, #8 + str r0, [r5, #4] + ldr r0, [r5] + str r0, [r5, #8] + ldr r0, [r5, #4] + str r0, [r5, #0xc] + mov r0, #0x1e + mul r0, r1 + mov r1, #0x64 + bl _u32_div_f + ldr r1, [sp, #0x3c] + str r0, [sp, #0x14] + sub r7, r1, r0 + ldr r0, _0223DC04 ; =0x00038E00 + ldr r1, [sp, #0x14] + bl _s32_div_f + str r0, [r5, #0x18] + ldr r0, _0223DC08 ; =0xFFFC7200 + add r1, r7, #0 + bl _s32_div_f + str r0, [r5, #0x1c] + mov r0, #1 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xc + bl _s32_div_f + str r0, [r5, #0x20] + mov r0, #1 + lsl r0, r0, #0xc + add r1, r7, #0 + bl _s32_div_f + neg r0, r0 + str r0, [r5, #0x24] + cmp r6, #1 + bne _0223DAAA + ldr r1, [r5, #0x18] + mov r0, #0 + mvn r0, r0 + add r2, r1, #0 + mul r2, r0 + str r2, [r5, #0x18] + ldr r1, [r5, #0x1c] + add r2, r1, #0 + mul r2, r0 + str r2, [r5, #0x1c] + ldr r1, [r5, #0x20] + add r2, r1, #0 + mul r2, r0 + str r2, [r5, #0x20] + ldr r1, [r5, #0x24] + mul r0, r1 + str r0, [r5, #0x24] +_0223DAAA: + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] +_0223DAB0: + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _0223DADC + ldr r1, [r5, #0x20] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #8] + add r0, r1, r0 + str r0, [r5, #8] + mov r0, #0x20 + str r0, [sp, #0xc] + ldr r1, [r5, #0x18] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #0x14] + b _0223DAEC +_0223DADC: + ldr r1, [r5, #8] + ldr r0, [r5, #0x20] + add r0, r1, r0 + str r0, [r5, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r1, [r5, #0x14] + ldr r0, [r5, #0x18] +_0223DAEC: + add r0, r1, r0 + str r0, [r5, #0x14] + ldr r0, [sp, #0xc] + ldr r7, [r5] + lsl r0, r0, #8 + str r0, [sp, #8] + ldr r0, [r5, #8] + sub r0, r0, r7 + bl abs + ldr r1, [sp, #8] + cmp r0, r1 + blt _0223DB8A + cmp r6, #1 + bne _0223DB10 + add r0, r1, #0 + sub r0, r7, r0 + b _0223DB14 +_0223DB10: + add r0, r1, #0 + add r0, r7, r0 +_0223DB14: + str r0, [r5, #8] + ldr r0, [r5, #4] + str r0, [r5, #0xc] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] + b _0223DB8A +_0223DB22: + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _0223DB4A + ldr r1, [r5, #0x24] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #8] + add r0, r1, r0 + str r0, [r5, #8] + ldr r1, [r5, #0x1c] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #0x14] + b _0223DB56 +_0223DB4A: + ldr r1, [r5, #8] + ldr r0, [r5, #0x24] + add r0, r1, r0 + str r0, [r5, #8] + ldr r1, [r5, #0x14] + ldr r0, [r5, #0x1c] +_0223DB56: + add r0, r1, r0 + str r0, [r5, #0x14] + cmp r6, #1 + bne _0223DB66 + ldr r1, [r5] + ldr r0, [r5, #8] + cmp r0, r1 + bge _0223DB72 +_0223DB66: + cmp r6, #0 + bne _0223DB8A + ldr r1, [r5] + ldr r0, [r5, #8] + cmp r0, r1 + bgt _0223DB8A +_0223DB72: + str r1, [r5, #8] + mov r0, #0 + str r0, [r5, #0x14] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] + mov r0, #1 + str r0, [sp, #0x10] + b _0223DB8A +_0223DB84: + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223DB8A: + ldr r1, [r5, #0x14] + ldr r0, [r4] + lsl r1, r1, #8 + lsr r1, r1, #0x10 + bl FUN_021DD604 + ldr r0, [sp] + cmp r0, #0 + bne _0223DBA0 + mov r6, #0x64 + b _0223DBA2 +_0223DBA0: + mov r6, #0x28 +_0223DBA2: + ldr r0, [sp, #0x34] + lsl r1, r0, #9 + mov r0, #0x19 + lsl r0, r0, #0xa + cmp r1, r0 + ble _0223DBB0 + add r1, r0, #0 +_0223DBB0: + asr r0, r1, #8 + add r6, r6, r0 + ldr r0, [r5] + ldr r1, [r5, #8] + str r0, [sp, #4] + sub r1, r1, r0 + ldr r7, [r5, #4] + ldr r0, [r5, #0xc] + sub r5, r0, r7 + add r0, r1, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #0x18] + add r0, r5, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #4] + ldr r1, [sp, #0x18] + add r2, r2, r1 + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + str r1, [r4, #4] + add r1, r7, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r2, r0, #8 + str r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + bl FUN_021DD620 + ldr r0, [sp, #0x10] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0223DC04: .word 0x00038E00 +_0223DC08: .word 0xFFFC7200 + + thumb_func_start MOD12_0223DC0C +MOD12_0223DC0C: ; 0x0223DC0C + ldr r1, _0223DC24 ; =0x00001BA0 + mov r2, #0 + add r3, r0, r1 + mov r0, #4 +_0223DC14: + ldrb r1, [r3] + add r2, r2, #1 + bic r1, r0 + strb r1, [r3] + add r3, #0xa + cmp r2, #8 + blt _0223DC14 + bx lr + .align 2, 0 +_0223DC24: .word 0x00001BA0 + + thumb_func_start MOD12_0223DC28 +MOD12_0223DC28: ; 0x0223DC28 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _0223DCAC ; =0x00001070 + add r6, r1, #0 + add r7, r5, r0 + mov r0, #0x28 + mul r0, r6 + str r0, [sp, #4] + ldr r0, [r7, r0] + str r2, [sp] + cmp r0, #0 + beq _0223DC46 + bl ErrorHandling +_0223DC46: + ldr r0, _0223DCB0 ; =0x0000106C + mov r2, #0x28 + add r4, r6, #0 + add r0, r5, r0 + mul r4, r2 + str r0, [sp, #8] + add r0, r0, r4 + mov r1, #0 + bl MI_CpuFill8 + ldr r0, [sp, #8] + ldr r2, _0223DCB4 ; =0x00001086 + str r5, [r0, r4] + add r3, r5, r4 + ldr r0, [sp] + strb r6, [r3, r2] + sub r1, r2, #1 + strb r0, [r3, r1] + lsl r0, r6, #2 + add r0, r5, r0 + add r1, r2, #0 + ldr r0, [r0, #0x5c] + sub r1, #0x12 + str r0, [r3, r1] + add r0, r5, #0 + add r0, #0x18 + lsl r1, r6, #4 + add r1, r0, r1 + add r0, r2, #0 + sub r0, #0xe + str r1, [r3, r0] + add r2, #0xa + add r0, r5, r2 + ldrb r2, [r0, r4] + mov r1, #4 + orr r1, r2 + strb r1, [r0, r4] + ldrb r2, [r0, r4] + mov r1, #8 + orr r1, r2 + strb r1, [r0, r4] + ldr r1, [sp, #8] + ldr r0, _0223DCB8 ; =MOD12_0223DE10 + ldr r2, _0223DCBC ; =0x00009858 + add r1, r1, r4 + bl FUN_0200CA44 + ldr r1, [sp, #4] + str r0, [r7, r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223DCAC: .word 0x00001070 +_0223DCB0: .word 0x0000106C +_0223DCB4: .word 0x00001086 +_0223DCB8: .word MOD12_0223DE10 +_0223DCBC: .word 0x00009858 + + thumb_func_start MOD12_0223DCC0 +MOD12_0223DCC0: ; 0x0223DCC0 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _0223DCE4 ; =0x00001070 + add r5, r0, #0 + add r6, r4, #0 +_0223DCCA: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223DCD8 + bl FUN_0200CAB4 + ldr r0, _0223DCE4 ; =0x00001070 + str r6, [r5, r0] +_0223DCD8: + add r4, r4, #1 + add r5, #0x28 + cmp r4, #4 + blt _0223DCCA + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DCE4: .word 0x00001070 + + thumb_func_start MOD12_0223DCE8 +MOD12_0223DCE8: ; 0x0223DCE8 + push {r3, r4, r5, lr} + mov r3, #0x28 + mul r3, r1 + ldr r1, _0223DDAC ; =0x00001070 + add r4, r0, r3 + ldr r5, [r4, r1] + cmp r5, #0 + beq _0223DDA8 + cmp r2, #5 + bhi _0223DDA4 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223DD08: ; jump table + .short _0223DD14 - _0223DD08 - 2 ; case 0 + .short _0223DD2A - _0223DD08 - 2 ; case 1 + .short _0223DD38 - _0223DD08 - 2 ; case 2 + .short _0223DD46 - _0223DD08 - 2 ; case 3 + .short _0223DD64 - _0223DD08 - 2 ; case 4 + .short _0223DD92 - _0223DD08 - 2 ; case 5 +_0223DD14: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #0x20 + bic r1, r0 + strb r1, [r2, r3] + ldrb r1, [r2, r3] + mov r0, #0x10 + bic r1, r0 + strb r1, [r2, r3] + pop {r3, r4, r5, pc} +_0223DD2A: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #0x20 + orr r0, r1 + strb r0, [r2, r3] + pop {r3, r4, r5, pc} +_0223DD38: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #0x10 + orr r0, r1 + strb r0, [r2, r3] + pop {r3, r4, r5, pc} +_0223DD46: + add r1, #0x20 + add r0, r0, r1 + ldrb r2, [r0, r3] + mov r1, #2 + bic r2, r1 + strb r2, [r0, r3] + ldrb r2, [r0, r3] + mov r1, #1 + bic r2, r1 + strb r2, [r0, r3] + ldrb r2, [r0, r3] + mov r1, #4 + orr r1, r2 + strb r1, [r0, r3] + pop {r3, r4, r5, pc} +_0223DD64: + add r2, r1, #0 + add r2, #0x20 + ldrb r2, [r4, r2] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1f + bne _0223DDA8 + add r2, r1, #0 + add r2, #0x20 + add r5, r0, r2 + ldrb r2, [r5, r3] + mov r0, #2 + orr r0, r2 + strb r0, [r5, r3] + ldrb r0, [r5, r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0223DDA8 + add r0, r1, #0 + add r0, #0x10 + ldr r0, [r4, r0] + add r1, #0x1c + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_0223DD92: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r2, r3] + pop {r3, r4, r5, pc} +_0223DDA4: + bl ErrorHandling +_0223DDA8: + pop {r3, r4, r5, pc} + nop +_0223DDAC: .word 0x00001070 + + thumb_func_start MOD12_0223DDB0 +MOD12_0223DDB0: ; 0x0223DDB0 + mov r2, #0x28 + mul r2, r1 + ldr r1, _0223DDE0 ; =0x00001070 + add r2, r0, r2 + ldr r0, [r2, r1] + cmp r0, #0 + bne _0223DDC2 + mov r0, #1 + bx lr +_0223DDC2: + add r0, r1, #0 + add r0, #0x20 + ldrb r0, [r2, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + cmp r0, #1 + beq _0223DDD8 + add r1, #0x15 + ldrb r0, [r2, r1] + cmp r0, #0 + bne _0223DDDC +_0223DDD8: + mov r0, #1 + bx lr +_0223DDDC: + mov r0, #0 + bx lr + .align 2, 0 +_0223DDE0: .word 0x00001070 + + thumb_func_start MOD12_0223DDE4 +MOD12_0223DDE4: ; 0x0223DDE4 + mov r2, #0x28 + mul r2, r1 + add r2, r0, r2 + ldr r0, _0223DE0C ; =0x00001070 + ldr r1, [r2, r0] + cmp r1, #0 + bne _0223DDF6 + mov r0, #1 + bx lr +_0223DDF6: + add r0, #0x20 + ldrb r0, [r2, r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223DE06 + mov r0, #1 + bx lr +_0223DE06: + mov r0, #0 + bx lr + nop +_0223DE0C: .word 0x00001070 + + thumb_func_start MOD12_0223DE10 +MOD12_0223DE10: ; 0x0223DE10 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD12_0223DE24 + add r0, r4, #0 + bl MOD12_0223DF18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223DE24 +MOD12_0223DE24: ; 0x0223DE24 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r0, #0x24 + ldrb r0, [r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + cmp r0, #1 + beq _0223DF00 + ldrb r0, [r4, #0x19] + cmp r0, #0 + beq _0223DF00 + ldr r5, [r4] + ldr r1, _0223DF04 ; =0x00001138 + ldr r2, _0223DF08 ; =0x00002710 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r3, #0 + bl _ll_mul + ldr r2, _0223DF0C ; =0x00000AE8 + mov r3, #0 + ldr r7, [r5, r2] + add r2, r7, #0 + bl _ull_mod + add r5, r0, #0 + add r6, r1, #0 + lsr r7, r7, #1 + lsr r0, r5, #0x13 + lsl r1, r6, #0xd + orr r1, r0 + lsl r0, r5, #0xd + add r2, r7, #0 + mov r3, #0 + bl _ll_udiv + add r2, r1, #0 + mov r1, #1 + sub r3, r5, r7 + ldr r3, _0223DF10 ; =0x00000000 + sbc r6, r3 + blo _0223DE80 + lsl r3, r1, #0xe + mov r1, #0 + sub r0, r3, r0 +_0223DE80: + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + ldr r3, _0223DF14 ; =0xFFFD8000 + mov r5, #0x40 + add r0, r0, r3 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + lsl r2, r2, #0x19 + lsr r2, r2, #0x1f + bic r0, r5 + lsl r5, r1, #0x18 + lsr r5, r5, #0x18 + lsl r5, r5, #0x1f + lsr r5, r5, #0x19 + orr r5, r0 + add r0, r4, #0 + add r0, #0x24 + strb r5, [r0] + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223DEEA + ldr r0, [r4, #0x10] + cmp r0, r3 + beq _0223DEC6 + cmp r2, #0 + bne _0223DEEA + cmp r1, #1 + bne _0223DEEA +_0223DEC6: + ldr r0, _0223DF14 ; =0xFFFD8000 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x24 + ldrb r1, [r0] + mov r0, #0x10 + bic r1, r0 + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x24 + ldrb r1, [r0] + mov r0, #0x20 + orr r1, r0 + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] +_0223DEEA: + ldr r1, [r4, #0x10] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r4, #0xc] + str r1, [r0, #0xc] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + bl MOD12_0223D09C +_0223DF00: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DF04: .word 0x00001138 +_0223DF08: .word 0x00002710 +_0223DF0C: .word 0x00000AE8 +_0223DF10: .word 0x00000000 +_0223DF14: .word 0xFFFD8000 + + thumb_func_start MOD12_0223DF18 +MOD12_0223DF18: ; 0x0223DF18 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r2, [r4] + ldr r1, _0223E058 ; =0x00001138 + mov r3, #0 + ldr r0, [r2, r1] + add r1, r1, #4 + ldr r1, [r2, r1] + ldr r2, _0223E05C ; =0x00002710 + ldr r5, [r4, #0x14] + bl _ll_mul + ldr r3, [r4] + ldr r2, _0223E060 ; =0x00000AE8 + ldr r2, [r3, r2] + mov r3, #0 + lsl r2, r2, #1 + bl _ull_mod + mov r2, #0x5a + lsl r2, r2, #2 + mov r3, #0 + bl _ll_mul + ldr r3, [r4] + ldr r2, _0223E060 ; =0x00000AE8 + ldr r2, [r3, r2] + mov r3, #0 + lsl r2, r2, #1 + bl _ll_udiv + lsr r2, r0, #0x18 + lsl r1, r1, #8 + orr r1, r2 + lsl r0, r0, #8 + add r2, r4, #0 + str r0, [r4, #0x14] + add r2, #0x24 + ldrb r2, [r2] + lsl r3, r2, #0x1e + lsr r3, r3, #0x1f + bne _0223E054 + lsl r2, r2, #0x1c + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223DF86 + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + mov r3, #8 + add r5, r0, #0 + bic r2, r3 + add r3, r4, #0 + add r3, #0x24 + strb r2, [r3] +_0223DF86: + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223DFCE + mov r2, #0 + sub r3, r0, r5 + mov ip, r1 + mov r3, ip + sbc r3, r2 + bhs _0223DFA4 + add r7, r5, r0 + b _0223DFA6 +_0223DFA4: + add r7, r0, #0 +_0223DFA6: + ldr r6, [r4, #0x20] + mov r2, #0 + add r3, r2, #0 + add r2, r6, #0 + eor r3, r1 + eor r2, r0 + orr r2, r3 + beq _0223DFBE + cmp r5, r6 + bhi _0223E054 + cmp r6, r7 + bhi _0223E054 +_0223DFBE: + add r2, r4, #0 + add r2, #0x24 + ldrb r3, [r2] + mov r2, #4 + bic r3, r2 + add r2, r4, #0 + add r2, #0x24 + strb r3, [r2] +_0223DFCE: + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + lsl r2, r2, #0x1f + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223E014 + mov r3, #0 + mov r2, #0 + eor r3, r1 + eor r2, r0 + orr r2, r3 + beq _0223DFF0 + mov r2, #0 + sub r0, r0, r5 + sbc r1, r2 + bhs _0223E014 +_0223DFF0: + add r1, r4, #0 + add r1, #0x24 + ldrb r2, [r1] + mov r1, #1 + mov r0, #0 + bic r2, r1 + add r1, r4, #0 + add r1, #0x24 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x24 + ldrb r2, [r1] + mov r1, #2 + orr r2, r1 + add r1, r4, #0 + add r1, #0x24 + strb r2, [r1] + str r0, [r4, #0x20] +_0223E014: + ldrb r0, [r4, #0x19] + cmp r0, #0 + bne _0223E01C + b _0223E01C +_0223E01C: + ldr r0, [r4, #0x14] + mov r5, #3 + lsl r0, r0, #8 + lsr r0, r0, #0x10 + bl FUN_0201B954 + add r1, r5, #0 + mul r1, r0 + ldrb r2, [r4, #0x19] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + mov r1, #6 + add r3, r2, #0 + mul r3, r1 + ldr r1, _0223E064 ; =0x022461F4 + asr r0, r0, #0xc + ldrsh r1, [r1, r3] + add r0, r0, r1 + sub r1, r0, r5 + ldr r0, [r4, #0xc] + str r1, [r0, #4] + ldr r2, [r4, #0xc] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 +_0223E054: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E058: .word 0x00001138 +_0223E05C: .word 0x00002710 +_0223E060: .word 0x00000AE8 +_0223E064: .word 0x022461F4 + + thumb_func_start MOD12_0223E068 +MOD12_0223E068: ; 0x0223E068 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + cmp r6, #0 + beq _0223E07E + cmp r5, #0 + bne _0223E07E + bl ErrorHandling +_0223E07E: + cmp r6, #6 + bls _0223E084 + b _0223E1E4 +_0223E084: + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223E090: ; jump table + .short _0223E1E8 - _0223E090 - 2 ; case 0 + .short _0223E09E - _0223E090 - 2 ; case 1 + .short _0223E0BA - _0223E090 - 2 ; case 2 + .short _0223E0DE - _0223E090 - 2 ; case 3 + .short _0223E0F4 - _0223E090 - 2 ; case 4 + .short _0223E138 - _0223E090 - 2 ; case 5 + .short _0223E16A - _0223E090 - 2 ; case 6 +_0223E09E: + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E0BA: + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r4] + add r1, r2, #1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200B278 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E0DE: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + add r4, #0x9c + ldrb r2, [r5, #4] + ldr r0, [r4] + bl FUN_0200AD38 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E0F4: + ldrb r6, [r5] + ldr r3, [r4] + mov r0, #1 + lsl r2, r6, #2 + str r0, [sp] + mov r0, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #2 + add r0, #0x9c + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E138: + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + add r4, #0x9c + ldrb r2, [r5, #4] + ldr r0, [r4] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E16A: + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r4] + add r1, r2, #1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200B278 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + add r0, r4, #0 + add r0, #0x9c + ldrb r2, [r5, #4] + ldr r0, [r0] + add r3, r1, #0 + bl FUN_0200AD38 + ldrb r6, [r5] + ldr r3, [r4] + mov r0, #1 + lsl r2, r6, #2 + str r0, [sp] + mov r1, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + add r0, r4, #0 + str r1, [sp, #4] + lsl r3, r3, #2 + add r0, #0x9c + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #3 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E1E4: + bl ErrorHandling +_0223E1E8: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223E1EC +MOD12_0223E1EC: ; 0x0223E1EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r0, _0223E268 ; =0x00000171 + add r7, r2, #0 + ldrb r0, [r1, r0] + str r3, [sp, #0xc] + cmp r0, #0 + bne _0223E20E + ldr r0, _0223E26C ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _0223E210 +_0223E20E: + mov r4, #1 +_0223E210: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD12_0223E068 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x9c + add r1, #0xa0 + ldr r0, [r0] + ldr r1, [r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x78 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + add r2, r5, #0 + add r0, r5, #0 + str r3, [sp, #8] + add r2, #0xa0 + ldr r2, [r2] + add r0, #0x78 + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _0223E270 ; =0x00000AB8 + strb r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E268: .word 0x00000171 +_0223E26C: .word 0x00001988 +_0223E270: .word 0x00000AB8 + + thumb_func_start MOD12_0223E274 +MOD12_0223E274: ; 0x0223E274 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #8 + blo _0223E286 + bl ErrorHandling +_0223E286: + lsl r3, r4, #2 + ldr r2, _0223E2A0 ; =0x02246224 + add r0, r5, #0 + ldr r4, _0223E2A4 ; =0x02246226 + ldrh r2, [r2, r3] + str r6, [sp] + add r5, #0x98 + ldrb r3, [r4, r3] + ldr r1, [r5] + bl MOD12_0223E1EC + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223E2A0: .word 0x02246224 +_0223E2A4: .word 0x02246226 + + thumb_func_start MOD12_0223E2A8 +MOD12_0223E2A8: ; 0x0223E2A8 + ldr r1, _0223E2B0 ; =0x00000AB8 + ldr r3, _0223E2B4 ; =0x0201BD71 + ldrb r0, [r0, r1] + bx r3 + .align 2, 0 +_0223E2B0: .word 0x00000AB8 +_0223E2B4: .word 0x0201BD71 + + thumb_func_start MOD12_0223E2B8 +MOD12_0223E2B8: ; 0x0223E2B8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223E300 ; =0x000080F1 + mov r3, #0x4c + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223E304 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x4d + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223E304 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x4e + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223E300: .word 0x000080F1 +_0223E304: .word 0x000080EE + + thumb_func_start MOD12_0223E308 +MOD12_0223E308: ; 0x0223E308 + push {r4, lr} + ldr r1, _0223E324 ; =0x000080F1 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223E328 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223E328 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223E324: .word 0x000080F1 +_0223E328: .word 0x000080EE + + thumb_func_start MOD12_0223E32C +MOD12_0223E32C: ; 0x0223E32C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0223E33E + bl ErrorHandling +_0223E33E: + mov r0, #0x17 + mov r1, #0x10 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x10 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x21 + lsl r0, r0, #4 + str r4, [r5, r0] + str r5, [r4, #8] + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + ldr r2, _0223E380 ; =0x02246278 + bl FUN_0200C154 + str r0, [r4, #4] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200C644 + ldr r0, _0223E384 ; =MOD12_0223E3BC + ldr r2, _0223E388 ; =0x00009C4F + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E380: .word 0x02246278 +_0223E384: .word MOD12_0223E3BC +_0223E388: .word 0x00009C4F + + thumb_func_start MOD12_0223E38C +MOD12_0223E38C: ; 0x0223E38C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_0200CAB4 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #4] + bl FUN_0200C3DC + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x21 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + pop {r4, pc} + + thumb_func_start MOD12_0223E3BC +MOD12_0223E3BC: ; 0x0223E3BC + ldrb r0, [r1, #0xc] + cmp r0, #0 + beq _0223E3CA + cmp r0, #1 + beq _0223E3CE + cmp r0, #2 + b _0223E3CE +_0223E3CA: + add r0, r0, #1 + strb r0, [r1, #0xc] +_0223E3CE: + ldr r0, [r1, #4] + ldr r3, _0223E3D8 ; =0x0200C59D + ldr r0, [r0] + bx r3 + nop +_0223E3D8: .word 0x0200C59D + + thumb_func_start MOD12_0223E3DC +MOD12_0223E3DC: ; 0x0223E3DC + push {r4, r5, r6, lr} + add r5, r0, #0 + lsl r0, r1, #8 + add r1, r2, #0 + bl _u32_div_f + ldr r1, _0223E434 ; =0x00002710 + add r4, r0, #0 + mul r0, r1 + lsl r1, r1, #4 + mov r6, #0x90 + bl _u32_div_f + mov r0, #0xb4 + mul r0, r1 + ldr r1, _0223E438 ; =0x00027100 + bl _u32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + mov r1, #0xa + mul r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + sub r2, r6, r0 + lsl r1, r4, #0x10 + lsl r2, r2, #0x10 + mov r3, #1 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_0200C644 + pop {r4, r5, r6, pc} + nop +_0223E434: .word 0x00002710 +_0223E438: .word 0x00027100 + + thumb_func_start MOD12_0223E43C +MOD12_0223E43C: ; 0x0223E43C + ldr r3, _0223E444 ; =0x0200C645 + ldr r0, [r0, #4] + mov r1, #0 + bx r3 + .align 2, 0 +_0223E444: .word 0x0200C645 + + thumb_func_start MOD12_0223E448 +MOD12_0223E448: ; 0x0223E448 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0200C644 + mov r3, #1 + ldr r0, [r4, #4] + mov r1, #0 + mov r2, #0x90 + lsl r3, r3, #0x14 + bl FUN_0200C750 + pop {r4, pc} + + thumb_func_start MOD12_0223E464 +MOD12_0223E464: ; 0x0223E464 + push {r3, r4} + ldr r2, _0223E484 ; =0x022461E0 + add r1, sp, #0 + ldrb r3, [r2] + add r4, sp, #0 + strb r3, [r1] + ldrb r3, [r2, #1] + strb r3, [r1, #1] + ldrb r3, [r2, #2] + ldrb r2, [r2, #3] + strb r3, [r1, #2] + strb r2, [r1, #3] + ldrb r0, [r4, r0] + pop {r3, r4} + bx lr + nop +_0223E484: .word 0x022461E0 + + thumb_func_start MOD12_0223E488 +MOD12_0223E488: ; 0x0223E488 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r7, r2, #0 + cmp r4, #8 + blo _0223E49A + bl ErrorHandling +_0223E49A: + ldr r0, _0223E51C ; =0x00001BF1 + ldrb r0, [r5, r0] + cmp r0, #1 + beq _0223E516 + add r0, r5, #0 + mov r1, #1 + add r0, #0x88 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r5, #0x74] + mov r1, #1 + bl FUN_0201AC68 + add r0, r5, #0 + add r0, #0x98 + ldr r1, _0223E520 ; =0x02246224 + lsl r4, r4, #2 + ldrh r1, [r1, r4] + ldr r0, [r0] + bl FUN_0200A914 + ldr r1, _0223E524 ; =0x02246226 + add r6, r0, #0 + ldrb r1, [r1, r4] + add r0, r5, #0 + add r2, r7, #0 + bl MOD12_0223E068 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x9c + add r1, #0xa0 + ldr r0, [r0] + ldr r1, [r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x88 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r2, r5, #0 + add r0, r5, #0 + str r3, [sp, #8] + add r2, #0xa0 + ldr r2, [r2] + add r0, #0x88 + mov r1, #1 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _0223E51C ; =0x00001BF1 + mov r1, #1 + strb r1, [r5, r0] +_0223E516: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223E51C: .word 0x00001BF1 +_0223E520: .word 0x02246224 +_0223E524: .word 0x02246226 + + thumb_func_start MOD12_0223E528 +MOD12_0223E528: ; 0x0223E528 + push {r4, lr} + add r4, r0, #0 + add r0, #0x88 + mov r1, #1 + bl FUN_0200D0E0 + ldr r0, [r4, #0x74] + mov r1, #1 + bl FUN_0201AC68 + ldr r0, _0223E544 ; =0x00001BF1 + mov r1, #0 + strb r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_0223E544: .word 0x00001BF1 + + thumb_func_start MOD12_0223E548 +MOD12_0223E548: ; 0x0223E548 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0223E584 ; =0x00000AEC + ldrb r1, [r1, #4] + ldr r3, [r5, r0] + add r6, r2, #0 + mul r1, r3 + mul r6, r1 + add r1, r0, #4 + add r0, #8 + ldr r1, [r5, r1] + ldr r0, [r5, r0] + mov r4, #0 + add r0, r1, r0 + mul r0, r2 + add r0, r1, r0 + ldr r1, _0223E588 ; =0x00002710 + bl _u32_div_f + add r1, r4, #0 + add r3, r6, r0 + ldr r0, _0223E58C ; =0x00001138 + adc r4, r1 + ldr r2, [r5, r0] + add r0, r0, #4 + ldr r1, [r5, r0] + sub r0, r3, r2 + sbc r4, r1 + add r1, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223E584: .word 0x00000AEC +_0223E588: .word 0x00002710 +_0223E58C: .word 0x00001138 + + thumb_func_start MOD12_0223E590 +MOD12_0223E590: ; 0x0223E590 + ldr r3, _0223E594 ; =MOD12_0223E548 + bx r3 + .align 2, 0 +_0223E594: .word MOD12_0223E548 + + thumb_func_start MOD12_0223E598 +MOD12_0223E598: ; 0x0223E598 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + mov r0, #0 + strb r0, [r7] + mov r0, #0x17 + mov r1, #0x2c + bl FUN_02016998 + mov r1, #0 + mov r2, #0x2c + add r4, r0, #0 + bl MI_CpuFill8 + add r1, r6, #0 + add r1, #0x18 + lsl r0, r5, #4 + str r6, [r4] + add r0, r1, r0 + str r0, [r4, #4] + mov r0, #0x85 + lsl r0, r0, #2 + add r1, r6, r0 + mov r0, #0x18 + mul r0, r5 + add r0, r1, r0 + str r0, [r4, #8] + ldr r0, _0223E5F4 ; =0x00000AB4 + str r7, [r4, #0xc] + add r1, r6, r5 + ldrb r0, [r1, r0] + ldr r2, _0223E5F8 ; =0x00009C40 + cmp r0, #1 + bne _0223E5E8 + ldr r0, _0223E5FC ; =MOD12_0223E604 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_0223E5E8: + ldr r0, _0223E600 ; =MOD12_0223E6A4 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E5F4: .word 0x00000AB4 +_0223E5F8: .word 0x00009C40 +_0223E5FC: .word MOD12_0223E604 +_0223E600: .word MOD12_0223E6A4 + + thumb_func_start MOD12_0223E604 +MOD12_0223E604: ; 0x0223E604 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223E616 + cmp r0, #1 + beq _0223E636 + b _0223E686 +_0223E616: + ldr r0, [r4, #8] + mov r1, #1 + mov r2, #0 + bl MOD12_0223CD38 + ldr r0, [r4, #4] + ldr r0, [r0, #8] + lsl r0, r0, #8 + str r0, [r4, #0x1c] + str r0, [r4, #0x18] + mov r0, #5 + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223E636: + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + str r0, [r4, #0x18] + mov r0, #2 + ldr r1, [r4, #0x14] + lsl r0, r0, #8 + sub r0, r1, r0 + str r0, [r4, #0x14] + ldr r1, [r4, #0x1c] + ldr r0, [r4, #0x18] + cmp r0, r1 + blt _0223E66A + str r1, [r4, #0x18] + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x11] + cmp r0, #1 + bls _0223E666 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + b _0223E66A +_0223E666: + mov r0, #0 + strb r0, [r4, #0x10] +_0223E66A: + ldr r1, [r4, #0x18] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r4, #4] + str r1, [r0, #8] + ldr r2, [r4, #4] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 + pop {r3, r4, r5, pc} +_0223E686: + ldr r0, [r4, #0xc] + mov r1, #1 + strb r1, [r0] + ldr r0, [r4, #8] + add r2, r1, #0 + bl MOD12_0223CD38 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223E6A4 +MOD12_0223E6A4: ; 0x0223E6A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223E6B6 + cmp r0, #1 + beq _0223E6C6 + b _0223E720 +_0223E6B6: + ldr r0, [r4, #4] + ldr r0, [r0, #4] + lsl r0, r0, #8 + str r0, [r4, #0x28] + str r0, [r4, #0x24] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223E6C6: + ldr r0, [r4, #0x20] + bl FUN_0201B9B8 + lsl r1, r0, #2 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + mov r1, #0x32 + ldr r2, [r4, #0x20] + lsl r1, r1, #0xc + add r1, r2, r1 + str r1, [r4, #0x20] + asr r2, r1, #0xc + mov r1, #0x5a + lsl r1, r1, #2 + asr r0, r0, #0xc + cmp r2, r1 + blt _0223E702 + ldrb r1, [r4, #0x11] + add r1, r1, #1 + strb r1, [r4, #0x11] + ldrb r1, [r4, #0x11] + cmp r1, #5 + bls _0223E702 + ldr r0, [r4, #0x28] + str r0, [r4, #0x24] + ldrb r1, [r4, #0x10] + mov r0, #0 + add r1, r1, #1 + strb r1, [r4, #0x10] +_0223E702: + ldr r2, [r4, #0x24] + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + add r1, r1, r0 + ldr r0, [r4, #4] + str r1, [r0, #4] + ldr r2, [r4, #4] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 + pop {r3, r4, r5, pc} +_0223E720: + ldr r0, [r4, #0xc] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223E734 +MOD12_0223E734: ; 0x0223E734 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223E738 +MOD12_0223E738: ; 0x0223E738 + push {r3, lr} + ldr r0, _0223E74C ; =0x04000050 + mov r3, #0 + mov r1, #1 + mov r2, #0x3e + str r3, [sp] + bl G2x_SetBlendAlpha_ + pop {r3, pc} + nop +_0223E74C: .word 0x04000050 + + thumb_func_start MOD12_0223E750 +MOD12_0223E750: ; 0x0223E750 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r0, #0xa4 + add r5, r1, #0 + ldr r0, [r0] + mov r1, #0 + bl FUN_020031FC + ldr r3, _0223E77C ; =0x0224620C + lsl r5, r5, #2 + ldrh r1, [r3, r5] + add r3, r3, r5 + ldr r2, _0223E780 ; =0x00001FE3 + str r1, [sp] + ldrh r3, [r3, #2] + ldr r1, _0223E784 ; =0x0000110C + lsl r3, r3, #0x18 + ldr r1, [r4, r1] + lsr r3, r3, #0x18 + bl FUN_02003A30 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E77C: .word 0x0224620C +_0223E780: .word 0x00001FE3 +_0223E784: .word 0x0000110C + + thumb_func_start MOD12_0223E788 +MOD12_0223E788: ; 0x0223E788 + push {r3, lr} + ldrb r2, [r1, #7] + cmp r2, #0 + bne _0223E7D0 + ldrb r2, [r1, #4] + cmp r2, #0 + beq _0223E79E + cmp r2, #1 + beq _0223E79E + cmp r2, #2 + b _0223E7CA +_0223E79E: + ldrb r2, [r1, #3] + cmp r2, #4 + bhi _0223E7CC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223E7B0: ; jump table + .short _0223E7CC - _0223E7B0 - 2 ; case 0 + .short _0223E7BA - _0223E7B0 - 2 ; case 1 + .short _0223E7BE - _0223E7B0 - 2 ; case 2 + .short _0223E7C2 - _0223E7B0 - 2 ; case 3 + .short _0223E7C6 - _0223E7B0 - 2 ; case 4 +_0223E7BA: + mov r1, #1 + b _0223E7CC +_0223E7BE: + mov r1, #2 + b _0223E7CC +_0223E7C2: + mov r1, #3 + b _0223E7CC +_0223E7C6: + mov r1, #4 + b _0223E7CC +_0223E7CA: + mov r1, #5 +_0223E7CC: + bl MOD12_0223E750 +_0223E7D0: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223E7D4 +MOD12_0223E7D4: ; 0x0223E7D4 + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + ldr r1, _0223E844 ; =0x00000AE8 + mov ip, r0 + ldr r0, [r0, r1] + ldr r1, _0223E848 ; =0x00001BA0 + lsr r7, r0, #1 + mov r0, ip + add r3, r0, r1 + ldr r1, _0223E84C ; =0x04000280 + mov r6, #0 + mov r4, ip + lsr r0, r1, #0xb +_0223E7EE: + ldrb r2, [r3] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223E836 + ldr r2, _0223E850 ; =0x00001B9E + mov r5, #0 + ldrb r2, [r4, r2] + add r2, #0x10 + strh r5, [r1] + ldr r5, _0223E854 ; =0x04000290 + mul r2, r7 + str r2, [r5] + ldr r5, _0223E858 ; =0x00002710 + ldr r2, _0223E85C ; =0x04000298 + str r5, [r2] + mov r5, #0 + str r5, [r2, #4] +_0223E812: + ldrh r2, [r1] + tst r2, r0 + bne _0223E812 + ldr r2, _0223E860 ; =0x040002A0 + ldr r5, [r2] + ldr r2, [sp] + cmp r5, r2 + bne _0223E836 + ldr r2, _0223E864 ; =0x00001B98 + mov r1, ip + add r2, r1, r2 + mov r1, #0xa + mul r1, r6 + mov r0, ip + add r1, r2, r1 + bl MOD12_0223E788 + pop {r3, r4, r5, r6, r7, pc} +_0223E836: + add r6, r6, #1 + add r3, #0xa + add r4, #0xa + cmp r6, #8 + blt _0223E7EE + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E844: .word 0x00000AE8 +_0223E848: .word 0x00001BA0 +_0223E84C: .word 0x04000280 +_0223E850: .word 0x00001B9E +_0223E854: .word 0x04000290 +_0223E858: .word 0x00002710 +_0223E85C: .word 0x04000298 +_0223E860: .word 0x040002A0 +_0223E864: .word 0x00001B98 + + thumb_func_start MOD12_0223E868 +MOD12_0223E868: ; 0x0223E868 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223E87A + bl ErrorHandling +_0223E87A: + mov r0, #0x81 + lsl r0, r0, #2 + add r5, r4, r0 + ldr r0, _0223E890 ; =MOD12_0223E8EC + ldr r2, _0223E894 ; =0x00009C40 + add r1, r5, #0 + str r4, [r5] + bl FUN_0200CA44 + str r0, [r5, #4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E890: .word MOD12_0223E8EC +_0223E894: .word 0x00009C40 + + thumb_func_start MOD12_0223E898 +MOD12_0223E898: ; 0x0223E898 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223E8B2 + bl FUN_0200CAB4 + mov r0, #0x82 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_0223E8B2: + pop {r4, pc} + + thumb_func_start MOD12_0223E8B4 +MOD12_0223E8B4: ; 0x0223E8B4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x81 + lsl r1, r1, #2 + add r4, r0, r1 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0223E8C8 + bl ErrorHandling +_0223E8C8: + cmp r5, #0 + bne _0223E8D0 + mov r0, #0x40 + b _0223E8D2 +_0223E8D0: + mov r0, #0x30 +_0223E8D2: + strb r0, [r4, #0xa] + mov r0, #1 + strb r0, [r4, #0xb] + mov r0, #0xa + lsl r0, r0, #8 + strh r0, [r4, #8] + ldr r0, _0223E8E8 ; =0x000006F8 + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_0223E8E8: .word 0x000006F8 + + thumb_func_start MOD12_0223E8EC +MOD12_0223E8EC: ; 0x0223E8EC + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0223E946 + ldr r0, [r4] + mov r1, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_020031FC + ldrb r1, [r4, #0xa] + lsl r3, r1, #1 + ldr r1, _0223E94C ; =0x00007FFF + add r0, r0, r3 + str r1, [sp] + ldr r2, [r4] + ldr r1, _0223E950 ; =0x0000110C + ldr r1, [r2, r1] + mov r2, #0x10 + add r1, r1, r3 + ldrh r3, [r4, #8] + asr r3, r3, #8 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02003974 + ldrh r1, [r4, #8] + cmp r1, #0 + bne _0223E932 + mov r0, #0 + add sp, #4 + strb r0, [r4, #0xb] + pop {r3, r4, pc} +_0223E932: + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + bls _0223E942 + sub r0, r1, r0 + add sp, #4 + strh r0, [r4, #8] + pop {r3, r4, pc} +_0223E942: + mov r0, #0 + strh r0, [r4, #8] +_0223E946: + add sp, #4 + pop {r3, r4, pc} + nop +_0223E94C: .word 0x00007FFF +_0223E950: .word 0x0000110C + + thumb_func_start MOD12_0223E954 +MOD12_0223E954: ; 0x0223E954 + push {r3, r4, r5, lr} + ldr r5, _0223E97C ; =0x00001120 + add r4, r0, #0 + str r2, [r4, r5] + add r0, r5, #4 + str r3, [r4, r0] + add r0, r5, #0 + ldr r2, [sp, #0x10] + add r0, #8 + str r2, [r4, r0] + ldr r0, [sp, #0x14] + add r5, #0xc + str r0, [r4, r5] + ldr r0, [r4, #0xc] + ldr r2, _0223E980 ; =MOD12_0223E984 + add r3, r4, #0 + bl FUN_020133AC + pop {r3, r4, r5, pc} + nop +_0223E97C: .word 0x00001120 +_0223E980: .word MOD12_0223E984 + + thumb_func_start MOD12_0223E984 +MOD12_0223E984: ; 0x0223E984 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201341C + ldr r1, _0223E9C0 ; =0x00001120 + add r1, r0, r1 + ldr r0, [r4, #0x20] + ldr r2, [r1] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r2, r0 + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + ldr r2, [r1, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r2, r0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x20] + ldr r2, [r1, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r2, r0 + str r0, [r4, #0x30] + ldr r1, [r1, #0xc] + add r0, r4, #0 + bl FUN_02013450 + pop {r4, pc} + nop +_0223E9C0: .word 0x00001120 + + thumb_func_start MOD12_0223E9C4 +MOD12_0223E9C4: ; 0x0223E9C4 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + add r6, r2, #0 + cmp r5, #0x21 + blo _0223E9D6 + bl ErrorHandling +_0223E9D6: + ldr r0, _0223EA3C ; =0x0224637C + lsl r1, r5, #2 + ldr r5, [r0, r1] + cmp r6, #0 + ldr r0, _0223EA40 ; =0xFFFFEB80 + ldr r3, _0223EA44 ; =0xFFFFBADC + bne _0223EA10 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl MOD12_0223E954 + ldr r0, _0223EA40 ; =0xFFFFEB80 + ldr r3, _0223EA44 ; =0xFFFFBADC + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #1 + add r2, r5, #0 + bl MOD12_0223E954 + add sp, #8 + pop {r4, r5, r6, pc} +_0223EA10: + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #2 + add r2, r5, #0 + bl MOD12_0223E954 + ldr r0, _0223EA40 ; =0xFFFFEB80 + ldr r3, _0223EA44 ; =0xFFFFBADC + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #3 + add r2, r5, #0 + bl MOD12_0223E954 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223EA3C: .word 0x0224637C +_0223EA40: .word 0xFFFFEB80 +_0223EA44: .word 0xFFFFBADC + + thumb_func_start MOD12_0223EA48 +MOD12_0223EA48: ; 0x0223EA48 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + cmp r1, #0 + ldr r1, _0223EBFC ; =0xFFFFEB80 + ldr r3, _0223EC00 ; =0xFFFFE764 + bne _0223EAD6 + str r1, [sp] + mov r1, #1 + lsl r1, r1, #0xc + str r1, [sp, #4] + ldr r2, _0223EC04 ; =0xFFFFCD38 + mov r1, #5 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC04 ; =0xFFFFCD38 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #6 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC04 ; =0xFFFFCD38 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #7 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC08 ; =0x00005014 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #5 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC08 ; =0x00005014 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #6 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC08 ; =0x00005014 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #7 + bl MOD12_0223E954 + b _0223EBAC +_0223EAD6: + str r1, [sp] + mov r1, #1 + lsl r1, r1, #0xc + str r1, [sp, #4] + ldr r2, _0223EC0C ; =0xFFFFBD98 + mov r1, #8 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #9 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xa + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xb + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xc + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #8 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #9 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xa + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xb + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xc + bl MOD12_0223E954 +_0223EBAC: + mov r0, #0 + str r0, [sp] + ldr r0, _0223EC14 ; =0x00007FFF + ldr r1, _0223EC18 ; =0x00001FE3 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #8 + mov r3, #0x10 + bl MOD12_0223EC4C + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r2, _0223EC14 ; =0x00007FFF + add r0, r4, #0 + str r2, [sp, #8] + add r0, #0xa4 + mov r1, #4 + ldr r0, [r0] + lsr r2, r2, #1 + sub r3, r1, #5 + bl FUN_02003210 + ldr r0, _0223EC1C ; =0x04000050 + mov r1, #0x3f + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + mov r2, #0xfa + ldr r0, _0223EC20 ; =MOD12_0223EC28 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + ldr r0, _0223EC24 ; =0x000006E5 + bl FUN_020054C8 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223EBFC: .word 0xFFFFEB80 +_0223EC00: .word 0xFFFFE764 +_0223EC04: .word 0xFFFFCD38 +_0223EC08: .word 0x00005014 +_0223EC0C: .word 0xFFFFBD98 +_0223EC10: .word 0x00004074 +_0223EC14: .word 0x00007FFF +_0223EC18: .word 0x00001FE3 +_0223EC1C: .word 0x04000050 +_0223EC20: .word MOD12_0223EC28 +_0223EC24: .word 0x000006E5 + + thumb_func_start MOD12_0223EC28 +MOD12_0223EC28: ; 0x0223EC28 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r3, #0 + ldr r0, _0223EC48 ; =0x04000050 + mov r1, #1 + mov r2, #0x3e + str r3, [sp] + bl G2x_SetBlendAlpha_ + add r0, r4, #0 + bl FUN_0200CAB4 + add sp, #4 + pop {r3, r4, pc} + nop +_0223EC48: .word 0x04000050 + + thumb_func_start MOD12_0223EC4C +MOD12_0223EC4C: ; 0x0223EC4C + push {r3, r4, r5, lr} + ldr r4, _0223EC78 ; =0x0000110C + ldr r5, [sp, #0x10] + add r4, r0, r4 + lsl r0, r3, #8 + strh r0, [r4, #8] + lsl r0, r5, #8 + strh r0, [r4, #0xa] + add r0, sp, #0 + ldrh r0, [r0, #0x14] + strh r0, [r4, #0xe] + sub r0, r5, r3 + strh r1, [r4, #6] + lsl r0, r0, #8 + add r1, r2, #0 + bl _u32_div_f + strh r0, [r4, #0xc] + mov r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} + nop +_0223EC78: .word 0x0000110C + + thumb_func_start MOD12_0223EC7C +MOD12_0223EC7C: ; 0x0223EC7C + ldr r2, _0223EC84 ; =0x0000111D + strb r1, [r0, r2] + bx lr + nop +_0223EC84: .word 0x0000111D + + thumb_func_start MOD12_0223EC88 +MOD12_0223EC88: ; 0x0223EC88 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + cmp r2, #0 + bne _0223EC98 + ldr r7, _0223ECC4 ; =0x00007FFF + ldr r6, _0223ECC8 ; =0x0000254A + b _0223EC9C +_0223EC98: + ldr r7, _0223ECC8 ; =0x0000254A + ldr r6, _0223ECC4 ; =0x00007FFF +_0223EC9C: + mov r4, #0 +_0223EC9E: + ldr r0, [sp] + cmp r4, r0 + ldr r0, [r5, #0x18] + bne _0223ECAE + add r1, r7, #0 + bl FUN_021DD6B8 + b _0223ECB4 +_0223ECAE: + add r1, r6, #0 + bl FUN_021DD6B8 +_0223ECB4: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0223EC9E + ldr r0, _0223ECCC ; =0x000006EC + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ECC4: .word 0x00007FFF +_0223ECC8: .word 0x0000254A +_0223ECCC: .word 0x000006EC + + thumb_func_start MOD12_0223ECD0 +MOD12_0223ECD0: ; 0x0223ECD0 + push {r4, r5, r6, lr} + ldr r6, _0223ECEC ; =0x00007FFF + add r5, r0, #0 + mov r4, #0 +_0223ECD8: + ldr r0, [r5, #0x18] + add r1, r6, #0 + bl FUN_021DD6B8 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0223ECD8 + pop {r4, r5, r6, pc} + nop +_0223ECEC: .word 0x00007FFF + + thumb_func_start MOD12_0223ECF0 +MOD12_0223ECF0: ; 0x0223ECF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0xc] + mov r4, #0 + add r5, sp, #0x18 + add r3, sp, #0x14 + ldr r2, _0223ED9C ; =0x00000ADA + b _0223ED0E +_0223ED00: + ldr r1, [sp, #0xc] + lsl r0, r4, #1 + add r1, r1, r0 + ldrsh r1, [r1, r2] + strb r4, [r3, r4] + add r4, r4, #1 + strh r1, [r5, r0] +_0223ED0E: + cmp r4, #4 + blt _0223ED00 + mov r4, #0 + add r7, sp, #0x18 + b _0223ED42 +_0223ED18: + mov r6, #3 + b _0223ED3C +_0223ED1C: + sub r3, r6, #1 + lsl r5, r3, #1 + lsl r1, r6, #1 + ldrsh r2, [r7, r5] + ldrsh r0, [r7, r1] + cmp r2, r0 + bge _0223ED3A + strh r2, [r7, r1] + strh r0, [r7, r5] + add r0, sp, #0x14 + add r1, sp, #0x14 + ldrb r0, [r0, r6] + ldrb r2, [r1, r3] + strb r2, [r1, r6] + strb r0, [r1, r3] +_0223ED3A: + sub r6, r6, #1 +_0223ED3C: + cmp r6, r4 + bgt _0223ED1C + add r4, r4, #1 +_0223ED42: + cmp r4, #3 + blt _0223ED18 + ldr r3, _0223EDA0 ; =0x02246400 + add r0, sp, #0x10 + ldrb r1, [r3] + mov r4, #1 + add r2, sp, #0x10 + strb r1, [r0] + add r1, sp, #0x18 + b _0223ED6E +_0223ED56: + ldrb r0, [r3, r4] + sub r6, r4, #1 + lsl r5, r6, #1 + strb r0, [r2, r4] + lsl r0, r4, #1 + ldrsh r0, [r1, r0] + ldrsh r5, [r1, r5] + cmp r0, r5 + bne _0223ED6C + ldrb r0, [r2, r6] + strb r0, [r2, r4] +_0223ED6C: + add r4, r4, #1 +_0223ED6E: + cmp r4, #4 + blt _0223ED56 + mov r4, #0 + add r5, sp, #0x10 + mov r6, #0x1e + add r7, r4, #0 + b _0223ED94 +_0223ED7C: + ldrb r0, [r5, r4] + add r1, sp, #0x14 + ldrb r1, [r1, r4] + str r0, [sp] + str r6, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _0223EDA4 ; =0x00007FFF + ldr r3, _0223EDA8 ; =0x0000254A + str r7, [sp, #8] + bl MOD12_0223EDAC + add r4, r4, #1 +_0223ED94: + cmp r4, #4 + blt _0223ED7C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ED9C: .word 0x00000ADA +_0223EDA0: .word 0x02246400 +_0223EDA4: .word 0x00007FFF +_0223EDA8: .word 0x0000254A + + thumb_func_start MOD12_0223EDAC +MOD12_0223EDAC: ; 0x0223EDAC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x14 + add r6, r2, #0 + str r3, [sp, #4] + ldr r5, [sp, #0x28] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r1, [sp, #0x24] + lsl r0, r0, #4 + add r0, r7, r0 + ldr r0, [r0, #0x18] + str r0, [r4] + strh r6, [r4, #8] + ldr r0, [sp, #4] + strh r0, [r4, #0xa] + ldr r0, [sp, #0x20] + strb r0, [r4, #0x10] + lsl r0, r0, #8 + bl _s32_div_f + strh r0, [r4, #0xc] + str r5, [r4, #4] + cmp r5, #0 + beq _0223EDF4 + mov r0, #0 + strb r0, [r5] +_0223EDF4: + ldr r0, [r4] + add r1, r6, #0 + bl FUN_021DD6B8 + ldr r0, _0223EE0C ; =MOD12_0223EE14 + ldr r2, _0223EE10 ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223EE0C: .word MOD12_0223EE14 +_0223EE10: .word 0x00009C40 + + thumb_func_start MOD12_0223EE14 +MOD12_0223EE14: ; 0x0223EE14 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldrh r1, [r5, #0xe] + ldrh r0, [r5, #0xc] + add r0, r1, r0 + strh r0, [r5, #0xe] + ldrh r0, [r5, #0xe] + asr r4, r0, #8 + ldrb r0, [r5, #0x10] + cmp r4, r0 + ble _0223EE30 + add r4, r0, #0 +_0223EE30: + ldrh r0, [r5, #0xa] + lsl r3, r4, #0x18 + add r1, sp, #4 + str r0, [sp] + add r0, r5, #0 + add r0, #8 + mov r2, #1 + lsr r3, r3, #0x18 + bl FUN_02003974 + add r1, sp, #4 + ldrh r1, [r1] + ldr r0, [r5] + bl FUN_021DD6B8 + ldrb r0, [r5, #0x10] + cmp r4, r0 + blt _0223EE6A + ldr r1, [r5, #4] + cmp r1, #0 + beq _0223EE5E + mov r0, #1 + strb r0, [r1] +_0223EE5E: + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_0223EE6A: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EE70 +MOD12_0223EE70: ; 0x0223EE70 + cmp r0, #0x32 + beq _0223EE78 + cmp r0, #0x33 + bne _0223EE7C +_0223EE78: + mov r0, #0 + bx lr +_0223EE7C: + mov r0, #1 + bx lr + + thumb_func_start MOD12_0223EE80 +MOD12_0223EE80: ; 0x0223EE80 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _0223EEB4 ; =0x02246424 + add r3, sp, #0 + str r1, [sp] + mov r1, #0xd + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _0223EEB8 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + ldr r1, _0223EEBC ; =0x00001158 + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223EEB4: .word 0x02246424 +_0223EEB8: .word 0x00000123 +_0223EEBC: .word 0x00001158 + + thumb_func_start MOD12_0223EEC0 +MOD12_0223EEC0: ; 0x0223EEC0 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EED4 +MOD12_0223EED4: ; 0x0223EED4 + push {r3, lr} + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EEE4 +MOD12_0223EEE4: ; 0x0223EEE4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223EEE8 +MOD12_0223EEE8: ; 0x0223EEE8 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EEFC +MOD12_0223EEFC: ; 0x0223EEFC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x17 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223EF38 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223EF3C ; =MOD12_0223EF40 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223EF38: .word 0x00007530 +_0223EF3C: .word MOD12_0223EF40 + + thumb_func_start MOD12_0223EF40 +MOD12_0223EF40: ; 0x0223EF40 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223EF50 + b _0223F076 +_0223EF50: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223EF64 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223EF64: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223EF78 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223EF78: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x74] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223EFF0 +_0223EF90: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _0223F094 ; =0x02246404 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223EFEA + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _0223F098 ; =0x0224640C + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _0223EFE4 +_0223EFC0: + mov r4, #0 + b _0223EFD8 +_0223EFC4: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223EFD8: + cmp r4, #8 + blt _0223EFC4 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223EFE4: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223EFC0 +_0223EFEA: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223EFF0: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223EF90 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223F032 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223F032 + ldr r0, _0223F094 ; =0x02246404 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _0223F02C +_0223F01C: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223F02C: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223F01C +_0223F032: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223F090 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223F090 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F076: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223F090: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F094: .word 0x02246404 +_0223F098: .word 0x0224640C + + thumb_func_start MOD12_0223F09C +MOD12_0223F09C: ; 0x0223F09C + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F0B0 +MOD12_0223F0B0: ; 0x0223F0B0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + mov r0, #0x17 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + ldr r2, _0223F0F8 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223F0FC ; =MOD12_0223F108 + str r7, [r4, #0xc] + bl FUN_0200CA44 + ldr r0, _0223F100 ; =0x00001134 + mov r1, #0 + strb r1, [r6, r0] + ldr r0, _0223F104 ; =0x0000046F + bl FUN_0200521C + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F0F8: .word 0x00007530 +_0223F0FC: .word MOD12_0223F108 +_0223F100: .word 0x00001134 +_0223F104: .word 0x0000046F + + thumb_func_start MOD12_0223F108 +MOD12_0223F108: ; 0x0223F108 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223F118 + b _0223F266 +_0223F118: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223F12C + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223F12C: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223F140 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223F140: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x74] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223F1C0 +_0223F158: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + mov r0, #4 + sub r1, r0, r1 + ldr r0, _0223F284 ; =0x02246404 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223F1BA + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r1, [r0, #0x12] + mov r0, #0xb + mov r7, #0x3f + sub r0, r0, r1 + lsl r1, r0, #1 + ldr r0, _0223F288 ; =0x0224640C + str r5, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r7, r7, #0xa + lsl r0, r0, #5 + add r6, r1, r0 + b _0223F1B4 +_0223F190: + mov r4, #0 + b _0223F1A8 +_0223F194: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223F1A8: + cmp r4, #8 + blt _0223F194 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223F1B4: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223F190 +_0223F1BA: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223F1C0: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223F158 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223F222 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223F222 + mov r0, #5 + sub r1, r0, r1 + ldr r0, _0223F284 ; =0x02246404 + mov r7, #0x3f + ldrsb r0, [r0, r1] + lsl r7, r7, #0xa + mov r6, #0x1d + add r0, r0, #3 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #2 + str r0, [sp, #4] + lsl r1, r1, #8 + b _0223F21C +_0223F1F6: + ldr r0, [sp, #4] + ldr r5, [sp, #4] + lsl r4, r0, #1 + ldrh r0, [r3, r4] + lsl r5, r5, #0x1d + and r0, r7 + strh r0, [r3, r4] + ldr r0, [sp, #4] + ldrh r2, [r3, r4] + lsr r0, r0, #0x1f + sub r5, r5, r0 + ror r5, r6 + add r0, r0, r5 + add r0, r0, r1 + orr r0, r2 + strh r0, [r3, r4] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223F21C: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223F1F6 +_0223F222: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223F280 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223F280 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F266: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223F280: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F284: .word 0x02246404 +_0223F288: .word 0x0224640C + + thumb_func_start MOD12_0223F28C +MOD12_0223F28C: ; 0x0223F28C + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F2A0 +MOD12_0223F2A0: ; 0x0223F2A0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x17 + mov r1, #0x14 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223F2DC ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223F2E0 ; =MOD12_0223F2E4 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F2DC: .word 0x00007530 +_0223F2E0: .word MOD12_0223F2E4 + + thumb_func_start MOD12_0223F2E4 +MOD12_0223F2E4: ; 0x0223F2E4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #5 + bhi _0223F388 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223F2FC: ; jump table + .short _0223F308 - _0223F2FC - 2 ; case 0 + .short _0223F318 - _0223F2FC - 2 ; case 1 + .short _0223F328 - _0223F2FC - 2 ; case 2 + .short _0223F34A - _0223F2FC - 2 ; case 3 + .short _0223F364 - _0223F2FC - 2 ; case 4 + .short _0223F37C - _0223F2FC - 2 ; case 5 +_0223F308: + ldr r0, _0223F3A4 ; =0x0000046F + mov r1, #0x1e + bl FUN_02005350 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F318: + bl FUN_02005404 + cmp r0, #0 + bne _0223F3A0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F328: + ldr r0, _0223F3A8 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bl MOD12_0223E738 + ldr r0, [r4] + mov r1, #1 + add r0, #0x14 + bl MOD12_0223CC9C + ldr r0, _0223F3AC ; =0x000006EC + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F34A: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0x1e + ble _0223F3A0 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F364: + ldr r0, [r4] + ldr r1, _0223F3B0 ; =0x00000123 + ldr r2, [r0] + ldrb r1, [r2, r1] + add r2, r4, #0 + add r2, #0x11 + bl MOD12_0223E598 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F37C: + ldrb r1, [r4, #0x11] + cmp r1, #1 + bne _0223F3A0 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F388: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223F3A0: + pop {r3, r4, r5, pc} + nop +_0223F3A4: .word 0x0000046F +_0223F3A8: .word 0x04000050 +_0223F3AC: .word 0x000006EC +_0223F3B0: .word 0x00000123 + + thumb_func_start MOD12_0223F3B4 +MOD12_0223F3B4: ; 0x0223F3B4 + push {r3, lr} + mov r1, #4 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F3C8 +MOD12_0223F3C8: ; 0x0223F3C8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r2, r3, #0 + ldr r0, _0223F3F8 ; =0x00001BF0 + mov r1, #1 + strb r1, [r5, r0] + ldr r3, _0223F3FC ; =0x00000172 + mov r1, #0 +_0223F3DC: + ldr r6, [r5] + ldrb r0, [r2, r1] + add r6, r6, r1 + add r1, r1, #1 + strb r0, [r6, r3] + cmp r1, #4 + blt _0223F3DC + mov r2, #0 + add r0, r7, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F3F8: .word 0x00001BF0 +_0223F3FC: .word 0x00000172 + + thumb_func_start MOD12_0223F400 +MOD12_0223F400: ; 0x0223F400 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F414 +MOD12_0223F414: ; 0x0223F414 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + mov r1, #0x57 + add r7, r0, #0 + mov r0, #0x17 + lsl r1, r1, #2 + add r5, r2, #0 + str r3, [sp, #4] + bl FUN_02016998 + mov r2, #0x57 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + add r3, r4, #0 + add r3, #0x18 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + mov r2, #7 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + ldr r5, [sp, #4] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_0223F452: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223F452 + ldr r0, [r5] + ldr r2, _0223F510 ; =0x00007530 + str r0, [r3] + ldr r0, _0223F514 ; =MOD12_0223F5CC + add r1, r4, #0 + str r6, [r4, #0x54] + bl FUN_0200CA44 + mov r7, #0 + add r5, r4, #0 +_0223F46E: + ldr r1, [r6] + ldr r0, _0223F518 ; =0x00000127 + ldrb r0, [r1, r0] + cmp r7, r0 + bge _0223F482 + add r0, r6, #0 + mov r1, #0 + bl MOD12_0223F524 + b _0223F48A +_0223F482: + add r0, r6, #0 + mov r1, #1 + bl MOD12_0223F524 +_0223F48A: + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #4 + blt _0223F46E + ldr r1, [r4] + ldr r2, _0223F51C ; =0x00000123 + ldr r3, [r1] + mov r0, #0 + ldrb r3, [r3, r2] +_0223F4A2: + add r2, r4, r0 + ldrb r2, [r2, #0x1a] + cmp r3, r2 + bne _0223F4B0 + ldr r2, _0223F520 ; =0x00000ACC + strb r0, [r1, r2] + b _0223F4B6 +_0223F4B0: + add r0, r0, #1 + cmp r0, #4 + blt _0223F4A2 +_0223F4B6: + add r0, r6, #0 + bl MOD12_0223FDA0 + ldr r1, [r6] + ldr r0, _0223F518 ; =0x00000127 + ldrb r5, [r1, r0] + cmp r5, #4 + bge _0223F50C + ldr r0, [sp, #4] + lsl r1, r5, #2 + add r7, r0, r1 + add r1, r4, #0 + mov r0, #0x3c + add r1, #0x5c + mul r0, r5 + add r0, r1, r0 + str r0, [sp, #8] +_0223F4D8: + mov r2, #0 +_0223F4DA: + add r0, r4, r2 + ldrb r0, [r0, #0x1a] + cmp r5, r0 + beq _0223F4E8 + add r2, r2, #1 + cmp r2, #4 + blt _0223F4DA +_0223F4E8: + ldr r0, [r6] + add r1, r0, r5 + mov r0, #0x43 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + add r1, r5, #0 + str r0, [sp] + ldr r0, [sp, #8] + ldr r3, [r7, #0x14] + bl MOD12_02240774 + ldr r0, [sp, #8] + add r5, r5, #1 + add r0, #0x3c + add r7, r7, #4 + str r0, [sp, #8] + cmp r5, #4 + blt _0223F4D8 +_0223F50C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F510: .word 0x00007530 +_0223F514: .word MOD12_0223F5CC +_0223F518: .word 0x00000127 +_0223F51C: .word 0x00000123 +_0223F520: .word 0x00000ACC + + thumb_func_start MOD12_0223F524 +MOD12_0223F524: ; 0x0223F524 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x17 + mov r1, #0x14 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + str r5, [r4, #4] + ldr r0, _0223F550 ; =MOD12_0223F588 + ldr r2, _0223F554 ; =0x00007594 + add r1, r4, #0 + strb r6, [r4, #0x12] + bl FUN_0200CA44 + str r0, [r4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223F550: .word MOD12_0223F588 +_0223F554: .word 0x00007594 + + thumb_func_start MOD12_0223F558 +MOD12_0223F558: ; 0x0223F558 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F56C +MOD12_0223F56C: ; 0x0223F56C + ldrh r2, [r1] + strh r2, [r0, #8] + ldrh r2, [r1, #2] + strh r2, [r0, #0xa] + ldrh r2, [r1, #4] + strh r2, [r0, #0xc] + ldrh r2, [r1, #6] + strh r2, [r0, #0xe] + ldrh r1, [r1, #8] + strh r1, [r0, #0x10] + mov r1, #1 + strb r1, [r0, #0x13] + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223F588 +MOD12_0223F588: ; 0x0223F588 + push {r4, lr} + add r4, r1, #0 + ldrb r0, [r4, #0x13] + cmp r0, #0 + beq _0223F5C4 + ldr r0, [r4, #4] + ldr r1, _0223F5C8 ; =0x00000171 + ldr r2, [r0] + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0223F5A4 + ldrb r1, [r4, #0x12] + cmp r1, #1 + bne _0223F5B2 +_0223F5A4: + add r1, r4, #0 + add r1, #8 + bl MOD12_0223D1CC + mov r0, #0 + strb r0, [r4, #0x13] + pop {r4, pc} +_0223F5B2: + add r1, r4, #0 + mov r0, #0x19 + add r1, #8 + bl FUN_020311D0 + cmp r0, #1 + bne _0223F5C4 + mov r0, #0 + strb r0, [r4, #0x13] +_0223F5C4: + pop {r4, pc} + nop +_0223F5C8: .word 0x00000171 + + thumb_func_start MOD12_0223F5CC +MOD12_0223F5CC: ; 0x0223F5CC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r4, r1, #0 + str r0, [sp, #0x18] + ldr r0, [r4] + ldr r1, _0223F920 ; =0x00000123 + ldr r2, [r0] + ldrb r2, [r2, r1] + ldrb r1, [r4, #0x18] + cmp r2, r1 + beq _0223F5E6 + mov r7, #1 + b _0223F5E8 +_0223F5E6: + mov r7, #0 +_0223F5E8: + ldr r1, _0223F924 ; =0x00001138 + ldr r2, [r0, r1] + add r1, #8 + ldr r1, [r0, r1] + sub r1, r2, r1 + ldr r2, [r4, #0x24] + str r1, [sp, #0x20] + lsr r3, r2, #1 + cmp r1, r3 + blo _0223F602 + mov r1, #1 + str r1, [sp, #0x1c] + b _0223F606 +_0223F602: + mov r1, #0 + str r1, [sp, #0x1c] +_0223F606: + ldrb r1, [r4, #0x10] + cmp r1, #3 + bls _0223F60E + b _0223FA38 +_0223F60E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223F61A: ; jump table + .short _0223F622 - _0223F61A - 2 ; case 0 + .short _0223F68A - _0223F61A - 2 ; case 1 + .short _0223F6F4 - _0223F61A - 2 ; case 2 + .short _0223F9C8 - _0223F61A - 2 ; case 3 +_0223F622: + add r0, #0x14 + mov r1, #0 + bl MOD12_0223D068 + ldr r0, [r4] + bl MOD12_0223DC0C + add r3, r4, #0 + ldrb r2, [r4, #0x18] + mov r1, #0x3c + add r3, #0x5c + mul r1, r2 + add r1, r3, r1 + ldr r0, [r4] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x20] + bl MOD12_022407D4 + mov r0, #0x21 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD12_0223E448 + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223E750 + ldr r0, [r4] + bl MOD12_0223E868 + add r0, r4, #0 + add r0, #0x41 + ldrb r1, [r0] + add r0, sp, #0x2c + cmp r7, #0 + strb r1, [r0, #4] + ldr r0, [r4] + add r2, sp, #0x2c + bne _0223F67A + mov r1, #4 + bl MOD12_0223E488 + b _0223F680 +_0223F67A: + mov r1, #5 + bl MOD12_0223E488 +_0223F680: + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F68A: + ldrb r2, [r4, #0x19] + add r1, r4, #0 + add r1, #0x3c + bl MOD12_0223E590 + mov r3, #0 + mov r2, #0 + sub r0, r2, r0 + sbc r3, r1 + bge _0223F6A0 + b _0223FA66 +_0223F6A0: + ldr r0, [r4] + bl MOD12_0223E528 + ldr r5, [r4] + add r1, r4, #0 + ldrb r2, [r4, #0x19] + add r0, r5, #0 + add r1, #0x3c + bl MOD12_0223E590 + ldr r2, _0223F924 ; =0x00001138 + add r6, r0, #0 + add r0, r1, #0 + add r1, r2, #4 + ldr r3, [r5, r2] + ldr r1, [r5, r1] + add r3, r3, r6 + adc r1, r0 + add r0, r2, #0 + add r0, #8 + add r2, #0xc + str r3, [r5, r0] + str r1, [r5, r2] + cmp r7, #0 + bne _0223F6E0 + ldr r0, [r4] + add r1, r7, #0 + bl MOD12_0223E8B4 + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] +_0223F6E0: + ldrb r1, [r4, #0x18] + ldr r0, [r4] + mov r2, #0 + bl MOD12_0223EC88 + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F6F4: + ldr r1, [sp, #0x20] + add r0, #0x14 + bl MOD12_0223C438 + mov r0, #0x21 + ldr r3, [r4] + ldr r1, _0223F924 ; =0x00001138 + lsl r0, r0, #4 + ldr r2, [r3, r1] + add r1, #8 + ldr r1, [r3, r1] + ldr r0, [r3, r0] + sub r1, r2, r1 + ldr r2, [r4, #0x24] + bl MOD12_0223E3DC + ldr r5, [r4, #0x24] + ldr r0, [sp, #0x20] + cmp r0, r5 + blo _0223F7DC + ldrb r0, [r4, #0x16] + ldr r1, _0223F924 ; =0x00001138 + add r0, r0, #1 + strb r0, [r4, #0x16] + ldr r5, [r4] + add r0, r5, r1 + ldmia r0!, {r2, r3} + add r1, #8 + add r0, r5, r1 + stmia r0!, {r2, r3} + mov r0, #0 + strb r0, [r4, #0x11] + strb r0, [r4, #0x12] + ldr r0, [r4] + bl MOD12_0223FDA0 + mov r0, #0 + strb r0, [r4, #0x17] + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223F928 ; =0x00000127 + ldrb r6, [r1, r0] + cmp r6, #4 + bge _0223F764 + add r1, r4, #0 + mov r0, #0x3c + add r1, #0x5c + mul r0, r6 + add r5, r1, r0 +_0223F756: + add r0, r5, #0 + bl MOD12_0224079C + add r6, r6, #1 + add r5, #0x3c + cmp r6, #4 + blt _0223F756 +_0223F764: + ldr r0, [r4] + add r0, #0x14 + bl MOD12_0223C640 + ldr r0, [r4] + bl MOD12_0223DC0C + add r3, r4, #0 + ldrb r2, [r4, #0x18] + mov r1, #0x3c + add r3, #0x5c + mul r1, r2 + add r1, r3, r1 + ldr r0, [r4] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x20] + bl MOD12_022407D4 + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223E750 + add r0, r4, #0 + add r0, #0x40 + ldrb r1, [r4, #0x16] + ldrb r0, [r0] + cmp r1, r0 + ldr r0, [r4] + blo _0223F7B6 + bl MOD12_0223ECD0 + ldr r0, [r4] + mov r1, #2 + add r0, #0x14 + bl MOD12_0223D068 + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F7B6: + ldrb r1, [r4, #0x18] + mov r2, #0 + bl MOD12_0223EC88 + cmp r7, #0 + bne _0223F7C8 + ldrb r0, [r4, #0x11] + cmp r0, #0 + beq _0223F7CA +_0223F7C8: + b _0223FA66 +_0223F7CA: + ldr r0, [r4] + add r1, r7, #0 + bl MOD12_0223E8B4 + ldrb r0, [r4, #0x11] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x11] + pop {r4, r5, r6, r7, pc} +_0223F7DC: + ldr r1, [r4] + ldr r0, _0223F92C ; =0x00000ACC + ldrb r6, [r1, r0] + ldr r0, [sp, #0x20] + lsr r1, r5, #1 + cmp r0, r1 + blo _0223F7EE + mov r0, #1 + b _0223F7F0 +_0223F7EE: + mov r0, #0 +_0223F7F0: + cmp r7, #0 + bne _0223F88C + cmp r0, #0 + bne _0223F828 + add r0, r4, #0 + add r0, #0x41 + ldrb r1, [r4, #0x17] + ldrb r0, [r0] + cmp r1, r0 + bhs _0223F828 + ldr r0, [r4, #0x20] + ldr r1, _0223F930 ; =0x00002710 + lsr r0, r0, #2 + bl _u32_div_f + lsr r1, r5, #1 + sub r1, r1, r0 + ldr r0, [sp, #0x20] + cmp r0, r1 + bhs _0223F828 + add r0, r4, #0 + mov r2, #0 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 + b _0223F836 +_0223F828: + add r0, r4, #0 + mov r2, #1 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 +_0223F836: + mov r0, #0 + ldr r1, [sp, #0x34] + mvn r0, r0 + cmp r1, r0 + bne _0223F842 + b _0223F94E +_0223F842: + add r0, r4, #0 + add r0, #0x44 + str r0, [sp] + add r0, sp, #0x38 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r6, [sp, #0xc] + ldrb r0, [r4, #0x17] + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0x41 + ldrb r0, [r0] + str r0, [sp, #0x14] + ldr r0, [r4] + ldr r3, [r4, #0x20] + ldr r2, [r0] + ldr r0, _0223F920 ; =0x00000123 + ldrb r0, [r2, r0] + ldr r2, [sp, #0x20] + bl MOD12_0223FCAC + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223F920 ; =0x00000123 + ldrb r1, [r1, r0] + add r0, #0x29 + lsl r1, r1, #2 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, sp, #0x38 + bl MOD12_0223F56C + ldrb r0, [r4, #0x17] + add r0, r0, #1 + strb r0, [r4, #0x17] + b _0223F94E +_0223F88C: + cmp r0, #1 + bne _0223F8D2 + add r0, r4, #0 + add r0, #0x41 + ldrb r1, [r4, #0x17] + ldrb r0, [r0] + cmp r1, r0 + bhs _0223F8D2 + ldr r0, [r4, #0x20] + ldr r1, _0223F930 ; =0x00002710 + lsr r0, r0, #2 + bl _u32_div_f + sub r1, r5, r0 + ldr r0, [sp, #0x20] + cmp r0, r1 + bhs _0223F8D2 + add r0, r4, #0 + mov r2, #0 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 + ldrb r0, [r4, #0x11] + cmp r0, #0 + bne _0223F8E0 + ldr r0, [r4] + add r1, r7, #0 + bl MOD12_0223E8B4 + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + b _0223F8E0 +_0223F8D2: + add r0, r4, #0 + mov r2, #1 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 +_0223F8E0: + mov r0, #0 + ldr r1, [sp, #0x34] + mvn r0, r0 + cmp r1, r0 + beq _0223F94E + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x44 + str r2, [sp] + add r2, sp, #0x38 + str r2, [sp, #4] + ldr r2, _0223F934 ; =0x00001B98 + add r2, r0, r2 + str r2, [sp, #8] + str r6, [sp, #0xc] + ldrb r2, [r4, #0x17] + str r2, [sp, #0x10] + add r2, r4, #0 + add r2, #0x41 + ldrb r2, [r2] + str r2, [sp, #0x14] + ldr r2, [r0] + ldr r0, _0223F920 ; =0x00000123 + ldr r3, [r4, #0x20] + ldrb r0, [r2, r0] + ldr r2, [sp, #0x20] + bl MOD12_0223FCAC + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223F920 ; =0x00000123 + b _0223F938 + .align 2, 0 +_0223F920: .word 0x00000123 +_0223F924: .word 0x00001138 +_0223F928: .word 0x00000127 +_0223F92C: .word 0x00000ACC +_0223F930: .word 0x00002710 +_0223F934: .word 0x00001B98 +_0223F938: + ldrb r1, [r1, r0] + add r0, #0x29 + lsl r1, r1, #2 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, sp, #0x38 + bl MOD12_0223F56C + ldrb r0, [r4, #0x17] + add r0, r0, #1 + strb r0, [r4, #0x17] +_0223F94E: + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223FA6C ; =0x00000127 + ldrb r7, [r1, r0] + cmp r7, #4 + bge _0223F99A + lsl r0, r7, #2 + add r5, r4, r0 + add r1, r4, #0 + mov r0, #0x3c + add r1, #0x5c + mul r0, r7 + add r6, r1, r0 + add r0, r4, #0 + str r0, [sp, #0x28] + add r0, #0x3c + str r0, [sp, #0x28] +_0223F970: + ldr r0, [r4, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + ldr r0, [r4, #0x20] + add r2, r6, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x28] + str r0, [sp, #8] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + ldr r1, [r4] + bl MOD12_02240B08 + add r7, r7, #1 + add r5, r5, #4 + add r6, #0x3c + cmp r7, #4 + blt _0223F970 +_0223F99A: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _0223F9B6 + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _0223F9B6 + ldrb r1, [r4, #0x18] + ldr r0, [r4] + mov r2, #1 + bl MOD12_0223EC88 + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] +_0223F9B6: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _0223FA66 + ldr r0, [r4] + ldr r1, [sp, #0x20] + bl MOD12_0223E7D4 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_0223F9C8: + add r0, r4, #0 + add r0, #0x54 + add r1, sp, #0x34 + mov r2, #1 + mov r3, #0 + bl MOD12_0223FA74 + cmp r0, #1 + bne _0223FA66 + ldr r0, [r4] + add r0, #0x14 + bl MOD12_0223C640 + ldr r0, [r4] + ldr r2, [r4, #0x24] + add r0, #0x14 + mov r1, #0 + bl MOD12_0223C438 + mov r0, #0x21 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD12_0223E43C + ldr r0, [r4] + mov r1, #2 + add r0, #0x14 + bl MOD12_0223D068 + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223E750 + ldr r0, [r4] + bl MOD12_0223E898 + ldr r1, [r4] + ldr r0, _0223FA70 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B92C + cmp r0, #0 + beq _0223FA2E + ldr r1, [r4] + ldr r0, _0223FA70 ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 +_0223FA2E: + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223FA38: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + mov r7, #0x53 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_0223FA4C: + ldr r0, [r5, r7] + bl MOD12_0223F558 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _0223FA4C + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x18] + bl FUN_0200CAB4 +_0223FA66: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_0223FA6C: .word 0x00000127 +_0223FA70: .word 0x00001130 + + thumb_func_start MOD12_0223FA74 +MOD12_0223FA74: ; 0x0223FA74 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r7, r1, #0 + sub r0, r4, #1 + add r6, r2, #0 + str r3, [sp] + str r0, [r7] + cmp r6, #0 + bne _0223FAA6 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0223FAA6 + sub r0, r0, #1 + strb r0, [r5, #5] + ldrb r0, [r5, #5] + cmp r0, #0 + bne _0223FAA6 + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + add r2, r4, #0 + ldr r0, [r1, r0] + add r1, r4, #0 + bl MOD12_0223C1F4 +_0223FAA6: + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0223FAB6 + cmp r0, #1 + beq _0223FADC + cmp r0, #2 + beq _0223FB1E + b _0223FB44 +_0223FAB6: + cmp r6, #0 + bne _0223FAD8 + ldr r0, [sp] + cmp r0, #0 + bne _0223FAD8 + mov r1, #0 + strb r1, [r5, #5] + ldr r2, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r2, r0] + add r2, r1, #0 + bl MOD12_0223C1F4 + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + b _0223FB44 +_0223FAD8: + mov r4, #1 + b _0223FB44 +_0223FADC: + cmp r6, #1 + beq _0223FAE6 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0223FAEA +_0223FAE6: + mov r4, #1 + b _0223FB44 +_0223FAEA: + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B878 + mov r1, #0 + mvn r1, r1 + str r0, [r7] + cmp r0, r1 + beq _0223FB1A + ldr r1, [r5] + ldr r0, _0223FB78 ; =0x00000AE8 + ldr r0, [r1, r0] + ldr r1, _0223FB7C ; =0x00002710 + bl _u32_div_f + strb r0, [r5, #5] + ldrb r0, [r5, #5] + sub r0, r0, #2 + strb r0, [r5, #5] + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + b _0223FB44 +_0223FB1A: + mov r4, #1 + b _0223FB44 +_0223FB1E: + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B91C + cmp r0, #1 + bne _0223FB44 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0223FB40 + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 +_0223FB40: + mov r0, #1 + strb r0, [r5, #4] +_0223FB44: + ldr r0, [sp] + cmp r0, #1 + bne _0223FB6E + cmp r4, #1 + bne _0223FB6E + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B92C + cmp r0, #0 + beq _0223FB6E + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 + mov r0, #0 + strb r0, [r5, #4] +_0223FB6E: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223FB74: .word 0x00001130 +_0223FB78: .word 0x00000AE8 +_0223FB7C: .word 0x00002710 + + thumb_func_start MOD12_0223FB80 +MOD12_0223FB80: ; 0x0223FB80 + push {r3, lr} + cmp r0, #3 + bhi _0223FBAA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FB92: ; jump table + .short _0223FB9A - _0223FB92 - 2 ; case 0 + .short _0223FB9E - _0223FB92 - 2 ; case 1 + .short _0223FBA2 - _0223FB92 - 2 ; case 2 + .short _0223FBA6 - _0223FB92 - 2 ; case 3 +_0223FB9A: + mov r0, #1 + pop {r3, pc} +_0223FB9E: + mov r0, #2 + pop {r3, pc} +_0223FBA2: + mov r0, #3 + pop {r3, pc} +_0223FBA6: + mov r0, #4 + pop {r3, pc} +_0223FBAA: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223FBB4 +MOD12_0223FBB4: ; 0x0223FBB4 + push {r3, lr} + cmp r0, #4 + bhi _0223FBE0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FBC6: ; jump table + .short _0223FBE0 - _0223FBC6 - 2 ; case 0 + .short _0223FBD0 - _0223FBC6 - 2 ; case 1 + .short _0223FBD4 - _0223FBC6 - 2 ; case 2 + .short _0223FBD8 - _0223FBC6 - 2 ; case 3 + .short _0223FBDC - _0223FBC6 - 2 ; case 4 +_0223FBD0: + mov r0, #0 + pop {r3, pc} +_0223FBD4: + mov r0, #1 + pop {r3, pc} +_0223FBD8: + mov r0, #2 + pop {r3, pc} +_0223FBDC: + mov r0, #3 + pop {r3, pc} +_0223FBE0: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD12_0223FBE8 +MOD12_0223FBE8: ; 0x0223FBE8 + push {r3, r4} + ldrb r4, [r1] + cmp r0, r4 + bgt _0223FBFA + mov r0, #0 + strb r0, [r2] + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FBFA: + ldrb r4, [r1, #1] + cmp r0, r4 + bgt _0223FC0C + mov r0, #0 + strb r0, [r2] + mov r0, #1 + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FC0C: + ldrb r4, [r1, #2] + cmp r0, r4 + bgt _0223FC1E + mov r0, #1 + strb r0, [r2] + mov r0, #2 + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FC1E: + ldrb r1, [r1, #3] + cmp r0, r1 + bgt _0223FC30 + mov r0, #1 + strb r0, [r2] + mov r0, #3 + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FC30: + mov r0, #2 + strb r0, [r2] + mov r0, #4 + strb r0, [r3] + pop {r3, r4} + bx lr + + thumb_func_start MOD12_0223FC3C +MOD12_0223FC3C: ; 0x0223FC3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r2, #0 + add r6, r0, #0 + mov r0, #0 + ldr r2, _0223FCA4 ; =0x00002710 + str r3, [sp] + mul r6, r2 + lsr r1, r1, #1 + add r5, r0, #0 + add r4, r0, #0 + cmp r6, #0 + bls _0223FC62 + bls _0223FC60 +_0223FC58: + add r4, r4, r1 + add r5, r5, #1 + cmp r4, r6 + blo _0223FC58 +_0223FC60: + sub r0, r4, r1 +_0223FC62: + ldr r1, _0223FCA8 ; =0x00001388 + add r0, r0, r1 + lsl r1, r1, #1 + bl _u32_div_f + ldr r1, _0223FCA8 ; =0x00001388 + str r0, [sp, #4] + add r0, r4, r1 + lsl r1, r1, #1 + bl _u32_div_f + add r4, r0, #0 + ldr r1, _0223FCA4 ; =0x00002710 + add r0, r6, #0 + bl _u32_div_f + ldr r1, [sp, #4] + sub r1, r0, r1 + bpl _0223FC8A + neg r1, r1 +_0223FC8A: + sub r0, r0, r4 + bpl _0223FC90 + neg r0, r0 +_0223FC90: + cmp r1, r0 + bhi _0223FC98 + sub r5, r5, #1 + b _0223FC9A +_0223FC98: + add r1, r0, #0 +_0223FC9A: + ldr r0, [sp] + str r1, [r7] + str r5, [r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FCA4: .word 0x00002710 +_0223FCA8: .word 0x00001388 + + thumb_func_start MOD12_0223FCAC +MOD12_0223FCAC: ; 0x0223FCAC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp] + str r2, [sp, #4] + str r3, [sp, #8] + add r0, r1, #0 + ldr r5, [sp, #0x34] + ldr r6, [sp, #0x38] + mov r7, #0 + bl MOD12_0223FB80 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, sp, #0x18 + add r3, sp, #0x14 + bl MOD12_0223FC3C + cmp r6, #0 + beq _0223FD00 + ldr r0, [sp, #0x14] + add r4, r7, #0 + sub r0, #0x10 + add r1, r6, #0 + add r2, r6, #0 +_0223FCDE: + ldrb r3, [r1, #8] + lsl r3, r3, #0x1d + lsr r3, r3, #0x1f + cmp r3, #1 + bne _0223FCEE + ldrb r3, [r2, #6] + cmp r0, r3 + beq _0223FCF8 +_0223FCEE: + add r4, r4, #1 + add r1, #0xa + add r2, #0xa + cmp r4, #8 + blo _0223FCDE +_0223FCF8: + cmp r4, #8 + bne _0223FD00 + mov r0, #0xff + str r0, [sp, #0x18] +_0223FD00: + add r2, sp, #0x10 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x30] + add r2, #1 + add r3, sp, #0x10 + bl MOD12_0223FBE8 + cmp r6, #0 + beq _0223FD40 + cmp r4, #8 + beq _0223FD40 + add r0, sp, #0x10 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _0223FD22 + cmp r0, #1 + bne _0223FD40 +_0223FD22: + mov r0, #0xa + mul r0, r4 + add r0, r6, r0 + ldrb r1, [r0, #3] + ldr r0, [sp, #0xc] + cmp r0, r1 + beq _0223FD40 + mov r0, #0xff + str r0, [sp, #0x18] + mov r1, #4 + add r0, sp, #0x10 + strb r1, [r0] + mov r1, #2 + strb r1, [r0, #1] + mov r7, #1 +_0223FD40: + ldr r0, [sp] + strb r0, [r5, #2] + ldr r0, [sp, #4] + strh r0, [r5] + ldr r0, [sp, #0xc] + strb r0, [r5, #3] + add r0, sp, #0x10 + ldrb r1, [r0, #1] + strb r1, [r5, #4] + ldrb r0, [r0] + ldr r1, [sp, #0x40] + strb r0, [r5, #5] + ldr r0, [sp, #0x14] + strb r0, [r5, #6] + ldr r0, [sp, #0x3c] + strb r0, [r5, #7] + ldr r0, [sp, #0x44] + sub r0, r0, #1 + cmp r1, r0 + blt _0223FD6C + mov r1, #1 + b _0223FD6E +_0223FD6C: + mov r1, #0 +_0223FD6E: + ldrb r2, [r5, #8] + mov r0, #1 + bic r2, r0 + lsl r0, r1, #0x18 + lsr r1, r0, #0x18 + mov r0, #1 + and r0, r1 + orr r0, r2 + strb r0, [r5, #8] + ldrb r1, [r5, #8] + mov r0, #2 + bic r1, r0 + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1e + orr r0, r1 + strb r0, [r5, #8] + ldrb r1, [r5, #8] + mov r0, #4 + orr r0, r1 + strb r0, [r5, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223FDA0 +MOD12_0223FDA0: ; 0x0223FDA0 + push {r4, r5} + ldr r1, _0223FDC8 ; =0x00000ABD + mov r5, #0 + add r3, r5, #0 + add r2, r1, #4 +_0223FDAA: + add r4, r0, r5 + strb r3, [r4, r1] + add r5, r5, #1 + strb r3, [r4, r2] + cmp r5, #4 + blt _0223FDAA + ldr r1, _0223FDCC ; =0x00000AC5 + strb r3, [r0, r1] + add r2, r1, #1 + strb r3, [r0, r2] + add r1, r1, #2 + strb r3, [r0, r1] + pop {r4, r5} + bx lr + nop +_0223FDC8: .word 0x00000ABD +_0223FDCC: .word 0x00000AC5 + + thumb_func_start MOD12_0223FDD0 +MOD12_0223FDD0: ; 0x0223FDD0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223FDD4 +MOD12_0223FDD4: ; 0x0223FDD4 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223FDE8 +MOD12_0223FDE8: ; 0x0223FDE8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0x17 + str r1, [sp] + add r1, r0, #0 + add r1, #0xed + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x41 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0xc8 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_0223FE24: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223FE24 + ldr r0, [r6] + ldr r2, _0223FE3C ; =0x00007530 + str r0, [r3] + ldr r0, _0223FE40 ; =MOD12_0223FE44 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FE3C: .word 0x00007530 +_0223FE40: .word MOD12_0223FE44 + + thumb_func_start MOD12_0223FE44 +MOD12_0223FE44: ; 0x0223FE44 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #5 + bls _0223FE54 + b _02240002 +_0223FE54: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FE60: ; jump table + .short _0223FE6C - _0223FE60 - 2 ; case 0 + .short _0223FEBC - _0223FE60 - 2 ; case 1 + .short _0223FEEA - _0223FE60 - 2 ; case 2 + .short _0223FF9C - _0223FE60 - 2 ; case 3 + .short _0223FFBE - _0223FE60 - 2 ; case 4 + .short _0223FFE2 - _0223FE60 - 2 ; case 5 +_0223FE6C: + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223EC7C + mov r1, #0 + str r1, [sp] + mov r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r4] + mov r1, #1 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, _02240020 ; =0x00001FE3 + sub r3, r1, #3 + bl FUN_02003210 + add r6, r4, #0 + mov r5, #0 + mov r7, #0x10 + add r6, #0x11 +_0223FE96: + str r7, [sp] + mov r0, #4 + str r0, [sp, #4] + add r0, r6, r5 + str r0, [sp, #8] + ldr r0, [r4] + ldr r2, _02240024 ; =0x00007FFF + ldr r3, _02240028 ; =0x0000254A + add r1, r5, #0 + bl MOD12_0223EDAC + add r5, r5, #1 + cmp r5, #4 + blt _0223FE96 + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FEBC: + ldr r0, [r4] + add r0, #0xa4 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _0223FEDE + mov r1, #0 +_0223FECC: + add r0, r4, r1 + ldrb r0, [r0, #0x11] + cmp r0, #0 + beq _0223FEDA + add r1, r1, #1 + cmp r1, #4 + blt _0223FECC +_0223FEDA: + cmp r1, #4 + beq _0223FEE0 +_0223FEDE: + b _0224001A +_0223FEE0: + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FEEA: + add r0, r4, #0 + str r0, [sp, #0xc] + add r0, #0x18 + mov r6, #0 + str r0, [sp, #0xc] +_0223FEF4: + add r0, r4, r6 + add r0, #0xca + ldrb r1, [r0] + mov r2, #0x2c + add r7, r1, #0 + mul r7, r2 + ldr r2, [r4] + lsl r0, r1, #2 + ldr r2, [r2, #0x14] + add r5, r4, r7 + ldr r2, [r2, r0] + str r2, [r5, #0x18] + ldr r2, [r4] + add r0, r2, r0 + ldr r0, [r0, #0x5c] + str r0, [r5, #0x1c] + ldr r2, [r4] + lsl r0, r1, #4 + add r2, #0x18 + add r0, r2, r0 + str r0, [r5, #0x20] + ldr r1, [r4] + ldr r0, _0224002C ; =0x00000AF4 + ldr r0, [r1, r0] + ldr r1, _02240030 ; =0x00002710 + bl _u32_div_f + mov r1, #0x28 + mul r1, r0 + add r0, r1, #0 + mov r1, #0x64 + bl _u32_div_f + strh r0, [r5, #0x26] + add r0, r5, #0 + add r0, #0x24 + strb r6, [r0] + cmp r6, #0 + bne _0223FF48 + add r5, #0x25 + mov r0, #3 + b _0223FF4C +_0223FF48: + sub r0, r6, #1 + add r5, #0x25 +_0223FF4C: + ldr r1, [sp, #0xc] + strb r0, [r5] + ldr r0, _02240034 ; =MOD12_02240044 + ldr r2, _02240038 ; =0x00009CA4 + add r1, r1, r7 + bl FUN_0200CA44 + add r6, r6, #1 + cmp r6, #4 + blt _0223FEF4 + add r0, r4, #0 + add r0, #0xf1 + ldrb r1, [r0] + add r0, sp, #0x10 + strb r1, [r0, #4] + ldr r0, [r4] + add r1, r4, #0 + add r1, #0xcb + ldrb r3, [r1] + ldr r2, [r0] + ldr r1, _0224003C ; =0x00000123 + ldrb r1, [r2, r1] + cmp r3, r1 + add r2, sp, #0x10 + bne _0223FF86 + mov r1, #4 + bl MOD12_0223E488 + b _0223FF8C +_0223FF86: + mov r1, #5 + bl MOD12_0223E488 +_0223FF8C: + ldr r0, _02240040 ; =0x000006F7 + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FF9C: + mov r2, #0 +_0223FF9E: + add r0, r1, #0 + add r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0223FFB0 + add r2, r2, #1 + add r1, #0x2c + cmp r2, #4 + blt _0223FF9E +_0223FFB0: + cmp r2, #4 + bne _0224001A + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FFBE: + mov r0, #6 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #1 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, _02240020 ; =0x00001FE3 + sub r3, r1, #3 + bl FUN_02003210 + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FFE2: + ldr r0, [r4] + add r0, #0xa4 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _0224001A + ldr r0, [r4] + mov r1, #1 + bl MOD12_0223EC7C + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02240002: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224001A: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240020: .word 0x00001FE3 +_02240024: .word 0x00007FFF +_02240028: .word 0x0000254A +_0224002C: .word 0x00000AF4 +_02240030: .word 0x00002710 +_02240034: .word MOD12_02240044 +_02240038: .word 0x00009CA4 +_0224003C: .word 0x00000123 +_02240040: .word 0x000006F7 + + thumb_func_start MOD12_02240044 +MOD12_02240044: ; 0x02240044 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r1, #0x2a + ldrb r1, [r1] + cmp r1, #0 + beq _02240058 + cmp r1, #1 + beq _02240114 + b _0224025E +_02240058: + ldr r0, [r5, #8] + ldr r0, [r0, #4] + lsl r0, r0, #8 + str r0, [r5, #0x10] + ldr r0, [r5, #8] + ldr r0, [r0, #8] + lsl r0, r0, #8 + str r0, [r5, #0x14] + ldr r0, [r5, #8] + ldr r0, [r0, #0xc] + lsl r0, r0, #8 + str r0, [r5, #0x18] + ldrb r0, [r5, #0xc] + bl MOD12_0223C210 + lsl r4, r0, #8 + ldrb r0, [r5, #0xc] + bl MOD12_0223C220 + lsl r0, r0, #8 + str r0, [sp, #8] + ldrb r0, [r5, #0xc] + bl MOD12_0223C234 + lsl r0, r0, #8 + str r0, [sp, #4] + ldrb r0, [r5, #0xd] + cmp r0, #0 + beq _02240096 + cmp r0, #3 + bne _022400C8 +_02240096: + cmp r0, #0 + bne _0224009E + ldr r0, _0224026C ; =0xFFFFB000 + b _022400A2 +_0224009E: + mov r0, #0x59 + lsl r0, r0, #0xa +_022400A2: + ldrh r1, [r5, #0xe] + sub r0, r0, r4 + lsr r1, r1, #1 + bl _s32_div_f + str r0, [r5, #0x1c] + ldrh r1, [r5, #0xe] + mov r0, #0 + lsr r1, r1, #1 + bl _s32_div_f + str r0, [r5, #0x20] + ldrh r1, [r5, #0xe] + mov r0, #0 + lsr r1, r1, #1 + bl _s32_div_f + str r0, [r5, #0x24] + b _02240104 +_022400C8: + bl MOD12_0223C210 + lsl r6, r0, #8 + ldrb r0, [r5, #0xd] + bl MOD12_0223C220 + lsl r0, r0, #8 + str r0, [sp] + ldrb r0, [r5, #0xd] + bl MOD12_0223C234 + lsl r7, r0, #8 + ldrh r1, [r5, #0xe] + sub r0, r6, r4 + bl _s32_div_f + str r0, [r5, #0x1c] + ldr r1, [sp] + ldr r0, [sp, #8] + sub r0, r1, r0 + ldrh r1, [r5, #0xe] + bl _s32_div_f + str r0, [r5, #0x20] + ldr r0, [sp, #4] + ldrh r1, [r5, #0xe] + sub r0, r7, r0 + bl _s32_div_f + str r0, [r5, #0x24] +_02240104: + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + add r5, #0x2a + add sp, #0xc + add r0, r0, #1 + strb r0, [r5] + pop {r4, r5, r6, r7, pc} +_02240114: + ldr r1, [r5, #0x10] + ldr r0, [r5, #0x1c] + add r0, r1, r0 + str r0, [r5, #0x10] + ldr r1, [r5, #0x14] + ldr r0, [r5, #0x20] + add r0, r1, r0 + str r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r0, [r5, #0x24] + add r0, r1, r0 + str r0, [r5, #0x18] + ldrh r0, [r5, #0x28] + add r0, r0, #1 + strh r0, [r5, #0x28] + ldrb r0, [r5, #0xd] + cmp r0, #0 + beq _0224013C + cmp r0, #3 + bne _022401DC +_0224013C: + ldrh r1, [r5, #0xe] + ldrh r2, [r5, #0x28] + lsr r1, r1, #1 + cmp r2, r1 + bne _022401DC + cmp r0, #0 + bne _02240164 + ldr r0, _02240270 ; =0xFFFF9C00 + mov r1, #1 + str r0, [r5, #0x10] + ldr r0, [r5, #8] + ldr r0, [r0] + bl FUN_021DD59C + ldr r0, [r5, #8] + mov r1, #0x64 + ldr r0, [r0] + bl FUN_021DD6CC + b _02240184 +_02240164: + bl MOD12_0223C210 + add r0, #0x50 + lsl r0, r0, #8 + str r0, [r5, #0x10] + ldr r0, [r5, #8] + mov r1, #0 + ldr r0, [r0] + bl FUN_021DD59C + ldr r0, [r5, #8] + mov r1, #0x63 + ldr r0, [r0] + mvn r1, r1 + bl FUN_021DD6CC +_02240184: + ldr r0, [r5] + mov r1, #2 + bl FUN_02068E14 + add r4, r0, #0 + ldrb r0, [r5, #0xd] + bl MOD12_0223C220 + add r0, r4, r0 + lsl r0, r0, #8 + str r0, [r5, #0x14] + ldrb r0, [r5, #0xd] + bl MOD12_0223C234 + lsl r0, r0, #8 + str r0, [r5, #0x18] + ldrb r0, [r5, #0xd] + bl MOD12_0223C210 + ldrh r2, [r5, #0xe] + ldrh r1, [r5, #0x28] + lsl r0, r0, #8 + ldr r7, [r5, #0x14] + sub r1, r2, r1 + sub r4, r1, #1 + ldr r1, [r5, #0x10] + ldr r6, [r5, #0x18] + sub r0, r0, r1 + add r1, r4, #0 + bl _s32_div_f + str r0, [r5, #0x1c] + ldr r0, [r5, #0x14] + add r1, r4, #0 + sub r0, r7, r0 + bl _s32_div_f + str r0, [r5, #0x20] + ldr r0, [r5, #0x18] + add r1, r4, #0 + sub r0, r6, r0 + bl _s32_div_f + str r0, [r5, #0x24] +_022401DC: + ldrh r1, [r5, #0x28] + ldrh r0, [r5, #0xe] + cmp r1, r0 + blo _0224021C + ldr r0, [r5] + mov r1, #2 + bl FUN_02068E14 + add r4, r0, #0 + ldrb r0, [r5, #0xd] + bl MOD12_0223C210 + lsl r0, r0, #8 + str r0, [r5, #0x10] + ldrb r0, [r5, #0xd] + bl MOD12_0223C220 + add r0, r4, r0 + lsl r0, r0, #8 + str r0, [r5, #0x14] + ldrb r0, [r5, #0xd] + bl MOD12_0223C234 + lsl r0, r0, #8 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x2a + strb r1, [r0] +_0224021C: + ldr r1, [r5, #0x10] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r5, #8] + str r1, [r0, #4] + ldr r1, [r5, #0x14] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r5, #8] + str r1, [r0, #8] + ldr r1, [r5, #0x18] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r5, #8] + str r1, [r0, #0xc] + ldr r2, [r5, #8] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 + ldr r0, [r5, #4] + ldr r1, [r5, #8] + bl MOD12_0223D09C + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224025E: + mov r1, #1 + add r5, #0x2b + strb r1, [r5] + bl FUN_0200CAB4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224026C: .word 0xFFFFB000 +_02240270: .word 0xFFFF9C00 + + thumb_func_start MOD12_02240274 +MOD12_02240274: ; 0x02240274 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02240288 +MOD12_02240288: ; 0x02240288 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x50 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x50 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0x10 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_022402C0: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022402C0 + ldr r0, [r6] + ldr r2, _022402D8 ; =0x00007530 + str r0, [r3] + ldr r0, _022402DC ; =MOD12_022402E0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022402D8: .word 0x00007530 +_022402DC: .word MOD12_022402E0 + + thumb_func_start MOD12_022402E0 +MOD12_022402E0: ; 0x022402E0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + cmp r0, #0 + bne _02240330 + mov r4, #0 +_022402F2: + add r1, r5, r4 + ldrb r1, [r1, #0x12] + ldr r0, [r5] + add r2, r4, #0 + bl MOD12_0223DC28 + add r4, r4, #1 + cmp r4, #4 + blt _022402F2 + ldr r1, [r5] + ldr r0, _0224034C ; =0x00001130 + mov r3, #0 + ldr r0, [r1, r0] + mov r1, #1 + add r2, r1, #0 + bl MOD12_0223B758 + ldr r1, [r5] + ldr r0, _0224034C ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + add r5, #0x4c + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, pc} +_02240330: + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_0224034C: .word 0x00001130 + + thumb_func_start MOD12_02240350 +MOD12_02240350: ; 0x02240350 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02240364 +MOD12_02240364: ; 0x02240364 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x50 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x50 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0x10 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_0224039C: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224039C + ldr r0, [r6] + ldr r2, _022403B4 ; =0x00007530 + str r0, [r3] + ldr r0, _022403B8 ; =MOD12_022403BC + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022403B4: .word 0x00007530 +_022403B8: .word MOD12_022403BC + + thumb_func_start MOD12_022403BC +MOD12_022403BC: ; 0x022403BC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + cmp r0, #0 + beq _022403D2 + cmp r0, #1 + beq _0224040A + b _0224044E +_022403D2: + ldr r0, [r5] + bl MOD12_0223D588 + cmp r0, #0 + beq _02240484 + mov r4, #0 + mov r6, #2 + mov r7, #5 +_022403E2: + ldr r0, [r5] + add r1, r4, #0 + add r2, r6, #0 + bl MOD12_0223DCE8 + ldr r0, [r5] + add r1, r4, #0 + add r2, r7, #0 + bl MOD12_0223DCE8 + add r4, r4, #1 + cmp r4, #4 + blt _022403E2 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + add r5, #0x4c + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0224040A: + mov r7, #0 + add r6, r7, #0 + add r4, r7, #0 +_02240410: + ldr r0, [r5] + add r1, r4, #0 + bl MOD12_0223DDB0 + cmp r0, #1 + bne _0224041E + add r7, r7, #1 +_0224041E: + ldr r0, [r5] + add r1, r4, #0 + bl MOD12_0223DDE4 + cmp r0, #1 + bne _0224042C + add r6, r6, #1 +_0224042C: + add r4, r4, #1 + cmp r4, #4 + blt _02240410 + cmp r7, #4 + blt _02240484 + cmp r6, #4 + blt _02240484 + ldr r0, [r5] + bl MOD12_0223DCC0 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + add r5, #0x4c + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0224044E: + ldr r1, [r5] + ldr r0, _02240488 ; =0x00001130 + mov r2, #1 + ldr r0, [r1, r0] + mov r1, #0 + add r3, r1, #0 + bl MOD12_0223B758 + ldr r1, [r5] + ldr r0, _02240488 ; =0x00001130 + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + bl MOD12_0223C1F4 + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02240484: + pop {r3, r4, r5, r6, r7, pc} + nop +_02240488: .word 0x00001130 + + thumb_func_start MOD12_0224048C +MOD12_0224048C: ; 0x0224048C + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022404A0 +MOD12_022404A0: ; 0x022404A0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x20 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _02240504 ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + ldrh r0, [r5, #0x30] + strh r0, [r4, #0x14] + ldrh r0, [r5, #0x32] + strh r0, [r4, #0x16] + ldrh r0, [r5, #0x34] + strh r0, [r4, #0x18] + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + strb r0, [r4, #0x1a] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + add r5, #0x37 + strb r0, [r4, #0x1c] + ldrb r0, [r5] + strb r0, [r4, #0x1b] + ldr r0, _02240508 ; =MOD12_0224050C + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240504: .word 0x00007530 +_02240508: .word MOD12_0224050C + + thumb_func_start MOD12_0224050C +MOD12_0224050C: ; 0x0224050C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02240522 + cmp r0, #1 + beq _0224055A + cmp r0, #2 + beq _0224056C + b _022405A4 +_02240522: + ldrb r0, [r4, #0x1a] + cmp r0, #0 + beq _02240554 + ldr r0, [r4] + mov r1, #1 + add r0, #0x78 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + add r2, r4, #0 + ldrb r1, [r4, #0x1a] + ldr r0, [r4] + add r2, #0x14 + bl MOD12_0223E274 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02240554: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224055A: + ldr r0, [r4] + bl MOD12_0223E2A8 + cmp r0, #0 + bne _022405BC + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224056C: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _02240580 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02240580: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x1b] + cmp r1, r0 + blo _022405BC + ldr r0, [r4] + mov r1, #1 + add r0, #0x78 + bl FUN_0200D0E0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022405A4: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022405BC: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022405C0 +MOD12_022405C0: ; 0x022405C0 + push {r3, lr} + mov r1, #0x30 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022405D4 +MOD12_022405D4: ; 0x022405D4 + push {r4, r5, r6, lr} + add r4, r0, #0 + mov r0, #0xad + lsl r0, r0, #4 + add r6, r1, r0 + mov r5, #6 +_022405E0: + ldmia r3!, {r0, r1} + stmia r6!, {r0, r1} + sub r5, r5, #1 + bne _022405E0 + add r1, r2, #0 + mov r2, #0 + add r0, r4, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_022405F8 +MOD12_022405F8: ; 0x022405F8 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0224060C +MOD12_0224060C: ; 0x0224060C + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + bl FUN_0200541C + ldrh r0, [r4, #0x24] + bl FUN_0200521C + ldr r0, _02240640 ; =0x00001134 + mov r1, #1 + strb r1, [r5, r0] + add r1, r0, #4 + add r0, #0xc + add r1, r5, r1 + ldmia r1!, {r2, r3} + add r0, r5, r0 + stmia r0!, {r2, r3} + mov r2, #0 + add r0, r6, #0 + add r1, r7, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240640: .word 0x00001134 + + thumb_func_start MOD12_02240644 +MOD12_02240644: ; 0x02240644 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02240658 +MOD12_02240658: ; 0x02240658 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x54 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x54 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0x10 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_02240690: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02240690 + ldr r0, [r6] + ldr r2, _022406A8 ; =0x00007530 + str r0, [r3] + ldr r0, _022406AC ; =MOD12_022406B0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022406A8: .word 0x00007530 +_022406AC: .word MOD12_022406B0 + + thumb_func_start MOD12_022406B0 +MOD12_022406B0: ; 0x022406B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + cmp r0, #4 + bhi _0224074E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022406CC: ; jump table + .short _022406D6 - _022406CC - 2 ; case 0 + .short _022406EC - _022406CC - 2 ; case 1 + .short _02240704 - _022406CC - 2 ; case 2 + .short _02240718 - _022406CC - 2 ; case 3 + .short _02240734 - _022406CC - 2 ; case 4 +_022406D6: + ldr r1, [r4] + ldr r0, _02240768 ; =0x00001134 + mov r2, #0 + strb r2, [r1, r0] + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_022406EC: + ldrh r0, [r4, #0x34] + bl FUN_02005410 + cmp r0, #0 + bne _02240766 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02240704: + ldr r0, [r4] + bl MOD12_0223ECF0 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02240718: + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + cmp r0, #0x3c + bls _02240766 + mov r0, #0 + str r0, [r4, #0x4c] + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02240734: + ldr r0, _0224076C ; =0x0000046F + bl FUN_0200521C + ldr r0, _02240770 ; =0x000006E5 + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_0224074E: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02240766: + pop {r3, r4, r5, pc} + .align 2, 0 +_02240768: .word 0x00001134 +_0224076C: .word 0x0000046F +_02240770: .word 0x000006E5 + + thumb_func_start MOD12_02240774 +MOD12_02240774: ; 0x02240774 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + mov r1, #0 + mov r2, #0x3c + add r7, r3, #0 + bl MI_CpuFill8 + add r0, r5, #0 + add r0, #0x37 + strb r4, [r0] + add r0, r5, #0 + add r0, #0x38 + strb r6, [r0] + str r7, [r5, #0x30] + ldr r0, [sp, #0x18] + add r5, #0x39 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0224079C +MOD12_0224079C: ; 0x0224079C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r1, [r5, #0x30] + mov r2, #0x3c + str r1, [sp] + add r1, r5, #0 + add r1, #0x37 + ldrb r7, [r1] + add r1, r5, #0 + add r1, #0x38 + ldrb r6, [r1] + add r1, r5, #0 + add r1, #0x39 + ldrb r4, [r1] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, [sp] + str r0, [r5, #0x30] + add r0, r5, #0 + add r0, #0x37 + strb r7, [r0] + add r0, r5, #0 + add r0, #0x38 + strb r6, [r0] + add r5, #0x39 + strb r4, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_022407D4 +MOD12_022407D4: ; 0x022407D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r4, r1, #0 + add r7, r0, #0 + ldr r1, _022409BC ; =0x00001388 + lsr r0, r3, #2 + add r0, r0, r1 + lsl r1, r1, #1 + str r3, [sp] + bl _u32_div_f + str r0, [sp, #8] + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _022407FC + cmp r0, #1 + bne _02240806 +_022407FC: + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x10] + b _02240814 +_02240806: + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [sp] + lsr r0, r0, #1 + str r0, [sp] +_02240814: + mov r5, #0 + add r1, r5, #0 + add r0, sp, #0x24 + b _02240820 +_0224081C: + strb r1, [r0, r5] + add r5, r5, #1 +_02240820: + cmp r5, #0x10 + blt _0224081C + ldr r0, [sp, #0x10] + mov r6, #0 + sub r0, r0, #1 + str r0, [sp, #0x18] + add r0, r4, #0 + str r0, [sp, #0x14] + add r0, #0x30 + str r0, [sp, #0x14] +_02240834: + ldr r0, [r4, #0x30] + ldr r1, [sp, #0x14] + bl FUN_02082880 + ldr r1, [sp, #0x10] + bl _s32_div_f + add r5, r1, #0 + beq _02240834 + add r0, sp, #0x24 + ldrb r0, [r0, r5] + cmp r0, #0 + bne _02240834 + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _0224088E + ldr r0, [sp, #0x18] + cmp r5, r0 + bne _02240864 + sub r1, r5, #1 + add r0, sp, #0x24 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02240834 +_02240864: + sub r1, r5, #1 + add r0, sp, #0x24 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02240834 + add r1, r5, #1 + add r0, sp, #0x24 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02240834 + mov r0, #1 + tst r0, r5 + beq _0224088E + ldr r0, [r4, #0x30] + ldr r1, [sp, #0x14] + bl FUN_02082880 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x80 + blt _02240834 +_0224088E: + mov r1, #1 + add r0, sp, #0x24 + strb r1, [r0, r5] + ldr r0, _022409C0 ; =0x00000AFE + add r6, r6, #1 + ldrb r0, [r7, r0] + cmp r6, r0 + blt _02240834 + mov r6, #0 + add r5, r6, #0 + b _022408C4 +_022408A4: + add r0, sp, #0x24 + ldrb r0, [r0, r5] + cmp r0, #1 + bne _022408C2 + ldr r0, [sp] + add r1, r5, #0 + mul r1, r0 + ldr r0, _022409BC ; =0x00001388 + add r0, r1, r0 + ldr r1, _022409C4 ; =0x00002710 + bl _u32_div_f + lsl r1, r6, #2 + str r0, [r4, r1] + add r6, r6, #1 +_022408C2: + add r5, r5, #1 +_022408C4: + cmp r5, #0x10 + blt _022408A4 + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r4, #0 + add r1, #0x39 + ldrb r1, [r1] + bl MOD12_022409CC + add r6, r0, #0 + add r0, r4, #0 + str r0, [sp, #0x1c] + add r0, #0x30 + str r0, [sp, #0x1c] + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r0, r0, #1 + add r0, r0, #1 + mov r5, #0 + str r0, [sp, #0x20] + b _0224092C +_022408F2: + ldr r0, [r4, #0x30] + ldr r1, [sp, #0x1c] + bl FUN_02082880 + add r1, r6, #2 + bl _s32_div_f + lsl r0, r5, #2 + ldr r0, [r4, r0] + add r1, r0, r1 + ldr r0, [sp, #0x20] + sub r3, r1, r0 + bpl _0224090E + mov r3, #0 +_0224090E: + lsl r0, r5, #2 + ldr r1, [r4, r0] + ldr r0, [sp, #8] + sub r2, r3, r1 + cmp r2, r0 + blo _0224091E + add r0, r0, r1 + sub r3, r0, #1 +_0224091E: + lsl r0, r5, #2 + add r1, r4, r5 + str r3, [r4, r0] + add r1, #0x28 + mov r0, #1 + strb r0, [r1] + add r5, r5, #1 +_0224092C: + ldr r0, _022409C0 ; =0x00000AFE + ldrb r0, [r7, r0] + cmp r5, r0 + blt _022408F2 + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r1, [r1, r0] + ldr r0, _022409C8 ; =0x022464C4 + ldrb r0, [r0, r1] + add r1, r4, #0 + add r1, #0x30 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + bl FUN_02082880 + add r6, r4, #0 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r4, #0 + add r1, r2, r1 + add r0, #0x20 + strb r1, [r0] + mov r5, #1 + add r6, #0x30 + b _022409B0 +_02240966: + ldr r0, _022409C0 ; =0x00000AFE + ldrb r0, [r7, r0] + sub r0, r0, #1 + cmp r5, r0 + bge _02240994 + ldr r0, [r4, #0x30] + add r1, r6, #0 + bl FUN_02082880 + mov r1, #0x64 + bl _s32_div_f + ldr r0, [sp, #4] + cmp r0, r1 + ble _02240994 + sub r0, r5, #1 + add r0, r4, r0 + add r0, #0x20 + ldrb r1, [r0] + add r0, r4, r5 + add r0, #0x20 + strb r1, [r0] + b _022409AE +_02240994: + ldr r0, [r4, #0x30] + add r1, r6, #0 + bl FUN_02082880 + lsr r1, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r1 + mov r0, #0x1e + ror r2, r0 + add r0, r4, r5 + add r1, r1, r2 + add r0, #0x20 + strb r1, [r0] +_022409AE: + add r5, r5, #1 +_022409B0: + ldr r0, _022409C0 ; =0x00000AFE + ldrb r0, [r7, r0] + cmp r5, r0 + blt _02240966 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022409BC: .word 0x00001388 +_022409C0: .word 0x00000AFE +_022409C4: .word 0x00002710 +_022409C8: .word 0x022464C4 + + thumb_func_start MOD12_022409CC +MOD12_022409CC: ; 0x022409CC + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #4 + blo _022409DA + bl ErrorHandling +_022409DA: + ldr r0, _02240A0C ; =0x022464C0 + cmp r4, #3 + ldrsb r0, [r0, r5] + bhi _02240A02 + add r1, r4, r4 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022409EE: ; jump table + .short _022409F6 - _022409EE - 2 ; case 0 + .short _02240A08 - _022409EE - 2 ; case 1 + .short _022409FA - _022409EE - 2 ; case 2 + .short _02240A02 - _022409EE - 2 ; case 3 +_022409F6: + lsl r0, r0, #1 + pop {r3, r4, r5, pc} +_022409FA: + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + pop {r3, r4, r5, pc} +_02240A02: + mov r1, #3 + bl _s32_div_f +_02240A08: + pop {r3, r4, r5, pc} + nop +_02240A0C: .word 0x022464C0 + + thumb_func_start MOD12_02240A10 +MOD12_02240A10: ; 0x02240A10 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + add r5, r2, #0 + add r4, r3, #0 + cmp r7, #4 + blo _02240A22 + bl ErrorHandling +_02240A22: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _02240A3C + mov r0, #1 + add r1, r5, #0 + and r1, r0 + and r0, r4 + cmp r1, r0 + sub r0, r5, r4 + cmp r0, #4 + sub r0, r5, r4 + cmp r0, #8 +_02240A3C: + ldr r0, _02240A70 ; =0x022464C0 + cmp r6, #3 + ldrsb r0, [r0, r7] + bhi _02240A68 + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02240A50: ; jump table + .short _02240A58 - _02240A50 - 2 ; case 0 + .short _02240A5C - _02240A50 - 2 ; case 1 + .short _02240A60 - _02240A50 - 2 ; case 2 + .short _02240A68 - _02240A50 - 2 ; case 3 +_02240A58: + lsl r0, r0, #1 + b _02240A68 +_02240A5C: + lsl r0, r0, #1 + b _02240A68 +_02240A60: + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r1, r1, #1 + add r0, r0, r1 +_02240A68: + cmp r0, #0 + bge _02240A6E + mov r0, #0 +_02240A6E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240A70: .word 0x022464C0 + + thumb_func_start MOD12_02240A74 +MOD12_02240A74: ; 0x02240A74 + push {r4, r5} + mov r4, #0 + ldr r5, [sp, #8] + cmp r1, #3 + bhi _02240AB0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02240A8A: ; jump table + .short _02240A92 - _02240A8A - 2 ; case 0 + .short _02240A9A - _02240A8A - 2 ; case 1 + .short _02240AA2 - _02240A8A - 2 ; case 2 + .short _02240AAA - _02240A8A - 2 ; case 3 +_02240A92: + cmp r5, #1 + bne _02240AB0 + add r4, r4, #3 + b _02240AB0 +_02240A9A: + cmp r5, #2 + bne _02240AB0 + add r4, r4, #3 + b _02240AB0 +_02240AA2: + cmp r5, #4 + bne _02240AB0 + add r4, r4, #3 + b _02240AB0 +_02240AAA: + cmp r5, #3 + bne _02240AB0 + add r4, r4, #3 +_02240AB0: + ldr r1, [sp, #0xc] + cmp r1, #0 + beq _02240ABC + cmp r5, r1 + beq _02240ABC + add r4, #8 +_02240ABC: + mov r1, #0 + mvn r1, r1 + cmp r3, r1 + beq _02240ADA + mov r1, #1 + add r5, r2, #0 + and r5, r1 + and r1, r3 + cmp r5, r1 + beq _02240AD2 + add r4, r4, #2 +_02240AD2: + sub r1, r2, r3 + cmp r1, #8 + blt _02240ADA + add r4, r4, #5 +_02240ADA: + cmp r0, #3 + bhi _02240B02 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02240AEA: ; jump table + .short _02240AF2 - _02240AEA - 2 ; case 0 + .short _02240AF6 - _02240AEA - 2 ; case 1 + .short _02240AFA - _02240AEA - 2 ; case 2 + .short _02240B02 - _02240AEA - 2 ; case 3 +_02240AF2: + lsl r4, r4, #1 + b _02240B02 +_02240AF6: + lsl r4, r4, #1 + b _02240B02 +_02240AFA: + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r0, r0, #1 + add r4, r4, r0 +_02240B02: + add r0, r4, #0 + pop {r4, r5} + bx lr + + thumb_func_start MOD12_02240B08 +MOD12_02240B08: ; 0x02240B08 + push {r3, r4, lr} + sub sp, #0xc + add r4, r2, #0 + add r4, #0x38 + ldrb r4, [r4] + cmp r4, #0 + bne _02240B36 + cmp r0, #0 + bne _02240B36 + ldr r0, [sp, #0x1c] + str r0, [sp] + ldr r0, [sp, #0x20] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + str r0, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, [sp, #0x18] + bl MOD12_02240B5C + add sp, #0xc + pop {r3, r4, pc} +_02240B36: + cmp r4, #0 + beq _02240B56 + cmp r0, #1 + bne _02240B56 + ldr r0, [sp, #0x1c] + str r0, [sp] + ldr r0, [sp, #0x20] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + str r0, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, [sp, #0x18] + bl MOD12_02240C00 +_02240B56: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02240B5C +MOD12_02240B5C: ; 0x02240B5C + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r4, r1, #0 + add r0, r4, #0 + add r0, #0x38 + ldrb r3, [r0] + cmp r3, #0 + bne _02240BF6 + ldr r0, [sp, #0x3c] + add r1, #0x36 + ldrb r0, [r0, #5] + ldrb r1, [r1] + cmp r1, r0 + bhs _02240BF6 + mov r5, #0x34 + ldrsh r5, [r4, r5] + cmp r5, #0 + ble _02240B88 + sub r0, r5, #1 + add sp, #0x24 + strh r0, [r4, #0x34] + pop {r3, r4, r5, r6, pc} +_02240B88: + mov r5, #0 +_02240B8A: + add r6, r4, r5 + add r6, #0x28 + ldrb r6, [r6] + cmp r6, #1 + beq _02240B9A + add r5, r5, #1 + cmp r5, #8 + blt _02240B8A +_02240B9A: + cmp r5, #8 + bge _02240BF6 + lsl r6, r5, #2 + ldr r6, [r4, r6] + cmp r6, r2 + bhi _02240BF6 + ldr r6, [sp, #0x3c] + add r6, #8 + str r6, [sp] + add r6, sp, #0x18 + str r6, [sp, #4] + mov r6, #0 + str r6, [sp, #8] + str r3, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, r4, r5 + add r0, #0x37 + add r1, #0x20 + ldrb r0, [r0] + ldrb r1, [r1] + ldr r3, [sp, #0x38] + bl MOD12_0223FCAC + ldr r0, [sp, #0x40] + add r1, sp, #0x18 + bl MOD12_0223F56C + add r0, r4, r5 + add r1, r6, #0 + add r0, #0x28 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x36 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x36 + strb r1, [r0] + ldr r0, [sp, #0x38] + ldr r1, _02240BFC ; =0x00002710 + bl _u32_div_f + sub r0, r0, #2 + strh r0, [r4, #0x34] +_02240BF6: + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + nop +_02240BFC: .word 0x00002710 + + thumb_func_start MOD12_02240C00 +MOD12_02240C00: ; 0x02240C00 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r7, r0, #0 + ldr r0, [sp, #0x5c] + add r5, r1, #0 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x58] + str r2, [sp, #0x18] + lsr r0, r0, #1 + str r0, [sp, #0x34] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + beq _02240C3C + add r0, r5, #0 + add r0, #0x36 + ldrb r1, [r0] + ldr r0, [sp, #0x5c] + ldrb r0, [r0, #5] + cmp r1, r0 + bhs _02240C3C + mov r0, #0xa + mul r0, r1 + ldr r2, _02240DB4 ; =0x00001BA0 + add r4, r7, r0 + ldrb r2, [r4, r2] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + bne _02240C3E +_02240C3C: + b _02240DB0 +_02240C3E: + mov r6, #0x34 + ldrsh r2, [r5, r6] + cmp r2, #0 + ble _02240C4E + sub r0, r2, #1 + add sp, #0x44 + strh r0, [r5, #0x34] + pop {r4, r5, r6, r7, pc} +_02240C4E: + ldr r2, _02240DB4 ; =0x00001BA0 + sub r2, #8 + add r2, r7, r2 + add r4, r2, r0 + ldr r0, [sp, #0x18] + lsr r2, r3, #1 + sub r0, r0, r2 + str r0, [sp, #0x30] + ldrb r0, [r5, #5] + cmp r0, #0 + bne _02240D4C + cmp r1, #0 + bne _02240C70 + mov r0, #0 + sub r6, #0x35 + str r0, [sp, #0x1c] + b _02240C86 +_02240C70: + sub r1, r1, #1 + mov r0, #0xa + mul r0, r1 + ldr r1, _02240DB4 ; =0x00001BA0 + add r0, r7, r0 + sub r1, r1, #2 + ldrb r6, [r0, r1] + ldr r1, _02240DB4 ; =0x00001BA0 + sub r1, r1, #5 + ldrb r0, [r0, r1] + str r0, [sp, #0x1c] +_02240C86: + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r5, #0 + add r1, #0x39 + ldrb r1, [r1] + ldrb r2, [r4, #6] + add r3, r6, #0 + bl MOD12_02240A10 + str r0, [sp, #0x28] + ldrb r0, [r4, #3] + add r3, r6, #0 + str r0, [sp] + ldr r0, [sp, #0x1c] + str r0, [sp, #4] + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r5, #0 + add r1, #0x39 + ldrb r1, [r1] + ldrb r2, [r4, #6] + bl MOD12_02240A74 + str r0, [sp, #0x24] + ldrb r1, [r4, #6] + ldr r0, [sp, #0x34] + mul r0, r1 + ldr r1, _02240DB8 ; =0x00001388 + add r0, r0, r1 + lsl r1, r1, #1 + bl _u32_div_f + add r6, r0, #0 + add r1, r5, #0 + ldr r0, [r5, #0x30] + add r1, #0x30 + bl FUN_02082880 + ldr r1, [sp, #0x28] + add r1, r1, #2 + bl _s32_div_f + ldr r0, [sp, #0x28] + lsr r2, r0, #0x1f + add r2, r0, r2 + asr r0, r2, #1 + add r0, r0, #1 + sub r0, r1, r0 + add r0, r0, r6 + str r0, [sp, #0x2c] + bpl _02240CF8 + mov r0, #0 + str r0, [sp, #0x2c] +_02240CF8: + add r1, r5, #0 + ldr r0, [r5, #0x30] + add r1, #0x30 + bl FUN_02082880 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #0x28] + ldr r0, [sp, #0x24] + add r0, r2, r0 + cmp r1, r0 + bge _02240D38 + add r6, r5, #0 + add r6, #0x30 +_02240D16: + ldr r0, [r5, #0x30] + add r1, r6, #0 + bl FUN_02082880 + lsr r1, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r1 + mov r0, #0x1e + ror r2, r0 + add r0, r1, r2 + str r0, [sp, #0x20] + bl MOD12_0223FB80 + ldrb r1, [r4, #3] + cmp r1, r0 + beq _02240D16 + b _02240D40 +_02240D38: + ldrb r0, [r4, #3] + bl MOD12_0223FBB4 + str r0, [sp, #0x20] +_02240D40: + ldr r0, [sp, #0x2c] + str r0, [r5] + ldr r0, [sp, #0x20] + strb r0, [r5, #4] + mov r0, #1 + strb r0, [r5, #5] +_02240D4C: + ldr r1, [r5] + ldr r0, [sp, #0x30] + cmp r1, r0 + bhi _02240DB0 + ldr r0, [sp, #0x5c] + ldr r2, [sp, #0x18] + add r0, #8 + str r0, [sp] + add r0, sp, #0x38 + str r0, [sp, #4] + ldr r0, _02240DBC ; =0x00001B98 + ldr r3, [sp, #0x58] + add r0, r7, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + str r0, [sp, #0xc] + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + str r0, [sp, #0x10] + ldr r0, [sp, #0x5c] + ldrb r0, [r0, #5] + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x37 + ldrb r0, [r0] + ldrb r1, [r5, #4] + bl MOD12_0223FCAC + ldr r0, [sp, #0x60] + add r1, sp, #0x38 + bl MOD12_0223F56C + mov r0, #0 + strb r0, [r5, #5] + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x36 + strb r1, [r0] + ldr r0, [sp, #0x58] + ldr r1, _02240DC0 ; =0x00002710 + bl _u32_div_f + sub r0, r0, #2 + strh r0, [r5, #0x34] +_02240DB0: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02240DB4: .word 0x00001BA0 +_02240DB8: .word 0x00001388 +_02240DBC: .word 0x00001B98 +_02240DC0: .word 0x00002710 + + thumb_func_start MOD12_02240DC4 +MOD12_02240DC4: ; 0x02240DC4 + push {r4, lr} + add r4, r0, #0 + cmp r4, #5 + blo _02240DD0 + bl ErrorHandling +_02240DD0: + ldr r0, _02240DD8 ; =0x022464D0 + lsl r1, r4, #2 + ldr r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_02240DD8: .word 0x022464D0 + + thumb_func_start MOD12_02240DDC +MOD12_02240DDC: ; 0x02240DDC + mov r0, #0x31 + bx lr + + thumb_func_start MOD12_02240DE0 +MOD12_02240DE0: ; 0x02240DE0 + mov r0, #0x32 + bx lr + + thumb_func_start MOD12_02240DE4 +MOD12_02240DE4: ; 0x02240DE4 + push {r4, lr} + add r4, r0, #0 + cmp r4, #5 + blo _02240DF0 + bl ErrorHandling +_02240DF0: + ldr r0, _02240DF8 ; =0x022464C8 + ldrb r0, [r0, r4] + pop {r4, pc} + nop +_02240DF8: .word 0x022464C8 + + thumb_func_start MOD12_02240DFC +MOD12_02240DFC: ; 0x02240DFC + mov r0, #0x2e + bx lr + + thumb_func_start MOD12_02240E00 +MOD12_02240E00: ; 0x02240E00 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r3, #0 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + bl MOD12_02240DFC + str r0, [sp, #0xc] + add r0, r7, #0 + bl MOD12_02240DC4 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x28] + str r4, [sp, #4] + str r0, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C00C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02240E34 +MOD12_02240E34: ; 0x02240E34 + 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 + bl MOD12_02240DFC + str r0, [sp, #8] + bl MOD12_02240DDC + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + str r6, [sp, #4] + bl FUN_0200C124 + bl MOD12_02240DFC + add r6, r0, #0 + bl MOD12_02240DE0 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + str r7, [sp, #4] + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02240E7C +MOD12_02240E7C: ; 0x02240E7C + ldr r3, _02240E80 ; =0x0200C359 + bx r3 + .align 2, 0 +_02240E80: .word 0x0200C359 + + thumb_func_start MOD12_02240E84 +MOD12_02240E84: ; 0x02240E84 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + bl FUN_0200C378 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C388 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02240E98 +MOD12_02240E98: ; 0x02240E98 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r6, r3, #0 + add r4, r0, #0 + add r7, r1, #0 + add r5, sp, #0 + mov r3, #6 +_02240EA6: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _02240EA6 + ldr r0, [r6] + str r0, [r5] + add r0, r2, #0 + bl MOD12_02240DE4 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r7, #0 + add r2, sp, #0 + bl FUN_0200C154 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02240EC8 +MOD12_02240EC8: ; 0x02240EC8 + ldr r3, _02240ECC ; =0x0200C3DD + bx r3 + .align 2, 0 +_02240ECC: .word 0x0200C3DD + + thumb_func_start MOD12_02240ED0 +MOD12_02240ED0: ; 0x02240ED0 + push {r3, r4, r5, lr} + ldr r2, _02240EF4 ; =0x00000A18 + add r4, r1, #0 + mov r1, #0 + add r5, r0, #0 + bl MI_CpuFill8 + ldr r0, [r4] + str r0, [r5] + ldrh r0, [r4, #4] + strh r0, [r5, #4] + ldrb r0, [r4, #6] + strb r0, [r5, #6] + ldrb r0, [r4, #7] + strb r0, [r5, #7] + ldrb r0, [r4, #8] + strb r0, [r5, #8] + pop {r3, r4, r5, pc} + .align 2, 0 +_02240EF4: .word 0x00000A18 + + thumb_func_start MOD12_02240EF8 +MOD12_02240EF8: ; 0x02240EF8 + push {r3, r4, r5, lr} + ldr r5, [r0, #0xc] + mov r4, #0 + mov r2, #1 +_02240F00: + add r3, r2, #0 + lsl r3, r4 + add r1, r5, #0 + tst r1, r3 + bne _02240F14 + ldr r1, [r0, #0xc] + orr r1, r3 + str r1, [r0, #0xc] + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02240F14: + add r4, r4, #1 + cmp r4, #0x20 + blt _02240F00 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02240F24 +MOD12_02240F24: ; 0x02240F24 + push {r3, r4} + mov r2, #1 + add r3, r2, #0 + lsl r3, r1 + sub r1, r2, #2 + ldr r4, [r0, #0xc] + eor r1, r3 + and r1, r4 + str r1, [r0, #0xc] + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_02240F3C +MOD12_02240F3C: ; 0x02240F3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, [sp, #0x28] + add r5, r0, #0 + mov r0, #2 + str r4, [sp, #4] + add r4, #8 + lsl r0, r0, #8 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + cmp r4, r0 + bls _02240F5A + bl ErrorHandling +_02240F5A: + add r0, r5, #0 + mov r2, #2 + add r0, #0x10 + mov r1, #0 + lsl r2, r2, #8 + bl MI_CpuFill8 + add r0, sp, #8 + strb r6, [r0, #4] + strh r7, [r0, #2] + add r0, r5, #0 + bl MOD12_02240EF8 + add r1, sp, #8 + strb r0, [r1, #5] + mov r0, #0 + strb r0, [r1, #6] + strh r4, [r1] + add r1, r5, #0 + add r0, sp, #8 + add r1, #0x10 + mov r2, #8 + bl MIi_CpuCopy32 + add r1, r5, #0 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, #0x18 + bl MI_CpuCopy8 + ldr r0, _02240FAC ; =0x00000A15 + mov r1, #0 + strb r1, [r5, r0] + mov r1, #1 + sub r0, r0, #5 + strb r1, [r5, r0] + add r0, sp, #8 + ldrb r0, [r0, #5] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240FAC: .word 0x00000A15 + + thumb_func_start MOD12_02240FB0 +MOD12_02240FB0: ; 0x02240FB0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r7, r3, #0 + mov r0, #2 + add r7, #8 + lsl r0, r0, #8 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp] + cmp r7, r0 + bls _02240FCC + bl ErrorHandling +_02240FCC: + add r0, r5, #0 + mov r2, #2 + add r0, #0x10 + mov r1, #0 + lsl r2, r2, #8 + bl MI_CpuFill8 + ldrh r2, [r4] + add r1, sp, #4 + add r0, sp, #4 + strh r2, [r1] + ldrh r2, [r4, #2] + strh r2, [r1, #2] + ldrh r2, [r4, #4] + strh r2, [r1, #4] + ldrh r2, [r4, #6] + strh r2, [r1, #6] + mov r2, #0xfe + strb r2, [r1, #4] + mov r2, #1 + strb r2, [r1, #6] + strh r7, [r1] + add r1, r5, #0 + add r1, #0x10 + mov r2, #8 + bl MIi_CpuCopy32 + cmp r6, #0 + beq _02241012 + add r1, r5, #0 + ldr r2, [sp] + add r0, r6, #0 + add r1, #0x18 + bl MI_CpuCopy8 +_02241012: + mov r0, #0xa1 + mov r1, #1 + lsl r0, r0, #4 + strb r1, [r5, r0] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02241020 +MOD12_02241020: ; 0x02241020 + push {r4, r5} + lsl r5, r1, #9 + mov r1, #0x21 + lsl r1, r1, #4 + add r4, r0, r1 + add r1, #8 + add r4, r4, r5 + add r0, r0, r1 + str r4, [r2] + add r0, r0, r5 + str r0, [r3] + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD12_0224103C +MOD12_0224103C: ; 0x0224103C + mov r1, #0xa1 + lsl r1, r1, #4 + ldrb r0, [r0, r1] + cmp r0, #1 + bne _0224104A + mov r0, #0 + bx lr +_0224104A: + mov r0, #1 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241050 +MOD12_02241050: ; 0x02241050 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + bl MOD12_0224103C + cmp r0, #0 + bne _02241066 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02241066: + ldrh r0, [r5, #4] + cmp r4, r0 + blt _02241070 + bl ErrorHandling +_02241070: + add r0, r5, #0 + add r1, r6, #0 + mov r6, #0xc + ldr r5, [r5] + mul r6, r4 + add r2, r4, #0 + ldr r4, [r5, r6] + add r3, r7, #0 + blx r4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02241088 +MOD12_02241088: ; 0x02241088 + cmp r0, r2 + beq _02241098 + cmp r2, #0xff + beq _02241098 + cmp r2, #0xfe + bne _0224109C + cmp r1, r0 + bne _0224109C +_02241098: + mov r0, #1 + bx lr +_0224109C: + mov r0, #0 + bx lr + + thumb_func_start MOD12_022410A0 +MOD12_022410A0: ; 0x022410A0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xa1 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _022410B2 + mov r0, #0 + pop {r4, pc} +_022410B2: + ldrb r0, [r4, #7] + cmp r0, #0 + bne _022410F0 + ldrb r1, [r4, #6] + mov r2, #0x21 + lsl r2, r2, #4 + add r0, r4, #0 + add r3, r4, r2 + lsl r1, r1, #9 + add r0, #0x10 + add r1, r3, r1 + sub r2, #0x10 + bl MI_CpuCopy8 + ldrb r0, [r4, #6] + mov r2, #1 + add r1, r4, r0 + ldr r0, _02241110 ; =0x00000A11 + strb r2, [r1, r0] + add r0, r4, #0 + add r0, #0x10 + mov r1, #0 + lsl r2, r2, #9 + bl MI_CpuFill8 + mov r0, #0xa1 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_022410F0: + ldrh r2, [r4, #0x10] + add r1, r4, #0 + mov r0, #0x18 + add r1, #0x10 + bl FUN_02030A78 + cmp r0, #1 + bne _0224110C + mov r0, #0xa1 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_0224110C: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02241110: .word 0x00000A11 + + thumb_func_start MOD12_02241114 +MOD12_02241114: ; 0x02241114 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r0, #0 + add r4, r1, #0 + add r0, sp, #0x18 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldr r0, _022411EC ; =0x00000A11 + mov r6, #0 +_0224112A: + add r1, r7, r6 + ldrb r1, [r1, r0] + cmp r1, #1 + bne _022411DE + add r0, r7, #0 + add r1, r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x10 + bl MOD12_02241020 + ldr r2, [sp, #0x14] + ldrb r0, [r7, #6] + ldrb r1, [r7, #8] + ldrb r2, [r2, #4] + bl MOD12_02241088 + cmp r0, #1 + bne _022411C0 + ldr r2, [sp, #0x14] + ldrh r1, [r7, #4] + ldrh r0, [r2, #2] + str r0, [sp, #8] + cmp r0, r1 + bhs _022411C0 + ldrb r0, [r2, #6] + cmp r0, #0 + bne _0224117A + add r1, r4, #0 + ldr r4, [r7] + ldr r5, [sp, #8] + str r4, [sp, #4] + mov r4, #0xc + mul r4, r5 + ldr r5, [sp, #4] + ldr r3, [sp, #0x10] + add r4, r5, r4 + ldr r4, [r4, #4] + add r0, r7, #0 + blx r4 + b _022411C0 +_0224117A: + ldr r1, [sp, #8] + mov r3, #0xc + ldr r0, [r7] + mul r3, r1 + add r0, r0, r3 + ldr r0, [r0, #8] + cmp r0, #0 + beq _022411AE + ldr r1, [sp, #0x10] + lsl r0, r6, #2 + add r3, sp, #0x18 + str r1, [r3, r0] + str r6, [sp] + add r1, r4, #0 + ldr r4, [r7] + mov r5, #0xc + mov ip, r4 + ldrh r4, [r2, #2] + add r0, r7, #0 + mul r5, r4 + str r5, [sp, #0xc] + ldr r4, [sp, #0xc] + mov r5, ip + add r4, r5, r4 + ldr r4, [r4, #8] + blx r4 +_022411AE: + ldr r1, [sp, #0x14] + add r0, r7, #0 + ldrb r1, [r1, #5] + bl MOD12_02240F24 + ldr r0, _022411F0 ; =0x00000A15 + ldrb r1, [r7, r0] + add r1, r1, #1 + strb r1, [r7, r0] +_022411C0: + ldr r0, _022411EC ; =0x00000A11 + mov r1, #0 + add r2, r7, r6 + strb r1, [r2, r0] + mov r2, #0x21 + lsl r2, r2, #4 + add r3, r7, r2 + lsl r0, r6, #9 + add r0, r3, r0 + sub r2, #0x10 + bl MI_CpuFill8 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022411DE: + add r6, r6, #1 + cmp r6, #4 + blt _0224112A + mov r0, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_022411EC: .word 0x00000A11 +_022411F0: .word 0x00000A15 + + thumb_func_start MOD12_022411F4 +MOD12_022411F4: ; 0x022411F4 + cmp r2, r3 + beq _022411FC + mov r0, #1 + bx lr +_022411FC: + ldr r2, _0224120C ; =0x00000A15 + ldrb r0, [r0, r2] + cmp r0, r1 + blt _02241208 + mov r0, #1 + bx lr +_02241208: + mov r0, #0 + bx lr + .align 2, 0 +_0224120C: .word 0x00000A15 + + thumb_func_start MOD12_02241210 +MOD12_02241210: ; 0x02241210 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _02241454 ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _02241458 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _0224145C ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #7 + mov r0, #3 + mov r1, #0x18 + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #0x4a + add r0, r4, #0 + lsl r1, r1, #6 + mov r2, #0x18 + bl FUN_02006268 + mov r2, #0x4a + mov r1, #0 + lsl r2, r2, #6 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0x18 + bl MOD12_022312D8 + str r0, [r5, #0xc] + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r5] + lsl r1, r1, #2 + str r5, [r0, r1] + ldr r2, [r5] + mov r3, #3 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r5] + str r0, [r5, #0x10] + add r0, r5, #0 + bl MOD12_02241B4C + ldr r0, _02241460 ; =0x0000127F + mov r1, #0 + strb r1, [r5, r0] + mov r0, #0x18 + bl FUN_02002FD0 + add r1, r5, #0 + add r1, #0xd0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #1 + bl FUN_020038F0 + add r0, r5, #0 + add r0, #0xd0 + mov r2, #2 + ldr r0, [r0] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x18 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xd0 + mov r1, #1 + ldr r0, [r0] + lsl r2, r1, #9 + mov r3, #0x18 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xd0 + mov r2, #7 + ldr r0, [r0] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x18 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xd0 + mov r2, #2 + ldr r0, [r0] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x18 + bl FUN_02003008 + mov r0, #0x18 + bl FUN_02016B94 + str r0, [r5, #0x30] + mov r0, #0x40 + mov r1, #0x18 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + ldr r0, [r5, #0x30] + bl MOD12_02241864 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x18 + bl FUN_02002C50 + mov r0, #0x18 + bl FUN_0200BB14 + ldr r1, _02241464 ; =0x0224654C + ldr r2, _02241468 ; =0x02246504 + mov r3, #0x20 + str r0, [r5, #0x28] + bl FUN_0200BB6C + ldr r1, _0224146C ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r5, #0x28] + bl FUN_0200BB34 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _02241470 ; =0x02246518 + bl FUN_0200BF60 + mov r0, #0x18 + bl FUN_02006D98 + str r0, [r5, #0x14] + bl MOD12_02241B0C + mov r0, #0 + mov r1, #0x1a + mov r2, #0xcc + mov r3, #0x18 + bl FUN_0200A86C + add r1, r5, #0 + add r1, #0xc4 + str r0, [r1] + mov r0, #0x18 + bl FUN_0200AA80 + add r1, r5, #0 + add r1, #0xc8 + str r0, [r1] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #0x18 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0xcc + str r0, [r1] + mov r0, #0xa + mov r1, #0x18 + bl FUN_02011744 + add r1, r5, #0 + add r1, #0xd4 + str r0, [r1] + add r0, r5, #0 + bl MOD12_02241B90 + add r0, r5, #0 + bl MOD12_02241BA0 + add r0, r5, #0 + bl MOD12_022419D0 + add r0, r5, #0 + bl MOD12_02241B78 + add r0, r5, #0 + bl MOD12_02241B88 + add r0, r5, #0 + bl MOD12_02242454 + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x18 + str r1, [sp, #8] + mov r1, #0x21 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _02241474 ; =MOD12_0224182C + ldr r2, _02241478 ; =0x00013880 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + mov r0, #0x85 + mov r1, #1 + lsl r0, r0, #4 + strb r1, [r5, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _0224147C ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r5] + ldr r0, _02241480 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + ldr r0, _02241484 ; =MOD12_02241754 + add r1, r5, #0 + bl FUN_02015F10 + ldr r0, _02241488 ; =MOD12_02241814 + add r1, r5, #0 + mov r2, #0xa + bl FUN_0200CA60 + str r0, [r5, #8] + ldr r0, _0224148C ; =0x000006E5 + bl FUN_020054C8 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02241454: .word 0xFFFFE0FF +_02241458: .word 0x04001000 +_0224145C: .word 0xFFFF1FFF +_02241460: .word 0x0000127F +_02241464: .word 0x0224654C +_02241468: .word 0x02246504 +_0224146C: .word 0x00100010 +_02241470: .word 0x02246518 +_02241474: .word MOD12_0224182C +_02241478: .word 0x00013880 +_0224147C: .word 0x0000046F +_02241480: .word 0x00000171 +_02241484: .word MOD12_02241754 +_02241488: .word MOD12_02241814 +_0224148C: .word 0x000006E5 + + thumb_func_start MOD12_02241490 +MOD12_02241490: ; 0x02241490 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _022414B2 + cmp r0, #1 + beq _022414E4 + cmp r0, #2 + beq _0224156C + b _0224157A +_022414B2: + bl FUN_0200E308 + cmp r0, #1 + bne _0224157A + ldr r0, _02241580 ; =MOD12_022417DC + add r1, r4, #0 + bl FUN_02015F34 + mov r0, #0xff + str r0, [sp] + ldr r0, _02241584 ; =0x0000D6D8 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0xd0 + ldr r1, [r1] + ldr r2, _02241588 ; =0x022464F4 + mov r0, #0x18 + mov r3, #8 + bl MOD12_022318A4 + ldr r1, _0224158C ; =0x00000848 + str r0, [r4, r1] + mov r0, #1 + str r0, [r5] + b _0224157A +_022414E4: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _02241540 + ldr r2, _02241590 ; =0x0000084E + ldr r1, _02241594 ; =0x00001274 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _02241598 ; =0x02246594 + ldr r2, [r2, r3] + blx r2 + cmp r0, #1 + beq _02241508 + cmp r0, #2 + bne _0224152A +_02241508: + cmp r0, #1 + bne _02241514 + ldr r0, _02241590 ; =0x0000084E + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0224151A +_02241514: + ldr r0, _0224159C ; =0x00001276 + ldrh r1, [r4, r0] + ldr r0, _02241590 ; =0x0000084E +_0224151A: + strh r1, [r4, r0] + ldr r0, _02241594 ; =0x00001274 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _02241540 +_0224152A: + cmp r0, #3 + bne _02241540 + mov r0, #2 + str r0, [r5] + ldr r0, _02241594 ; =0x00001274 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _0224157A +_02241540: + ldr r0, _022415A0 ; =0x0000085C + add r0, r4, r0 + bl MOD12_022410A0 + ldr r0, _022415A0 ; =0x0000085C + add r1, r4, #0 + add r0, r4, r0 + bl MOD12_02241114 + ldr r0, _022415A4 ; =0x0000127C + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0224157A + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + b _0224157A +_0224156C: + bl FUN_0200E308 + cmp r0, #1 + bne _0224157A + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224157A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02241580: .word MOD12_022417DC +_02241584: .word 0x0000D6D8 +_02241588: .word 0x022464F4 +_0224158C: .word 0x00000848 +_02241590: .word 0x0000084E +_02241594: .word 0x00001274 +_02241598: .word 0x02246594 +_0224159C: .word 0x00001276 +_022415A0: .word 0x0000085C +_022415A4: .word 0x0000127C + + thumb_func_start MOD12_022415A8 +MOD12_022415A8: ; 0x022415A8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02012EAC + add r0, r4, #0 + bl MOD12_02241B80 + add r0, r4, #0 + bl MOD12_02241B8C + add r0, r4, #0 + bl MOD12_02241B98 + add r0, r4, #0 + bl MOD12_02241BF8 + add r5, r4, #0 + mov r6, #0 + add r5, #0x34 +_022415D4: + add r0, r5, #0 + bl FUN_02019178 + add r6, r6, #1 + add r5, #0x10 + cmp r6, #9 + blt _022415D4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl FUN_020178A0 + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x30] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl FUN_0200C398 + ldr r0, [r4, #0x28] + bl FUN_0200BD04 + bl FUN_0201C29C + add r0, r4, #0 + add r0, #0x10 + bl MOD12_022424D4 + ldr r0, [r4, #0x14] + bl FUN_020072E8 + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_020117BC + mov r0, #2 + bl FUN_02002CF8 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #1 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #2 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #3 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02002FEC + add r0, r4, #0 + add r0, #0xcc + ldr r0, [r0] + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_0200AB18 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_0200A8B8 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD12_02231378 + bl FUN_0201CD04 + add r0, r7, #0 + bl FUN_0200627C + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02241734 ; =0xFFFF1FFF + and r1, r0 + str r1, [r2] + ldr r2, _02241738 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x18 + bl FUN_020168D0 + bl FUN_02083404 + mov r1, #5 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + lsl r1, r1, #0x18 + lsl r2, r2, #8 + bl MIi_CpuClear16 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + ldr r1, _02241740 ; =0x05000200 + lsl r2, r2, #8 + bl MIi_CpuClear16 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + ldr r1, _02241744 ; =0x05000400 + lsl r2, r2, #8 + bl MIi_CpuClear16 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + ldr r1, _02241748 ; =0x05000600 + lsl r2, r2, #8 + bl MIi_CpuClear16 + bl FUN_02033ED0 + ldr r0, _0224174C ; =SDK_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _02241750 ; =SDK_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241734: .word 0xFFFF1FFF +_02241738: .word 0x04001000 +_0224173C: .word 0x00007FFF +_02241740: .word 0x05000200 +_02241744: .word 0x05000400 +_02241748: .word 0x05000600 +_0224174C: .word SDK_MODULE_08_ID +_02241750: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_02241754 +MOD12_02241754: ; 0x02241754 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, _022417CC ; =0x00000854 + sub r1, r0, #2 + ldrb r3, [r4, r1] + sub r1, r0, #3 + ldrb r1, [r4, r1] + sub r6, r0, #1 + ldrb r6, [r4, r6] + lsl r2, r1, #8 + mov r1, #0xff + lsl r1, r1, #8 + and r2, r1 + orr r2, r6 + ldrb r5, [r4, r0] + ldr r6, _022417D0 ; =0x04000040 + strh r2, [r6] + lsl r2, r3, #8 + and r2, r1 + orr r2, r5 + strh r2, [r6, #4] + add r2, r0, #4 + ldrb r5, [r4, r2] + add r2, r0, #2 + ldrb r3, [r4, r2] + add r2, r0, #1 + ldrb r2, [r4, r2] + add r0, r0, #3 + ldrb r0, [r4, r0] + lsl r2, r2, #8 + and r2, r1 + orr r0, r2 + strh r0, [r6, #2] + lsl r0, r3, #8 + and r0, r1 + orr r0, r5 + strh r0, [r6, #6] + ldr r0, [r4, #0x14] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_0200372C + ldr r0, [r4, #0x30] + bl FUN_0201AB60 + ldr r3, _022417D4 ; =0x027E0000 + ldr r1, _022417D8 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, r5, r6, pc} + nop +_022417CC: .word 0x00000854 +_022417D0: .word 0x04000040 +_022417D4: .word 0x027E0000 +_022417D8: .word 0x00003FF8 + + thumb_func_start MOD12_022417DC +MOD12_022417DC: ; 0x022417DC + push {r3, lr} + ldr r1, _0224180C ; =0x0000127F + ldrb r0, [r0, r1] + cmp r0, #1 + bne _02241808 + ldr r0, _02241810 ; =0x04000006 + ldrh r0, [r0] + cmp r0, #0x90 + blt _022417FC + cmp r0, #0x98 + bgt _022417FC + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + pop {r3, pc} +_022417FC: + cmp r0, #0x90 + bge _02241808 + mov r0, #1 + mov r1, #2 + bl FUN_020178BC +_02241808: + pop {r3, pc} + nop +_0224180C: .word 0x0000127F +_02241810: .word 0x04000006 + + thumb_func_start MOD12_02241814 +MOD12_02241814: ; 0x02241814 + push {r3, lr} + ldr r0, _02241828 ; =0x0000127F + ldrb r0, [r1, r0] + cmp r0, #1 + bne _02241826 + mov r0, #1 + mov r1, #2 + bl FUN_020178BC +_02241826: + pop {r3, pc} + .align 2, 0 +_02241828: .word 0x0000127F + + thumb_func_start MOD12_0224182C +MOD12_0224182C: ; 0x0224182C + push {r4, lr} + mov r0, #0x85 + add r4, r1, #0 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _02241854 + ldr r0, [r4, #0x14] + bl FUN_02006ED4 + bl FUN_02215A44 + ldr r0, [r4, #0x2c] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _02241860 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_02241854: + ldr r1, [r4, #0x30] + mov r0, #0x18 + bl FUN_020335F0 + pop {r4, pc} + nop +_02241860: .word 0x04000540 + + thumb_func_start MOD12_02241864 +MOD12_02241864: ; 0x02241864 + push {r3, r4, r5, lr} + sub sp, #0xa8 + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _022419BC ; =0x0224656C + add r3, sp, #0x2c + mov r2, #5 +_02241874: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02241874 + add r0, sp, #0x2c + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + ldr r5, _022419C0 ; =0x022464E4 + add r3, sp, #0x1c + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _022419C4 ; =0x022465C0 + add r3, sp, #0x54 + mov r2, #0xa +_022418D4: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022418D4 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x8c + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _022419C8 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r2, r0 + strh r2, [r1] + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r5, _022419CC ; =0x02246530 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #4 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #4 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add sp, #0xa8 + pop {r3, r4, r5, pc} + .align 2, 0 +_022419BC: .word 0x0224656C +_022419C0: .word 0x022464E4 +_022419C4: .word 0x022465C0 +_022419C8: .word 0x04000008 +_022419CC: .word 0x02246530 + + thumb_func_start MOD12_022419D0 +MOD12_022419D0: ; 0x022419D0 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x34 + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + mov r2, #1 + add r1, r4, #0 + str r2, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x8b + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r1, #0x44 + mov r3, #6 + bl FUN_02019064 + mov r0, #5 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xa3 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x54 + mov r2, #1 + mov r3, #6 + bl FUN_02019064 + mov r0, #9 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xbb + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x64 + mov r2, #1 + mov r3, #6 + bl FUN_02019064 + mov r1, #0xd + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0xd3 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x74 + mov r2, #1 + mov r3, #6 + bl FUN_02019064 + mov r2, #1 + add r1, r4, #0 + str r2, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xeb + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r1, #0x84 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #5 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + add r0, #0xf6 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x94 + mov r2, #1 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #9 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02241B04 ; =0x0000011B + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r1, #0xa4 + mov r2, #1 + mov r3, #0x10 + bl FUN_02019064 + mov r1, #0xd + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _02241B08 ; =0x00000133 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r4, #0xb4 + add r1, r4, #0 + mov r2, #1 + mov r3, #0x10 + bl FUN_02019064 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_02241B04: .word 0x0000011B +_02241B08: .word 0x00000133 + + thumb_func_start MOD12_02241B0C +MOD12_02241B0C: ; 0x02241B0C + push {r3, r4, r5, lr} + ldr r3, _02241B44 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _02241B48 ; =0x021064C0 + mov r1, #0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + add r2, r1, #0 + blx r3 + add r5, r0, #0 + cmp r4, #0 + bne _02241B34 + bl ErrorHandling +_02241B34: + cmp r5, #0 + bne _02241B3C + bl ErrorHandling +_02241B3C: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_02241B44: .word 0x021064B8 +_02241B48: .word 0x021064C0 + + thumb_func_start MOD12_02241B4C +MOD12_02241B4C: ; 0x02241B4C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _02241B5A + bl ErrorHandling +_02241B5A: + mov r1, #0xf3 + mov r5, #0 + mov r0, #3 + lsl r1, r1, #2 +_02241B62: + sub r3, r0, r5 + add r2, r4, r5 + add r5, r5, #1 + strb r3, [r2, r1] + cmp r5, #4 + blt _02241B62 + add r0, r4, #0 + bl MOD12_02243A20 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02241B78 +MOD12_02241B78: ; 0x02241B78 + ldr r3, _02241B7C ; =MOD12_0224278C + bx r3 + .align 2, 0 +_02241B7C: .word MOD12_0224278C + + thumb_func_start MOD12_02241B80 +MOD12_02241B80: ; 0x02241B80 + ldr r3, _02241B84 ; =MOD12_02242A6C + bx r3 + .align 2, 0 +_02241B84: .word MOD12_02242A6C + + thumb_func_start MOD12_02241B88 +MOD12_02241B88: ; 0x02241B88 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241B8C +MOD12_02241B8C: ; 0x02241B8C + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241B90 +MOD12_02241B90: ; 0x02241B90 + ldr r3, _02241B94 ; =MOD12_022426BC + bx r3 + .align 2, 0 +_02241B94: .word MOD12_022426BC + + thumb_func_start MOD12_02241B98 +MOD12_02241B98: ; 0x02241B98 + ldr r3, _02241B9C ; =MOD12_02242A18 + bx r3 + .align 2, 0 +_02241B9C: .word MOD12_02242A18 + + thumb_func_start MOD12_02241BA0 +MOD12_02241BA0: ; 0x02241BA0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x12 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x13 + mov r3, #4 + bl FUN_020068C8 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r4, #0xd0 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x2d + mov r2, #0x21 + mov r3, #0x18 + bl FUN_020030E8 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02241BF8 +MOD12_02241BF8: ; 0x02241BF8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241BFC +MOD12_02241BFC: ; 0x02241BFC + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + ldrh r1, [r7] + add r4, r0, #0 + cmp r1, #0 + beq _02241C12 + cmp r1, #1 + beq _02241CA0 + cmp r1, #2 + beq _02241CBE + b _02241CE0 +_02241C12: + bl MOD12_022436D0 + mov r0, #0x13 + ldr r2, [r4] + mov r5, #0 + lsl r0, r0, #4 +_02241C1E: + ldrb r1, [r2, r0] + cmp r1, #0 + beq _02241C2C + add r5, r5, #1 + add r2, #0xc + cmp r5, #4 + blt _02241C1E +_02241C2C: + cmp r5, #4 + bne _02241C34 + bl ErrorHandling +_02241C34: + ldr r0, _02241CE8 ; =0x00000438 + ldr r1, _02241CEC ; =0x00000439 + strb r5, [r4, r0] + mov r5, #0 + sub r0, #0x67 +_02241C3E: + add r3, r4, r5 + ldrb r2, [r3, r0] + add r5, r5, #1 + cmp r5, #4 + strb r2, [r3, r1] + blt _02241C3E + mov r3, #0 + add r1, r3, #0 + add r2, r4, #0 +_02241C50: + ldr r0, [r4] + mov r5, #0x4a + add r0, r0, r1 + lsl r5, r5, #2 + ldrh r6, [r0, r5] + mov r5, #0xe7 + lsl r5, r5, #2 + strh r6, [r2, r5] + ldr r5, _02241CF0 ; =0x0000012A + add r3, r3, #1 + ldrh r6, [r0, r5] + ldr r5, _02241CF4 ; =0x0000039E + add r1, #0xc + strh r6, [r2, r5] + mov r5, #0x4b + lsl r5, r5, #2 + ldrh r6, [r0, r5] + mov r5, #0x3a + lsl r5, r5, #4 + strh r6, [r2, r5] + ldr r5, _02241CF8 ; =0x0000012E + ldrh r6, [r0, r5] + ldr r5, _02241CFC ; =0x000003A2 + strh r6, [r2, r5] + mov r5, #0x13 + lsl r5, r5, #4 + ldrh r6, [r0, r5] + mov r5, #0xe9 + lsl r5, r5, #2 + strh r6, [r2, r5] + ldr r5, _02241D00 ; =0x00000132 + ldrh r5, [r0, r5] + ldr r0, _02241D04 ; =0x000003A6 + strh r5, [r2, r0] + add r2, #0xc + cmp r3, #4 + blt _02241C50 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_02241CA0: + ldr r0, _02241D08 ; =0x0000085C + mov r3, #0xe7 + lsl r3, r3, #2 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #1 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241CE4 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _02241CE4 +_02241CBE: + ldr r0, _02241D08 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02241D0C ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241CE4 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _02241CE4 +_02241CE0: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02241CE4: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241CE8: .word 0x00000438 +_02241CEC: .word 0x00000439 +_02241CF0: .word 0x0000012A +_02241CF4: .word 0x0000039E +_02241CF8: .word 0x0000012E +_02241CFC: .word 0x000003A2 +_02241D00: .word 0x00000132 +_02241D04: .word 0x000003A6 +_02241D08: .word 0x0000085C +_02241D0C: .word 0x00000127 + + thumb_func_start MOD12_02241D10 +MOD12_02241D10: ; 0x02241D10 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02241D22 + cmp r0, #1 + beq _02241D5C + b _02241D7E +_02241D22: + ldr r3, _02241D88 ; =0x00000445 + mov r1, #0 + strb r1, [r5, r3] + add r0, r3, #2 + strb r1, [r5, r0] + add r0, r3, #1 + strb r1, [r5, r0] + add r0, r3, #0 + sub r0, #0x79 + ldrb r1, [r5, r0] + sub r0, r3, #7 + mov r2, #5 + strb r1, [r5, r0] + sub r0, r3, #1 + mov r1, #1 + strb r1, [r5, r0] + ldr r0, _02241D8C ; =0x0000085C + sub r3, #0xf + add r0, r5, r0 + add r1, r5, #0 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241D82 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241D82 +_02241D5C: + ldr r0, _02241D8C ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02241D90 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241D82 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241D82 +_02241D7E: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241D82: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02241D88: .word 0x00000445 +_02241D8C: .word 0x0000085C +_02241D90: .word 0x00000127 + + thumb_func_start MOD12_02241D94 +MOD12_02241D94: ; 0x02241D94 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02241DA6 + cmp r0, #1 + beq _02241DC4 + b _02241DE6 +_02241DA6: + ldr r0, _02241DF0 ; =0x0000085C + mov r3, #0xe7 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #6 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241DEA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241DEA +_02241DC4: + ldr r0, _02241DF0 ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02241DF4 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241DEA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241DEA +_02241DE6: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241DEA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02241DF0: .word 0x0000085C +_02241DF4: .word 0x00000127 + + thumb_func_start MOD12_02241DF8 +MOD12_02241DF8: ; 0x02241DF8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02241E0E + cmp r0, #1 + beq _02241E40 + cmp r0, #2 + beq _02241E62 + b _02241E74 +_02241E0E: + ldr r3, _02241E7C ; =0x00000445 + mov r0, #0 + strb r0, [r5, r3] + mov r1, #1 + add r0, r3, #2 + strb r1, [r5, r0] + add r0, r3, #1 + strb r1, [r5, r0] + sub r0, r3, #1 + mov r1, #6 + strb r1, [r5, r0] + ldr r0, _02241E80 ; =0x0000085C + sub r3, #0xf + add r0, r5, r0 + add r1, r5, #0 + mov r2, #5 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241E78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241E78 +_02241E40: + ldr r0, _02241E80 ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02241E84 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241E78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241E78 +_02241E62: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x3c + ble _02241E78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241E78 +_02241E74: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241E78: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02241E7C: .word 0x00000445 +_02241E80: .word 0x0000085C +_02241E84: .word 0x00000127 + + thumb_func_start MOD12_02241E88 +MOD12_02241E88: ; 0x02241E88 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #4 + bhi _02241F78 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241EA0: ; jump table + .short _02241EAA - _02241EA0 - 2 ; case 0 + .short _02241F00 - _02241EA0 - 2 ; case 1 + .short _02241F22 - _02241EA0 - 2 ; case 2 + .short _02241F44 - _02241EA0 - 2 ; case 3 + .short _02241F66 - _02241EA0 - 2 ; case 4 +_02241EAA: + ldr r1, [r3] + ldr r0, _02241F80 ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #4 + bhi _02241ECA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241EC0: ; jump table + .short _02241ECE - _02241EC0 - 2 ; case 0 + .short _02241ECE - _02241EC0 - 2 ; case 1 + .short _02241ECE - _02241EC0 - 2 ; case 2 + .short _02241ECE - _02241EC0 - 2 ; case 3 + .short _02241ECE - _02241EC0 - 2 ; case 4 +_02241ECA: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241ECE: + ldr r5, _02241F84 ; =0x00000445 + mov r0, #0 + strb r0, [r3, r5] + mov r1, #1 + add r0, r5, #2 + strb r1, [r3, r0] + add r0, r5, #1 + strb r1, [r3, r0] + sub r0, r5, #1 + mov r1, #2 + strb r1, [r3, r0] + ldr r0, _02241F88 ; =0x0000085C + sub r5, #0xf + add r0, r3, r0 + add r1, r3, #0 + mov r2, #5 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F00: + ldr r0, _02241F88 ; =0x0000085C + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _02241F8C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F22: + ldr r5, _02241F90 ; =0x0000043D + mov r0, #0 + strb r0, [r3, r5] + ldr r0, _02241F88 ; =0x0000085C + sub r5, r5, #7 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #9 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F44: + ldr r0, _02241F88 ; =0x0000085C + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _02241F8C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F66: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x3c + ble _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F78: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241F7C: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02241F80: .word 0x00000121 +_02241F84: .word 0x00000445 +_02241F88: .word 0x0000085C +_02241F8C: .word 0x00000127 +_02241F90: .word 0x0000043D + + thumb_func_start MOD12_02241F94 +MOD12_02241F94: ; 0x02241F94 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #4 + bhi _022420A0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241FAC: ; jump table + .short _02241FB6 - _02241FAC - 2 ; case 0 + .short _02242028 - _02241FAC - 2 ; case 1 + .short _0224204A - _02241FAC - 2 ; case 2 + .short _0224206C - _02241FAC - 2 ; case 3 + .short _0224208E - _02241FAC - 2 ; case 4 +_02241FB6: + ldr r1, [r4] + ldr r0, _022420A8 ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #6 + bhi _02241FDA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241FCC: ; jump table + .short _02241FDA - _02241FCC - 2 ; case 0 + .short _02241FDE - _02241FCC - 2 ; case 1 + .short _02241FDE - _02241FCC - 2 ; case 2 + .short _02241FDA - _02241FCC - 2 ; case 3 + .short _02241FDA - _02241FCC - 2 ; case 4 + .short _02241FDE - _02241FCC - 2 ; case 5 + .short _02241FDE - _02241FCC - 2 ; case 6 +_02241FDA: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241FDE: + ldr r1, _022420AC ; =0x00000445 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #1 + add r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x79 + ldrb r2, [r4, r0] + sub r0, r1, #7 + sub r1, #0x79 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + bl FUN_020832DC + ldr r3, _022420B0 ; =0x00000442 + add r0, r0, #1 + strb r0, [r4, r3] + add r0, r3, #2 + mov r1, #3 + strb r1, [r4, r0] + ldr r0, _022420B4 ; =0x0000085C + sub r3, #0xc + add r0, r4, r0 + add r1, r4, #0 + mov r2, #5 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_02242028: + ldr r0, _022420B4 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022420B8 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_0224204A: + ldr r3, _022420BC ; =0x0000043D + mov r0, #1 + strb r0, [r4, r3] + ldr r0, _022420B4 ; =0x0000085C + sub r3, r3, #7 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #9 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_0224206C: + ldr r0, _022420B4 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022420B8 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_0224208E: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + cmp r0, #0x5a + ble _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_022420A0: + mov r0, #1 + pop {r3, r4, r5, pc} +_022420A4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022420A8: .word 0x00000121 +_022420AC: .word 0x00000445 +_022420B0: .word 0x00000442 +_022420B4: .word 0x0000085C +_022420B8: .word 0x00000127 +_022420BC: .word 0x0000043D + + thumb_func_start MOD12_022420C0 +MOD12_022420C0: ; 0x022420C0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #4 + bls _022420CE + b _022421D2 +_022420CE: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022420DA: ; jump table + .short _022420E4 - _022420DA - 2 ; case 0 + .short _0224215A - _022420DA - 2 ; case 1 + .short _0224217C - _022420DA - 2 ; case 2 + .short _0224219E - _022420DA - 2 ; case 3 + .short _022421C0 - _022420DA - 2 ; case 4 +_022420E4: + ldr r1, [r4] + ldr r0, _022421DC ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #8 + bhi _0224210C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022420FA: ; jump table + .short _02242110 - _022420FA - 2 ; case 0 + .short _0224210C - _022420FA - 2 ; case 1 + .short _02242110 - _022420FA - 2 ; case 2 + .short _0224210C - _022420FA - 2 ; case 3 + .short _0224210C - _022420FA - 2 ; case 4 + .short _0224210C - _022420FA - 2 ; case 5 + .short _0224210C - _022420FA - 2 ; case 6 + .short _02242110 - _022420FA - 2 ; case 7 + .short _02242110 - _022420FA - 2 ; case 8 +_0224210C: + mov r0, #1 + pop {r3, r4, r5, pc} +_02242110: + ldr r1, _022421E0 ; =0x00000445 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #1 + add r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x79 + ldrb r2, [r4, r0] + sub r0, r1, #7 + sub r1, #0x79 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + bl FUN_020832DC + ldr r3, _022421E4 ; =0x00000442 + add r0, r0, #1 + strb r0, [r4, r3] + add r0, r3, #2 + mov r1, #4 + strb r1, [r4, r0] + ldr r0, _022421E8 ; =0x0000085C + sub r3, #0xc + add r0, r4, r0 + add r1, r4, #0 + mov r2, #5 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_0224215A: + ldr r0, _022421E8 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022421EC ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_0224217C: + ldr r3, _022421F0 ; =0x0000043D + mov r0, #2 + strb r0, [r4, r3] + ldr r0, _022421E8 ; =0x0000085C + sub r3, r3, #7 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #9 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_0224219E: + ldr r0, _022421E8 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022421EC ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_022421C0: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + cmp r0, #0xf + ble _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_022421D2: + mov r0, #1 + pop {r3, r4, r5, pc} +_022421D6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022421DC: .word 0x00000121 +_022421E0: .word 0x00000445 +_022421E4: .word 0x00000442 +_022421E8: .word 0x0000085C +_022421EC: .word 0x00000127 +_022421F0: .word 0x0000043D + + thumb_func_start MOD12_022421F4 +MOD12_022421F4: ; 0x022421F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02242206 + cmp r0, #1 + beq _02242222 + b _02242244 +_02242206: + ldr r0, _0224224C ; =0x0000085C + ldr r3, _02242250 ; =0x00000436 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #7 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02242248 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242248 +_02242222: + ldr r0, _0224224C ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02242254 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242248 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242248 +_02242244: + mov r0, #1 + pop {r3, r4, r5, pc} +_02242248: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224224C: .word 0x0000085C +_02242250: .word 0x00000436 +_02242254: .word 0x00000127 + + thumb_func_start MOD12_02242258 +MOD12_02242258: ; 0x02242258 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #3 + bhi _02242320 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242270: ; jump table + .short _02242278 - _02242270 - 2 ; case 0 + .short _022422C0 - _02242270 - 2 ; case 1 + .short _022422E2 - _02242270 - 2 ; case 2 + .short _022422FE - _02242270 - 2 ; case 3 +_02242278: + ldr r1, _02242328 ; =0x00000445 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #1 + add r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xd + ldrb r2, [r4, r0] + sub r0, r1, #7 + sub r1, #0xd + strb r2, [r4, r0] + ldrb r0, [r4, r1] + bl FUN_020832DC + ldr r3, _0224232C ; =0x00000442 + add r0, r0, #1 + strb r0, [r4, r3] + add r0, r3, #2 + mov r2, #5 + strb r2, [r4, r0] + ldr r0, _02242330 ; =0x0000085C + sub r3, #0xc + add r0, r4, r0 + add r1, r4, #0 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_022422C0: + ldr r0, _02242330 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02242334 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_022422E2: + ldr r0, _02242330 ; =0x0000085C + ldr r3, _02242338 ; =0x00000436 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #8 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_022422FE: + ldr r0, _02242330 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02242334 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_02242320: + mov r0, #1 + pop {r3, r4, r5, pc} +_02242324: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02242328: .word 0x00000445 +_0224232C: .word 0x00000442 +_02242330: .word 0x0000085C +_02242334: .word 0x00000127 +_02242338: .word 0x00000436 + + thumb_func_start MOD12_0224233C +MOD12_0224233C: ; 0x0224233C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0224234E + cmp r0, #1 + beq _02242386 + b _022423A8 +_0224234E: + ldr r5, _022423B0 ; =0x00000445 + mov r0, #0 + strb r0, [r3, r5] + add r1, r5, #2 + strb r0, [r3, r1] + add r1, r5, #1 + strb r0, [r3, r1] + add r1, r5, #0 + sub r1, #0x79 + ldrb r2, [r3, r1] + sub r1, r5, #7 + strb r2, [r3, r1] + sub r1, r5, #1 + strb r0, [r3, r1] + ldr r0, _022423B4 ; =0x0000085C + sub r5, #0xf + add r0, r3, r0 + add r1, r3, #0 + mov r2, #5 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _022423AC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022423AC +_02242386: + ldr r0, _022423B4 ; =0x0000085C + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _022423B8 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _022423AC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022423AC +_022423A8: + mov r0, #1 + pop {r3, r4, r5, pc} +_022423AC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022423B0: .word 0x00000445 +_022423B4: .word 0x0000085C +_022423B8: .word 0x00000127 + + thumb_func_start MOD12_022423BC +MOD12_022423BC: ; 0x022423BC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _022423D2 + cmp r0, #1 + beq _022423EC + cmp r0, #2 + beq _0224240E + b _02242428 +_022423D2: + ldr r0, _0224244C ; =0x0000085C + add r1, r2, #0 + add r0, r2, r0 + mov r2, #0xa + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _02242446 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242446 +_022423EC: + ldr r0, _0224244C ; =0x0000085C + ldr r3, [r2] + ldr r5, _02242450 ; =0x00000127 + add r0, r2, r0 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242446 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242446 +_0224240E: + ldr r0, _0224244C ; =0x0000085C + add r1, r2, #0 + add r0, r2, r0 + mov r2, #4 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _02242446 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242446 +_02242428: + ldr r0, _0224244C ; =0x0000085C + ldr r3, [r2] + ldr r4, _02242450 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242446 + mov r0, #3 + pop {r3, r4, r5, pc} +_02242446: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224244C: .word 0x0000085C +_02242450: .word 0x00000127 + + thumb_func_start MOD12_02242454 +MOD12_02242454: ; 0x02242454 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r5, #0 + mov r4, #0 + add r7, #0xd8 + b _022424C6 +_02242462: + mov r0, #0xf3 + add r1, r5, r4 + lsl r0, r0, #2 + ldrb r6, [r1, r0] + lsl r0, r6, #4 + add r0, r5, r0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + beq _0224247A + bl ErrorHandling +_0224247A: + mov r1, #0x32 + mov r0, #0x18 + lsl r1, r1, #6 + bl FUN_02016998 + lsl r2, r6, #4 + add r1, r5, r2 + add r1, #0xd8 + str r0, [r1] + add r0, r7, r2 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #6 + ldr r1, _022424D0 ; =0x02246634 + mul r0, r4 + ldrsh r1, [r1, r0] + lsl r2, r6, #2 + str r1, [sp, #8] + ldr r1, _022424D0 ; =0x02246634 + add r0, r1, r0 + mov r1, #2 + ldrsh r1, [r0, r1] + str r1, [sp, #0xc] + mov r1, #4 + ldrsh r0, [r0, r1] + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r3, [r5, #0x10] + ldr r0, [r5, #0x14] + ldr r2, [r3, r2] + mov r3, #2 + bl FUN_02082E64 + lsl r1, r6, #2 + add r1, r5, r1 + str r0, [r1, #0x18] + add r4, r4, #1 +_022424C6: + cmp r4, #4 + blt _02242462 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022424D0: .word 0x02246634 + + thumb_func_start MOD12_022424D4 +MOD12_022424D4: ; 0x022424D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_022424DE: + ldr r0, [r5, #8] + bl FUN_02007534 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xc8 + add r6, r6, #1 + str r7, [r0] + add r5, r5, #4 + add r4, #0x10 + cmp r6, #4 + blt _022424DE + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02242500 +MOD12_02242500: ; 0x02242500 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + cmp r6, #0 + beq _02242516 + cmp r5, #0 + bne _02242516 + bl ErrorHandling +_02242516: + cmp r6, #3 + bhi _022425EC + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242526: ; jump table + .short _022425F0 - _02242526 - 2 ; case 0 + .short _0224252E - _02242526 - 2 ; case 1 + .short _02242552 - _02242526 - 2 ; case 2 + .short _02242596 - _02242526 - 2 ; case 3 +_0224252E: + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r4] + add r1, r2, #1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r4, #0xc8 + add r2, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200B278 + add sp, #8 + pop {r4, r5, r6, pc} +_02242552: + ldrb r6, [r5] + ldr r3, [r4] + mov r0, #1 + lsl r2, r6, #2 + str r0, [sp] + mov r0, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #2 + add r0, #0xc8 + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x10] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0xc8 + add r2, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_02242596: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + add r0, r4, #0 + add r0, #0xc8 + ldrb r2, [r5, #4] + ldr r0, [r0] + bl FUN_0200AD38 + ldrb r6, [r5] + ldr r3, [r4] + mov r1, #1 + lsl r2, r6, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #2 + add r0, #0xc8 + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x10] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0xc8 + add r2, r0, #0 + ldr r0, [r4] + mov r1, #2 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_022425EC: + bl ErrorHandling +_022425F0: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_022425F4 +MOD12_022425F4: ; 0x022425F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r0, _02242670 ; =0x00000171 + add r7, r2, #0 + ldrb r0, [r1, r0] + str r3, [sp, #0xc] + cmp r0, #0 + bne _02242616 + ldr r0, _02242674 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _02242618 +_02242616: + mov r4, #1 +_02242618: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD12_02242500 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xc8 + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + add r2, r5, #0 + add r0, r5, #0 + str r3, [sp, #8] + add r2, #0xcc + ldr r2, [r2] + add r0, #0x34 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0xe6 + lsl r1, r1, #2 + strb r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242670: .word 0x00000171 +_02242674: .word 0x00001988 + + thumb_func_start MOD12_02242678 +MOD12_02242678: ; 0x02242678 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #7 + blo _0224268A + bl ErrorHandling +_0224268A: + lsl r3, r4, #2 + ldr r2, _022426A4 ; =0x0224664C + add r0, r5, #0 + ldr r4, _022426A8 ; =0x0224664E + ldrh r2, [r2, r3] + str r6, [sp] + add r5, #0xc4 + ldrb r3, [r4, r3] + ldr r1, [r5] + bl MOD12_022425F4 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022426A4: .word 0x0224664C +_022426A8: .word 0x0224664E + + thumb_func_start MOD12_022426AC +MOD12_022426AC: ; 0x022426AC + mov r1, #0xe6 + lsl r1, r1, #2 + ldr r3, _022426B8 ; =0x0201BD71 + ldrb r0, [r0, r1] + bx r3 + nop +_022426B8: .word 0x0201BD71 + + thumb_func_start MOD12_022426BC +MOD12_022426BC: ; 0x022426BC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x16 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x15 + mov r3, #3 + bl FUN_020068C8 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x22 + mov r3, #0x18 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x18 + bl FUN_020030E8 + ldr r1, [r5] + ldr r0, _02242784 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #0x30] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x26 + mov r3, #0x18 + bl FUN_020030E8 + ldr r0, [r5, #0x30] + mov r1, #2 + bl FUN_02018744 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_02242784: .word 0x00001988 + + thumb_func_start MOD12_02242788 +MOD12_02242788: ; 0x02242788 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0224278C +MOD12_0224278C: ; 0x0224278C + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, _022427D4 ; =0x000080EA + add r2, r4, #0 + str r0, [sp] + sub r3, r0, #1 + str r3, [sp, #4] + str r3, [sp, #8] + add r2, #0xd0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + ldr r2, [r2] + bl MOD12_022316F8 + ldr r0, _022427D4 ; =0x000080EA + mov r1, #0xc8 + str r0, [sp] + sub r3, r0, #1 + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0x14] + ldr r0, _022427D8 ; =0x0000C350 + add r1, #0x50 + str r0, [sp, #0x18] + add r0, r4, r1 + ldr r1, [r4, #0x28] + ldr r2, [r4, #0x2c] + bl MOD12_022317C8 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_022427D4: .word 0x000080EA +_022427D8: .word 0x0000C350 + + thumb_func_start MOD12_022427DC +MOD12_022427DC: ; 0x022427DC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x46 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD12_0223185C + ldr r1, _02242800 ; =0x000080E9 + str r1, [sp] + ldr r0, [r4, #0x2c] + add r2, r1, #1 + add r3, r1, #0 + bl MOD12_02231780 + add sp, #4 + pop {r3, r4, pc} + nop +_02242800: .word 0x000080E9 + + thumb_func_start MOD12_02242804 +MOD12_02242804: ; 0x02242804 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r1, #0x1a + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r1, #0x18 + str r1, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r1, #0x19 + mov r3, #2 + bl FUN_020068C8 + ldr r0, [r6, #0x30] + mov r1, #1 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x26 + mov r3, #0x18 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x18 + bl FUN_020030E8 + ldr r1, [r6] + ldr r0, _022429D0 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r6, #0x30] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x26 + mov r3, #0x18 + bl FUN_020030E8 + mov r0, #0xc + mov r1, #0x18 + bl FUN_020219F4 + add r4, r6, #0 + add r7, r0, #0 + mov r5, #0 + add r4, #0x34 +_022428E6: + mov r0, #0xf3 + add r1, r6, r5 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + ldr r1, [r6, #0x10] + add r2, r7, #0 + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r1, r0] + mov r1, #0x76 + bl FUN_020671BC + add r0, r5, #1 + lsl r0, r0, #4 + str r0, [sp, #0x14] + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #5 + lsl r0, r0, #4 + str r0, [sp, #0x18] + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #3 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022429D4 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r2, r7, #0 + add r0, r4, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + mov r0, #3 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022429D4 ; =0x00010200 + ldr r2, [sp, #0x10] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r3, [r6] + ldr r0, [sp, #0x18] + add r2, r3, r2 + add r2, #0xe8 + mov r1, #0 + ldr r2, [r2] + add r0, r4, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + add r5, r5, #1 + cmp r5, #4 + blt _022428E6 + add r0, r7, #0 + bl FUN_02021A20 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _022429D8 ; =0xFFFF1FFF + mov r5, #0x3f + and r1, r0 + mov r0, #6 + lsl r0, r0, #0xc + orr r0, r1 + add r1, r2, #0 + add r1, #0x48 + str r0, [r2] + ldrh r0, [r1] + mov r3, #0x1f + bic r0, r5 + add r4, r0, #0 + orr r4, r3 + mov r0, #0x20 + orr r4, r0 + strh r4, [r1] + ldrh r6, [r1] + ldr r4, _022429DC ; =0xFFFFC0FF + lsl r3, r3, #8 + and r4, r6 + orr r4, r3 + lsl r3, r0, #8 + orr r3, r4 + strh r3, [r1] + add r3, r2, #0 + add r3, #0x4a + ldrh r4, [r3] + mov r1, #0x1b + bic r4, r5 + orr r1, r4 + orr r0, r1 + strh r0, [r3] + add r0, r2, #0 + mov r3, #0xff + add r0, #0x40 + strh r3, [r0] + add r0, r2, #0 + mov r1, #0 + add r0, #0x44 + strh r1, [r0] + add r0, r2, #0 + add r0, #0x42 + strh r3, [r0] + add r2, #0x46 + strh r1, [r2] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022429D0: .word 0x00001988 +_022429D4: .word 0x00010200 +_022429D8: .word 0xFFFF1FFF +_022429DC: .word 0xFFFFC0FF + + thumb_func_start MOD12_022429E0 +MOD12_022429E0: ; 0x022429E0 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r3, #0 + mov r0, #1 + str r3, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #1 + mov r2, #2 + bl FUN_02003914 + mov r3, #0 + mov r0, #1 + str r3, [sp] + lsl r0, r0, #8 + add r4, #0xd0 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #3 + mov r2, #2 + bl FUN_02003914 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD12_02242A18 +MOD12_02242A18: ; 0x02242A18 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02242A1C +MOD12_02242A1C: ; 0x02242A1C + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _02242A68 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r2, [r4, #0x28] + ldr r3, [r4, #0x2c] + bl FUN_0200C0DC + add r0, r4, #0 + bl MOD12_02242C38 + add r0, r4, #0 + bl MOD12_02242A90 + add r0, r4, #0 + bl MOD12_02242EE0 + add r0, r4, #0 + bl MOD12_02242FF8 + add sp, #0x18 + pop {r4, pc} + nop +_02242A68: .word 0x000080E9 + + thumb_func_start MOD12_02242A6C +MOD12_02242A6C: ; 0x02242A6C + push {r4, lr} + add r4, r0, #0 + bl MOD12_02242BCC + add r0, r4, #0 + bl MOD12_02242F94 + add r0, r4, #0 + bl MOD12_022431F8 + add r0, r4, #0 + bl MOD12_02242C88 + add r0, r4, #0 + bl MOD12_02243074 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02242A90 +MOD12_02242A90: ; 0x02242A90 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + bl FUN_0206B888 + mov r1, #0x13 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _02242BB4 ; =0x000080EB + mov r1, #2 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r2, [r5, #0x28] + ldr r3, [r5, #0x2c] + bl FUN_0200C0DC + bl FUN_0206B894 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02242BB8 ; =0x000080EA + mov r2, #0x13 + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C124 + bl FUN_0206B8A0 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02242BB8 ; =0x000080EA + mov r2, #0x13 + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C13C + ldr r4, _02242BBC ; =0x0224669C + add r3, sp, #0x18 + mov r2, #6 +_02242AF6: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02242AF6 + ldr r0, [r4] + mov r7, #0 + str r0, [r3] + add r6, r7, #0 + add r4, r5, #0 +_02242B08: + ldr r0, [r5] + ldr r0, [r0, r6] + bl FUN_0206B6C8 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02242BB8 ; =0x000080EA + mov r2, #0x13 + add r0, r7, r0 + str r0, [sp, #8] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C978 + ldr r0, _02242BB8 ; =0x000080EA + add r2, sp, #0x18 + add r0, r7, r0 + str r0, [sp, #0x2c] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C154 + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r5] + ldr r0, [r0, r6] + bl FUN_0206B87C + add r1, r0, #0 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_020202DC + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200C5A8 + add r7, r7, #1 + add r6, r6, #4 + add r4, r4, #4 + cmp r7, #4 + blt _02242B08 + ldr r4, _02242BC0 ; =0x02246614 + mov r6, #0 + mov r7, #2 +_02242B7A: + mov r0, #0xf3 + add r1, r5, r6 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + ldrsh r2, [r4, r7] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + ldrsh r1, [r4, r1] + bl FUN_0200C714 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02242B7A + ldr r0, _02242BC4 ; =MOD12_02242C1C + ldr r2, _02242BC8 ; =0x0000C738 + add r1, r5, #0 + bl FUN_0200CA44 + mov r1, #0x4d + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_02242BB4: .word 0x000080EB +_02242BB8: .word 0x000080EA +_02242BBC: .word 0x0224669C +_02242BC0: .word 0x02246614 +_02242BC4: .word MOD12_02242C1C +_02242BC8: .word 0x0000C738 + + thumb_func_start MOD12_02242BCC +MOD12_02242BCC: ; 0x02242BCC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x2c] + ldr r1, _02242C14 ; =0x000080EA + bl FUN_0200C378 + ldr r0, [r6, #0x2c] + ldr r1, _02242C14 ; =0x000080EA + bl FUN_0200C388 + ldr r0, [r6, #0x2c] + ldr r1, _02242C18 ; =0x000080EB + bl FUN_0200C368 + mov r7, #0x4e + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02242BF0: + ldr r1, _02242C14 ; =0x000080EA + ldr r0, [r6, #0x2c] + add r1, r4, r1 + bl FUN_0200C358 + ldr r0, [r5, r7] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02242BF0 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242C14: .word 0x000080EA +_02242C18: .word 0x000080EB + + thumb_func_start MOD12_02242C1C +MOD12_02242C1C: ; 0x02242C1C + push {r4, r5, r6, lr} + mov r6, #0x4e + add r5, r1, #0 + mov r4, #0 + lsl r6, r6, #2 +_02242C26: + ldr r0, [r5, r6] + bl FUN_0200C5A8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02242C26 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02242C38 +MOD12_02242C38: ; 0x02242C38 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02242C80 ; =0x000080EF + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x51 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02242C84 ; =0x000080EC + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x50 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02242C84 ; =0x000080EC + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x4f + bl FUN_0200C13C + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02242C80: .word 0x000080EF +_02242C84: .word 0x000080EC + + thumb_func_start MOD12_02242C88 +MOD12_02242C88: ; 0x02242C88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + ldr r1, _02242CA8 ; =0x000080EF + bl FUN_0200C358 + ldr r0, [r4, #0x2c] + ldr r1, _02242CAC ; =0x000080EC + bl FUN_0200C378 + ldr r0, [r4, #0x2c] + ldr r1, _02242CAC ; =0x000080EC + bl FUN_0200C388 + pop {r4, pc} + nop +_02242CA8: .word 0x000080EF +_02242CAC: .word 0x000080EC + + thumb_func_start MOD12_02242CB0 +MOD12_02242CB0: ; 0x02242CB0 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x18 + mov r1, #8 + bl FUN_02016998 + mov r1, #0 + mov r2, #8 + add r6, r0, #0 + bl MI_CpuFill8 + str r5, [r6] + mov r4, #0 +_02242CCA: + add r0, r5, #0 + bl MOD12_02242D3C + add r4, r4, #1 + cmp r4, #8 + blt _02242CCA + ldr r0, _02242CE4 ; =MOD12_02242CF8 + ldr r2, _02242CE8 ; =0x0000C35A + add r1, r6, #0 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_02242CE4: .word MOD12_02242CF8 +_02242CE8: .word 0x0000C35A + + thumb_func_start MOD12_02242CEC +MOD12_02242CEC: ; 0x02242CEC + ldr r1, _02242CF4 ; =0x0000127D + mov r2, #1 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_02242CF4: .word 0x0000127D + + thumb_func_start MOD12_02242CF8 +MOD12_02242CF8: ; 0x02242CF8 + push {r4, lr} + add r4, r0, #0 + ldr r3, [r1] + ldr r0, _02242D38 ; =0x0000127D + ldrb r2, [r3, r0] + cmp r2, #1 + bne _02242D14 + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} +_02242D14: + add r0, r0, #1 + ldrb r0, [r3, r0] + cmp r0, #0x30 + bhs _02242D34 + mov r0, #4 + ldrsh r2, [r1, r0] + add r2, r2, #1 + strh r2, [r1, #4] + ldrsh r0, [r1, r0] + cmp r0, #6 + ble _02242D34 + mov r0, #0 + strh r0, [r1, #4] + ldr r0, [r1] + bl MOD12_02242D3C +_02242D34: + pop {r4, pc} + nop +_02242D38: .word 0x0000127D + + thumb_func_start MOD12_02242D3C +MOD12_02242D3C: ; 0x02242D3C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x18 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + str r5, [r4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _02242DE8 ; =0x02246668 + bl FUN_0200C154 + str r0, [r4, #4] + ldr r0, [r5] + bl FUN_02082878 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [r5] + add r6, #0x14 + bl FUN_02082878 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1a + sub r1, r1, r2 + mov r0, #0x1a + ror r1, r0 + add r2, r2, r1 + lsl r0, r6, #8 + lsl r1, r6, #0x10 + sub r2, #0x10 + str r0, [r4, #8] + lsl r0, r2, #8 + str r0, [r4, #0xc] + lsl r2, r2, #0x10 + ldr r0, [r4, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r5] + bl FUN_02082878 + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + add r0, #0x30 + str r0, [r4, #0x14] + ldr r0, [r5] + bl FUN_02082878 + mov r1, #3 + lsl r1, r1, #8 + bl _s32_div_f + str r1, [r4, #0x18] + ldr r0, [r5] + bl FUN_02082878 + mov r1, #0x18 + bl _s32_div_f + add r1, #0x10 + strh r1, [r4, #0x12] + ldr r0, [r4, #4] + bl FUN_0200C5A8 + ldr r0, _02242DEC ; =MOD12_02242DF8 + ldr r2, _02242DF0 ; =0x0000C35B + add r1, r4, #0 + bl FUN_0200CA44 + ldr r0, _02242DF4 ; =0x0000127E + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + pop {r4, r5, r6, pc} + nop +_02242DE8: .word 0x02246668 +_02242DEC: .word MOD12_02242DF8 +_02242DF0: .word 0x0000C35B +_02242DF4: .word 0x0000127E + + thumb_func_start MOD12_02242DF8 +MOD12_02242DF8: ; 0x02242DF8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, _02242ED8 ; =0x0000127D + ldrb r1, [r0, r1] + cmp r1, #1 + beq _02242E2C + ldr r2, [r4, #0xc] + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + cmp r1, #0xd0 + bgt _02242E2C + mov r2, #0x10 + ldrsh r1, [r4, r2] + ldr r3, [r4, #8] + sub r2, #0x20 + add r3, r3, r1 + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + asr r1, r1, #8 + cmp r1, r2 + bge _02242E48 +_02242E2C: + ldr r1, _02242EDC ; =0x0000127E + ldrb r2, [r0, r1] + sub r2, r2, #1 + strb r2, [r0, r1] + ldr r0, [r4, #4] + bl FUN_0200C3DC + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_02242E48: + ldr r2, [r4, #0x1c] + ldr r1, [r4, #0x18] + add r0, r4, #0 + add r2, r2, r1 + mov r1, #0x5a + lsl r1, r1, #0xa + add r0, #0x1c + str r2, [r4, #0x1c] + cmp r2, r1 + blt _02242E62 + ldr r2, [r0] + sub r1, r2, r1 + str r1, [r0] +_02242E62: + mov r0, #0x12 + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x1c] + lsl r5, r0, #0xc + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + lsl r0, r0, #8 + lsr r0, r0, #0x10 + bl FUN_0201B93C + asr r1, r0, #0x1f + asr r3, r5, #0x1f + add r2, r5, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r5, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r5, #0xc + orr r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + strh r0, [r4, #0x10] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + lsr r0, r2, #2 + add r2, r1, r0 + str r2, [r4, #0xc] + ldr r3, [r4, #8] + ldr r0, [r4, #4] + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + asr r3, r1, #8 + mov r1, #0x10 + ldrsh r1, [r4, r1] + add r1, r3, r1 + asr r3, r2, #7 + lsr r3, r3, #0x18 + add r3, r2, r3 + lsl r1, r1, #0x10 + lsl r2, r3, #8 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, #4] + bl FUN_0200C5A8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02242ED8: .word 0x0000127D +_02242EDC: .word 0x0000127E + + thumb_func_start MOD12_02242EE0 +MOD12_02242EE0: ; 0x02242EE0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02242F84 ; =0x000080EE + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r3, #0x54 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02242F88 ; =0x000080EB + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r3, #0x53 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02242F88 ; =0x000080EB + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r3, #0x52 + bl FUN_0200C13C + mov r7, #0x52 + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_02242F2C: + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _02242F8C ; =0x022466D0 + bl FUN_0200C154 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + bl FUN_0200C5A8 + ldr r0, [r4, r7] + mov r1, #0 + bl FUN_0200C644 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02242F2C + ldr r4, _02242F90 ; =0x02246624 + mov r6, #0 + mov r7, #2 +_02242F5A: + mov r0, #0xf3 + add r1, r5, r6 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + ldrsh r2, [r4, r7] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + ldrsh r1, [r4, r1] + bl FUN_0200C714 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02242F5A + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02242F84: .word 0x000080EE +_02242F88: .word 0x000080EB +_02242F8C: .word 0x022466D0 +_02242F90: .word 0x02246624 + + thumb_func_start MOD12_02242F94 +MOD12_02242F94: ; 0x02242F94 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + ldr r1, _02242FC8 ; =0x000080EE + bl FUN_0200C358 + ldr r0, [r5, #0x2c] + ldr r1, _02242FCC ; =0x000080EB + bl FUN_0200C378 + ldr r0, [r5, #0x2c] + ldr r1, _02242FCC ; =0x000080EB + bl FUN_0200C388 + mov r6, #0x52 + mov r4, #0 + lsl r6, r6, #2 +_02242FB6: + ldr r0, [r5, r6] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02242FB6 + pop {r4, r5, r6, pc} + nop +_02242FC8: .word 0x000080EE +_02242FCC: .word 0x000080EB + + thumb_func_start MOD12_02242FD0 +MOD12_02242FD0: ; 0x02242FD0 + push {r3, r4, r5, lr} + mov r3, #0x52 + lsl r3, r3, #2 + lsl r4, r1, #2 + add r5, r0, r3 + ldr r0, [r5, r4] + add r1, r2, #0 + bl FUN_0200C5C0 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_0200C644 + ldr r0, _02242FF4 ; =0x000005DD + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_02242FF4: .word 0x000005DD + + thumb_func_start MOD12_02242FF8 +MOD12_02242FF8: ; 0x02242FF8 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02243068 ; =0x000080EC + mov r1, #2 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r2, [r4, #0x28] + ldr r3, [r4, #0x2c] + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0224306C ; =0x000080F0 + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x57 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02243070 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x56 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02243070 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x55 + bl FUN_0200C13C + add sp, #0x18 + pop {r4, pc} + nop +_02243068: .word 0x000080EC +_0224306C: .word 0x000080F0 +_02243070: .word 0x000080ED + + thumb_func_start MOD12_02243074 +MOD12_02243074: ; 0x02243074 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + ldr r1, _0224309C ; =0x000080EC + bl FUN_0200C368 + ldr r0, [r4, #0x2c] + ldr r1, _022430A0 ; =0x000080F0 + bl FUN_0200C358 + ldr r0, [r4, #0x2c] + ldr r1, _022430A4 ; =0x000080ED + bl FUN_0200C378 + ldr r0, [r4, #0x2c] + ldr r1, _022430A4 ; =0x000080ED + bl FUN_0200C388 + pop {r4, pc} + nop +_0224309C: .word 0x000080EC +_022430A0: .word 0x000080F0 +_022430A4: .word 0x000080ED + + thumb_func_start MOD12_022430A8 +MOD12_022430A8: ; 0x022430A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r3, [sp] + cmp r2, #0 + beq _022430BE + cmp r2, #1 + beq _022430D2 + cmp r2, #2 + beq _022430EC + b _0224310C +_022430BE: + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0x56 + lsl r0, r0, #2 + add r2, r7, r0 + mov r0, #0x30 + mul r0, r1 + mov r6, #0 + add r4, r2, r0 + b _02243114 +_022430D2: + lsl r0, r1, #1 + add r2, r7, r0 + ldr r0, _022431F0 ; =0x0000041E + ldrsh r6, [r2, r0] + mov r0, #0x11 + str r0, [sp, #0x14] + mov r0, #0x86 + lsl r0, r0, #2 + add r2, r7, r0 + mov r0, #0x30 + mul r0, r1 + add r4, r2, r0 + b _02243114 +_022430EC: + lsl r0, r1, #1 + add r3, r7, r0 + ldr r0, _022431F0 ; =0x0000041E + ldrsh r2, [r3, r0] + add r0, #8 + ldrsh r0, [r3, r0] + add r6, r2, r0 + mov r0, #0x21 + str r0, [sp, #0x14] + mov r0, #0xb6 + lsl r0, r0, #2 + add r2, r7, r0 + mov r0, #0x30 + mul r0, r1 + add r4, r2, r0 + b _02243114 +_0224310C: + bl ErrorHandling + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_02243114: + ldr r0, [sp, #0x30] + add r6, #0x30 + lsl r0, r0, #5 + str r0, [sp, #0x10] + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp] + asr r0, r0, #3 + lsr r1, r0, #0x1c + ldr r0, [sp] + add r1, r0, r1 + asr r0, r1, #4 + str r0, [sp, #0xc] + ldr r0, [sp] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1c + sub r1, r1, r2 + mov r0, #0x1c + ror r1, r0 + add r0, r2, r1 + beq _02243144 + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] +_02243144: + ldr r0, [sp, #0xc] + cmp r0, #0xc + ble _0224314E + bl ErrorHandling +_0224314E: + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + cmp r0, #0 + ble _0224317A + add r5, r4, #0 +_0224315A: + ldr r0, [r5] + cmp r0, #0 + bne _0224316C + ldr r0, [r7, #0x28] + ldr r1, [r7, #0x2c] + ldr r2, _022431F4 ; =0x02246704 + bl FUN_0200C154 + str r0, [r5] +_0224316C: + ldr r0, [sp, #8] + add r5, r5, #4 + add r1, r0, #1 + ldr r0, [sp, #0xc] + str r1, [sp, #8] + cmp r1, r0 + blt _0224315A +_0224317A: + ldr r0, [sp] + mov r7, #0 + cmp r0, #0x10 + blt _022431A2 + ldr r0, [sp, #0x14] + add r5, r4, #0 + str r0, [sp, #4] + add r0, #0xf + str r0, [sp, #4] +_0224318C: + ldr r0, [r5] + ldr r1, [sp, #4] + bl FUN_0200C5C0 + ldr r0, [sp] + add r5, r5, #4 + sub r0, #0x10 + add r7, r7, #1 + str r0, [sp] + cmp r0, #0x10 + bge _0224318C +_022431A2: + ldr r0, [sp] + cmp r0, #0 + ble _022431BE + ldr r0, [sp, #0xc] + cmp r7, r0 + bge _022431BE + ldr r2, [sp, #0x14] + ldr r1, [sp] + lsl r0, r7, #2 + add r1, r2, r1 + ldr r0, [r4, r0] + sub r1, r1, #1 + bl FUN_0200C5C0 +_022431BE: + ldr r0, [sp, #0xc] + mov r5, #0 + cmp r0, #0 + ble _022431EA + ldr r0, [sp, #0x10] + lsl r0, r0, #0x10 + asr r7, r0, #0x10 +_022431CC: + lsl r1, r6, #0x10 + ldr r0, [r4] + asr r1, r1, #0x10 + add r2, r7, #0 + bl FUN_0200C714 + ldr r0, [r4] + bl FUN_0200C5A8 + ldr r0, [sp, #0xc] + add r5, r5, #1 + add r6, #0x10 + add r4, r4, #4 + cmp r5, r0 + blt _022431CC +_022431EA: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022431F0: .word 0x0000041E +_022431F4: .word 0x02246704 + + thumb_func_start MOD12_022431F8 +MOD12_022431F8: ; 0x022431F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r7, #0x86 + lsl r7, r7, #2 + str r0, [sp] + mov r0, #0 + add r6, r7, #0 + str r0, [sp, #4] + sub r6, #0xc0 +_0224320A: + ldr r5, [sp] + mov r4, #0 +_0224320E: + ldr r0, [r5, r6] + cmp r0, #0 + beq _02243218 + bl FUN_0200C3DC +_02243218: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02243222 + bl FUN_0200C3DC +_02243222: + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02243230 + bl FUN_0200C3DC +_02243230: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc + blt _0224320E + ldr r0, [sp] + add r0, #0x30 + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _0224320A + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0224324C +MOD12_0224324C: ; 0x0224324C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r0, #0 + strb r0, [r7] + mov r0, #0x18 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r5, [r4] + str r7, [r4, #4] + cmp r6, #0 + ldr r2, _0224329C ; =0x0000A028 + bne _02243286 + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #8] + str r0, [r4, #0xc] + ldr r0, _022432A0 ; =MOD12_022432A8 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02243286: + mov r0, #3 + lsl r0, r0, #0xc + str r0, [r4, #8] + mov r0, #9 + lsl r0, r0, #0xc + str r0, [r4, #0xc] + ldr r0, _022432A4 ; =MOD12_0224333C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224329C: .word 0x0000A028 +_022432A0: .word MOD12_022432A8 +_022432A4: .word MOD12_0224333C + + thumb_func_start MOD12_022432A8 +MOD12_022432A8: ; 0x022432A8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _02243322 + mov r0, #1 + ldr r2, [r1, #8] + lsl r0, r0, #0xa + sub r2, r2, r0 + str r2, [r1, #8] + ldr r2, [r1, #0xc] + add r0, r2, r0 + str r0, [r1, #0xc] + mov r0, #3 + ldr r2, [r1, #8] + lsl r0, r0, #0xc + cmp r2, r0 + bgt _022432DA + str r0, [r1, #8] + mov r0, #9 + lsl r0, r0, #0xc + str r0, [r1, #0xc] + ldrb r0, [r1, #0x10] + add r0, r0, #1 + strb r0, [r1, #0x10] +_022432DA: + ldr r3, [r1] + ldr r2, _02243338 ; =0x00000851 + mov r0, #0 + strb r0, [r3, r2] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #1 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #0xff + add r3, r2, #2 + strb r5, [r4, r3] + ldr r3, [r1, #0xc] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #3 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #1 + add r3, r2, #4 + strb r5, [r4, r3] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #5 + strb r5, [r4, r3] + ldr r4, [r1] + add r3, r2, #6 + strb r0, [r4, r3] + ldr r0, [r1, #0xc] + ldr r1, [r1] + asr r3, r0, #8 + add r0, r2, #7 + strb r3, [r1, r0] + pop {r3, r4, r5, pc} +_02243322: + ldr r0, [r1, #4] + mov r2, #1 + strb r2, [r0] + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_02243338: .word 0x00000851 + + thumb_func_start MOD12_0224333C +MOD12_0224333C: ; 0x0224333C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _022433B2 + mov r0, #1 + ldr r2, [r1, #8] + lsl r0, r0, #0xa + add r2, r2, r0 + str r2, [r1, #8] + ldr r2, [r1, #0xc] + sub r0, r2, r0 + str r0, [r1, #0xc] + mov r0, #6 + ldr r2, [r1, #8] + lsl r0, r0, #0xc + cmp r2, r0 + blt _0224336A + str r0, [r1, #8] + str r0, [r1, #0xc] + ldrb r0, [r1, #0x10] + add r0, r0, #1 + strb r0, [r1, #0x10] +_0224336A: + ldr r3, [r1] + ldr r2, _022433C8 ; =0x00000851 + mov r0, #0 + strb r0, [r3, r2] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #1 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #0xff + add r3, r2, #2 + strb r5, [r4, r3] + ldr r3, [r1, #0xc] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #3 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #1 + add r3, r2, #4 + strb r5, [r4, r3] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #5 + strb r5, [r4, r3] + ldr r4, [r1] + add r3, r2, #6 + strb r0, [r4, r3] + ldr r0, [r1, #0xc] + ldr r1, [r1] + asr r3, r0, #8 + add r0, r2, #7 + strb r3, [r1, r0] + pop {r3, r4, r5, pc} +_022433B2: + ldr r0, [r1, #4] + mov r2, #1 + strb r2, [r0] + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_022433C8: .word 0x00000851 + + thumb_func_start MOD12_022433CC +MOD12_022433CC: ; 0x022433CC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r1, #0 + add r0, r3, #0 + strb r1, [r0] + mov r0, #0x18 + mov r1, #0x14 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + cmp r7, #0 + str r0, [r4] + ldr r0, [sp] + ldr r2, _0224342C ; =0x0000C350 + str r0, [r4, #4] + bne _02243416 + mov r0, #0x4a + lsl r0, r0, #0xa + str r0, [r4, #8] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0xc] + ldr r0, _02243430 ; =MOD12_02243438 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02243416: + mov r0, #2 + lsl r0, r0, #0xe + str r0, [r4, #8] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0xc] + ldr r0, _02243434 ; =MOD12_022434A4 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224342C: .word 0x0000C350 +_02243430: .word MOD12_02243438 +_02243434: .word MOD12_022434A4 + + thumb_func_start MOD12_02243438 +MOD12_02243438: ; 0x02243438 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0224344A + cmp r0, #1 + beq _0224345A + b _0224348E +_0224344A: + ldr r0, [r4] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0224345A: + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + sub r2, r1, r0 + lsl r1, r0, #4 + str r2, [r4, #8] + cmp r2, r1 + bgt _02243474 + lsl r0, r0, #4 + str r0, [r4, #8] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_02243474: + ldr r2, [r4, #8] + ldr r0, [r4] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r2, [r4, #0xc] + ldr r0, [r4] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0224348E: + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022434A4 +MOD12_022434A4: ; 0x022434A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _022434B6 + cmp r0, #1 + beq _022434BA + b _022434F0 +_022434B6: + add r0, r0, #1 + strb r0, [r4, #0x10] +_022434BA: + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + sub r1, r1, r0 + ldr r0, _02243510 ; =0xFFFFD800 + str r1, [r4, #8] + cmp r1, r0 + bgt _022434D0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_022434D0: + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r2, [r4, #0xc] + ldr r0, [r4] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_022434F0: + ldr r0, [r4] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_02243510: .word 0xFFFFD800 + + thumb_func_start MOD12_02243514 +MOD12_02243514: ; 0x02243514 + ldr r2, _022435B0 ; =0x00000121 + ldrb r0, [r0, r2] + cmp r0, #8 + bhi _022435AA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243528: ; jump table + .short _0224353A - _02243528 - 2 ; case 0 + .short _02243552 - _02243528 - 2 ; case 1 + .short _02243568 - _02243528 - 2 ; case 2 + .short _02243586 - _02243528 - 2 ; case 3 + .short _02243586 - _02243528 - 2 ; case 4 + .short _02243592 - _02243528 - 2 ; case 5 + .short _02243592 - _02243528 - 2 ; case 6 + .short _0224359E - _02243528 - 2 ; case 7 + .short _0224359E - _02243528 - 2 ; case 8 +_0224353A: + cmp r1, #0 + beq _02243544 + cmp r1, #2 + beq _02243548 + b _0224354E +_02243544: + ldr r0, _022435B4 ; =0x00001770 + bx lr +_02243548: + mov r0, #0xfa + lsl r0, r0, #4 + bx lr +_0224354E: + mov r0, #0 + bx lr +_02243552: + cmp r1, #0 + beq _0224355C + cmp r1, #1 + beq _02243560 + b _02243564 +_0224355C: + ldr r0, _022435B8 ; =0x00001B58 + bx lr +_02243560: + ldr r0, _022435BC ; =0x00000BB8 + bx lr +_02243564: + mov r0, #0 + bx lr +_02243568: + cmp r1, #0 + beq _02243576 + cmp r1, #1 + beq _0224357A + cmp r1, #2 + beq _0224357E + b _02243582 +_02243576: + ldr r0, _022435C0 ; =0x00000D05 + bx lr +_0224357A: + ldr r0, _022435C0 ; =0x00000D05 + bx lr +_0224357E: + ldr r0, _022435C0 ; =0x00000D05 + bx lr +_02243582: + mov r0, #0 + bx lr +_02243586: + cmp r1, #0 + bne _0224358E + ldr r0, _022435C4 ; =0x00002710 + bx lr +_0224358E: + mov r0, #0 + bx lr +_02243592: + cmp r1, #1 + bne _0224359A + ldr r0, _022435C4 ; =0x00002710 + bx lr +_0224359A: + mov r0, #0 + bx lr +_0224359E: + cmp r1, #2 + bne _022435A6 + ldr r0, _022435C4 ; =0x00002710 + bx lr +_022435A6: + mov r0, #0 + bx lr +_022435AA: + mov r0, #0 + bx lr + nop +_022435B0: .word 0x00000121 +_022435B4: .word 0x00001770 +_022435B8: .word 0x00001B58 +_022435BC: .word 0x00000BB8 +_022435C0: .word 0x00000D05 +_022435C4: .word 0x00002710 + + thumb_func_start MOD12_022435C8 +MOD12_022435C8: ; 0x022435C8 + push {r3, lr} + bl MOD12_02243514 + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r1, _022435E0 ; =0x00001388 + add r0, r2, r1 + lsl r1, r1, #1 + bl _s32_div_f + pop {r3, pc} + .align 2, 0 +_022435E0: .word 0x00001388 + + thumb_func_start MOD12_022435E4 +MOD12_022435E4: ; 0x022435E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp] + mov r0, #0 + ldr r7, [sp] + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #8] + add r4, sp, #0x24 +_022435F6: + cmp r5, #0 + beq _02243604 + cmp r5, #1 + beq _0224361E + cmp r5, #2 + beq _02243628 + b _02243630 +_02243604: + ldr r0, [sp] + ldr r1, [sp, #8] + bl FUN_02083308 + str r0, [sp, #0x10] + ldr r0, [sp] + ldr r1, [sp, #8] + bl FUN_0208336C + ldr r1, [sp, #0x10] + add r0, r1, r0 + str r0, [r4] + b _02243638 +_0224361E: + mov r0, #0x4b + lsl r0, r0, #2 + ldrsh r0, [r7, r0] + str r0, [r4] + b _02243638 +_02243628: + ldr r0, _022436CC ; =0x0000012E + ldrsh r0, [r7, r0] + str r0, [r4] + b _02243638 +_02243630: + bl ErrorHandling + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_02243638: + ldr r0, [sp, #8] + add r4, r4, #4 + add r0, r0, #1 + add r7, #0xc + str r0, [sp, #8] + cmp r0, #4 + blt _022435F6 + mov r4, #0 + mov r3, #1 + add r2, sp, #0x28 + add r7, sp, #0x24 +_0224364E: + lsl r0, r4, #2 + ldr r1, [r7, r0] + ldr r0, [r2] + cmp r1, r0 + bge _0224365A + add r4, r3, #0 +_0224365A: + add r3, r3, #1 + add r2, r2, #4 + cmp r3, #4 + blt _0224364E + ldr r0, [sp] + add r1, r5, #0 + bl MOD12_02243514 + lsl r2, r4, #2 + add r1, sp, #0x24 + ldr r1, [r1, r2] + bl _s32_div_f + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #4] + add r7, sp, #0x24 + add r4, sp, #0x14 +_0224367E: + ldr r0, [r7] + ldr r1, [sp, #0xc] + mul r0, r1 + str r0, [r4] + add r0, #0x32 + mov r1, #0x64 + bl _s32_div_f + stmia r4!, {r0} + ldr r0, [sp, #4] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _0224367E + mov r2, #0 + add r1, sp, #0x14 +_022436A0: + cmp r5, #0 + beq _022436AE + cmp r5, #1 + beq _022436B4 + cmp r5, #2 + beq _022436BA + b _022436BE +_022436AE: + ldr r0, [r1] + strh r0, [r6] + b _022436BE +_022436B4: + ldr r0, [r1] + strh r0, [r6] + b _022436BE +_022436BA: + ldr r0, [r1] + strh r0, [r6] +_022436BE: + add r2, r2, #1 + add r1, r1, #4 + add r6, r6, #2 + cmp r2, #4 + blt _022436A0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022436CC: .word 0x0000012E + + thumb_func_start MOD12_022436D0 +MOD12_022436D0: ; 0x022436D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + str r0, [sp] + ldr r0, [r0] + ldr r1, _022439F0 ; =0x00000121 + ldrb r1, [r0, r1] + cmp r1, #8 + bhi _02243790 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022436EC: ; jump table + .short _022436FE - _022436EC - 2 ; case 0 + .short _0224371C - _022436EC - 2 ; case 1 + .short _0224373A - _022436EC - 2 ; case 2 + .short _02243768 - _022436EC - 2 ; case 3 + .short _02243768 - _022436EC - 2 ; case 4 + .short _02243776 - _022436EC - 2 ; case 5 + .short _02243776 - _022436EC - 2 ; case 6 + .short _02243784 - _022436EC - 2 ; case 7 + .short _02243784 - _022436EC - 2 ; case 8 +_022436FE: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439F8 ; =0x000003E6 + ldr r2, [sp] + ldr r0, [r0] + mov r1, #2 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_0224371C: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439FC ; =0x000003DE + ldr r2, [sp] + ldr r0, [r0] + mov r1, #1 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_0224373A: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439FC ; =0x000003DE + ldr r2, [sp] + ldr r0, [r0] + mov r1, #1 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439F8 ; =0x000003E6 + ldr r2, [sp] + ldr r0, [r0] + mov r1, #2 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_02243768: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_02243776: + ldr r3, _022439FC ; =0x000003DE + ldr r2, [sp] + mov r1, #1 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_02243784: + ldr r3, _022439F8 ; =0x000003E6 + ldr r2, [sp] + mov r1, #2 + add r2, r2, r3 + bl MOD12_022435E4 +_02243790: + ldr r7, _022439F4 ; =0x000003D6 + ldr r6, [sp] + add r0, r7, #0 + add r1, r7, #0 + mov r5, #0 + add r0, #8 + add r1, #0x18 +_0224379E: + ldr r2, _022439F8 ; =0x000003E6 + ldrsh r3, [r6, r7] + ldrsh r4, [r6, r2] + ldrsh r2, [r6, r0] + add r5, r5, #1 + add r2, r3, r2 + add r2, r4, r2 + strh r2, [r6, r1] + add r6, r6, #2 + cmp r5, #4 + blt _0224379E + ldr r1, [sp] + ldr r4, _022439F4 ; =0x000003D6 + mov r0, #0 + mov r2, #1 + add r1, r1, #2 + add r5, r4, #0 +_022437C0: + ldr r3, [sp] + lsl r6, r0, #1 + add r3, r3, r6 + ldrsh r6, [r3, r4] + ldrsh r3, [r1, r5] + cmp r6, r3 + bge _022437D0 + add r0, r2, #0 +_022437D0: + add r2, r2, #1 + add r1, r1, #2 + cmp r2, #4 + blt _022437C0 + lsl r1, r0, #1 + ldr r0, [sp] + ldr r4, [sp] + add r1, r0, r1 + ldr r0, _022439F4 ; =0x000003D6 + mov r5, #0 + add r7, r0, #0 + ldrsh r6, [r1, r0] + add r7, #0x20 +_022437EA: + ldr r0, _022439F4 ; =0x000003D6 + ldrsh r1, [r4, r0] + mov r0, #0x64 + mul r0, r1 + add r1, r6, #0 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022437EA + ldr r0, [sp] + ldr r4, _022439FC ; =0x000003DE + mov r2, #0 + mov r1, #1 + add r0, r0, #2 + add r5, r4, #0 +_0224380E: + ldr r3, [sp] + lsl r6, r2, #1 + add r3, r3, r6 + ldrsh r6, [r3, r4] + ldrsh r3, [r0, r5] + cmp r6, r3 + bge _0224381E + add r2, r1, #0 +_0224381E: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _0224380E + ldr r0, [sp] + lsl r1, r2, #1 + add r1, r0, r1 + ldr r0, _022439FC ; =0x000003DE + ldr r4, [sp] + add r7, r0, #0 + ldrsh r6, [r1, r0] + mov r5, #0 + add r7, #0x20 +_02243838: + ldr r0, _022439FC ; =0x000003DE + ldrsh r1, [r4, r0] + mov r0, #0x64 + mul r0, r1 + add r1, r6, #0 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _02243838 + ldr r0, [sp] + ldr r4, _022439F8 ; =0x000003E6 + mov r2, #0 + mov r1, #1 + add r0, r0, #2 + add r5, r4, #0 +_0224385C: + ldr r3, [sp] + lsl r6, r2, #1 + add r3, r3, r6 + ldrsh r6, [r3, r4] + ldrsh r3, [r0, r5] + cmp r6, r3 + bge _0224386C + add r2, r1, #0 +_0224386C: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _0224385C + ldr r0, [sp] + lsl r1, r2, #1 + add r1, r0, r1 + ldr r0, _022439F8 ; =0x000003E6 + ldr r4, [sp] + add r7, r0, #0 + ldrsh r6, [r1, r0] + mov r5, #0 + add r7, #0x20 +_02243886: + ldr r0, _022439F8 ; =0x000003E6 + ldrsh r1, [r4, r0] + mov r0, #0x64 + mul r0, r1 + add r1, r6, #0 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _02243886 + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0] + bl MOD12_022435C8 + ldr r4, [sp] + ldr r7, _02243A00 ; =0x0000041E + add r6, r0, #0 + mov r5, #0 +_022438B0: + ldr r0, _02243A04 ; =0x000003F6 + mov r1, #0x64 + ldrsh r0, [r4, r0] + mul r0, r6 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022438B0 + ldr r0, [sp] + mov r1, #1 + ldr r0, [r0] + bl MOD12_022435C8 + ldr r4, [sp] + ldr r7, _02243A08 ; =0x00000426 + add r6, r0, #0 + mov r5, #0 +_022438D8: + ldr r0, _02243A0C ; =0x000003FE + mov r1, #0x64 + ldrsh r0, [r4, r0] + mul r0, r6 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022438D8 + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + bl MOD12_022435C8 + ldr r4, [sp] + ldr r7, _02243A10 ; =0x0000042E + add r6, r0, #0 + mov r5, #0 +_02243900: + ldr r0, _02243A14 ; =0x00000406 + mov r1, #0x64 + ldrsh r0, [r4, r0] + mul r0, r6 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _02243900 + ldr r7, _02243A00 ; =0x0000041E + ldr r5, [sp] + add r0, r7, #0 + add r1, r7, #0 + mov r6, #0 + add r0, #8 + sub r1, #8 +_02243924: + ldr r2, _02243A10 ; =0x0000042E + ldrsh r3, [r5, r7] + ldrsh r4, [r5, r2] + ldrsh r2, [r5, r0] + add r6, r6, #1 + add r2, r3, r2 + add r2, r4, r2 + strh r2, [r5, r1] + add r5, r5, #2 + cmp r6, #4 + blt _02243924 + ldr r0, [sp] + mov r7, #0 + add r6, sp, #0x18 + str r0, [sp, #4] + add r4, sp, #8 + add r5, sp, #0x28 +_02243946: + stmia r6!, {r7} + ldr r1, [sp, #4] + ldr r0, _02243A18 ; =0x00000416 + ldrsh r0, [r1, r0] + stmia r4!, {r0} + ldr r0, [sp] + ldr r0, [r0] + bl FUN_02082878 + stmia r5!, {r0} + ldr r0, [sp, #4] + add r7, r7, #1 + add r0, r0, #2 + str r0, [sp, #4] + cmp r7, #4 + blt _02243946 + mov r0, #0 + mov ip, r0 +_0224396A: + mov r0, ip + mov r7, #3 + cmp r0, #3 + bge _022439B8 + add r2, sp, #0x14 + add r3, sp, #0x34 + add r4, sp, #0x24 +_02243978: + sub r0, r2, #4 + ldr r5, [r2] + ldr r6, [r0] + cmp r6, r5 + blt _02243990 + cmp r6, r5 + bne _022439AA + sub r0, r3, #4 + ldr r1, [r0] + ldr r0, [r3] + cmp r1, r0 + bge _022439AA +_02243990: + str r6, [r2] + sub r0, r2, #4 + str r5, [r0] + sub r0, r4, #4 + ldr r5, [r4] + ldr r1, [r0] + str r1, [r4] + str r5, [r0] + sub r0, r3, #4 + ldr r5, [r3] + ldr r1, [r0] + str r1, [r3] + str r5, [r0] +_022439AA: + sub r7, r7, #1 + mov r0, ip + sub r2, r2, #4 + sub r3, r3, #4 + sub r4, r4, #4 + cmp r7, r0 + bgt _02243978 +_022439B8: + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #3 + blt _0224396A + mov r1, #0x13 + ldr r7, _02243A1C ; =0x000003D1 + mov r6, #0 + add r5, sp, #0x18 + mov r0, #0xc + lsl r1, r1, #4 +_022439CE: + ldr r3, [sp] + ldr r2, [r5] + add r3, r3, r6 + strb r2, [r3, r7] + ldr r2, [sp] + ldr r4, [r2] + ldr r2, [r5] + add r5, r5, #4 + add r3, r2, #0 + mul r3, r0 + add r2, r4, r3 + strb r6, [r2, r1] + add r6, r6, #1 + cmp r6, #4 + blt _022439CE + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022439F0: .word 0x00000121 +_022439F4: .word 0x000003D6 +_022439F8: .word 0x000003E6 +_022439FC: .word 0x000003DE +_02243A00: .word 0x0000041E +_02243A04: .word 0x000003F6 +_02243A08: .word 0x00000426 +_02243A0C: .word 0x000003FE +_02243A10: .word 0x0000042E +_02243A14: .word 0x00000406 +_02243A18: .word 0x00000416 +_02243A1C: .word 0x000003D1 + + thumb_func_start MOD12_02243A20 +MOD12_02243A20: ; 0x02243A20 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _02243A54 ; =0x02246758 + add r3, sp, #0 + str r1, [sp] + mov r1, #0xb + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _02243A58 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + ldr r1, _02243A5C ; =0x0000085C + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02243A54: .word 0x02246758 +_02243A58: .word 0x00000123 +_02243A5C: .word 0x0000085C + + thumb_func_start MOD12_02243A60 +MOD12_02243A60: ; 0x02243A60 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243A74 +MOD12_02243A74: ; 0x02243A74 + push {r3, lr} + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243A84 +MOD12_02243A84: ; 0x02243A84 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02243A88 +MOD12_02243A88: ; 0x02243A88 + push {r3, lr} + mov r1, #0x9a + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243A9C +MOD12_02243A9C: ; 0x02243A9C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0xe7 + lsl r1, r1, #2 + str r0, [sp] + mov ip, r2 + add r0, r3, #0 + add r4, r6, r1 + mov r2, #0x4d +_02243AAE: + ldrh r1, [r0] + add r0, r0, #2 + strh r1, [r4] + add r4, r4, #2 + sub r2, r2, #1 + bne _02243AAE + mov r1, #0 + ldr r7, _02243B04 ; =0x00000132 + add r2, r1, #0 +_02243AC0: + ldr r0, [r6] + mov r4, #0x4a + add r0, r0, r2 + ldrh r5, [r3] + lsl r4, r4, #2 + add r1, r1, #1 + strh r5, [r0, r4] + ldrh r5, [r3, #2] + add r4, r4, #2 + add r2, #0xc + strh r5, [r0, r4] + mov r4, #0x4b + ldrh r5, [r3, #4] + lsl r4, r4, #2 + strh r5, [r0, r4] + ldrh r5, [r3, #6] + add r4, r4, #2 + strh r5, [r0, r4] + mov r4, #0x13 + ldrh r5, [r3, #8] + lsl r4, r4, #4 + strh r5, [r0, r4] + ldrh r4, [r3, #0xa] + add r3, #0xc + cmp r1, #4 + strh r4, [r0, r7] + blt _02243AC0 + mov r2, #0 + ldr r0, [sp] + mov r1, ip + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243B04: .word 0x00000132 + + thumb_func_start MOD12_02243B08 +MOD12_02243B08: ; 0x02243B08 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243B1C +MOD12_02243B1C: ; 0x02243B1C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02243B58 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02243B5C ; =MOD12_02243B60 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243B58: .word 0x00007530 +_02243B5C: .word MOD12_02243B60 + + thumb_func_start MOD12_02243B60 +MOD12_02243B60: ; 0x02243B60 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _02243B70 + b _02243C96 +_02243B70: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243B84 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_02243B84: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243B98 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_02243B98: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _02243C10 +_02243BB0: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _02243CB4 ; =0x02246738 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _02243C0A + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _02243CB8 ; =0x02246740 + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _02243C04 +_02243BE0: + mov r4, #0 + b _02243BF8 +_02243BE4: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_02243BF8: + cmp r4, #8 + blt _02243BE4 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_02243C04: + ldr r0, [sp, #4] + cmp r0, #4 + blt _02243BE0 +_02243C0A: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_02243C10: + ldr r0, [sp, #8] + cmp r0, #4 + blt _02243BB0 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _02243C52 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _02243C52 + ldr r0, _02243CB4 ; =0x02246738 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _02243C4C +_02243C3C: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_02243C4C: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _02243C3C +_02243C52: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _02243CB0 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _02243CB0 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_02243C96: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02243CB0: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243CB4: .word 0x02246738 +_02243CB8: .word 0x02246740 + + thumb_func_start MOD12_02243CBC +MOD12_02243CBC: ; 0x02243CBC + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243CD0 +MOD12_02243CD0: ; 0x02243CD0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02243D0C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02243D10 ; =MOD12_02243D14 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243D0C: .word 0x00007530 +_02243D10: .word MOD12_02243D14 + + thumb_func_start MOD12_02243D14 +MOD12_02243D14: ; 0x02243D14 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _02243D24 + b _02243E72 +_02243D24: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243D38 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_02243D38: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243D4C + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_02243D4C: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _02243DCC +_02243D64: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + mov r0, #4 + sub r1, r0, r1 + ldr r0, _02243E90 ; =0x02246738 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _02243DC6 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r1, [r0, #0x12] + mov r0, #0xb + mov r7, #0x3f + sub r0, r0, r1 + lsl r1, r0, #1 + ldr r0, _02243E94 ; =0x02246740 + str r5, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r7, r7, #0xa + lsl r0, r0, #5 + add r6, r1, r0 + b _02243DC0 +_02243D9C: + mov r4, #0 + b _02243DB4 +_02243DA0: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_02243DB4: + cmp r4, #8 + blt _02243DA0 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_02243DC0: + ldr r0, [sp, #4] + cmp r0, #4 + blt _02243D9C +_02243DC6: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_02243DCC: + ldr r0, [sp, #8] + cmp r0, #4 + blt _02243D64 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _02243E2E + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _02243E2E + mov r0, #5 + sub r1, r0, r1 + ldr r0, _02243E90 ; =0x02246738 + mov r7, #0x3f + ldrsb r0, [r0, r1] + lsl r7, r7, #0xa + mov r6, #0x1d + add r0, r0, #3 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #2 + str r0, [sp, #4] + lsl r1, r1, #8 + b _02243E28 +_02243E02: + ldr r0, [sp, #4] + ldr r5, [sp, #4] + lsl r4, r0, #1 + ldrh r0, [r3, r4] + lsl r5, r5, #0x1d + and r0, r7 + strh r0, [r3, r4] + ldr r0, [sp, #4] + ldrh r2, [r3, r4] + lsr r0, r0, #0x1f + sub r5, r5, r0 + ror r5, r6 + add r0, r0, r5 + add r0, r0, r1 + orr r0, r2 + strh r0, [r3, r4] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_02243E28: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _02243E02 +_02243E2E: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _02243E8C + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _02243E8C + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_02243E72: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02243E8C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243E90: .word 0x02246738 +_02243E94: .word 0x02246740 + + thumb_func_start MOD12_02243E98 +MOD12_02243E98: ; 0x02243E98 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243EAC +MOD12_02243EAC: ; 0x02243EAC + push {r4, lr} + ldr r3, _02243EC0 ; =0x0000127C + mov r4, #1 + strb r4, [r1, r3] + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, pc} + .align 2, 0 +_02243EC0: .word 0x0000127C + + thumb_func_start MOD12_02243EC4 +MOD12_02243EC4: ; 0x02243EC4 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243ED8 +MOD12_02243ED8: ; 0x02243ED8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x18 + mov r1, #0x20 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _02243F38 ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + ldrh r0, [r5, #8] + strh r0, [r4, #0x14] + ldrh r0, [r5, #0xa] + strh r0, [r4, #0x16] + ldrh r0, [r5, #0xc] + strh r0, [r4, #0x18] + ldrb r0, [r5, #0xe] + strb r0, [r4, #0x1a] + ldrb r0, [r5, #0x11] + strb r0, [r4, #0x1d] + ldrb r0, [r5, #0x10] + strb r0, [r4, #0x1c] + ldrb r0, [r5, #0xf] + strb r0, [r4, #0x1b] + ldr r0, _02243F3C ; =MOD12_02243F40 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243F38: .word 0x00007530 +_02243F3C: .word MOD12_02243F40 + + thumb_func_start MOD12_02243F40 +MOD12_02243F40: ; 0x02243F40 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02243F56 + cmp r0, #1 + beq _02243F94 + cmp r0, #2 + beq _02243FA6 + b _02243FDE +_02243F56: + ldrb r0, [r4, #0x1a] + cmp r0, #0 + beq _02243F8E + ldrb r0, [r4, #0x1d] + cmp r0, #0 + bne _02243F7A + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 +_02243F7A: + ldrb r1, [r4, #0x1a] + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x14 + bl MOD12_02242678 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243F8E: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243F94: + ldr r0, [r4] + bl MOD12_022426AC + cmp r0, #0 + bne _02243FF6 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243FA6: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _02243FBA + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243FBA: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x1b] + cmp r1, r0 + blo _02243FF6 + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + bl FUN_0200D0E0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243FDE: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02243FF6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02243FF8 +MOD12_02243FF8: ; 0x02243FF8 + push {r3, lr} + mov r1, #0x9a + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0224400C +MOD12_0224400C: ; 0x0224400C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0xe7 + add r6, r1, #0 + lsl r0, r0, #2 + add r5, r2, #0 + add r2, r6, r0 + mov r1, #0x4d +_0224401C: + ldrh r0, [r3] + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + sub r1, r1, #1 + bne _0224401C + mov r0, #0x18 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + mov r2, #0xfa + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + lsl r2, r2, #2 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0224405C ; =MOD12_02244060 + str r7, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224405C: .word MOD12_02244060 + + thumb_func_start MOD12_02244060 +MOD12_02244060: ; 0x02244060 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #6 + bls _02244070 + b _0224419A +_02244070: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224407C: ; jump table + .short _0224408A - _0224407C - 2 ; case 0 + .short _0224409E - _0224407C - 2 ; case 1 + .short _022440B2 - _0224407C - 2 ; case 2 + .short _022440DC - _0224407C - 2 ; case 3 + .short _022440EE - _0224407C - 2 ; case 4 + .short _0224415A - _0224407C - 2 ; case 5 + .short _02244182 - _0224407C - 2 ; case 6 +_0224408A: + ldr r1, [r4] + ldr r0, _022441B8 ; =0x00000848 + ldr r0, [r1, r0] + bl MOD12_022318DC + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0224409E: + bl MOD12_022318F8 + cmp r0, #1 + beq _022440A8 + b _022441B2 +_022440A8: + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_022440B2: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, _022441BC ; =0x0000046F + mov r1, #0x1e + bl FUN_02005350 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_022440DC: + bl FUN_0200E308 + cmp r0, #1 + bne _022441B2 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_022440EE: + ldr r0, [r4] + bl MOD12_02242788 + ldr r0, [r4] + bl MOD12_022427DC + ldr r0, [r4] + bl MOD12_02242804 + ldr r0, [r4] + bl MOD12_02242A1C + ldr r0, [r4] + bl MOD12_022429E0 + ldr r0, [r4] + mov r1, #0 + add r0, #0x34 + mov r2, #1 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #0xff + add r0, #0x34 + bl FUN_02019620 + ldr r0, [r4] + add r0, #0x34 + bl FUN_020191D0 + mov r6, #0 + add r5, r6, #0 + mov r7, #6 +_02244132: + ldr r0, [r4] + add r1, r7, #0 + add r0, r0, r5 + ldr r0, [r0, #0x18] + mov r2, #1 + bl FUN_02007558 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02244132 + ldr r1, [r4] + ldr r0, _022441C0 ; =0x0000127F + mov r2, #1 + strb r2, [r1, r0] + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0224415A: + bl FUN_02005404 + cmp r0, #0 + bne _022441B2 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_02244182: + bl FUN_0200E308 + cmp r0, #1 + bne _022441B2 + ldr r0, _022441C4 ; =0x0000049D + bl FUN_0200521C + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0224419A: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022441B2: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022441B8: .word 0x00000848 +_022441BC: .word 0x0000046F +_022441C0: .word 0x0000127F +_022441C4: .word 0x0000049D + + thumb_func_start MOD12_022441C8 +MOD12_022441C8: ; 0x022441C8 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022441DC +MOD12_022441DC: ; 0x022441DC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0x18 + str r1, [sp] + add r1, r0, #0 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + mov r2, #0 + str r0, [r4] + ldrh r0, [r6] + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_02244210: + add r0, r5, r2 + ldrb r1, [r0, #3] + add r0, r4, r2 + add r2, r2, #1 + strb r1, [r0, #0x11] + cmp r2, #4 + blt _02244210 + ldr r0, _0224422C ; =MOD12_02244234 + ldr r2, _02244230 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224422C: .word MOD12_02244234 +_02244230: .word 0x00007530 + + thumb_func_start MOD12_02244234 +MOD12_02244234: ; 0x02244234 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #4 + bhi _022442A6 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224424C: ; jump table + .short _02244256 - _0224424C - 2 ; case 0 + .short _0224425C - _0224424C - 2 ; case 1 + .short _0224427A - _0224424C - 2 ; case 2 + .short _02244294 - _0224424C - 2 ; case 3 + .short _022442A6 - _0224424C - 2 ; case 4 +_02244256: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224425C: + ldrb r1, [r4, #0x15] + mov r0, #3 + sub r2, r0, r1 + add r1, r4, r2 + ldrb r1, [r1, #0x11] + ldr r0, [r4] + bl MOD12_02242FD0 + ldrb r0, [r4, #0x15] + add r0, r0, #1 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224427A: + mov r0, #0x16 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x16] + ldrsh r0, [r4, r0] + cmp r0, #0x1e + ble _022442BE + mov r0, #0 + strh r0, [r4, #0x16] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02244294: + ldrb r1, [r4, #0x15] + cmp r1, #4 + bhs _022442A0 + mov r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022442A0: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022442A6: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022442BE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_022442C0 +MOD12_022442C0: ; 0x022442C0 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022442D4 +MOD12_022442D4: ; 0x022442D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02244318 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0, #2] + strb r0, [r4, #0x11] + ldr r0, _0224431C ; =MOD12_02244320 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244318: .word 0x00007530 +_0224431C: .word MOD12_02244320 + + thumb_func_start MOD12_02244320 +MOD12_02244320: ; 0x02244320 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #6 + bhi _02244414 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224433A: ; jump table + .short _02244348 - _0224433A - 2 ; case 0 + .short _02244370 - _0224433A - 2 ; case 1 + .short _0224437E - _0224433A - 2 ; case 2 + .short _02244396 - _0224433A - 2 ; case 3 + .short _022443A4 - _0224433A - 2 ; case 4 + .short _022443E6 - _0224433A - 2 ; case 5 + .short _022443F8 - _0224433A - 2 ; case 6 +_02244348: + ldr r0, [r4] + bl MOD12_02242CB0 + add r2, r4, #0 + ldr r0, [r4] + mov r1, #0 + add r2, #0x12 + bl MOD12_0224324C + ldr r0, _02244430 ; =0x0000049E + bl FUN_0200521C + ldr r0, _02244434 ; =0x000006E5 + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_02244370: + ldrb r1, [r4, #0x12] + cmp r1, #1 + bne _0224442C + add r0, r0, #1 + add sp, #0xc + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_0224437E: + ldrb r1, [r4, #0x11] + add r3, r4, #0 + ldr r0, [r4] + mov r2, #0 + add r3, #0x13 + bl MOD12_022433CC + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_02244396: + ldrb r1, [r4, #0x13] + cmp r1, #1 + bne _0224442C + add r0, r0, #1 + add sp, #0xc + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_022443A4: + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0x10] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_020671BC + add r2, r0, #0 + mov r0, #0x7f + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #0x18 + str r3, [sp, #8] + ldr r3, [r4] + lsl r2, r2, #0x10 + ldr r5, [r3] + ldrb r3, [r4, #0x11] + add r0, #0xdd + lsr r2, r2, #0x10 + lsl r3, r3, #2 + add r3, r5, r3 + ldr r0, [r3, r0] + add r3, r1, #0 + bl FUN_02069FB0 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_022443E6: + bl FUN_02005670 + cmp r0, #0 + bne _0224442C + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_022443F8: + mov r0, #0x14 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x14] + ldrsh r0, [r4, r0] + cmp r0, #0x3c + ble _0224442C + mov r0, #0 + strh r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_02244414: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224442C: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02244430: .word 0x0000049E +_02244434: .word 0x000006E5 + + thumb_func_start MOD12_02244438 +MOD12_02244438: ; 0x02244438 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0224444C +MOD12_0224444C: ; 0x0224444C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r5, r1, #0 + mov r0, #0x18 + mov r1, #0x24 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x24 + bl MI_CpuFill8 + str r5, [r4] + ldrh r0, [r6] + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r0, [r4, #0xc] + ldrb r0, [r7, #7] + strb r0, [r4, #0x11] + ldrb r0, [r7, #7] + cmp r0, #0 + beq _02244492 + cmp r0, #1 + beq _022444A8 + cmp r0, #2 + beq _022444BE + b _022444D4 +_02244492: + ldr r0, _022444E4 ; =0x0000041E + mov r2, #0 + add r3, r4, #0 +_02244498: + ldrsh r1, [r5, r0] + add r2, r2, #1 + add r5, r5, #2 + strh r1, [r3, #0x14] + add r3, r3, #2 + cmp r2, #4 + blt _02244498 + b _022444D8 +_022444A8: + ldr r0, _022444E8 ; =0x00000426 + mov r3, #0 + add r2, r4, #0 +_022444AE: + ldrsh r1, [r5, r0] + add r3, r3, #1 + add r5, r5, #2 + strh r1, [r2, #0x14] + add r2, r2, #2 + cmp r3, #4 + blt _022444AE + b _022444D8 +_022444BE: + ldr r0, _022444EC ; =0x0000042E + mov r3, #0 + add r2, r4, #0 +_022444C4: + ldrsh r1, [r5, r0] + add r3, r3, #1 + add r5, r5, #2 + strh r1, [r2, #0x14] + add r2, r2, #2 + cmp r3, #4 + blt _022444C4 + b _022444D8 +_022444D4: + bl ErrorHandling +_022444D8: + ldr r0, _022444F0 ; =MOD12_022444F8 + ldr r2, _022444F4 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022444E4: .word 0x0000041E +_022444E8: .word 0x00000426 +_022444EC: .word 0x0000042E +_022444F0: .word MOD12_022444F8 +_022444F4: .word 0x00007530 + + thumb_func_start MOD12_022444F8 +MOD12_022444F8: ; 0x022444F8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #5 + bhi _022445E8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02244510: ; jump table + .short _0224451C - _02244510 - 2 ; case 0 + .short _0224452A - _02244510 - 2 ; case 1 + .short _02244544 - _02244510 - 2 ; case 2 + .short _02244566 - _02244510 - 2 ; case 3 + .short _022445BC - _02244510 - 2 ; case 4 + .short _022445E8 - _02244510 - 2 ; case 5 +_0224451C: + ldr r0, _02244604 ; =0x000006FA + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0224452A: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0x2d + ble _02244600 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02244544: + mov r2, #0 + add r3, r4, #0 + mov r0, #0x14 +_0224454A: + ldrsh r1, [r3, r0] + cmp r1, #0 + ble _02244558 + ldr r0, _02244608 ; =0x000006FB + bl FUN_020054C8 + b _02244560 +_02244558: + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #4 + blt _0224454A +_02244560: + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_02244566: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #1 + blt _02244600 + mov r6, #0 + strh r6, [r4, #0x12] + add r5, r6, #0 + mov r7, #0x14 +_0224457C: + ldr r0, [r4] + mov r2, #0x1c + add r1, r0, r5 + mov r0, #0xf3 + lsl r0, r0, #2 + ldrb r1, [r1, r0] + lsl r0, r1, #1 + add r0, r4, r0 + ldrsh r2, [r0, r2] + add r2, r2, #1 + strh r2, [r0, #0x1c] + mov r2, #0x1c + ldrsh r3, [r0, r2] + ldrsh r0, [r0, r7] + cmp r3, r0 + bgt _022445A8 + str r5, [sp] + ldrb r2, [r4, #0x11] + ldr r0, [r4] + bl MOD12_022430A8 + b _022445AA +_022445A8: + add r6, r6, #1 +_022445AA: + add r5, r5, #1 + cmp r5, #4 + blt _0224457C + cmp r6, #4 + blt _02244600 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_022445BC: + mov r3, #0 + add r2, r4, #0 + mov r0, #0x14 +_022445C2: + ldrsh r1, [r2, r0] + cmp r1, #0 + ble _022445D0 + ldr r0, _0224460C ; =0x000006F9 + bl FUN_020054C8 + b _022445D8 +_022445D0: + add r3, r3, #1 + add r2, r2, #2 + cmp r3, #4 + blt _022445C2 +_022445D8: + ldr r0, _02244604 ; =0x000006FA + mov r1, #0 + bl FUN_020054F0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_022445E8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02244600: + pop {r3, r4, r5, r6, r7, pc} + nop +_02244604: .word 0x000006FA +_02244608: .word 0x000006FB +_0224460C: .word 0x000006F9 + + thumb_func_start MOD12_02244610 +MOD12_02244610: ; 0x02244610 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02244624 +MOD12_02244624: ; 0x02244624 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x18 + mov r1, #0x14 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02244660 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02244664 ; =MOD12_02244668 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244660: .word 0x00007530 +_02244664: .word MOD12_02244668 + + thumb_func_start MOD12_02244668 +MOD12_02244668: ; 0x02244668 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0224467E + cmp r0, #1 + beq _0224469E + cmp r0, #2 + beq _022446CE + b _022446E8 +_0224467E: + mov r0, #3 + str r0, [sp] + mov r0, #0x5a + mov r1, #0x10 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, _02244704 ; =0x0000049E + mov r1, #0x5a + bl FUN_02005350 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224469E: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #1 + bne _02244700 + bl FUN_02005404 + cmp r0, #0 + bne _02244700 + ldr r0, [r4] + bl MOD12_02242CEC + ldr r0, _02244708 ; =0x0400006C + mov r1, #0x10 + bl GXx_SetMasterBrightness_ + ldr r0, _0224470C ; =0x0400106C + mov r1, #0x10 + bl GXx_SetMasterBrightness_ + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022446CE: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0x3c + ble _02244700 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022446E8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02244700: + pop {r3, r4, r5, pc} + nop +_02244704: .word 0x0000049E +_02244708: .word 0x0400006C +_0224470C: .word 0x0400106C + + thumb_func_start MOD12_02244710 +MOD12_02244710: ; 0x02244710 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r5, r0, #0 + add r7, r1, #0 + add r4, r6, #0 +_0224471A: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02027A14 + cmp r0, #1 + bne _02244732 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02027BDC + ldrb r0, [r7, r0] + add r6, r6, r0 +_02244732: + add r4, r4, #1 + cmp r4, #0x14 + blt _0224471A + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0224473C +MOD12_0224473C: ; 0x0224473C + push {r3, lr} + add r3, r0, #0 + mov r2, #0 + mov r0, #0x5a + add r1, r1, #3 + str r2, [sp] + bl FUN_02006C98 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02244750 +MOD12_02244750: ; 0x02244750 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x1b + str r0, [sp] + mov r0, #0x2c + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + add r4, r1, #0 + add r6, r3, #0 + str r0, [sp, #0x14] + add r0, r2, #0 + mov r1, #3 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0xba + str r6, [sp, #8] + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x2c] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0xbb + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x30] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0xbc + bl FUN_0200C13C + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_022447C0 +MOD12_022447C0: ; 0x022447C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0200C358 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C368 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C378 + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl FUN_0200C388 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_022447E8 +MOD12_022447E8: ; 0x022447E8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r3, #0 + mov ip, r2 + ldr r3, _02244860 ; =0x022467DC + add r6, r0, #0 + add r7, r1, #0 + add r2, sp, #4 + mov r4, #6 +_022447FA: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r4, r4, #1 + bne _022447FA + ldr r0, [r3] + mov r1, #0x18 + str r0, [r2] + ldr r0, [sp, #0x50] + str r5, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [sp, #0x54] + str r0, [sp, #0x20] + ldr r0, [sp, #0x58] + str r0, [sp, #0x24] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xc] + ldr r0, [sp, #0x60] + str r0, [sp, #0x30] + mov r0, ip + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + str r0, [sp] + bl MI_CpuFill8 + ldr r5, [sp] + mov r4, #0 +_02244832: + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #4 + bl FUN_0200C154 + mov r1, #0 + stmia r5!, {r0} + bl FUN_0200C644 + add r4, r4, #1 + cmp r4, #5 + blt _02244832 + ldr r0, _02244864 ; =MOD12_02244958 + ldr r1, [sp] + ldr r2, _02244868 ; =0x00009C40 + bl FUN_0200CA44 + ldr r1, [sp] + str r0, [r1, #0x14] + add r0, r1, #0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244860: .word 0x022467DC +_02244864: .word MOD12_02244958 +_02244868: .word 0x00009C40 + + thumb_func_start MOD12_0224486C +MOD12_0224486C: ; 0x0224486C + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02244874: + ldr r0, [r5] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02244874 + ldr r0, [r6, #0x14] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02244890 +MOD12_02244890: ; 0x02244890 + push {r4, r5, r6, lr} + add r5, r0, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r4, [sp, #0x24] + add r6, r3, #0 + ldr r0, [r5] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r2, [sp, #0x10] + lsl r1, r6, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #8] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #0xc] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r0, [r5] + mov r1, #0 + bl FUN_0200C5C0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r5, #8] + mov r1, #2 + bl FUN_0200C5C0 + ldr r0, [r5, #0xc] + mov r1, #3 + bl FUN_0200C5C0 + mov r4, #0 + mov r6, #1 +_02244906: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02244906 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02244918 +MOD12_02244918: ; 0x02244918 + push {r4, lr} + sub sp, #0x18 + add r4, r2, #0 + str r3, [sp] + ldr r2, [sp, #0x20] + str r1, [sp, #4] + str r2, [sp, #8] + str r4, [sp, #0xc] + str r2, [sp, #0x10] + ldr r2, [sp, #0x24] + str r2, [sp, #0x14] + add r2, r3, #0 + add r3, r4, #0 + bl MOD12_02244890 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0224493C +MOD12_0224493C: ; 0x0224493C + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_02244944: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02244944 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02244958 +MOD12_02244958: ; 0x02244958 + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r0, [r6] + bl FUN_0200C658 + cmp r0, #0 + beq _02244988 + mov r4, #0 + add r5, r6, #0 +_0224496A: + ldr r0, [r5] + bl FUN_0200C5A8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224496A + ldr r0, [r6, #0x10] + bl FUN_0200C658 + cmp r0, #1 + bne _02244988 + ldr r0, [r6, #0x10] + bl FUN_0200C5A8 +_02244988: + pop {r4, r5, r6, pc} + + .section .data + ; 0x0224498C + .incbin "baserom.nds", 0x1F71CC, 0x1E94 diff --git a/arm9/modules/13/asm/module_13_arm1.s b/arm9/modules/13/asm/module_13_arm1.s new file mode 100644 index 00000000..edb71ead --- /dev/null +++ b/arm9/modules/13/asm/module_13_arm1.s @@ -0,0 +1,6051 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD13_02211EA4 +MOD13_02211EA4: ; 0x02211EA4 + stmdb sp!, {lr} + sub sp, sp, #4 + strh r1, [sp] + add r2, sp, #0 + mov r1, #0xd + bl MOD13_022130E8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + + arm_func_start MOD13_02211EC8 +MOD13_02211EC8: ; 0x02211EC8 + cmp r0, #1 + blo _02211EDC + cmp r0, #0xf + movls r0, #1 + bxls lr +_02211EDC: + mov r0, #0 + bx lr + + arm_func_start MOD13_02211EE4 +MOD13_02211EE4: ; 0x02211EE4 + cmp r1, r0 + movls r1, r0 + mov r0, r1 + bx lr + + arm_func_start MOD13_02211EF4 +MOD13_02211EF4: ; 0x02211EF4 + ldr r1, _02211F6C ; =0x02240A40 + mov r2, #1 + mov r2, r2, lsl r0 + ldr r1, [r1] + ands r1, r1, r2 + bxeq lr + ldr r2, _02211F70 ; =0x02240AFC + ldr r1, _02211F74 ; =0x000005D4 + ldr r2, [r2] + mla r3, r0, r1, r2 + add r0, r3, #0x1000 + ldrb r0, [r0, #0xd52] + cmp r0, #0 + bxeq lr + add r0, r3, #0x1d00 + ldrh r1, [r0, #0x4c] + cmp r1, #0 + bxeq lr + ldrh r2, [r0, #0x48] + ldrh ip, [r0, #0x4a] + cmp ip, r2 + bhi _02211F60 + add r1, ip, #2 + cmp r2, r1 + addle r1, r2, #1 + strleh r1, [r0, #0x48] + bxle lr +_02211F60: + add r0, r3, #0x1d00 + strh ip, [r0, #0x48] + bx lr + .align 2, 0 +_02211F6C: .word 0x02240A40 +_02211F70: .word 0x02240AFC +_02211F74: .word 0x000005D4 + + arm_func_start MOD13_02211F78 +MOD13_02211F78: ; 0x02211F78 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + add r1, sp, #0 + mov r0, #0 + mov r2, #0xa + bl MIi_CpuClear16 + mov ip, #1 + ldr r0, _022120FC ; =0x02240AFC + mov r4, ip + ldr r3, [r0] + mov r5, ip + mov r0, ip + mov r1, ip + mov r2, ip +_02211FB0: + sub lr, ip, #1 + add lr, r3, lr, lsl #2 + add lr, lr, #0x1000 + ldr lr, [lr, #0x4e8] + cmp lr, #0xb + addls pc, pc, lr, lsl #2 + b _02212048 +_02211FCC: ; jump table + b _02212048 ; case 0 + b _02212048 ; case 1 + b _02211FFC ; case 2 + b _02212048 ; case 3 + b _0221201C ; case 4 + b _0221200C ; case 5 + b _02212048 ; case 6 + b _02212048 ; case 7 + b _0221202C ; case 8 + b _02212048 ; case 9 + b _02212048 ; case 10 + b _0221203C ; case 11 +_02211FFC: + ldrh lr, [sp] + orr lr, lr, r2, lsl ip + strh lr, [sp] + b _02212048 +_0221200C: + ldrh lr, [sp, #2] + orr lr, lr, r1, lsl ip + strh lr, [sp, #2] + b _02212048 +_0221201C: + ldrh lr, [sp, #4] + orr lr, lr, r0, lsl ip + strh lr, [sp, #4] + b _02212048 +_0221202C: + ldrh lr, [sp, #6] + orr lr, lr, r5, lsl ip + strh lr, [sp, #6] + b _02212048 +_0221203C: + ldrh lr, [sp, #8] + orr lr, lr, r4, lsl ip + strh lr, [sp, #8] +_02212048: + add ip, ip, #1 + mov ip, ip, lsl #0x10 + mov ip, ip, lsr #0x10 + cmp ip, #0xf + bls _02211FB0 + ldrh r1, [sp, #6] + cmp r1, #0 + beq _02212074 + mov r0, #5 + bl MOD13_02212614 + b _022120D4 +_02212074: + ldrh r1, [sp] + cmp r1, #0 + beq _0221208C + mov r0, #1 + bl MOD13_02212614 + b _022120D4 +_0221208C: + ldrh r1, [sp, #8] + cmp r1, #0 + beq _022120A4 + mov r0, #6 + bl MOD13_02212614 + b _022120D4 +_022120A4: + ldrh r1, [sp, #4] + cmp r1, #0 + beq _022120BC + mov r0, #2 + bl MOD13_02212614 + b _022120D4 +_022120BC: + ldrh r0, [sp, #2] + cmp r0, #0 + beq _022120D0 + bl MOD13_02212464 + b _022120D4 +_022120D0: + bl MOD13_02212104 +_022120D4: + cmp r0, #0x15 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, lr} + bxne lr + ldr r1, _02212100 ; =0x0000FFFF + mov r0, #0 + bl MOD13_02212614 + add sp, sp, #0xc + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_022120FC: .word 0x02240AFC +_02212100: .word 0x0000FFFF + + arm_func_start MOD13_02212104 +MOD13_02212104: ; 0x02212104 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + ldr r5, _022123B0 ; =0x02240AFC + ldr r0, [r5] + add r0, r0, #0x1000 + ldrb r0, [r0, #0x524] + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + ldr r4, _022123B4 ; =0x000005D4 + mov r1, #0 +_02212138: + ldr r0, [r5] + add r3, r0, #0x1000 + ldrb r0, [r3, #0x525] + add r0, r0, #1 + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #28 + add r0, r2, r0, ror #28 + strb r0, [r3, #0x525] + ldr r2, [r5] + add r0, r2, #0x1000 + ldrb r0, [r0, #0x525] + mla r3, r0, r4, r2 + add r2, r3, #0x1000 + ldrb r2, [r2, #0xd52] + cmp r2, #0 + beq _02212188 + add r2, r3, #0x1d00 + ldrh r2, [r2, #0x4c] + cmp r2, #0 + bne _02212198 +_02212188: + add r1, r1, #1 + and r1, r1, #0xff + cmp r1, #0x10 + blo _02212138 +_02212198: + cmp r1, #0x10 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + bl MOD13_02211EF4 + ldr r0, _022123B0 ; =0x02240AFC + ldr r1, _022123B4 ; =0x000005D4 + ldr r6, [r0] + ldr r2, _022123B8 ; =0x00001D2C + add r0, r6, #0x1000 + ldrb r0, [r0, #0x525] + ldr r3, _022123BC ; =0x00001788 + add r4, r6, r2 + mul r5, r0, r1 + add r0, r6, r5 + add r0, r0, #0x1d00 + ldrh r2, [r0, #0x48] + add r3, r6, r3 + add r0, sp, #8 + add r1, r4, r5 + add r3, r3, r5 + bl MOD13_02213558 + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + ldr r0, _022123B0 ; =0x02240AFC + mov r2, #4 + ldr r1, [r0] + strb r2, [sp] + add r2, r1, #0x1000 + ldrb r4, [r2, #0x525] + ldr r3, _022123B4 ; =0x000005D4 + add r0, sp, #0 + strh r4, [sp, #2] + ldrb r4, [r2, #0x525] + mla r2, r4, r3, r1 + add r2, r2, #0x1d00 + ldrh r2, [r2, #0x48] + strh r2, [sp, #4] + bl MOD13_022171AC + ldr r1, _022123B0 ; =0x02240AFC + ldr r4, _022123B4 ; =0x000005D4 + ldr r5, [r1] + ldrb r1, [sp, #0x14] + add r2, r5, #0x1000 + ldrb r2, [r2, #0x525] + ldr r6, [sp, #0x10] + ldr r3, [sp, #0xc] + mla r5, r2, r4, r5 + add r2, r5, r1, lsl #2 + add r4, r5, #0x1000 + add r2, r2, #0x1000 + ldr r5, [r4, #0xd58] + ldr r2, [r2, #0xd2c] + ldr r1, [r5, r1, lsl #2] + sub r2, r6, r2 + add r7, r2, r1 + ldr r6, [r4, #0xd54] + mov r2, r0 + mov r0, r6 + mov r1, r7 + bl MOD13_02216A68 + cmp r0, #0 + bne _02212378 + ldr r1, _022123B0 ; =0x02240AFC + ldr r0, _022123C0 ; =0x00007CE0 + ldr r1, [r1] + add r5, r1, r0 + mov r0, r5 + bl MOD13_02216D78 + cmp r0, #0 + bne _02212368 + ldr r0, [r6] + cmp r0, #0 + subne r0, r0, #1 + strne r0, [r6] + bne _02212368 + add lr, r6, #0x30 + mov r4, #0 + mov ip, r4 + mov r3, lr +_022122E8: + add r0, lr, ip, lsl #4 + ldr r0, [r0, #0xc] + mov r2, ip, lsl #4 + cmp r0, #2 + bne _02212318 + cmp r4, #0 + beq _02212314 + ldr r1, [r4] + ldr r0, [lr, r2] + cmp r1, r0 + bls _02212318 +_02212314: + mov r4, r3 +_02212318: + add ip, ip, #1 + cmp ip, #4 + add r3, r3, #0x10 + blt _022122E8 + cmp r4, #0 + bne _02212334 + bl OS_Terminate +_02212334: + mov r0, #2 + str r0, [r6] + mov r0, #1 + str r0, [r4, #0xc] + bic r0, r7, #0x1f + str r0, [r4] + str r4, [r5, #0x10] + ldr r1, _022123C4 ; =MOD13_022123C8 + mov r0, r5 + mov r2, #0 + mov r3, #4 + str r6, [r5, #0x14] + bl MOD13_02216BE8 +_02212368: + add sp, sp, #0x1c + mov r0, #0x15 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02212378: + ldr r0, _022123B0 ; =0x02240AFC + ldr r4, [sp, #0xc] + ldr r2, [r0] + ldr r1, _022123B4 ; =0x000005D4 + add r0, r2, #0x1000 + ldrb r3, [r0, #0x525] + add r0, r4, #6 + mla r1, r3, r1, r2 + add r1, r1, #0x1d00 + ldrh r1, [r1, #0x4c] + bl MOD13_022141E8 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_022123B0: .word 0x02240AFC +_022123B4: .word 0x000005D4 +_022123B8: .word 0x00001D2C +_022123BC: .word 0x00001788 +_022123C0: .word 0x00007CE0 +_022123C4: .word MOD13_022123C8 + + arm_func_start MOD13_022123C8 +MOD13_022123C8: ; 0x022123C8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + ldr r5, [r0, #0x14] + ldr r4, [r0, #0x10] + add r0, sp, #4 + bl FS_InitFile + ldr r1, [r5, #0x14] + add r0, r5, #0x10 + ldr r5, [r4] + bl FS_FindArchive + mvn r1, #0 + str r1, [sp] + ldr r2, [r4, #4] + mov r1, r0 + add r3, r5, r2 + add r0, sp, #4 + mov r2, r5 + bl FS_OpenFileDirect + cmp r0, #0 + beq _02212440 + ldr r1, [r4, #8] + ldr r2, [r4, #4] + add r0, sp, #4 + bl FS_ReadFile + ldr r1, [r4, #4] + cmp r1, r0 + moveq r0, #2 + streq r0, [r4, #0xc] + add r0, sp, #4 + bl FS_CloseFile +_02212440: + ldr r0, [r4, #0xc] + cmp r0, #2 + movne r0, #0 + strne r0, [r4] + movne r0, #2 + strne r0, [r4, #0xc] + add sp, sp, #0x4c + ldmia sp!, {r4, r5, lr} + bx lr + + arm_func_start MOD13_02212464 +MOD13_02212464: ; 0x02212464 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x1c + mov r4, #0 + add r0, sp, #6 + mov r1, r4 + mov r2, #0x10 + mvn r5, #0 + bl MI_CpuFill8 + ldr r1, _02212604 ; =0x02240AFC + mov r0, #1 + ldr r1, [r1] + add ip, sp, #6 +_02212494: + sub r3, r0, #1 + add r2, r1, r3, lsl #2 + add r2, r2, #0x1000 + ldr r2, [r2, #0x4e8] + cmp r2, #5 + bne _022124C4 + add r2, r1, r3 + add r2, r2, #0x1500 + ldrsb r3, [r2, #0x26] + ldrb r2, [ip, r3] + add r2, r2, #1 + strb r2, [ip, r3] +_022124C4: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #0xf + bls _02212494 + ldr r2, _02212608 ; =0x0223F780 + mov r0, #0 + ldrb r3, [r2] + add lr, sp, #6 + ldr ip, _0221260C ; =0x000005D4 +_022124EC: + add r2, r3, #1 + mov r3, r2, lsr #0x1f + rsb r2, r3, r2, lsl #28 + add r2, r3, r2, ror #28 + and r3, r2, #0xff + mla r2, r3, ip, r1 + add r2, r2, #0x1000 + ldrb r2, [r2, #0xd52] + cmp r2, #0 + beq _02212528 + ldrb r2, [lr, r3] + cmp r2, #0 + movne r0, r3, lsl #0x18 + movne r5, r0, asr #0x18 + bne _02212538 +_02212528: + add r0, r0, #1 + and r0, r0, #0xff + cmp r0, #0x10 + blo _022124EC +_02212538: + mvn r0, #0 + cmp r5, r0 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, lr} + bxeq lr + ldr r2, _02212608 ; =0x0223F780 + mov r0, #1 + strb r5, [r2] + mov r3, r0 +_02212560: + sub ip, r0, #1 + add r2, r1, ip, lsl #2 + add r2, r2, #0x1000 + ldr r2, [r2, #0x4e8] + cmp r2, #5 + bne _02212594 + add r2, r1, ip + add r2, r2, #0x1500 + ldrsb r2, [r2, #0x26] + cmp r5, r2 + orreq r2, r4, r3, lsl r0 + moveq r2, r2, lsl #0x10 + moveq r4, r2, lsr #0x10 +_02212594: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #0xf + bls _02212560 + mov r2, #3 + add r0, sp, #0 + strb r2, [sp] + strh r5, [sp, #2] + bl MOD13_022171AC + movs r1, r0 + beq _022125E4 + ldr r2, _02212604 ; =0x02240AFC + ldr r0, _02212610 ; =0x00001788 + ldr r3, [r2] + ldr r2, _0221260C ; =0x000005D4 + add r0, r3, r0 + mla r0, r5, r2, r0 + mov r2, #0xe4 + bl MI_CpuCopy8 +_022125E4: + ldr r0, _02212604 ; =0x02240AFC + mov r1, r4 + ldr r2, [r0] + mov r0, #0xea + bl MOD13_022141E8 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02212604: .word 0x02240AFC +_02212608: .word 0x0223F780 +_0221260C: .word 0x000005D4 +_02212610: .word 0x00001788 + + arm_func_start MOD13_02212614 +MOD13_02212614: ; 0x02212614 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _02212654 ; =0x02240AFC + mov r4, r1 + ldr r1, [r2] + strb r0, [sp] + add r0, sp, #0 + bl MOD13_022171AC + ldr r0, _02212654 ; =0x02240AFC + mov r1, r4 + ldr r2, [r0] + mov r0, #6 + bl MOD13_022141E8 + add sp, sp, #8 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02212654: .word 0x02240AFC + + arm_func_start MOD13_02212658 +MOD13_02212658: ; 0x02212658 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, #0 + ldr r2, _02212700 ; =0x02240AFC + mov r3, r6 + ldr r1, _02212704 ; =0x000005D4 +_02212670: + ldr r0, [r2] + mla r5, r6, r1, r0 + add r0, r5, #0x1000 + ldrb r0, [r0, #0xd52] + cmp r0, #0 + addne r0, r5, #0x1d00 + strneh r3, [r0, #0x4a] + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, #0x10 + blo _02212670 + ldr r0, _02212708 ; =0x02240A40 + mov r1, #0 + str r1, [r0] + mov r6, #1 + ldr r5, _0221270C ; =0x0000FFFF +_022126B4: + mov r0, r4 + mov r1, r6 + bl WM_ReadMPData + cmp r0, #0 + beq _022126E4 + ldrh r1, [r0] + cmp r1, r5 + beq _022126E4 + cmp r1, #0 + beq _022126E4 + mov r1, r6 + bl MOD13_02212710 +_022126E4: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, #0xf + bls _022126B4 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02212700: .word 0x02240AFC +_02212704: .word 0x000005D4 +_02212708: .word 0x02240A40 +_0221270C: .word 0x0000FFFF + + arm_func_start MOD13_02212710 +MOD13_02212710: ; 0x02212710 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x38 + movs r7, r1 + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + cmp r7, #0xf + addhi sp, sp, #0x38 + ldmhiia sp!, {r4, r5, r6, r7, r8, lr} + bxhi lr + add r1, sp, #0 + mov r2, r7 + add r0, r0, #0xa + bl MOD13_02217070 + ldr r3, _02212C14 ; =0x02240AFC + ldrb r8, [sp] + ldr r2, [r3] + sub r4, r7, #1 + add r1, r2, r4, lsl #2 + add r1, r1, #0x1000 + ldr r6, [r1, #0x4e8] + mov r5, r0 + cmp r8, #0xb + addls pc, pc, r8, lsl #2 + b _02212C08 +_02212774: ; jump table + b _02212C08 ; case 0 + b _02212C08 ; case 1 + b _02212C08 ; case 2 + b _02212C08 ; case 3 + b _02212C08 ; case 4 + b _02212C08 ; case 5 + b _02212C08 ; case 6 + b _022127A4 ; case 7 + b _02212A30 ; case 8 + b _02212AEC ; case 9 + b _02212B68 ; case 10 + b _02212C08 ; case 11 +_022127A4: + cmp r6, #2 + bne _02212848 + cmp r5, #0 + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + add r1, sp, #0x14 + mov r2, #0x1d + bl MI_CpuCopy8 + ldr r3, _02212C14 ; =0x02240AFC + mov r0, r4 + ldr r1, [r3] + ldr r2, [sp, #0x14] + add r1, r1, r0, lsl #2 + add r1, r1, #0x1000 + str r2, [r1, #0x4a8] + ldr r1, [r3] + mov r2, #0x16 + add r1, r1, r0, lsl #1 + mul r8, r0, r2 + ldrh ip, [sp, #0x2e] + add r1, r1, #0x1400 + add r0, sp, #0x18 + strh ip, [r1, #0x8a] + ldr r1, [r3] + add r1, r1, #0x1340 + add r1, r1, r8 + bl MI_CpuCopy8 + ldr r0, _02212C14 ; =0x02240AFC + and r1, r7, #0xff + ldr r0, [r0] + and r2, r1, #0xf + add ip, r0, #0x1340 + ldrb r3, [ip, r8] + mov r0, r7 + mov r1, #0xa + bic r3, r3, #0xf0 + orr r2, r3, r2, lsl #4 + strb r2, [ip, r8] + add r2, sp, #0x18 + bl MOD13_02213124 +_02212848: + cmp r6, #0xa + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + ldrb r8, [r5, #0x1c] + mov r2, #0 + cmp r8, #0x10 + bhs _022128A4 + ldr r0, _02212C14 ; =0x02240AFC + ldr r1, _02212C18 ; =0x000005D4 + ldr r0, [r0] + mla r6, r8, r1, r0 + add r1, r6, #0x1000 + ldrb r3, [r1, #0xd52] + cmp r3, #0 + beq _022128A4 + add r3, r0, r4, lsl #2 + ldr r1, [r1, #0xd40] + add r3, r3, #0x1000 + ldr r5, [r3, #0x4a8] + ldr r3, [r1, #0x14] + cmp r5, r3 + beq _022128C0 +_022128A4: + ldr r0, _02212C14 ; =0x02240AFC + mov r1, #4 + ldr r0, [r0] + add r0, r0, r4, lsl #1 + add r0, r0, #0x1700 + strh r1, [r0, #0x54] + b _02212924 +_022128C0: + add r3, r6, #0x1d00 + ldrh r6, [r3, #0x4e] + mov ip, r2 + mov r5, #1 +_022128D0: + mov r3, r5, lsl ip + ands r3, r3, r6 + add r3, ip, #1 + addne r2, r2, #1 + and ip, r3, #0xff + andne r2, r2, #0xff + cmp ip, #0x10 + blo _022128D0 + ldrb r1, [r1, #0x18] + cmp r2, r1 + blo _02212924 + add r1, r0, r4, lsl #1 + add r3, r1, #0x1700 + mov r2, #0 + mov r0, r7 + mov r1, #0xb + strh r2, [r3, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212924: + ldr r3, _02212C14 ; =0x02240AFC + ldr r2, [r3] + add r0, r2, r4, lsl #1 + add r4, r0, #0x1700 + ldrh r0, [r4, #0x54] + cmp r0, #3 + beq _02212954 + cmp r0, #4 + beq _02212A10 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212954: + add r0, r2, #0x1500 + mov r1, #1 + ldrh r0, [r0, #0x36] + mov r6, r1, lsl r7 + ands r0, r0, r6 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, #0x1000 + ldrb r2, [r0, #0x535] + ldr r1, _02212C18 ; =0x000005D4 + sub r5, r7, #1 + add r2, r2, #1 + strb r2, [r0, #0x535] + ldr r0, [r3] + mul r4, r8, r1 + add r1, r0, #0x1500 + ldrh ip, [r1, #0x36] + mov r0, r7 + mov r2, #0 + orr r7, ip, r6 + strh r7, [r1, #0x36] + ldr r7, [r3] + mov r1, #5 + add r7, r7, r5 + add r7, r7, #0x1000 + strb r8, [r7, #0x526] + ldr r7, [r3] + add r7, r7, r4 + add r7, r7, #0x1d00 + ldrh r8, [r7, #0x4e] + orr r8, r8, r6 + strh r8, [r7, #0x4e] + ldr r7, [r3] + add r4, r7, r4 + add r4, r4, #0x1d00 + ldrh r7, [r4, #0x50] + orr r6, r7, r6 + strh r6, [r4, #0x50] + ldr r3, [r3] + add r3, r3, r5, lsl #1 + add r3, r3, #0x1700 + strh r2, [r3, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212A10: + mov r2, #0 + mov r0, r7 + mov r1, #4 + strh r2, [r4, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212A30: + cmp r6, #5 + bne _02212A54 + mov r0, r7 + mov r1, #0xe + mov r2, #0 + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212A54: + cmp r6, #0xe + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4, lsl #1 + add r0, r0, #0x1700 + ldrh r0, [r0, #0x54] + mov r5, r4, lsl #1 + cmp r0, #2 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4 + add r0, r0, #0x1000 + ldrb r1, [r0, #0x526] + ldr r0, _02212C18 ; =0x000005D4 + mov r6, #1 + mul r4, r1, r0 + add r0, r2, r4 + add r1, r0, #0x1d00 + ldrh r8, [r1, #0x4c] + mov r2, #0 + mov r0, r7 + orr r6, r8, r6, lsl r7 + strh r6, [r1, #0x4c] + ldr r6, [r3] + mov r1, #6 + add r4, r6, r4 + add r4, r4, #0x1d00 + strh r2, [r4, #0x48] + ldr r3, [r3] + add r3, r3, r5 + add r3, r3, #0x1700 + strh r2, [r3, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212AEC: + cmp r6, #6 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4 + add r0, r0, #0x1000 + ldrb r5, [r0, #0x526] + cmp r5, #0xff + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, _02212C18 ; =0x000005D4 + ldrh r1, [sp, #2] + mul r4, r5, r0 + add r0, r2, r4 + add r0, r0, #0x1d00 + ldrh r0, [r0, #0x4a] + bl MOD13_02211EE4 + ldr r1, _02212C14 ; =0x02240AFC + ldr r2, _02212C1C ; =0x02240A40 + ldr r1, [r1] + mov r3, #1 + add r1, r1, r4 + add r1, r1, #0x1d00 + strh r0, [r1, #0x4a] + ldr r0, [r2] + add sp, sp, #0x38 + orr r0, r0, r3, lsl r5 + str r0, [r2] + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212B68: + cmp r6, #6 + bne _02212BC8 + add r0, r2, r4 + add r0, r0, #0x1000 + ldrb r3, [r0, #0x526] + cmp r3, #0xff + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, _02212C18 ; =0x000005D4 + mov r1, #1 + mla r0, r3, r0, r2 + add r3, r0, #0x1d00 + ldrh r2, [r3, #0x4c] + mvn r0, r1, lsl r7 + and r4, r2, r0 + mov r0, r7 + mov r1, #7 + mov r2, #0 + strh r4, [r3, #0x4c] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212BC8: + cmp r6, #7 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4, lsl #1 + add r3, r0, #0x1700 + ldrh r0, [r3, #0x54] + cmp r0, #5 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + mov r2, #0 + mov r0, r7 + mov r1, #8 + strh r2, [r3, #0x54] + bl MOD13_02213124 +_02212C08: + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr + .align 2, 0 +_02212C14: .word 0x02240AFC +_02212C18: .word 0x000005D4 +_02212C1C: .word 0x02240A40 + + arm_func_start MOD13_02212C20 +MOD13_02212C20: ; 0x02212C20 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r6, r0 + mov r4, r1 + cmp r6, #0x19 + bgt _02212C84 + cmp r6, #0x19 + bge _02212ECC + cmp r6, #0x11 + bgt _02212C78 + cmp r6, #0x11 + bge _02213084 + cmp r6, #3 + bgt _02213084 + cmp r6, #0 + blt _02213084 + cmp r6, #0 + beq _02212CC0 + cmp r6, #1 + beq _02212CE4 + cmp r6, #3 + beq _02212EC0 + b _02213084 +_02212C78: + cmp r6, #0x15 + beq _02212CAC + b _02213084 +_02212C84: + cmp r6, #0xff + bgt _02212CA0 + cmp r6, #0xff + bge _02212F70 + cmp r6, #0x1c + beq _02212ED4 + b _02213084 +_02212CA0: + cmp r6, #0x100 + beq _02212FE0 + b _02213084 +_02212CAC: + mov r2, r4 + mov r0, #0 + mov r1, #1 + bl MOD13_02213124 + b _02213084 +_02212CC0: + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _02213084 + cmp r0, #0x10 + bhs _02213084 + mov r2, r4 + mov r1, #2 + bl MOD13_02213124 + b _02213084 +_02212CE4: + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _02213084 + cmp r0, #0x10 + bhs _02213084 + ldr r2, _022130D8 ; =0x02240AFC + sub r0, r0, #1 + ldr r3, [r2] + mov r1, #0 + add r0, r3, r0, lsl #1 + add r0, r0, #0x1400 + strh r1, [r0, #0x8a] + ldrh r3, [r4, #0x10] + ldr r5, [r2] + ldr r0, _022130DC ; =0x000014A8 + sub r2, r3, #1 + add r0, r5, r0 + add r0, r0, r2, lsl #2 + mov r2, #4 + bl MI_CpuFill8 + ldr r0, _022130D8 ; =0x02240AFC + ldrh r1, [r4, #0x10] + ldr r0, [r0] + mov r2, #0x16 + add r0, r0, #0x1340 + sub r1, r1, #1 + mla r0, r1, r2, r0 + mov r1, #0 + bl MI_CpuFill8 + ldrh r0, [r4, #0x10] + bl MOD13_02217234 + ldrh r1, [r4, #0x10] + ldr r0, _022130D8 ; =0x02240AFC + mov r3, #0 + ldr r2, [r0] + sub r1, r1, #1 + add r1, r2, r1, lsl #1 + add r1, r1, #0x1700 + strh r3, [r1, #0x54] + ldrh r8, [r4, #0x10] + ldr r5, [r0] + mvn r1, #0 + sub r7, r8, #1 + add r2, r5, r7 + add r2, r2, #0x1500 + ldrsb r3, [r2, #0x26] + cmp r3, r1 + beq _02212E0C + ldr r2, _022130E0 ; =0x000005D4 + and r3, r3, #0xff + mul r2, r3, r2 + add r3, r5, r2 + add sb, r3, #0x1d00 + mov r5, #1 + ldrh sl, [sb, #0x4e] + mvn r3, r5, lsl r8 + and sl, sl, r3 + strh sl, [sb, #0x4e] + ldr sb, [r0] + add sb, sb, r2 + add sb, sb, #0x1d00 + ldrh sl, [sb, #0x50] + orr r5, sl, r5, lsl r8 + strh r5, [sb, #0x50] + ldr r5, [r0] + add r5, r5, r7 + add r5, r5, #0x1000 + strb r1, [r5, #0x526] + ldr r0, [r0] + add r0, r0, r2 + add r0, r0, #0x1d00 + ldrh r1, [r0, #0x4c] + and r1, r1, r3 + strh r1, [r0, #0x4c] +_02212E0C: + ldr r1, _022130D8 ; =0x02240AFC + ldrh r2, [r4, #0x10] + ldr r7, [r1] + mov r3, #1 + add r0, r7, #0x1500 + ldrh r5, [r0, #0x36] + mov r0, r3, lsl r2 + ands r0, r5, r0 + beq _02212E5C + add r0, r7, #0x1000 + ldrb r2, [r0, #0x535] + sub r2, r2, #1 + strb r2, [r0, #0x535] + ldr r0, [r1] + ldrh r1, [r4, #0x10] + add r0, r0, #0x1500 + ldrh r2, [r0, #0x36] + mvn r1, r3, lsl r1 + and r1, r2, r1 + strh r1, [r0, #0x36] +_02212E5C: + ldrh r0, [r4, #0x10] + ldr r1, _022130D8 ; =0x02240AFC + ldr r2, [r1] + sub r1, r0, #1 + add r1, r2, r1, lsl #2 + add r1, r1, #0x1000 + ldr r1, [r1, #0x4e8] + cmp r1, #8 + bne _02212E8C + mov r1, #9 + mov r2, #0 + bl MOD13_02213124 +_02212E8C: + ldrh r0, [r4, #0x10] + mov r2, r4 + mov r1, #3 + bl MOD13_02213124 + ldrh r1, [r4, #0x10] + ldr r0, _022130D8 ; =0x02240AFC + mov r3, #0 + ldr r2, [r0] + sub r0, r1, #1 + add r0, r2, r0, lsl #2 + add r0, r0, #0x1000 + str r3, [r0, #0x4e8] + b _02213084 +_02212EC0: + mov r0, r4 + bl MOD13_02212658 + b _02213084 +_02212ECC: + bl MOD13_02211F78 + b _02213084 +_02212ED4: + mov r5, #0 + ldr sb, _022130D8 ; =0x02240AFC + ldr r7, _022130E4 ; =0x0000186C + ldr r8, _022130E0 ; =0x000005D4 + mov sl, r5 +_02212EE8: + mul r4, r5, r8 + ldr r1, [sb] + add r2, r1, r4 + add r0, r2, #0x1000 + ldrb r0, [r0, #0xd52] + cmp r0, #0 + beq _02212F38 + add r0, r2, #0x1d00 + ldrh r3, [r0, #0x50] + cmp r3, #0 + beq _02212F38 + ldrh r2, [r0, #0x4e] + add r0, r1, r7 + add r0, r0, r4 + add r1, r1, #0x1340 + bl MOD13_022148D4 + ldr r0, [sb] + add r0, r0, r4 + add r0, r0, #0x1d00 + strh sl, [r0, #0x50] +_02212F38: + add r0, r5, #1 + and r5, r0, #0xff + cmp r5, #0x10 + blo _02212EE8 + bl MOD13_02214BF4 + mov r5, r0 + bl MOD13_02214BE0 + mov r4, r0 + bl MOD13_02214B80 + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl MOD13_02214768 + b _02213084 +_02212F70: + ldrh r0, [r4, #2] + cmp r0, #0xf + addls pc, pc, r0, lsl #2 + b _02212FD0 +_02212F80: ; jump table + b _02212FD0 ; case 0 + b _02212FC0 ; case 1 + b _02212FD0 ; case 2 + b _02212FD0 ; case 3 + b _02212FC0 ; case 4 + b _02212FC0 ; case 5 + b _02212FC0 ; case 6 + b _02212FD0 ; case 7 + b _02212FC0 ; case 8 + b _02212FC0 ; case 9 + b _02212FD0 ; case 10 + b _02212FD0 ; case 11 + b _02212FD0 ; case 12 + b _02212FD0 ; case 13 + b _02212FD0 ; case 14 + b _02212FD0 ; case 15 +_02212FC0: + mov r0, #0 + mov r1, #9 + bl MOD13_02211EA4 + b _02213084 +_02212FD0: + mov r0, #0 + mov r1, #8 + bl MOD13_02211EA4 + b _02213084 +_02212FE0: + ldrh r0, [r4] + cmp r0, #0x1d + addls pc, pc, r0, lsl #2 + b _02213078 +_02212FF0: ; jump table + b _02213068 ; case 0 + b _02213078 ; case 1 + b _02213078 ; case 2 + b _02213078 ; case 3 + b _02213078 ; case 4 + b _02213078 ; case 5 + b _02213078 ; case 6 + b _02213068 ; case 7 + b _02213068 ; case 8 + b _02213078 ; case 9 + b _02213078 ; case 10 + b _02213078 ; case 11 + b _02213078 ; case 12 + b _02213068 ; case 13 + b _02213068 ; case 14 + b _02213068 ; case 15 + b _02213078 ; case 16 + b _02213068 ; case 17 + b _02213068 ; case 18 + b _02213078 ; case 19 + b _02213078 ; case 20 + b _02213068 ; case 21 + b _02213078 ; case 22 + b _02213078 ; case 23 + b _02213078 ; case 24 + b _02213068 ; case 25 + b _02213078 ; case 26 + b _02213078 ; case 27 + b _02213078 ; case 28 + b _02213068 ; case 29 +_02213068: + mov r0, #0 + mov r1, #9 + bl MOD13_02211EA4 + b _02213084 +_02213078: + mov r0, #0 + mov r1, #8 + bl MOD13_02211EA4 +_02213084: + cmp r6, #0x11 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxne lr + ldr r1, _022130D8 ; =0x02240AFC + mov r0, #0 + ldr r1, [r1] + mov r2, #0x7d00 + add r3, r1, #0x1000 + ldr r4, [r3, #0x4e4] + bl MIi_CpuClearFast + ldr r1, _022130D8 ; =0x02240AFC + mov r0, #0 + str r0, [r1] + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxeq lr + mov r2, r0 + mov r1, #0xc + blx r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bx lr + .align 2, 0 +_022130D8: .word 0x02240AFC +_022130DC: .word 0x000014A8 +_022130E0: .word 0x000005D4 +_022130E4: .word 0x0000186C + + arm_func_start MOD13_022130E8 +MOD13_022130E8: ; 0x022130E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _02213120 ; =0x02240AFC + ldr r3, [r3] + add r3, r3, #0x1000 + ldr r3, [r3, #0x4e4] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + blx r3 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02213120: .word 0x02240AFC + + arm_func_start MOD13_02213124 +MOD13_02213124: ; 0x02213124 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD13_02211EC8 + cmp r0, #0 + beq _02213158 + ldr r0, _02213170 ; =0x02240AFC + sub r1, r6, #1 + ldr r0, [r0] + add r0, r0, r1, lsl #2 + add r0, r0, #0x1000 + str r5, [r0, #0x4e8] +_02213158: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD13_022130E8 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02213170: .word 0x02240AFC + + arm_func_start MOD13_02213174 +MOD13_02213174: ; 0x02213174 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r1 + mov r7, r0 + bl OS_DisableInterrupts + mov r4, r0 + cmp r5, #3 + addls pc, pc, r5, lsl #2 + b _022131D8 +_02213198: ; jump table + b _022131A8 ; case 0 + b _022131B4 ; case 1 + b _022131C0 ; case 2 + b _022131CC ; case 3 +_022131A8: + mov r5, #0xa + mov r6, #4 + b _022131F0 +_022131B4: + mov r5, #0xa + mov r6, #3 + b _022131F0 +_022131C0: + mov r5, #0xe + mov r6, #2 + b _022131F0 +_022131CC: + mov r5, #7 + mov r6, #5 + b _022131F0 +_022131D8: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022131F0: + ldr r0, _0221326C ; =0x02240AFC + ldr r0, [r0] + cmp r0, #0 + beq _02213254 + mov r0, r7 + bl MOD13_02211EC8 + cmp r0, #0 + beq _02213254 + ldr r0, _0221326C ; =0x02240AFC + sub r2, r7, #1 + ldr r1, [r0] + add r0, r1, r2, lsl #2 + add r0, r0, #0x1000 + ldr r0, [r0, #0x4e8] + cmp r5, r0 + bne _02213254 + add r0, r1, r2, lsl #1 + add r1, r0, #0x1700 + mov r0, r4 + strh r6, [r1, #0x54] + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213254: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_0221326C: .word 0x02240AFC + + arm_func_start MOD13_02213270 +MOD13_02213270: ; 0x02213270 + stmdb sp!, {r4, lr} + ldr r1, _022132C8 ; =0x02240AFC + mov r4, r0 + ldr r1, [r1] + cmp r1, #0 + beq _022132BC + bl MOD13_02211EC8 + cmp r0, #0 + beq _022132BC + ldr r0, _022132C8 ; =0x02240AFC + sub r1, r4, #1 + ldr r0, [r0] + add r0, r0, r1, lsl #2 + add r0, r0, #0x1000 + ldr r0, [r0, #0x4e8] + cmp r0, #7 + moveq r0, #1 + ldmeqia sp!, {r4, lr} + bxeq lr +_022132BC: + mov r0, #0 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_022132C8: .word 0x02240AFC + + arm_func_start MOD13_022132CC +MOD13_022132CC: ; 0x022132CC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _02213360 ; =0x02240AFC + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + beq _02213348 + mov r0, r5 + bl MOD13_02211EC8 + cmp r0, #0 + beq _02213348 + ldr r0, _02213360 ; =0x02240AFC + sub r3, r5, #1 + ldr ip, [r0] + ldr r1, _02213364 ; =0x00001772 + add r0, ip, #0x1340 + mov r2, #0x16 + mla r0, r3, r2, r0 + add r1, ip, r1 + bl MI_CpuCopy8 + mov r0, r4 + bl OS_RestoreInterrupts + ldr r1, _02213360 ; =0x02240AFC + ldr r0, _02213364 ; =0x00001772 + ldr r1, [r1] + add sp, sp, #4 + add r0, r1, r0 + ldmia sp!, {r4, r5, lr} + bx lr +_02213348: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02213360: .word 0x02240AFC +_02213364: .word 0x00001772 + + arm_func_start MOD13_02213368 +MOD13_02213368: ; 0x02213368 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02213390 ; =0x02240AFC + ldr r1, [r1] + add r1, r1, #0x1000 + str r4, [r1, #0x4e4] + bl OS_RestoreInterrupts + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02213390: .word 0x02240AFC + + arm_func_start MOD13_02213394 +MOD13_02213394: ; 0x02213394 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _02213498 ; =0x0223C420 + ldr r3, [r3, r0, lsl #2] + cmp r3, #0 + beq _022133BC + cmp r3, #1 + beq _022133CC + cmp r3, #2 + bne _02213478 +_022133BC: + bl MOD13_022134A8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr +_022133CC: + cmp r1, #0x2000000 + blo _02213444 + ldr r0, _0221349C ; =0x023FE800 + cmp r1, r0 + bhs _02213444 + cmp r1, #0x2300000 + add r1, r1, r2 + bhs _02213400 + cmp r1, #0x2300000 + addhi sp, sp, #4 + movhi r0, #0 + ldmhiia sp!, {lr} + bxhi lr +_02213400: + cmp r1, #0x2300000 + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {lr} + bxls lr + ldr r0, _0221349C ; =0x023FE800 + cmp r1, r0 + bhs _02213434 + cmp r2, #0x40000 + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {lr} + bxls lr +_02213434: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {lr} + bx lr +_02213444: + ldr r0, _022134A0 ; =0x037F8000 + cmp r1, r0 + blo _02213488 + ldr r0, _022134A4 ; =0x0380F000 + cmp r1, r0 + bhs _02213488 + add r1, r1, r2 + cmp r1, r0 + movls r0, #1 + add sp, sp, #4 + movhi r0, #0 + ldmia sp!, {lr} + bx lr +_02213478: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {lr} + bx lr +_02213488: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02213498: .word 0x0223C420 +_0221349C: .word 0x023FE800 +_022134A0: .word 0x037F8000 +_022134A4: .word 0x0380F000 + + arm_func_start MOD13_022134A8 +MOD13_022134A8: ; 0x022134A8 + ldr r3, _0221354C ; =0x0223C420 + ldr r0, [r3, r0, lsl #2] + cmp r0, #0 + beq _022134EC + cmp r0, #1 + beq _02213508 + cmp r0, #2 + bne _0221353C + ldr r0, _02213550 ; =0x027FFE00 + cmp r1, r0 + blo _02213544 + ldr r0, _02213554 ; =0x027FFF60 + add r1, r1, r2 + cmp r1, r0 + bhi _02213544 + mov r0, #1 + bx lr +_022134EC: + cmp r1, #0x2000000 + blo _02213544 + add r0, r1, r2 + cmp r0, #0x22c0000 + bhi _02213544 + mov r0, #1 + bx lr +_02213508: + cmp r1, #0x22c0000 + blo _02213520 + add r0, r1, r2 + cmp r0, #0x2300000 + movls r0, #1 + bxls lr +_02213520: + cmp r1, #0x2000000 + blo _02213544 + add r0, r1, r2 + cmp r0, #0x2300000 + bhi _02213544 + mov r0, #1 + bx lr +_0221353C: + mov r0, #0 + bx lr +_02213544: + mov r0, #0 + bx lr + .align 2, 0 +_0221354C: .word 0x0223C420 +_02213550: .word 0x027FFE00 +_02213554: .word 0x027FFF60 + + arm_func_start MOD13_02213558 +MOD13_02213558: ; 0x02213558 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldrh r4, [r1, #0x12] + cmp r2, r4 + addhs sp, sp, #4 + movhs r0, #0 + ldmhsia sp!, {r4, r5, lr} + bxhs lr + mov ip, #2 +_0221357C: + add r4, r1, ip, lsl #1 + ldrh r4, [r4, #0xc] + cmp r2, r4 + bhs _0221359C + sub r4, ip, #1 + mov ip, r4, lsl #0x18 + movs ip, ip, asr #0x18 + bpl _0221357C +_0221359C: + cmp ip, #0 + addlt sp, sp, #4 + movlt r0, #0 + ldmltia sp!, {r4, r5, lr} + bxlt lr + ldr r4, _02213628 ; =0x02240AFC + add r5, r1, ip, lsl #1 + ldr lr, [r4] + ldrh r5, [r5, #0xc] + add lr, lr, #0x1000 + ldr lr, [lr, #0x318] + sub r5, r2, r5 + mul r2, r5, lr + add r3, r3, #0xc + add r5, r3, ip, lsl #4 + ldr r3, [r5, #8] + sub r3, r3, r2 + str r3, [r0, #4] + ldr r3, [r4] + ldr r4, [r0, #4] + add r3, r3, #0x1000 + ldr r3, [r3, #0x318] + cmp r4, r3 + strhi r3, [r0, #4] + ldr r1, [r1, ip, lsl #2] + add r1, r2, r1 + str r1, [r0, #8] + ldr r1, [r5] + add r1, r2, r1 + str r1, [r0] + strb ip, [r0, #0xc] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02213628: .word 0x02240AFC + + arm_func_start MOD13_0221362C +MOD13_0221362C: ; 0x0221362C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r5, r0 + add r4, r5, #0xc + cmp r1, #0 + mov r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxeq lr + mov r2, r0 +_0221364C: + str r0, [r5, r2, lsl #2] + add r3, r1, r2, lsl #4 + add r2, r2, #1 + ldr r3, [r3, #0x14] + and r2, r2, #0xff + cmp r2, #3 + add r0, r0, r3 + blo _0221364C + mov r8, #0 + strh r8, [r4] + ldr r6, _02213704 ; =0x02240AFC + add r7, r1, #0xc +_0221367C: + ldr r0, [r6] + add sl, r7, r8, lsl #4 + add r0, r0, #0x1000 + ldr r1, [r0, #0x318] + ldr sb, [sl, #8] + add r0, sb, r1 + sub r0, r0, #1 + bl _u32_div_f + mov r1, r8, lsl #1 + ldrh r3, [r4, r1] + mov r2, r0, lsl #0x10 + ldr r1, [sl, #4] + add r2, r3, r2, lsr #16 + mov r3, r2, lsl #0x10 + mov r2, sb + mov r0, r8 + mov sb, r3, lsr #0x10 + bl MOD13_02213394 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxeq lr + cmp r8, #2 + addlo r0, r8, #1 + movlo r0, r0, lsl #1 + strloh sb, [r4, r0] + add r0, r8, #1 + and r8, r0, #0xff + strhsh sb, [r5, #0x12] + cmp r8, #3 + blo _0221367C + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bx lr + .align 2, 0 +_02213704: .word 0x02240AFC + + arm_func_start MOD13_02213708 +MOD13_02213708: ; 0x02213708 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r1, [r1] + mov r7, r2 + mov r6, r3 + cmp r1, #0 + beq _02213740 + cmp r1, #1 + beq _022137A4 + cmp r1, #2 + beq _02213880 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213740: + ldr r2, [r0, #0x28] + add r3, r0, #0x28 + cmp r2, #0x2000000 + blo _02213794 + cmp r2, #0x22c0000 + bhs _02213794 + ldr r1, [r3, #4] + add r0, r2, r1 + cmp r0, #0x22c0000 + bhi _02213794 + str r1, [r7, #8] + ldr r0, [r3] + add sp, sp, #4 + str r0, [r7, #4] + ldr r0, [r7, #4] + str r0, [r7] + ldr r0, [r7, #0xc] + bic r0, r0, #1 + str r0, [r7, #0xc] + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213794: + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022137A4: + add r4, r0, #0x38 + ldr r2, [r0, #0x38] + ldr r1, [r4, #4] + mov ip, #0 + mov r5, ip + cmp r2, #0x2000000 + add r3, r2, r1 + blo _022137F4 + ldr r0, _022138B0 ; =0x023FE800 + cmp r2, r0 + bhs _022137F4 + cmp r3, #0x2300000 + bls _02213820 + cmp r3, r0 + bhs _022137EC + cmp r1, #0x40000 + movls r5, #1 + bls _02213820 +_022137EC: + mov ip, #1 + b _02213820 +_022137F4: + ldr r0, _022138B4 ; =0x037F8000 + cmp r2, r0 + blo _0221381C + ldr r0, _022138B8 ; =0x0380F000 + cmp r2, r0 + bhs _0221381C + cmp r3, r0 + movls r5, #1 + movhi ip, #1 + b _02213820 +_0221381C: + mov ip, #1 +_02213820: + cmp ip, #1 + bne _0221382C + bl OS_Terminate +_0221382C: + ldr r0, [r4, #4] + cmp r5, #0 + str r0, [r7, #8] + ldr r0, [r4] + str r0, [r7, #4] + ldreq r0, [r7, #4] + streq r0, [r7] + beq _02213864 + ldr r0, [r6] + str r0, [r7] + ldr r1, [r6] + ldr r0, [r7, #8] + add r0, r1, r0 + str r0, [r6] +_02213864: + ldr r0, [r7, #0xc] + add sp, sp, #4 + bic r0, r0, #1 + orr r0, r0, #1 + str r0, [r7, #0xc] + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213880: + mov r1, #0x160 + ldr r0, _022138BC ; =0x027FFE00 + str r1, [r7, #8] + str r0, [r7, #4] + ldr r0, [r7, #4] + str r0, [r7] + ldr r0, [r7, #0xc] + bic r0, r0, #1 + str r0, [r7, #0xc] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_022138B0: .word 0x023FE800 +_022138B4: .word 0x037F8000 +_022138B8: .word 0x0380F000 +_022138BC: .word 0x027FFE00 + + arm_func_start MOD13_022138C0 +MOD13_022138C0: ; 0x022138C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r2, #0x22c0000 + mov r5, r1 + str r2, [sp] + mov r6, r0 + ldr r0, [r5, #0x24] + ldr r4, _02213940 ; =0x0223C420 + str r0, [r6] + ldr r0, [r5, #0x34] + add r8, r5, #0x160 + str r0, [r6, #4] + add sl, r6, #0xc + mov sb, #0 + add r7, sp, #0 +_022138FC: + mov r0, r5 + mov r1, r4 + mov r2, sl + mov r3, r7 + bl MOD13_02213708 + add sb, sb, #1 + cmp sb, #3 + add sl, sl, #0x10 + add r4, r4, #4 + blt _022138FC + mov r0, r8 + add r1, r6, #0x3c + mov r2, #0x88 + bl MI_CpuCopy8 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bx lr + .align 2, 0 +_02213940: .word 0x0223C420 + + arm_func_start MOD13_02213944 +MOD13_02213944: ; 0x02213944 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r8, r1 + mov r6, #0xff + bl OS_DisableInterrupts + mov r5, r0 + bl MOD13_02214B60 + cmp r0, #0 + bne _02213984 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_02213984: + ldr r0, _02213BFC ; =0x02240AFC + ldr r0, [r0] + add r1, r0, #0x1000 + ldrb r1, [r1, #0x524] + add r1, r1, #1 + cmp r1, #0x10 + ble _022139B8 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_022139B8: + ldr r1, _02213C00 ; =0x000005D4 + mov r4, #0 +_022139C0: + mla r2, r4, r1, r0 + add r2, r2, #0x1000 + ldr r3, [r2, #0xd40] + cmp r3, sb + bne _022139EC + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_022139EC: + ldrb r2, [r2, #0xd52] + cmp r2, #0 + moveq r6, r4 + beq _02213A0C + add r2, r4, #1 + and r4, r2, #0xff + cmp r4, #0x10 + blo _022139C0 +_02213A0C: + cmp r4, #0x10 + bne _02213A2C + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_02213A2C: + ldr r1, _02213C00 ; =0x000005D4 + ldr r2, _02213BFC ; =0x02240AFC + mul r4, r6, r1 + add r0, r0, r4 + add r0, r0, #0x1000 + str sb, [r0, #0xd40] + ldr r2, [r2] + ldr r0, _02213C04 ; =0x00001788 + mov r1, r8 + add r0, r2, r0 + add r7, r0, r4 + mov r0, r7 + bl MOD13_022138C0 + add r0, sb, #0x1c + add r1, r7, #0xc4 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C08 ; =0x00001D2C + ldr r2, [r1] + mov r1, r7 + add r0, r2, r0 + add r0, r0, r4 + bl MOD13_0221362C + cmp r0, #0 + bne _02213AAC + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_02213AAC: + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C0C ; =0x0000186C + ldr r2, [r1] + mov r1, sb + add r0, r2, r0 + add r0, r0, r4 + add r2, r2, #0x1300 + bl MOD13_02214A0C + ldr r2, _02213BFC ; =0x02240AFC + ldr r1, _02213C0C ; =0x0000186C + ldr r0, [r2] + add r0, r0, r4 + add r0, r0, #0x1000 + strb r6, [r0, #0xd21] + ldr r0, [r2] + add r0, r0, r1 + add r0, r0, r4 + bl MOD13_02214868 + ldr r0, _02213C10 ; =0x02240A44 + ldr r1, _02213BFC ; =0x02240AFC + ldrb r7, [r0] + ldr r3, [r1] + mov r2, #1 + add r6, r7, #1 + add r3, r3, r4 + strb r6, [r0] + add r0, r3, #0x1000 + strb r7, [r0, #0xd1f] + ldr r0, [r1] + add r3, r8, #0x1e8 + add r0, r0, r4 + add r0, r0, #0x1d00 + strh r2, [r0, #0x4e] + ldr r0, [r1] + add r2, r8, #0x258 + add r0, r0, r4 + add r0, r0, #0x1000 + str r8, [r0, #0xd44] + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x1000 + str r3, [r0, #0xd54] + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x1000 + str r2, [r0, #0xd58] + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x1000 + ldr r0, [r0, #0xd54] + ldr r0, [r0, #0x6c] + cmp r0, #0 + beq _02213BB8 + bl MOD13_02216DA4 + cmp r0, #0 + bne _02213BB8 + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C14 ; =0x00007CE0 + ldr r1, [r1] + add r0, r1, r0 + bl MOD13_02216D90 + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C18 ; =0x000074E0 + ldr r2, [r1] + mov r1, #0x800 + add r0, r2, r0 + bl MOD13_02216DC0 +_02213BB8: + ldr r2, _02213BFC ; =0x02240AFC + mov r3, #1 + ldr r1, [r2] + mov r0, r5 + add r1, r1, r4 + add r1, r1, #0x1000 + strb r3, [r1, #0xd52] + ldr r1, [r2] + add r1, r1, #0x1000 + ldrb r2, [r1, #0x524] + add r2, r2, #1 + strb r2, [r1, #0x524] + bl OS_RestoreInterrupts + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + .align 2, 0 +_02213BFC: .word 0x02240AFC +_02213C00: .word 0x000005D4 +_02213C04: .word 0x00001788 +_02213C08: .word 0x00001D2C +_02213C0C: .word 0x0000186C +_02213C10: .word 0x02240A44 +_02213C14: .word 0x00007CE0 +_02213C18: .word 0x000074E0 + + arm_func_start MOD13_02213C1C +MOD13_02213C1C: ; 0x02213C1C + stmdb sp!, {lr} + sub sp, sp, #4 + mov lr, r1 + ldr ip, [r0] + ldr r1, [r0, #0xc] + cmp lr, #0x4000 + movlo lr, #0x4000 + cmp r2, #0x8000 + movhi r2, #0x8000 + cmp lr, ip + add r1, ip, r1 + movlo lr, ip + cmp r2, r1 + movhi r2, r1 + cmp lr, r2 + addhs sp, sp, #4 + ldmhsia sp!, {lr} + bxhs lr + cmp r3, #0 + beq _02213C8C + ldr r0, [r0, #8] + sub r2, r2, lr + add r0, r0, lr + mov r1, #0 + bl MI_CpuFill8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr +_02213C8C: + ldr r3, [r0, #4] + ldr r1, [r0, #8] + add r0, r3, lr + add r1, r1, lr + sub r2, r2, lr + bl MI_CpuCopy8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + + arm_func_start MOD13_02213CB0 +MOD13_02213CB0: ; 0x02213CB0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x6c + str r2, [sp, #4] + cmp r2, #0x164 + mov r2, #0 + mov sl, r0 + mov sb, r1 + str r2, [sp, #8] + blo _022140F4 + ldr r8, [sp, #4] + mov r7, sb + str r2, [sp, #0xc] + mov r6, r2 + mov r5, r2 + cmp sl, #0 + add r7, r7, #0x160 + sub r8, r8, #0x160 + beq _02213D24 + ldr r4, [sl, #0x2c] + ldr r3, [sl, #0x24] + mov r2, #0x160 + sub fp, r4, r3 + bl FS_ReadFile + cmp r0, #0x160 + ldr r4, [sb, #0x80] + movlt r8, r5 + cmp r4, #0 + moveq r4, #0x1000000 + b _02213D9C +_02213D24: + ldr r0, _02214104 ; =0x027FFE00 + mov r1, #1 + ldr r4, [r0, #0x80] + add r0, sp, #0x20 + cmp r4, #0 + moveq r4, #0x1000000 + str r1, [sp, #0xc] + bl FS_InitFile + ldr r0, _02214108 ; =0x0223F788 + mov r1, #3 + bl FS_FindArchive + mov r1, r0 + mvn r0, #0 + str r0, [sp] + add r0, sp, #0x20 + mov r2, #0 + add r3, r4, #0x88 + bl FS_OpenFileDirect + ldr r2, [sp, #0x4c] + ldr r1, [sp, #0x44] + ldr r0, _02214104 ; =0x027FFE00 + sub fp, r2, r1 + mov r1, sb + mov r2, #0x160 + add sl, sp, #0x20 + bl MI_CpuCopy8 + ldr r1, [sb, #0x60] + ldr r0, _0221410C ; =0x00406000 + orr r0, r1, r0 + str r0, [sb, #0x60] +_02213D9C: + cmp r8, #0x88 + movlo r8, #0 + blo _02213DD0 + mov r0, sl + add r1, fp, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + mov r1, r7 + mov r2, #0x88 + bl FS_ReadFile + add r7, r7, #0x88 + sub r8, r8, #0x88 +_02213DD0: + cmp r8, #0x70 + blo _02213E40 + mov r0, r7 + mov r6, r7 + bl MOD13_02216B80 + add r7, r7, #0x70 + sub r8, r8, #0x70 + mov r0, #3 + str r0, [sp] + mov r0, r6 + mov r1, #0 + mov r2, #0x160 + mov r3, sb + bl MOD13_02216B0C + ldr r0, [sl, #8] + mov r4, #0 + b _02213E18 +_02213E14: + add r4, r4, #1 +_02213E18: + cmp r4, #3 + bge _02213E2C + ldrsb r1, [r0, r4] + cmp r1, #0 + bne _02213E14 +_02213E2C: + mov r2, r4 + add r1, r6, #0x10 + bl MI_CpuCopy8 + str r4, [r6, #0x14] + b _02213E44 +_02213E40: + mov r8, #0 +_02213E44: + cmp r8, #0x10 + movlo r8, #0 + blo _02213E8C + mov r0, #0 + str r0, [r7] + ldr r0, [sl, #0x24] + ldr r1, [sb, #0x20] + add r0, fp, r0 + add r0, r1, r0 + str r0, [r7, #4] + ldr r0, [sl, #0x24] + ldr r1, [sb, #0x30] + add r0, fp, r0 + add r0, r1, r0 + mov r5, r7 + str r0, [r7, #8] + add r7, r7, #0x10 + sub r8, r8, #0x10 +_02213E8C: + ldr r1, [sb, #0x2c] + ldr r0, [sb, #0x3c] + add r0, r1, r0 + cmp r8, r0 + blo _02213F38 + ldr r4, [sl, #0x24] + ldr r1, [r5, #4] + mov r0, sl + sub r1, r1, r4 + mov r2, #0 + bl FS_SeekFile + ldr r2, [sb, #0x2c] + mov r0, sl + mov r1, r7 + bl FS_ReadFile + mov r0, #3 + str r0, [sp] + ldr r1, [r5, #4] + ldr r2, [sb, #0x2c] + mov r0, r6 + mov r3, r7 + bl MOD13_02216B0C + ldr r1, [sb, #0x2c] + mov r0, sl + add r7, r7, r1 + ldr r1, [r5, #8] + mov r2, #0 + sub r1, r1, r4 + bl FS_SeekFile + ldr r2, [sb, #0x3c] + mov r0, sl + mov r1, r7 + bl FS_ReadFile + mov r0, #3 + str r0, [sp] + ldr r1, [r5, #8] + ldr r2, [sb, #0x3c] + mov r3, r7 + mov r0, r6 + bl MOD13_02216B0C + mov r0, #1 + str r0, [sp, #8] + b _0221400C +_02213F38: + cmp r8, #0xcc00 + blo _0221400C + ldr r4, [sl, #0x24] + ldr r5, [r5, #4] + mov r0, sl + sub r1, r5, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + mov r1, r7 + mov r2, #0x4400 + bl FS_ReadFile + mov r0, #3 + str r0, [sp] + mov r0, r6 + mov r1, r5 + mov r2, #0x4400 + mov r3, r7 + bl MOD13_02216B0C + add r1, r5, #0x4400 + mov r0, sl + sub r1, r1, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + add r1, r7, #0x4400 + mov r2, #0x4400 + bl FS_ReadFile + mov r0, #2 + str r0, [sp] + mov r0, r6 + add r1, r5, #0x4400 + mov r2, #0x4400 + add r3, r7, #0x4400 + bl MOD13_02216B0C + add r1, r5, #0x8800 + mov r0, sl + sub r1, r1, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + add r1, r7, #0x8800 + mov r2, #0x4400 + bl FS_ReadFile + mov r0, #2 + str r0, [sp] + add r1, r5, #0x8800 + add r3, r7, #0x8800 + mov r0, r6 + mov r2, #0x4400 + bl MOD13_02216B0C + mov r0, #1 + str r0, [sp, #8] +_0221400C: + mov r0, sl + mov r1, fp + mov r2, #0 + bl FS_SeekFile + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _022140DC + add r0, sp, #0x20 + bl FS_CloseFile + ldr r0, [sp, #8] + cmp r0, #0 + beq _022140DC + ldr r1, [sb, #0x20] + ldr r0, _02214110 ; =0x0223F784 + str r1, [sp, #0x10] + ldr r2, [sb, #0x28] + ldr r1, [sb, #0x20] + ldr r4, [r0] + sub r0, r2, r1 + str r0, [sp, #0x14] + ldr r2, [r6, #0x48] + ldr r1, [sb, #0x20] + add r0, sp, #0x10 + sub r1, r2, r1 + str r1, [sp, #0x18] + ldr r1, [sp, #4] + mov r2, #0x8000 + str r1, [sp, #0x1c] + mov r1, #0x4000 + mov r3, #1 + bl MOD13_02213C1C + ldr r0, [r4, #4] + cmp r0, #0 + beq _022140C4 + add r7, sp, #0x10 + mov r5, #0 +_0221409C: + ldr r1, [r4] + ldr r2, [r4, #4] + mov r0, r7 + mov r3, r5 + add r2, r1, r2 + bl MOD13_02213C1C + add r4, r4, #8 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0221409C +_022140C4: + ldr r1, [sb, #0x28] + ldr r2, _02214114 ; =0x02000A74 + ldr r3, [r6, #0x48] + ldr r0, _02214118 ; =0xE12FFF1E + sub r1, r2, r1 + str r0, [r3, r1] +_022140DC: + ldr r0, [sp, #8] + cmp r0, #0 + beq _022140F4 + ldr r1, [sp, #4] + mov r0, sb + bl DC_FlushRange +_022140F4: + ldr r0, [sp, #8] + add sp, sp, #0x6c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bx lr + .align 2, 0 +_02214104: .word 0x027FFE00 +_02214108: .word 0x0223F788 +_0221410C: .word 0x00406000 +_02214110: .word 0x0223F784 +_02214114: .word 0x02000A74 +_02214118: .word 0xE12FFF1E + + arm_func_start MOD13_0221411C +MOD13_0221411C: ; 0x0221411C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x64 + mov r6, #0 + movs r7, r0 + mov r5, r6 + beq _02214168 + ldr ip, [r7, #0x2c] + ldr r3, [r7, #0x24] + add r1, sp, #0 + mov r2, #0x60 + sub r4, ip, r3 + bl FS_ReadFile + cmp r0, #0x60 + mov r0, r7 + mov r1, r4 + mov r2, #0 + addhs r6, sp, #0 + bl FS_SeekFile + b _0221416C +_02214168: + ldr r6, _0221419C ; =0x027FFE00 +_0221416C: + cmp r6, #0 + beq _0221418C + ldr r1, [r6, #0x2c] + ldr r0, [r6, #0x3c] + add r1, r1, #0x268 + add r5, r1, r0 + cmp r5, #0x10000 + movlo r5, #0x10000 +_0221418C: + mov r0, r5 + add sp, sp, #0x64 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_0221419C: .word 0x027FFE00 + + arm_func_start MOD13_022141A0 +MOD13_022141A0: ; 0x022141A0 + mov r2, r1, asr #1 + cmp r2, #0 + mov r3, #0 + ble _022141C4 +_022141B0: + ldrh r1, [r0], #2 + sub r2, r2, #1 + cmp r2, #0 + add r3, r3, r1 + bgt _022141B0 +_022141C4: + ldr r0, _022141E4 ; =0x0000FFFF + and r1, r3, r0 + add r1, r1, r3, lsr #16 + add r1, r1, r1, lsr #16 + eor r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + .align 2, 0 +_022141E4: .word 0x0000FFFF + + arm_func_start MOD13_022141E8 +MOD13_022141E8: ; 0x022141E8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r4, r2 + add r2, r6, #0x1f + mov r5, r1 + mov r0, r4 + bic r1, r2, #0x1f + bl DC_FlushRange + bl DC_WaitWriteBufferEmpty + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl MOD13_02214C08 + ldmia sp!, {r4, r5, r6, lr} + bx lr + + arm_func_start MOD13_02214224 +MOD13_02214224: ; 0x02214224 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r3, _022144AC ; =0x02240A50 + str r0, [sp, #8] + ldr r0, [r3, #4] + ldrb r3, [r3, #0xe] + ldrb r0, [r0, #0x4b4] + str r1, [sp, #0xc] + str r2, [sp, #0x10] + cmp r3, r0 + beq _02214254 + bl MOD13_022144C8 +_02214254: + ldr r3, _022144B0 ; =0x02240A80 + ldr r1, _022144AC ; =0x02240A50 + ldrb r2, [r3, #4] + ldr r0, [r1, #4] + ldrb r5, [r1, #0x11] + bic r2, r2, #3 + orr r2, r2, #2 + strb r2, [r3, #4] + ldrb r4, [r0, #0x4b3] + ldrb r2, [r1, #0xe] + ldrb r7, [r3, #4] + strb r4, [r3, #5] + strb r2, [r3, #6] + ldr r4, [r0, #0x4b8] + ldr r2, _022144B4 ; =0x02240A48 + str r4, [r3] + ldrb r6, [r0, #0x4b5] + add r4, r5, #1 + bic r7, r7, #0xfc + and r6, r6, #0x3f + orr r6, r7, r6, lsl #2 + strb r6, [r3, #4] + strb r4, [r1, #0x11] + strb r5, [r3, #7] + ldrb r4, [r0, #0x358] + add r1, r0, #0x300 + ldr r2, [r2] + strb r4, [r3, #0xa] + ldrh r4, [r1, #0x5a] + cmp r2, #0 + strh r4, [r3, #0xc] + ldrh r1, [r1, #0x5c] + strh r1, [r3, #0xe] + bne _022142F4 + ldr r1, _022144B8 ; =0x02240A4C + ldr r1, [r1] + cmp r1, #0 + beq _022142F4 + ldr r0, [r0, #0x4b8] + blx r1 +_022142F4: + ldr r0, _022144AC ; =0x02240A50 + ldr r1, _022144B0 ; =0x02240A80 + ldr r2, [r0, #4] + mov r3, #0 +_02214304: + ldrb r0, [r2, #0x4a8] + add r3, r3, #1 + cmp r3, #8 + strb r0, [r1, #0x68] + add r2, r2, #1 + add r1, r1, #1 + blt _02214304 + ldr r1, _022144BC ; =0x02240A90 + mov r0, #0 + mov r2, #0x58 + bl MIi_CpuClear16 + ldr r0, _022144AC ; =0x02240A50 + mov sl, #0 + ldr r1, [r0, #4] + ldr sb, _022144BC ; =0x02240A90 + add r0, r1, #0x400 + add r1, r1, #0x300 + ldrh r2, [r0, #0xb0] + ldrh r0, [r1, #0x5a] + mov r5, sl + mov r8, sl + eor r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + mov fp, #0x16 + mov r4, #2 +_0221436C: + mov r6, r4, lsl r5 + ands r0, r7, r6 + beq _022143C0 + ldr r0, _022144AC ; =0x02240A50 + mov r1, sb + ldr r2, [r0, #4] + ldr r0, _022144C0 ; =0x0000035E + add r0, r2, r0 + add r0, r0, r8 + mov r2, fp + bl MIi_CpuCopy16 + ldr r0, _022144AC ; =0x02240A50 + add sl, sl, #1 + ldr r0, [r0, #4] + add sb, sb, #0x16 + add r0, r0, #0x400 + ldrh r1, [r0, #0xb0] + cmp sl, #4 + orr r1, r1, r6 + strh r1, [r0, #0xb0] + beq _022143D0 +_022143C0: + add r5, r5, #1 + cmp r5, #0xf + add r8, r8, #0x16 + blt _0221436C +_022143D0: + cmp sl, #4 + bhs _022143F0 + mov r0, #0x16 + mul r1, sl, r0 + ldr r2, _022144BC ; =0x02240A90 + ldrb r0, [r2, r1] + bic r0, r0, #0xf0 + strb r0, [r2, r1] +_022143F0: + ldr r2, _022144B0 ; =0x02240A80 + mov r3, #0 + ldr r0, _022144C4 ; =0x02240A88 + mov r1, #0x68 + strh r3, [r2, #8] + bl MOD13_022141A0 + ldr r2, _022144AC ; =0x02240A50 + ldr r1, _022144B0 ; =0x02240A80 + ldr r3, [r2, #4] + strh r0, [r1, #8] + add r0, r3, #0x400 + add r1, r3, #0x300 + ldrh r3, [r0, #0xb0] + ldrh r0, [r1, #0x5a] + ldr r1, _022144B0 ; =0x02240A80 + cmp r3, r0 + moveq r0, #1 + streqb r0, [r2, #0xc] + ldr r0, [sp, #0x10] + ldr r3, [sp, #8] + orr r2, r0, #3 + ldr r0, [sp, #0xc] + and r4, r2, #0xff + str r0, [sp] + mov r0, #0 + mov r2, #0x70 + str r4, [sp, #4] + bl WM_SetGameInfo + ldr r0, _022144B4 ; =0x02240A48 + ldr r0, [r0] + cmp r0, #1 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bxne lr + ldr r0, _022144B8 ; =0x02240A4C + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bxeq lr + ldr r0, _022144AC ; =0x02240A50 + ldr r0, [r0, #4] + ldr r0, [r0, #0x4b8] + blx r1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bx lr + .align 2, 0 +_022144AC: .word 0x02240A50 +_022144B0: .word 0x02240A80 +_022144B4: .word 0x02240A48 +_022144B8: .word 0x02240A4C +_022144BC: .word 0x02240A90 +_022144C0: .word 0x0000035E +_022144C4: .word 0x02240A88 + + arm_func_start MOD13_022144C8 +MOD13_022144C8: ; 0x022144C8 + ldr r1, _022144F4 ; =0x02240A50 + mov r3, #1 + ldr r0, [r1, #4] + mov r2, #5 + add r0, r0, #0x400 + strh r3, [r0, #0xb0] + ldr r0, [r1, #4] + ldrb r0, [r0, #0x4b4] + strb r0, [r1, #0xe] + strb r2, [r1, #0xc] + bx lr + .align 2, 0 +_022144F4: .word 0x02240A50 + + arm_func_start MOD13_022144F8 +MOD13_022144F8: ; 0x022144F8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r3, _02214660 ; =0x02240A50 + mov r6, r0 + ldr r0, [r3, #4] + ldr r3, [r3, #8] + add r7, r0, #0x358 + add r0, r3, #0x62 + cmp r0, r7 + mov r5, r1 + ldrls r0, _02214664 ; =0x02240A80 + movls r1, #0x62 + mov r4, r2 + strlsb r1, [r0, #0xc] + bls _02214558 + ldr r0, _02214664 ; =0x02240A80 + sub r1, r7, r3 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0xc] + ldr r1, _02214668 ; =0x02240A8E + mov r0, #0 + add r1, r1, r2 + rsb r2, r2, #0x62 + bl MIi_CpuClear16 +_02214558: + ldr r0, _02214664 ; =0x02240A80 + ldr r1, _02214660 ; =0x02240A50 + ldrb r2, [r0, #0xc] + ldr r0, [r1, #8] + ldr r1, _02214668 ; =0x02240A8E + bl MIi_CpuCopy16 + ldr r3, _02214660 ; =0x02240A50 + ldr r2, _02214664 ; =0x02240A80 + ldrb r8, [r3, #0xf] + ldrb r1, [r3, #0x10] + ldrb r7, [r2, #4] + strb r8, [r2, #0xa] + ldr r0, [r3, #4] + strb r1, [r2, #0xb] + ldrb r1, [r0, #0x4b2] + bic r7, r7, #3 + ldrb r8, [r3, #0xe] + and r1, r1, #3 + orr r1, r7, r1 + strb r1, [r2, #4] + ldrb ip, [r0, #0x4b3] + ldrb r1, [r2, #4] + ldrb r7, [r3, #0x11] + strb ip, [r2, #5] + strb r8, [r2, #6] + ldr r8, [r0, #0x4b8] + bic r1, r1, #0xfc + str r8, [r2] + ldrb r0, [r0, #0x4b5] + add lr, r7, #1 + mov ip, #0 + and r0, r0, #0x3f + orr r8, r1, r0, lsl #2 + ldr r0, _0221466C ; =0x02240A88 + mov r1, #0x68 + strb r8, [r2, #4] + strb lr, [r3, #0x11] + strb r7, [r2, #7] + strh ip, [r2, #8] + bl MOD13_022141A0 + ldr r1, _02214660 ; =0x02240A50 + ldr r2, _02214664 ; =0x02240A80 + ldrb ip, [r1, #0xf] + strh r0, [r2, #8] + ldrb r3, [r1, #0x10] + add r0, ip, #1 + strb r0, [r1, #0xf] + ldrb r0, [r1, #0xf] + mov r2, #0x70 + cmp r0, r3 + ldrlo r0, [r1, #8] + mov r3, r6 + addlo r0, r0, #0x62 + strlo r0, [r1, #8] + movhs r0, #4 + strhsb r0, [r1, #0xc] + orr r0, r4, #3 + and r4, r0, #0xff + str r5, [sp] + ldr r1, _02214664 ; =0x02240A80 + mov r0, #0 + str r4, [sp, #4] + bl WM_SetGameInfo + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr + .align 2, 0 +_02214660: .word 0x02240A50 +_02214664: .word 0x02240A80 +_02214668: .word 0x02240A8E +_0221466C: .word 0x02240A88 + + arm_func_start MOD13_02214670 +MOD13_02214670: ; 0x02214670 + ldr r0, _022146B8 ; =0x02240A50 + ldrb r1, [r0, #0xc] + cmp r1, #2 + bxne lr + ldr r2, [r0, #4] + ldrb r1, [r2, #0x4b2] + cmp r1, #0 + moveq r1, #9 + streqb r1, [r0, #0x10] + streq r2, [r0, #8] + addne r1, r2, #0x220 + movne r2, #4 + strne r1, [r0, #8] + strneb r2, [r0, #0x10] + ldr r0, _022146B8 ; =0x02240A50 + mov r1, #3 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 +_022146B8: .word 0x02240A50 + + arm_func_start MOD13_022146BC +MOD13_022146BC: ; 0x022146BC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _02214760 ; =0x02240A50 + ldr r1, [r0] + cmp r1, #0 + bne _02214710 + bl MOD13_02214BF4 + mov r4, r0 + bl MOD13_02214BE0 + str r0, [sp] + mov ip, #8 + ldr r1, _02214764 ; =0x02240A80 + mov r3, r4 + mov r0, #0 + mov r2, #0x70 + str ip, [sp, #4] + bl WM_SetGameInfo + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, lr} + bx lr +_02214710: + ldr r0, [r0, #4] + cmp r0, #0 + beq _0221472C + ldr r0, [r0, #0x4bc] + cmp r0, #0 + beq _0221472C + mov r1, r0 +_0221472C: + ldr r0, _02214760 ; =0x02240A50 + str r1, [r0, #4] + bl MOD13_02214810 + ldr r1, _02214760 ; =0x02240A50 + mov r2, #2 + ldr r3, [r1, #4] + mov r0, #1 + ldrb r3, [r3, #0x4b4] + strb r3, [r1, #0xe] + strb r2, [r1, #0xc] + add sp, sp, #8 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02214760: .word 0x02240A50 +_02214764: .word 0x02240A80 + + arm_func_start MOD13_02214768 +MOD13_02214768: ; 0x02214768 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + ldr r4, _0221480C ; =0x02240A50 +_02214780: + ldrb r0, [r4, #0xc] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02214780 +_02214790: ; jump table + b _022147AC ; case 0 + b _022147AC ; case 1 + b _022147C4 ; case 2 + b _022147CC ; case 3 + b _022147E8 ; case 4 + b _022147F0 ; case 5 + b _02214780 ; case 6 +_022147AC: + bl MOD13_022146BC + cmp r0, #0 + bne _02214780 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022147C4: + bl MOD13_02214670 + b _02214780 +_022147CC: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_022144F8 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022147E8: + bl MOD13_022144C8 + b _02214780 +_022147F0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_02214224 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_0221480C: .word 0x02240A50 + + arm_func_start MOD13_02214810 +MOD13_02214810: ; 0x02214810 + ldr r0, _02214830 ; =0x02240A50 + mov r1, #0 + strb r1, [r0, #0xd] + strb r1, [r0, #0xe] + strb r1, [r0, #0xf] + strb r1, [r0, #0x10] + strb r1, [r0, #0x11] + bx lr + .align 2, 0 +_02214830: .word 0x02240A50 + + arm_func_start MOD13_02214834 +MOD13_02214834: ; 0x02214834 + ldr r1, _0221485C ; =0x02240A50 + mov r3, #0 + ldr r0, _02214860 ; =0x02240A4C + mov r2, #1 + ldr ip, _02214864 ; =MOD13_02214810 + str r3, [r1] + str r3, [r1, #4] + strb r2, [r1, #0xc] + str r3, [r0] + bx ip + .align 2, 0 +_0221485C: .word 0x02240A50 +_02214860: .word 0x02240A4C +_02214864: .word MOD13_02214810 + + arm_func_start MOD13_02214868 +MOD13_02214868: ; 0x02214868 + ldr r1, _022148A8 ; =0x02240A50 + ldr r2, [r1] + cmp r2, #0 + streq r0, [r1] + beq _0221489C + ldr r1, [r2, #0x4bc] + cmp r1, #0 + beq _02214898 +_02214888: + mov r2, r1 + ldr r1, [r1, #0x4bc] + cmp r1, #0 + bne _02214888 +_02214898: + str r0, [r2, #0x4bc] +_0221489C: + mov r1, #0 + str r1, [r0, #0x4bc] + bx lr + .align 2, 0 +_022148A8: .word 0x02240A50 + + arm_func_start MOD13_022148AC +MOD13_022148AC: ; 0x022148AC + ldrh r1, [r0], #2 + mov r2, #0 + cmp r1, #0 + beq _022148CC +_022148BC: + ldrh r1, [r0], #2 + add r2, r2, #1 + cmp r1, #0 + bne _022148BC +_022148CC: + mov r0, r2 + bx lr + + arm_func_start MOD13_022148D4 +MOD13_022148D4: ; 0x022148D4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r4, _02214950 ; =0x0000035E + mov r6, r0 + mov r5, r2 + mov r0, r1 + ldr r2, _02214954 ; =0x0000014A + add r1, r6, r4 + mov r4, r3 + mov r7, #1 + bl MIi_CpuCopy16 + mov r2, #0 + mov r1, #2 +_02214908: + mov r0, r1, lsl r2 + ands r0, r5, r0 + addne r0, r7, #1 + add r2, r2, #1 + andne r7, r0, #0xff + cmp r2, #0xf + blt _02214908 + strb r7, [r6, #0x358] + orr r1, r5, #1 + add r0, r6, #0x300 + strh r1, [r0, #0x5a] + strh r4, [r0, #0x5c] + ldrb r0, [r6, #0x4b4] + add r0, r0, #1 + strb r0, [r6, #0x4b4] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_02214950: .word 0x0000035E +_02214954: .word 0x0000014A + + arm_func_start MOD13_02214958 +MOD13_02214958: ; 0x02214958 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + cmp r2, #0 + movne r4, #0x200 + moveq r4, #0x20 + mov r6, r0 + mov r5, r1 + cmp r2, #0 + addne r5, r5, #0x20 + cmp r6, #0 + addeq sp, sp, #0x48 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, lr} + bxeq lr + add r0, sp, #0 + bl FS_InitFile + add r0, sp, #0 + mov r1, r6 + bl FS_OpenFile + cmp r0, #0 + addeq sp, sp, #0x48 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, lr} + bxeq lr + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x24] + sub r0, r1, r0 + cmp r4, r0 + beq _022149E4 + add r0, sp, #0 + bl FS_CloseFile + add sp, sp, #0x48 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_022149E4: + add r0, sp, #0 + mov r1, r5 + mov r2, r4 + bl FS_ReadFile + add r0, sp, #0 + bl FS_CloseFile + mov r0, #1 + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, lr} + bx lr + + arm_func_start MOD13_02214A0C +MOD13_02214A0C: ; 0x02214A0C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r1, r6 + mov r0, #0 + mov r2, #0x4c0 + bl MIi_CpuClear16 + mov r0, #0 + strb r0, [r6, #0x4b2] + ldr r0, [r5, #0xc] + mov r1, r6 + mov r2, #1 + bl MOD13_02214958 + cmp r0, #0 + moveq r7, #1 + ldr r0, [r5, #0x10] + mov r1, r6 + mov r2, #0 + movne r7, #0 + bl MOD13_02214958 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + orrs r0, r7, r0 + beq _02214A90 + mov r3, #1 + mov r1, r6 + mov r0, #0 + mov r2, #0x220 + strb r3, [r6, #0x4b2] + bl MIi_CpuClearFast +_02214A90: + ldr r0, [r5, #0x14] + cmp r4, #0 + str r0, [r6, #0x4b8] + beq _02214AB0 + mov r0, r4 + add r1, r6, #0x220 + mov r2, #0x16 + bl MIi_CpuCopy16 +_02214AB0: + ldrb r0, [r5, #0x18] + strb r0, [r6, #0x236] + ldr r0, [r5, #4] + bl MOD13_022148AC + mov r2, r0, lsl #0x11 + ldr r0, [r5, #4] + add r1, r6, #0x238 + mov r2, r2, lsr #0x10 + bl MIi_CpuCopy16 + ldr r0, [r5, #8] + add r1, r6, #0x298 + mov r2, #0xc0 + bl MIi_CpuCopy16 + mov r1, #1 + strb r1, [r6, #0x358] + add r0, r6, #0x300 + strh r1, [r0, #0x5a] + add r0, r6, #0x400 + strh r1, [r0, #0xb0] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + + arm_func_start MOD13_02214B08 +MOD13_02214B08: ; 0x02214B08 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #2 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + ldr r2, _02214B5C ; =0x02240AF8 + strh r0, [sp] + ldr r0, [r2] + strh r1, [sp, #2] + ldr r2, [r0, #0x51c] + add r1, sp, #0 + mov r0, #0xff + blx r2 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02214B5C: .word 0x02240AF8 + + arm_func_start MOD13_02214B60 +MOD13_02214B60: ; 0x02214B60 + ldr r0, _02214B7C ; =0x02240AF8 + ldr r0, [r0] + ldrb r0, [r0, #0x50d] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_02214B7C: .word 0x02240AF8 + + arm_func_start MOD13_02214B80 +MOD13_02214B80: ; 0x02214B80 + ldr r0, _02214BDC ; =0x02240AF8 + ldr r1, [r0] + ldrh r0, [r1, #0x12] + cmp r0, #0 + ldrh r0, [r1, #0xe] + movne r2, #2 + moveq r2, #0 + cmp r0, #0 + movne r3, #1 + ldrh r0, [r1, #0x14] + moveq r3, #0 + cmp r0, #0 + movne ip, #4 + ldrh r0, [r1, #0x16] + moveq ip, #0 + cmp r0, #0 + movne r1, #8 + orr r0, r3, r2 + moveq r1, #0 + orr r0, ip, r0 + orr r0, r1, r0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02214BDC: .word 0x02240AF8 + + arm_func_start MOD13_02214BE0 +MOD13_02214BE0: ; 0x02214BE0 + ldr r0, _02214BF0 ; =0x02240AF8 + ldr r0, [r0] + ldrh r0, [r0, #0xc] + bx lr + .align 2, 0 +_02214BF0: .word 0x02240AF8 + + arm_func_start MOD13_02214BF4 +MOD13_02214BF4: ; 0x02214BF4 + ldr r0, _02214C04 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_02214C04: .word 0x02240AF8 + + arm_func_start MOD13_02214C08 +MOD13_02214C08: ; 0x02214C08 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr ip, _02214D04 ; =0x02240AF8 + mov r3, r1, lsl #0x10 + ldr r5, [ip] + mov ip, r2, lsl #0x10 + add lr, r5, #0x500 + ldrh r4, [lr, #0x28] + mov r1, r0 + mov r2, r3, lsr #0x10 + cmp r4, #0 + mov r4, ip, lsr #0x10 + beq _02214C48 + ldrh r0, [lr, #0x26] + cmp r0, #1 + bne _02214C58 +_02214C48: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, lr} + bx lr +_02214C58: + ldrh r0, [lr, #0x24] + cmp r0, #1 + beq _02214C70 + cmp r0, #2 + beq _02214CBC + b _02214CF4 +_02214C70: + ldrh r0, [lr, #0x2c] + cmp r0, #0 + moveq r0, #0x3e8 + movne r0, #0 + mov r3, r0, lsl #0x10 + str r4, [sp] + ldr r0, [r5, #0x508] + mov r3, r3, lsr #0x10 + bl MOD13_02214D0C + cmp r0, #2 + ldreq r1, _02214D04 ; =0x02240AF8 + moveq r2, #1 + ldreq r1, [r1] + add sp, sp, #4 + streqb r2, [r1, #0x50c] + cmp r0, #2 + moveq r0, #0 + ldmia sp!, {r4, r5, lr} + bx lr +_02214CBC: + ldr r0, _02214D08 ; =MOD13_02215724 + mov r3, #0 + str r4, [sp] + bl MOD13_02214D0C + cmp r0, #2 + ldreq r1, _02214D04 ; =0x02240AF8 + moveq r2, #1 + ldreq r1, [r1] + add sp, sp, #4 + streqb r2, [r1, #0x50c] + cmp r0, #2 + moveq r0, #0 + ldmia sp!, {r4, r5, lr} + bx lr +_02214CF4: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02214D04: .word 0x02240AF8 +_02214D08: .word MOD13_02215724 + + arm_func_start MOD13_02214D0C +MOD13_02214D0C: ; 0x02214D0C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldrh r4, [sp, #0x18] + mov r3, r2 + mov r2, r1 + str r4, [sp] + mov r4, #1 + str r4, [sp, #4] + mov r4, #3 + mov r1, #0 + str r4, [sp, #8] + bl WM_SetMPDataToPortEx + mov r4, r0 + mov r1, r4 + mov r0, #0xf + bl MOD13_02214B08 + mov r0, r4 + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + bx lr + + arm_func_start MOD13_02214D5C +MOD13_02214D5C: ; 0x02214D5C + ldr r1, _02214D68 ; =0x02240B00 + strh r0, [r1, #6] + bx lr + .align 2, 0 +_02214D68: .word 0x02240B00 + + arm_func_start MOD13_02214D6C +MOD13_02214D6C: ; 0x02214D6C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, _02214F08 ; =MOD13_02216098 + mov r1, r5 + bl WM_Disconnect + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + cmp r5, #0x10 + addhs sp, sp, #4 + ldmhsia sp!, {r4, r5, r6, r7, lr} + bxhs lr + ldr r2, _02214F0C ; =0x02240AFC + sub r4, r5, #1 + ldr r0, [r2] + mov r1, #0 + add r0, r0, r4, lsl #1 + add r0, r0, #0x1400 + strh r1, [r0, #0x8a] + ldr r3, [r2] + ldr r0, _02214F10 ; =0x000014A8 + mov r2, #4 + add r0, r3, r0 + add r0, r0, r4, lsl #2 + bl MI_CpuFill8 + ldr r0, _02214F0C ; =0x02240AFC + mov r2, #0x16 + ldr r0, [r0] + mov r1, #0 + add r0, r0, #0x1340 + mla r0, r4, r2, r0 + bl MI_CpuFill8 + mov r0, r5 + bl MOD13_02217234 + ldr lr, _02214F0C ; =0x02240AFC + mov r2, #0 + ldr r1, [lr] + mvn r0, #0 + add r1, r1, r4, lsl #1 + add r1, r1, #0x1700 + strh r2, [r1, #0x54] + ldr r3, [lr] + add r1, r3, r4 + add r1, r1, #0x1500 + ldrsb r2, [r1, #0x26] + cmp r2, r0 + beq _02214E9C + ldr r1, _02214F14 ; =0x000005D4 + and r2, r2, #0xff + mul r1, r2, r1 + add r2, r3, r1 + add ip, r2, #0x1d00 + mov r3, #1 + ldrh r6, [ip, #0x4e] + mvn r2, r3, lsl r5 + and r6, r6, r2 + strh r6, [ip, #0x4e] + ldr r7, [lr] + mov r6, r4 + add r7, r7, r1 + add ip, r7, #0x1d00 + ldrh r7, [ip, #0x50] + orr r3, r7, r3, lsl r5 + strh r3, [ip, #0x50] + ldr r3, [lr] + add r3, r3, r6 + add r3, r3, #0x1000 + strb r0, [r3, #0x526] + ldr r0, [lr] + add r0, r0, r1 + add r0, r0, #0x1d00 + ldrh r1, [r0, #0x4c] + and r1, r1, r2 + strh r1, [r0, #0x4c] +_02214E9C: + ldr r1, _02214F0C ; =0x02240AFC + mov r0, #1 + ldr r2, [r1] + mov r5, r0, lsl r5 + add r0, r2, #0x1500 + ldrh r0, [r0, #0x36] + ands r0, r0, r5 + beq _02214EE4 + add r0, r2, #0x1000 + ldrb r3, [r0, #0x535] + mvn r2, r5 + sub r3, r3, #1 + strb r3, [r0, #0x535] + ldr r0, [r1] + add r0, r0, #0x1500 + ldrh r1, [r0, #0x36] + and r1, r1, r2 + strh r1, [r0, #0x36] +_02214EE4: + ldr r0, _02214F0C ; =0x02240AFC + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + add r0, r0, #0x1000 + str r1, [r0, #0x4e8] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_02214F08: .word MOD13_02216098 +_02214F0C: .word 0x02240AFC +_02214F10: .word 0x000014A8 +_02214F14: .word 0x000005D4 + + arm_func_start MOD13_02214F18 +MOD13_02214F18: ; 0x02214F18 + stmdb sp!, {r4, lr} + bl OS_DisableInterrupts + ldr r1, _02214F54 ; =0x02240AFC + mov r4, r0 + ldr r0, [r1] + add r0, r0, #0x1000 + ldr r0, [r0, #0x320] + cmp r0, #0 + bne _02214F40 + bl OS_Terminate +_02214F40: + bl MOD13_02214F58 + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02214F54: .word 0x02240AFC + + arm_func_start MOD13_02214F58 +MOD13_02214F58: ; 0x02214F58 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, #1 + bl OS_DisableInterrupts + ldr r1, _02214FD8 ; =0x02240AF8 + mov r4, r0 + ldr r2, [r1] + add r0, r2, #0x500 + ldrh r0, [r0, #0x26] + cmp r0, #0 + bne _02214FC0 + mov r0, #0 + str r0, [r2, #0x5e4] + ldr r0, [r1] + mov r1, r5 + add r0, r0, #0x500 + strh r1, [r0, #0x26] + bl MOD13_02216DA4 + cmp r0, #0 + beq _02214FB8 + ldr r0, _02214FDC ; =MOD13_02214FE0 + bl MOD13_02216B94 + mov r5, #0 + b _02214FC0 +_02214FB8: + bl MOD13_02214FEC + mov r5, r0 +_02214FC0: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02214FD8: .word 0x02240AF8 +_02214FDC: .word MOD13_02214FE0 + + arm_func_start MOD13_02214FE0 +MOD13_02214FE0: ; 0x02214FE0 + ldr ip, _02214FE8 ; =MOD13_02214FEC + bx ip + .align 2, 0 +_02214FE8: .word MOD13_02214FEC + + arm_func_start MOD13_02214FEC +MOD13_02214FEC: ; 0x02214FEC + stmdb sp!, {r4, lr} + ldr r0, _02215024 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #0x508] + bl WM_Reset + mov r4, r0 + mov r1, r4 + mov r0, #1 + bl MOD13_02214B08 + cmp r4, #2 + moveq r4, #0 + mov r0, r4 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02215024: .word 0x02240AF8 + + arm_func_start MOD13_02215028 +MOD13_02215028: ; 0x02215028 + ldr r1, _02215044 ; =0x02240AFC + ldr ip, _02215048 ; =MOD13_0221504C + ldr r1, [r1] + mov r2, #1 + add r1, r1, #0x1000 + str r2, [r1, #0x320] + bx ip + .align 2, 0 +_02215044: .word 0x02240AFC +_02215048: .word MOD13_0221504C + + arm_func_start MOD13_0221504C +MOD13_0221504C: ; 0x0221504C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02215234 ; =0x02240AF8 + ldr r2, _02215238 ; =0x02240AFC + ldr r3, [r1] + ldr r1, _0221523C ; =0x00007D1F + strh r4, [r3, #0x32] + ldr r3, [r2] + ldr r2, _02215240 ; =0x02240AF4 + add r1, r3, r1 + bic r1, r1, #0x1f + mov r4, r0 + str r1, [r2] + add r0, r3, #0x1000 + ldr r5, [r0, #0x4e4] + ldr r2, _02215244 ; =0x000069C0 + add r1, r3, #0x1340 + mov r0, #0 + bl MIi_CpuClear16 + mov r0, r5 + bl MOD13_02213368 + ldr r1, _02215234 ; =0x02240AF8 + ldr r0, _02215238 ; =0x02240AFC + ldr r3, [r1] + ldr r2, [r0] + add r0, r3, #0x500 + ldrh r3, [r0] + add r0, r2, #0x1000 + sub r2, r3, #6 + str r2, [r0, #0x318] + ldr r0, [r1] + add r0, r0, #0x500 + ldrh r0, [r0, #2] + bl MOD13_022172A0 + ldr r1, _02215238 ; =0x02240AFC + ldr r0, _02215248 ; =0x00001538 + ldr r1, [r1] + add r0, r1, r0 + bl MOD13_02217280 + mov r5, #0 + ldr r2, _02215238 ; =0x02240AFC + mov r0, r5 + mvn r3, #0 +_02215100: + ldr r1, [r2] + add r1, r1, r5, lsl #2 + add r1, r1, #0x1000 + str r0, [r1, #0x4e8] + ldr r1, [r2] + add r1, r1, r5 + add r1, r1, #0x1000 + add r5, r5, #1 + strb r3, [r1, #0x526] + cmp r5, #0xf + blt _02215100 + ldr r1, [r2] + ldr r3, _0221524C ; =0x00001788 + add r1, r1, #0x1000 + strb r0, [r1, #0x524] + ldr r1, [r2] + ldr r2, _02215250 ; =0x00005D40 + add r1, r1, r3 + bl MIi_CpuClear16 + ldr r1, _02215238 ; =0x02240AFC + ldr r0, _02215254 ; =0x00001754 + ldr r2, [r1] + mov r1, #0 + add r0, r2, r0 + mov r2, #0x1e + bl MI_CpuFill8 + ldr r2, _02215234 ; =0x02240AF8 + mov r3, #1 + ldr r0, [r2] + ldr r1, _02215258 ; =MOD13_02212C20 + add r0, r0, #0x500 + strh r3, [r0, #0x24] + ldr r0, [r2] + ldr r3, _0221525C ; =MOD13_02216098 + str r1, [r0, #0x51c] + ldr r0, [r2] + mov r1, #0xf + str r3, [r0, #0x508] + ldr r3, [r2] + add r0, r3, #0x500 + ldrh r0, [r0] + strh r0, [r3, #0x34] + ldr r0, [r2] + ldrh r3, [r0, #0x34] + add r0, r0, #0x500 + add r3, r3, #0x23 + bic r3, r3, #0x1f + strh r3, [r0, #0x18] + ldr r3, [r2] + add r0, r3, #0x500 + ldrh r0, [r0, #2] + strh r0, [r3, #0x36] + ldr r0, [r2] + ldrh r2, [r0, #0x36] + add r0, r0, #0x500 + add r2, r2, #0xe + mul r1, r2, r1 + add r1, r1, #0x29 + bic r1, r1, #0x1f + mov r1, r1, lsl #1 + strh r1, [r0, #0x1a] + bl MOD13_02214834 + bl MOD13_02215260 + mov r5, r0 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0xf + mov r1, #1 + bl PXI_IsCallbackReady + ldr r1, _02215238 ; =0x02240AFC + ldr r1, [r1] + add r1, r1, #0x7000 + str r0, [r1, #0x4c8] + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02215234: .word 0x02240AF8 +_02215238: .word 0x02240AFC +_0221523C: .word 0x00007D1F +_02215240: .word 0x02240AF4 +_02215244: .word 0x000069C0 +_02215248: .word 0x00001538 +_0221524C: .word 0x00001788 +_02215250: .word 0x00005D40 +_02215254: .word 0x00001754 +_02215258: .word MOD13_02212C20 +_0221525C: .word MOD13_02216098 + + arm_func_start MOD13_02215260 +MOD13_02215260: ; 0x02215260 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _02215350 ; =0x02240AF8 + mov r3, #0 + ldr r1, [r2] + mov r0, #0xa + add r1, r1, #0x500 + strh r3, [r1, #0x28] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x2a] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x26] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x48] + bl MOD13_02214D5C + ldr r0, _02215354 ; =0x02240AFC + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x320] + cmp r0, #0 + bne _02215320 + ldr r6, _02215358 ; =0x02240AF4 + ldr r5, _02215350 ; =0x02240AF8 + ldr r4, _0221535C ; =0x02240AF0 +_022152C8: + ldr r1, [r5] + ldrh r2, [r4] + ldr r0, [r6] + ldr r1, [r1, #0x508] + bl WM_Initialize + cmp r0, #4 + beq _022152C8 + cmp r0, #2 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, lr} + bxne lr + ldr r0, _02215350 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #0x508] + bl WM_SetIndCallback + ldr r0, _02215350 ; =0x02240AF8 + mov r2, #1 + ldr r1, [r0] + mov r0, #0 + strb r2, [r1, #0x50d] + ldmia sp!, {r4, r5, r6, lr} + bx lr +_02215320: + ldr r0, _02215350 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #0x508] + bl WM_SetIndCallback + ldr r0, _02215350 ; =0x02240AF8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x50d] + bl MOD13_02216910 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02215350: .word 0x02240AF8 +_02215354: .word 0x02240AFC +_02215358: .word 0x02240AF4 +_0221535C: .word 0x02240AF0 + + arm_func_start MOD13_02215360 +MOD13_02215360: ; 0x02215360 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r1 + bl OS_DisableInterrupts + ldr r1, _02215400 ; =0x02240AF8 + mov r6, r0 + ldr r1, [r1] + ldrb r1, [r1, #0x50d] + cmp r1, #0 + beq _02215398 + bl OS_RestoreInterrupts + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_02215398: + mov r0, r5 + mov r2, r4 + mov r1, #8 + bl MOD13_02215404 + cmp r0, #0 + bne _022153C4 + mov r0, r6 + bl OS_RestoreInterrupts + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_022153C4: + ldr r2, _02215400 ; =0x02240AF8 + mov r0, r6 + ldr r1, [r2] + mov r3, #8 + strh r4, [r1, #0x10] + ldr r1, [r2] + add r1, r1, #0x500 + strh r5, [r1] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #2] + bl OS_RestoreInterrupts + mov r0, #1 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02215400: .word 0x02240AF8 + + arm_func_start MOD13_02215404 +MOD13_02215404: ; 0x02215404 + ldr r3, _02215468 ; =0x000001FE + cmp r0, r3 + bhi _02215418 + cmp r0, #0xe4 + bhs _02215420 +_02215418: + mov r0, #0 + bx lr +_02215420: + cmp r1, #0x10 + bhi _02215430 + cmp r1, #8 + bhs _02215438 +_02215430: + mov r0, #0 + bx lr +_02215438: + add r1, r1, #0x20 + mov r3, r1, lsl #2 + ldr r1, _0221546C ; =0x0000014A + add r0, r0, #0x26 + add r1, r1, r0, lsl #2 + add r0, r3, #0x70 + mla r1, r2, r0, r1 + ldr r0, _02215470 ; =0x000015E0 + cmp r1, r0 + movlt r0, #1 + movge r0, #0 + bx lr + .align 2, 0 +_02215468: .word 0x000001FE +_0221546C: .word 0x0000014A +_02215470: .word 0x000015E0 + + arm_func_start MOD13_02215474 +MOD13_02215474: ; 0x02215474 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r4, _0221567C ; =0x02240AFC + mov sb, r1 + ldr r1, [r4] + mov r8, r2 + mov r7, r3 + cmp r1, #0 + beq _022154B4 + add r1, r1, #0x1300 + ldrh r1, [r1, #0x16] + cmp r1, #0 + addne sp, sp, #4 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, lr} + bxne lr +_022154B4: + add r1, r0, #0x1f + ldr r0, _02215680 ; =0x00001E1F + bic r6, r1, #0x1f + add r0, r6, r0 + cmp r7, #0x10000 + bic r5, r0, #0x1f + bne _022154D8 + bl WM_GetNextTgid + mov r7, r0 +_022154D8: + bl OS_DisableInterrupts + ldr ip, _02215684 ; =0x02240AF8 + ldr r3, _0221567C ; =0x02240AFC + mov r4, r0 + ldr r1, [sp, #0x20] + ldr r0, _02215688 ; =0x02240AF0 + ldr r2, _0221568C ; =0x0000FFFF + strh r1, [r0] + ldr r0, _02215690 ; =0x0223F798 + ldr r1, _02215694 ; =0x0223F78C + strh r2, [r0] + mov r2, #5 + ldr r0, _02215698 ; =0x0223F790 + strh r2, [r1] + mov r2, #0x28 + ldr r1, _0221569C ; =0x0223F794 + strh r2, [r0] + ldr r0, _022156A0 ; =0x0223F7A0 + strh r2, [r1] + mov r2, #1 + mov r1, r6 + str r2, [r0] + mov r0, #0 + mov r2, #0x1e00 + str r6, [ip] + str r5, [r3] + bl MIi_CpuClear32 + mov r1, r5 + mov r0, #0 + mov r2, #0x1340 + bl MIi_CpuClear16 + ldrb r0, [sb, #1] + add r1, r6, #0x530 + mov r2, #0 + cmp r0, #0 + ble _02215584 +_02215568: + add r0, sb, r2, lsl #1 + ldrh r0, [r0, #2] + add r2, r2, #1 + strh r0, [r1], #2 + ldrb r0, [sb, #1] + cmp r2, r0 + blt _02215568 +_02215584: + ldr r0, _022156A4 ; =0x00000538 + mov r3, #0 + add ip, r6, r0 + ldr r0, _022156A8 ; =0x0223F79C +_02215594: + ldr r2, [r0] + ldrh r1, [r2] + cmp r1, #0 + beq _022155C0 + add r1, r2, #2 + str r1, [r0] + ldrh r1, [r2] + add r3, r3, #1 + cmp r3, #0x10 + strh r1, [ip], #2 + blt _02215594 +_022155C0: + mov r0, sb + add r1, r5, #0x1300 + mov r2, #0x16 + bl MI_CpuCopy8 + ldrb r0, [sb, #1] + mov r2, #0 + cmp r0, #0xa + addlo r0, r5, r0, lsl #1 + addlo r0, r0, #0x1300 + movlo r1, #0 + strloh r1, [r0, #2] + add r0, r6, #0x500 + mov r1, #0x100 + strh r1, [r0] + mov r1, #8 + strh r1, [r0, #2] + strh r2, [r0, #0x18] + strh r2, [r0, #0x1a] + mov r1, #1 + strh r1, [r0, #0x2c] + add r0, r5, #0x400 + str r0, [r6, #0x504] + strh r2, [r6, #0xe] + strh r2, [r6, #0x12] + strh r1, [r6, #0x16] + strh r2, [r6, #0x14] + str r8, [r6, #8] + strh r7, [r6, #0xc] + bl MOD13_022156AC + add r0, r0, #0xc8 + strh r0, [r6, #0x18] + mov r0, #0xf + strh r0, [r6, #0x10] + mov r3, #0 + strb r3, [r6, #0x50c] + strb r3, [r6, #0x50d] + add r1, r5, #0x1300 + mov r2, #1 + strh r2, [r1, #0x16] + add r1, r5, #0x1000 + mov r0, r4 + str r3, [r1, #0x31c] + bl OS_RestoreInterrupts + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + .align 2, 0 +_0221567C: .word 0x02240AFC +_02215680: .word 0x00001E1F +_02215684: .word 0x02240AF8 +_02215688: .word 0x02240AF0 +_0221568C: .word 0x0000FFFF +_02215690: .word 0x0223F798 +_02215694: .word 0x0223F78C +_02215698: .word 0x0223F790 +_0221569C: .word 0x0223F794 +_022156A0: .word 0x0223F7A0 +_022156A4: .word 0x00000538 +_022156A8: .word 0x0223F79C + + arm_func_start MOD13_022156AC +MOD13_022156AC: ; 0x022156AC + stmdb sp!, {lr} + sub sp, sp, #0xc + add r0, sp, #0 + bl OS_GetMacAddress + mov r2, #0 + add r1, sp, #0 + mov r3, r2 +_022156C8: + ldrb r0, [r1] + add r2, r2, #1 + cmp r2, #6 + add r3, r3, r0 + add r1, r1, #1 + blt _022156C8 + ldr r1, _02215718 ; =0x027FFC3C + mov r0, #7 + ldr r2, [r1] + ldr r1, _0221571C ; =0xCCCCCCCD + add r2, r3, r2 + mul r3, r2, r0 + umull r1, r0, r3, r1 + ldr r2, _02215720 ; =0x00000014 + mov r0, r0, lsr #4 + umull r0, r1, r2, r0 + sub r0, r3, r0 + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02215718: .word 0x027FFC3C +_0221571C: .word 0xCCCCCCCD +_02215720: .word 0x00000014 + + arm_func_start MOD13_02215724 +MOD13_02215724: ; 0x02215724 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r6, r0 + ldrh r0, [r6] + ldr r1, _02215F98 ; =0x02240AF8 + cmp r0, #0x1d + ldr r5, [r1] + bgt _022157B0 + cmp r0, #0x1d + bge _02215838 + cmp r0, #0x15 + addls pc, pc, r0, lsl #2 + b _02215F7C +_02215758: ; jump table + b _022157BC ; case 0 + b _02215E4C ; case 1 + b _02215EB8 ; case 2 + b _02215F7C ; case 3 + b _02215F7C ; case 4 + b _02215F7C ; case 5 + b _02215F7C ; case 6 + b _02215F7C ; case 7 + b _02215F7C ; case 8 + b _02215F7C ; case 9 + b _022158DC ; case 10 + b _02215B64 ; case 11 + b _02215BBC ; case 12 + b _02215F7C ; case 13 + b _02215D54 ; case 14 + b _02215DDC ; case 15 + b _02215F7C ; case 16 + b _02215F7C ; case 17 + b _02215F7C ; case 18 + b _02215F7C ; case 19 + b _02215F7C ; case 20 + b _02215F20 ; case 21 +_022157B0: + cmp r0, #0x80 + beq _02215F50 + b _02215F7C +_022157BC: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _022157E4 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_022157E4: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x15 + blx r2 + ldr r0, _02215F9C ; =0x0223F794 + ldr r1, _02215FA0 ; =0x0223F798 + ldrh r3, [r0] + ldr r2, _02215FA4 ; =0x0223F790 + ldr r0, _02215FA8 ; =0x0223F78C + str r3, [sp] + ldrh r3, [r0] + ldrh r1, [r1] + ldrh r2, [r2] + ldr r0, _02215FAC ; =MOD13_02215724 + bl WM_SetLifeTime + mov r1, r0 + mov r0, #0x1d + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215838: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215860 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215860: + ldr r0, _02215FB0 ; =0x02240B00 + add r2, r5, #0x440 + ldrh r1, [r0, #4] + str r2, [r0] + mov r2, #1 + cmp r1, #0 + moveq r1, #1 + streqh r1, [r0, #4] + ldr r0, _02215FB0 ; =0x02240B00 + ldrh r1, [r0, #6] + cmp r1, #0 + moveq r1, #0xc8 + streqh r1, [r0, #6] + ldr r1, _02215FB0 ; =0x02240B00 + mov r0, #0xff + strb r0, [r1, #8] + strb r0, [r1, #9] + strb r0, [r1, #0xa] + strb r0, [r1, #0xb] + strb r0, [r1, #0xc] + strb r0, [r1, #0xd] + str r2, [r5, #0x5e4] + ldr r0, _02215FAC ; =MOD13_02215724 + str r2, [r5, #0x5e8] + bl WM_StartScan + mov r1, r0 + mov r0, #0xa + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_022158DC: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215904 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215904: + ldrh r0, [r6, #8] + cmp r0, #3 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + cmp r0, #4 + beq _02215AE0 + cmp r0, #5 + bne _02215B48 + add r0, r5, #0x500 + ldrh r0, [r0, #0xe0] + add r3, r5, #0x600 + mov r4, #0 + cmp r0, #0 + ble _02215A18 + ldrb r1, [r6, #0xa] + mov r2, r3 +_02215948: + ldrb r7, [r2, #0xca] + cmp r1, r7 + bne _02215A08 + ldrb r8, [r6, #0xb] + ldrb r7, [r2, #0xcb] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xc] + ldrb r7, [r2, #0xcc] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xd] + ldrb r7, [r2, #0xcd] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xe] + ldrb r7, [r2, #0xce] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xf] + ldrb r7, [r2, #0xcf] + cmp r8, r7 + bne _02215A08 + mov r0, #0x180 + mul r7, r4, r0 + add r0, r3, r7 + ldrh r1, [r6, #0x36] + add r8, r6, #0x38 + add lr, r0, #0xf8 + strh r1, [r0, #0xf6] + mov ip, #8 +_022159C4: + ldmia r8!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _022159C4 + add r0, r5, #0x600 + add r7, r0, r7 + mov r0, r7 + mov r1, #0xc0 + bl DC_InvalidateRange + ldr r0, _02215FB4 ; =0x02240AF0 + mov r2, r7 + ldrh r0, [r0] + add r1, r5, #0x440 + mov r3, #0xc0 + bl MI_DmaCopy16 + str r4, [r5, #0x5ec] + b _02215A78 +_02215A08: + add r4, r4, #1 + cmp r4, r0 + add r2, r2, #0x180 + blt _02215948 +_02215A18: + cmp r4, #0x10 + bge _02215A78 + mov r0, #0x180 + mul r7, r4, r0 + add r1, r3, r7 + mov r0, r6 + add ip, r4, #1 + add r3, r5, #0x500 + add r1, r1, #0xc0 + mov r2, #0xb8 + strh ip, [r3, #0xe0] + bl MIi_CpuCopy16 + add r0, r5, #0x600 + add r7, r0, r7 + mov r0, r7 + mov r1, #0xc0 + bl DC_InvalidateRange + ldr r0, _02215FB4 ; =0x02240AF0 + mov r2, r7 + ldrh r0, [r0] + add r1, r5, #0x440 + mov r3, #0xc0 + bl MI_DmaCopy16 + str r4, [r5, #0x5ec] +_02215A78: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #4 + blx r2 + ldr r0, [r5, #0x5e4] + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, [r5, #0x5e8] + cmp r0, #0 + beq _02215ABC + ldr r0, _02215FB0 ; =0x02240B00 + bl MOD13_022169EC + cmp r0, #0 + bne _02215ABC + bl MOD13_02214F58 +_02215ABC: + ldr r0, _02215FAC ; =MOD13_02215724 + ldr r1, _02215FB0 ; =0x02240B00 + bl WM_StartScan + mov r1, r0 + mov r0, #0xa + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215AE0: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #5 + blx r2 + ldr r0, [r5, #0x5e4] + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, [r5, #0x5e8] + cmp r0, #0 + beq _02215B24 + ldr r0, _02215FB0 ; =0x02240B00 + bl MOD13_022169EC + cmp r0, #0 + bne _02215B24 + bl MOD13_02214F58 +_02215B24: + ldr r0, _02215FAC ; =MOD13_02215724 + ldr r1, _02215FB0 ; =0x02240B00 + bl WM_StartScan + mov r1, r0 + mov r0, #0xa + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215B48: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215B64: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215B8C + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215B8C: + mov r2, #0 + str r2, [sp] + ldr r1, [r5, #0x520] + ldr r0, _02215FAC ; =MOD13_02215724 + mov r3, #1 + bl WM_StartConnectEx + mov r1, r0 + mov r0, #0xc + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215BBC: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215BF0 + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0xe0] + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0xb + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215BF0: + ldrh r0, [r6, #8] + cmp r0, #9 + bgt _02215C20 + cmp r0, #6 + blt _02215D38 + cmp r0, #6 + beq _02215C34 + cmp r0, #7 + beq _02215C54 + cmp r0, #9 + beq _02215D0C + b _02215D38 +_02215C20: + cmp r0, #0x1a + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + b _02215D38 +_02215C34: + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x2a] + mov r1, #1 + strh r1, [r0, #0x28] + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215C54: + ldrh r2, [r6, #0xa] + add r0, r5, #0x500 + mov r1, r6 + strh r2, [r0, #0xe2] + ldr r2, [r5, #0x51c] + mov r0, #6 + blx r2 + ldr r1, _02215FB8 ; =MOD13_02215FC0 + add r3, r5, #0x500 + mov r0, #1 + mov r2, #0 + strh r0, [r3, #0x2a] + bl WM_SetPortCallback + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r5, #0x500 + ldrh r0, [r0, #0x2c] + add r1, r5, #0x500 + ldrh r2, [r1, #0x18] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r2, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldrh r2, [r1, #0x1a] + ldr r1, [r5, #0x504] + ldr r0, _02215FAC ; =MOD13_02215724 + add r3, r5, #0x40 + bl WM_StartMPEx + mov r1, r0 + mov r0, #0xe + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215D0C: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0xa + blx r2 + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x2a] + strh r1, [r0, #0x28] + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215D38: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215D54: + ldrh r0, [r6, #4] + cmp r0, #0xa + beq _02215D84 + cmp r0, #0xc + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + cmp r0, #0xd + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + b _02215DC0 +_02215D84: + add r0, r5, #0x500 + mov r1, #1 + strh r1, [r0, #0x28] + bl MOD13_02216984 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r2, [r5, #0x51c] + mov r0, #0x19 + mov r1, #0 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215DC0: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215DDC: + mov r0, #0 + strb r0, [r5, #0x50c] + ldrh r0, [r6, #2] + cmp r0, #0 + bne _02215E04 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #8 + blx r2 + b _02215E30 +_02215E04: + cmp r0, #9 + bne _02215E20 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x29 + blx r2 + b _02215E30 +_02215E20: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x12 + blx r2 +_02215E30: + ldr r2, [r5, #0x51c] + mov r0, #0x19 + mov r1, #0 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215E4C: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215E80 + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x26] + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215E80: + add r0, r5, #0x500 + mov r2, #0 + strh r2, [r0, #0x2a] + ldr r1, [r1] + ldr r0, _02215FAC ; =MOD13_02215724 + add r1, r1, #0x500 + strh r2, [r1, #0x28] + bl WM_End + mov r1, r0 + mov r0, #2 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215EB8: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215EEC + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x26] + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215EEC: + mov r2, #0 + ldr r0, _02215FBC ; =0x02240AFC + strb r2, [r5, #0x50d] + ldr r0, [r0] + mov r1, r6 + add r0, r0, #0x1300 + strh r2, [r0, #0x16] + ldr r2, [r5, #0x51c] + mov r0, #0x11 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F20: + bl MOD13_02216984 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r2, [r5, #0x51c] + mov r0, #0x19 + mov r1, #0 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F50: + ldrh r0, [r6, #4] + cmp r0, #0x16 + beq _02215F6C + add sp, sp, #0x20 + cmp r0, #0x17 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F6C: + bl OS_Terminate + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F7C: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr + .align 2, 0 +_02215F98: .word 0x02240AF8 +_02215F9C: .word 0x0223F794 +_02215FA0: .word 0x0223F798 +_02215FA4: .word 0x0223F790 +_02215FA8: .word 0x0223F78C +_02215FAC: .word MOD13_02215724 +_02215FB0: .word 0x02240B00 +_02215FB4: .word 0x02240AF0 +_02215FB8: .word MOD13_02215FC0 +_02215FBC: .word 0x02240AFC + + arm_func_start MOD13_02215FC0 +MOD13_02215FC0: ; 0x02215FC0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, r0 + ldrh r0, [r1, #2] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {lr} + bxne lr + ldrh r0, [r1, #4] + cmp r0, #0x15 + bgt _02216034 + cmp r0, #0x15 + bge _02216074 + cmp r0, #9 + addgt sp, sp, #4 + ldmgtia sp!, {lr} + bxgt lr + cmp r0, #7 + addlt sp, sp, #4 + ldmltia sp!, {lr} + bxlt lr + cmp r0, #7 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + add sp, sp, #4 + cmp r0, #9 + ldmia sp!, {lr} + bx lr +_02216034: + cmp r0, #0x1a + addgt sp, sp, #4 + ldmgtia sp!, {lr} + bxgt lr + cmp r0, #0x19 + addlt sp, sp, #4 + ldmltia sp!, {lr} + bxlt lr + cmp r0, #0x19 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + add sp, sp, #4 + cmp r0, #0x1a + ldmia sp!, {lr} + bx lr +_02216074: + ldr r2, _02216094 ; =0x02240AF8 + mov r0, #9 + ldr r2, [r2] + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02216094: .word 0x02240AF8 + + arm_func_start MOD13_02216098 +MOD13_02216098: ; 0x02216098 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + mov r4, r0 + ldrh r0, [r4] + cmp r0, #0x19 + bgt _02216104 + cmp r0, #0x19 + bge _022161F8 + cmp r0, #0xf + addls pc, pc, r0, lsl #2 + b _022168D8 +_022160C4: ; jump table + b _02216124 ; case 0 + b _02216694 ; case 1 + b _02216744 ; case 2 + b _022168D8 ; case 3 + b _022168D8 ; case 4 + b _022168D8 ; case 5 + b _022168D8 ; case 6 + b _022161BC ; case 7 + b _02216250 ; case 8 + b _022168D8 ; case 9 + b _022168D8 ; case 10 + b _022168D8 ; case 11 + b _022168D8 ; case 12 + b _022167C4 ; case 13 + b _022164E0 ; case 14 + b _02216584 ; case 15 +_02216104: + cmp r0, #0x1d + bgt _02216118 + cmp r0, #0x1d + beq _02216164 + b _022168D8 +_02216118: + cmp r0, #0x80 + beq _02216804 + b _022168D8 +_02216124: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216154 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216154: + bl MOD13_02216910 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216164: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216194 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216194: + ldr r1, _022168FC ; =0x02240AF8 + ldr r0, _02216900 ; =MOD13_02216098 + ldr r1, [r1] + bl WM_SetParentParameter + mov r1, r0 + mov r0, #7 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022161BC: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x15 + ldr r2, [r2, #0x51c] + blx r2 + ldr r0, _02216900 ; =MOD13_02216098 + mov r1, #1 + bl WM_SetBeaconIndication + mov r1, r0 + mov r0, #0x19 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022161F8: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216228 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216228: + ldr r1, _02216904 ; =0x0223F7A0 + ldr r0, _02216900 ; =MOD13_02216098 + ldr r1, [r1] + bl FUN_020D9564 + mov r1, r0 + mov r0, #8 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216250: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216280 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216280: + ldrh r0, [r4, #8] + cmp r0, #7 + bgt _022162B8 + cmp r0, #7 + bge _0221630C + cmp r0, #2 + bgt _022164BC + cmp r0, #0 + blt _022164BC + cmp r0, #0 + beq _022162E0 + cmp r0, #2 + beq _02216480 + b _022164BC +_022162B8: + cmp r0, #9 + bgt _022162CC + cmp r0, #9 + beq _02216440 + b _022164BC +_022162CC: + cmp r0, #0x1a + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + b _022164BC +_022162E0: + ldr r1, _022168FC ; =0x02240AF8 + mov r2, #0 + ldr r0, [r1] + add sp, sp, #0x20 + add r0, r0, #0x500 + strh r2, [r0, #0x2a] + ldr r0, [r1] + add r0, r0, #0x500 + strh r2, [r0, #0x28] + ldmia sp!, {r4, lr} + bx lr +_0221630C: + ldr r2, _022168FC ; =0x02240AF8 + ldr r0, [r2] + add r0, r0, #0x500 + ldrh r1, [r0, #0x26] + cmp r1, #1 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + ldrh lr, [r0, #0x2a] + ldrh r3, [r4, #0x10] + mov ip, #1 + mov r1, r4 + orr r3, lr, ip, lsl r3 + strh r3, [r0, #0x2a] + ldr r2, [r2] + mov r0, #0 + ldr r2, [r2, #0x51c] + blx r2 + ldr r1, _022168FC ; =0x02240AF8 + ldr r0, [r1] + add r0, r0, #0x500 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _02216408 + ldr r0, _02216908 ; =0x02240AFC + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r2, [r0, #0x31c] + cmp r2, #0 + bne _02216408 + mov r2, #1 + str r2, [r0, #0x31c] + ldr r0, [r1] + ldr r1, _022168FC ; =0x02240AF8 + add r0, r0, #0x500 + ldrh r0, [r0, #0x2c] + ldr ip, [r1] + mov r1, #1 + cmp r0, #0 + movne r2, #0 + mov r0, r2, lsl #0x10 + mov r3, r0, lsr #0x10 + add r0, ip, #0x500 + ldrh r4, [r0, #0x18] + mov r2, #0 + str r4, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + ldrh r2, [r0, #0x1a] + ldr r1, [ip, #0x504] + ldr r0, _02216900 ; =MOD13_02216098 + add r3, ip, #0x40 + bl WM_StartMPEx + mov r1, r0 + mov r0, #0xe + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216408: + bl MOD13_02216984 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + ldr r1, _022168FC ; =0x02240AF8 + mov r0, #0x19 + ldr r2, [r1] + mov r1, #0 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216440: + ldr r2, _022168FC ; =0x02240AF8 + ldrh r3, [r4, #0x10] + ldr r1, [r2] + mov r0, #1 + add r1, r1, #0x500 + ldrh ip, [r1, #0x2a] + mvn r3, r0, lsl r3 + and r3, ip, r3 + strh r3, [r1, #0x2a] + ldr r2, [r2] + mov r1, r4 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216480: + ldr r0, _022168FC ; =0x02240AF8 + ldr r1, [r0] + add r0, r1, #0x500 + ldrh r0, [r0, #0x26] + cmp r0, #1 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + ldr r2, [r1, #0x51c] + mov r1, r4 + mov r0, #0x1c + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022164BC: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022164E0: + ldr r0, _02216908 ; =0x02240AFC + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x31c] + ldrh r0, [r4, #4] + cmp r0, #0xa + beq _0221650C + cmp r0, #0xb + beq _0221653C + b _02216560 +_0221650C: + ldr r3, _022168FC ; =0x02240AF8 + mov r4, #1 + ldr r2, [r3] + mov r0, #0x19 + add r2, r2, #0x500 + strh r4, [r2, #0x28] + ldr r2, [r3] + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221653C: + ldr r0, _022168FC ; =0x02240AF8 + ldr r1, [r4, #8] + ldr r2, [r0] + mov r0, #3 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216560: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216584: + ldr r0, _02216908 ; =0x02240AFC + ldr r1, [r0] + add r0, r1, #0x7000 + ldr r0, [r0, #0x4c8] + cmp r0, #0 + beq _022165E0 + mov r3, #0 + mov r2, r3 +_022165A4: + add r0, r1, r2, lsl #2 + add r0, r0, #0x1000 + ldr r0, [r0, #0x4e8] + cmp r0, #0 + beq _022165C4 + add r3, r3, #1 + cmp r3, #2 + bhs _022165D0 +_022165C4: + add r2, r2, #1 + cmp r2, #0xf + blo _022165A4 +_022165D0: + cmp r3, #1 + bne _022165E0 + ldr r0, _0221690C ; =0x000032C8 + bl OS_SpinWait +_022165E0: + ldr r0, _022168FC ; =0x02240AF8 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x50c] + ldrh r1, [r4, #2] + cmp r1, #0 + bne _02216634 + ldr r0, [r0] + mov r1, r4 + ldr r2, [r0, #0x51c] + mov r0, #2 + blx r2 + ldr r1, _022168FC ; =0x02240AF8 + mov r0, #0x19 + ldr r2, [r1] + mov r1, #0 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216634: + cmp r1, #0xa + bne _0221665C + ldr r0, [r0] + mov r1, r4 + ldr r2, [r0, #0x51c] + mov r0, #0x2a + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221665C: + ldr r0, [r0] + mov r1, r4 + ldr r2, [r0, #0x51c] + mov r0, #0x13 + blx r2 + ldr r1, _022168FC ; =0x02240AF8 + mov r0, #0x19 + ldr r2, [r1] + mov r1, #0 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216694: + ldr r0, _02216908 ; =0x02240AFC + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x320] + cmp r0, #0 + bne _0221672C + ldrh r0, [r4, #2] + cmp r0, #0 + beq _022166EC + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r0, [r2] + mov r1, r4 + add r0, r0, #0x500 + strh r3, [r0, #0x26] + ldr r2, [r2] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022166EC: + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r1, [r2] + ldr r0, _02216900 ; =MOD13_02216098 + add r1, r1, #0x500 + strh r3, [r1, #0x2a] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x28] + bl WM_End + mov r1, r0 + mov r0, #2 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221672C: + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl WM_SetPortCallback + mov r0, #0 + bl WM_SetIndCallback +_02216744: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216784 + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r0, [r2] + mov r1, r4 + add r0, r0, #0x500 + strh r3, [r0, #0x26] + ldr r2, [r2] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216784: + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r1, [r2] + ldr r0, _02216908 ; =0x02240AFC + strb r3, [r1, #0x50d] + ldr r0, [r0] + mov r1, r4 + add r0, r0, #0x1300 + strh r3, [r0, #0x16] + ldr r2, [r2] + mov r0, #0x11 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022167C4: + ldrh r0, [r4, #2] + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, lr} + bxne lr + ldr r0, _022168FC ; =0x02240AF8 + ldrh r1, [r4, #0xa] + ldr r0, [r0] + add sp, sp, #0x20 + add r0, r0, #0x500 + ldrh r2, [r0, #0x2a] + mvn r1, r1 + and r1, r2, r1 + strh r1, [r0, #0x2a] + ldmia sp!, {r4, lr} + bx lr +_02216804: + ldrh r0, [r4, #4] + sub r0, r0, #0x10 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _022168F0 +_02216818: ; jump table + b _02216838 ; case 0 + b _0221685C ; case 1 + b _02216880 ; case 2 + b _022168A4 ; case 3 + b _022168F0 ; case 4 + b _022168F0 ; case 5 + b _022168C8 ; case 6 + b _022168F0 ; case 7 +_02216838: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x1d + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221685C: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x1f + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216880: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x20 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022168A4: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x21 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022168C8: + bl OS_Terminate + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022168D8: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 +_022168F0: + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_022168FC: .word 0x02240AF8 +_02216900: .word MOD13_02216098 +_02216904: .word 0x0223F7A0 +_02216908: .word 0x02240AFC +_0221690C: .word 0x000032C8 + + arm_func_start MOD13_02216910 +MOD13_02216910: ; 0x02216910 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02216970 ; =MOD13_02216098 + bl WM_SetIndCallback + mov r1, r0 + mov r0, #0x80 + bl MOD13_02214B08 + ldr r0, _02216974 ; =0x0223F794 + ldr r1, _02216978 ; =0x0223F798 + ldrh r3, [r0] + ldr r2, _0221697C ; =0x0223F790 + ldr r0, _02216980 ; =0x0223F78C + str r3, [sp] + ldrh r1, [r1] + ldrh r2, [r2] + ldrh r3, [r0] + ldr r0, _02216970 ; =MOD13_02216098 + bl WM_SetLifeTime + mov r1, r0 + mov r0, #0x1d + bl MOD13_02214B08 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02216970: .word MOD13_02216098 +_02216974: .word 0x0223F794 +_02216978: .word 0x0223F798 +_0221697C: .word 0x0223F790 +_02216980: .word 0x0223F78C + + arm_func_start MOD13_02216984 +MOD13_02216984: ; 0x02216984 + ldr r1, _022169E8 ; =0x02240AF8 + mov r0, #0 + ldr r2, [r1] + mov ip, r0 + add r1, r2, #0x500 + ldrh r1, [r1, #0x28] + mov r3, r0 + cmp r1, #1 + bne _022169B4 + ldrb r1, [r2, #0x50c] + cmp r1, #0 + moveq r3, #1 +_022169B4: + cmp r3, #0 + beq _022169CC + add r1, r2, #0x500 + ldrh r1, [r1, #0x26] + cmp r1, #0 + moveq ip, #1 +_022169CC: + cmp ip, #0 + bxeq lr + add r1, r2, #0x500 + ldrh r1, [r1, #0x2a] + cmp r1, #0 + movne r0, #1 + bx lr + .align 2, 0 +_022169E8: .word 0x02240AF8 + + arm_func_start MOD13_022169EC +MOD13_022169EC: ; 0x022169EC + stmdb sp!, {r4, lr} + mov r4, r0 + bl WM_GetAllowedChannel + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, lr} + bxeq lr + ldrh r3, [r4, #4] + mov ip, #0 + mov lr, r3 + mov r2, #1 +_02216A18: + sub r1, lr, #1 + mov r1, r2, lsl r1 + ands r1, r0, r1 + beq _02216A34 + cmp r3, lr + strneh lr, [r4, #4] + bne _02216A5C +_02216A34: + add r1, ip, #1 + mov r1, r1, lsl #0x10 + cmp lr, #0x10 + mov ip, r1, lsr #0x10 + moveq r1, r2 + addne r1, lr, #1 + mov r1, r1, lsl #0x10 + cmp ip, #0x10 + mov lr, r1, lsr #0x10 + blo _02216A18 +_02216A5C: + mov r0, #1 + ldmia sp!, {r4, lr} + bx lr + + arm_func_start MOD13_02216A68 +MOD13_02216A68: ; 0x02216A68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + mov r5, #0 + bl OS_DisableInterrupts + add r2, sb, #0x30 + add r1, sb, #0x70 + mov r4, r0 + cmp r2, r1 + bhs _02216AF4 +_02216A9C: + ldr r0, [r2, #0xc] + cmp r0, #2 + blo _02216AE8 + ldr r0, [r2] + subs r0, r8, r0 + bmi _02216AE8 + ldr r3, [r2, #4] + add ip, r0, r6 + cmp ip, r3 + bhi _02216AE8 + ldr r3, [r2, #8] + mov r1, r7 + mov r2, r6 + add r0, r3, r0 + bl MI_CpuCopy8 + mov r0, #0 + str r0, [sb] + mov r5, #1 + b _02216AF4 +_02216AE8: + add r2, r2, #0x10 + cmp r2, r1 + blo _02216A9C +_02216AF4: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + + arm_func_start MOD13_02216B0C +MOD13_02216B0C: ; 0x02216B0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r4, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + bl OS_DisableInterrupts + mov r6, r0 + add r5, r4, #0x30 + add r4, r4, #0x70 +_02216B34: + cmp r5, r4 + blo _02216B40 + bl OS_Terminate +_02216B40: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _02216B64 + str sb, [r5] + str r8, [r5, #4] + ldr r0, [sp, #0x20] + str r7, [r5, #8] + str r0, [r5, #0xc] + b _02216B6C +_02216B64: + add r5, r5, #0x10 + b _02216B34 +_02216B6C: + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + + arm_func_start MOD13_02216B80 +MOD13_02216B80: ; 0x02216B80 + ldr ip, _02216B90 ; =0x020CE34C + mov r1, #0 + mov r2, #0x70 + bx ip + .align 2, 0 +_02216B90: .word 0x020CE34C + + arm_func_start MOD13_02216B94 +MOD13_02216B94: ; 0x02216B94 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + bl MOD13_02216DA4 + cmp r0, #0 + beq _02216BD0 + ldr r0, _02216BE4 ; =0x02240B20 + mov r1, #0 + ldr r0, [r0] + mov r2, r5 + mov r3, r1 + add r0, r0, #0xc4 + bl MOD13_02216BE8 +_02216BD0: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02216BE4: .word 0x02240B20 + + arm_func_start MOD13_02216BE8 +MOD13_02216BE8: ; 0x02216BE8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r4, _02216D74 ; =0x02240B20 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + ldr r5, [r4] + bl MOD13_02216DA4 + cmp r0, #0 + bne _02216C18 + bl OS_Terminate +_02216C18: + ldr r0, [sb, #4] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + beq _02216C2C + bl OS_Terminate +_02216C2C: + cmp r6, #0x1f + bls _02216C78 + mov r0, r5 + bl OS_GetThreadPriority + cmp r6, #0x20 + bne _02216C54 + cmp r0, #0 + subne r6, r0, #1 + moveq r6, #0 + b _02216C78 +_02216C54: + cmp r6, #0x21 + bne _02216C6C + cmp r0, #0x1f + addlo r6, r0, #1 + movhs r6, #0x1f + b _02216C78 +_02216C6C: + cmp r6, #0x22 + moveq r6, r0 + movne r6, #0x1f +_02216C78: + bl OS_DisableInterrupts + ldr r2, [sb, #4] + bic r1, r6, #0x80000000 + bic r2, r2, #1 + orr r2, r2, #1 + str r2, [sb, #4] + ldr r2, [sb, #4] + mov r4, r0 + and r0, r2, #1 + orr r0, r0, r1, lsl #1 + str r0, [sb, #4] + str r8, [sb, #8] + str r7, [sb, #0xc] + ldr r0, [r5, #0xc0] + cmp r0, #0 + bne _02216CDC + add r0, r5, #0xc4 + cmp sb, r0 + ldreq r0, _02216D74 ; =0x02240B20 + moveq r1, #0 + streq r1, [r0] + mov r0, r5 + str sb, [r5, #0xc0] + bl OS_WakeupThreadDirect + b _02216D60 +_02216CDC: + add r0, r5, #0xc4 + cmp sb, r0 + ldr r2, [r5, #0xc0] + bne _02216D1C + ldr r0, [r2] + cmp r0, #0 + beq _02216D08 +_02216CF8: + mov r2, r0 + ldr r0, [r0] + cmp r0, #0 + bne _02216CF8 +_02216D08: + ldr r0, _02216D74 ; =0x02240B20 + str sb, [r2] + mov r1, #0 + str r1, [r0] + b _02216D60 +_02216D1C: + ldr r0, [r2, #4] + mov r0, r0, lsr #1 + cmp r0, r6 + bls _02216D3C + str sb, [r5, #0xc0] + str r2, [sb] + b _02216D60 +_02216D38: + mov r2, r1 +_02216D3C: + ldr r1, [r2] + cmp r1, #0 + beq _02216D58 + ldr r0, [r1, #4] + mov r0, r0, lsr #1 + cmp r0, r6 + bls _02216D38 +_02216D58: + str r1, [sb] + str sb, [r2] +_02216D60: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + .align 2, 0 +_02216D74: .word 0x02240B20 + + arm_func_start MOD13_02216D78 +MOD13_02216D78: ; 0x02216D78 + ldr r0, [r0, #4] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + movne r0, #1 + moveq r0, #0 + bx lr + + arm_func_start MOD13_02216D90 +MOD13_02216D90: ; 0x02216D90 + ldr ip, _02216DA0 ; =0x020CE34C + mov r1, #0 + mov r2, #0x20 + bx ip + .align 2, 0 +_02216DA0: .word 0x020CE34C + + arm_func_start MOD13_02216DA4 +MOD13_02216DA4: ; 0x02216DA4 + ldr r0, _02216DBC ; =0x02240B20 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02216DBC: .word 0x02240B20 + + arm_func_start MOD13_02216DC0 +MOD13_02216DC0: ; 0x02216DC0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r0 + mov r6, r1 + bl OS_DisableInterrupts + ldr r1, _02216E40 ; =0x02240B20 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + bne _02216E2C + add r0, r5, #0xc4 + str r5, [r1] + bl MOD13_02216D90 + sub r0, r6, #0xe4 + mov lr, #0 + str lr, [r5, #0xc0] + bic ip, r0, #3 + add r3, r5, #0xe4 + str ip, [sp] + ldr r1, _02216E44 ; =MOD13_02216E48 + mov r0, r5 + mov r2, r5 + add r3, r3, ip + str lr, [sp, #4] + bl OS_CreateThread + mov r0, r5 + bl OS_WakeupThreadDirect +_02216E2C: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02216E40: .word 0x02240B20 +_02216E44: .word MOD13_02216E48 + + arm_func_start MOD13_02216E48 +MOD13_02216E48: ; 0x02216E48 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, r0 + add sb, r8, #0xc4 + mov r4, #0 +_02216E5C: + bl OS_DisableInterrupts + ldr r1, [r8, #0xc0] + mov r5, r0 + cmp r1, #0 + bne _02216E90 +_02216E70: + mov r0, r8 + mov r1, r4 + bl OS_SetThreadPriority + mov r0, r4 + bl OS_SleepThread + ldr r0, [r8, #0xc0] + cmp r0, #0 + beq _02216E70 +_02216E90: + ldr r7, [r8, #0xc0] + ldr r1, [r8, #0xc0] + mov r0, r8 + ldr r1, [r1] + str r1, [r8, #0xc0] + ldr r1, [r7, #4] + mov r1, r1, lsr #1 + bl OS_SetThreadPriority + mov r0, r5 + bl OS_RestoreInterrupts + ldr r1, [r7, #8] + cmp r1, #0 + beq _02216ECC + mov r0, r7 + blx r1 +_02216ECC: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r8 + ldr r5, [r7, #0xc] + bl OS_GetThreadPriority + ldr r1, [r8, #0xc0] + cmp r1, #0 + moveq r1, r4 + beq _02216F0C + ldr r1, [r8, #0xc0] + ldr r1, [r1, #4] + cmp r0, r1, lsr #1 + ldrlo r1, [r8, #0xc0] + ldrlo r1, [r1, #4] + movlo r1, r1, lsr #1 + movhs r1, r0 +_02216F0C: + cmp r1, r0 + beq _02216F1C + mov r0, r8 + bl OS_SetThreadPriority +_02216F1C: + str r4, [r7] + ldr r0, [r7, #4] + cmp r5, #0 + bic r0, r0, #1 + str r0, [r7, #4] + beq _02216F3C + mov r0, r7 + blx r5 +_02216F3C: + cmp r7, sb + beq _02216F50 + mov r0, r6 + bl OS_RestoreInterrupts + b _02216E5C +_02216F50: + bl OS_ExitThread + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + + arm_func_start MOD13_02216F60 +MOD13_02216F60: ; 0x02216F60 + ldr r1, _02216FB8 ; =0x02240B28 + mov ip, #0 + ldr r2, [r1, #4] + cmp r2, #0 + ble _02216FB0 + ldr r1, _02216FBC ; =0x02240B24 + sub r0, r0, #1 + ldr r1, [r1] + add r0, r1, r0, lsl #2 + ldr r3, [r0, #0x1e0] + mov r1, #1 +_02216F8C: + mov r0, r1, lsl ip + ands r0, r0, r3 + moveq r0, #0 + bxeq lr + add r0, ip, #1 + mov r0, r0, lsl #0x10 + mov ip, r0, lsr #0x10 + cmp ip, r2 + blt _02216F8C +_02216FB0: + mov r0, #1 + bx lr + .align 2, 0 +_02216FB8: .word 0x02240B28 +_02216FBC: .word 0x02240B24 + + arm_func_start MOD13_02216FC0 +MOD13_02216FC0: ; 0x02216FC0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r2, _02217068 ; =0x02240B24 + mov r7, r1 + ldr r3, [r2] + cmp r3, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + ldr r1, _0221706C ; =0x02240B28 + ldrb r4, [r0, #2] + ldr r2, [r1, #4] + cmp r4, r2 + addgt sp, sp, #4 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, lr} + bxgt lr + sub r6, r7, #1 + ldr r2, [r1] + add r1, r3, r6, lsl #5 + mla r1, r4, r2, r1 + add r0, r0, #3 + mov r5, r6, lsl #5 + bl MI_CpuCopy8 + ldr r0, _02217068 ; =0x02240B24 + mov r1, #1 + ldr r2, [r0] + mov r0, r7 + add r3, r2, #0x1e0 + ldr r2, [r3, r6, lsl #2] + orr r1, r2, r1, lsl r4 + str r1, [r3, r6, lsl #2] + bl MOD13_02216F60 + cmp r0, #0 + ldrne r0, _02217068 ; =0x02240B24 + ldrne r0, [r0] + addne r0, r0, r5 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_02217068: .word 0x02240B24 +_0221706C: .word 0x02240B28 + + arm_func_start MOD13_02217070 +MOD13_02217070: ; 0x02217070 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldrb r0, [r6] + mov r5, r1 + mov r4, r2 + strb r0, [r5] + ldrb r0, [r5] + cmp r0, #7 + beq _022170A8 + cmp r0, #8 + beq _02217114 + cmp r0, #9 + beq _02217140 + b _0221718C +_022170A8: + mov r0, r4 + bl MOD13_02216F60 + cmp r0, #0 + ldrne r0, _022171A4 ; =0x02240B24 + subne r1, r4, #1 + ldrne r0, [r0] + addne r0, r0, r1, lsl #5 + ldmneia sp!, {r4, r5, r6, lr} + bxne lr + ldrb r1, [r6, #1] + ldr r0, _022171A8 ; =0x02240B28 + strb r1, [r5, #2] + ldrb r2, [r5, #2] + ldr r1, [r0, #4] + cmp r2, r1 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, lr} + bxgt lr + ldr r2, [r0] + add r0, r6, #2 + add r1, r5, #3 + bl MI_CpuCopy8 + mov r0, r5 + mov r1, r4 + bl MOD13_02216FC0 + mov r4, r0 + b _02217198 +_02217114: + ldrb r0, [r6, #1] + add r4, r6, #3 + and r0, r0, #0xff + strh r0, [r5, #2] + ldrb r0, [r6, #2] + ldrh r1, [r5, #2] + mov r0, r0, lsl #8 + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [r5, #2] + b _02217198 +_02217140: + ldrb r0, [r6, #1] + add r4, r6, #3 + ldr r1, _022171A8 ; =0x02240B28 + and r0, r0, #0xff + strh r0, [r5, #2] + ldrb r2, [r6, #2] + ldrh r3, [r5, #2] + mov r0, r4 + mov r2, r2, lsl #8 + and r2, r2, #0xff00 + orr r2, r3, r2 + strh r2, [r5, #2] + ldr r2, [r1] + add r1, r5, #4 + bl MI_CpuCopy8 + ldr r0, _022171A8 ; =0x02240B28 + ldr r0, [r0] + add r4, r4, r0 + b _02217198 +_0221718C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_02217198: + mov r0, r4 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_022171A4: .word 0x02240B24 +_022171A8: .word 0x02240B28 + + arm_func_start MOD13_022171AC +MOD13_022171AC: ; 0x022171AC + ldrb r3, [r0] + mov r2, r1 + add r2, r2, #1 + strb r3, [r1] + ldrb r1, [r0] + cmp r1, #6 + addls pc, pc, r1, lsl #2 + b _02217224 +_022171CC: ; jump table + b _02217224 ; case 0 + b _0221722C ; case 1 + b _0221722C ; case 2 + b _0221722C ; case 3 + b _022171E8 ; case 4 + b _0221722C ; case 5 + b _0221722C ; case 6 +_022171E8: + ldrh r3, [r0, #2] + add r1, r2, #3 + strb r3, [r2] + ldrh r3, [r0, #2] + and r3, r3, #0xff00 + mov r3, r3, asr #8 + strb r3, [r2, #1] + ldrh r3, [r0, #4] + strb r3, [r2, #2] + ldrh r0, [r0, #4] + add r2, r2, #4 + and r0, r0, #0xff00 + mov r0, r0, asr #8 + strb r0, [r1] + b _0221722C +_02217224: + mov r0, #0 + bx lr +_0221722C: + mov r0, r2 + bx lr + + arm_func_start MOD13_02217234 +MOD13_02217234: ; 0x02217234 + stmdb sp!, {r4, lr} + ldr r1, _0221727C ; =0x02240B24 + ldr r1, [r1] + cmp r1, #0 + ldmeqia sp!, {r4, lr} + bxeq lr + sub r4, r0, #1 + add r0, r1, r4, lsl #5 + mov r1, #0 + mov r2, #0x1e + bl MI_CpuFill8 + ldr r0, _0221727C ; =0x02240B24 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x1e0] + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_0221727C: .word 0x02240B24 + + arm_func_start MOD13_02217280 +MOD13_02217280: ; 0x02217280 + ldr r3, _02217298 ; =0x02240B24 + ldr ip, _0221729C ; =0x020CE34C + mov r1, #0 + mov r2, #0x21c + str r0, [r3] + bx ip + .align 2, 0 +_02217298: .word 0x02240B24 +_0221729C: .word 0x020CE34C + + arm_func_start MOD13_022172A0 +MOD13_022172A0: ; 0x022172A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _022172D8 ; =0x02240B28 + sub r1, r0, #2 + mov r0, #0x1e + str r1, [r2] + bl _s32_div_f + ldr r1, _022172D8 ; =0x02240B28 + mov r2, #0x1e + str r0, [r1, #4] + str r2, [r1, #8] + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_022172D8: .word 0x02240B28 diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s new file mode 100644 index 00000000..028a3b7c --- /dev/null +++ b/arm9/modules/13/asm/module_13_arm2.s @@ -0,0 +1,35373 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD13_0221E560 +MOD13_0221E560: ; 0x0221E560 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _0221E640 ; =0x02242FE4 + mov r1, #0x28 + ldr r0, [r0] + ldrb r0, [r0, #9] + add r0, r0, #1 + bl FX_ModS32 + ldr r2, _0221E640 ; =0x02242FE4 + mov r1, #5 + ldr r3, [r2] + strb r0, [r3, #9] + ldr r0, [r2] + ldrb r0, [r0, #9] + bl FX_DivS32 + ldr r2, _0221E640 ; =0x02242FE4 + add r1, r0, #0x47 + ldr r2, [r2] + mov r0, #0 + ldr r2, [r2, #4] + bl MOD13_02239E8C + ldr r3, _0221E640 ; =0x02242FE4 + ldr lr, _0221E644 ; =0x0223EC6C + ldr r0, [r3] + ldr r2, _0221E648 ; =0x0223EC70 + ldr r5, [r0, #4] + ldr r1, _0221E64C ; =0xFE00FF00 + ldrh r4, [r5, #4] + ldr r0, _0221E650 ; =0x000001FF + bic r4, r4, #0xc00 + orr r4, r4, #0x400 + strh r4, [r5, #4] + ldr r4, [r3] + ldrb r5, [r4, #8] + ldr ip, [r4, #4] + ldr r4, [ip] + ldrb lr, [lr, r5] + bic r4, r4, #0xc00 + str r4, [ip] + ldrh r4, [ip, #4] + bic r4, r4, #0xf000 + orr r4, r4, lr, lsl #12 + strh r4, [ip, #4] + ldr r4, [r3] + ldrh r3, [r2, #2] + ldr r4, [r4, #4] + ldrh lr, [r2] + ldr ip, [r4] + and r2, r3, #0xff + and r1, ip, r1 + and r3, lr, r0 + orr r0, r1, r2 + orr r0, r0, r3, lsl #16 + str r0, [r4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221E640: .word 0x02242FE4 +_0221E644: .word 0x0223EC6C +_0221E648: .word 0x0223EC70 +_0221E64C: .word 0xFE00FF00 +_0221E650: .word 0x000001FF + + arm_func_start MOD13_0221E654 +MOD13_0221E654: ; 0x0221E654 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0221E690 ; =0x02242FE4 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1] + bl MOD13_0223C104 + ldr r0, _0221E690 ; =0x02242FE4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223B974 + ldr r0, _0221E690 ; =0x02242FE4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221E690: .word 0x02242FE4 + + arm_func_start MOD13_0221E694 +MOD13_0221E694: ; 0x0221E694 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r4, r0 + mov r0, #0xc + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _0221E774 ; =0x02242FE4 + mov r1, #0x47 + str r0, [r2] + strb r4, [r0, #8] + mov r0, #0 + bl MOD13_02239E54 + ldr r7, _0221E774 ; =0x02242FE4 + ldr r8, _0221E778 ; =0x0223EC6C + ldr r1, [r7] + ldr r6, _0221E77C ; =0x0223EC70 + str r0, [r1, #4] + ldr r0, [r7] + ldr lr, _0221E780 ; =0x000001FF + ldr r3, [r0, #4] + ldr r5, _0221E784 ; =0xFE00FF00 + ldrh r2, [r3, #4] + mov r0, #1 + ldr r1, _0221E788 ; =MOD13_0221E560 + bic r2, r2, #0xc00 + orr r2, r2, #0x400 + strh r2, [r3, #4] + ldr r3, [r7] + mov r2, #0 + ldr ip, [r3, #4] + mov r3, #0x78 + ldr sb, [ip] + bic sb, sb, #0xc00 + str sb, [ip] + ldrb r4, [r8, r4] + ldrh r8, [ip, #4] + bic r8, r8, #0xf000 + orr r4, r8, r4, lsl #12 + strh r4, [ip, #4] + ldr r4, [r7] + ldrh r7, [r6] + ldr ip, [r4, #4] + ldrh r4, [r6, #2] + and r7, r7, lr + ldr r6, [ip] + and r4, r4, #0xff + and r5, r6, r5 + orr r4, r5, r4 + orr r4, r4, r7, lsl #16 + str r4, [ip] + bl MOD13_0223C1C4 + ldr r1, _0221E774 ; =0x02242FE4 + ldr r1, [r1] + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0221E774: .word 0x02242FE4 +_0221E778: .word 0x0223EC6C +_0221E77C: .word 0x0223EC70 +_0221E780: .word 0x000001FF +_0221E784: .word 0xFE00FF00 +_0221E788: .word MOD13_0221E560 + + arm_func_start MOD13_0221E78C +MOD13_0221E78C: ; 0x0221E78C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + ldr r4, _0221E888 ; =0x02242FE8 + str r0, [sp] + ldr r1, [r4] + ldrh r0, [r1, #0x14] + add r0, r0, #1 + strh r0, [r1, #0x14] + ldr r1, [r4] + ldrh r0, [r1, #0x14] + cmp r0, #0x10 + addlo sp, sp, #4 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r1, [r1, #0x17] + ldr r0, _0221E88C ; =0x0223EC7C + mov sb, #0 + ldrb sl, [r0, r1] + cmp sl, #0 + ble _0221E838 + mov r7, sb + mov fp, sb + mvn r6, #0 + mov r5, #1 +_0221E7E8: + ldr r0, [r4] + ldr r2, _0221E890 ; =0x0223EC8C + ldrb r3, [r0, #0x17] + ldr r0, [r0, sb, lsl #2] + mov r1, r7 + add r2, r2, r3, lsl #1 + ldrb r8, [sb, r2] + bl MOD13_02239ADC + mov r2, r0 + mov r1, r8 + mov r0, fp + bl MOD13_02239E8C + ldr r0, [r4] + mov r1, r6 + ldr r0, [r0, sb, lsl #2] + mov r2, r5 + bl MOD13_02239814 + add sb, sb, #1 + cmp sb, sl + blt _0221E7E8 +_0221E838: + ldr r0, _0221E894 ; =0x0223EC74 + ldrh r0, [r0, #2] + bl MOD13_0221EBD8 + ldr r1, _0221E888 ; =0x02242FE8 + mov r0, #0 + ldr r2, [r1] + mvn r3, #0 + strh r0, [r2, #0x14] + ldr r2, [r1] + strb r3, [r2, #0x16] + ldr r2, [r1] + ldr r1, [r2, #0x10] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sp] + str r0, [r2, #0x10] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0221E888: .word 0x02242FE8 +_0221E88C: .word 0x0223EC7C +_0221E890: .word 0x0223EC8C +_0221E894: .word 0x0223EC74 + + arm_func_start MOD13_0221E898 +MOD13_0221E898: ; 0x0221E898 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + ldr r0, _0221E910 ; =0x02242FE8 + ldr r0, [r0] + ldr r1, [r0, #0x10] + cmp r1, #0 + beq _0221E8C8 + mov r0, #0 + bl MOD13_0223C110 +_0221E8C8: + ldr r4, _0221E910 ; =0x02242FE8 + mov r5, #0 +_0221E8D0: + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + cmp r0, #0 + beq _0221E8E4 + bl MOD13_02239AE8 +_0221E8E4: + add r5, r5, #1 + cmp r5, #2 + blt _0221E8D0 + ldr r0, _0221E910 ; =0x02242FE8 + ldr r0, [r0] + ldr r0, [r0, #8] + bl MOD13_02239AE8 + ldr r0, _0221E910 ; =0x02242FE8 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221E910: .word 0x02242FE8 + + arm_func_start MOD13_0221E914 +MOD13_0221E914: ; 0x0221E914 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221E970 ; =0x02242FE8 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + add r0, r0, #4 + str r0, [sp, #4] + bl MOD13_0221EBD8 + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221E974 ; =MOD13_0221E898 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221E970: .word 0x02242FE8 +_0221E974: .word MOD13_0221E898 + + arm_func_start MOD13_0221E978 +MOD13_0221E978: ; 0x0221E978 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r8, _0221EAE8 ; =0x02242FE8 + ldr r1, _0221EAEC ; =0x0223EC7C + ldr r3, [r8] + ldrb r2, [r3, #0x17] + ldrb r0, [r3, #0x18] + ldrb r7, [r1, r2] + cmp r0, #0 + bne _0221EAD0 + ldrsb r1, [r3, #0x16] + mvn r0, #0 + cmp r1, r0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r7, #0 + mov r6, #0 + ble _0221EAD0 + ldr r5, _0221EAF0 ; =0x0223EC84 + ldr r4, _0221EAF4 ; =0x0223EC9C + ldr sl, _0221EAF8 ; =0x0223EC78 + add sb, sp, #0 +_0221E9D0: + ldr r0, [r8] + mov r1, sl + ldrb r0, [r0, #0x17] + mov r2, sb + add r0, r4, r0, lsl #1 + ldrb r0, [r6, r0] + add r0, r5, r0, lsl #2 + bl MOD13_0223AB74 + mov r0, sb + bl MOD13_0223B2B4 + cmp r0, #0 + beq _0221EAC4 + ldr r0, _0221EAE8 ; =0x02242FE8 + ldr r3, [r0] + ldr r0, [r3, #0x10] + cmp r0, #0 + bne _0221EAD0 + ldrb r2, [r3, #0x17] + ldr r1, _0221EAFC ; =0x0223EC8C + ldr r0, [r3, r6, lsl #2] + add r1, r1, r2, lsl #1 + ldrb r2, [r6, r1] + mov r1, #0 + add r4, r2, #1 + bl MOD13_02239ADC + mov r2, r0 + mov r1, r4 + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _0221EAE8 ; =0x02242FE8 + ldr r1, _0221EAF4 ; =0x0223EC9C + ldr r0, [r0] + ldr r2, _0221EAF0 ; =0x0223EC84 + ldrb r4, [r0, #0x17] + ldr r3, _0221EB00 ; =0x0223EC86 + ldr r0, [r0, r6, lsl #2] + add r1, r1, r4, lsl #1 + ldrb r4, [r6, r1] + mvn r1, #0 + mov r4, r4, lsl #2 + ldrh r2, [r2, r4] + ldrh r3, [r3, r4] + bl MOD13_02239888 + ldr r0, _0221EAE8 ; =0x02242FE8 + mvn r1, #0 + ldr r0, [r0] + mov r2, #1 + ldr r0, [r0, r6, lsl #2] + bl MOD13_02239814 + mov r0, #0 + ldr r1, _0221EB04 ; =MOD13_0221E78C + mov r2, r0 + mov r3, #0x6e + bl MOD13_0223C1C4 + ldr r1, _0221EAE8 ; =0x02242FE8 + add sp, sp, #8 + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r0, [r1] + strb r6, [r0, #0x16] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0221EAC4: + add r6, r6, #1 + cmp r6, r7 + blt _0221E9D0 +_0221EAD0: + ldr r0, _0221EAE8 ; =0x02242FE8 + mvn r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x16] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0221EAE8: .word 0x02242FE8 +_0221EAEC: .word 0x0223EC7C +_0221EAF0: .word 0x0223EC84 +_0221EAF4: .word 0x0223EC9C +_0221EAF8: .word 0x0223EC78 +_0221EAFC: .word 0x0223EC8C +_0221EB00: .word 0x0223EC86 +_0221EB04: .word MOD13_0221E78C + + arm_func_start MOD13_0221EB08 +MOD13_0221EB08: ; 0x0221EB08 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0221EB5C ; =0x02242FE8 + mvn r3, #0 + ldr r2, [r1] + strb r3, [r2, #0x16] + ldr r3, [r1] + ldrh r2, [r3, #0x14] + add r2, r2, #1 + strh r2, [r3, #0x14] + ldr r3, [r1] + ldrh r1, [r3, #0x14] + cmp r1, #4 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r1, _0221EB60 ; =MOD13_0221E978 + mov r2, #0 + strh r2, [r3, #0x14] + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221EB5C: .word 0x02242FE8 +_0221EB60: .word MOD13_0221E978 + + arm_func_start MOD13_0221EB64 +MOD13_0221EB64: ; 0x0221EB64 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221EBCC ; =0x02242FE8 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + sub r0, r0, #4 + str r0, [sp, #4] + bl MOD13_0221EBD8 + ldr r0, _0221EBD0 ; =0x0223EC74 + ldr r1, [sp, #4] + ldrh r0, [r0, #2] + cmp r1, r0 + addgt sp, sp, #8 + ldmgtia sp!, {r4, pc} + bl MOD13_0221EBD8 + ldr r1, _0221EBD4 ; =MOD13_0221EB08 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221EBCC: .word 0x02242FE8 +_0221EBD0: .word 0x0223EC74 +_0221EBD4: .word MOD13_0221EB08 + + arm_func_start MOD13_0221EBD8 +MOD13_0221EBD8: ; 0x0221EBD8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r2, _0221EC70 ; =0x02242FE8 + ldr r3, _0221EC74 ; =0x0223EC7C + ldr r6, [r2] + ldr r2, _0221EC78 ; =0x0223EC84 + ldrb r4, [r6, #0x17] + ldrh r2, [r2, #2] + ldr r1, _0221EC7C ; =0x0223EC74 + ldrb r8, [r3, r4] + mov r3, r0 + add r5, r3, r2 + ldrh r4, [r1, #2] + ldrh r2, [r1] + ldr r0, [r6, #8] + mvn r1, #0 + sub r7, r5, r4 + bl MOD13_02239888 + mov r6, #0 + cmp r8, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr sb, _0221EC70 ; =0x02242FE8 + ldr r4, _0221EC80 ; =0x0223EC9C + ldr sl, _0221EC78 ; =0x0223EC84 + mvn r5, #0 +_0221EC38: + ldr r0, [sb] + mov r1, r5 + ldrb r2, [r0, #0x17] + ldr r0, [r0, r6, lsl #2] + mov r3, r7 + add r2, r4, r2, lsl #1 + ldrb r2, [r6, r2] + mov r2, r2, lsl #2 + ldrh r2, [sl, r2] + bl MOD13_02239888 + add r6, r6, #1 + cmp r6, r8 + blt _0221EC38 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0221EC70: .word 0x02242FE8 +_0221EC74: .word 0x0223EC7C +_0221EC78: .word 0x0223EC84 +_0221EC7C: .word 0x0223EC74 +_0221EC80: .word 0x0223EC9C + + arm_func_start MOD13_0221EC84 +MOD13_0221EC84: ; 0x0221EC84 + ldr r0, _0221EC98 ; =0x02242FE8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x18] + bx lr + .align 2, 0 +_0221EC98: .word 0x02242FE8 + + arm_func_start MOD13_0221EC9C +MOD13_0221EC9C: ; 0x0221EC9C + ldr r0, _0221ECB0 ; =0x02242FE8 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x18] + bx lr + .align 2, 0 +_0221ECB0: .word 0x02242FE8 + + arm_func_start MOD13_0221ECB4 +MOD13_0221ECB4: ; 0x0221ECB4 + ldr r0, _0221ECDC ; =0x02242FE8 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #1 + bxeq lr + ldrb r0, [r0, #0x19] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0221ECDC: .word 0x02242FE8 + + arm_func_start MOD13_0221ECE0 +MOD13_0221ECE0: ; 0x0221ECE0 + ldr r1, _0221ECF0 ; =0x02242FE8 + ldr r1, [r1] + strb r0, [r1, #0x16] + bx lr + .align 2, 0 +_0221ECF0: .word 0x02242FE8 + + arm_func_start MOD13_0221ECF4 +MOD13_0221ECF4: ; 0x0221ECF4 + ldr r2, _0221ED10 ; =0x02242FE8 + mvn r1, #0 + ldr r3, [r2] + ldrsb r2, [r3, #0x16] + cmp r2, r1 + streqb r0, [r3, #0x16] + bx lr + .align 2, 0 +_0221ED10: .word 0x02242FE8 + + arm_func_start MOD13_0221ED14 +MOD13_0221ED14: ; 0x0221ED14 + ldr r0, _0221ED24 ; =0x02242FE8 + ldr r0, [r0] + ldrsb r0, [r0, #0x16] + bx lr + .align 2, 0 +_0221ED24: .word 0x02242FE8 + + arm_func_start MOD13_0221ED28 +MOD13_0221ED28: ; 0x0221ED28 + ldr r0, _0221ED4C ; =0x02242FE8 + mov r3, #1 + ldr r2, [r0] + ldr ip, _0221ED50 ; =MOD13_0223C130 + strb r3, [r2, #0x19] + ldr r0, [r0] + ldr r1, _0221ED54 ; =MOD13_0221E914 + ldr r0, [r0, #0xc] + bx ip + .align 2, 0 +_0221ED4C: .word 0x02242FE8 +_0221ED50: .word MOD13_0223C130 +_0221ED54: .word MOD13_0221E914 + + arm_func_start MOD13_0221ED58 +MOD13_0221ED58: ; 0x0221ED58 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r2, _0221EE44 ; =0x0223EC7C + mov r4, r0 + mov r0, #0x1c + mov r1, #4 + ldrb r8, [r2, r4] + bl MOD13_0223AFE0 + ldr sb, _0221EE48 ; =0x02242FE8 + mvn r1, #1 + str r0, [sb] + strb r1, [r0, #0x16] + ldr r0, [sb] + cmp r8, #0 + strb r4, [r0, #0x17] + mov r7, #0 + ble _0221EDE8 + ldr r0, _0221EE4C ; =0x0223EC8C + add r6, r0, r4, lsl #1 + mov r5, r7 + mov r4, #1 + mvn sl, #0 +_0221EDAC: + ldrb r1, [r6] + mov r0, r5 + mov r2, r4 + bl MOD13_02239E0C + ldr r2, [sb] + mov r1, sl + str r0, [r2, r7, lsl #2] + ldr r0, [sb] + mov r2, r4 + ldr r0, [r0, r7, lsl #2] + bl MOD13_02239814 + add r7, r7, #1 + cmp r7, r8 + add r6, r6, #1 + blt _0221EDAC +_0221EDE8: + mov r1, #1 + mov r2, r1 + mov r0, #0 + bl MOD13_02239E0C + ldr r3, _0221EE48 ; =0x02242FE8 + mvn r1, #0 + ldr r4, [r3] + mov r2, #1 + str r0, [r4, #8] + ldr r0, [r3] + ldr r0, [r0, #8] + bl MOD13_02239814 + mov r0, #0xc0 + bl MOD13_0221EBD8 + mov r0, #0 + ldr r1, _0221EE50 ; =MOD13_0221EB64 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0221EE48 ; =0x02242FE8 + ldr r1, [r1] + str r0, [r1, #0xc] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0221EE44: .word 0x0223EC7C +_0221EE48: .word 0x02242FE8 +_0221EE4C: .word 0x0223EC8C +_0221EE50: .word MOD13_0221EB64 + + arm_func_start MOD13_0221EE54 +MOD13_0221EE54: ; 0x0221EE54 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0221EE94 ; =0x02242FEC + ldrb r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + mov r0, #1 + bl MOD13_0223A65C + ldr r0, _0221EE94 ; =0x02242FEC + mov r1, #0 + strb r1, [r0] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221EE94: .word 0x02242FEC + + arm_func_start MOD13_0221EE98 +MOD13_0221EE98: ; 0x0221EE98 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + ldr r3, _0221EF58 ; =0x02242FEC + mov r7, r0 + ldrb r0, [r3] + mov r6, r1 + mov r5, r2 + cmp r0, #0 + addne sp, sp, #0x14 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0221EF5C ; =0x0223F934 + ldr r1, _0221EF60 ; =0x020C91C4 + bl MOD13_0221F174 + ldr r3, _0221EF64 ; =0x01920000 + ldr r2, _0221EF68 ; =0x04001010 + mov r0, #1 + mov r1, #0 + str r3, [r2] + bl MOD13_0223A7F0 + ldr r1, _0221EF6C ; =0x0224307C + mov r4, r0 + ldr r0, [r1] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl MOD13_0222352C + mov r5, r0 + bl MOD13_0221EF88 + ldr r3, _0221EF70 ; =0x0223ECAC + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r5, [sp, #0xc] + mov r0, r4 + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + bl MOD13_0223A4F0 + mov r0, r4 + bl MOD13_0223A410 + mov r0, #1 + ldr r1, _0221EF58 ; =0x02242FEC + strb r0, [r1] + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0221EF58: .word 0x02242FEC +_0221EF5C: .word 0x0223F934 +_0221EF60: .word 0x020C91C4 +_0221EF64: .word 0x01920000 +_0221EF68: .word 0x04001010 +_0221EF6C: .word 0x0224307C +_0221EF70: .word 0x0223ECAC + + arm_func_start MOD13_0221EF74 +MOD13_0221EF74: ; 0x0221EF74 + ldr r0, _0221EF84 ; =0x02242FEC + mov r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_0221EF84: .word 0x02242FEC + + arm_func_start MOD13_0221EF88 +MOD13_0221EF88: ; 0x0221EF88 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02222F34 + ldr r1, _0221EFA4 ; =0x0223ECCC + ldr r0, [r1, r0, lsl #2] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221EFA4: .word 0x0223ECCC + + arm_func_start MOD13_0221EFA8 +MOD13_0221EFA8: ; 0x0221EFA8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r5, r0 + mov r0, #0 + mov r6, r1 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r1, _0221F05C ; =0x0224307C + mov r4, r0 + ldr r0, [r1] + mov r1, r6 + bl MOD13_02223568 + mov r6, r0 + bl MOD13_0221EF88 + ldr r3, _0221F060 ; =0x0223ECC4 + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r6, [sp, #0xc] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + mov r0, r4 + bl MOD13_0223A4F0 + bl MOD13_02222F34 + mov r6, r0 + bl MOD13_02222F34 + ldr r1, _0221F064 ; =0x00000209 + mov r3, r0, lsl #2 + str r1, [sp] + ldr r1, _0221F068 ; =0x0223ECE4 + ldr r2, _0221F06C ; =0x0223ECE6 + str r5, [sp, #4] + mov ip, r6, lsl #2 + ldrh r2, [r2, r3] + ldrh r1, [r1, ip] + mov r0, r4 + mov r3, #2 + bl MOD13_0223A634 + mov r0, r4 + bl MOD13_0223A410 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0221F05C: .word 0x0224307C +_0221F060: .word 0x0223ECC4 +_0221F064: .word 0x00000209 +_0221F068: .word 0x0223ECE4 +_0221F06C: .word 0x0223ECE6 + + arm_func_start MOD13_0221F070 +MOD13_0221F070: ; 0x0221F070 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r0 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r1, _0221F0E4 ; =0x0224307C + mov r5, r0 + ldr r0, [r1] + mov r1, r4 + bl MOD13_02223568 + mov r4, r0 + bl MOD13_0221EF88 + ldr r3, _0221F0E8 ; =0x0223ECBC + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + mov r0, r5 + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + bl MOD13_0223A4F0 + mov r0, r5 + bl MOD13_0223A410 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221F0E4: .word 0x0224307C +_0221F0E8: .word 0x0223ECBC + + arm_func_start MOD13_0221F0EC +MOD13_0221F0EC: ; 0x0221F0EC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F80 + ldr r0, [sp] + cmp r0, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl MOD13_0221ED58 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0221F124 +MOD13_0221F124: ; 0x0221F124 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r0, sp, #0 + mov r1, #0 + bl MOD13_02222F80 + ldr r0, [sp] + cmp r0, #1 + bne _0221F158 + mov r0, r4 + bl MOD13_02234DC0 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0221F158: + cmp r0, #2 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl MOD13_02234820 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0221F174 +MOD13_0221F174: ; 0x0221F174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r1 + bl MOD13_0221F1BC + add r1, sp, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, [sp] + mov r4, r0 + bl DC_FlushRange + ldr r2, [sp] + mov r0, r4 + mov r1, #0 + blx r5 + mov r0, r4 + bl MOD13_0223939C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_0221F1BC +MOD13_0221F1BC: ; 0x0221F1BC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0221F214 ; =0x02242FF0 + mov r1, r4 + mov r2, #0x3f + bl strncpy + ldrb r0, [r4, #5] + cmp r0, #0x78 + ldreq r0, _0221F214 ; =0x02242FF0 + ldmeqia sp!, {r4, pc} + bl MOD13_02222F34 + ldrb r1, [r4, #5] + cmp r1, #0x79 + bne _0221F200 + cmp r0, #0 + ldrne r0, _0221F214 ; =0x02242FF0 + ldmneia sp!, {r4, pc} +_0221F200: + ldr r1, _0221F218 ; =0x0223ECB4 + ldrb r1, [r1, r0] + ldr r0, _0221F214 ; =0x02242FF0 + strb r1, [r0, #5] + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F214: .word 0x02242FF0 +_0221F218: .word 0x0223ECB4 + + arm_func_start MOD13_0221F21C +MOD13_0221F21C: ; 0x0221F21C + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + ldr r4, _0221F258 ; =0x02243030 + mov r5, r6 +_0221F22C: + ldr r0, [r4] + ldr r0, [r0, r6, lsl #2] + cmp r0, #0 + beq _0221F248 + bl MOD13_02239AE8 + ldr r0, [r4] + str r5, [r0, r6, lsl #2] +_0221F248: + add r6, r6, #1 + cmp r6, #4 + blt _0221F22C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0221F258: .word 0x02243030 + + arm_func_start MOD13_0221F25C +MOD13_0221F25C: ; 0x0221F25C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov fp, r1 + str r2, [sp] + str r3, [sp, #4] + mov sb, #6 + bl MOD13_0221F21C + mov r8, #0 + ldr r4, _0221F344 ; =0x02243030 + mov r7, r8 + mov r6, #1 + mvn r5, #0 +_0221F290: + mov r0, r7 + mov r1, sb + mov r2, r6 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r5 + str r0, [r2, r8, lsl #2] + ldr r0, [r4] + mov r2, r6 + ldr r0, [r0, r8, lsl #2] + bl MOD13_02239814 + add r8, r8, #1 + cmp r8, #4 + add sb, sb, #1 + blt _0221F290 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp] + ldr r0, [r0] + mov r2, sl + ldr r0, [r0] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp] + ldr r0, [r0] + mov r2, fp + ldr r0, [r0, #4] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp, #4] + ldr r0, [r0] + mov r2, sl + ldr r0, [r0, #8] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp, #4] + ldr r0, [r0] + mov r2, fp + ldr r0, [r0, #0xc] + mvn r1, #0 + bl MOD13_02239888 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0221F344: .word 0x02243030 + + arm_func_start MOD13_0221F348 +MOD13_0221F348: ; 0x0221F348 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r4, r0 + mov fp, r1 + str r2, [sp] + mov sl, r3 + bl MOD13_0221F21C + ldr r0, _0221F3FC ; =0x0223ECFC + mov sb, #0 + add r8, r0, r4, lsl #1 + ldr r4, _0221F400 ; =0x02243030 + mov r7, sb + mov r6, #1 + mvn r5, #0 +_0221F380: + ldrb r1, [r8] + mov r0, r7 + mov r2, r6 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r5 + str r0, [r2, sb, lsl #2] + ldr r0, [r4] + mov r2, r6 + ldr r0, [r0, sb, lsl #2] + bl MOD13_02239814 + add sb, sb, #1 + cmp sb, #2 + add r8, r8, #1 + blt _0221F380 + ldr r0, _0221F400 ; =0x02243030 + mov r2, fp + ldr r0, [r0] + mov r3, sl + ldr r0, [r0] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F400 ; =0x02243030 + ldr r2, [sp] + ldr r0, [r0] + mov r3, sl + ldr r0, [r0, #4] + mvn r1, #0 + bl MOD13_02239888 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0221F3FC: .word 0x0223ECFC +_0221F400: .word 0x02243030 + + arm_func_start MOD13_0221F404 +MOD13_0221F404: ; 0x0221F404 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221F21C + ldr r0, _0221F420 ; =0x02243030 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F420: .word 0x02243030 + + arm_func_start MOD13_0221F424 +MOD13_0221F424: ; 0x0221F424 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x10 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _0221F448 ; =0x02243030 + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F448: .word 0x02243030 + + arm_func_start MOD13_0221F44C +MOD13_0221F44C: ; 0x0221F44C + stmdb sp!, {r4, lr} + ldr r1, _0221F488 ; =0x02243034 + mov r4, r0 + ldr r0, [r1] + mov r1, #0xc0 + bl DC_FlushRange + ldr r0, _0221F488 ; =0x02243034 + mov r1, #0 + ldr r0, [r0] + mov r2, #0xc0 + bl GX_LoadBG1Scr + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F488: .word 0x02243034 + + arm_func_start MOD13_0221F48C +MOD13_0221F48C: ; 0x0221F48C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + add r0, r0, #2 + bl MOD13_0221F4CC + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0221F4AC +MOD13_0221F4AC: ; 0x0221F4AC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + add r0, r0, #5 + bl MOD13_0221F4CC + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0221F4CC +MOD13_0221F4CC: ; 0x0221F4CC + stmdb sp!, {r4, lr} + ldr r1, _0221F51C ; =0x0223FB18 + ldr r0, [r1, r0, lsl #2] + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0221F520 ; =0x02243034 + mov r4, r0 + ldr r1, [r1] + mov r2, #0xc0 + bl MIi_CpuCopyFast + mov r0, r4 + bl MOD13_0223939C + mov r0, #1 + ldr r1, _0221F524 ; =MOD13_0221F44C + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F51C: .word 0x0223FB18 +_0221F520: .word 0x02243034 +_0221F524: .word MOD13_0221F44C + + arm_func_start MOD13_0221F528 +MOD13_0221F528: ; 0x0221F528 + ldr ip, _0221F534 ; =MOD13_0223AF90 + ldr r0, _0221F538 ; =0x02243034 + bx ip + .align 2, 0 +_0221F534: .word MOD13_0223AF90 +_0221F538: .word 0x02243034 + + arm_func_start MOD13_0221F53C +MOD13_0221F53C: ; 0x0221F53C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xc0 + mov r1, #4 + bl MOD13_0223B004 + ldr r2, _0221F5B0 ; =0x02243034 + ldr r1, _0221F5B4 ; =0x020C8E1C + str r0, [r2] + ldr r0, _0221F5B8 ; =0x0223FB68 + bl MOD13_0221F174 + bl MOD13_02222F1C + cmp r0, #0 + beq _0221F580 + cmp r0, #1 + beq _0221F598 + add sp, sp, #4 + ldmia sp!, {pc} +_0221F580: + ldr r0, _0221F5BC ; =0x0223FB18 + ldr r1, _0221F5C0 ; =0x020C915C + ldr r0, [r0] + bl MOD13_0221F174 + add sp, sp, #4 + ldmia sp!, {pc} +_0221F598: + ldr r0, _0221F5BC ; =0x0223FB18 + ldr r1, _0221F5C0 ; =0x020C915C + ldr r0, [r0, #4] + bl MOD13_0221F174 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F5B0: .word 0x02243034 +_0221F5B4: .word 0x020C8E1C +_0221F5B8: .word 0x0223FB68 +_0221F5BC: .word 0x0223FB18 +_0221F5C0: .word 0x020C915C + + arm_func_start MOD13_0221F5C4 +MOD13_0221F5C4: ; 0x0221F5C4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _0221F67C ; =0x04000208 + mov r4, #0 + ldrh r5, [r0] + strh r4, [r0] + bl WM_GetAllowedChannel + cmp r0, #0x8000 + beq _0221F5F0 + bl WM_GetLinkLevel + mov r4, r0 +_0221F5F0: + ldr r2, _0221F67C ; =0x04000208 + ldr r1, _0221F680 ; =0x02243038 + ldrh r0, [r2] + ldr r3, _0221F684 ; =0x0223ED08 + mov r0, #0 + strh r5, [r2] + ldr r2, [r1] + ldrsb r1, [r2, #8] + ldr r2, [r2] + add r1, r3, r1, lsl #2 + ldrb r1, [r4, r1] + bl MOD13_02239E8C + ldr r0, _0221F688 ; =0x0223ED04 + ldr r2, _0221F680 ; =0x02243038 + ldrh r3, [r0, #2] + ldr r1, [r2] + ldrh ip, [r0] + ldr lr, [r1] + ldr r0, _0221F68C ; =0x000001FF + ldr r4, [lr] + ldr r1, _0221F690 ; =0xFE00FF00 + and r3, r3, #0xff + and r1, r4, r1 + and r4, ip, r0 + orr r0, r1, r3 + orr r0, r0, r4, lsl #16 + str r0, [lr] + ldr r0, [r2] + ldr r1, [r0] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0x800 + strh r0, [r1, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221F67C: .word 0x04000208 +_0221F680: .word 0x02243038 +_0221F684: .word 0x0223ED08 +_0221F688: .word 0x0223ED04 +_0221F68C: .word 0x000001FF +_0221F690: .word 0xFE00FF00 + + arm_func_start MOD13_0221F694 +MOD13_0221F694: ; 0x0221F694 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0221F6DC ; =0x02243038 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, [r0, #4] + mov r0, #0 + bl MOD13_0223C104 + ldr r0, _0221F6DC ; =0x02243038 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223B974 + ldr r0, _0221F6DC ; =0x02243038 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F6DC: .word 0x02243038 + + arm_func_start MOD13_0221F6E0 +MOD13_0221F6E0: ; 0x0221F6E0 + stmdb sp!, {r4, lr} + ldr r1, _0221F7A0 ; =0x02243038 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #0xc + mov r1, #4 + bl MOD13_0223B004 + ldr r1, _0221F7A0 ; =0x02243038 + ldr r2, _0221F7A4 ; =0x0223ED08 + str r0, [r1] + strb r4, [r0, #8] + ldrb r1, [r2, r4, lsl #2] + mov r0, #0 + bl MOD13_02239E54 + ldr r3, _0221F7A0 ; =0x02243038 + ldr r2, _0221F7A8 ; =0x0223ED04 + ldr r4, [r3] + ldr r1, _0221F7AC ; =0xFE00FF00 + str r0, [r4] + ldr r4, [r3] + ldrh r0, [r2, #2] + ldr r4, [r4] + ldrh lr, [r2] + ldr ip, [r4] + and r2, r0, #0xff + and r1, ip, r1 + ldr r0, _0221F7B0 ; =0x000001FF + orr r1, r1, r2 + and r0, lr, r0 + orr r0, r1, r0, lsl #16 + str r0, [r4] + ldr r1, [r3] + mov r0, #0 + ldr lr, [r1] + ldr r1, _0221F7B4 ; =MOD13_0221F5C4 + ldrh ip, [lr, #4] + mov r2, r0 + mov r3, #0x78 + bic ip, ip, #0xc00 + orr ip, ip, #0x800 + strh ip, [lr, #4] + bl MOD13_0223C1C4 + ldr r1, _0221F7A0 ; =0x02243038 + ldr r1, [r1] + str r0, [r1, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F7A0: .word 0x02243038 +_0221F7A4: .word 0x0223ED08 +_0221F7A8: .word 0x0223ED04 +_0221F7AC: .word 0xFE00FF00 +_0221F7B0: .word 0x000001FF +_0221F7B4: .word MOD13_0221F5C4 + + arm_func_start MOD13_0221F7B8 +MOD13_0221F7B8: ; 0x0221F7B8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + mov r7, #0 + ldr r8, _0221F894 ; =0x0224303C + mov r5, r7 +_0221F7D4: + mov r6, r5 + mov r4, r7, lsl #4 +_0221F7DC: + ldr r0, [r8] + add r0, r4, r0 + ldr r0, [r0, r6, lsl #2] + bl MOD13_0223A978 + cmp r7, #0 + bne _0221F804 + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r0, [r0, #0x104] + bl MOD13_02239AE8 +_0221F804: + add r6, r6, #1 + cmp r6, #4 + blt _0221F7DC + add r7, r7, #1 + cmp r7, #3 + blt _0221F7D4 + ldr r4, _0221F894 ; =0x0224303C + mov r5, #0 +_0221F824: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xfc] + bl MOD13_02239AE8 + add r5, r5, #1 + cmp r5, #2 + blt _0221F824 + ldr r4, _0221F894 ; =0x0224303C + mov r5, #0 +_0221F848: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xec] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #4 + blt _0221F848 + ldr r4, _0221F894 ; =0x0224303C + mov r5, #0 +_0221F86C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x30] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #0x2f + blt _0221F86C + ldr r0, _0221F894 ; =0x0224303C + bl MOD13_0223AF90 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0221F894: .word 0x0224303C + + arm_func_start MOD13_0221F898 +MOD13_0221F898: ; 0x0221F898 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221F908 ; =0x0224303C + ldr r2, _0221F90C ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0x30] + mov r1, #0 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221F910 ; =MOD13_0221F7B8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F908: .word 0x0224303C +_0221F90C: .word 0x01FF0000 +_0221F910: .word MOD13_0221F7B8 + + arm_func_start MOD13_0221F914 +MOD13_0221F914: ; 0x0221F914 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221F984 ; =0x0224303C + ldr r2, _0221F988 ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0x60] + mov r1, #1 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221F98C ; =MOD13_0221F898 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F984: .word 0x0224303C +_0221F988: .word 0x01FF0000 +_0221F98C: .word MOD13_0221F898 + + arm_func_start MOD13_0221F990 +MOD13_0221F990: ; 0x0221F990 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221FA00 ; =0x0224303C + ldr r2, _0221FA04 ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0x90] + mov r1, #2 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221FA08 ; =MOD13_0221F914 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221FA00: .word 0x0224303C +_0221FA04: .word 0x01FF0000 +_0221FA08: .word MOD13_0221F914 + + arm_func_start MOD13_0221FA0C +MOD13_0221FA0C: ; 0x0221FA0C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221FA7C ; =0x0224303C + ldr r2, _0221FA80 ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0xc0] + mov r1, #3 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221FA84 ; =MOD13_0221F990 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221FA7C: .word 0x0224303C +_0221FA80: .word 0x01FF0000 +_0221FA84: .word MOD13_0221F990 + + arm_func_start MOD13_0221FA88 +MOD13_0221FA88: ; 0x0221FA88 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221FB08 ; =0x0224303C + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + ldr r0, [r0, #0xfc] + bl MOD13_02239ADC + ldr r3, [r0] + ldr r1, _0221FB0C ; =0x01FF0000 + ldr r2, _0221FB08 ; =0x0224303C + and r1, r3, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r0] + ldr r0, [r2] + and r1, r1, #0xff + str r1, [sp, #4] + add r2, r1, #0xc + str r2, [sp, #4] + ldrb r0, [r0, #0x11d] + mov r1, #4 + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221FB10 ; =MOD13_0221FA0C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221FB08: .word 0x0224303C +_0221FB0C: .word 0x01FF0000 +_0221FB10: .word MOD13_0221FA0C + + arm_func_start MOD13_0221FB14 +MOD13_0221FB14: ; 0x0221FB14 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _0221FF90 ; =0x0224303C + ldr r3, _0221FF94 ; =0x0223EF08 + ldr ip, [r2] + add r1, ip, #0x100 + ldrsb lr, [r1, #0x21] + add r1, r3, lr, lsl #2 + ldrsb r1, [r0, r1] + strb r1, [ip, #0x121] + ldr r1, [r2] + add r2, r1, #0x100 + ldrsb r2, [r2, #0x21] + cmp r2, #0x2e + bne _0221FB5C + cmp r0, #3 + streqb lr, [r1, #0x120] + beq _0221FF7C +_0221FB5C: + cmp r2, #0x33 + bne _0221FB7C + cmp r0, #1 + beq _0221FB74 + cmp r0, #3 + bne _0221FB7C +_0221FB74: + strb lr, [r1, #0x120] + b _0221FF7C +_0221FB7C: + cmp r2, #0x34 + bne _0221FBA0 + cmp r0, #1 + beq _0221FB94 + cmp r0, #3 + bne _0221FBA0 +_0221FB94: + cmp lr, #0x2e + strneb lr, [r1, #0x120] + b _0221FF7C +_0221FBA0: + mvn r0, #0 + cmp r2, r0 + bne _0221FBDC + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x23 + beq _0221FBC4 + cmp r0, #0x32 + bne _0221FBD0 +_0221FBC4: + mov r0, #0x23 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FBD0: + mov r0, #0x22 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FBDC: + mvn r0, #1 + cmp r2, r0 + bne _0221FCA4 + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x26 + bgt _0221FC38 + cmp r0, #0x26 + bge _0221FC74 + cmp r0, #5 + bgt _0221FC2C + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FC98 +_0221FC14: ; jump table + b _0221FC5C ; case 0 + b _0221FC68 ; case 1 + b _0221FC98 ; case 2 + b _0221FC74 ; case 3 + b _0221FC80 ; case 4 + b _0221FC8C ; case 5 +_0221FC2C: + cmp r0, #0x24 + beq _0221FC68 + b _0221FC98 +_0221FC38: + cmp r0, #0x28 + bgt _0221FC54 + cmp r0, #0x28 + bge _0221FC8C + cmp r0, #0x27 + beq _0221FC80 + b _0221FC98 +_0221FC54: + cmp r0, #0x31 + bne _0221FC98 +_0221FC5C: + mov r0, #0x31 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC68: + mov r0, #0x24 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC74: + mov r0, #0x26 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC80: + mov r0, #0x27 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC8C: + mov r0, #0x28 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC98: + mov r0, #0x25 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FCA4: + mvn r0, #2 + cmp r2, r0 + bne _0221FDA8 + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x23 + bgt _0221FD18 + cmp r0, #0x23 + bge _0221FD90 + cmp r0, #0xb + bgt _0221FD0C + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FD9C +_0221FCDC: ; jump table + b _0221FD9C ; case 0 + b _0221FD9C ; case 1 + b _0221FD9C ; case 2 + b _0221FD9C ; case 3 + b _0221FD9C ; case 4 + b _0221FD9C ; case 5 + b _0221FD60 ; case 6 + b _0221FD6C ; case 7 + b _0221FD9C ; case 8 + b _0221FD78 ; case 9 + b _0221FD84 ; case 10 + b _0221FD90 ; case 11 +_0221FD0C: + cmp r0, #0x22 + beq _0221FD90 + b _0221FD9C +_0221FD18: + cmp r0, #0x2a + bgt _0221FD34 + cmp r0, #0x2a + bge _0221FD6C + cmp r0, #0x29 + beq _0221FD60 + b _0221FD9C +_0221FD34: + cmp r0, #0x32 + bgt _0221FD9C + cmp r0, #0x2c + blt _0221FD9C + cmp r0, #0x2c + beq _0221FD78 + cmp r0, #0x2d + beq _0221FD84 + cmp r0, #0x32 + beq _0221FD90 + b _0221FD9C +_0221FD60: + mov r0, #0x29 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD6C: + mov r0, #0x2a + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD78: + mov r0, #0x2c + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD84: + mov r0, #0x2d + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD90: + mov r0, #0x2e + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD9C: + mov r0, #0x2b + strb r0, [r1, #0x121] + b _0221FF7C +_0221FDA8: + mvn r0, #3 + cmp r2, r0 + bne _0221FE70 + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x26 + bgt _0221FE04 + cmp r0, #0x26 + bge _0221FE40 + cmp r0, #5 + bgt _0221FDF8 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FE64 +_0221FDE0: ; jump table + b _0221FE28 ; case 0 + b _0221FE34 ; case 1 + b _0221FE64 ; case 2 + b _0221FE40 ; case 3 + b _0221FE4C ; case 4 + b _0221FE58 ; case 5 +_0221FDF8: + cmp r0, #0x24 + beq _0221FE34 + b _0221FE64 +_0221FE04: + cmp r0, #0x28 + bgt _0221FE20 + cmp r0, #0x28 + bge _0221FE58 + cmp r0, #0x27 + beq _0221FE4C + b _0221FE64 +_0221FE20: + cmp r0, #0x31 + bne _0221FE64 +_0221FE28: + mov r0, #0 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE34: + mov r0, #1 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE40: + mov r0, #3 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE4C: + mov r0, #4 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE58: + mov r0, #5 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE64: + mov r0, #2 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE70: + mvn r0, #4 + cmp r2, r0 + bne _0221FF7C + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x23 + bgt _0221FEE4 + cmp r0, #0x23 + bge _0221FF68 + cmp r0, #0xb + bgt _0221FED8 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FF74 +_0221FEA8: ; jump table + b _0221FF74 ; case 0 + b _0221FF74 ; case 1 + b _0221FF74 ; case 2 + b _0221FF74 ; case 3 + b _0221FF74 ; case 4 + b _0221FF74 ; case 5 + b _0221FF2C ; case 6 + b _0221FF38 ; case 7 + b _0221FF74 ; case 8 + b _0221FF44 ; case 9 + b _0221FF50 ; case 10 + b _0221FF5C ; case 11 +_0221FED8: + cmp r0, #0x22 + beq _0221FF5C + b _0221FF74 +_0221FEE4: + cmp r0, #0x2a + bgt _0221FF00 + cmp r0, #0x2a + bge _0221FF38 + cmp r0, #0x29 + beq _0221FF2C + b _0221FF74 +_0221FF00: + cmp r0, #0x32 + bgt _0221FF74 + cmp r0, #0x2c + blt _0221FF74 + cmp r0, #0x2c + beq _0221FF44 + cmp r0, #0x2d + beq _0221FF50 + cmp r0, #0x32 + beq _0221FF68 + b _0221FF74 +_0221FF2C: + mov r0, #6 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF38: + mov r0, #7 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF44: + mov r0, #9 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF50: + mov r0, #0xa + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF5C: + mov r0, #0xb + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF68: + mov r0, #0x32 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF74: + mov r0, #8 + strb r0, [r1, #0x121] +_0221FF7C: + bl MOD13_0221FF98 + mov r0, #8 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221FF90: .word 0x0224303C +_0221FF94: .word 0x0223EF08 + + arm_func_start MOD13_0221FF98 +MOD13_0221FF98: ; 0x0221FF98 + stmdb sp!, {r4, lr} + ldr r0, _02220068 ; =0x0224303C + ldr r1, [r0] + add r0, r1, #0x100 + ldrsb r0, [r0, #0x21] + sub r0, r0, #0x2f + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0221FFFC +_0221FFBC: ; jump table + b _0221FFD4 ; case 0 + b _0221FFDC ; case 1 + b _0221FFE4 ; case 2 + b _0221FFEC ; case 3 + b _0221FFF4 ; case 4 + b _0221FFF4 ; case 5 +_0221FFD4: + mov r4, #0x42 + b _02220000 +_0221FFDC: + mov r4, #0x41 + b _02220000 +_0221FFE4: + mov r4, #0x43 + b _02220000 +_0221FFEC: + mov r4, #0x41 + b _02220000 +_0221FFF4: + mov r4, #0x45 + b _02220000 +_0221FFFC: + mov r4, #0x40 +_02220000: + ldr r0, [r1, #0x114] + mov r1, #0 + bl MOD13_02239ADC + mov r2, r0 + mov r1, r4 + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _02220068 ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x114] + bl MOD13_02239814 + ldr r0, _02220068 ; =0x0224303C + ldr r2, _0222006C ; =0x0223EE34 + ldr r3, [r0] + mvn r1, #0 + add r0, r3, #0x100 + ldrsb ip, [r0, #0x21] + ldr r0, [r3, #0x114] + ldr r3, _02220070 ; =0x0223EE36 + mov ip, ip, lsl #2 + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_02239888 + ldmia sp!, {r4, pc} + .align 2, 0 +_02220068: .word 0x0224303C +_0222006C: .word 0x0223EE34 +_02220070: .word 0x0223EE36 + + arm_func_start MOD13_02220074 +MOD13_02220074: ; 0x02220074 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + addlt sp, sp, #4 + ldmltia sp!, {pc} + cmp r0, #0x2f + bge _022200CC + ldr r2, _02220144 ; =0x0224303C + ldr r3, _02220148 ; =0x0223ED10 + ldr r2, [r2] + add sp, sp, #4 + add r0, r2, r0, lsl #2 + ldr ip, [r0, #0x30] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r2, [ip, #4] + ldrb r0, [r3, r1] + bic r1, r2, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_022200CC: + sub r3, r0, #0x2f + cmp r3, #4 + bge _02220114 + ldr r0, _02220144 ; =0x0224303C + ldr r2, _02220148 ; =0x0223ED10 + ldr r0, [r0] + add sp, sp, #4 + add r0, r0, r3, lsl #2 + ldr ip, [r0, #0xec] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r3, [ip, #4] + ldrb r0, [r2, r1] + bic r1, r3, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_02220114: + ldr r2, _02220144 ; =0x0224303C + ldr r3, _0222014C ; =0x0223ED14 + ldr r2, [r2] + sub r0, r0, #0x33 + add r0, r2, r0, lsl #2 + ldrb r3, [r3, r1] + ldr r0, [r0, #0xfc] + mvn r1, #0 + mov r2, #0 + bl MOD13_02239994 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02220144: .word 0x0224303C +_02220148: .word 0x0223ED10 +_0222014C: .word 0x0223ED14 + + arm_func_start MOD13_02220150 +MOD13_02220150: ; 0x02220150 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r1, _022201D4 ; =0x0224303C + mov r6, #0 + ldr r1, [r1] + mov r8, r0 + mov r5, r6 + mov r7, r6 + mov r4, r6 + strb r8, [r1, #0x11d] + ldr sb, _022201D8 ; =0x0223ED78 +_0222017C: + add r0, sb, r4, lsl #2 + ldrh r2, [r0, #2] + mov r0, r8 + mov r1, r7 + bl MOD13_022201DC + add r7, r7, #1 + cmp r7, #4 + add r4, r4, #0xc + blt _0222017C + cmp r8, #2 + moveq r6, #1 + beq _022201B4 + cmp r8, #1 + moveq r5, #1 +_022201B4: + mov r1, r6 + mov r0, #0x2f + bl MOD13_02220074 + mov r1, r5 + mov r0, #0x30 + bl MOD13_02220074 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022201D4: .word 0x0224303C +_022201D8: .word 0x0223ED78 + + arm_func_start MOD13_022201DC +MOD13_022201DC: ; 0x022201DC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r4, _02220460 ; =0x0223ED38 + ldr lr, _02220464 ; =0x0223ED40 + ldrb r5, [r4, #4] + ldrb sb, [r4] + ldrb r8, [r4, #1] + strb r5, [sp, #0xc] + mov r5, r1 + mov r1, #0xc + mul r1, r5, r1 + ldrb r7, [r4, #2] + ldrb r6, [r4, #3] + strb sb, [sp, #8] + str r1, [sp, #4] + ldrb ip, [lr] + ldrb sl, [lr, #1] + ldrb r4, [lr, #2] + ldrb fp, [lr, #3] + ldrb sb, [lr, #4] + ldr r3, _02220468 ; =0x0223ED30 + strb r8, [sp, #9] + strb r7, [sp, #0xa] + strb r6, [sp, #0xb] + add r1, sp, #8 + ldrb lr, [r3] + ldrb r8, [r3, #1] + ldrb r7, [r3, #2] + ldrb r6, [r3, #3] + ldrb r3, [r3, #4] + ldrb r1, [r1, r5] + strb sl, [sp, #0xe] + strb r4, [sp, #0xf] + strb sb, [sp, #0x11] + strb ip, [sp, #0xd] + mov r4, r2 + ldr sl, [sp, #4] + strb fp, [sp, #0x10] + strb lr, [sp, #0x12] + strb r8, [sp, #0x13] + strb r7, [sp, #0x14] + strb r6, [sp, #0x15] + strb r3, [sp, #0x16] + cmp r1, #0 + mov sb, #0 + ble _0222030C + add r1, sp, #8 + ldr r2, _0222046C ; =0x0224303C + ldr r3, _02220470 ; =0x0223ED78 + ldr fp, _02220474 ; =0xFE00FF00 + and r8, r4, #0xff + add r7, r1, r5 +_022202AC: + ldr r1, [r2] + mov r6, sl, lsl #2 + add r1, r1, sl, lsl #2 + ldr lr, [r1, #0x30] + ldr r1, _02220478 ; =0xC1FFFCFF + ldr ip, [lr] + add sb, sb, #1 + and r1, ip, r1 + str r1, [lr] + ldr r1, [r2] + ldrh ip, [r3, r6] + add r1, r1, sl, lsl #2 + ldr r6, [r1, #0x30] + ldr r1, _0222047C ; =0x000001FF + add sl, sl, #1 + and r1, ip, r1 + ldr ip, [r6] + and ip, ip, fp + orr ip, ip, r8 + orr r1, ip, r1, lsl #16 + str r1, [r6] + ldrb r1, [r7] + cmp sb, r1 + blt _022202AC +_0222030C: + cmp r5, #4 + bge _0222034C + ldr r1, _0222046C ; =0x0224303C + mov r2, #2 + ldr r6, [r1] + ldr r1, [sp, #4] + str r2, [sp] + add r0, r6, r0, lsl #4 + ldr r3, _02220470 ; =0x0223ED78 + mov r1, r1, lsl #2 + add r2, r6, r5, lsl #2 + ldrh r1, [r3, r1] + ldr r3, [r2, #0x104] + ldr r0, [r0, r5, lsl #2] + mov r2, r4 + bl MOD13_0223A440 +_0222034C: + add r0, r5, #3 + mov r1, #4 + bl FX_ModS32 + add r8, sp, #0xd + ldrb r1, [r8, r5] + mov r2, #0 + cmp r1, #0 + ble _022203E0 + ldr r3, _02220480 ; =0x0223ED58 + mov r1, r0, lsl #2 + ldrh r3, [r3, r1] + ldr r0, _0222047C ; =0x000001FF + and r7, r4, #0xff + and r0, r3, r0 + mov r6, r0, lsl #0x10 + add r3, r8, r5 + ldr sl, _0222046C ; =0x0224303C + ldr r8, _02220478 ; =0xC1FFFCFF + ldr sb, _02220474 ; =0xFE00FF00 +_02220398: + ldr r0, [sl] + add r2, r2, #1 + add r0, r1, r0 + ldr fp, [r0, #0xec] + ldr r0, [fp] + and r0, r0, r8 + str r0, [fp] + ldr r0, [sl] + add r0, r1, r0 + ldr r0, [r0, #0xec] + ldr fp, [r0] + and fp, fp, sb + orr fp, fp, r7 + orr fp, r6, fp + str fp, [r0] + ldrb r0, [r3] + cmp r2, r0 + blt _02220398 +_022203E0: + add r1, sp, #0x12 + ldrb r0, [r1, r5] + mov r8, #0 + cmp r0, #0 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r1, r5 + ldr sl, _0222046C ; =0x0224303C + ldr r5, _02220484 ; =0x0223ED50 + mov r6, r8 + mvn r7, #0 +_0222040C: + ldr r0, [sl] + mov r1, r7 + add r0, r0, r8, lsl #2 + ldr r0, [r0, #0xfc] + mov r2, r6 + mov r3, r6 + bl MOD13_02239A1C + ldr r0, [sl] + mov r1, r8, lsl #2 + add r0, r0, r8, lsl #2 + ldrh r2, [r5, r1] + ldr r0, [r0, #0xfc] + mov r1, r7 + mov r3, r4 + bl MOD13_02239888 + ldrb r0, [sb] + add r8, r8, #1 + cmp r8, r0 + blt _0222040C + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02220460: .word 0x0223ED38 +_02220464: .word 0x0223ED40 +_02220468: .word 0x0223ED30 +_0222046C: .word 0x0224303C +_02220470: .word 0x0223ED78 +_02220474: .word 0xFE00FF00 +_02220478: .word 0xC1FFFCFF +_0222047C: .word 0x000001FF +_02220480: .word 0x0223ED58 +_02220484: .word 0x0223ED50 + + arm_func_start MOD13_02220488 +MOD13_02220488: ; 0x02220488 + stmdb sp!, {r4, lr} + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204A4 + mov r0, #0 + bl MOD13_0221FB14 +_022204A4: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204BC + mov r0, #1 + bl MOD13_0221FB14 +_022204BC: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204D4 + mov r0, #2 + bl MOD13_0221FB14 +_022204D4: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204EC + mov r0, #3 + bl MOD13_0221FB14 +_022204EC: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02220604 + ldr r2, _022206A4 ; =0x0224303C + ldr r0, [r2] + add r1, r0, #0x100 + ldrsb r4, [r1, #0x21] + cmp r4, #0x2f + bge _0222055C + ldrb r1, [r0, #0x124] + cmp r1, #0 + bne _0222052C + mov r0, #9 + bl MOD13_0223424C + ldmia sp!, {r4, pc} +_0222052C: + ldrb r3, [r0, #0x11d] + ldr r1, _022206A8 ; =0x0223FB7C + ldr r1, [r1, r3, lsl #2] + ldrb r1, [r1, r4] + strb r1, [r0, #0x11c] + ldr r0, [r2] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + ldmneia sp!, {r4, pc} + mov r0, #0 + bl MOD13_02220150 + ldmia sp!, {r4, pc} +_0222055C: + sub r1, r4, #0x2f + cmp r1, #4 + bge _022205F4 + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _022205C4 +_02220574: ; jump table + b _02220584 ; case 0 + b _0222058C ; case 1 + b _02220594 ; case 2 + b _022205AC ; case 3 +_02220584: + bl MOD13_02220944 + ldmia sp!, {r4, pc} +_0222058C: + bl MOD13_0222090C + ldmia sp!, {r4, pc} +_02220594: + ldrb r1, [r0, #0x124] + cmp r1, #0 + bne _022205C4 + mov r0, #9 + bl MOD13_0223424C + ldmia sp!, {r4, pc} +_022205AC: + ldrb r1, [r0, #0x123] + cmp r1, #0 + bne _022205C4 + mov r0, #9 + bl MOD13_0223424C + ldmia sp!, {r4, pc} +_022205C4: + ldrb r0, [r0, #0x11d] + cmp r0, #1 + bne _022205D8 + mov r0, #0 + bl MOD13_02220150 +_022205D8: + ldr r1, _022206AC ; =0x0223ED48 + sub r2, r4, #0x2f + ldr r0, _022206A4 ; =0x0224303C + ldrb r1, [r1, r2] + ldr r0, [r0] + strb r1, [r0, #0x11c] + ldmia sp!, {r4, pc} +_022205F4: + ldr r1, _022206B0 ; =0x0223ED1C + sub r2, r4, #0x33 + ldrb r1, [r1, r2] + strb r1, [r0, #0x11c] +_02220604: + mov r0, #2 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222065C + ldr r0, _022206A4 ; =0x0224303C + ldr r1, [r0] + ldrb r0, [r1, #0x123] + cmp r0, #0 + bne _02220650 + ldrb r0, [r1, #0x125] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022206A4 ; =0x0224303C + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x125] + ldmia sp!, {r4, pc} +_02220650: + mov r0, #0x80 + strb r0, [r1, #0x11c] + b _02220678 +_0222065C: + mov r0, #2 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _022206A4 ; =0x0224303C + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0, #0x125] +_02220678: + mov r0, #0x400 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222068C + bl MOD13_02220944 +_0222068C: + mov r0, #0x800 + bl MOD13_0223B3D4 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD13_0222090C + ldmia sp!, {r4, pc} + .align 2, 0 +_022206A4: .word 0x0224303C +_022206A8: .word 0x0223FB7C +_022206AC: .word 0x0223ED48 +_022206B0: .word 0x0223ED1C + + arm_func_start MOD13_022206B4 +MOD13_022206B4: ; 0x022206B4 + stmdb sp!, {r4, lr} + ldr r1, _02220704 ; =0x0224303C + mov r4, r0 + ldr r1, [r1] + add r1, r1, #0x100 + ldrsb r1, [r1, #0x1f] + cmp r4, r1 + ldmeqia sp!, {r4, pc} + mov r1, #1 + bl MOD13_02220074 + ldr r0, _02220704 ; =0x0224303C + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1f] + bl MOD13_02220074 + ldr r0, _02220704 ; =0x0224303C + ldr r0, [r0] + strb r4, [r0, #0x11f] + ldmia sp!, {r4, pc} + .align 2, 0 +_02220704: .word 0x0224303C + + arm_func_start MOD13_02220708 +MOD13_02220708: ; 0x02220708 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _022208EC ; =0x0223F75C + bl MOD13_0223B320 + cmp r0, #0 + beq _022208CC + ldr r7, _022208F0 ; =0x0223ED78 + mov r4, #0 + ldr r6, _022208F4 ; =0x0223ED2C + add r5, sp, #0 +_02220730: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B320 + cmp r0, #0 + beq _02220774 + ldr r0, _022208F8 ; =0x0224303C + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r4 + bne _022208CC + mov r0, r4 + bl MOD13_022206B4 + b _022208D4 +_02220774: + add r4, r4, #1 + cmp r4, #0x2f + add r7, r7, #4 + blt _02220730 + ldr r7, _022208FC ; =0x0223ED70 + ldr r6, _02220900 ; =0x0223ED60 + mov r5, #2 + add r4, sp, #0 +_02220794: + mov r0, r6 + mov r1, r7 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _02220854 + ldr r1, _022208F8 ; =0x0224303C + add r0, r5, #0x2f + ldr r1, [r1] + add r1, r1, #0x100 + ldrsb r1, [r1, #0x1e] + cmp r1, r0 + bne _022208CC + bl MOD13_022206B4 + cmp r5, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _022208F8 ; =0x0224303C + ldr r2, [r0] + ldrb r1, [r2, #0x122] + add r1, r1, #1 + strb r1, [r2, #0x122] + ldr r2, [r0] + ldrb r1, [r2, #0x122] + cmp r1, #0x28 + addlo sp, sp, #0xc + ldmloia sp!, {r4, r5, r6, r7, pc} + ldrb r1, [r2, #0x123] + cmp r1, #0 + bne _02220834 + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022208F8 ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220834: + mov r1, #0x80 + strb r1, [r2, #0x11c] + ldr r1, [r0] + add sp, sp, #0xc + ldrb r0, [r1, #0x122] + sub r0, r0, #7 + strb r0, [r1, #0x122] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220854: + add r5, r5, #1 + cmp r5, #4 + add r7, r7, #4 + add r6, r6, #4 + blt _02220794 + ldr r7, _02220904 ; =0x0223ED50 + mov r6, #0 + ldr r5, _02220908 ; =0x0223ED28 + add r4, sp, #0 +_02220878: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _022208BC + ldr r1, _022208F8 ; =0x0224303C + add r0, r6, #0x33 + ldr r1, [r1] + add r1, r1, #0x100 + ldrsb r1, [r1, #0x1e] + cmp r1, r0 + bne _022208CC + bl MOD13_022206B4 + b _022208D4 +_022208BC: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02220878 +_022208CC: + mvn r0, #0 + bl MOD13_022206B4 +_022208D4: + ldr r0, _022208F8 ; =0x0224303C + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x122] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022208EC: .word 0x0223F75C +_022208F0: .word 0x0223ED78 +_022208F4: .word 0x0223ED2C +_022208F8: .word 0x0224303C +_022208FC: .word 0x0223ED70 +_02220900: .word 0x0223ED60 +_02220904: .word 0x0223ED50 +_02220908: .word 0x0223ED28 + + arm_func_start MOD13_0222090C +MOD13_0222090C: ; 0x0222090C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02220940 ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + movne r0, #1 + moveq r0, #0 + bl MOD13_02220150 + mov r0, #1 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02220940: .word 0x0224303C + + arm_func_start MOD13_02220944 +MOD13_02220944: ; 0x02220944 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02220978 ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x11d] + cmp r0, #2 + moveq r0, #0 + movne r0, #2 + bl MOD13_02220150 + mov r0, #1 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02220978: .word 0x0224303C + + arm_func_start MOD13_0222097C +MOD13_0222097C: ; 0x0222097C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r1, _02220C28 ; =0x0224303C + ldr r0, _02220C2C ; =0x0223F75C + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x11c] + bl MOD13_0223B1DC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r7, _02220C30 ; =0x0223ED78 + mov r4, #0 + ldr r6, _02220C34 ; =0x0223ED2C + add r5, sp, #0 +_022209B8: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220A38 + ldr r1, _02220C28 ; =0x0224303C + ldr r3, [r1] + add r0, r3, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r4 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldrb r2, [r3, #0x11d] + ldr r0, _02220C38 ; =0x0223FB7C + ldr r0, [r0, r2, lsl #2] + ldrb r0, [r0, r4] + strb r0, [r3, #0x11c] + ldr r0, [r1] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + bne _02220A20 + mov r0, #0 + bl MOD13_02220150 +_02220A20: + ldr r0, _02220C28 ; =0x0224303C + ldr r0, [r0] + strb r4, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220A38: + add r4, r4, #1 + cmp r4, #0x2f + add r7, r7, #4 + blt _022209B8 + ldr r7, _02220C3C ; =0x0223ED70 + ldr r6, _02220C40 ; =0x0223ED60 + mov r4, #2 + add r5, sp, #0 +_02220A58: + mov r0, r6 + mov r1, r7 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220AD8 + ldr r1, _02220C28 ; =0x0224303C + add r2, r4, #0x2f + ldr r3, [r1] + add r0, r3, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220C44 ; =0x0223ED48 + ldrb r0, [r0, r4] + strb r0, [r3, #0x11c] + ldr r0, [r1] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + bne _02220ABC + mov r0, #0 + bl MOD13_02220150 +_02220ABC: + ldr r0, _02220C28 ; =0x0224303C + add r1, r4, #0x2f + ldr r0, [r0] + strb r1, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220AD8: + add r4, r4, #1 + cmp r4, #4 + add r7, r7, #4 + add r6, r6, #4 + blt _02220A58 + ldr r7, _02220C48 ; =0x0223ED50 + mov r4, #0 + ldr r6, _02220C4C ; =0x0223ED28 + add r5, sp, #0 +_02220AFC: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220B5C + ldr r1, _02220C28 ; =0x0224303C + add r2, r4, #0x33 + ldr r3, [r1] + add r0, r3, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220C50 ; =0x0223ED1C + ldrb r0, [r0, r4] + strb r0, [r3, #0x11c] + ldr r0, [r1] + strb r2, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220B5C: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _02220AFC + ldr r0, _02220C54 ; =0x0223ED58 + ldr r1, _02220C58 ; =0x0223ED68 + add r2, sp, #0 + bl MOD13_0223AB74 + add r0, sp, #0 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220BC8 + ldr r0, _02220C28 ; =0x0224303C + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, #0x2f + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD13_02220944 + ldr r0, _02220C28 ; =0x0224303C + mov r1, #0x2f + ldr r0, [r0] + strb r1, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220BC8: + ldr r0, _02220C5C ; =0x0223ED5C + ldr r1, _02220C60 ; =0x0223ED6C + add r2, sp, #0 + bl MOD13_0223AB74 + add r0, sp, #0 + bl MOD13_0223B1DC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220C28 ; =0x0224303C + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, #0x30 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD13_0222090C + ldr r0, _02220C28 ; =0x0224303C + mov r1, #0x30 + ldr r0, [r0] + strb r1, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02220C28: .word 0x0224303C +_02220C2C: .word 0x0223F75C +_02220C30: .word 0x0223ED78 +_02220C34: .word 0x0223ED2C +_02220C38: .word 0x0223FB7C +_02220C3C: .word 0x0223ED70 +_02220C40: .word 0x0223ED60 +_02220C44: .word 0x0223ED48 +_02220C48: .word 0x0223ED50 +_02220C4C: .word 0x0223ED28 +_02220C50: .word 0x0223ED1C +_02220C54: .word 0x0223ED58 +_02220C58: .word 0x0223ED68 +_02220C5C: .word 0x0223ED5C +_02220C60: .word 0x0223ED6C + + arm_func_start MOD13_02220C64 +MOD13_02220C64: ; 0x02220C64 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _02220E28 ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220E2C ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + ldr r7, _02220E30 ; =0x0223ED78 + strb r1, [r0, #0x11e] + mov r4, #0 + ldr r6, _02220E34 ; =0x0223ED2C + add r5, sp, #0 +_02220CA0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02220D00 + ldr r0, _02220E2C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x124] + cmp r0, #0 + bne _02220CE4 + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220CE4: + mov r0, #0 + bl MOD13_0223424C + ldr r0, _02220E2C ; =0x0224303C + add sp, sp, #0xc + ldr r0, [r0] + strb r4, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220D00: + add r4, r4, #1 + cmp r4, #0x2f + add r7, r7, #4 + blt _02220CA0 + ldr r7, _02220E38 ; =0x0223ED68 + ldr r6, _02220E3C ; =0x0223ED58 + mov r4, #0 + add r5, sp, #0 +_02220D20: + mov r0, r6 + mov r1, r7 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02220DAC + cmp r4, #3 + bne _02220D5C + ldr r0, _02220E2C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x123] + cmp r0, #0 + beq _02220D78 +_02220D5C: + cmp r4, #2 + bne _02220D88 + ldr r0, _02220E2C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x124] + cmp r0, #0 + bne _02220D88 +_02220D78: + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220D88: + ldr r0, _02220E40 ; =0x0223FB94 + ldr r0, [r0, r4, lsl #2] + bl MOD13_0223424C + ldr r0, _02220E2C ; =0x0224303C + add r1, r4, #0x2f + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220DAC: + add r4, r4, #1 + cmp r4, #4 + add r7, r7, #4 + add r6, r6, #4 + blt _02220D20 + ldr r7, _02220E44 ; =0x0223ED50 + mov r6, #0 + ldr r5, _02220E48 ; =0x0223ED28 + add r4, sp, #0 +_02220DD0: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02220E10 + mov r0, #0 + bl MOD13_0223424C + ldr r0, _02220E2C ; =0x0224303C + add r1, r6, #0x33 + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220E10: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02220DD0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02220E28: .word 0x0223F75C +_02220E2C: .word 0x0224303C +_02220E30: .word 0x0223ED78 +_02220E34: .word 0x0223ED2C +_02220E38: .word 0x0223ED68 +_02220E3C: .word 0x0223ED58 +_02220E40: .word 0x0223FB94 +_02220E44: .word 0x0223ED50 +_02220E48: .word 0x0223ED28 + + arm_func_start MOD13_02220E4C +MOD13_02220E4C: ; 0x02220E4C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02220C64 + bl MOD13_0222097C + bl MOD13_02220708 + bl MOD13_02220488 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02220EFC ; =0x0224303C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0xfc] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, _02220F00 ; =0x0223ED50 + ldr r2, [sp, #4] + ldrh r1, [r0, #2] + sub r2, r2, #0xc + str r2, [sp, #4] + cmp r2, r1 + ble _02220ECC + ldr r0, _02220EFC ; =0x0224303C + mov r1, #4 + ldr r0, [r0] + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02220ECC: + ldr r0, _02220EFC ; =0x0224303C + mov r2, r1 + ldr r0, [r0] + mov r1, #4 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + bl MOD13_0221FF98 + ldr r1, _02220F04 ; =MOD13_02220E4C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02220EFC: .word 0x0224303C +_02220F00: .word 0x0223ED50 +_02220F04: .word MOD13_02220E4C + + arm_func_start MOD13_02220F08 +MOD13_02220F08: ; 0x02220F08 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02220FA8 ; =0x0224303C + ldr r2, _02220FAC ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _02220FB0 ; =0x01FF0000 + ldr ip, [lr, #0xc0] + ldrh r3, [r2, #0x92] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _02220F6C + ldrb r0, [lr, #0x11d] + mov r1, #3 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02220F6C: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #3 + bl MOD13_022201DC + ldr r0, _02220FA8 ; =0x0224303C + mov r1, #4 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _02220FB4 ; =0x02220E6C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02220FA8: .word 0x0224303C +_02220FAC: .word 0x0223ED78 +_02220FB0: .word 0x01FF0000 +_02220FB4: .word 0x02220E6C + + arm_func_start MOD13_02220FB8 +MOD13_02220FB8: ; 0x02220FB8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02221058 ; =0x0224303C + ldr r2, _0222105C ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _02221060 ; =0x01FF0000 + ldr ip, [lr, #0x90] + ldrh r3, [r2, #0x62] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _0222101C + ldrb r0, [lr, #0x11d] + mov r1, #2 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222101C: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #2 + bl MOD13_022201DC + ldr r0, _02221058 ; =0x0224303C + mov r1, #3 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _02221064 ; =MOD13_02220F08 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221058: .word 0x0224303C +_0222105C: .word 0x0223ED78 +_02221060: .word 0x01FF0000 +_02221064: .word MOD13_02220F08 + + arm_func_start MOD13_02221068 +MOD13_02221068: ; 0x02221068 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02221108 ; =0x0224303C + ldr r2, _0222110C ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _02221110 ; =0x01FF0000 + ldr ip, [lr, #0x60] + ldrh r3, [r2, #0x32] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _022210CC + ldrb r0, [lr, #0x11d] + mov r1, #1 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022210CC: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #1 + bl MOD13_022201DC + ldr r0, _02221108 ; =0x0224303C + mov r1, #2 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _02221114 ; =MOD13_02220FB8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221108: .word 0x0224303C +_0222110C: .word 0x0223ED78 +_02221110: .word 0x01FF0000 +_02221114: .word MOD13_02220FB8 + + arm_func_start MOD13_02221118 +MOD13_02221118: ; 0x02221118 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022211B8 ; =0x0224303C + ldr r2, _022211BC ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _022211C0 ; =0x01FF0000 + ldr ip, [lr, #0x30] + ldrh r3, [r2, #2] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _0222117C + ldrb r0, [lr, #0x11d] + mov r1, #0 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222117C: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #0 + bl MOD13_022201DC + ldr r0, _022211B8 ; =0x0224303C + mov r1, #1 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _022211C4 ; =MOD13_02221068 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022211B8: .word 0x0224303C +_022211BC: .word 0x0223ED78 +_022211C0: .word 0x01FF0000 +_022211C4: .word MOD13_02221068 + + arm_func_start MOD13_022211C8 +MOD13_022211C8: ; 0x022211C8 + ldr r0, _022211E0 ; =0x0224303C + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_022211E0: .word 0x0224303C + + arm_func_start MOD13_022211E4 +MOD13_022211E4: ; 0x022211E4 + ldr r1, _022211F4 ; =0x0224303C + ldr r1, [r1] + strb r0, [r1, #0x124] + bx lr + .align 2, 0 +_022211F4: .word 0x0224303C + + arm_func_start MOD13_022211F8 +MOD13_022211F8: ; 0x022211F8 + ldr r1, _02221208 ; =0x0224303C + ldr r1, [r1] + strb r0, [r1, #0x123] + bx lr + .align 2, 0 +_02221208: .word 0x0224303C + + arm_func_start MOD13_0222120C +MOD13_0222120C: ; 0x0222120C + ldr r0, _0222121C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x11c] + bx lr + .align 2, 0 +_0222121C: .word 0x0224303C + + arm_func_start MOD13_02221220 +MOD13_02221220: ; 0x02221220 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02221254 ; =0x0224303C + ldr r0, [r0] + ldr r0, [r0, #0x114] + bl MOD13_02239AE8 + ldr r0, _02221254 ; =0x0224303C + ldr r1, _02221258 ; =MOD13_0221FA88 + ldr r0, [r0] + ldr r0, [r0, #0x118] + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02221254: .word 0x0224303C +_02221258: .word MOD13_0221FA88 + + arm_func_start MOD13_0222125C +MOD13_0222125C: ; 0x0222125C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + add r2, sp, #0x34 + mov r1, #0 + strh r1, [r2] + strh r1, [r2, #2] + strh r1, [r2, #4] + strh r1, [r2, #6] + ldr r0, _022215EC ; =0x0223ED2C + mov r1, #4 + ldrh r3, [r0] + ldrh r2, [r0, #2] + mov r0, #0x128 + strh r3, [sp, #0x38] + strh r2, [sp, #0x3a] + bl MOD13_0223AFE0 + ldr r8, _022215F0 ; =0x0224303C + mov r6, #0 + mov r1, #0xff + str r0, [r8] + strb r1, [r0, #0x11c] + ldr r0, [r8] + mov r1, #1 + strb r6, [r0, #0x121] + ldr r0, [r8] + ldr r7, _022215F4 ; =0xC1FFFCFF + strb r1, [r0, #0x123] + ldr r0, [r8] + mov r5, r6 + strb r1, [r0, #0x124] + mov r4, #0x34 +_022212D8: + mov r0, r5 + mov r1, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r1, r1, r6, lsl #2 + str r0, [r1, #0x30] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x30] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x30] + add r6, r6, #1 + ldrh r0, [r1, #4] + cmp r6, #0x2f + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _022212D8 + ldr r6, _022215F8 ; =0x0223ED20 + mov r5, #0 + ldr r8, _022215F0 ; =0x0224303C + mov r4, r5 + ldr r7, _022215F4 ; =0xC1FFFCFF +_02221348: + ldrb r1, [r6] + mov r0, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r6, r6, #1 + add r1, r1, r5, lsl #2 + str r0, [r1, #0xec] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0xec] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0xec] + add r5, r5, #1 + ldrh r0, [r1, #4] + cmp r5, #4 + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _02221348 + ldr sl, _022215FC ; =0x0223ED18 + mov sb, #0 + ldr r4, _022215F0 ; =0x0224303C + mov fp, sb + str sb, [sp, #0x1c] + mov r8, #1 + mvn r7, #0 + mov r6, #0x200 + mov r5, #3 +_022213CC: + ldrb r1, [sl] + mov r0, fp + mov r2, r8 + bl MOD13_02239E0C + ldr r2, [r4] + ldr r3, [sp, #0x1c] + add r2, r2, sb, lsl #2 + str r0, [r2, #0xfc] + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0xfc] + mov r2, r6 + bl MOD13_02239A1C + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0xfc] + mov r2, r5 + bl MOD13_02239814 + add sb, sb, #1 + add sl, sl, #1 + cmp sb, #2 + blt _022213CC + ldr r1, _02221600 ; =0x0223ED24 + mov r7, #0 + ldrh r0, [r1, #2] + ldr fp, _02221604 ; =0x0223FB88 + ldr r4, _022215F0 ; =0x0224303C + str r0, [sp, #0x10] + ldrh r0, [r1] + strh r7, [sp, #0x42] + str r7, [sp, #0x2c] + str r0, [sp, #0x14] + mov r0, #1 + str r7, [sp, #0x24] + str r7, [sp, #0x28] + str r7, [sp, #0x20] + mov r6, #2 + mov r5, #0x480 + str r0, [sp, #0x30] +_02221470: + ldr sb, [sp, #0x20] + mov r0, sb + str r0, [sp, #0x18] +_0222147C: + add r0, sp, #0x3c + str r0, [sp] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + mov r3, r0 + bl MOD13_0223A9A4 + ldr r1, [r4] + ldr sl, [sp, #0x18] + add r1, r1, r7, lsl #4 + str r0, [r1, sb, lsl #2] + ldr r0, [sp, #0x28] + strh r0, [sp, #0x34] + mov r8, r0 +_022214B8: + ldr r1, [fp, r7, lsl #2] + mov r0, sl, lsl #1 + ldrh r2, [r1, r0] + ldrh r1, [sp, #0x3a] + mov r0, r7, lsl #4 + strh r2, [sp, #0x40] + str r1, [sp] + str r6, [sp, #4] + add r2, r0, sb, lsl #2 + str r5, [sp, #8] + add r0, sp, #0x40 + str r0, [sp, #0xc] + ldr r0, [r4] + ldrh r1, [sp, #0x34] + ldr r0, [r0, r2] + ldrh r2, [sp, #0x36] + ldrh r3, [sp, #0x38] + bl MOD13_0223A4F0 + ldrh r0, [sp, #0x34] + add r8, r8, #1 + cmp r8, #0xc + add r0, r0, #0x12 + add sl, sl, #1 + strh r0, [sp, #0x34] + blt _022214B8 + cmp r7, #0 + bne _02221540 + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x30] + bl MOD13_02239B74 + ldr r1, [r4] + add r1, r1, sb, lsl #2 + str r0, [r1, #0x104] +_02221540: + ldr r0, [sp, #0x18] + add sb, sb, #1 + add r0, r0, #0xc + str r0, [sp, #0x18] + cmp sb, #4 + blt _0222147C + add r7, r7, #1 + cmp r7, #3 + blt _02221470 + mov r0, #0 + mov r1, #0x40 + mov r2, #1 + bl MOD13_02239E0C + ldr r3, _022215F0 ; =0x0224303C + mvn r1, #0 + ldr r4, [r3] + mov r2, #0x200 + str r0, [r4, #0x114] + ldr r0, [r3] + mov r3, #0 + ldr r0, [r0, #0x114] + bl MOD13_02239A1C + ldr r0, _022215F0 ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x114] + bl MOD13_02239814 + mov r0, #0 + ldr r1, _02221608 ; =MOD13_02221118 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r3, _022215F0 ; =0x0224303C + mov r1, #0 + ldr r4, [r3] + mov r2, #0xc0 + str r0, [r4, #0x118] + ldr r0, [r3] + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022215EC: .word 0x0223ED2C +_022215F0: .word 0x0224303C +_022215F4: .word 0xC1FFFCFF +_022215F8: .word 0x0223ED20 +_022215FC: .word 0x0223ED18 +_02221600: .word 0x0223ED24 +_02221604: .word 0x0223FB88 +_02221608: .word MOD13_02221118 + + arm_func_start MOD13_0222160C +MOD13_0222160C: ; 0x0222160C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + mov r5, #0 + ldr r4, _022216CC ; =0x02243040 +_02221628: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x48] + bl MOD13_02239AE8 + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + bl MOD13_0223A978 + add r5, r5, #1 + cmp r5, #4 + blt _02221628 + ldr r4, _022216CC ; =0x02243040 + mov r5, #0 +_02221658: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x40] + bl MOD13_02239AE8 + add r5, r5, #1 + cmp r5, #2 + blt _02221658 + ldr r4, _022216CC ; =0x02243040 + mov r5, #0 +_0222167C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x38] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #2 + blt _0222167C + ldr r4, _022216CC ; =0x02243040 + mov r5, #0 +_022216A0: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #0xa + blt _022216A0 + ldr r0, _022216CC ; =0x02243040 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022216CC: .word 0x02243040 + + arm_func_start MOD13_022216D0 +MOD13_022216D0: ; 0x022216D0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0222173C ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _02221740 ; =0x01FF0000 + ldr r3, [r0, #0x10] + mov r0, #0 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _02221744 ; =MOD13_0222160C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222173C: .word 0x02243040 +_02221740: .word 0x01FF0000 +_02221744: .word MOD13_0222160C + + arm_func_start MOD13_02221748 +MOD13_02221748: ; 0x02221748 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022217B4 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _022217B8 ; =0x01FF0000 + ldr r3, [r0, #0x1c] + mov r0, #1 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _022217BC ; =MOD13_022216D0 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022217B4: .word 0x02243040 +_022217B8: .word 0x01FF0000 +_022217BC: .word MOD13_022216D0 + + arm_func_start MOD13_022217C0 +MOD13_022217C0: ; 0x022217C0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0222182C ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _02221830 ; =0x01FF0000 + ldr r3, [r0, #0x28] + mov r0, #2 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _02221834 ; =MOD13_02221748 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222182C: .word 0x02243040 +_02221830: .word 0x01FF0000 +_02221834: .word MOD13_02221748 + + arm_func_start MOD13_02221838 +MOD13_02221838: ; 0x02221838 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022218A4 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _022218A8 ; =0x01FF0000 + ldr r3, [r0, #0x34] + mov r0, #3 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _022218AC ; =MOD13_022217C0 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022218A4: .word 0x02243040 +_022218A8: .word 0x01FF0000 +_022218AC: .word MOD13_022217C0 + + arm_func_start MOD13_022218B0 +MOD13_022218B0: ; 0x022218B0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02221924 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + ldr r0, [r0, #0x40] + bl MOD13_02239ADC + ldr r2, [r0] + ldr r1, _02221928 ; =0x01FF0000 + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r0] + mov r0, #4 + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0222192C ; =MOD13_02221838 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221924: .word 0x02243040 +_02221928: .word 0x01FF0000 +_0222192C: .word MOD13_02221838 + + arm_func_start MOD13_02221930 +MOD13_02221930: ; 0x02221930 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _022219FC ; =0x02243040 + ldr r2, _02221A00 ; =0x0223F0BC + ldr r3, [r1] + ldrsb ip, [r3, #0x63] + add r2, r2, ip, lsl #2 + ldrsb r2, [r0, r2] + strb r2, [r3, #0x63] + ldr r1, [r1] + ldrsb r2, [r1, #0x63] + cmp r2, #0xd + bne _0222197C + cmp r0, #1 + beq _02221974 + cmp r0, #3 + bne _0222197C +_02221974: + strb ip, [r1, #0x64] + b _022219E8 +_0222197C: + mvn r0, #0 + cmp r2, r0 + bne _022219B4 + ldrsb r0, [r1, #0x64] + cmp r0, #1 + beq _0222199C + cmp r0, #0xa + bne _022219A8 +_0222199C: + mov r0, #0xa + strb r0, [r1, #0x63] + b _022219E8 +_022219A8: + mov r0, #0xb + strb r0, [r1, #0x63] + b _022219E8 +_022219B4: + mvn r0, #1 + cmp r2, r0 + bne _022219E8 + ldrsb r0, [r1, #0x64] + cmp r0, #1 + beq _022219D4 + cmp r0, #0xa + bne _022219E0 +_022219D4: + mov r0, #1 + strb r0, [r1, #0x63] + b _022219E8 +_022219E0: + mov r0, #2 + strb r0, [r1, #0x63] +_022219E8: + bl MOD13_02221A04 + mov r0, #8 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022219FC: .word 0x02243040 +_02221A00: .word 0x0223F0BC + + arm_func_start MOD13_02221A04 +MOD13_02221A04: ; 0x02221A04 + stmdb sp!, {r4, lr} + ldr r0, _02221A84 ; =0x02243040 + ldr r1, [r0] + ldrsb r0, [r1, #0x63] + cmp r0, #0xb + movle r4, #0x44 + ldr r0, [r1, #0x58] + movgt r4, #0x45 + mov r1, #0 + bl MOD13_02239ADC + mov r2, r0 + mov r1, r4 + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _02221A84 ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x58] + bl MOD13_02239814 + ldr r0, _02221A84 ; =0x02243040 + ldr r2, _02221A88 ; =0x0223F084 + ldr r0, [r0] + ldr r3, _02221A8C ; =0x0223F086 + ldrsb ip, [r0, #0x63] + ldr r0, [r0, #0x58] + mvn r1, #0 + mov ip, ip, lsl #2 + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_02239888 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221A84: .word 0x02243040 +_02221A88: .word 0x0223F084 +_02221A8C: .word 0x0223F086 + + arm_func_start MOD13_02221A90 +MOD13_02221A90: ; 0x02221A90 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + addlt sp, sp, #4 + ldmltia sp!, {pc} + cmp r0, #0xa + bge _02221AE8 + ldr r2, _02221B60 ; =0x02243040 + ldr r3, _02221B64 ; =0x0223EFE8 + ldr r2, [r2] + add sp, sp, #4 + add r0, r2, r0, lsl #2 + ldr ip, [r0, #0x10] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r2, [ip, #4] + ldrb r0, [r3, r1] + bic r1, r2, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_02221AE8: + sub r3, r0, #0xa + cmp r3, #2 + bge _02221B30 + ldr r0, _02221B60 ; =0x02243040 + ldr r2, _02221B64 ; =0x0223EFE8 + ldr r0, [r0] + add sp, sp, #4 + add r0, r0, r3, lsl #2 + ldr ip, [r0, #0x38] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r3, [ip, #4] + ldrb r0, [r2, r1] + bic r1, r3, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_02221B30: + ldr r2, _02221B60 ; =0x02243040 + ldr r3, _02221B68 ; =0x0223EFDC + ldr r2, [r2] + sub r0, r0, #0xc + add r0, r2, r0, lsl #2 + ldrb r3, [r3, r1] + ldr r0, [r0, #0x40] + mvn r1, #0 + mov r2, #0 + bl MOD13_02239994 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02221B60: .word 0x02243040 +_02221B64: .word 0x0223EFE8 +_02221B68: .word 0x0223EFDC + + arm_func_start MOD13_02221B6C +MOD13_02221B6C: ; 0x02221B6C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r3, _02221DD8 ; =0x0223F00C + ldr sb, _02221DDC ; =0x0223F014 + ldrb r5, [r3, #3] + ldrb r8, [r3] + ldrb r7, [r3, #1] + strb r5, [sp, #0xb] + mov r5, r0 + mov r0, #3 + mul r0, r5, r0 + ldrb r6, [r3, #2] + ldrb ip, [r3, #4] + ldr r2, _02221DE0 ; =0x0223F004 + strb r8, [sp, #8] + strb r7, [sp, #9] + strb r6, [sp, #0xa] + strb ip, [sp, #0xc] + ldrb r4, [sb] + ldrb r3, [sb, #1] + ldrb fp, [sb, #2] + ldrb sl, [sb, #3] + ldrb sb, [sb, #4] + ldrb lr, [r2] + ldrb r8, [r2, #1] + ldrb r7, [r2, #2] + ldrb r6, [r2, #3] + ldrb r2, [r2, #4] + strb r4, [sp, #0xd] + add ip, sp, #8 + str r0, [sp, #4] + ldrb r0, [ip, r5] + strb r3, [sp, #0xe] + strb r2, [sp, #0x16] + mov r4, r1 + ldr r3, [sp, #4] + strb fp, [sp, #0xf] + strb sl, [sp, #0x10] + strb sb, [sp, #0x11] + strb lr, [sp, #0x12] + strb r8, [sp, #0x13] + strb r7, [sp, #0x14] + strb r6, [sp, #0x15] + cmp r0, #0 + mov r2, #0 + ble _02221C98 + and r1, r4, #0xff + add r0, ip, r5 + ldr r6, _02221DE4 ; =0x02243040 + ldr r7, _02221DE8 ; =0x0223F05C + ldr fp, _02221DEC ; =0xC1FFFCFF + ldr ip, _02221DF0 ; =0x000001FF + ldr lr, _02221DF4 ; =0xFE00FF00 +_02221C40: + ldr r8, [r6] + mov sb, r3, lsl #2 + add r8, r8, r3, lsl #2 + ldr r8, [r8, #0x10] + add r2, r2, #1 + ldr sl, [r8] + and sl, sl, fp + str sl, [r8] + ldrh r8, [r7, sb] + ldr sb, [r6] + add sb, sb, r3, lsl #2 + ldr sb, [sb, #0x10] + and r8, r8, ip + ldr sl, [sb] + add r3, r3, #1 + and sl, sl, lr + orr sl, sl, r1 + orr r8, sl, r8, lsl #16 + str r8, [sb] + ldrb r8, [r0] + cmp r2, r8 + blt _02221C40 +_02221C98: + cmp r5, #4 + bge _02221CD4 + ldr r0, _02221DE4 ; =0x02243040 + mov r2, #2 + ldr r3, [r0] + ldr r0, [sp, #4] + str r2, [sp] + ldr r1, _02221DE8 ; =0x0223F05C + mov r0, r0, lsl #2 + ldrh r1, [r1, r0] + add r2, r3, r5, lsl #2 + ldr r0, [r3, r5, lsl #2] + ldr r3, [r2, #0x48] + mov r2, r4 + bl MOD13_0223A440 +_02221CD4: + add r3, sp, #0xd + ldrb r1, [r3, r5] + mov r0, #0 + cmp r1, #0 + ble _02221D58 + and r2, r4, #0xff + add r1, r3, r5 + ldr r8, _02221DE4 ; =0x02243040 + ldr sb, _02221DF8 ; =0x0223F024 + ldr r3, _02221DEC ; =0xC1FFFCFF + ldr r6, _02221DF0 ; =0x000001FF + ldr r7, _02221DF4 ; =0xFE00FF00 +_02221D04: + ldr sl, [r8] + mov fp, r0, lsl #2 + add sl, sl, r0, lsl #2 + ldr sl, [sl, #0x38] + ldr ip, [sl] + and ip, ip, r3 + str ip, [sl] + ldr ip, [r8] + ldrh sl, [sb, fp] + add fp, ip, r0, lsl #2 + ldr fp, [fp, #0x38] + and sl, sl, r6 + ldr ip, [fp] + add r0, r0, #1 + and ip, ip, r7 + orr ip, ip, r2 + orr sl, ip, sl, lsl #16 + str sl, [fp] + ldrb sl, [r1] + cmp r0, sl + blt _02221D04 +_02221D58: + add r1, sp, #0x12 + ldrb r0, [r1, r5] + mov r8, #0 + cmp r0, #0 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r1, r5 + ldr sl, _02221DE4 ; =0x02243040 + ldr r5, _02221DFC ; =0x0223F02C + mov r6, r8 + mvn r7, #0 +_02221D84: + ldr r0, [sl] + mov r1, r7 + add r0, r0, r8, lsl #2 + ldr r0, [r0, #0x40] + mov r2, r6 + mov r3, r6 + bl MOD13_02239A1C + ldr r0, [sl] + mov r1, r8, lsl #2 + add r0, r0, r8, lsl #2 + ldrh r2, [r5, r1] + ldr r0, [r0, #0x40] + mov r1, r7 + mov r3, r4 + bl MOD13_02239888 + ldrb r0, [sb] + add r8, r8, #1 + cmp r8, r0 + blt _02221D84 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02221DD8: .word 0x0223F00C +_02221DDC: .word 0x0223F014 +_02221DE0: .word 0x0223F004 +_02221DE4: .word 0x02243040 +_02221DE8: .word 0x0223F05C +_02221DEC: .word 0xC1FFFCFF +_02221DF0: .word 0x000001FF +_02221DF4: .word 0xFE00FF00 +_02221DF8: .word 0x0223F024 +_02221DFC: .word 0x0223F02C + + arm_func_start MOD13_02221E00 +MOD13_02221E00: ; 0x02221E00 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E20 + mov r0, #0 + bl MOD13_02221930 +_02221E20: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E38 + mov r0, #1 + bl MOD13_02221930 +_02221E38: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E50 + mov r0, #2 + bl MOD13_02221930 +_02221E50: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E68 + mov r0, #3 + bl MOD13_02221930 +_02221E68: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02221F28 + ldr r0, _02221FB0 ; =0x02243040 + ldr r0, [r0] + ldrsb r2, [r0, #0x63] + cmp r2, #0xa + bge _02221EB8 + ldrb r1, [r0, #0x67] + cmp r1, #0 + ldrne r1, _02221FB4 ; =0x0223F034 + addne sp, sp, #4 + ldrneb r1, [r1, r2] + strneb r1, [r0, #0x60] + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} +_02221EB8: + sub r1, r2, #0xa + cmp r1, #2 + bge _02221F18 + cmp r1, #0 + bne _02221ED8 + ldrb r1, [r0, #0x66] + cmp r1, #0 + beq _02221EF0 +_02221ED8: + sub r1, r2, #0xa + cmp r1, #1 + bne _02221F00 + ldrb r1, [r0, #0x68] + cmp r1, #0 + bne _02221F00 +_02221EF0: + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} +_02221F00: + ldr r1, _02221FB8 ; =0x0223EFF0 + sub r2, r2, #0xa + ldrb r1, [r1, r2] + add sp, sp, #4 + strb r1, [r0, #0x60] + ldmia sp!, {pc} +_02221F18: + ldr r1, _02221FBC ; =0x0223EFEC + sub r2, r2, #0xc + ldrb r1, [r1, r2] + strb r1, [r0, #0x60] +_02221F28: + mov r0, #2 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221F8C + ldr r0, _02221FB0 ; =0x02243040 + ldr r1, [r0] + ldrb r0, [r1, #0x66] + cmp r0, #0 + bne _02221F7C + ldrb r0, [r1, #0x69] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02221FB0 ; =0x02243040 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x69] + ldmia sp!, {pc} +_02221F7C: + mov r0, #0x10 + strb r0, [r1, #0x60] + add sp, sp, #4 + ldmia sp!, {pc} +_02221F8C: + mov r0, #2 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02221FB0 ; =0x02243040 + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0, #0x69] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02221FB0: .word 0x02243040 +_02221FB4: .word 0x0223F034 +_02221FB8: .word 0x0223EFF0 +_02221FBC: .word 0x0223EFEC + + arm_func_start MOD13_02221FC0 +MOD13_02221FC0: ; 0x02221FC0 + stmdb sp!, {r4, lr} + ldr r1, _02222008 ; =0x02243040 + mov r4, r0 + ldr r1, [r1] + ldrsb r1, [r1, #0x62] + cmp r4, r1 + ldmeqia sp!, {r4, pc} + mov r1, #1 + bl MOD13_02221A90 + ldr r0, _02222008 ; =0x02243040 + mov r1, #0 + ldr r0, [r0] + ldrsb r0, [r0, #0x62] + bl MOD13_02221A90 + ldr r0, _02222008 ; =0x02243040 + ldr r0, [r0] + strb r4, [r0, #0x62] + ldmia sp!, {r4, pc} + .align 2, 0 +_02222008: .word 0x02243040 + + arm_func_start MOD13_0222200C +MOD13_0222200C: ; 0x0222200C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _022221DC ; =0x0223F75C + bl MOD13_0223B320 + cmp r0, #0 + beq _022221BC + ldr r6, _022221E0 ; =0x0223F05C + mov r7, #0 + ldr r5, _022221E4 ; =0x0223EFF4 + add r4, sp, #0 +_02222034: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _02222074 + ldr r0, _022221E8 ; =0x02243040 + ldr r0, [r0] + ldrsb r0, [r0, #0x61] + cmp r0, r7 + bne _022221BC + mov r0, r7 + bl MOD13_02221FC0 + b _022221C4 +_02222074: + add r7, r7, #1 + cmp r7, #0xa + add r6, r6, #4 + blt _02222034 + ldr r7, _022221EC ; =0x0223F024 + mov r6, #0 + ldr r5, _022221F0 ; =0x0223EFFC + add r4, sp, #0 +_02222094: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _0222214C + ldr r1, _022221E8 ; =0x02243040 + add r0, r6, #0xa + ldr r1, [r1] + ldrsb r1, [r1, #0x61] + cmp r1, r0 + bne _022221BC + bl MOD13_02221FC0 + cmp r6, #0 + bne _022221C4 + ldr r0, _022221E8 ; =0x02243040 + ldr r2, [r0] + ldrb r1, [r2, #0x65] + add r1, r1, #1 + strb r1, [r2, #0x65] + ldr r2, [r0] + ldrb r1, [r2, #0x65] + cmp r1, #0x28 + addlo sp, sp, #0xc + ldmloia sp!, {r4, r5, r6, r7, pc} + ldrb r1, [r2, #0x66] + cmp r1, #0 + bne _0222212C + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022221E8 ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_0222212C: + mov r1, #0x10 + strb r1, [r2, #0x60] + ldr r1, [r0] + add sp, sp, #0xc + ldrb r0, [r1, #0x65] + sub r0, r0, #7 + strb r0, [r1, #0x65] + ldmia sp!, {r4, r5, r6, r7, pc} +_0222214C: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02222094 + ldr r7, _022221F4 ; =0x0223F02C + mov r6, #0 + ldr r5, _022221F8 ; =0x0223F000 + add r4, sp, #0 +_0222216C: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _022221AC + ldr r1, _022221E8 ; =0x02243040 + add r0, r6, #0xc + ldr r1, [r1] + ldrsb r1, [r1, #0x61] + cmp r1, r0 + bne _022221BC + bl MOD13_02221FC0 + b _022221C4 +_022221AC: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _0222216C +_022221BC: + mvn r0, #0 + bl MOD13_02221FC0 +_022221C4: + ldr r0, _022221E8 ; =0x02243040 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x65] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022221DC: .word 0x0223F75C +_022221E0: .word 0x0223F05C +_022221E4: .word 0x0223EFF4 +_022221E8: .word 0x02243040 +_022221EC: .word 0x0223F024 +_022221F0: .word 0x0223EFFC +_022221F4: .word 0x0223F02C +_022221F8: .word 0x0223F000 + + arm_func_start MOD13_022221FC +MOD13_022221FC: ; 0x022221FC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r1, _022223A0 ; =0x02243040 + ldr r0, _022223A4 ; =0x0223F75C + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x60] + bl MOD13_0223B1DC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r7, _022223A8 ; =0x0223F05C + mov r4, #0 + ldr r6, _022223AC ; =0x0223EFF4 + add r5, sp, #0 +_02222238: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02222290 + ldr r0, _022223A0 ; =0x02243040 + ldr r2, [r0] + ldrsb r1, [r2, #0x61] + cmp r1, r4 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _022223B0 ; =0x0223F034 + ldrb r1, [r1, r4] + strb r1, [r2, #0x60] + ldr r0, [r0] + strb r4, [r0, #0x63] + bl MOD13_02221A04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02222290: + add r4, r4, #1 + cmp r4, #0xa + add r7, r7, #4 + blt _02222238 + ldr r7, _022223B4 ; =0x0223F024 + mov r4, #0 + ldr r6, _022223B8 ; =0x0223EFFC + add r5, sp, #0 +_022222B0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _0222230C + ldr r0, _022223A0 ; =0x02243040 + add r2, r4, #0xa + ldr r3, [r0] + ldrsb r1, [r3, #0x61] + cmp r1, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _022223BC ; =0x0223EFF0 + ldrb r1, [r1, r4] + strb r1, [r3, #0x60] + ldr r0, [r0] + strb r2, [r0, #0x63] + bl MOD13_02221A04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_0222230C: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _022222B0 + ldr r7, _022223C0 ; =0x0223F02C + mov r4, #0 + ldr r6, _022223C4 ; =0x0223F000 + add r5, sp, #0 +_0222232C: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02222388 + ldr r0, _022223A0 ; =0x02243040 + add r2, r4, #0xc + ldr r3, [r0] + ldrsb r1, [r3, #0x61] + cmp r1, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _022223C8 ; =0x0223EFEC + ldrb r1, [r1, r4] + strb r1, [r3, #0x60] + ldr r0, [r0] + strb r2, [r0, #0x63] + bl MOD13_02221A04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02222388: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _0222232C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022223A0: .word 0x02243040 +_022223A4: .word 0x0223F75C +_022223A8: .word 0x0223F05C +_022223AC: .word 0x0223EFF4 +_022223B0: .word 0x0223F034 +_022223B4: .word 0x0223F024 +_022223B8: .word 0x0223EFFC +_022223BC: .word 0x0223EFF0 +_022223C0: .word 0x0223F02C +_022223C4: .word 0x0223F000 +_022223C8: .word 0x0223EFEC + + arm_func_start MOD13_022223CC +MOD13_022223CC: ; 0x022223CC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _02222588 ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0222258C ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + ldr r7, _02222590 ; =0x0223F05C + strb r1, [r0, #0x61] + mov r4, #0 + ldr r6, _02222594 ; =0x0223EFF4 + add r5, sp, #0 +_02222408: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02222468 + ldr r0, _0222258C ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x67] + cmp r0, #0 + bne _0222244C + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_0222244C: + mov r0, #0 + bl MOD13_0223424C + ldr r0, _0222258C ; =0x02243040 + add sp, sp, #0xc + ldr r0, [r0] + strb r4, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_02222468: + add r4, r4, #1 + cmp r4, #0xa + add r7, r7, #4 + blt _02222408 + ldr r7, _02222598 ; =0x0223F024 + mov r4, #0 + ldr r6, _0222259C ; =0x0223EFFC + add r5, sp, #0 +_02222488: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02222510 + cmp r4, #0 + bne _022224C4 + ldr r0, _0222258C ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x66] + cmp r0, #0 + beq _022224E0 +_022224C4: + cmp r4, #1 + bne _022224F0 + ldr r0, _0222258C ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x68] + cmp r0, #0 + bne _022224F0 +_022224E0: + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_022224F0: + mov r0, #0 + bl MOD13_0223424C + ldr r0, _0222258C ; =0x02243040 + add r1, r4, #0xa + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_02222510: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _02222488 + ldr r7, _022225A0 ; =0x0223F02C + mov r6, #0 + ldr r5, _022225A4 ; =0x0223F000 + add r4, sp, #0 +_02222530: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02222570 + mov r0, #0 + bl MOD13_0223424C + ldr r0, _0222258C ; =0x02243040 + add r1, r6, #0xc + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_02222570: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02222530 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02222588: .word 0x0223F75C +_0222258C: .word 0x02243040 +_02222590: .word 0x0223F05C +_02222594: .word 0x0223EFF4 +_02222598: .word 0x0223F024 +_0222259C: .word 0x0223EFFC +_022225A0: .word 0x0223F02C +_022225A4: .word 0x0223F000 + + arm_func_start MOD13_022225A8 +MOD13_022225A8: ; 0x022225A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022223CC + bl MOD13_022221FC + bl MOD13_0222200C + bl MOD13_02221E00 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02222640 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0x40] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, _02222644 ; =0x0223F02C + ldr r1, [sp, #4] + ldrh r0, [r0, #2] + sub r1, r1, #0xc + str r1, [sp, #4] + cmp r1, r0 + ble _0222261C + mov r0, #4 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222261C: + mov r1, r0 + mov r0, #4 + bl MOD13_02221B6C + bl MOD13_02221A04 + ldr r1, _02222648 ; =MOD13_022225A8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222640: .word 0x02243040 +_02222644: .word 0x0223F02C +_02222648: .word MOD13_022225A8 + + arm_func_start MOD13_0222264C +MOD13_0222264C: ; 0x0222264C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022226D8 ; =0x02243040 + ldr r2, _022226DC ; =0x0223F05C + ldr r3, [r1] + ldr r1, _022226E0 ; =0x01FF0000 + ldr ip, [r3, #0x34] + ldrh r2, [r2, #0x26] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _022226AC + mov r0, #3 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022226AC: + mov r1, r2 + mov r0, #3 + bl MOD13_02221B6C + mov r0, #4 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _022226E4 ; =0x022225C8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022226D8: .word 0x02243040 +_022226DC: .word 0x0223F05C +_022226E0: .word 0x01FF0000 +_022226E4: .word 0x022225C8 + + arm_func_start MOD13_022226E8 +MOD13_022226E8: ; 0x022226E8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02222774 ; =0x02243040 + ldr r2, _02222778 ; =0x0223F05C + ldr r3, [r1] + ldr r1, _0222277C ; =0x01FF0000 + ldr ip, [r3, #0x28] + ldrh r2, [r2, #0x1a] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _02222748 + mov r0, #2 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02222748: + mov r1, r2 + mov r0, #2 + bl MOD13_02221B6C + mov r0, #3 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _02222780 ; =MOD13_0222264C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222774: .word 0x02243040 +_02222778: .word 0x0223F05C +_0222277C: .word 0x01FF0000 +_02222780: .word MOD13_0222264C + + arm_func_start MOD13_02222784 +MOD13_02222784: ; 0x02222784 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02222810 ; =0x02243040 + ldr r2, _02222814 ; =0x0223F05C + ldr r3, [r1] + ldr r1, _02222818 ; =0x01FF0000 + ldr ip, [r3, #0x1c] + ldrh r2, [r2, #0xe] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _022227E4 + mov r0, #1 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022227E4: + mov r1, r2 + mov r0, #1 + bl MOD13_02221B6C + mov r0, #2 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _0222281C ; =MOD13_022226E8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222810: .word 0x02243040 +_02222814: .word 0x0223F05C +_02222818: .word 0x01FF0000 +_0222281C: .word MOD13_022226E8 + + arm_func_start MOD13_02222820 +MOD13_02222820: ; 0x02222820 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022228AC ; =0x02243040 + ldr r2, _022228B0 ; =0x0223F05C + ldr r3, [r1] + ldr r1, _022228B4 ; =0x01FF0000 + ldr ip, [r3, #0x10] + ldrh r2, [r2, #2] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _02222880 + mov r0, #0 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02222880: + mov r1, r2 + mov r0, #0 + bl MOD13_02221B6C + mov r0, #1 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _022228B8 ; =MOD13_02222784 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022228AC: .word 0x02243040 +_022228B0: .word 0x0223F05C +_022228B4: .word 0x01FF0000 +_022228B8: .word MOD13_02222784 + + arm_func_start MOD13_022228BC +MOD13_022228BC: ; 0x022228BC + ldr r0, _022228D4 ; =0x02243040 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_022228D4: .word 0x02243040 + + arm_func_start MOD13_022228D8 +MOD13_022228D8: ; 0x022228D8 + ldr r1, _022228E8 ; =0x02243040 + ldr r1, [r1] + strb r0, [r1, #0x68] + bx lr + .align 2, 0 +_022228E8: .word 0x02243040 + + arm_func_start MOD13_022228EC +MOD13_022228EC: ; 0x022228EC + ldr r1, _022228FC ; =0x02243040 + ldr r1, [r1] + strb r0, [r1, #0x67] + bx lr + .align 2, 0 +_022228FC: .word 0x02243040 + + arm_func_start MOD13_02222900 +MOD13_02222900: ; 0x02222900 + ldr r1, _02222910 ; =0x02243040 + ldr r1, [r1] + strb r0, [r1, #0x66] + bx lr + .align 2, 0 +_02222910: .word 0x02243040 + + arm_func_start MOD13_02222914 +MOD13_02222914: ; 0x02222914 + ldr r0, _02222924 ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x60] + bx lr + .align 2, 0 +_02222924: .word 0x02243040 + + arm_func_start MOD13_02222928 +MOD13_02222928: ; 0x02222928 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222295C ; =0x02243040 + ldr r0, [r0] + ldr r0, [r0, #0x58] + bl MOD13_02239AE8 + ldr r0, _0222295C ; =0x02243040 + ldr r1, _02222960 ; =MOD13_022218B0 + ldr r0, [r0] + ldr r0, [r0, #0x5c] + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222295C: .word 0x02243040 +_02222960: .word MOD13_022218B0 + + arm_func_start MOD13_02222964 +MOD13_02222964: ; 0x02222964 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x3c + ldr r1, _02222CCC ; =0x0223F01C + ldr r0, _02222CD0 ; =0x0223EFF4 + ldrh r2, [r1, #4] + ldrh r4, [r1, #6] + ldrh r6, [r1] + ldrh r5, [r1, #2] + ldrh r3, [r0] + strh r2, [sp, #0x30] + ldrh r2, [r0, #2] + strh r4, [sp, #0x32] + mov r0, #0x6c + mov r1, #4 + strh r6, [sp, #0x2c] + strh r5, [sp, #0x2e] + strh r3, [sp, #0x30] + strh r2, [sp, #0x32] + bl MOD13_0223AFE0 + ldr r8, _02222CD4 ; =0x02243040 + mov r1, #0x1f + str r0, [r8] + strb r1, [r0, #0x60] + ldr r0, [r8] + mov r6, #0 + strb r6, [r0, #0x63] + ldr r0, [r8] + mov r1, #1 + strb r1, [r0, #0x66] + ldr r0, [r8] + strb r1, [r0, #0x67] + ldr r0, [r8] + strb r1, [r0, #0x68] + mov r5, r6 + mov r4, #0x36 + ldr r7, _02222CD8 ; =0xC1FFFCFF +_022229F4: + mov r0, r5 + mov r1, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r1, r1, r6, lsl #2 + str r0, [r1, #0x10] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x10] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x10] + add r6, r6, #1 + ldrh r0, [r1, #4] + cmp r6, #0xa + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _022229F4 + ldr r6, _02222CDC ; =0x0223EFE0 + mov r5, #0 + ldr r8, _02222CD4 ; =0x02243040 + mov r4, r5 + ldr r7, _02222CD8 ; =0xC1FFFCFF +_02222A64: + ldrb r1, [r6] + mov r0, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r6, r6, #1 + add r1, r1, r5, lsl #2 + str r0, [r1, #0x38] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0x38] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0x38] + add r5, r5, #1 + ldrh r0, [r1, #4] + cmp r5, #2 + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _02222A64 + ldr sl, _02222CE0 ; =0x0223EFE4 + mov sb, #0 + ldr r4, _02222CD4 ; =0x02243040 + mov fp, sb + str sb, [sp, #0x1c] + mov r8, #1 + mvn r7, #0 + mov r6, #0x200 + mov r5, #3 +_02222AE8: + ldrb r1, [sl] + mov r0, fp + mov r2, r8 + bl MOD13_02239E0C + ldr r2, [r4] + ldr r3, [sp, #0x1c] + add r2, r2, sb, lsl #2 + str r0, [r2, #0x40] + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0x40] + mov r2, r6 + bl MOD13_02239A1C + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0x40] + mov r2, r5 + bl MOD13_02239814 + add sb, sb, #1 + add sl, sl, #1 + cmp sb, #2 + blt _02222AE8 + ldr r1, _02222CE4 ; =0x0223EFF8 + mov r8, #0 + ldrh r0, [r1, #2] + ldr r7, _02222CE8 ; =0x0223F040 + ldr r4, _02222CD4 ; =0x02243040 + str r0, [sp, #0x14] + ldrh r0, [r1] + str r8, [sp, #0x10] + strh r8, [sp, #0x3a] + str r0, [sp, #0x18] + add fp, sp, #0x38 + str r8, [sp, #0x28] + str r8, [sp, #0x20] + str r8, [sp, #0x24] + mov r6, #2 + mov r5, #0x480 +_02222B88: + add r0, sp, #0x34 + str r0, [sp] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x14] + mov r1, r0 + str r1, [sp, #4] + ldr r1, [sp, #0x18] + mov r3, r0 + bl MOD13_0223A9A4 + ldr r1, [r4] + ldr sl, [sp, #0x10] + str r0, [r1, r8, lsl #2] + ldr r0, [sp, #0x24] + strh r0, [sp, #0x2c] + mov sb, r0 +_02222BC4: + mov r0, sl, lsl #1 + ldrh r1, [r7, r0] + ldrh r0, [sp, #0x32] + strh r1, [sp, #0x38] + str r0, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + str fp, [sp, #0xc] + ldr r0, [r4] + ldrh r1, [sp, #0x2c] + ldr r0, [r0, r8, lsl #2] + ldrh r2, [sp, #0x2e] + ldrh r3, [sp, #0x30] + bl MOD13_0223A4F0 + add sb, sb, #1 + cmp sb, #3 + add sl, sl, #1 + ldrh r0, [sp, #0x2c] + add r0, r0, #0x20 + strh r0, [sp, #0x2c] + blt _02222BC4 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x34] + mov r2, r0 + bl MOD13_02239B74 + ldr r1, [sp, #0x10] + ldr r2, [r4] + add r1, r1, #3 + str r1, [sp, #0x10] + add r1, r2, r8, lsl #2 + add r8, r8, #1 + str r0, [r1, #0x48] + cmp r8, #4 + blt _02222B88 + mov r0, #0 + mov r1, #0x44 + mov r2, #1 + bl MOD13_02239E0C + ldr r3, _02222CD4 ; =0x02243040 + mvn r1, #0 + ldr r4, [r3] + mov r2, #0x200 + str r0, [r4, #0x58] + ldr r0, [r3] + mov r3, #0 + ldr r0, [r0, #0x58] + bl MOD13_02239A1C + ldr r0, _02222CD4 ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x58] + bl MOD13_02239814 + mov r0, #0 + ldr r1, _02222CEC ; =MOD13_02222820 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r2, _02222CD4 ; =0x02243040 + mov r1, #0xc0 + ldr r2, [r2] + str r0, [r2, #0x5c] + mov r0, #0 + bl MOD13_02221B6C + add sp, sp, #0x3c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02222CCC: .word 0x0223F01C +_02222CD0: .word 0x0223EFF4 +_02222CD4: .word 0x02243040 +_02222CD8: .word 0xC1FFFCFF +_02222CDC: .word 0x0223EFE0 +_02222CE0: .word 0x0223EFE4 +_02222CE4: .word 0x0223EFF8 +_02222CE8: .word 0x0223F040 +_02222CEC: .word MOD13_02222820 + + arm_func_start MOD13_02222CF0 +MOD13_02222CF0: ; 0x02222CF0 + ldr ip, _02222CF8 ; =MOD13_0223AF48 + bx ip + .align 2, 0 +_02222CF8: .word MOD13_0223AF48 + + arm_func_start MOD13_02222CFC +MOD13_02222CFC: ; 0x02222CFC + ldr ip, _02222D08 ; =MOD13_0223B004 + mov r1, #0x20 + bx ip + .align 2, 0 +_02222D08: .word MOD13_0223B004 + + arm_func_start MOD13_02222D0C +MOD13_02222D0C: ; 0x02222D0C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02222D74 ; =0x02243048 + ldr r0, [r0] + blx MOD13_02219798 + cmp r0, #0 + ldreq r1, _02222D78 ; =0x02243044 + moveq r0, #1 + streqb r0, [r1] + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02222D74 ; =0x02243048 + ldr r0, [r0] + ldrb r0, [r0, #0x116] + cmp r0, #1 + beq _02222D5C + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #2 + bhi _02222D68 +_02222D5C: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_02222D68: + mov r0, #2 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02222D74: .word 0x02243048 +_02222D78: .word 0x02243044 + + arm_func_start MOD13_02222D7C +MOD13_02222D7C: ; 0x02222D7C + stmdb sp!, {r4, lr} + mov r4, r0 + blx MOD13_02219C9C + cmp r4, #0 + beq _02222DC0 + ldr r0, _02222DCC ; =0x02243048 + ldr r1, [r0] + ldrb r0, [r1, #0x116] + cmp r0, #0 + bne _02222DC0 + ldr r0, _02222DD0 ; =0x02243044 + ldrb r0, [r0] + cmp r0, #1 + bne _02222DC0 + ldr r0, _02222DD4 ; =0x00000117 + add r0, r1, r0 + bl MOD13_0223390C +_02222DC0: + ldr r0, _02222DCC ; =0x02243048 + bl MOD13_0223AF90 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222DCC: .word 0x02243048 +_02222DD0: .word 0x02243044 +_02222DD4: .word 0x00000117 + + arm_func_start MOD13_02222DD8 +MOD13_02222DD8: ; 0x02222DD8 + stmdb sp!, {lr} + sub sp, sp, #0x104 + mov r0, #0x26c + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _02222ED4 ; =0x02243048 + ldr r3, _02222ED8 ; =0x02243044 + str r0, [r1] + mov r0, #0 + add r1, sp, #0 + mov r2, #0x104 + strb r0, [r3] + bl MIi_CpuClear16 + mov r3, #0x50 + mov r2, #0xc + ldr r0, _02222EDC ; =0x0223F0F4 + add r1, sp, #4 + strb r3, [sp] + strh r2, [sp, #2] + bl MI_CpuCopy8 + ldr r0, _02222ED4 ; =0x02243048 + mov r2, #3 + ldr r1, [r0] + add ip, sp, #0 + strh r2, [r1] + ldr lr, [r0] + mov r2, #0x41 + add r3, lr, #2 +_02222E48: + ldrh r1, [ip], #2 + ldrh r0, [ip], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + strh r0, [r3], #2 + bne _02222E48 + ldr r1, _02222ED4 ; =0x02243048 + add r0, lr, #0x100 + mov r3, #1 + strh r3, [r0, #6] + ldr r0, [r1] + mvn r2, #0 + add r0, r0, #0x100 + strh r2, [r0, #8] + ldr r0, [r1] + add r0, r0, #0x100 + strh r3, [r0, #0xa] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xc] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xe] + ldr r0, [r1] + add r0, r0, #0x110 + bl OS_GetMacAddress + ldr r0, _02222EE0 ; =MOD13_02222CFC + ldr r1, _02222EE4 ; =MOD13_02222CF0 + blx MOD13_02219D58 + cmp r0, #0 + addeq sp, sp, #0x104 + ldmeqia sp!, {pc} + bl OS_Terminate + add sp, sp, #0x104 + ldmia sp!, {pc} + .align 2, 0 +_02222ED4: .word 0x02243048 +_02222ED8: .word 0x02243044 +_02222EDC: .word 0x0223F0F4 +_02222EE0: .word MOD13_02222CFC +_02222EE4: .word MOD13_02222CF0 + + arm_func_start MOD13_02222EE8 +MOD13_02222EE8: ; 0x02222EE8 + ldr r0, _02222EF8 ; =0x02243050 + mov r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_02222EF8: .word 0x02243050 + + arm_func_start MOD13_02222EFC +MOD13_02222EFC: ; 0x02222EFC + ldr r1, _02222F18 ; =0x02243058 + ldr r1, [r1] + mov r1, r1, lsr #4 + ands r0, r1, r0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02222F18: .word 0x02243058 + + arm_func_start MOD13_02222F1C +MOD13_02222F1C: ; 0x02222F1C + ldr r0, _02222F30 ; =0x02243058 + ldr r0, [r0] + mov r0, r0, lsl #0x1c + mov r0, r0, lsr #0x1c + bx lr + .align 2, 0 +_02222F30: .word 0x02243058 + + arm_func_start MOD13_02222F34 +MOD13_02222F34: ; 0x02222F34 + ldr r0, _02222F40 ; =0x0224304C + ldrb r0, [r0] + bx lr + .align 2, 0 +_02222F40: .word 0x0224304C + + arm_func_start MOD13_02222F44 +MOD13_02222F44: ; 0x02222F44 + cmp r0, #0 + ldrne r2, _02222F68 ; =0x02243060 + ldrne r2, [r2, #8] + strne r2, [r0] + cmp r1, #0 + ldrne r0, _02222F68 ; =0x02243060 + ldrne r0, [r0, #0xc] + strne r0, [r1] + bx lr + .align 2, 0 +_02222F68: .word 0x02243060 + + arm_func_start MOD13_02222F6C +MOD13_02222F6C: ; 0x02222F6C + ldr r2, _02222F7C ; =0x02243060 + str r0, [r2, #8] + str r1, [r2, #0xc] + bx lr + .align 2, 0 +_02222F7C: .word 0x02243060 + + arm_func_start MOD13_02222F80 +MOD13_02222F80: ; 0x02222F80 + cmp r0, #0 + ldrne r2, _02222FA4 ; =0x02243060 + ldrne r2, [r2] + strne r2, [r0] + cmp r1, #0 + ldrne r0, _02222FA4 ; =0x02243060 + ldrne r0, [r0, #4] + strne r0, [r1] + bx lr + .align 2, 0 +_02222FA4: .word 0x02243060 + + arm_func_start MOD13_02222FA8 +MOD13_02222FA8: ; 0x02222FA8 + ldr r2, _02222FB8 ; =0x02243060 + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_02222FB8: .word 0x02243060 + + arm_func_start MOD13_02222FBC +MOD13_02222FBC: ; 0x02222FBC + ldr r1, _02222FC8 ; =0x0224305C + str r0, [r1] + bx lr + .align 2, 0 +_02222FC8: .word 0x0224305C + + arm_func_start MOD13_02222FCC +MOD13_02222FCC: ; 0x02222FCC + stmdb sp!, {lr} + sub sp, sp, #4 + bl GX_DispOff + ldr r1, _02223020 ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x10000 + str r0, [r1] + bl MOD13_0223BDD0 + bl MOD13_0223B6C0 + bl MOD13_0223B7A0 + bl MOD13_02234270 + bl MOD13_02239CE8 + bl MOD13_0223BA04 + bl MOD13_0223AA80 + bl MOD13_0223A3AC + bl MOD13_022395A0 + bl MOD13_0223C2A8 + bl MOD13_0223B050 + bl MOD13_0223BEA8 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223020: .word 0x04001000 + + arm_func_start MOD13_02223024 +MOD13_02223024: ; 0x02223024 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #0 + bl GX_VBlankIntr + mov r0, #1 + bl GX_SetBankForBG + mov r0, #2 + bl GX_SetBankForOBJ + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl GX_SetGraphicsMode + mov r3, #0x4000000 + ldr r1, [r3] + ldr r0, _022232DC ; =0x0400006C + bic r1, r1, #0x1f00 + str r1, [r3] + ldr r2, [r3] + mov r1, #0 + bic r2, r2, #0xe000 + str r2, [r3] + bl GXx_SetMasterBrightness_ + mov r3, #0x4000000 + ldr r2, [r3] + ldr r0, _022232E0 ; =0xFFCFFFEF + ldr r1, _022232E4 ; =0x00200010 + and r0, r2, r0 + orr r0, r0, r1 + str r0, [r3] + ldr r3, _022232E8 ; =0x04000008 + ldr r2, _022232EC ; =0x0400000A + ldrh r0, [r3] + ldr r1, _022232F0 ; =0x0400000C + ldr r5, _022232F4 ; =0x0400000E + bic r0, r0, #0x40 + strh r0, [r3] + ldrh r0, [r2] + mov ip, #0 + ldr r4, _022232F8 ; =0x04000010 + bic r0, r0, #0x40 + strh r0, [r2] + ldrh r0, [r1] + ldr r3, _022232FC ; =0x04000014 + ldr r2, _02223300 ; =0x04000018 + bic r0, r0, #0x40 + strh r0, [r1] + ldrh lr, [r5] + ldr r1, _02223304 ; =0x0400001C + ldr r0, _02223308 ; =0x04000050 + bic lr, lr, #0x40 + strh lr, [r5] + str ip, [r4] + str ip, [r3] + str ip, [r2] + str ip, [r1] + mov r1, #0x3f + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + mov r0, #0x80 + bl GX_SetBankForSubBG + mov r0, #0x100 + bl GX_SetBankForSubOBJ + mov r0, #0 + bl GXS_SetGraphicsMode + ldr r1, _0222330C ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x1f00 + str r0, [r1] + ldr r0, [r1] + bic r0, r0, #0xe000 + str r0, [r1] + ldr r0, _02223310 ; =0x0400106C + mov r1, #0 + bl GXx_SetMasterBrightness_ + ldr r3, _0222330C ; =0x04001000 + ldr r0, _022232E0 ; =0xFFCFFFEF + ldr r1, [r3] + ldr r2, _02223314 ; =0x04001008 + and r0, r1, r0 + orr r0, r0, #0x10 + str r0, [r3] + ldrh r0, [r2] + ldr r1, _02223318 ; =0x0400100A + ldr r3, _0222331C ; =0x0400100C + bic r0, r0, #0x40 + strh r0, [r2] + ldrh r0, [r1] + ldr r4, _02223320 ; =0x0400100E + ldr r2, _02223324 ; =0x04001010 + bic r0, r0, #0x40 + strh r0, [r1] + ldrh r0, [r3] + mov ip, #0 + ldr r1, _02223328 ; =0x04001014 + bic r0, r0, #0x40 + strh r0, [r3] + ldrh lr, [r4] + ldr r0, _0222332C ; =0x04001018 + ldr r3, _02223330 ; =0x0400101C + bic lr, lr, #0x40 + strh lr, [r4] + str ip, [r2] + str ip, [r1] + str ip, [r0] + ldr r0, _02223334 ; =0x04001050 + mov r1, #0x3f + mov r2, #0x10 + str ip, [r3] + bl G2x_SetBlendBrightness_ + ldr r3, _022232E8 ; =0x04000008 + ldr r2, _022232EC ; =0x0400000A + ldrh r1, [r3] + ldr r0, _02223338 ; =0x00000D08 + ldr lr, _022232F0 ; =0x0400000C + and r1, r1, #0x43 + orr r1, r1, #0xc00 + strh r1, [r3] + ldrh r1, [r2] + mov ip, r5 + ldr r3, _02223314 ; =0x04001008 + and r1, r1, #0x43 + orr r0, r1, r0 + strh r0, [r2] + ldrh r0, [lr] + ldr r2, _02223318 ; =0x0400100A + ldr r1, _0222331C ; =0x0400100C + and r0, r0, #0x43 + orr r0, r0, #0xe10 + strh r0, [lr] + ldrh r0, [ip] + and r0, r0, #0x43 + orr r0, r0, #0xf10 + strh r0, [ip] + ldrh r0, [r3] + and r0, r0, #0x43 + orr r0, r0, #0xc00 + strh r0, [r3] + ldrh r0, [r2] + and r0, r0, #0x43 + orr r0, r0, #0xd00 + strh r0, [r2] + ldrh r0, [r1] + and r0, r0, #0x43 + orr r0, r0, #0xe00 + strh r0, [r1] + mov r3, r4 + ldrh r0, [r3] + mov r2, #0x4000000 + ldr r1, _0222333C ; =0x04000304 + and r0, r0, #0x43 + orr r0, r0, #0xf00 + strh r0, [r3] + ldr r0, [r2] + bic r0, r0, #0x38000000 + str r0, [r2] + ldr r0, [r2] + bic r0, r0, #0x7000000 + str r0, [r2] + ldrh r0, [r1] + bic r0, r0, #0x8000 + strh r0, [r1] + bl MOD13_0223AAD0 + bl MOD13_0223BA84 + bl MOD13_0223BCE4 + bl MOD13_02239D38 + bl GX_DispOn + ldr r2, _0222330C ; =0x04001000 + mov r0, #1 + ldr r1, [r2] + orr r1, r1, #0x10000 + str r1, [r2] + bl GX_VBlankIntr + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022232DC: .word 0x0400006C +_022232E0: .word 0xFFCFFFEF +_022232E4: .word 0x00200010 +_022232E8: .word 0x04000008 +_022232EC: .word 0x0400000A +_022232F0: .word 0x0400000C +_022232F4: .word 0x0400000E +_022232F8: .word 0x04000010 +_022232FC: .word 0x04000014 +_02223300: .word 0x04000018 +_02223304: .word 0x0400001C +_02223308: .word 0x04000050 +_0222330C: .word 0x04001000 +_02223310: .word 0x0400106C +_02223314: .word 0x04001008 +_02223318: .word 0x0400100A +_0222331C: .word 0x0400100C +_02223320: .word 0x0400100E +_02223324: .word 0x04001010 +_02223328: .word 0x04001014 +_0222332C: .word 0x04001018 +_02223330: .word 0x0400101C +_02223334: .word 0x04001050 +_02223338: .word 0x00000D08 +_0222333C: .word 0x04000304 + + arm_func_start MOD13_02223340 +MOD13_02223340: ; 0x02223340 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02223404 ; =0x04000208 + mov r0, #0 + ldrh r1, [r2] + strh r0, [r2] + bl GX_DispOff + ldr r1, _02223408 ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x10000 + str r0, [r1] + bl OS_IsTickAvailable + cmp r0, #0 + bne _0222337C + bl OS_Terminate +_0222337C: + bl OS_IsAlarmAvailable + cmp r0, #0 + bne _0222338C + bl OS_Terminate +_0222338C: + mov r0, #0 + bl GX_VBlankIntr + bl FX_Init + mvn r0, #0 + bl FS_Init + bl TP_Init + bl RTC_Init + bl GX_DispOff + ldr r1, _02223408 ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x10000 + str r0, [r1] + bl MOD13_0223BFE4 + ldr r0, _0222340C ; =0x02243054 + ldr r0, [r0] + bl MOD13_0223B07C + bl MOD13_0223B7E8 + bl MOD13_0223C2F4 + bl MOD13_0223962C + bl MOD13_0223B6F4 + bl MOD13_0223A3C0 + mov r0, #0x700 + mov r1, #0x20 + bl MOD13_0223B004 + str r0, [sp] + bl FUN_02096190 + add r0, sp, #0 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223404: .word 0x04000208 +_02223408: .word 0x04001000 +_0222340C: .word 0x02243054 + + arm_func_start MOD13_02223410 +MOD13_02223410: ; 0x02223410 + ldr r3, _0222348C ; =0x0224304C + ldr r2, _02223490 ; =0x02243058 + strb r0, [r3] + str r1, [r2] + cmp r0, #0 + blt _02223430 + cmp r0, #5 + ble _02223438 +_02223430: + mov r0, #0 + bx lr +_02223438: + mov r2, r1, lsl #0x1c + mov r2, r2, lsr #0x1c + cmp r2, #1 + movhi r0, #0 + bxhi lr + cmp r0, #0 + beq _02223464 + mov r1, r1, lsr #4 + ands r1, r1, #1 + movne r0, #0 + bxne lr +_02223464: + cmp r0, #0 + bne _02223484 + ldr r0, _02223490 ; =0x02243058 + ldr r0, [r0] + mov r0, r0, lsr #4 + ands r0, r0, #1 + moveq r0, #0 + bxeq lr +_02223484: + mov r0, #1 + bx lr + .align 2, 0 +_0222348C: .word 0x0224304C +_02223490: .word 0x02243058 + + arm_func_start MOD13_02223494 +MOD13_02223494: ; 0x02223494 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _0222351C ; =0x02243054 + str r0, [r3] + mov r0, r1 + mov r1, r2 + bl MOD13_02223410 + cmp r0, #0 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _02223520 ; =0x02243050 + mov r1, #0 + strb r1, [r0] + bl MOD13_02223340 + bl MOD13_02223024 + bl MOD13_022342A0 + ldr r0, _02223524 ; =MOD13_02223E10 + bl MOD13_02222FBC + ldr r5, _02223528 ; =0x0224305C + ldr r4, _02223520 ; =0x02243050 + mov r6, #0 +_022234E4: + bl MOD13_0223B6A8 + ldr r0, [r5] + blx r0 + mov r0, r6 + bl MOD13_0223C1E0 + bl MOD13_0223B0BC + bl MOD13_0223BDE0 + bl OS_WaitVBlankIntr + ldrb r0, [r4] + cmp r0, #0 + beq _022234E4 + bl MOD13_02222FCC + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222351C: .word 0x02243054 +_02223520: .word 0x02243050 +_02223524: .word MOD13_02223E10 +_02223528: .word 0x0224305C + + arm_func_start MOD13_0222352C +MOD13_0222352C: ; 0x0222352C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr ip, _02223564 ; =0x0000FFFF + ldr lr, [r0] + and r1, r1, ip + ldr ip, [r0, #4] + ldr r0, [lr, r1, lsl #2] + cmp r2, #0 + add r0, ip, r0 + addge r3, r3, #0x30 + movge r1, r2, lsl #1 + strgeh r3, [r0, r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223564: .word 0x0000FFFF + + arm_func_start MOD13_02223568 +MOD13_02223568: ; 0x02223568 + ldr r2, _02223584 ; =0x0000FFFF + ldr r3, [r0] + and r1, r1, r2 + ldr r2, [r0, #4] + ldr r0, [r3, r1, lsl #2] + add r0, r2, r0 + bx lr + .align 2, 0 +_02223584: .word 0x0000FFFF + + arm_func_start MOD13_02223588 +MOD13_02223588: ; 0x02223588 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #8] + bl MOD13_0223939C + ldr r0, _022235B0 ; =0x02243070 + mov r1, r4 + ldr r0, [r0] + ldr r0, [r0, #0x60] + bl MOD13_02239FD0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022235B0: .word 0x02243070 + + arm_func_start MOD13_022235B4 +MOD13_022235B4: ; 0x022235B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02223614 ; =0x02243070 + mov r5, r0 + ldr r0, [r1] + ldr r0, [r0, #0x60] + bl MOD13_02239F78 + mov r4, r0 + add r1, sp, #0 + mov r0, r5 + mov r2, #4 + bl MOD13_022393D8 + str r0, [r4, #8] + ldr r1, [r4, #8] + mov r0, r4 + add r2, r1, #0x20 + add r1, r2, #0x10 + str r1, [r4] + ldr r1, [r2, #4] + add r1, r2, r1 + add r1, r1, #8 + str r1, [r4, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02223614: .word 0x02243070 + + arm_func_start MOD13_02223618 +MOD13_02223618: ; 0x02223618 + ldr ip, _02223624 ; =MOD13_0223AF90 + ldr r0, _02223628 ; =0x02243070 + bx ip + .align 2, 0 +_02223624: .word MOD13_0223AF90 +_02223628: .word 0x02243070 + + arm_func_start MOD13_0222362C +MOD13_0222362C: ; 0x0222362C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x64 + mov r1, #4 + bl MOD13_0223B004 + mov r1, r0 + ldr r3, _0222366C ; =0x02243070 + mov r0, #8 + mov r2, #0xc + str r1, [r3] + bl MOD13_0223A054 + ldr r1, _0222366C ; =0x02243070 + ldr r1, [r1] + str r0, [r1, #0x60] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222366C: .word 0x02243070 + + arm_func_start MOD13_02223670 +MOD13_02223670: ; 0x02223670 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + bl MOD13_02238BE0 + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldrb r1, [r0, #0x2a0] + cmp r1, #0 + beq _022236C4 + ldrb r1, [r0, #0x2a1] + cmp r1, #0 + bne _022236C4 + ldr r1, [r0, #0x298] + cmp r1, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #0 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022236C4: + add r0, sp, #0 + add r1, sp, #1 + bl MOD13_02238B98 + ldrb r0, [sp] + cmp r0, #0x1a + bgt _0222375C + cmp r0, #0x1a + bge _02223870 + cmp r0, #0x14 + bgt _0222374C + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0222390C +_022236F8: ; jump table + b _0222390C ; case 0 + b _0222390C ; case 1 + b _0222390C ; case 2 + b _0222390C ; case 3 + b _0222390C ; case 4 + b MOD13_02223784 ; case 5 + b _0222390C ; case 6 + b _0222390C ; case 7 + b _0222390C ; case 8 + b _0222390C ; case 9 + b _0222390C ; case 10 + b _0222390C ; case 11 + b MOD13_022238B4 ; case 12 + b MOD13_022237E8 ; case 13 + b _0222390C ; case 14 + b _0222390C ; case 15 + b _0222390C ; case 16 + b _0222390C ; case 17 + b _0222390C ; case 18 + b _0222390C ; case 19 + b _0222382C ; case 20 +_0222374C: + cmp r0, #0x17 + beq _0222382C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222375C: + cmp r0, #0x1d + bgt _02223774 + cmp r0, #0x1d + beq _02223870 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02223774: + cmp r0, #0x22 + beq _022238F8 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_02223784 +MOD13_02223784: ; 0x02223784 + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r1, _02223914 ; =0x02243074 + ldr r0, _02223918 ; =0x0001E280 + ldr r1, [r1] + add r4, r1, r0 + bl MOD13_02238B88 + mov r1, r4 + mov r2, #0x16 + bl MIi_CpuCopy16 + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #0 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_022237E8 +MOD13_022237E8: ; 0x022237E8 + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #1 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222382C: + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #3 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02223870: + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #4 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_022238B4 +MOD13_022238B4: ; 0x022238B4 + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #2 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022238F8: + mov r1, r4 + mov r0, #0 + bl MOD13_0223C110 + ldr r0, _02223914 ; =0x02243074 + bl MOD13_0223AF90 +_0222390C: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02223914: .word 0x02243074 +_02223918: .word 0x0001E280 + + arm_func_start MOD13_0222391C +MOD13_0222391C: ; 0x0222391C + ldr r1, _02223930 ; =0x02243074 + ldr r0, _02223934 ; =0x0001E280 + ldr r1, [r1] + add r0, r1, r0 + bx lr + .align 2, 0 +_02223930: .word 0x02243074 +_02223934: .word 0x0001E280 + + arm_func_start MOD13_02223938 +MOD13_02223938: ; 0x02223938 + ldr ip, _02223940 ; =MOD13_02238FFC + bx ip + .align 2, 0 +_02223940: .word MOD13_02238FFC + + arm_func_start MOD13_02223944 +MOD13_02223944: ; 0x02223944 + ldr r1, _02223958 ; =0x02243074 + ldr r1, [r1] + add r1, r1, #0x1e000 + str r0, [r1, #0x298] + bx lr + .align 2, 0 +_02223958: .word 0x02243074 + + arm_func_start MOD13_0222395C +MOD13_0222395C: ; 0x0222395C + ldr r0, _02223974 ; =0x02243074 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_02223974: .word 0x02243074 + + arm_func_start MOD13_02223978 +MOD13_02223978: ; 0x02223978 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02239124 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _022239B0 ; =0x02243074 + mov r1, r4 + ldr r0, [r0] + mov r3, #1 + add r2, r0, #0x1e000 + mov r0, #0 + strb r3, [r2, #0x2a1] + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_022239B0: .word 0x02243074 + + arm_func_start MOD13_022239B4 +MOD13_022239B4: ; 0x022239B4 + ldr ip, _022239CC ; =MOD13_0223C1C4 + mov r0, #0 + ldr r1, _022239D0 ; =MOD13_02223978 + mov r2, r0 + mov r3, #0x78 + bx ip + .align 2, 0 +_022239CC: .word MOD13_0223C1C4 +_022239D0: .word MOD13_02223978 + + arm_func_start MOD13_022239D4 +MOD13_022239D4: ; 0x022239D4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + mov r4, r0 + ldr r0, _02223AB0 ; =0x0001E2A4 + mov r1, #0x20 + bl MOD13_0223B004 + ldr r2, _02223AB4 ; =0x02243074 + add r1, r0, #0x1e000 + str r0, [r2] + str r4, [r1, #0x298] + ldr r0, [r2] + mov r4, #0 + add r0, r0, #0x1e000 + strb r4, [r0, #0x2a0] + ldr r0, [r2] + ldr lr, _02223AB8 ; =0x0223FDA4 + add r0, r0, #0x1e000 + strb r4, [r0, #0x2a1] + add ip, sp, #0 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldmia lr, {r0, r1, r2} + stmia ip, {r0, r1, r2} + ldr r0, _02223ABC ; =0x0224307C + mov r1, r4 + ldr r0, [r0] + bl MOD13_02223568 + ldr r1, _02223ABC ; =0x0224307C + str r0, [sp, #4] + ldr r0, [r1] + mov r1, #1 + bl MOD13_02223568 + str r0, [sp, #8] + bl MOD13_02222F34 + add r0, r0, #0x31 + strb r0, [sp, #0x18] + ldr r0, _02223AB4 ; =0x02243074 + add r1, sp, #0 + ldr r0, [r0] + bl MOD13_0223923C + bl MOD13_0223903C + cmp r0, #0 + bne _02223A84 + bl OS_Terminate +_02223A84: + mov r0, #0 + ldr r1, _02223AC0 ; =MOD13_02223670 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02223AB4 ; =0x02243074 + ldr r1, [r1] + add r1, r1, #0x1e000 + str r0, [r1, #0x29c] + add sp, sp, #0x20 + ldmia sp!, {r4, pc} + .align 2, 0 +_02223AB0: .word 0x0001E2A4 +_02223AB4: .word 0x02243074 +_02223AB8: .word 0x0223FDA4 +_02223ABC: .word 0x0224307C +_02223AC0: .word MOD13_02223670 + + arm_func_start MOD13_02223AC4 +MOD13_02223AC4: ; 0x02223AC4 + ldr ip, _02223ACC ; =MOD13_0223AF48 + bx ip + .align 2, 0 +_02223ACC: .word MOD13_0223AF48 + + arm_func_start MOD13_02223AD0 +MOD13_02223AD0: ; 0x02223AD0 + ldr ip, _02223ADC ; =MOD13_0223B004 + mov r1, #0x20 + bx ip + .align 2, 0 +_02223ADC: .word MOD13_0223B004 + + arm_func_start MOD13_02223AE0 +MOD13_02223AE0: ; 0x02223AE0 + ldr r3, _02223AF4 ; =0x02243078 + ldmia r0, {r0, r1, r2} + ldr r3, [r3] + stmia r3, {r0, r1, r2} + bx lr + .align 2, 0 +_02223AF4: .word 0x02243078 + + arm_func_start MOD13_02223AF8 +MOD13_02223AF8: ; 0x02223AF8 + stmdb sp!, {lr} + sub sp, sp, #0xec + add r0, sp, #0 + blx MOD13_0221A794 + cmp r0, #1 + beq _02223B14 + bl OS_Terminate +_02223B14: + add r0, sp, #0 + bl MOD13_02233A24 + add sp, sp, #0xec + ldmia sp!, {pc} + + arm_func_start MOD13_02223B24 +MOD13_02223B24: ; 0x02223B24 + stmdb sp!, {lr} + sub sp, sp, #0xec + ldr r1, _02223BDC ; =0x02243078 + ldr r1, [r1] + ldr r1, [r1] + cmp r1, #7 + addls pc, pc, r1, lsl #2 + b _02223BD4 +_02223B44: ; jump table + b _02223B64 ; case 0 + b _02223B64 ; case 1 + b _02223B70 ; case 2 + b _02223B64 ; case 3 + b _02223B7C ; case 4 + b _02223B64 ; case 5 + b _02223B88 ; case 6 + b _02223BD0 ; case 7 +_02223B64: + add sp, sp, #0xec + mov r0, #0 + ldmia sp!, {pc} +_02223B70: + add sp, sp, #0xec + mov r0, #1 + ldmia sp!, {pc} +_02223B7C: + add sp, sp, #0xec + mov r0, #2 + ldmia sp!, {pc} +_02223B88: + add r0, sp, #0 + blx MOD13_0221A794 + cmp r0, #1 + beq _02223B9C + bl OS_Terminate +_02223B9C: + ldr r0, [sp, #0x20] + cmp r0, #0 + blt _02223BC4 + cmp r0, #3 + bgt _02223BC4 + ldr r0, [sp, #0x24] + cmp r0, #1 + addeq sp, sp, #0xec + moveq r0, #3 + ldmeqia sp!, {pc} +_02223BC4: + add sp, sp, #0xec + mov r0, #5 + ldmia sp!, {pc} +_02223BD0: + mov r0, #4 +_02223BD4: + add sp, sp, #0xec + ldmia sp!, {pc} + .align 2, 0 +_02223BDC: .word 0x02243078 + + arm_func_start MOD13_02223BE0 +MOD13_02223BE0: ; 0x02223BE0 + stmdb sp!, {lr} + sub sp, sp, #4 + blx MOD13_0221A7EC + cmp r0, #1 + beq _02223BF8 + bl OS_Terminate +_02223BF8: + ldr r0, _02223C08 ; =0x02243078 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223C08: .word 0x02243078 + + arm_func_start MOD13_02223C0C +MOD13_02223C0C: ; 0x02223C0C + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r0, #0xc + mvn r1, #3 + bl MOD13_0223AFE0 + ldr r1, _02223C68 ; =0x02243078 + ldr ip, _02223C6C ; =MOD13_02223AC4 + str r0, [r1] + ldr r2, _02223C70 ; =MOD13_02223AE0 + ldr r3, _02223C74 ; =MOD13_02223AD0 + str ip, [sp] + mov ip, #0x800 + mov r0, #0xf + mov r1, #0x40 + str ip, [sp, #4] + blx MOD13_0221A8A4 + cmp r0, #1 + beq _02223C58 + bl OS_Terminate +_02223C58: + mov r0, #0xa + bl OS_Sleep + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02223C68: .word 0x02243078 +_02223C6C: .word MOD13_02223AC4 +_02223C70: .word MOD13_02223AE0 +_02223C74: .word MOD13_02223AD0 + + arm_func_start MOD13_02223C78 +MOD13_02223C78: ; 0x02223C78 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + mov r1, r0 + bl MOD13_0223C0A0 + mov r0, #1 + mov r1, #0 + bl MOD13_0223C0A0 + mov r0, #1 + bl MOD13_02239F20 + mov r0, #0 + bl MOD13_02239F20 + bl MOD13_0221F528 + bl MOD13_0221F404 + ldr r0, _02223CF8 ; =0x0224307C + ldr r0, [r0] + bl MOD13_02223588 + bl MOD13_02223618 + bl MOD13_02234178 + bl MOD13_02222EE8 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223CF8: .word 0x0224307C + + arm_func_start MOD13_02223CFC +MOD13_02223CFC: ; 0x02223CFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + mov r1, #1 + mov r2, #0x3f + mov r3, #0x14 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x14 + bl MOD13_0223A2A8 + ldr r0, _02223D3C ; =MOD13_02223C78 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223D3C: .word MOD13_02223C78 + + arm_func_start MOD13_02223D40 +MOD13_02223D40: ; 0x02223D40 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02222F1C + cmp r0, #0 + beq _02223D8C + cmp r0, #1 + beq _02223DA8 + add sp, sp, #4 + ldmia sp!, {pc} +_02223D8C: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02223DC4 ; =MOD13_022245B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02223DA8: + mov r0, #1 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02223DC8 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223DC4: .word MOD13_022245B4 +_02223DC8: .word MOD13_02230714 + + arm_func_start MOD13_02223DCC +MOD13_02223DCC: ; 0x02223DCC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r2, r0 + mov r1, #1 + mov r3, #0x14 + bl MOD13_0223A2A8 + mov r0, #2 + mov r2, r0 + mov r1, #0 + mov r3, #0x14 + bl MOD13_0223A2A8 + ldr r0, _02223E0C ; =MOD13_02223D40 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223E0C: .word MOD13_02223D40 + + arm_func_start MOD13_02223E10 +MOD13_02223E10: ; 0x02223E10 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223418C + bl MOD13_0222362C + bl MOD13_0221F424 + bl MOD13_0221F53C + bl MOD13_0221EF74 + bl MOD13_02222F34 + cmp r0, #1 + bne _02223E5C + mov r0, #2 + bl MOD13_02222EFC + cmp r0, #0 + beq _02223E5C + ldr r0, _02223F90 ; =0x0223FE38 + bl MOD13_022235B4 + ldr r1, _02223F94 ; =0x0224307C + str r0, [r1] + b _02223E74 +_02223E5C: + bl MOD13_02222F34 + ldr r1, _02223F98 ; =0x0223FE20 + ldr r0, [r1, r0, lsl #2] + bl MOD13_022235B4 + ldr r1, _02223F94 ; =0x0224307C + str r0, [r1] +_02223E74: + ldr r0, _02223F9C ; =0x0223FE48 + bl MOD13_0221F1BC + mov r1, r0 + mov r0, #1 + bl MOD13_02239F48 + ldr r0, _02223FA0 ; =0x0223FE5C + bl MOD13_0221F1BC + mov r1, r0 + mov r0, #0 + bl MOD13_02239F48 + ldr r0, _02223FA4 ; =0x0223FE70 + ldr r1, _02223FA8 ; =0x020C8DB4 + bl MOD13_0221F174 + ldr r0, _02223FAC ; =0x0223FE84 + ldr r1, _02223FB0 ; =0x020C94E8 + bl MOD13_0221F174 + ldr r0, _02223FB4 ; =0x0223FE98 + ldr r1, _02223FB8 ; =0x020C9294 + bl MOD13_0221F174 + ldr r0, _02223FBC ; =0x0223FEB0 + ldr r1, _02223FC0 ; =0x020C9418 + bl MOD13_0221F174 + ldr r0, _02223FC4 ; =0x0223FEC8 + ldr r1, _02223FC8 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02223FCC ; =0x0223FEE0 + ldr r1, _02223FD0 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02223FD4 ; =0x0223FEF8 + ldr r1, _02223FD8 ; =0x020C92F4 + bl MOD13_0221F174 + ldr r0, _02223FDC ; =0x0223FF10 + ldr r1, _02223FE0 ; =0x020C9480 + bl MOD13_0221F174 + bl MOD13_02222F1C + cmp r0, #0 + beq _02223F14 + cmp r0, #1 + beq _02223F24 + b _02223F30 +_02223F14: + ldr r0, _02223FE4 ; =0x0223FF28 + ldr r1, _02223FE8 ; =0x020C90F4 + bl MOD13_0221F174 + b _02223F30 +_02223F24: + ldr r0, _02223FEC ; =0x0223FF3C + ldr r1, _02223FE8 ; =0x020C90F4 + bl MOD13_0221F174 +_02223F30: + ldr ip, _02223FF0 ; =0x0400100A + ldr r3, _02223FF4 ; =0x0400000A + ldrh r2, [ip] + mov r0, #1 + mov r1, #2 + bic r2, r2, #3 + orr r2, r2, #3 + strh r2, [ip] + ldrh r2, [r3] + bic r2, r2, #3 + orr r2, r2, #3 + strh r2, [r3] + ldrh r2, [r3] + bic r2, r2, #3 + orr r2, r2, #3 + strh r2, [r3] + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #2 + bl MOD13_0223AEF4 + ldr r0, _02223FF8 ; =MOD13_02223DCC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223F90: .word 0x0223FE38 +_02223F94: .word 0x0224307C +_02223F98: .word 0x0223FE20 +_02223F9C: .word 0x0223FE48 +_02223FA0: .word 0x0223FE5C +_02223FA4: .word 0x0223FE70 +_02223FA8: .word 0x020C8DB4 +_02223FAC: .word 0x0223FE84 +_02223FB0: .word 0x020C94E8 +_02223FB4: .word 0x0223FE98 +_02223FB8: .word 0x020C9294 +_02223FBC: .word 0x0223FEB0 +_02223FC0: .word 0x020C9418 +_02223FC4: .word 0x0223FEC8 +_02223FC8: .word 0x020C8D4C +_02223FCC: .word 0x0223FEE0 +_02223FD0: .word 0x020C9550 +_02223FD4: .word 0x0223FEF8 +_02223FD8: .word 0x020C92F4 +_02223FDC: .word 0x0223FF10 +_02223FE0: .word 0x020C9480 +_02223FE4: .word 0x0223FF28 +_02223FE8: .word 0x020C90F4 +_02223FEC: .word 0x0223FF3C +_02223FF0: .word 0x0400100A +_02223FF4: .word 0x0400000A +_02223FF8: .word MOD13_02223DCC + + arm_func_start MOD13_02223FFC +MOD13_02223FFC: ; 0x02223FFC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02224040 ; =0x0223F100 + ldr r0, _02224044 ; =0x02243080 + ldrb r3, [r1] + ldrb r2, [r1, #1] + ldrb r1, [r0] + add ip, sp, #0 + ldr r0, _02224048 ; =0x02243084 + strb r3, [sp] + strb r2, [sp, #1] + ldrb r1, [ip, r1] + ldr r0, [r0] + mov r2, r1 + bl MOD13_022327DC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224040: .word 0x0223F100 +_02224044: .word 0x02243080 +_02224048: .word 0x02243084 + + arm_func_start MOD13_0222404C +MOD13_0222404C: ; 0x0222404C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + cmp r0, #3 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _022240BC ; =0x02243080 + mov r0, #8 + ldrb r2, [r1] + eor r2, r2, #1 + strb r2, [r1] + bl MOD13_0223424C + ldr r0, _022240BC ; =0x02243080 + ldr ip, _022240C0 ; =0x0223F114 + ldrb r0, [r0] + ldr r1, _022240C4 ; =0x0223F118 + ldr r2, _022240C8 ; =0x0223F116 + mov lr, r0, lsl #3 + ldr r3, _022240CC ; =0x0223F11A + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022240BC: .word 0x02243080 +_022240C0: .word 0x0223F114 +_022240C4: .word 0x0223F118 +_022240C8: .word 0x0223F116 +_022240CC: .word 0x0223F11A + + arm_func_start MOD13_022240D0 +MOD13_022240D0: ; 0x022240D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _02224184 ; =0x02243084 + ldr r0, [r0] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _02224188 ; =0x02243080 + ldrb r0, [r0] + cmp r0, #0 + beq _0222414C + cmp r0, #1 + beq _02224168 + add sp, sp, #4 + ldmia sp!, {pc} +_0222414C: + mov r0, #1 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _0222418C ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02224168: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02224190 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224184: .word 0x02243084 +_02224188: .word 0x02243080 +_0222418C: .word MOD13_02230714 +_02224190: .word MOD13_022259A8 + + arm_func_start MOD13_02224194 +MOD13_02224194: ; 0x02224194 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022241E8 ; =MOD13_022240D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022241E8: .word MOD13_022240D0 + + arm_func_start MOD13_022241EC +MOD13_022241EC: ; 0x022241EC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02224210 ; =MOD13_02224194 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224210: .word MOD13_02224194 + + arm_func_start MOD13_02224214 +MOD13_02224214: ; 0x02224214 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02224238 + cmp r0, #1 + beq _02224250 + add sp, sp, #4 + ldmia sp!, {pc} +_02224238: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222426C ; =MOD13_02223CFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02224250: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02223FFC + ldr r0, _02224270 ; =MOD13_022241EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222426C: .word MOD13_02223CFC +_02224270: .word MOD13_022241EC + + arm_func_start MOD13_02224274 +MOD13_02224274: ; 0x02224274 + bx lr + + arm_func_start MOD13_02224278 +MOD13_02224278: ; 0x02224278 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _022243B0 ; =0x0223F104 + mov r5, #0 +_02224288: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _022242DC + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _022243B4 ; =0x02243080 + ldr ip, _022243B8 ; =0x0223F114 + strb r5, [r0] + ldrb r0, [r0] + ldr r1, _022243BC ; =0x0223F118 + ldr r2, _022243C0 ; =0x0223F116 + mov lr, r0, lsl #3 + ldr r3, _022243C4 ; =0x0223F11A + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022242DC: + add r5, r5, #1 + cmp r5, #2 + add r4, r4, #8 + blo _02224288 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222430C + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222430C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222432C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222432C: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222434C + mov r0, #1 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222434C: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222436C + mov r0, #3 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222436C: + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222438C + mov r0, #0 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222438C: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #2 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022243B0: .word 0x0223F104 +_022243B4: .word 0x02243080 +_022243B8: .word 0x0223F114 +_022243BC: .word 0x0223F118 +_022243C0: .word 0x0223F116 +_022243C4: .word 0x0223F11A + + arm_func_start MOD13_022243C8 +MOD13_022243C8: ; 0x022243C8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224278 + bl MOD13_02224274 + bl MOD13_02224214 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02224414 ; =MOD13_022243C8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224414: .word MOD13_022243C8 + + arm_func_start MOD13_02224418 +MOD13_02224418: ; 0x02224418 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _02224460 ; =0x022243E4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224460: .word 0x022243E4 + + arm_func_start MOD13_02224464 +MOD13_02224464: ; 0x02224464 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _022244BC ; =MOD13_02224418 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022244BC: .word MOD13_02224418 + + arm_func_start MOD13_022244C0 +MOD13_022244C0: ; 0x022244C0 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _02224584 ; =0x0223F124 + add r3, sp, #0 + mov r2, #0xb +_022244D4: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _022244D4 + ldr r0, _02224588 ; =0x0223FF50 + ldr r1, _0222458C ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02224590 ; =0x0223FF68 + ldr r1, _02224594 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02224598 ; =0x0223FF80 + ldr r1, _0222459C ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _022245A0 ; =0x02243084 + ldr ip, _022245A4 ; =0x04001008 + str r0, [r1] + ldrh r0, [ip] + ldr r3, _022245A8 ; =0x0400100A + ldr r2, _022245AC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + ldr r1, _022245B0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_02224584: .word 0x0223F124 +_02224588: .word 0x0223FF50 +_0222458C: .word 0x020C8D4C +_02224590: .word 0x0223FF68 +_02224594: .word 0x020C9550 +_02224598: .word 0x0223FF80 +_0222459C: .word 0x020C908C +_022245A0: .word 0x02243084 +_022245A4: .word 0x04001008 +_022245A8: .word 0x0400100A +_022245AC: .word 0x0400000A +_022245B0: .word 0x0400000C + + arm_func_start MOD13_022245B4 +MOD13_022245B4: ; 0x022245B4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022244C0 + mov r0, #0 + bl MOD13_0221F4CC + mov r0, #0x2e + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #4 + bl MOD13_02234384 + ldr r0, _02224620 ; =0x02243080 + ldr r3, _02224624 ; =0x0223F114 + ldrb r0, [r0] + ldr r1, _02224628 ; =0x0223F118 + ldr r2, _0222462C ; =0x0223F116 + mov ip, r0, lsl #3 + ldrh r0, [r3, ip] + ldrh r1, [r1, ip] + ldrh r2, [r2, ip] + ldr r3, _02224630 ; =0x0223F11A + ldrh r3, [r3, ip] + bl MOD13_0221F25C + ldr r0, _02224634 ; =MOD13_02224464 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224620: .word 0x02243080 +_02224624: .word 0x0223F114 +_02224628: .word 0x0223F118 +_0222462C: .word 0x0223F116 +_02224630: .word 0x0223F11A +_02224634: .word MOD13_02224464 + + arm_func_start MOD13_02224638 +MOD13_02224638: ; 0x02224638 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02224660 ; =MOD13_02224808 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224660: .word MOD13_02224808 + + arm_func_start MOD13_02224664 +MOD13_02224664: ; 0x02224664 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + beq _0222469C + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0xe + bl MOD13_0223424C + ldr r0, _022246B8 ; =0x02243088 + mov r1, #1 + strb r1, [r0] + b _022246A4 +_0222469C: + mov r0, #7 + bl MOD13_0223424C +_022246A4: + bl MOD13_02235EB0 + ldr r0, _022246BC ; =MOD13_02224638 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022246B8: .word 0x02243088 +_022246BC: .word MOD13_02224638 + + arm_func_start MOD13_022246C0 +MOD13_022246C0: ; 0x022246C0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222478C ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _02224700 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02224700: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222478C ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _02224738 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02224738: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222478C ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _02224770 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02224790 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02224770: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02224794 ; =MOD13_02224D5C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222478C: .word 0x02243088 +_02224790: .word MOD13_022259A8 +_02224794: .word MOD13_02224D5C + + arm_func_start MOD13_02224798 +MOD13_02224798: ; 0x02224798 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _02224800 ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _022247DC + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_022247DC: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02224804 ; =MOD13_022246C0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224800: .word 0x02243088 +_02224804: .word MOD13_022246C0 + + arm_func_start MOD13_02224808 +MOD13_02224808: ; 0x02224808 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222482C ; =MOD13_02224798 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222482C: .word MOD13_02224798 + + arm_func_start MOD13_02224830 +MOD13_02224830: ; 0x02224830 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02224854 + cmp r0, #1 + beq _0222486C + add sp, sp, #4 + ldmia sp!, {pc} +_02224854: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022248A0 ; =MOD13_02224808 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222486C: + mov r0, #6 + bl MOD13_0223424C + mov r1, #0 + mov r0, #0x18 + mov r2, #1 + mvn r3, #0 + str r1, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _022248A4 ; =MOD13_02224664 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022248A0: .word MOD13_02224808 +_022248A4: .word MOD13_02224664 + + arm_func_start MOD13_022248A8 +MOD13_022248A8: ; 0x022248A8 + bx lr + + arm_func_start MOD13_022248AC +MOD13_022248AC: ; 0x022248AC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022248CC + mov r0, #1 + bl MOD13_0221ECF4 +_022248CC: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022248AC + bl MOD13_022248A8 + bl MOD13_02224830 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222493C ; =0x022248F0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222493C: .word 0x022248F0 + + arm_func_start MOD13_02224940 +MOD13_02224940: ; 0x02224940 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_0221F0EC + ldr r0, _02224988 ; =0x0222490C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224988: .word 0x0222490C + + arm_func_start MOD13_0222498C +MOD13_0222498C: ; 0x0222498C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _022249E4 ; =MOD13_02224940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022249E4: .word MOD13_02224940 + + arm_func_start MOD13_022249E8 +MOD13_022249E8: ; 0x022249E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02224A68 ; =0x0223FF94 + ldr r1, _02224A6C ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02224A70 ; =0x04001008 + ldr ip, _02224A74 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02224A78 ; =0x04000008 + ldr r2, _02224A7C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02224A80 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224A68: .word 0x0223FF94 +_02224A6C: .word 0x020C908C +_02224A70: .word 0x04001008 +_02224A74: .word 0x0400100A +_02224A78: .word 0x04000008 +_02224A7C: .word 0x0400000A +_02224A80: .word 0x0400000C + + arm_func_start MOD13_02224A84 +MOD13_02224A84: ; 0x02224A84 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02224ACC ; =0x02243088 + mov r1, #0 + strb r1, [r0] + bl MOD13_022249E8 + mov r0, #0x12 + bl MOD13_0221F4CC + mov r0, #0x3b + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0x17 + bl MOD13_0221F070 + ldr r0, _02224AD0 ; =MOD13_0222498C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224ACC: .word 0x02243088 +_02224AD0: .word MOD13_0222498C + + arm_func_start MOD13_02224AD4 +MOD13_02224AD4: ; 0x02224AD4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0x1000000 + bl OS_SpinWait + bl PM_ForceToPowerOff + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + mov r1, #1 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + ldr r0, _02224B6C ; =MOD13_02224AD4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224B6C: .word MOD13_02224AD4 + + arm_func_start MOD13_02224B70 +MOD13_02224B70: ; 0x02224B70 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02224B94 ; =0x02224B18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224B94: .word 0x02224B18 + + arm_func_start MOD13_02224B98 +MOD13_02224B98: ; 0x02224B98 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02224BC8 ; =MOD13_02224B70 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224BC8: .word MOD13_02224B70 + + arm_func_start MOD13_02224BCC +MOD13_02224BCC: ; 0x02224BCC + bx lr + + arm_func_start MOD13_02224BD0 +MOD13_02224BD0: ; 0x02224BD0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224BD0 + bl MOD13_02224BCC + bl MOD13_02224B98 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02224C48 ; =0x02224BFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224C48: .word 0x02224BFC + + arm_func_start MOD13_02224C4C +MOD13_02224C4C: ; 0x02224C4C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #5 + bl MOD13_0221F0EC + ldr r0, _02224C80 ; =0x02224C18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224C80: .word 0x02224C18 + + arm_func_start MOD13_02224C84 +MOD13_02224C84: ; 0x02224C84 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02224CBC ; =MOD13_02224C4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224CBC: .word MOD13_02224C4C + + arm_func_start MOD13_02224CC0 +MOD13_02224CC0: ; 0x02224CC0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02224D40 ; =0x0223FFA8 + ldr r1, _02224D44 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02224D48 ; =0x04001008 + ldr ip, _02224D4C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02224D50 ; =0x04000008 + ldr r2, _02224D54 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02224D58 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224D40: .word 0x0223FFA8 +_02224D44: .word 0x020C908C +_02224D48: .word 0x04001008 +_02224D4C: .word 0x0400100A +_02224D50: .word 0x04000008 +_02224D54: .word 0x0400000A +_02224D58: .word 0x0400000C + + arm_func_start MOD13_02224D5C +MOD13_02224D5C: ; 0x02224D5C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224CC0 + mov r0, #0x19 + bl MOD13_0221F070 + bl MOD13_02233808 + ldr r0, _02224D84 ; =MOD13_02224C84 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224D84: .word MOD13_02224C84 + + arm_func_start MOD13_02224D88 +MOD13_02224D88: ; 0x02224D88 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02224E08 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224E08: .word MOD13_022259A8 + + arm_func_start MOD13_02224E0C +MOD13_02224E0C: ; 0x02224E0C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02224E64 ; =MOD13_02224D88 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224E64: .word MOD13_02224D88 + + arm_func_start MOD13_02224E68 +MOD13_02224E68: ; 0x02224E68 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02224E8C ; =MOD13_02224E0C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224E8C: .word MOD13_02224E0C + + arm_func_start MOD13_02224E90 +MOD13_02224E90: ; 0x02224E90 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #7 + bl MOD13_0223424C + ldr r0, _02224EC0 ; =MOD13_02224E68 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224EC0: .word MOD13_02224E68 + + arm_func_start MOD13_02224EC4 +MOD13_02224EC4: ; 0x02224EC4 + bx lr + + arm_func_start MOD13_02224EC8 +MOD13_02224EC8: ; 0x02224EC8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224EC8 + bl MOD13_02224EC4 + bl MOD13_02224E90 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02224F40 ; =0x02224EF4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224F40: .word 0x02224EF4 + + arm_func_start MOD13_02224F44 +MOD13_02224F44: ; 0x02224F44 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_0221F0EC + ldr r0, _02224F8C ; =0x02224F10 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224F8C: .word 0x02224F10 + + arm_func_start MOD13_02224F90 +MOD13_02224F90: ; 0x02224F90 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02224FE8 ; =MOD13_02224F44 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224FE8: .word MOD13_02224F44 + + arm_func_start MOD13_02224FEC +MOD13_02224FEC: ; 0x02224FEC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x6c + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + mov fp, r0 + add r0, sp, #0x14 + bl OS_GetMacAddress + ldrb r1, [sp, #0x15] + ldr r2, _022251B8 ; =0x0223FFBC + add r0, sp, #0x40 + str r1, [sp] + ldrb r3, [sp, #0x16] + mov r1, #0x14 + str r3, [sp, #4] + ldrb r3, [sp, #0x17] + str r3, [sp, #8] + ldrb r3, [sp, #0x18] + str r3, [sp, #0xc] + ldrb r3, [sp, #0x19] + str r3, [sp, #0x10] + ldrb r3, [sp, #0x14] + bl swprintf + ldr r3, _022251BC ; =0x0223F13C + mov r2, #2 + ldrh r4, [r3, #6] + mov r1, #0x480 + add r0, sp, #0x40 + str r4, [sp] + str r2, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + mov r0, fp + bl MOD13_0223A4F0 + add r0, sp, #0x1c + bl FUN_02095EC8 + ldr sb, [sp, #0x1c] + ldr sl, [sp, #0x20] + mov r3, #0 + cmp sl, r3 + cmpeq sb, r3 + beq _02225160 + mov r0, sb + mov r1, sl + mov r2, #0xa + bl _ull_mod + mov r1, #0x3e8 + umull r4, r1, r0, r1 + mov r0, sb + mov r1, sl + mov r3, #0 + mov r2, #0xa + str r4, [sp, #0x3c] + bl _ll_udiv + mov sb, r0 + mov sl, r1 + mov r8, #0 + ldr r7, _022251C0 ; =0x00002710 + add r5, sp, #0x30 + mov r6, r8 + mov r4, r8 +_022250EC: + mov r0, sb + mov r1, sl + mov r2, r7 + mov r3, r6 + bl _ull_mod + rsb r1, r8, #2 + str r0, [r5, r1, lsl #2] + mov r0, sb + mov r1, sl + mov r2, r7 + mov r3, r4 + bl _ll_udiv + mov sb, r0 + mov sl, r1 + add r8, r8, #1 + cmp r8, #3 + blt _022250EC + ldr r1, [sp, #0x34] + ldr r2, _022251C4 ; =0x0223FFF8 + str r1, [sp] + ldr r1, [sp, #0x38] + add r0, sp, #0x40 + str r1, [sp, #4] + ldr r3, [sp, #0x3c] + mov r1, #0x14 + str r3, [sp, #8] + ldr r3, [sp, #0x30] + bl swprintf + b _02225170 +_02225160: + ldr r2, _022251C8 ; =0x02240020 + add r0, sp, #0x40 + mov r1, #0x14 + bl swprintf +_02225170: + ldr r0, _022251CC ; =0x0223F144 + mov r3, #2 + ldrh r4, [r0, #6] + mov r2, #0x480 + add r1, sp, #0x40 + str r4, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + ldrh r1, [r0] + ldrh r2, [r0, #2] + ldrh r3, [r0, #4] + mov r0, fp + bl MOD13_0223A4F0 + mov r0, fp + bl MOD13_0223A410 + add sp, sp, #0x6c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022251B8: .word 0x0223FFBC +_022251BC: .word 0x0223F13C +_022251C0: .word 0x00002710 +_022251C4: .word 0x0223FFF8 +_022251C8: .word 0x02240020 +_022251CC: .word 0x0223F144 + + arm_func_start MOD13_022251D0 +MOD13_022251D0: ; 0x022251D0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02225250 ; =0x02240048 + ldr r1, _02225254 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02225258 ; =0x04001008 + ldr ip, _0222525C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02225260 ; =0x04000008 + ldr r2, _02225264 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02225268 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225250: .word 0x02240048 +_02225254: .word 0x020C908C +_02225258: .word 0x04001008 +_0222525C: .word 0x0400100A +_02225260: .word 0x04000008 +_02225264: .word 0x0400000A +_02225268: .word 0x0400000C + + arm_func_start MOD13_0222526C +MOD13_0222526C: ; 0x0222526C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022251D0 + mov r0, #0x11 + bl MOD13_0221F4CC + mov r0, #0x3a + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + bl MOD13_02224FEC + ldr r0, _022252A4 ; =MOD13_02224F90 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022252A4: .word MOD13_02224F90 + + arm_func_start MOD13_022252A8 +MOD13_022252A8: ; 0x022252A8 + ldr r1, _022252CC ; =0x0224308C + ldr r0, _022252D0 ; =0x02243094 + ldrb r2, [r1] + ldr r1, _022252D4 ; =0x0223F14C + ldr ip, _022252D8 ; =MOD13_022327DC + ldrb r1, [r1, r2] + ldr r0, [r0] + mov r2, r1 + bx ip + .align 2, 0 +_022252CC: .word 0x0224308C +_022252D0: .word 0x02243094 +_022252D4: .word 0x0223F14C +_022252D8: .word MOD13_022327DC + + arm_func_start MOD13_022252DC +MOD13_022252DC: ; 0x022252DC + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #1 + bne _0222530C + ldr r0, _02225368 ; =0x0224308C + mov r1, #3 + ldrb r0, [r0] + add r0, r0, #2 + bl FX_ModS32 + ldr r1, _02225368 ; =0x0224308C + strb r0, [r1] + b _02225328 +_0222530C: + ldr r0, _02225368 ; =0x0224308C + mov r1, #3 + ldrb r0, [r0] + add r0, r0, #1 + bl FX_ModS32 + ldr r1, _02225368 ; =0x0224308C + strb r0, [r1] +_02225328: + mov r0, #8 + bl MOD13_0223424C + ldr r0, _02225368 ; =0x0224308C + ldr ip, _0222536C ; =0x0223F19C + ldrb r0, [r0] + ldr r1, _02225370 ; =0x0223F1A0 + ldr r2, _02225374 ; =0x0223F19E + mov lr, r0, lsl #3 + ldr r3, _02225378 ; =0x0223F1A2 + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225368: .word 0x0224308C +_0222536C: .word 0x0223F19C +_02225370: .word 0x0223F1A0 +_02225374: .word 0x0223F19E +_02225378: .word 0x0223F1A2 + + arm_func_start MOD13_0222537C +MOD13_0222537C: ; 0x0222537C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _0222549C ; =0x02243098 + ldr r0, [r0] + bl MOD13_0223B974 + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _022254A0 ; =0x02243094 + ldr r0, [r0] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _022254A4 ; =0x02243090 + ldrb r0, [r0] + cmp r0, #0 + bne _02225420 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _022254A8 ; =MOD13_022245B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225420: + ldr r0, _022254AC ; =0x0224308C + ldrb r0, [r0] + cmp r0, #0 + beq _02225448 + cmp r0, #1 + beq _02225464 + cmp r0, #2 + beq _02225480 + add sp, sp, #4 + ldmia sp!, {pc} +_02225448: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022254B0 ; =MOD13_0222526C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225464: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022254B4 ; =MOD13_02224A84 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225480: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022254B8 ; =MOD13_02226650 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222549C: .word 0x02243098 +_022254A0: .word 0x02243094 +_022254A4: .word 0x02243090 +_022254A8: .word MOD13_022245B4 +_022254AC: .word 0x0224308C +_022254B0: .word MOD13_0222526C +_022254B4: .word MOD13_02224A84 +_022254B8: .word MOD13_02226650 + + arm_func_start MOD13_022254BC +MOD13_022254BC: ; 0x022254BC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02225524 ; =0x02243090 + ldrb r0, [r0] + cmp r0, #0 + beq _022254EC + bl MOD13_0221ED28 +_022254EC: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02225528 ; =MOD13_0222537C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225524: .word 0x02243090 +_02225528: .word MOD13_0222537C + + arm_func_start MOD13_0222552C +MOD13_0222552C: ; 0x0222552C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02225550 ; =MOD13_022254BC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225550: .word MOD13_022254BC + + arm_func_start MOD13_02225554 +MOD13_02225554: ; 0x02225554 + stmdb sp!, {lr} + sub sp, sp, #0x14 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02225578 + cmp r0, #1 + beq _02225584 + add sp, sp, #0x14 + ldmia sp!, {pc} +_02225578: + mov r0, #7 + bl MOD13_0223424C + b _022255E4 +_02225584: + add r0, sp, #0 + bl FUN_02095EC8 + ldr r0, _022255F4 ; =0x0224308C + ldrb r0, [r0] + cmp r0, #0 + beq _022255CC + ldr r2, [sp] + ldr r1, [sp, #4] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + bne _022255CC + mov r0, #9 + bl MOD13_0223424C + mvn r0, #0 + bl MOD13_0221ECE0 + add sp, sp, #0x14 + ldmia sp!, {pc} +_022255CC: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_022252A8 + ldr r0, _022255F8 ; =0x02243090 + mov r1, #1 + strb r1, [r0] +_022255E4: + ldr r0, _022255FC ; =MOD13_0222552C + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_022255F4: .word 0x0224308C +_022255F8: .word 0x02243090 +_022255FC: .word MOD13_0222552C + + arm_func_start MOD13_02225600 +MOD13_02225600: ; 0x02225600 + bx lr + + arm_func_start MOD13_02225604 +MOD13_02225604: ; 0x02225604 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _022256FC ; =0x0223F184 + mov r5, #0 +_02225614: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02225668 + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _02225700 ; =0x0224308C + ldr ip, _02225704 ; =0x0223F19C + strb r5, [r0] + ldrb r0, [r0] + ldr r1, _02225708 ; =0x0223F1A0 + ldr r2, _0222570C ; =0x0223F19E + mov lr, r0, lsl #3 + ldr r3, _02225710 ; =0x0223F1A2 + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02225668: + add r5, r5, #1 + cmp r5, #3 + add r4, r4, #8 + blo _02225614 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02225698 + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02225698: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022256B8 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022256B8: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022256D8 + mov r0, #1 + bl MOD13_022252DC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022256D8: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #3 + bl MOD13_022252DC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022256FC: .word 0x0223F184 +_02225700: .word 0x0224308C +_02225704: .word 0x0223F19C +_02225708: .word 0x0223F1A0 +_0222570C: .word 0x0223F19E +_02225710: .word 0x0223F1A2 + + arm_func_start MOD13_02225714 +MOD13_02225714: ; 0x02225714 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225604 + bl MOD13_02225600 + bl MOD13_02225554 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02225760 ; =MOD13_02225714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225760: .word MOD13_02225714 + + arm_func_start MOD13_02225764 +MOD13_02225764: ; 0x02225764 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _022257AC ; =0x02225730 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022257AC: .word 0x02225730 + + arm_func_start MOD13_022257B0 +MOD13_022257B0: ; 0x022257B0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _02225808 ; =MOD13_02225764 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225808: .word MOD13_02225764 + + arm_func_start MOD13_0222580C +MOD13_0222580C: ; 0x0222580C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x48 + ldr r4, _0222597C ; =0x0223F154 + add r3, sp, #0 + mov r2, #0xb +_02225820: + ldrb r1, [r4], #1 + ldrb r0, [r4], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02225820 + ldr r4, _02225980 ; =0x0223F16C + add r3, sp, #0x16 + mov r2, #0xb +_02225844: + ldrb r1, [r4], #1 + ldrb r0, [r4], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02225844 + ldrb r2, [r4] + ldr r0, _02225984 ; =0x0224005C + ldr r1, _02225988 ; =0x020C8D4C + strb r2, [r3] + bl MOD13_0221F174 + ldr r0, _0222598C ; =0x02240074 + ldr r1, _02225990 ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0x16 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _02225994 ; =0x02243094 + str r0, [r1] + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + mov r5, r0 + add r0, sp, #0x30 + bl FUN_02095EC8 + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x34] + mov r6, #0 + cmp r0, r6 + cmpeq r1, r6 + bne _02225900 + add r8, r5, #0xc0 + add r7, r5, #0x40 + mov r4, #0x20 +_022258DC: + mov r0, r8 + mov r1, r7 + mov r2, r4 + bl MI_CpuCopy8 + add r6, r6, #1 + cmp r6, #2 + add r8, r8, #0x20 + add r7, r7, #0x20 + blt _022258DC +_02225900: + mov r0, r5 + mov r1, #0x200 + bl DC_FlushRange + mov r0, r5 + mov r1, #0 + mov r2, #0x200 + bl GX_LoadBGPltt + mov r0, r5 + bl MOD13_0223939C + ldr ip, _02225998 ; =0x04001008 + ldr r3, _0222599C ; =0x0400100A + ldrh r0, [ip] + ldr r2, _022259A0 ; =0x0400000A + ldr r1, _022259A4 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0222597C: .word 0x0223F154 +_02225980: .word 0x0223F16C +_02225984: .word 0x0224005C +_02225988: .word 0x020C8D4C +_0222598C: .word 0x02240074 +_02225990: .word 0x020C908C +_02225994: .word 0x02243094 +_02225998: .word 0x04001008 +_0222599C: .word 0x0400100A +_022259A0: .word 0x0400000A +_022259A4: .word 0x0400000C + + arm_func_start MOD13_022259A8 +MOD13_022259A8: ; 0x022259A8 + stmdb sp!, {r4, lr} + ldr r0, _02225A70 ; =0x02243090 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222580C + mov r0, #0x10 + bl MOD13_0221F4CC + mov r0, #3 + bl MOD13_02234384 + mov r0, #0x39 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0 + mov r1, #0x5b + bl MOD13_02239E54 + ldr r3, _02225A74 ; =0x02243098 + ldr r1, _02225A78 ; =0x0223F150 + str r0, [r3] + ldrh ip, [r1] + ldrh r2, [r1, #2] + ldr r1, _02225A7C ; =0x000001FF + ldr lr, [r0] + and r4, ip, r1 + and ip, r2, #0xff + ldr r1, _02225A80 ; =0xFE00FF00 + ldr r2, _02225A84 ; =0x0224308C + and r1, lr, r1 + orr r1, r1, ip + orr r1, r1, r4, lsl #16 + str r1, [r0] + ldr lr, [r3] + ldr r0, _02225A88 ; =0x0223F19C + ldrh r3, [lr, #4] + ldr r1, _02225A8C ; =0x0223F1A0 + ldr ip, _02225A90 ; =0x0223F19E + bic r3, r3, #0xc00 + orr r3, r3, #0xc00 + strh r3, [lr, #4] + ldrb r2, [r2] + ldr r3, _02225A94 ; =0x0223F1A2 + mov lr, r2, lsl #3 + ldrh r0, [r0, lr] + ldrh r1, [r1, lr] + ldrh r2, [ip, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + ldr r0, _02225A98 ; =MOD13_022257B0 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_02225A70: .word 0x02243090 +_02225A74: .word 0x02243098 +_02225A78: .word 0x0223F150 +_02225A7C: .word 0x000001FF +_02225A80: .word 0xFE00FF00 +_02225A84: .word 0x0224308C +_02225A88: .word 0x0223F19C +_02225A8C: .word 0x0223F1A0 +_02225A90: .word 0x0223F19E +_02225A94: .word 0x0223F1A2 +_02225A98: .word MOD13_022257B0 + + arm_func_start MOD13_02225A9C +MOD13_02225A9C: ; 0x02225A9C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #2 + bne _02225ACC + bl MOD13_02233808 + ldr r0, _02225B24 ; =0x0224309C + mov r1, #1 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x10 + bl MOD13_0223424C + b _02225B08 +_02225ACC: + cmp r0, #3 + bne _02225AF0 + ldr r0, _02225B24 ; =0x0224309C + mov r1, #2 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C + b _02225B08 +_02225AF0: + ldr r0, _02225B24 ; =0x0224309C + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C +_02225B08: + mov r0, #0 + bl MOD13_02223944 + bl MOD13_022239B4 + ldr r0, _02225B28 ; =MOD13_02225BD8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225B24: .word 0x0224309C +_02225B28: .word MOD13_02225BD8 + + arm_func_start MOD13_02225B2C +MOD13_02225B2C: ; 0x02225B2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221F694 + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02225BC8 ; =0x0224309C + ldrb r0, [r0] + cmp r0, #0 + bne _02225BA0 + ldr r0, _02225BCC ; =MOD13_02226CB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225BA0: + cmp r0, #2 + bne _02225BB8 + ldr r0, _02225BD0 ; =MOD13_022268B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225BB8: + ldr r0, _02225BD4 ; =MOD13_02225FE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225BC8: .word 0x0224309C +_02225BCC: .word MOD13_02226CB0 +_02225BD0: .word MOD13_022268B4 +_02225BD4: .word MOD13_02225FE4 + + arm_func_start MOD13_02225BD8 +MOD13_02225BD8: ; 0x02225BD8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02225C04 ; =MOD13_02225B2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225C04: .word MOD13_02225B2C + + arm_func_start MOD13_02225C08 +MOD13_02225C08: ; 0x02225C08 + bx lr + + arm_func_start MOD13_02225C0C +MOD13_02225C0C: ; 0x02225C0C + bx lr + + arm_func_start MOD13_02225C10 +MOD13_02225C10: ; 0x02225C10 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225C0C + bl MOD13_02225C08 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02225C5C ; =MOD13_02225A9C + bl MOD13_02223944 + ldr r0, _02225C60 ; =MOD13_02225C10 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225C5C: .word MOD13_02225A9C +_02225C60: .word MOD13_02225C10 + + arm_func_start MOD13_02225C64 +MOD13_02225C64: ; 0x02225C64 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02225C9C ; =0x02225C28 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225C9C: .word 0x02225C28 + + arm_func_start MOD13_02225CA0 +MOD13_02225CA0: ; 0x02225CA0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02225D20 ; =0x0224008C + ldr r1, _02225D24 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02225D28 ; =0x04001008 + ldr ip, _02225D2C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02225D30 ; =0x04000008 + ldr r2, _02225D34 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02225D38 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225D20: .word 0x0224008C +_02225D24: .word 0x020C908C +_02225D28: .word 0x04001008 +_02225D2C: .word 0x0400100A +_02225D30: .word 0x04000008 +_02225D34: .word 0x0400000A +_02225D38: .word 0x0400000C + + arm_func_start MOD13_02225D3C +MOD13_02225D3C: ; 0x02225D3C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225CA0 + mov r0, #0x1e + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + mov r0, #1 + bl MOD13_0221F6E0 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _02225D78 ; =MOD13_02225C64 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225D78: .word MOD13_02225C64 + + arm_func_start MOD13_02225D7C +MOD13_02225D7C: ; 0x02225D7C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0x1000000 + bl OS_SpinWait + bl PM_ForceToPowerOff + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + mov r1, #1 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + ldr r0, _02225E14 ; =MOD13_02225D7C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225E14: .word MOD13_02225D7C + + arm_func_start MOD13_02225E18 +MOD13_02225E18: ; 0x02225E18 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02225E3C ; =0x02225DC0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225E3C: .word 0x02225DC0 + + arm_func_start MOD13_02225E40 +MOD13_02225E40: ; 0x02225E40 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02225E70 ; =MOD13_02225E18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225E70: .word MOD13_02225E18 + + arm_func_start MOD13_02225E74 +MOD13_02225E74: ; 0x02225E74 + bx lr + + arm_func_start MOD13_02225E78 +MOD13_02225E78: ; 0x02225E78 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225E78 + bl MOD13_02225E74 + bl MOD13_02225E40 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02225EF0 ; =0x02225EA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225EF0: .word 0x02225EA4 + + arm_func_start MOD13_02225EF4 +MOD13_02225EF4: ; 0x02225EF4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #5 + bl MOD13_0221F0EC + ldr r0, _02225F28 ; =0x02225EC0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225F28: .word 0x02225EC0 + + arm_func_start MOD13_02225F2C +MOD13_02225F2C: ; 0x02225F2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02225F64 ; =MOD13_02225EF4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225F64: .word MOD13_02225EF4 + + arm_func_start MOD13_02225F68 +MOD13_02225F68: ; 0x02225F68 + ldr r1, _02225FD0 ; =0x04001008 + ldr ip, _02225FD4 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02225FD8 ; =0x04000008 + ldr r2, _02225FDC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02225FE0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + bx lr + .align 2, 0 +_02225FD0: .word 0x04001008 +_02225FD4: .word 0x0400100A +_02225FD8: .word 0x04000008 +_02225FDC: .word 0x0400000A +_02225FE0: .word 0x0400000C + + arm_func_start MOD13_02225FE4 +MOD13_02225FE4: ; 0x02225FE4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225F68 + mov r0, #0x1f + bl MOD13_0221F070 + ldr r0, _02226008 ; =MOD13_02225F2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226008: .word MOD13_02225F2C + + arm_func_start MOD13_0222600C +MOD13_0222600C: ; 0x0222600C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226068 ; =MOD13_022275A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226068: .word MOD13_022275A4 + + arm_func_start MOD13_0222606C +MOD13_0222606C: ; 0x0222606C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022260B0 ; =MOD13_0222600C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022260B0: .word MOD13_0222600C + + arm_func_start MOD13_022260B4 +MOD13_022260B4: ; 0x022260B4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _022260D8 ; =MOD13_0222606C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022260D8: .word MOD13_0222606C + + arm_func_start MOD13_022260DC +MOD13_022260DC: ; 0x022260DC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222610C ; =MOD13_022260B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222610C: .word MOD13_022260B4 + + arm_func_start MOD13_02226110 +MOD13_02226110: ; 0x02226110 + bx lr + + arm_func_start MOD13_02226114 +MOD13_02226114: ; 0x02226114 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226114 + bl MOD13_02226110 + bl MOD13_022260DC + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222618C ; =0x02226140 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222618C: .word 0x02226140 + + arm_func_start MOD13_02226190 +MOD13_02226190: ; 0x02226190 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #4 + bl MOD13_0221F0EC + ldr r0, _022261D8 ; =0x0222615C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022261D8: .word 0x0222615C + + arm_func_start MOD13_022261DC +MOD13_022261DC: ; 0x022261DC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02226214 ; =MOD13_02226190 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226214: .word MOD13_02226190 + + arm_func_start MOD13_02226218 +MOD13_02226218: ; 0x02226218 + ldr r1, _02226280 ; =0x04001008 + ldr ip, _02226284 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02226288 ; =0x04000008 + ldr r2, _0222628C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02226290 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + bx lr + .align 2, 0 +_02226280: .word 0x04001008 +_02226284: .word 0x0400100A +_02226288: .word 0x04000008 +_0222628C: .word 0x0400000A +_02226290: .word 0x0400000C + + arm_func_start MOD13_02226294 +MOD13_02226294: ; 0x02226294 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226218 + mov r0, #0x1a + bl MOD13_0221F070 + ldr r0, _022262B8 ; =MOD13_022261DC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022262B8: .word MOD13_022261DC + + arm_func_start MOD13_022262BC +MOD13_022262BC: ; 0x022262BC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02226388 ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _022262FC + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_022262FC: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02226388 ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _02226334 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02226334: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02226388 ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _0222636C + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222638C ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222636C: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226390 ; =MOD13_02226294 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226388: .word 0x022430A0 +_0222638C: .word MOD13_022259A8 +_02226390: .word MOD13_02226294 + + arm_func_start MOD13_02226394 +MOD13_02226394: ; 0x02226394 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _022263FC ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _022263D8 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_022263D8: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226400 ; =MOD13_022262BC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022263FC: .word 0x022430A0 +_02226400: .word MOD13_022262BC + + arm_func_start MOD13_02226404 +MOD13_02226404: ; 0x02226404 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02226428 ; =MOD13_02226394 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226428: .word MOD13_02226394 + + arm_func_start MOD13_0222642C +MOD13_0222642C: ; 0x0222642C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02226450 + cmp r0, #1 + beq _0222645C + add sp, sp, #4 + ldmia sp!, {pc} +_02226450: + mov r0, #7 + bl MOD13_0223424C + b _02226470 +_0222645C: + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02226480 ; =0x022430A0 + mov r1, #1 + strb r1, [r0] +_02226470: + ldr r0, _02226484 ; =MOD13_02226404 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226480: .word 0x022430A0 +_02226484: .word MOD13_02226404 + + arm_func_start MOD13_02226488 +MOD13_02226488: ; 0x02226488 + bx lr + + arm_func_start MOD13_0222648C +MOD13_0222648C: ; 0x0222648C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022264AC + mov r0, #1 + bl MOD13_0221ECF4 +_022264AC: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222648C + bl MOD13_02226488 + bl MOD13_0222642C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222651C ; =0x022264D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222651C: .word 0x022264D0 + + arm_func_start MOD13_02226520 +MOD13_02226520: ; 0x02226520 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_0221F0EC + ldr r0, _02226554 ; =0x022264EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226554: .word 0x022264EC + + arm_func_start MOD13_02226558 +MOD13_02226558: ; 0x02226558 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _022265B0 ; =MOD13_02226520 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022265B0: .word MOD13_02226520 + + arm_func_start MOD13_022265B4 +MOD13_022265B4: ; 0x022265B4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226634 ; =0x022400A0 + ldr r1, _02226638 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222663C ; =0x04001008 + ldr ip, _02226640 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02226644 ; =0x04000008 + ldr r2, _02226648 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222664C ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226634: .word 0x022400A0 +_02226638: .word 0x020C908C +_0222663C: .word 0x04001008 +_02226640: .word 0x0400100A +_02226644: .word 0x04000008 +_02226648: .word 0x0400000A +_0222664C: .word 0x0400000C + + arm_func_start MOD13_02226650 +MOD13_02226650: ; 0x02226650 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226698 ; =0x022430A0 + mov r1, #0 + strb r1, [r0] + bl MOD13_022265B4 + mov r0, #0x13 + bl MOD13_0221F4CC + mov r0, #0x3c + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0x1b + bl MOD13_0221F070 + ldr r0, _0222669C ; =MOD13_02226558 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226698: .word 0x022430A0 +_0222669C: .word MOD13_02226558 + + arm_func_start MOD13_022266A0 +MOD13_022266A0: ; 0x022266A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022266D8 ; =0x022430A4 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _022266DC ; =MOD13_02226754 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022266D8: .word 0x022430A4 +_022266DC: .word MOD13_02226754 + + arm_func_start MOD13_022266E0 +MOD13_022266E0: ; 0x022266E0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226750 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226750: .word MOD13_022259A8 + + arm_func_start MOD13_02226754 +MOD13_02226754: ; 0x02226754 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226794 ; =MOD13_022266E0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226794: .word MOD13_022266E0 + + arm_func_start MOD13_02226798 +MOD13_02226798: ; 0x02226798 + bx lr + + arm_func_start MOD13_0222679C +MOD13_0222679C: ; 0x0222679C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022266A0 + bl MOD13_02226798 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _022267F0 ; =MOD13_0222679C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022267F0: .word MOD13_0222679C + + arm_func_start MOD13_022267F4 +MOD13_022267F4: ; 0x022267F4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222682C ; =0x022267B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222682C: .word 0x022267B4 + + arm_func_start MOD13_02226830 +MOD13_02226830: ; 0x02226830 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222689C ; =0x022400B4 + ldr r1, _022268A0 ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _022268A4 ; =0x04001008 + ldr r3, _022268A8 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _022268AC ; =0x0400000A + ldr r1, _022268B0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222689C: .word 0x022400B4 +_022268A0: .word 0x020C908C +_022268A4: .word 0x04001008 +_022268A8: .word 0x0400100A +_022268AC: .word 0x0400000A +_022268B0: .word 0x0400000C + + arm_func_start MOD13_022268B4 +MOD13_022268B4: ; 0x022268B4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022268E4 ; =0x022430A4 + mov r1, #0 + strb r1, [r0] + bl MOD13_02226830 + mov r0, #0x21 + bl MOD13_0221F070 + ldr r0, _022268E8 ; =MOD13_022267F4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022268E4: .word 0x022430A4 +_022268E8: .word MOD13_022267F4 + + arm_func_start MOD13_022268EC +MOD13_022268EC: ; 0x022268EC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _022269A8 ; =0x022430AC + ldrb r0, [r0] + cmp r0, #0 + bne _02226954 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02226954: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _022269A8 ; =0x022430AC + ldrb r0, [r0] + cmp r0, #0 + bne _0222698C + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022269AC ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222698C: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022269B0 ; =MOD13_022275A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022269A8: .word 0x022430AC +_022269AC: .word MOD13_022259A8 +_022269B0: .word MOD13_022275A4 + + arm_func_start MOD13_022269B4 +MOD13_022269B4: ; 0x022269B4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _02226A1C ; =0x022430AC + ldrb r0, [r0] + cmp r0, #0 + bne _022269F8 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_022269F8: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226A20 ; =MOD13_022268EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226A1C: .word 0x022430AC +_02226A20: .word MOD13_022268EC + + arm_func_start MOD13_02226A24 +MOD13_02226A24: ; 0x02226A24 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02226A48 ; =MOD13_022269B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226A48: .word MOD13_022269B4 + + arm_func_start MOD13_02226A4C +MOD13_02226A4C: ; 0x02226A4C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02226A84 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _02226AA8 ; =0x022430AC + mov r2, #1 + mov r0, #6 + strb r2, [r1] + bl MOD13_0223424C + b _02226A98 +_02226A84: + ldr r1, _02226AA8 ; =0x022430AC + mov r2, #0 + mov r0, #7 + strb r2, [r1] + bl MOD13_0223424C +_02226A98: + ldr r0, _02226AAC ; =MOD13_02226A24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226AA8: .word 0x022430AC +_02226AAC: .word MOD13_02226A24 + + arm_func_start MOD13_02226AB0 +MOD13_02226AB0: ; 0x02226AB0 + bx lr + + arm_func_start MOD13_02226AB4 +MOD13_02226AB4: ; 0x02226AB4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02226AD4 + mov r0, #1 + bl MOD13_0221ECF4 +_02226AD4: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226AB4 + bl MOD13_02226AB0 + bl MOD13_02226A4C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02226B54 ; =0x02226AF8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226B54: .word 0x02226AF8 + + arm_func_start MOD13_02226B58 +MOD13_02226B58: ; 0x02226B58 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_0221F0EC + ldr r0, _02226BA0 ; =0x02226B14 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226BA0: .word 0x02226B14 + + arm_func_start MOD13_02226BA4 +MOD13_02226BA4: ; 0x02226BA4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02226C0C ; =0x022430A8 + ldrb r0, [r0] + cmp r0, #0 + beq _02226BFC + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 +_02226BFC: + ldr r0, _02226C10 ; =MOD13_02226B58 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226C0C: .word 0x022430A8 +_02226C10: .word MOD13_02226B58 + + arm_func_start MOD13_02226C14 +MOD13_02226C14: ; 0x02226C14 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226C94 ; =0x022400C8 + ldr r1, _02226C98 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02226C9C ; =0x04001008 + ldr ip, _02226CA0 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02226CA4 ; =0x04000008 + ldr r2, _02226CA8 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02226CAC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226C94: .word 0x022400C8 +_02226C98: .word 0x020C908C +_02226C9C: .word 0x04001008 +_02226CA0: .word 0x0400100A +_02226CA4: .word 0x04000008 +_02226CA8: .word 0x0400000A +_02226CAC: .word 0x0400000C + + arm_func_start MOD13_02226CB0 +MOD13_02226CB0: ; 0x02226CB0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226C14 + mov r0, #0x20 + bl MOD13_0221F070 + mov r0, #0x3c + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + ldr r1, _02226CEC ; =0x022430A8 + strb r0, [r1] + ldr r0, _02226CF0 ; =MOD13_02226BA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226CEC: .word 0x022430A8 +_02226CF0: .word MOD13_02226BA4 + + arm_func_start MOD13_02226CF4 +MOD13_02226CF4: ; 0x02226CF4 + ldr r0, _02226D04 ; =0x022430B0 + mov r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_02226D04: .word 0x022430B0 + + arm_func_start MOD13_02226D08 +MOD13_02226D08: ; 0x02226D08 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226DDC ; =0x022430B0 + ldrb r0, [r0] + cmp r0, #0 + bne _02226D30 + ldr r0, _02226DE0 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226D40 +_02226D30: + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02226D40: + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02226DE0 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226D74 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02226D74: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226DDC ; =0x022430B0 + ldrb r0, [r0] + cmp r0, #0 + beq _02226DA0 + ldr r0, _02226DE4 ; =MOD13_02226CB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02226DA0: + ldr r0, _02226DE0 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226DCC + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + ldr r0, _02226DE8 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02226DCC: + ldr r0, _02226DEC ; =MOD13_02225D3C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226DDC: .word 0x022430B0 +_02226DE0: .word 0x022430B4 +_02226DE4: .word MOD13_02226CB0 +_02226DE8: .word MOD13_022259A8 +_02226DEC: .word MOD13_02225D3C + + arm_func_start MOD13_02226DF0 +MOD13_02226DF0: ; 0x02226DF0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02226E5C ; =0x022430B0 + ldrb r0, [r0] + cmp r0, #0 + bne _02226E48 + ldr r0, _02226E60 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #1 + bne _02226E48 + bl MOD13_02223938 + b _02226E4C +_02226E48: + bl MOD13_022239B4 +_02226E4C: + ldr r0, _02226E64 ; =MOD13_02226D08 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226E5C: .word 0x022430B0 +_02226E60: .word 0x022430B4 +_02226E64: .word MOD13_02226D08 + + arm_func_start MOD13_02226E68 +MOD13_02226E68: ; 0x02226E68 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02226EC8 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226EA4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02226EA4: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226ECC ; =MOD13_02226DF0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226EC8: .word 0x022430B4 +_02226ECC: .word MOD13_02226DF0 + + arm_func_start MOD13_02226ED0 +MOD13_02226ED0: ; 0x02226ED0 + bx lr + + arm_func_start MOD13_02226ED4 +MOD13_02226ED4: ; 0x02226ED4 + bx lr + + arm_func_start MOD13_02226ED8 +MOD13_02226ED8: ; 0x02226ED8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226ED4 + bl MOD13_02226ED0 + bl MOD13_02235E9C + cmp r0, #0 + beq _02226F04 + cmp r0, #1 + beq _02226F1C + add sp, sp, #4 + ldmia sp!, {pc} +_02226F04: + ldr r1, _02226F4C ; =0x022430B4 + mov r2, #0 + mov r0, #7 + strb r2, [r1] + bl MOD13_0223424C + b _02226F30 +_02226F1C: + ldr r1, _02226F4C ; =0x022430B4 + mov r2, #1 + mov r0, #0xe + strb r2, [r1] + bl MOD13_0223424C +_02226F30: + mov r0, #0 + bl MOD13_02223944 + bl MOD13_02235EB0 + ldr r0, _02226F50 ; =MOD13_02226E68 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226F4C: .word 0x022430B4 +_02226F50: .word MOD13_02226E68 + + arm_func_start MOD13_02226F54 +MOD13_02226F54: ; 0x02226F54 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02226F80 ; =MOD13_02226ED8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226F80: .word MOD13_02226ED8 + + arm_func_start MOD13_02226F84 +MOD13_02226F84: ; 0x02226F84 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r2, #0 + mov r0, #0x1d + mov r1, #4 + mvn r3, #0 + str r2, [sp] + bl MOD13_02235EFC + ldr r0, _02226FC8 ; =MOD13_02226F54 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226FC8: .word MOD13_02226F54 + + arm_func_start MOD13_02226FCC +MOD13_02226FCC: ; 0x02226FCC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227004 ; =MOD13_02226F84 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227004: .word MOD13_02226F84 + + arm_func_start MOD13_02227008 +MOD13_02227008: ; 0x02227008 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227088 ; =0x022400DC + ldr r1, _0222708C ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02227090 ; =0x04001008 + ldr ip, _02227094 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02227098 ; =0x04000008 + ldr r2, _0222709C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _022270A0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227088: .word 0x022400DC +_0222708C: .word 0x020C908C +_02227090: .word 0x04001008 +_02227094: .word 0x0400100A +_02227098: .word 0x04000008 +_0222709C: .word 0x0400000A +_022270A0: .word 0x0400000C + + arm_func_start MOD13_022270A4 +MOD13_022270A4: ; 0x022270A4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x2c + bl MOD13_0222391C + mov r5, r0 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _02227160 ; =0x022430B4 + mov r3, #0 + ldr r1, _02227164 ; =0x022430B0 + mov r4, r0 + strb r3, [r2] + strb r3, [r1] + bl MOD13_02227008 + mov r0, #0 + add r1, sp, #0x10 + mov r2, #0x16 + bl MIi_CpuClear16 + ldrb r2, [r5, #1] + add r0, r5, #2 + add r1, sp, #0x10 + mov r2, r2, lsl #1 + bl MIi_CpuCopy16 + ldr r0, _02227168 ; =0x0223F1B4 + mov lr, #2 + ldrh r2, [r0, #2] + ldrh r5, [r0, #6] + ldrh r1, [r0] + mov ip, #0x480 + sub r5, r5, r2 + str r5, [sp] + str lr, [sp, #4] + add r3, sp, #0x10 + str ip, [sp, #8] + str r3, [sp, #0xc] + ldrh r3, [r0, #4] + mov r0, r4 + sub r3, r3, r1 + bl MOD13_0223A4F0 + mov r0, r4 + bl MOD13_0223A410 + ldr r0, _0222716C ; =MOD13_02226CF4 + bl MOD13_02223944 + ldr r0, _02227170 ; =MOD13_02226FCC + bl MOD13_02222FBC + add sp, sp, #0x2c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02227160: .word 0x022430B4 +_02227164: .word 0x022430B0 +_02227168: .word 0x0223F1B4 +_0222716C: .word MOD13_02226CF4 +_02227170: .word MOD13_02226FCC + + arm_func_start MOD13_02227174 +MOD13_02227174: ; 0x02227174 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_022341E8 + cmp r4, #0 + bne _022271A0 + ldr r1, _022271C8 ; =0x022430B8 + mov r2, #1 + mov r0, #0x10 + strb r2, [r1] + bl MOD13_0223424C + b _022271B4 +_022271A0: + ldr r1, _022271C8 ; =0x022430B8 + mov r2, #2 + mov r0, #0x12 + strb r2, [r1] + bl MOD13_0223424C +_022271B4: + mov r0, #0 + bl MOD13_02223944 + ldr r0, _022271CC ; =MOD13_02227384 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_022271C8: .word 0x022430B8 +_022271CC: .word MOD13_02227384 + + arm_func_start MOD13_022271D0 +MOD13_022271D0: ; 0x022271D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227210 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02227210: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227240 + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02227240: + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222726C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222726C: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _022272A4 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022272E8 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022272A4: + cmp r0, #2 + bne _022272C8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022272EC ; =MOD13_02226CB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022272C8: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022272F0 ; =MOD13_022270A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022272E4: .word 0x022430B8 +_022272E8: .word MOD13_022259A8 +_022272EC: .word MOD13_02226CB0 +_022272F0: .word MOD13_022270A4 + + arm_func_start MOD13_022272F4 +MOD13_022272F4: ; 0x022272F4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222737C ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227330 + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02227330: + bl MOD13_0221ED28 + ldr r0, _0222737C ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227358 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02227358: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02227380 ; =MOD13_022271D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222737C: .word 0x022430B8 +_02227380: .word MOD13_022271D0 + + arm_func_start MOD13_02227384 +MOD13_02227384: ; 0x02227384 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022273BC ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _022273A0 + bl MOD13_022239B4 +_022273A0: + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _022273C0 ; =MOD13_022272F4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022273BC: .word 0x022430B8 +_022273C0: .word MOD13_022272F4 + + arm_func_start MOD13_022273C4 +MOD13_022273C4: ; 0x022273C4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022273F8 ; =MOD13_02227384 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022273F8: .word MOD13_02227384 + + arm_func_start MOD13_022273FC +MOD13_022273FC: ; 0x022273FC + bx lr + + arm_func_start MOD13_02227400 +MOD13_02227400: ; 0x02227400 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02227428 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_02227428: + bl MOD13_022275F8 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227400 + bl MOD13_022273FC + bl MOD13_022273C4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02227490 ; =0x02227448 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227490: .word 0x02227448 + + arm_func_start MOD13_02227494 +MOD13_02227494: ; 0x02227494 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _022274C8 ; =0x02227464 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022274C8: .word 0x02227464 + + arm_func_start MOD13_022274CC +MOD13_022274CC: ; 0x022274CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227504 ; =MOD13_02227494 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227504: .word MOD13_02227494 + + arm_func_start MOD13_02227508 +MOD13_02227508: ; 0x02227508 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227588 ; =0x022400F0 + ldr r1, _0222758C ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02227590 ; =0x04001008 + ldr ip, _02227594 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02227598 ; =0x04000008 + ldr r2, _0222759C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _022275A0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227588: .word 0x022400F0 +_0222758C: .word 0x020C908C +_02227590: .word 0x04001008 +_02227594: .word 0x0400100A +_02227598: .word 0x04000008 +_0222759C: .word 0x0400000A +_022275A0: .word 0x0400000C + + arm_func_start MOD13_022275A4 +MOD13_022275A4: ; 0x022275A4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022275EC ; =MOD13_02227174 + bl MOD13_022239D4 + ldr r0, _022275F0 ; =0x022430B8 + mov r1, #0 + strb r1, [r0] + bl MOD13_02227508 + mov r0, #0x1c + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _022275F4 ; =MOD13_022274CC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022275EC: .word MOD13_02227174 +_022275F0: .word 0x022430B8 +_022275F4: .word MOD13_022274CC + + arm_func_start MOD13_022275F8 +MOD13_022275F8: ; 0x022275F8 + ldr r0, _02227614 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02227614: .word 0x027FFFA8 + + arm_func_start MOD13_02227618 +MOD13_02227618: ; 0x02227618 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r1, _02227648 ; =0x022430BC + mov r2, #0 + ldr r0, _0222764C ; =MOD13_02227894 + strb r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227648: .word 0x022430BC +_0222764C: .word MOD13_02227894 + + arm_func_start MOD13_02227650 +MOD13_02227650: ; 0x02227650 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227938 + bl MOD13_02227934 + bl MOD13_022278D8 + ldr r1, _0222769C ; =0x022430C0 + ldr r0, _022276A0 ; =0x00000438 + ldrh r2, [r1] + add r2, r2, #1 + strh r2, [r1] + ldrh r1, [r1] + cmp r1, r0 + addlo sp, sp, #4 + ldmloia sp!, {pc} + bl MOD13_022341E8 + ldr r0, _022276A4 ; =MOD13_02227894 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222769C: .word 0x022430C0 +_022276A0: .word 0x00000438 +_022276A4: .word MOD13_02227894 + + arm_func_start MOD13_022276A8 +MOD13_022276A8: ; 0x022276A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022276D0 ; =MOD13_02227894 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022276D0: .word MOD13_02227894 + + arm_func_start MOD13_022276D4 +MOD13_022276D4: ; 0x022276D4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _02227708 ; =MOD13_022276A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227708: .word MOD13_022276A8 + + arm_func_start MOD13_0222770C +MOD13_0222770C: ; 0x0222770C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223B6A8 + mov r0, #0 + bl MOD13_0223C1E0 + bl MOD13_02227938 + bl MOD13_022278D8 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _02227770 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02227770: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bl MOD13_02222D7C + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _022277C4 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_022277C4: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _022277FC + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222781C ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022277FC: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02227820 ; =MOD13_02227ED0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227818: .word 0x022430BC +_0222781C: .word MOD13_02230EC4 +_02227820: .word MOD13_02227ED0 + + arm_func_start MOD13_02227824 +MOD13_02227824: ; 0x02227824 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _0222788C ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _02227868 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02227868: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02227890 ; =0x02227730 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222788C: .word 0x022430BC +_02227890: .word 0x02227730 + + arm_func_start MOD13_02227894 +MOD13_02227894: ; 0x02227894 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + ldr r0, _022278D0 ; =0x022430C4 + ldr r1, [r0] + cmp r1, #0 + beq _022278B8 + mov r0, #1 + bl MOD13_0223C104 +_022278B8: + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _022278D4 ; =MOD13_02227824 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022278D0: .word 0x022430C4 +_022278D4: .word MOD13_02227824 + + arm_func_start MOD13_022278D8 +MOD13_022278D8: ; 0x022278D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222792C ; =0x022430C4 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #1 + bl MOD13_0223C110 + ldr r0, _0222792C ; =0x022430C4 + mov r1, #0 + str r1, [r0] + bl MOD13_0221EC84 + ldr r0, _02227930 ; =MOD13_02227618 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222792C: .word 0x022430C4 +_02227930: .word MOD13_02227618 + + arm_func_start MOD13_02227934 +MOD13_02227934: ; 0x02227934 + bx lr + + arm_func_start MOD13_02227938 +MOD13_02227938: ; 0x02227938 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02227960 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_02227960: + bl MOD13_02227CA0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227938 + bl MOD13_02227934 + bl MOD13_022278D8 + bl MOD13_02222D0C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + cmp r0, #1 + beq _022279BC + cmp r0, #2 + beq _022279FC + add sp, sp, #4 + ldmia sp!, {pc} +_022279BC: + ldr r0, _02227A68 ; =0x022430C4 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r2, _02227A6C ; =0x022430BC + mov r0, #1 + strb r0, [r2] + bl MOD13_0223C104 + ldr r1, _02227A68 ; =0x022430C4 + mov r2, #0 + ldr r0, _02227A70 ; =MOD13_02227650 + str r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022279FC: + ldr r0, _02227A68 ; =0x022430C4 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_022341E8 + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xc + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + mov r0, #9 + bl MOD13_0223424C + bl MOD13_0221EC84 + ldr r1, _02227A68 ; =0x022430C4 + mov r0, #1 + ldr r1, [r1] + bl MOD13_0223C104 + ldr r1, _02227A68 ; =0x022430C4 + mov r2, #0 + ldr r0, _02227A74 ; =MOD13_022276D4 + str r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227A68: .word 0x022430C4 +_02227A6C: .word 0x022430BC +_02227A70: .word MOD13_02227650 +_02227A74: .word MOD13_022276D4 + + arm_func_start MOD13_02227A78 +MOD13_02227A78: ; 0x02227A78 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _02227AC0 ; =MOD13_0222770C + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02227AC4 ; =0x022430C4 + str r0, [r1] + ldr r0, _02227AC8 ; =0x02227980 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227AC0: .word MOD13_0222770C +_02227AC4: .word 0x022430C4 +_02227AC8: .word 0x02227980 + + arm_func_start MOD13_02227ACC +MOD13_02227ACC: ; 0x02227ACC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _02227B14 ; =MOD13_02227A78 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227B14: .word MOD13_02227A78 + + arm_func_start MOD13_02227B18 +MOD13_02227B18: ; 0x02227B18 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227B70 ; =MOD13_02227ACC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227B70: .word MOD13_02227ACC + + arm_func_start MOD13_02227B74 +MOD13_02227B74: ; 0x02227B74 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227C0C ; =0x02240104 + ldr r1, _02227C10 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02227C14 ; =0x0224011C + ldr r1, _02227C18 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02227C1C ; =0x02240134 + ldr r1, _02227C20 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02227C24 ; =0x04001008 + ldr ip, _02227C28 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02227C2C ; =0x04000008 + ldr r2, _02227C30 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02227C34 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227C0C: .word 0x02240104 +_02227C10: .word 0x020C8D4C +_02227C14: .word 0x0224011C +_02227C18: .word 0x020C9550 +_02227C1C: .word 0x02240134 +_02227C20: .word 0x020C908C +_02227C24: .word 0x04001008 +_02227C28: .word 0x0400100A +_02227C2C: .word 0x04000008 +_02227C30: .word 0x0400000A +_02227C34: .word 0x0400000C + + arm_func_start MOD13_02227C38 +MOD13_02227C38: ; 0x02227C38 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227C98 ; =0x022430C0 + mov r1, #0 + strh r1, [r0] + bl MOD13_02227B74 + bl MOD13_0221F4AC + mov r0, #0x36 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0x22 + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + bl MOD13_02222DD8 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _02227C9C ; =MOD13_02227B18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227C98: .word 0x022430C0 +_02227C9C: .word MOD13_02227B18 + + arm_func_start MOD13_02227CA0 +MOD13_02227CA0: ; 0x02227CA0 + ldr r0, _02227CBC ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02227CBC: .word 0x027FFFA8 + + arm_func_start MOD13_02227CC0 +MOD13_02227CC0: ; 0x02227CC0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227CF8 ; =0x022430C8 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _02227CFC ; =MOD13_02227D80 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227CF8: .word 0x022430C8 +_02227CFC: .word MOD13_02227D80 + + arm_func_start MOD13_02227D00 +MOD13_02227D00: ; 0x02227D00 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _02227D7C ; =MOD13_0223197C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227D7C: .word MOD13_0223197C + + arm_func_start MOD13_02227D80 +MOD13_02227D80: ; 0x02227D80 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02227DC0 ; =MOD13_02227D00 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227DC0: .word MOD13_02227D00 + + arm_func_start MOD13_02227DC4 +MOD13_02227DC4: ; 0x02227DC4 + bx lr + + arm_func_start MOD13_02227DC8 +MOD13_02227DC8: ; 0x02227DC8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227CC0 + bl MOD13_02227DC4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02227E0C ; =MOD13_02227DC8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227E0C: .word MOD13_02227DC8 + + arm_func_start MOD13_02227E10 +MOD13_02227E10: ; 0x02227E10 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227E48 ; =0x02227DE0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227E48: .word 0x02227DE0 + + arm_func_start MOD13_02227E4C +MOD13_02227E4C: ; 0x02227E4C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227EB8 ; =0x02240148 + ldr r1, _02227EBC ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _02227EC0 ; =0x04001008 + ldr r3, _02227EC4 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _02227EC8 ; =0x0400000A + ldr r1, _02227ECC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227EB8: .word 0x02240148 +_02227EBC: .word 0x020C908C +_02227EC0: .word 0x04001008 +_02227EC4: .word 0x0400100A +_02227EC8: .word 0x0400000A +_02227ECC: .word 0x0400000C + + arm_func_start MOD13_02227ED0 +MOD13_02227ED0: ; 0x02227ED0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227F0C ; =0x022430C8 + mov r1, #0 + strb r1, [r0] + bl MOD13_02227E4C + bl MOD13_0221F4AC + mov r0, #0x23 + bl MOD13_0221F070 + mov r0, #0x10 + bl MOD13_0223424C + ldr r0, _02227F10 ; =MOD13_02227E10 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227F0C: .word 0x022430C8 +_02227F10: .word MOD13_02227E10 + + arm_func_start MOD13_02227F14 +MOD13_02227F14: ; 0x02227F14 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221EC9C + bl MOD13_02232F2C + ldr r0, _02227F44 ; =MOD13_02229150 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227F44: .word MOD13_02229150 + + arm_func_start MOD13_02227F48 +MOD13_02227F48: ; 0x02227F48 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _02227F7C ; =MOD13_02227F14 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227F7C: .word MOD13_02227F14 + + arm_func_start MOD13_02227F80 +MOD13_02227F80: ; 0x02227F80 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02227FB4 ; =0x0223F1BC + ldr r0, _02227FB8 ; =0x022430D4 + ldrb r1, [r1] + ldr r0, [r0] + strb r1, [sp] + ldrb r1, [sp] + ldr r0, [r0, #8] + mov r2, r1 + bl MOD13_022327DC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227FB4: .word 0x0223F1BC +_02227FB8: .word 0x022430D4 + + arm_func_start MOD13_02227FBC +MOD13_02227FBC: ; 0x02227FBC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0222804C ; =0x022430D4 + ldr r0, _02228050 ; =0x022430D0 + ldr r2, [r1] + ldrh r1, [r0] + ldrh r0, [r2, #0x40] + cmp r1, r0 + beq _02227FEC + ldrb r0, [r2, #0x51] + cmp r0, #4 + bhi _0222801C +_02227FEC: + ldrb r0, [r2, #0x59] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222804C ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x59] + ldmia sp!, {pc} +_0222801C: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228054 ; =MOD13_02228314 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222804C ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222804C: .word 0x022430D4 +_02228050: .word 0x022430D0 +_02228054: .word MOD13_02228314 + + arm_func_start MOD13_02228058 +MOD13_02228058: ; 0x02228058 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022280D8 ; =0x022430D0 + ldrh r0, [r0] + cmp r0, #0 + bne _022280A8 + ldr r0, _022280DC ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x59] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022280DC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x59] + ldmia sp!, {pc} +_022280A8: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _022280E0 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _022280DC ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022280D8: .word 0x022430D0 +_022280DC: .word 0x022430D4 +_022280E0: .word MOD13_022283B4 + + arm_func_start MOD13_022280E4 +MOD13_022280E4: ; 0x022280E4 + stmdb sp!, {r4, lr} + ldr r1, _02228238 ; =0x022430CC + mov r4, #1 + ldrb r2, [r1] + cmp r2, #4 + addls pc, pc, r2, lsl #2 + b _022281F0 +_02228100: ; jump table + b _02228114 ; case 0 + b _02228180 ; case 1 + b _02228180 ; case 2 + b _022281B0 ; case 3 + b _022281C8 ; case 4 +_02228114: + cmp r0, #1 + bne _02228160 + ldr r0, _0222823C ; =0x022430D0 + ldrh r0, [r0] + cmp r0, #0 + moveq r0, #4 + streqb r0, [r1] + beq _022281F0 + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228240 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228244 ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {r4, pc} +_02228160: + ldr r0, _02228244 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x51] + cmp r0, #1 + addhi r0, r2, #1 + strhib r0, [r1] + movls r4, #0 + b _022281F0 +_02228180: + cmp r0, #1 + subeq r0, r2, #1 + streqb r0, [r1] + beq _022281F0 + ldr r0, _02228244 ; =0x022430D4 + add r2, r2, #1 + ldr r0, [r0] + ldrb r0, [r0, #0x51] + cmp r0, r2 + strgtb r2, [r1] + movle r4, #0 + b _022281F0 +_022281B0: + cmp r0, #1 + subeq r0, r2, #1 + streqb r0, [r1] + beq _022281F0 + bl MOD13_02227FBC + ldmia sp!, {r4, pc} +_022281C8: + cmp r0, #1 + moveq r4, #0 + beq _022281F0 + ldr r0, _0222823C ; =0x022430D0 + mov r2, #0 + strh r2, [r0] + strb r2, [r1] + bl MOD13_02228754 + mov r0, #0 + bl MOD13_02232F44 +_022281F0: + cmp r4, #0 + bne _02228228 + ldr r0, _02228244 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x59] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02228244 ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x59] + ldmia sp!, {r4, pc} +_02228228: + mov r0, #8 + bl MOD13_0223424C + bl MOD13_02228248 + ldmia sp!, {r4, pc} + .align 2, 0 +_02228238: .word 0x022430CC +_0222823C: .word 0x022430D0 +_02228240: .word MOD13_022283B4 +_02228244: .word 0x022430D4 + + arm_func_start MOD13_02228248 +MOD13_02228248: ; 0x02228248 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222828C ; =0x022430CC + ldr r1, _02228290 ; =0x0223F224 + ldrb r2, [r0] + ldr r3, _02228294 ; =0x0223F226 + mov ip, r2, lsl #3 + cmp r2, #4 + ldr r2, _02228298 ; =0x0223F228 + movlo r0, #2 + ldrh r1, [r1, ip] + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + movhs r0, #3 + bl MOD13_0221F348 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222828C: .word 0x022430CC +_02228290: .word 0x0223F224 +_02228294: .word 0x0223F226 +_02228298: .word 0x0223F228 + + arm_func_start MOD13_0222829C +MOD13_0222829C: ; 0x0222829C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02228300 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x56] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02228304 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + ldr r1, _02228308 ; =0x01FF0000 + sub r2, r0, #0x32 + ldr r0, _0222830C ; =0x04000010 + and r2, r1, r2, lsl #16 + ldr r1, _02228310 ; =0x04000018 + str r2, [r0] + ldr r0, _02228300 ; =0x022430D4 + str r2, [r1] + ldr r0, [r0] + mov r1, #0 + strb r1, [r0, #0x56] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228300: .word 0x022430D4 +_02228304: .word 0x022430D0 +_02228308: .word 0x01FF0000 +_0222830C: .word 0x04000010 +_02228310: .word 0x04000018 + + arm_func_start MOD13_02228314 +MOD13_02228314: ; 0x02228314 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _022283AC ; =0x022430D0 + mov r1, #0x1c + ldrh r2, [r0] + add r2, r2, #4 + strh r2, [r0] + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #4 + blt _02228350 + bl MOD13_02228490 + ldmia sp!, {r4, pc} +_02228350: + ldr r1, _022283AC ; =0x022430D0 + ldrh r2, [r1] + sub r0, r2, r0 + strh r0, [r1] + bl MOD13_02228754 + ldr r1, _022283B0 ; =0x022430D4 + ldr r0, _022283AC ; =0x022430D0 + ldr r1, [r1] + ldrh r2, [r0] + ldrb r0, [r1, #0x53] + ldrh r1, [r1, #0x40] + mul r0, r2, r0 + bl FX_DivS32 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_02228248 + ldr r0, _022283B0 ; =0x022430D4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_022283AC: .word 0x022430D0 +_022283B0: .word 0x022430D4 + + arm_func_start MOD13_022283B4 +MOD13_022283B4: ; 0x022283B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _02228488 ; =0x022430D0 + ldrh r1, [r0] + cmp r1, #4 + subhi r1, r1, #4 + strhih r1, [r0] + movls r1, #0 + strlsh r1, [r0] + ldr r0, _02228488 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + mov r5, r0 + cmp r5, #0x18 + bne _0222840C + bl MOD13_02228754 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222840C: + cmp r5, #0x18 + ble _0222842C + ldr r0, _02228488 ; =0x022430D0 + rsb r1, r5, #0x1c + ldrh r2, [r0] + mov r5, #0 + add r1, r2, r1 + strh r1, [r0] +_0222842C: + bl MOD13_02228490 + cmp r5, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0222848C ; =0x022430D4 + ldr r0, _02228488 ; =0x022430D0 + ldr r1, [r1] + ldrh r2, [r0] + ldrb r0, [r1, #0x53] + ldrh r1, [r1, #0x40] + mul r0, r2, r0 + bl FX_DivS32 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_02228248 + ldr r0, _0222848C ; =0x022430D4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02228488: .word 0x022430D0 +_0222848C: .word 0x022430D4 + + arm_func_start MOD13_02228490 +MOD13_02228490: ; 0x02228490 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02228544 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + ldr r1, _02228548 ; =0x022430D4 + rsb r2, r0, #0x36 + ldr r0, [r1] + ldrb r1, [r0, #0x51] + mov r0, #0 + cmp r1, #5 + movgt r1, #5 + cmp r1, #0 + ble _02228530 + ldr ip, _02228548 ; =0x022430D4 + ldr r3, _0222854C ; =0xFE00FF00 +_022284D0: + ldr r5, [ip] + sub r4, r2, #2 + add r5, r5, r0, lsl #2 + ldr r6, [r5, #0x10] + add lr, r2, #1 + ldr r5, [r6] + and r4, r4, #0xff + and r5, r5, r3 + orr r4, r5, r4 + orr r4, r4, #0xb30000 + str r4, [r6] + ldr r4, [ip] + and lr, lr, #0xff + add r4, r4, r0, lsl #2 + ldr r5, [r4, #0x24] + add r0, r0, #1 + ldr r4, [r5] + cmp r0, r1 + and r4, r4, r3 + orr r4, r4, lr + orr r4, r4, #0xd20000 + str r4, [r5] + add r2, r2, #0x1c + blt _022284D0 +_02228530: + ldr r0, _02228548 ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x56] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02228544: .word 0x022430D0 +_02228548: .word 0x022430D4 +_0222854C: .word 0xFE00FF00 + + arm_func_start MOD13_02228550 +MOD13_02228550: ; 0x02228550 + stmdb sp!, {r4, lr} + ldr r3, _022285D8 ; =0x022430D4 + ldr lr, [r3] + ldrb r2, [lr, #0x51] + cmp r0, r2 + ldmgeia sp!, {r4, pc} + mov r2, #0x2a + mul r2, r0, r2 + ldr r0, [lr] + add r4, lr, r1, lsl #2 + add r0, r0, r2 + ldrb ip, [r0, #0x28] + ldr r4, [r4, #0x10] + mov r0, #0x400 + add ip, lr, ip, lsl #1 + ldrh lr, [r4, #4] + rsb r0, r0, #0 + ldrh ip, [ip, #0x42] + and lr, lr, r0 + orr ip, lr, ip + strh ip, [r4, #4] + ldr lr, [r3] + ldr r3, [lr] + add ip, lr, r1, lsl #2 + add r1, r3, r2 + ldrh r1, [r1, #0x26] + ldr r3, [ip, #0x24] + add r1, lr, r1, lsl #1 + ldrh r2, [r3, #4] + ldrh r1, [r1, #0x48] + and r0, r2, r0 + orr r0, r0, r1 + strh r0, [r3, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022285D8: .word 0x022430D4 + + arm_func_start MOD13_022285DC +MOD13_022285DC: ; 0x022285DC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x34 + mov r7, r0 + mov r0, #0x2a + ldr r2, _02228750 ; =0x022430D4 + mul r4, r7, r0 + ldr r0, [r2] + mov r6, r1 + ldr r0, [r0] + mov r1, #0x20 + add r0, r0, r4 + bl MOD13_0223BDA4 + ldr r2, _02228750 ; =0x022430D4 + mov r1, #0x1c + mul r5, r6, r1 + ldr r2, [r2] + mov r6, r0 + ldrb r1, [r2, #0x51] + cmp r7, r1 + addge sp, sp, #0x34 + ldmgeia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0xc + cmp r6, #0x10 + mov r1, #0 + mov r2, #0x22 + addle r5, r5, #6 + bl MI_CpuFill8 + cmp r6, #0x10 + movle ip, r6 + movgt ip, #0x10 + cmp ip, #0 + mov r7, #0 + ble _0222868C + ldr r0, _02228750 ; =0x022430D4 + ldr r3, [r0] + add r0, sp, #0xc +_0222866C: + ldr r2, [r3] + mov r1, r7, lsl #1 + add r2, r4, r2 + ldrb r2, [r7, r2] + add r7, r7, #1 + cmp r7, ip + strh r2, [r0, r1] + blt _0222866C +_0222868C: + mov r1, #0xa + add r0, sp, #0xc + str r1, [sp] + str r0, [sp, #4] + mov r2, #1 + str r2, [sp, #8] + ldr r0, _02228750 ; =0x022430D4 + mov r2, r5 + ldr r0, [r0] + mov r3, #2 + ldr r0, [r0, #0xc] + bl MOD13_0223A528 + cmp r6, #0x10 + addle sp, sp, #0x34 + ldmleia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0xc + mov r1, #0 + mov r2, #0x22 + bl MI_CpuFill8 + sub r6, r6, #0x10 + cmp r6, #0 + mov r3, #0 + ble _02228718 + ldr r0, _02228750 ; =0x022430D4 + ldr r7, [r0] + add r0, sp, #0xc +_022286F4: + ldr r1, [r7] + add r2, r3, #0x10 + add r1, r4, r1 + ldrb r2, [r2, r1] + mov r1, r3, lsl #1 + add r3, r3, #1 + strh r2, [r0, r1] + cmp r3, r6 + blt _022286F4 +_02228718: + mov r1, #0xa + add r0, sp, #0xc + str r1, [sp] + str r0, [sp, #4] + mov r2, #1 + str r2, [sp, #8] + ldr r0, _02228750 ; =0x022430D4 + add r2, r5, #0xc + ldr r0, [r0] + mov r3, #2 + ldr r0, [r0, #0xc] + bl MOD13_0223A528 + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02228750: .word 0x022430D4 + + arm_func_start MOD13_02228754 +MOD13_02228754: ; 0x02228754 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r0, _02228800 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _02228804 ; =0x022430D4 + mov r7, r0 + ldr r0, [r1] + mov r1, #0 + ldrb r6, [r0, #0x51] + ldr r0, [r0, #0xc] + bl MOD13_0223A4D8 + cmp r6, #5 + movgt r6, #5 + mov r5, r7 + cmp r6, #0 + mov r4, #0 + ble _022287BC +_022287A0: + mov r0, r5 + mov r1, r4 + bl MOD13_022285DC + add r4, r4, #1 + cmp r4, r6 + add r5, r5, #1 + blt _022287A0 +_022287BC: + cmp r6, #0 + mov r4, #0 + ble _022287E4 +_022287C8: + mov r0, r7 + mov r1, r4 + bl MOD13_02228550 + add r4, r4, #1 + cmp r4, r6 + add r7, r7, #1 + blt _022287C8 +_022287E4: + ldr r0, _02228804 ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD13_0223A410 + bl MOD13_02228490 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02228800: .word 0x022430D0 +_02228804: .word 0x022430D4 + + arm_func_start MOD13_02228808 +MOD13_02228808: ; 0x02228808 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _02228A0C ; =0x022430D4 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1, #0x3c] + bl MOD13_0223C104 + mov r5, #0 + ldr r4, _02228A0C ; =0x022430D4 +_02228864: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0222887C + bl MOD13_0223B974 +_0222887C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _02228894 + bl MOD13_0223B974 +_02228894: + add r5, r5, #1 + cmp r5, #5 + blt _02228864 + ldr r0, _02228A0C ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD13_0223A688 + bl MOD13_02232F78 + bl MOD13_0221F21C + bl MOD13_0221EE54 + bl MOD13_022328E8 + ldr r0, _02228A0C ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223939C + ldr r0, _02228A0C ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #8] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AE98 + mov r2, #0 + ldr r1, _02228A10 ; =0x04000010 + ldr r0, _02228A14 ; =0x04000018 + str r2, [r1] + str r2, [r0] + ldr r0, _02228A0C ; =0x022430D4 + ldr r2, [r0] + ldrb r0, [r2, #0x54] + cmp r0, #0 + bne _02228948 + bl MOD13_02233570 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + bl MOD13_02233C24 + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _02228A18 ; =MOD13_02230EC4 + bl MOD13_02222FBC + b _022289FC +_02228948: + ldr r0, _02228A1C ; =0x022430CC + ldrb r0, [r0] + cmp r0, #4 + bne _02228974 + bl MOD13_02233570 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02228A20 ; =MOD13_0222F8A0 + bl MOD13_02222FBC + b _022289FC +_02228974: + ldrb r1, [r2, #0x52] + ldr r2, [r2] + mov r0, #0x2a + mla r0, r1, r0, r2 + bl MOD13_02234104 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r1, _02228A0C ; =0x022430D4 + mov r0, #0x2a + ldr r2, [r1] + ldrb r1, [r2, #0x52] + ldr r2, [r2] + mla r0, r1, r0, r2 + ldrb r0, [r0, #0x28] + cmp r0, #0 + beq _022289DC + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #1 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _02228A24 ; =MOD13_0222A190 + bl MOD13_02222FBC + b _022289FC +_022289DC: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _02228A28 ; =MOD13_0223197C + bl MOD13_02222FBC +_022289FC: + ldr r0, _02228A0C ; =0x022430D4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02228A0C: .word 0x022430D4 +_02228A10: .word 0x04000010 +_02228A14: .word 0x04000018 +_02228A18: .word MOD13_02230EC4 +_02228A1C: .word 0x022430CC +_02228A20: .word MOD13_0222F8A0 +_02228A24: .word MOD13_0222A190 +_02228A28: .word MOD13_0223197C + + arm_func_start MOD13_02228A2C +MOD13_02228A2C: ; 0x02228A2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02228AA0 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x54] + cmp r0, #0 + beq _02228A64 + bl MOD13_0221ED28 + b _02228A68 +_02228A64: + bl MOD13_0221EC84 +_02228A68: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02228AA4 ; =MOD13_02228808 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228AA0: .word 0x022430D4 +_02228AA4: .word MOD13_02228808 + + arm_func_start MOD13_02228AA8 +MOD13_02228AA8: ; 0x02228AA8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02228ACC ; =MOD13_02228A2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228ACC: .word MOD13_02228A2C + + arm_func_start MOD13_02228AD0 +MOD13_02228AD0: ; 0x02228AD0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02228BF8 ; =0x022430D4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x57] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED14 + cmp r0, #0 + beq _02228B1C + cmp r0, #1 + beq _02228B28 + add sp, sp, #4 + ldmia sp!, {pc} +_02228B1C: + mov r0, #7 + bl MOD13_0223424C + b _02228BE8 +_02228B28: + ldr r0, _02228BFC ; =0x022430CC + ldrb r0, [r0] + cmp r0, #4 + bne _02228B58 + ldr r0, _02228BF8 ; =0x022430D4 + mov r2, #1 + ldr r1, [r0] + mov r0, #6 + strb r2, [r1, #0x54] + bl MOD13_0223424C + bl MOD13_02227F80 + b _02228BE8 +_02228B58: + ldr r0, _02228C00 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _02228BFC ; =0x022430CC + ldr r2, _02228BF8 ; =0x022430D4 + ldrb lr, [r1] + ldr ip, [r2] + mov r1, #0x2a + ldr r3, [ip] + add lr, lr, r0 + mla r0, lr, r1, r3 + ldrb r0, [r0, #0x28] + cmp r0, #2 + bne _02228BD0 + mov r0, #9 + bl MOD13_0223424C + bl MOD13_02232F14 + bl MOD13_0221EC84 + mov r1, #1 + mov r0, #0 + str r0, [sp] + mov r2, r1 + mov r0, #0xe + mvn r3, #0 + bl MOD13_02235EFC + ldr r0, _02228C04 ; =MOD13_02227F48 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02228BD0: + mov r0, #1 + strb r0, [ip, #0x54] + ldr r1, [r2] + mov r0, #6 + strb lr, [r1, #0x52] + bl MOD13_0223424C +_02228BE8: + ldr r0, _02228C08 ; =MOD13_02228AA8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228BF8: .word 0x022430D4 +_02228BFC: .word 0x022430CC +_02228C00: .word 0x022430D0 +_02228C04: .word MOD13_02227F48 +_02228C08: .word MOD13_02228AA8 + + arm_func_start MOD13_02228C0C +MOD13_02228C0C: ; 0x02228C0C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02228EBC ; =0x022430D4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x55] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r1, #0x55] + bl MOD13_02232F50 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02228EB4 +_02228C4C: ; jump table + b _02228EB4 ; case 0 + b _02228C6C ; case 1 + b _02228C88 ; case 2 + b _02228CE4 ; case 3 + b _02228DA4 ; case 4 + b _02228EA4 ; case 5 + b _02228E1C ; case 6 + b _02228EA4 ; case 7 +_02228C6C: + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x57] + bl MOD13_0221EC84 + add sp, sp, #4 + ldmia sp!, {pc} +_02228C88: + ldr r0, _02228EBC ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x55] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_02232F64 + ldr r1, _02228EBC ; =0x022430D4 + ldr r1, [r1] + ldrh r2, [r1, #0x40] + ldrb r1, [r1, #0x53] + mul r0, r2, r0 + bl FX_DivS32 + ldr r1, _02228EC0 ; =0x022430D0 + strh r0, [r1] + bl MOD13_02228754 + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #4 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x55] + ldmia sp!, {pc} +_02228CE4: + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x57] + bl MOD13_0221EC9C + bl MOD13_02232F64 + ldr r1, _02228EBC ; =0x022430D4 + ldr r1, [r1] + ldrh r2, [r1, #0x40] + ldrb r1, [r1, #0x53] + mul r0, r2, r0 + bl FX_DivS32 + ldr r1, _02228EC0 ; =0x022430D0 + strh r0, [r1] + mov r0, #0x13 + bl MOD13_0223424C + bl MOD13_02228754 + ldr r0, _02228EC0 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #0 + bne _02228D4C + bl MOD13_02228248 + add sp, sp, #4 + ldmia sp!, {pc} +_02228D4C: + cmp r0, #0xe + bge _02228D7C + mov r0, #0 + ldr r1, _02228EC4 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228D7C: + mov r0, #0 + ldr r1, _02228EC8 ; =MOD13_02228314 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228DA4: + ldr r0, _02228EC0 ; =0x022430D0 + ldrh r0, [r0] + cmp r0, #0 + bne _02228DEC + ldr r0, _02228EBC ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x58] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x58] + ldmia sp!, {pc} +_02228DEC: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228EC4 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228E1C: + ldr r0, _02228EBC ; =0x022430D4 + ldr r2, [r0] + ldrb r0, [r2, #0x51] + cmp r0, #4 + bls _02228E44 + ldr r0, _02228EC0 ; =0x022430D0 + ldrh r1, [r2, #0x40] + ldrh r0, [r0] + cmp r0, r1 + bne _02228E74 +_02228E44: + ldrb r0, [r2, #0x58] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x58] + ldmia sp!, {pc} +_02228E74: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228EC8 ; =MOD13_02228314 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228EA4: + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x58] +_02228EB4: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228EBC: .word 0x022430D4 +_02228EC0: .word 0x022430D0 +_02228EC4: .word MOD13_022283B4 +_02228EC8: .word MOD13_02228314 + + arm_func_start MOD13_02228ECC +MOD13_02228ECC: ; 0x02228ECC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _02229140 ; =0x022430D4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldrb r0, [r1, #0x57] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _02229144 ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02228F74 + ldr r0, _02229140 ; =0x022430D4 + mvn r1, #0 + ldr r0, [r0] + ldr r4, _02229148 ; =0x0223F1FC + strb r1, [r0, #0x50] + mov r5, #0 +_02228F24: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02228F64 + cmp r5, #4 + ldrlt r0, _02229140 ; =0x022430D4 + ldrlt r0, [r0] + strltb r5, [r0, #0x50] + blt _02228F74 + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _0222914C ; =0x022430CC + strb r5, [r0] + bl MOD13_02228248 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02228F64: + add r5, r5, #1 + cmp r5, #5 + add r4, r4, #8 + blo _02228F24 +_02228F74: + ldr r0, _02229144 ; =0x0223F75C + bl MOD13_0223B1DC + cmp r0, #0 + beq _02228FF4 + ldr r5, _02229148 ; =0x0223F1FC + mov r4, #0 +_02228F8C: + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02228FE4 + ldr r0, _02229140 ; =0x022430D4 + ldr r1, [r0] + ldrsb r0, [r1, #0x50] + cmp r0, r4 + bne _02228FF4 + ldrb r0, [r1, #0x51] + cmp r4, r0 + blt _02228FC8 + mov r0, #9 + bl MOD13_0223424C + b _02228FF4 +_02228FC8: + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _0222914C ; =0x022430CC + strb r4, [r0] + bl MOD13_02228248 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02228FE4: + add r4, r4, #1 + cmp r4, #4 + add r5, r5, #8 + blt _02228F8C +_02228FF4: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02229018 + mov r0, #1 + bl MOD13_0221ECF4 + bl MOD13_02232F14 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229018: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02229038 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229038: + mov r0, #0x200 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02229054 + bl MOD13_02227FBC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229054: + mov r0, #0x200 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x59] + ldmneia sp!, {r4, r5, pc} + mov r0, #0x100 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02229094 + bl MOD13_02228058 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229094: + mov r0, #0x100 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x59] + ldmneia sp!, {r4, r5, pc} + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022290D8 + mov r0, #1 + bl MOD13_022280E4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022290D8: + mov r0, #0x40 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x59] + ldmneia sp!, {r4, r5, pc} + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222911C + mov r0, #3 + bl MOD13_022280E4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222911C: + mov r0, #0x80 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0, #0x59] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02229140: .word 0x022430D4 +_02229144: .word 0x0223F75C +_02229148: .word 0x0223F1FC +_0222914C: .word 0x022430CC + + arm_func_start MOD13_02229150 +MOD13_02229150: ; 0x02229150 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02228ECC + bl MOD13_02228C0C + bl MOD13_02228AD0 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222919C ; =MOD13_02229150 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222919C: .word MOD13_02229150 + + arm_func_start MOD13_022291A0 +MOD13_022291A0: ; 0x022291A0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _022291E8 ; =0x0222916C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022291E8: .word 0x0222916C + + arm_func_start MOD13_022291EC +MOD13_022291EC: ; 0x022291EC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AEF4 + ldr r0, _02229244 ; =MOD13_022291A0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229244: .word MOD13_022291A0 + + arm_func_start MOD13_02229248 +MOD13_02229248: ; 0x02229248 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r0, _022293BC ; =0x022430D4 + mov sb, #0 + ldr r0, [r0] + ldrb r4, [r0, #0x51] + cmp r4, #5 + movgt r4, #5 + cmp r4, #0 + ble _022292C4 + ldr r1, _022293C0 ; =0x0223F1C0 + ldr r0, _022293C4 ; =0x0223F1C4 + ldrb r8, [r1] + ldrb r7, [r0] + ldr sl, _022293BC ; =0x022430D4 + mov r6, sb + mov r5, sb +_02229288: + mov r0, r6 + mov r1, r8 + bl MOD13_02239E54 + ldr r2, [sl] + mov r1, r7 + add r2, r2, sb, lsl #2 + str r0, [r2, #0x10] + mov r0, r5 + bl MOD13_02239E54 + ldr r1, [sl] + add r1, r1, sb, lsl #2 + add sb, sb, #1 + str r0, [r1, #0x24] + cmp sb, r4 + blt _02229288 +_022292C4: + ldr r7, _022293C0 ; =0x0223F1C0 + mov r6, #0 + ldr sb, _022293BC ; =0x022430D4 + mov r5, r6 + ldr r8, _022293C8 ; =0x000003FF +_022292D8: + ldr r0, [sb] + ldrb r1, [r7] + ldr r2, [r0, #0x10] + mov r0, r5 + bl MOD13_02239E8C + ldr r0, [sb] + add r7, r7, #1 + ldr r1, [r0, #0x10] + add r0, r0, r6, lsl #1 + ldrh r1, [r1, #4] + add r6, r6, #1 + cmp r6, #3 + and r1, r1, r8 + strh r1, [r0, #0x42] + blo _022292D8 + ldr r7, _022293C4 ; =0x0223F1C4 + mov r6, #0 + ldr sb, _022293BC ; =0x022430D4 + mov r5, r6 + ldr r8, _022293C8 ; =0x000003FF +_02229328: + ldr r0, [sb] + ldrb r1, [r7] + ldr r2, [r0, #0x24] + mov r0, r5 + bl MOD13_02239E8C + ldr r0, [sb] + add r7, r7, #1 + ldr r1, [r0, #0x24] + add r0, r0, r6, lsl #1 + ldrh r1, [r1, #4] + add r6, r6, #1 + cmp r6, #4 + and r1, r1, r8 + strh r1, [r0, #0x48] + blo _02229328 + cmp r4, #0 + mov r0, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, _022293BC ; =0x022430D4 +_02229374: + ldr r2, [r1] + add r2, r2, r0, lsl #2 + ldr r3, [r2, #0x10] + ldrh r2, [r3, #4] + bic r2, r2, #0xc00 + orr r2, r2, #0xc00 + strh r2, [r3, #4] + ldr r2, [r1] + add r2, r2, r0, lsl #2 + ldr r3, [r2, #0x24] + add r0, r0, #1 + ldrh r2, [r3, #4] + cmp r0, r4 + bic r2, r2, #0xc00 + orr r2, r2, #0xc00 + strh r2, [r3, #4] + blt _02229374 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022293BC: .word 0x022430D4 +_022293C0: .word 0x0223F1C0 +_022293C4: .word 0x0223F1C4 +_022293C8: .word 0x000003FF + + arm_func_start MOD13_022293CC +MOD13_022293CC: ; 0x022293CC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _02229470 ; =0x022430D4 + mov r1, #0x1c + ldr ip, [r2] + mov r0, #0 + ldrb r3, [ip, #0x51] + sub r3, r3, #4 + mul r1, r3, r1 + strh r1, [ip, #0x40] + ldr r2, [r2] + ldrb r1, [r2, #0x51] + cmp r1, #4 + movls r4, r0 + strlsb r0, [r2, #0x53] + bls _02229428 + cmp r1, #8 + movls r1, #0x1f + strlsb r1, [r2, #0x53] + movls r4, #1 + movhi r1, #0x37 + strhib r1, [r2, #0x53] + movhi r4, #2 +_02229428: + cmp r4, #0 + beq _02229450 + ldr r1, _02229470 ; =0x022430D4 + ldr r0, _02229474 ; =0x022430D0 + ldr r1, [r1] + ldrh r2, [r0] + ldrb r0, [r1, #0x53] + ldrh r1, [r1, #0x40] + mul r0, r2, r0 + bl FX_DivS32 +_02229450: + str r0, [sp] + mov r0, r4 + mov r1, #0x55 + mov r2, #0xec + mov r3, #0x3f + bl MOD13_02232FB8 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02229470: .word 0x022430D4 +_02229474: .word 0x022430D0 + + arm_func_start MOD13_02229478 +MOD13_02229478: ; 0x02229478 + stmdb sp!, {lr} + sub sp, sp, #0x34 + ldr r3, _022295AC ; =0x0223F1E0 + add lr, sp, #0 + mov r2, #0xc +_0222948C: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [lr], #1 + strb r0, [lr], #1 + bne _0222948C + ldrb r0, [r3] + ldr ip, _022295B0 ; =0x0223F1C8 + add r3, sp, #0x19 + strb r0, [lr] + mov r2, #0xb +_022294B8: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _022294B8 + ldr r0, _022295B4 ; =0x0224015C + ldr r1, _022295B8 ; =0x020C8FBC + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _022295BC ; =0x022430D4 + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + ldr r0, [r0, #4] + bl MOD13_02232918 + bl MOD13_022328D0 + add r0, sp, #0x19 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _022295BC ; =0x022430D4 + ldr r2, _022295C0 ; =0x04001008 + ldr r1, [r1] + ldr lr, _022295C4 ; =0x0400100A + str r0, [r1, #8] + ldrh r0, [r2] + ldr ip, _022295C8 ; =0x04000008 + ldr r3, _022295CC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [lr] + ldr r2, _022295D0 ; =0x0400000C + ldr r1, _022295D4 ; =0x0400000E + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [lr] + ldrh r0, [ip] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r1] + add sp, sp, #0x34 + ldmia sp!, {pc} + .align 2, 0 +_022295AC: .word 0x0223F1E0 +_022295B0: .word 0x0223F1C8 +_022295B4: .word 0x0224015C +_022295B8: .word 0x020C8FBC +_022295BC: .word 0x022430D4 +_022295C0: .word 0x04001008 +_022295C4: .word 0x0400100A +_022295C8: .word 0x04000008 +_022295CC: .word 0x0400000A +_022295D0: .word 0x0400000C +_022295D4: .word 0x0400000E + + arm_func_start MOD13_022295D8 +MOD13_022295D8: ; 0x022295D8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x5c + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _022296AC ; =0x022430D4 + mov r1, #0 + str r0, [r2] + add r0, sp, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + ldreq r0, _022296B0 ; =0x022430D0 + moveq r2, #0 + streqh r2, [r0] + ldr r0, _022296AC ; =0x022430D4 + ldreq r1, _022296B4 ; =0x022430CC + ldr r0, [r0] + streqb r2, [r1] + bl MOD13_0223333C + ldr r1, _022296AC ; =0x022430D4 + ldr r1, [r1] + strb r0, [r1, #0x51] + bl MOD13_02229478 + bl MOD13_0221F4AC + mov r0, #0x34 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + bl MOD13_022293CC + bl MOD13_02229248 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _022296AC ; =0x022430D4 + ldr r1, _022296B8 ; =MOD13_0222829C + ldr r3, [r2] + mov r2, #0 + str r0, [r3, #0xc] + mov r0, #1 + mov r3, #0x6e + bl MOD13_0223C1C4 + ldr r1, _022296AC ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x3c] + bl MOD13_02228754 + bl MOD13_02228248 + ldr r0, _022296BC ; =MOD13_022291EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022296AC: .word 0x022430D4 +_022296B0: .word 0x022430D0 +_022296B4: .word 0x022430CC +_022296B8: .word MOD13_0222829C +_022296BC: .word MOD13_022291EC + + arm_func_start MOD13_022296C0 +MOD13_022296C0: ; 0x022296C0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02229704 ; =0x022430D8 + ldr r1, _02229708 ; =0xC1FFFCFF + ldr r2, [r0] + ldr r0, _0222970C ; =MOD13_02229FD0 + ldr r3, [r2, #4] + ldr r2, [r3] + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229704: .word 0x022430D8 +_02229708: .word 0xC1FFFCFF +_0222970C: .word MOD13_02229FD0 + + arm_func_start MOD13_02229710 +MOD13_02229710: ; 0x02229710 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _02229744 ; =MOD13_022296C0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229744: .word MOD13_022296C0 + + arm_func_start MOD13_02229748 +MOD13_02229748: ; 0x02229748 + stmdb sp!, {lr} + sub sp, sp, #0xc + add r0, sp, #0 + add r1, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #1 + bne _02229778 + mov r0, #0x35 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_02229778: + add r0, sp, #0 + add r1, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _022297B0 + ldr r0, _022298E0 ; =0x022430D8 + add sp, sp, #0xc + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {pc} +_022297B0: + ldr r0, [sp, #4] + cmp r0, #1 + bne _022297D8 + ldr r0, _022298E0 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {pc} +_022297D8: + ldr r0, _022298E0 ; =0x022430D8 + mov r1, #0x20 + ldr r0, [r0] + add r0, r0, #8 + bl MOD13_0223BDA4 + cmp r0, #0x10 + bgt _02229838 + cmp r0, #0xa + blt _02229818 + cmp r0, #0xa + beq _02229864 + cmp r0, #0xd + beq _02229858 + cmp r0, #0x10 + beq _02229858 + b _022298D4 +_02229818: + cmp r0, #0 + bgt _0222982C + cmp r0, #0 + beq _02229858 + b _022298D4 +_0222982C: + cmp r0, #5 + beq _02229858 + b _022298D4 +_02229838: + cmp r0, #0x1a + bgt _0222984C + cmp r0, #0x1a + beq _02229864 + b _022298D4 +_0222984C: + cmp r0, #0x20 + beq _02229864 + b _022298D4 +_02229858: + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {pc} +_02229864: + cmp r0, #0 + mov r3, #0 + ble _022298C8 + ldr r1, _022298E0 ; =0x022430D8 + ldr r1, [r1] +_02229878: + ldrb r2, [r1, #8] + cmp r2, #0x30 + blo _0222988C + cmp r2, #0x39 + bls _022298B8 +_0222988C: + cmp r2, #0x41 + blo _0222989C + cmp r2, #0x46 + bls _022298B8 +_0222989C: + cmp r2, #0x61 + blo _022298AC + cmp r2, #0x66 + bls _022298B8 +_022298AC: + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {pc} +_022298B8: + add r3, r3, #1 + cmp r3, r0 + add r1, r1, #1 + blt _02229878 +_022298C8: + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {pc} +_022298D4: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_022298E0: .word 0x022430D8 + + arm_func_start MOD13_022298E4 +MOD13_022298E4: ; 0x022298E4 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _02229980 ; =0x0223F260 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [sp] + str r0, [sp, #4] + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {pc} + ldr r0, _02229984 ; =0x022430D8 + ldr r1, [r0] + ldrb r0, [r1, #0x2a] + cmp r0, #0 + bne _02229948 + ldr r3, [r1, #4] + ldr r1, _02229988 ; =0xC1FFFCFF + ldr r2, [r3] + ldr r0, _0222998C ; =MOD13_02229FD0 + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} +_02229948: + add r0, sp, #8 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, _02229984 ; =0x022430D8 + ldr r2, [sp, #8] + add r1, sp, #0 + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #8 + blx r1 + ldr r0, _02229990 ; =MOD13_02229B88 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02229980: .word 0x0223F260 +_02229984: .word 0x022430D8 +_02229988: .word 0xC1FFFCFF +_0222998C: .word MOD13_02229FD0 +_02229990: .word MOD13_02229B88 + + arm_func_start MOD13_02229994 +MOD13_02229994: ; 0x02229994 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + ldr r1, _022299F4 ; =0x022430D8 + ldr r2, [r1] + strb r0, [r2, #0x2a] + ldr r0, [r1] + ldrb r0, [r0, #0x2a] + cmp r0, #0 + beq _022299CC + cmp r0, #1 + beq _022299D8 + add sp, sp, #4 + ldmia sp!, {pc} +_022299CC: + mov r0, #7 + bl MOD13_0223424C + b _022299E0 +_022299D8: + mov r0, #0xe + bl MOD13_0223424C +_022299E0: + bl MOD13_02235EB0 + ldr r0, _022299F8 ; =MOD13_022298E4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022299F4: .word 0x022430D8 +_022299F8: .word MOD13_022298E4 + + arm_func_start MOD13_022299FC +MOD13_022299FC: ; 0x022299FC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02229A64 ; =0x022430D8 + ldr r1, [r0] + ldrb r0, [r1, #0x29] + ldr lr, [r1, #4] + ldr r1, _02229A68 ; =0x0223F268 + cmp r0, #0x20 + and r3, r0, #0xf + mov r2, r0, asr #4 + movhs r3, #0xf + ldrb ip, [r1, r3] + ldr r0, _02229A6C ; =0x0223F250 + movhs r2, #1 + ldrb r2, [r0, r2] + ldr r3, [lr] + ldr r1, _02229A70 ; =0xFE00FF00 + ldr r0, _02229A74 ; =0x000001FF + and r1, r3, r1 + and r2, r2, #0xff + and r3, ip, r0 + orr r0, r1, r2 + orr r0, r0, r3, lsl #16 + str r0, [lr] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229A64: .word 0x022430D8 +_02229A68: .word 0x0223F268 +_02229A6C: .word 0x0223F250 +_02229A70: .word 0xFE00FF00 +_02229A74: .word 0x000001FF + + arm_func_start MOD13_02229A78 +MOD13_02229A78: ; 0x02229A78 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + add r0, sp, #0x10 + mov r1, #0 + strh r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + strh r1, [r0, #6] + ldr r2, _02229B74 ; =0x0223F250 + ldr r0, _02229B78 ; =0x0223F254 + ldrb r4, [r2] + ldrh r3, [r0] + ldrh r2, [r0, #2] + ldr r0, _02229B7C ; =0x022430D8 + strh r4, [sp, #0x12] + ldr r0, [r0] + strh r3, [sp, #0x14] + strh r2, [sp, #0x16] + ldr r0, [r0] + bl MOD13_0223A4D8 + mov sb, #0 + ldr r0, _02229B74 ; =0x0223F250 + ldr r6, _02229B80 ; =0x0000E01D + ldrb r8, [r0, #1] + ldr fp, _02229B84 ; =0x0223F268 + mov sl, sb + strh sb, [sp, #0x1a] + mov r7, sb + mov r5, #2 + mov r4, #0x480 +_02229AF0: + ldr r0, _02229B7C ; =0x022430D8 + cmp sb, #0x10 + ldr r0, [r0] + moveq sl, r7 + streqh r8, [sp, #0x12] + add r1, r0, sb + ldrb r1, [r1, #8] + ldrb r2, [fp, sl] + cmp r1, #0x20 + streqh r6, [sp, #0x18] + strneh r1, [sp, #0x18] + ldrh r1, [sp, #0x16] + strh r2, [sp, #0x10] + str r1, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + add r1, sp, #0x18 + str r1, [sp, #0xc] + ldrh r1, [sp, #0x10] + ldrh r2, [sp, #0x12] + ldrh r3, [sp, #0x14] + ldr r0, [r0] + bl MOD13_0223A4F0 + add sb, sb, #1 + cmp sb, #0x20 + add sl, sl, #1 + blt _02229AF0 + ldr r0, _02229B7C ; =0x022430D8 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223A410 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02229B74: .word 0x0223F250 +_02229B78: .word 0x0223F254 +_02229B7C: .word 0x022430D8 +_02229B80: .word 0x0000E01D +_02229B84: .word 0x0223F268 + + arm_func_start MOD13_02229B88 +MOD13_02229B88: ; 0x02229B88 + stmdb sp!, {lr} + sub sp, sp, #0xc + bl MOD13_0221EE54 + ldr r0, _02229C74 ; =0x022430D8 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223B974 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02229C78 ; =0x02240174 + ldr r1, _02229C7C ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + add r0, sp, #0 + add r1, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #0 + bne _02229C0C + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r1, [sp] + mov r0, #0 + bl MOD13_02222F6C + ldr r0, _02229C80 ; =MOD13_0222DD4C + bl MOD13_02222FBC + b _02229C64 +_02229C0C: + ldr r0, _02229C74 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x2a] + cmp r0, #0 + bne _02229C44 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #1 + mov r1, #0 + bl MOD13_02222F6C + ldr r0, _02229C84 ; =MOD13_022295D8 + bl MOD13_02222FBC + b _02229C64 +_02229C44: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _02229C88 ; =MOD13_0223197C + bl MOD13_02222FBC +_02229C64: + ldr r0, _02229C74 ; =0x022430D8 + bl MOD13_0223AF90 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02229C74: .word 0x022430D8 +_02229C78: .word 0x02240174 +_02229C7C: .word 0x020C9480 +_02229C80: .word MOD13_0222DD4C +_02229C84: .word MOD13_022295D8 +_02229C88: .word MOD13_0223197C + + arm_func_start MOD13_02229C8C +MOD13_02229C8C: ; 0x02229C8C + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r0, _02229D50 ; =0x0223F258 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [sp, #4] + str r0, [sp, #8] + bl MOD13_022211C8 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {pc} + ldr r0, _02229D54 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x2a] + cmp r0, #0 + bne _02229CDC + ldr r0, _02229D58 ; =MOD13_02229B88 + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} +_02229CDC: + cmp r0, #2 + bne _02229D10 + mov ip, #0 + mov r0, #6 + mov r1, #3 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _02229D5C ; =MOD13_02229710 + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} +_02229D10: + add r1, sp, #0xc + mov r0, #0 + bl MOD13_02222F44 + mov r0, #0 + str r0, [sp] + ldr r2, [sp, #0xc] + add r0, sp, #4 + ldr r0, [r0, r2, lsl #2] + mov r1, #2 + mov r2, #1 + mvn r3, #0 + bl MOD13_02235EFC + ldr r0, _02229D60 ; =MOD13_02229994 + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_02229D50: .word 0x0223F258 +_02229D54: .word 0x022430D8 +_02229D58: .word MOD13_02229B88 +_02229D5C: .word MOD13_02229710 +_02229D60: .word MOD13_02229994 + + arm_func_start MOD13_02229D64 +MOD13_02229D64: ; 0x02229D64 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02221220 + mov r0, #0x15 + bl MOD13_0223424C + ldr r0, _02229D9C ; =MOD13_02229C8C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229D9C: .word MOD13_02229C8C + + arm_func_start MOD13_02229DA0 +MOD13_02229DA0: ; 0x02229DA0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02229DC0 ; =MOD13_02229D64 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229DC0: .word MOD13_02229D64 + + arm_func_start MOD13_02229DC4 +MOD13_02229DC4: ; 0x02229DC4 + bx lr + + arm_func_start MOD13_02229DC8 +MOD13_02229DC8: ; 0x02229DC8 + stmdb sp!, {r4, lr} + bl MOD13_0222120C + mov r4, r0 + cmp r4, #0x83 + bgt _02229E0C + cmp r4, #0x80 + blt _02229E00 + cmp r4, #0x80 + beq _02229E18 + cmp r4, #0x82 + beq _02229E7C + cmp r4, #0x83 + beq _02229EA0 + b _02229F0C +_02229E00: + cmp r4, #0 + beq _02229F70 + b _02229F0C +_02229E0C: + ldr r0, _02229F7C ; =0x0000E01D + cmp r4, r0 + b _02229F0C +_02229E18: + ldr r0, _02229F80 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0 + beq _02229F70 + mov r0, #3 + bl MOD13_0223424C + ldr r1, _02229F80 ; =0x022430D8 + mov r0, #0 + ldr r3, [r1] + ldrb r2, [r3, #0x29] + sub r2, r2, #1 + strb r2, [r3, #0x29] + ldr r3, [r1] + ldrb r2, [r3, #0x29] + add r2, r3, r2 + strb r0, [r2, #8] + ldr r1, [r1] + ldrb r1, [r1, #0x29] + cmp r1, #0 + bne _02229E70 + bl MOD13_022211F8 +_02229E70: + mov r0, #1 + bl MOD13_022211E4 + b _02229F70 +_02229E7C: + mov r0, #7 + bl MOD13_0223424C + ldr r1, _02229F80 ; =0x022430D8 + ldr r0, _02229F84 ; =MOD13_02229DA0 + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x2a] + bl MOD13_02222FBC + ldmia sp!, {r4, pc} +_02229EA0: + bl MOD13_02229748 + cmp r0, #0 + beq _02229EC8 + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02229F80 ; =0x022430D8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x2a] + b _02229EE0 +_02229EC8: + ldr r0, _02229F80 ; =0x022430D8 + mov r2, #2 + ldr r1, [r0] + mov r0, #9 + strb r2, [r1, #0x2a] + bl MOD13_0223424C +_02229EE0: + ldr r0, _02229F80 ; =0x022430D8 + ldr r1, _02229F88 ; =0xC1FFFCFF + ldr r2, [r0] + ldr r0, _02229F84 ; =MOD13_02229DA0 + ldr r3, [r2, #4] + ldr r2, [r3] + and r1, r2, r1 + orr r1, r1, #0x200 + str r1, [r3] + bl MOD13_02222FBC + ldmia sp!, {r4, pc} +_02229F0C: + ldr r0, _02229F80 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0x20 + beq _02229F70 + mov r0, #1 + bl MOD13_0223424C + ldr r1, _02229F80 ; =0x022430D8 + mov r0, #1 + ldr r3, [r1] + ldrb r2, [r3, #0x29] + add r2, r3, r2 + strb r4, [r2, #8] + ldr r2, [r1] + ldrb r1, [r2, #0x29] + add r1, r1, #1 + strb r1, [r2, #0x29] + bl MOD13_022211F8 + ldr r0, _02229F80 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0x20 + bne _02229F70 + mov r0, #0 + bl MOD13_022211E4 +_02229F70: + bl MOD13_02229A78 + bl MOD13_022299FC + ldmia sp!, {r4, pc} + .align 2, 0 +_02229F7C: .word 0x0000E01D +_02229F80: .word 0x022430D8 +_02229F84: .word MOD13_02229DA0 +_02229F88: .word 0xC1FFFCFF + + arm_func_start MOD13_02229F8C +MOD13_02229F8C: ; 0x02229F8C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02229DC8 + bl MOD13_02229DC4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222120C + cmp r0, #0xff + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02229FCC ; =MOD13_02229F8C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229FCC: .word MOD13_02229F8C + + arm_func_start MOD13_02229FD0 +MOD13_02229FD0: ; 0x02229FD0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222125C + mov r0, #0x14 + bl MOD13_0223424C + ldr r0, _0222A054 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0 + bne _0222A028 + mov r0, #0 + bl MOD13_022211F8 +_0222A028: + ldr r0, _0222A054 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0x20 + bne _0222A044 + mov r0, #0 + bl MOD13_022211E4 +_0222A044: + ldr r0, _0222A058 ; =0x02229FA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A054: .word 0x022430D8 +_0222A058: .word 0x02229FA4 + + arm_func_start MOD13_0222A05C +MOD13_0222A05C: ; 0x0222A05C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222A0B4 ; =MOD13_02229FD0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A0B4: .word MOD13_02229FD0 + + arm_func_start MOD13_0222A0B8 +MOD13_0222A0B8: ; 0x0222A0B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222A15C ; =0x0224018C + ldr r1, _0222A160 ; =0x020C9480 + bl MOD13_0221F174 + ldr r0, _0222A164 ; =0x022401A0 + ldr r1, _0222A168 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222A16C ; =0x022401B8 + ldr r1, _0222A170 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222A174 ; =0x022401D0 + ldr r1, _0222A178 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222A17C ; =0x04001008 + ldr ip, _0222A180 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222A184 ; =0x04000008 + ldr r2, _0222A188 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222A18C ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A15C: .word 0x0224018C +_0222A160: .word 0x020C9480 +_0222A164: .word 0x022401A0 +_0222A168: .word 0x020C8D4C +_0222A16C: .word 0x022401B8 +_0222A170: .word 0x020C9550 +_0222A174: .word 0x022401D0 +_0222A178: .word 0x020C908C +_0222A17C: .word 0x04001008 +_0222A180: .word 0x0400100A +_0222A184: .word 0x04000008 +_0222A188: .word 0x0400000A +_0222A18C: .word 0x0400000C + + arm_func_start MOD13_0222A190 +MOD13_0222A190: ; 0x0222A190 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _0222A2B8 ; =0x0223F24C + mov r0, #0x2c + ldrb r3, [r1] + ldrb r2, [r1, #1] + mov r1, #4 + strb r3, [sp] + strb r2, [sp, #1] + bl MOD13_0223AFE0 + ldr r2, _0222A2BC ; =0x022430D8 + add r1, sp, #8 + str r0, [r2] + add r0, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #0 + bne _0222A208 + ldr r0, _0222A2BC ; =0x022430D8 + ldr r0, [r0] + add r0, r0, #8 + bl MOD13_02233E90 + ldr r0, _0222A2BC ; =0x022430D8 + mov r1, #0x20 + ldr r0, [r0] + add r0, r0, #8 + bl MOD13_0223BDA4 + ldr r1, _0222A2BC ; =0x022430D8 + ldr r1, [r1] + strb r0, [r1, #0x29] +_0222A208: + bl MOD13_0222A0B8 + ldr r0, [sp, #4] + add r0, r0, #9 + bl MOD13_0221F4CC + ldr r0, [sp, #8] + cmp r0, #1 + bne _0222A238 + mov r0, #0x35 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + b _0222A250 +_0222A238: + ldr r2, [sp, #4] + add r0, sp, #0 + ldrb r0, [r0, r2] + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_0222A250: + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _0222A2BC ; =0x022430D8 + mov r1, #0x3e + ldr r2, [r2] + str r0, [r2] + mov r0, #0 + bl MOD13_02239E54 + ldr r1, _0222A2BC ; =0x022430D8 + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + ldr r1, [r0, #4] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + bl MOD13_022299FC + bl MOD13_02229A78 + ldr r0, _0222A2C0 ; =MOD13_0222A05C + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_0222A2B8: .word 0x0223F24C +_0222A2BC: .word 0x022430D8 +_0222A2C0: .word MOD13_0222A05C + + arm_func_start MOD13_0222A2C4 +MOD13_0222A2C4: ; 0x0222A2C4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222A308 ; =0x022430DC + ldr r1, _0222A30C ; =0xC1FFFCFF + ldr r2, [r0] + ldr r0, _0222A310 ; =MOD13_0222AD78 + ldr r3, [r2, #4] + ldr r2, [r3] + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A308: .word 0x022430DC +_0222A30C: .word 0xC1FFFCFF +_0222A310: .word MOD13_0222AD78 + + arm_func_start MOD13_0222A314 +MOD13_0222A314: ; 0x0222A314 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222A348 ; =MOD13_0222A2C4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A348: .word MOD13_0222A2C4 + + arm_func_start MOD13_0222A34C +MOD13_0222A34C: ; 0x0222A34C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + ldr r1, _0222A4A8 ; =0x0223F278 + ldr r0, _0222A4AC ; =0x022430DC + ldrb lr, [r1] + ldrb ip, [r1, #1] + ldrb r4, [r1, #2] + ldrb r3, [r1, #3] + mov r2, #0 + strb lr, [sp] + ldr r0, [r0] + strb r4, [sp, #2] + add r5, sp, #0 + mov r1, r2 + strb ip, [sp, #1] + strb r3, [sp, #3] + mov lr, r2 + add r4, r0, #8 +_0222A394: + ldrb r3, [r4, r1] + add r8, r4, r1 + cmp r3, #0x20 + beq _0222A3DC + mov r7, lr + mov r6, r5 +_0222A3AC: + ldrb ip, [r8, r7] + ldrb r3, [r6] + cmp ip, r3 + addhi sp, sp, #0x10 + movhi r0, #0 + ldmhiia sp!, {r4, r5, r6, r7, r8, pc} + cmp ip, r3 + blo _0222A3DC + add r7, r7, #1 + cmp r7, #3 + add r6, r6, #1 + blt _0222A3AC +_0222A3DC: + add r2, r2, #1 + cmp r2, #4 + add r1, r1, #3 + blt _0222A394 + add r1, sp, #8 + add r0, r0, #8 + bl MOD13_02233608 + add r0, sp, #4 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #1 + bne _0222A48C + mov ip, #0 + add r6, sp, #8 + mov r5, ip + mov r3, ip + mov r2, #1 +_0222A424: + mov r4, r3 +_0222A428: + cmp ip, #0 + beq _0222A450 + rsb r0, r4, #7 + ldrb r1, [r6] + mov r0, r2, lsl r0 + ands r0, r1, r0 + beq _0222A464 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0222A450: + rsb r0, r4, #7 + ldrb r1, [r6] + mov r0, r2, lsl r0 + ands r0, r1, r0 + moveq ip, r2 +_0222A464: + add r4, r4, #1 + cmp r4, #8 + blt _0222A428 + add r5, r5, #1 + cmp r5, #4 + add r6, r6, #1 + blt _0222A424 + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0222A48C: + add r0, sp, #8 + bl FUN_02095AE0 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0222A4A8: .word 0x0223F278 +_0222A4AC: .word 0x022430DC + + arm_func_start MOD13_0222A4B0 +MOD13_0222A4B0: ; 0x0222A4B0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, #0 + mov r4, r6 + ldr r0, _0222A538 ; =0x022430DC + mov ip, r6 + mov r1, #0x20 + mov r2, #0x30 +_0222A4D0: + ldr r3, [r0] + mov r5, ip + add r3, r3, #8 + add r7, r3, r4 +_0222A4E0: + ldrb r3, [r7, r5] + add lr, r7, r5 + cmp r3, #0x30 + beq _0222A500 + cmp r3, #0x20 + beq _0222A500 + cmp r3, #0 + bne _0222A51C +_0222A500: + cmp r5, #2 + moveq r3, r2 + movne r3, r1 + add r5, r5, #1 + strb r3, [lr] + cmp r5, #3 + blt _0222A4E0 +_0222A51C: + add r6, r6, #1 + cmp r6, #4 + add r4, r4, #3 + blt _0222A4D0 + bl MOD13_0222A6B8 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0222A538: .word 0x022430DC + + arm_func_start MOD13_0222A53C +MOD13_0222A53C: ; 0x0222A53C + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr lr, _0222A5DC ; =0x0223F2B0 + add ip, sp, #4 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldr r0, [lr] + str r0, [ip] + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {pc} + ldr r0, _0222A5E0 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x15] + cmp r0, #0 + bne _0222A5A4 + ldr r3, [r1, #4] + ldr r1, _0222A5E4 ; =0xC1FFFCFF + ldr r2, [r3] + ldr r0, _0222A5E8 ; =MOD13_0222AD78 + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #0x1c + ldmia sp!, {pc} +_0222A5A4: + add r0, sp, #0 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, _0222A5E0 ; =0x022430DC + ldr r2, [sp] + add r1, sp, #4 + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #8 + blx r1 + ldr r0, _0222A5EC ; =MOD13_0222A79C + bl MOD13_02222FBC + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_0222A5DC: .word 0x0223F2B0 +_0222A5E0: .word 0x022430DC +_0222A5E4: .word 0xC1FFFCFF +_0222A5E8: .word MOD13_0222AD78 +_0222A5EC: .word MOD13_0222A79C + + arm_func_start MOD13_0222A5F0 +MOD13_0222A5F0: ; 0x0222A5F0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + ldr r1, _0222A650 ; =0x022430DC + ldr r2, [r1] + strb r0, [r2, #0x15] + ldr r0, [r1] + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _0222A628 + cmp r0, #1 + beq _0222A634 + add sp, sp, #4 + ldmia sp!, {pc} +_0222A628: + mov r0, #7 + bl MOD13_0223424C + b _0222A63C +_0222A634: + mov r0, #0xe + bl MOD13_0223424C +_0222A63C: + bl MOD13_02235EB0 + ldr r0, _0222A654 ; =MOD13_0222A53C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A650: .word 0x022430DC +_0222A654: .word MOD13_0222A53C + + arm_func_start MOD13_0222A658 +MOD13_0222A658: ; 0x0222A658 + ldr r0, _0222A6A8 ; =0x022430DC + ldr r2, [r0] + mov r0, #3 + ldrb r3, [r2, #0x14] + ldr ip, [r2, #4] + cmp r3, #3 + movgt r3, #3 + mul r1, r3, r0 + ldr r0, _0222A6AC ; =0x0223F290 + add r1, r1, #2 + ldrb r3, [r0, r1] + ldr r0, _0222A6B0 ; =0x000001FF + ldr r2, [ip] + ldr r1, _0222A6B4 ; =0xFE00FF00 + and r3, r3, r0 + and r0, r2, r1 + orr r0, r0, #0x28 + orr r0, r0, r3, lsl #16 + str r0, [ip] + bx lr + .align 2, 0 +_0222A6A8: .word 0x022430DC +_0222A6AC: .word 0x0223F290 +_0222A6B0: .word 0x000001FF +_0222A6B4: .word 0xFE00FF00 + + arm_func_start MOD13_0222A6B8 +MOD13_0222A6B8: ; 0x0222A6B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x1c + ldr r0, _0222A78C ; =0x0223F288 + ldr r1, _0222A790 ; =0x0223F27C + ldrh r4, [r0, #4] + ldrh r3, [r0, #6] + ldrh r6, [r0] + ldrh r5, [r0, #2] + ldr r0, _0222A794 ; =0x022430DC + ldrh r2, [r1] + strh r4, [sp, #0x14] + ldrh r1, [r1, #2] + strh r3, [sp, #0x16] + ldr r0, [r0] + strh r6, [sp, #0x10] + strh r5, [sp, #0x12] + strh r2, [sp, #0x14] + strh r1, [sp, #0x16] + ldr r0, [r0] + mov r1, #0 + bl MOD13_0223A4D8 + mov r5, #0 + ldr r4, _0222A798 ; =0x0223F290 + strh r5, [sp, #0x1a] + ldr r6, _0222A794 ; =0x022430DC + add r7, sp, #0x18 + mov sb, #2 + mov r8, #0x480 +_0222A728: + ldr ip, [r6] + ldrh r0, [sp, #0x16] + add r1, ip, r5 + ldrb r1, [r1, #8] + strh r1, [sp, #0x18] + ldrb r1, [r4] + strh r1, [sp, #0x10] + str r0, [sp] + str sb, [sp, #4] + str r8, [sp, #8] + str r7, [sp, #0xc] + ldrh r2, [sp, #0x12] + ldrh r3, [sp, #0x14] + ldr r0, [ip] + bl MOD13_0223A4F0 + add r5, r5, #1 + cmp r5, #0xc + add r4, r4, #1 + blt _0222A728 + ldr r0, _0222A794 ; =0x022430DC + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223A410 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0222A78C: .word 0x0223F288 +_0222A790: .word 0x0223F27C +_0222A794: .word 0x022430DC +_0222A798: .word 0x0223F290 + + arm_func_start MOD13_0222A79C +MOD13_0222A79C: ; 0x0222A79C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EE54 + ldr r0, _0222A834 ; =0x022430DC + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223B974 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222A838 ; =0x022401E4 + ldr r1, _0222A83C ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + add r0, sp, #0 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, [sp] + mov r1, #1 + cmp r0, #3 + addge r0, r0, #1 + strge r0, [sp] + mov r0, #2 + bl MOD13_02222FA8 + ldr r1, [sp] + mov r0, #0 + add r1, r1, #3 + bl MOD13_02222F6C + ldr r0, _0222A840 ; =MOD13_0222DD4C + bl MOD13_02222FBC + ldr r0, _0222A834 ; =0x022430DC + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A834: .word 0x022430DC +_0222A838: .word 0x022401E4 +_0222A83C: .word 0x020C9480 +_0222A840: .word MOD13_0222DD4C + + arm_func_start MOD13_0222A844 +MOD13_0222A844: ; 0x0222A844 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022228BC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222A8E0 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _0222A880 + ldr r0, _0222A8E4 ; =MOD13_0222A79C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222A880: + cmp r0, #2 + bne _0222A8B4 + mov ip, #0 + mov r0, #6 + mov r1, #3 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222A8E8 ; =MOD13_0222A314 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222A8B4: + mov ip, #0 + mov r0, #0x47 + mov r1, #2 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222A8EC ; =MOD13_0222A5F0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A8E0: .word 0x022430DC +_0222A8E4: .word MOD13_0222A79C +_0222A8E8: .word MOD13_0222A314 +_0222A8EC: .word MOD13_0222A5F0 + + arm_func_start MOD13_0222A8F0 +MOD13_0222A8F0: ; 0x0222A8F0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02222928 + mov r0, #0x15 + bl MOD13_0223424C + ldr r0, _0222A928 ; =MOD13_0222A844 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A928: .word MOD13_0222A844 + + arm_func_start MOD13_0222A92C +MOD13_0222A92C: ; 0x0222A92C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222A94C ; =MOD13_0222A8F0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A94C: .word MOD13_0222A8F0 + + arm_func_start MOD13_0222A950 +MOD13_0222A950: ; 0x0222A950 + bx lr + + arm_func_start MOD13_0222A954 +MOD13_0222A954: ; 0x0222A954 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _0222A9EC ; =0x022430DC + mov r1, #3 + ldr r2, [r2] + mov r4, r0 + ldrb r0, [r2, #0x14] + add r3, r2, #8 + mul r2, r0, r1 + ldrb r1, [r3, r2] + add r0, r3, r2 + cmp r1, #0 + beq _0222A998 + cmp r1, #0x20 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} +_0222A998: + add r1, sp, #0 + mov r2, #3 + bl MI_CpuCopy8 + mov r3, #0 + add r2, sp, #0 + strb r3, [sp, #3] + mov r0, #0x20 +_0222A9B4: + ldrb r1, [r2] + cmp r1, #0 + bne _0222A9D0 + add r3, r3, #1 + cmp r3, #3 + strb r0, [r2], #1 + blt _0222A9B4 +_0222A9D0: + add r0, sp, #0 + bl atol + cmp r0, r4 + movge r0, #1 + movlt r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222A9EC: .word 0x022430DC + + arm_func_start MOD13_0222A9F0 +MOD13_0222A9F0: ; 0x0222A9F0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + bl MOD13_02222914 + mov r4, r0 + cmp r4, #0 + bgt _0222AA18 + cmp r4, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + b _0222ABF4 +_0222AA18: + sub r0, r4, #0x10 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0222ABF4 +_0222AA28: ; jump table + b _0222AA40 ; case 0 + b _0222AAF0 ; case 1 + b _0222AB48 ; case 2 + b _0222AB70 ; case 3 + add sp, sp, #4 ; case 4 + ldmia sp!, {r4, r5, pc} ; case 5 +_0222AA40: + ldr r0, _0222AD28 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0222AA60 + ldrb r0, [r1, #0xa] + cmp r0, #0 + beq _0222AD18 +_0222AA60: + mov r0, #3 + bl MOD13_0223424C + ldr r1, _0222AD28 ; =0x022430DC + mov r0, #3 + ldr r2, [r1] + ldrb r1, [r2, #0x14] + mul r0, r1, r0 + add r0, r0, #2 + add r0, r2, r0 + ldrb r0, [r0, #8] + cmp r0, #0 + subeq r0, r1, #1 + streqb r0, [r2, #0x14] + ldr r0, _0222AD28 ; =0x022430DC + mov r2, #3 + ldr r0, [r0] + mov r1, #0 + ldrb r3, [r0, #0x14] + add r0, r0, #8 + mla r0, r3, r2, r0 + bl MI_CpuFill8 + ldr r0, _0222AD28 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0222AADC + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0222AADC + mov r0, #0 + bl MOD13_02222900 +_0222AADC: + mov r0, #1 + bl MOD13_022228EC + mov r0, #0 + bl MOD13_022228D8 + b _0222AD18 +_0222AAF0: + ldr r0, _0222AD28 ; =0x022430DC + ldr r2, [r0] + ldrb r1, [r2, #0x14] + cmp r1, #3 + bhs _0222AD18 + mov r0, #3 + mul r0, r1, r0 + add r0, r0, #2 + add r0, r2, r0 + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0222AD18 + mov r0, #1 + bl MOD13_0223424C + ldr r1, _0222AD28 ; =0x022430DC + mov r0, #0 + ldr r2, [r1] + ldrb r1, [r2, #0x14] + add r1, r1, #1 + strb r1, [r2, #0x14] + bl MOD13_022228D8 + b _0222AD18 +_0222AB48: + ldr r0, _0222AD28 ; =0x022430DC + mov r2, #0 + ldr r1, [r0] + mov r0, #7 + strb r2, [r1, #0x15] + bl MOD13_0223424C + ldr r0, _0222AD2C ; =MOD13_0222A92C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222AB70: + bl MOD13_0222A34C + cmp r0, #0 + beq _0222AB98 + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222AD28 ; =0x022430DC + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x15] + b _0222ABB0 +_0222AB98: + ldr r0, _0222AD28 ; =0x022430DC + mov r2, #2 + ldr r1, [r0] + mov r0, #9 + strb r2, [r1, #0x15] + bl MOD13_0223424C +_0222ABB0: + ldr r1, _0222AD28 ; =0x022430DC + mov r3, #3 + ldr r2, [r1] + ldr r0, _0222AD30 ; =0xC1FFFCFF + strb r3, [r2, #0x14] + ldr r1, [r1] + ldr r2, [r1, #4] + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x200 + str r0, [r2] + bl MOD13_0222A658 + bl MOD13_0222A4B0 + ldr r0, _0222AD2C ; =MOD13_0222A92C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222ABF4: + ldr r0, _0222AD28 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #3 + bne _0222AC18 + mov r0, #0x1a + bl MOD13_0222A954 + cmp r0, #0 + bne _0222AD18 +_0222AC18: + mov r0, #1 + bl MOD13_0223424C + ldr r1, _0222AD28 ; =0x022430DC + mov r0, #3 + ldr r3, [r1] + ldrb r2, [r3, #0x14] + add r5, r3, #8 + mul lr, r2, r0 + add r0, lr, #2 + ldrb r3, [r5, r0] + add ip, r5, r0 + cmp r3, #0 + streqb r4, [ip] + beq _0222ACBC + add r2, lr, #1 + ldrb r0, [r5, r2] + add r2, r5, r2 + cmp r0, #0 + bne _0222AC98 + strb r3, [r2] + mov r0, #0x1a + strb r4, [ip] + bl MOD13_0222A954 + cmp r0, #0 + beq _0222ACBC + ldr r0, _0222AD28 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #3 + addlo r0, r0, #1 + strlob r0, [r1, #0x14] + b _0222ACBC +_0222AC98: + strb r0, [r5, lr] + ldrb r0, [ip] + strb r0, [r2] + strb r4, [ip] + ldr r1, [r1] + ldrb r0, [r1, #0x14] + cmp r0, #3 + addlo r0, r0, #1 + strlob r0, [r1, #0x14] +_0222ACBC: + mov r0, #1 + bl MOD13_02222900 + ldr r0, _0222AD28 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #3 + bhs _0222ACE4 + mov r0, #1 + bl MOD13_022228D8 + b _0222ACEC +_0222ACE4: + mov r0, #0 + bl MOD13_022228D8 +_0222ACEC: + ldr r0, _0222AD28 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #3 + bne _0222AD18 + mov r0, #0x1a + bl MOD13_0222A954 + cmp r0, #0 + beq _0222AD18 + mov r0, #0 + bl MOD13_022228EC +_0222AD18: + bl MOD13_0222A6B8 + bl MOD13_0222A658 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222AD28: .word 0x022430DC +_0222AD2C: .word MOD13_0222A92C +_0222AD30: .word 0xC1FFFCFF + + arm_func_start MOD13_0222AD34 +MOD13_0222AD34: ; 0x0222AD34 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222A9F0 + bl MOD13_0222A950 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02222914 + cmp r0, #0x1f + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _0222AD74 ; =MOD13_0222AD34 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AD74: .word MOD13_0222AD34 + + arm_func_start MOD13_0222AD78 +MOD13_0222AD78: ; 0x0222AD78 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02222964 + mov r0, #0x14 + bl MOD13_0223424C + ldr r0, _0222AE0C ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _0222ADDC + mov r0, #0 + bl MOD13_02222900 + mov r0, #0 + bl MOD13_022228D8 + b _0222ADFC +_0222ADDC: + mov r0, #0x1a + bl MOD13_0222A954 + cmp r0, #0 + beq _0222ADF4 + mov r0, #0 + bl MOD13_022228EC +_0222ADF4: + mov r0, #0 + bl MOD13_022228D8 +_0222ADFC: + ldr r0, _0222AE10 ; =0x0222AD4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AE0C: .word 0x022430DC +_0222AE10: .word 0x0222AD4C + + arm_func_start MOD13_0222AE14 +MOD13_0222AE14: ; 0x0222AE14 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222AE6C ; =MOD13_0222AD78 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AE6C: .word MOD13_0222AD78 + + arm_func_start MOD13_0222AE70 +MOD13_0222AE70: ; 0x0222AE70 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222AF14 ; =0x022401FC + ldr r1, _0222AF18 ; =0x020C9480 + bl MOD13_0221F174 + ldr r0, _0222AF1C ; =0x02240210 + ldr r1, _0222AF20 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222AF24 ; =0x02240228 + ldr r1, _0222AF28 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222AF2C ; =0x02240240 + ldr r1, _0222AF30 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222AF34 ; =0x04001008 + ldr ip, _0222AF38 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222AF3C ; =0x04000008 + ldr r2, _0222AF40 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222AF44 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AF14: .word 0x022401FC +_0222AF18: .word 0x020C9480 +_0222AF1C: .word 0x02240210 +_0222AF20: .word 0x020C8D4C +_0222AF24: .word 0x02240228 +_0222AF28: .word 0x020C9550 +_0222AF2C: .word 0x02240240 +_0222AF30: .word 0x020C908C +_0222AF34: .word 0x04001008 +_0222AF38: .word 0x0400100A +_0222AF3C: .word 0x04000008 +_0222AF40: .word 0x0400000A +_0222AF44: .word 0x0400000C + + arm_func_start MOD13_0222AF48 +MOD13_0222AF48: ; 0x0222AF48 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x24 + ldr r7, _0222B0A8 ; =0x0223F29C + ldr ip, _0222B0AC ; =0x0223F280 + ldmia r7!, {r0, r1, r2, r3} + add r6, sp, #0xc + stmia r6!, {r0, r1, r2, r3} + ldrb r5, [ip] + ldrb r4, [ip, #1] + ldrb lr, [ip, #2] + ldrb r3, [ip, #3] + ldrb r2, [ip, #4] + ldr ip, [r7] + mov r0, #0x18 + mov r1, #4 + str ip, [r6] + strb r5, [sp] + strb r4, [sp, #1] + strb lr, [sp, #2] + strb r3, [sp, #3] + strb r2, [sp, #4] + bl MOD13_0223AFE0 + ldr r2, _0222B0B0 ; =0x022430DC + mov r1, #0 + str r0, [r2] + add r0, sp, #8 + bl MOD13_02222F44 + ldr r0, _0222B0B0 ; =0x022430DC + ldr r2, [sp, #8] + add r1, sp, #0xc + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #8 + blx r1 + ldr r0, _0222B0B0 ; =0x022430DC + ldr r1, _0222B0B4 ; =0x02240258 + ldr r4, [r0] + mov r2, #3 + add r0, r4, #8 + bl memcmp + cmp r0, #0 + movne r0, #3 + strneb r0, [r4, #0x14] + bne _0222B018 + add r0, r4, #8 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r0, _0222B0B0 ; =0x022430DC + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x14] +_0222B018: + bl MOD13_0222AE70 + ldr r0, [sp, #8] + add r0, r0, #0xb + bl MOD13_0221F4CC + ldr r2, [sp, #8] + add r0, sp, #0 + ldrb r0, [r0, r2] + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _0222B0B0 ; =0x022430DC + mov r1, #0x3f + ldr r2, [r2] + str r0, [r2] + mov r0, #0 + bl MOD13_02239E54 + ldr r1, _0222B0B0 ; =0x022430DC + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + ldr r1, [r0, #4] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + bl MOD13_0222A658 + bl MOD13_0222A6B8 + ldr r0, _0222B0B8 ; =MOD13_0222AE14 + bl MOD13_02222FBC + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0222B0A8: .word 0x0223F29C +_0222B0AC: .word 0x0223F280 +_0222B0B0: .word 0x022430DC +_0222B0B4: .word 0x02240258 +_0222B0B8: .word MOD13_0222AE14 + + arm_func_start MOD13_0222B0BC +MOD13_0222B0BC: ; 0x0222B0BC + ldr r1, _0222B0C8 ; =0x022430E0 + str r0, [r1] + bx lr + .align 2, 0 +_0222B0C8: .word 0x022430E0 + + arm_func_start MOD13_0222B0CC +MOD13_0222B0CC: ; 0x0222B0CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + beq _0222B164 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222B194 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222B164: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + mov r0, #0 + bl MOD13_0222B7F4 + ldr r0, _0222B198 ; =MOD13_0222DD4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B194: .word MOD13_02230714 +_0222B198: .word MOD13_0222DD4C + + arm_func_start MOD13_0222B19C +MOD13_0222B19C: ; 0x0222B19C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222B1F4 ; =MOD13_0222B0CC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B1F4: .word MOD13_0222B0CC + + arm_func_start MOD13_0222B1F8 +MOD13_0222B1F8: ; 0x0222B1F8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222B21C ; =MOD13_0222B19C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B21C: .word MOD13_0222B19C + + arm_func_start MOD13_0222B220 +MOD13_0222B220: ; 0x0222B220 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222B250 ; =MOD13_0222B1F8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B250: .word MOD13_0222B1F8 + + arm_func_start MOD13_0222B254 +MOD13_0222B254: ; 0x0222B254 + bx lr + + arm_func_start MOD13_0222B258 +MOD13_0222B258: ; 0x0222B258 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222B258 + bl MOD13_0222B254 + bl MOD13_0222B220 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222B2D0 ; =0x0222B284 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B2D0: .word 0x0222B284 + + arm_func_start MOD13_0222B2D4 +MOD13_0222B2D4: ; 0x0222B2D4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #4 + bl MOD13_0221F0EC + ldr r0, _0222B31C ; =0x0222B2A0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B31C: .word 0x0222B2A0 + + arm_func_start MOD13_0222B320 +MOD13_0222B320: ; 0x0222B320 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222B358 ; =MOD13_0222B2D4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B358: .word MOD13_0222B2D4 + + arm_func_start MOD13_0222B35C +MOD13_0222B35C: ; 0x0222B35C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + add r1, sp, #0x10 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, _0222B690 ; =0x022430E0 + ldr r1, _0222B694 ; =0xFFFFB17D + ldr r0, [r0] + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B698 ; =0xFFFFB17C + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B69C ; =0xFFFFB17B + cmp r0, r1 + movge r4, #0x13 + bge _0222B5B8 + ldr r1, _0222B6A0 ; =0xFFFFB175 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B6A4 ; =0xFFFFB174 + cmp r0, r1 + movge r4, #0x12 + bge _0222B5B8 + ldr r1, _0222B6A8 ; =0xFFFFB173 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B6AC ; =0xFFFFB172 + cmp r0, r1 + movge r4, #3 + bge _0222B5B8 + ldr r1, _0222B6B0 ; =0xFFFFADF9 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B6B4 ; =0xFFFFA629 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6B8 ; =0xFFFFA241 + cmp r0, r1 + movge r4, #0x13 + bge _0222B5B8 + ldr r1, _0222B6BC ; =0xFFFF3CB1 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6C0 ; =0xFFFF3CAE + cmp r0, r1 + movge r4, #7 + bge _0222B5B8 + ldr r1, _0222B6C4 ; =0xFFFF3CAD + cmp r0, r1 + movge r4, #5 + bge _0222B5B8 + ldr r1, _0222B6C8 ; =0xFFFF3C4E + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6CC ; =0xFFFF3C4D + cmp r0, r1 + blt _0222B478 + ldr r0, [sp, #0x10] + cmp r0, #2 + moveq r4, #5 + movne r4, #7 + b _0222B5B8 +_0222B478: + ldr r1, _0222B6D0 ; =0xFFFF3866 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6D4 ; =0xFFFF3865 + cmp r0, r1 + blt _0222B4A8 + ldr r0, [sp, #0x10] + cmp r0, #2 + moveq r4, #5 + movne r4, #8 + b _0222B5B8 +_0222B4A8: + ldr r1, _0222B6D8 ; =0xFFFF3862 + cmp r0, r1 + movge r4, #9 + bge _0222B5B8 + ldr r1, _0222B6DC ; =0xFFFF3861 + cmp r0, r1 + movge r4, #5 + bge _0222B5B8 + ldr r1, _0222B6E0 ; =0xFFFF3801 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6E4 ; =0xFFFF379D + cmp r0, r1 + movge r4, #0x14 + bge _0222B5B8 + ldr r1, _0222B6E8 ; =0xFFFF379A + cmp r0, r1 + movge r4, #0x15 + bge _0222B5B8 + ldr r1, _0222B6EC ; =0xFFFF3799 + cmp r0, r1 + movge r4, #4 + bge _0222B5B8 + ldr r1, _0222B6F0 ; =0xFFFF34E1 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6F4 ; =0xFFFF34DE + cmp r0, r1 + movge r4, #0xa + bge _0222B5B8 + ldr r1, _0222B6F8 ; =0xFFFF34DD + cmp r0, r1 + movge r4, #0x16 + bge _0222B5B8 + ldr r1, _0222B6FC ; =0xFFFF347D + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B700 ; =0xFFFF3479 + cmp r0, r1 + movge r4, #0xb + bge _0222B5B8 + ldr r1, _0222B704 ; =0xFFFF3419 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B708 ; =0xFFFF3415 + cmp r0, r1 + movge r4, #0xb + bge _0222B5B8 + ldr r1, _0222B70C ; =0xFFFF33B5 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B710 ; =0xFFFF3351 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B714 ; =0xFFFF30F9 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B718 ; =0xFFFF2FCD + cmp r0, r1 + movge r4, #2 + movlt r4, #0 +_0222B5B8: + bl MOD13_02222F34 + mov r2, r0 + ldr r1, _0222B71C ; =0x0223F2C4 + mov r0, #0 + ldrb r1, [r1, r2] + bl MOD13_0223A7F0 + ldr r1, _0222B720 ; =0x0224307C + mov r5, r0 + ldr r0, [r1] + mov r1, r4 + bl MOD13_02223568 + ldr r1, _0222B690 ; =0x022430E0 + mov r4, r0 + ldr r1, [r1] + ldr r2, _0222B724 ; =0x0224025C + rsb r3, r1, #0 + add r0, sp, #0x14 + mov r1, #8 + bl swprintf + bl MOD13_02222F34 + mov r1, r0, lsl #2 + ldr r0, _0222B728 ; =0x0223F2D6 + ldrh r6, [r0, r1] + bl MOD13_02222F34 + mov r1, r0, lsl #2 + ldr r0, _0222B72C ; =0x0223F2D4 + mov ip, #0xa + ldrh r1, [r0, r1] + add r3, sp, #0x14 + mov r0, #0 + str ip, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + mov r2, r6 + mov r0, r5 + mov r3, #2 + bl MOD13_0223A528 + bl MOD13_0221EF88 + ldr r3, _0222B730 ; =0x0223F2CC + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + mov r0, r5 + bl MOD13_0223A4F0 + mov r0, r5 + bl MOD13_0223A410 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222B690: .word 0x022430E0 +_0222B694: .word 0xFFFFB17D +_0222B698: .word 0xFFFFB17C +_0222B69C: .word 0xFFFFB17B +_0222B6A0: .word 0xFFFFB175 +_0222B6A4: .word 0xFFFFB174 +_0222B6A8: .word 0xFFFFB173 +_0222B6AC: .word 0xFFFFB172 +_0222B6B0: .word 0xFFFFADF9 +_0222B6B4: .word 0xFFFFA629 +_0222B6B8: .word 0xFFFFA241 +_0222B6BC: .word 0xFFFF3CB1 +_0222B6C0: .word 0xFFFF3CAE +_0222B6C4: .word 0xFFFF3CAD +_0222B6C8: .word 0xFFFF3C4E +_0222B6CC: .word 0xFFFF3C4D +_0222B6D0: .word 0xFFFF3866 +_0222B6D4: .word 0xFFFF3865 +_0222B6D8: .word 0xFFFF3862 +_0222B6DC: .word 0xFFFF3861 +_0222B6E0: .word 0xFFFF3801 +_0222B6E4: .word 0xFFFF379D +_0222B6E8: .word 0xFFFF379A +_0222B6EC: .word 0xFFFF3799 +_0222B6F0: .word 0xFFFF34E1 +_0222B6F4: .word 0xFFFF34DE +_0222B6F8: .word 0xFFFF34DD +_0222B6FC: .word 0xFFFF347D +_0222B700: .word 0xFFFF3479 +_0222B704: .word 0xFFFF3419 +_0222B708: .word 0xFFFF3415 +_0222B70C: .word 0xFFFF33B5 +_0222B710: .word 0xFFFF3351 +_0222B714: .word 0xFFFF30F9 +_0222B718: .word 0xFFFF2FCD +_0222B71C: .word 0x0223F2C4 +_0222B720: .word 0x0224307C +_0222B724: .word 0x0224025C +_0222B728: .word 0x0223F2D6 +_0222B72C: .word 0x0223F2D4 +_0222B730: .word 0x0223F2CC + + arm_func_start MOD13_0222B734 +MOD13_0222B734: ; 0x0222B734 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222B7B4 ; =0x02240264 + ldr r1, _0222B7B8 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222B7BC ; =0x04001008 + ldr ip, _0222B7C0 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222B7C4 ; =0x04000008 + ldr r2, _0222B7C8 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222B7CC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B7B4: .word 0x02240264 +_0222B7B8: .word 0x020C908C +_0222B7BC: .word 0x04001008 +_0222B7C0: .word 0x0400100A +_0222B7C4: .word 0x04000008 +_0222B7C8: .word 0x0400000A +_0222B7CC: .word 0x0400000C + + arm_func_start MOD13_0222B7D0 +MOD13_0222B7D0: ; 0x0222B7D0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222B734 + bl MOD13_0222B35C + ldr r0, _0222B7F0 ; =MOD13_0222B320 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B7F0: .word MOD13_0222B320 + + arm_func_start MOD13_0222B7F4 +MOD13_0222B7F4: ; 0x0222B7F4 + ldr r1, _0222B800 ; =0x022430E8 + strb r0, [r1] + bx lr + .align 2, 0 +_0222B800: .word 0x022430E8 + + arm_func_start MOD13_0222B804 +MOD13_0222B804: ; 0x0222B804 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222B82C ; =MOD13_0222DA24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B82C: .word MOD13_0222DA24 + + arm_func_start MOD13_0222B830 +MOD13_0222B830: ; 0x0222B830 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222B874 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD13_02232780 + ldr r0, _0222B878 ; =MOD13_0222B804 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B874: .word 0x022430F4 +_0222B878: .word MOD13_0222B804 + + arm_func_start MOD13_0222B87C +MOD13_0222B87C: ; 0x0222B87C + stmdb sp!, {r4, lr} + bl MOD13_02234164 + mov r4, r0 + ldrb r0, [r4, #0x40] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldrb r0, [r4, #0xf6] + cmp r0, #0 + bne _0222B8C8 + add r0, r4, #0xc8 + bl FUN_02095AE0 + cmp r0, #0 + bne _0222B8C8 + add r0, r4, #0xcc + bl FUN_02095AE0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_0222B8C8: + ldrb r0, [r4, #0xf5] + cmp r0, #0 + bne _0222B914 + add r0, r4, #0xc0 + bl FUN_02095AE0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0xc4 + bl FUN_02095AE0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0xc0 + add r1, r4, #0xf0 + bl FUN_02095B0C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_0222B914: + mov r0, #1 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0222B91C +MOD13_0222B91C: ; 0x0222B91C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0222B9D0 ; =0x0223F2F0 + ldr r0, _0222B9D4 ; =0x022430E4 + ldrb ip, [r1] + ldrb r3, [r1, #1] + ldrb r2, [r1, #2] + ldrb r1, [r1, #3] + strb ip, [sp] + ldrb lr, [r0] + add r4, sp, #0 + strb r3, [sp, #1] + strb r2, [sp, #2] + strb r1, [sp, #3] + mov ip, #0 +_0222B958: + ldrb r0, [r4] + cmp lr, r0 + bne _0222B9B8 + ldr r0, _0222B9D8 ; =0x022430F4 + mov r3, #0x14 + ldr r2, [r0] + ands r1, ip, #1 + add r1, r2, ip + strb r3, [r1, #4] + beq _0222B99C + ldr r1, [r0] + sub r0, ip, #1 + add r0, r1, r0 + mov r1, #0 + strb r1, [r0, #4] + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222B99C: + ldr r1, [r0] + add r0, ip, #1 + add r0, r1, r0 + mov r1, #0 + strb r1, [r0, #4] + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222B9B8: + add ip, ip, #1 + cmp ip, #4 + add r4, r4, #1 + blt _0222B958 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222B9D0: .word 0x0223F2F0 +_0222B9D4: .word 0x022430E4 +_0222B9D8: .word 0x022430F4 + + arm_func_start MOD13_0222B9DC +MOD13_0222B9DC: ; 0x0222B9DC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r5, _0222BA34 ; =0x022430F4 + mov r4, #0 +_0222B9EC: + ldr r0, [r5] + add r1, r0, r4 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0222BA20 + sub r0, r0, #1 + strb r0, [r1, #4] + ldr r0, [r5] + add r0, r0, r4 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _0222BA20 + bl MOD13_0222CD8C +_0222BA20: + add r4, r4, #1 + cmp r4, #4 + blt _0222B9EC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222BA34: .word 0x022430F4 + + arm_func_start MOD13_0222BA38 +MOD13_0222BA38: ; 0x0222BA38 + ldr r1, _0222BA64 ; =0x022430E4 + ldr r0, _0222BA68 ; =0x022430F4 + ldrb r2, [r1] + ldr r0, [r0] + ldr r1, _0222BA6C ; =0x0223F2EC + sub r2, r2, #0xb + ldrb r1, [r1, r2] + ldr ip, _0222BA70 ; =MOD13_022327DC + ldr r0, [r0, #0x10] + mov r2, r1 + bx ip + .align 2, 0 +_0222BA64: .word 0x022430E4 +_0222BA68: .word 0x022430F4 +_0222BA6C: .word 0x0223F2EC +_0222BA70: .word MOD13_022327DC + + arm_func_start MOD13_0222BA74 +MOD13_0222BA74: ; 0x0222BA74 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl MOD13_02234164 + ldr r1, _0222BDA0 ; =0x022430E4 + mov r4, #0 + ldrb r2, [r1] + cmp r2, #8 + bne _0222BABC + ldrb r0, [r0, #0xf5] + cmp r0, #0 + bne _0222BABC + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + cmp r5, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} +_0222BABC: + cmp r2, #0 + bgt _0222BAD0 + cmp r2, #0 + beq _0222BAF0 + b _0222BC78 +_0222BAD0: + sub r0, r2, #0xa + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0222BC78 +_0222BAE0: ; jump table + b _0222BB20 ; case 0 + b _0222BB5C ; case 1 + b _0222BBD4 ; case 2 + b _0222BBD4 ; case 3 +_0222BAF0: + cmp r5, #1 + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #0xb + streqb r1, [r0] + beq _0222BD74 + cmp r5, #3 + ldreq r0, _0222BDA4 ; =0x022430EC + movne r4, #2 + ldreqb r1, [r0] + addeq r1, r1, #1 + streqb r1, [r0] + b _0222BD74 +_0222BB20: + cmp r5, #1 + ldreq r0, _0222BDA4 ; =0x022430EC + ldreqb r1, [r0] + subeq r1, r1, #1 + streqb r1, [r0] + beq _0222BD74 + cmp r5, #3 + movne r4, #2 + bne _0222BD74 + ldr r1, _0222BDA8 ; =0x022430F4 + ldr r0, _0222BDA0 ; =0x022430E4 + ldr r1, [r1] + ldrb r1, [r1, #0x42] + strb r1, [r0] + b _0222BD74 +_0222BB5C: + cmp r5, #1 + bne _0222BB9C + ldr r0, _0222BDA8 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222BDA8 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {r4, r5, pc} +_0222BB9C: + cmp r5, #3 + movne r4, #2 + bne _0222BD74 + ldr r2, _0222BDA0 ; =0x022430E4 + mov r3, #0 + ldr r1, _0222BDA4 ; =0x022430EC + ldr r0, _0222BDAC ; =0x022430F0 + strb r3, [r2] + strb r3, [r1] + strh r3, [r0] + bl MOD13_0222CD8C + mov r0, #0 + bl MOD13_02232F44 + b _0222BD74 +_0222BBD4: + ldr r0, _0222BDA8 ; =0x022430F4 + cmp r5, #1 + ldr r1, [r0] + strb r2, [r1, #0x42] + bne _0222BC1C + ldr r2, _0222BDA0 ; =0x022430E4 + mov ip, #0xa + ldr r1, _0222BDA4 ; =0x022430EC + mov r5, #3 + ldr r0, _0222BDAC ; =0x022430F0 + mov r3, #0x91 + strb ip, [r2] + strb r5, [r1] + strh r3, [r0] + bl MOD13_0222CD8C + mov r0, #0x37 + bl MOD13_02232F44 + b _0222BD74 +_0222BC1C: + cmp r5, #3 + bne _0222BC58 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222BDA8 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {r4, r5, pc} +_0222BC58: + cmp r2, #0xc + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #0xd + streqb r1, [r0] + ldrne r0, _0222BDA0 ; =0x022430E4 + movne r1, #0xc + strneb r1, [r0] + b _0222BD74 +_0222BC78: + cmp r5, #1 + bne _0222BCC8 + ldr r0, _0222BDA4 ; =0x022430EC + ldrb r1, [r0] + cmp r1, #0 + subne r1, r1, #1 + strneb r1, [r0] + bne _0222BD74 + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222BDB0 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222BDA8 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {r4, r5, pc} +_0222BCC8: + cmp r5, #3 + bne _0222BD18 + ldr r0, _0222BDA4 ; =0x022430EC + ldrb r1, [r0] + cmp r1, #3 + addlo r1, r1, #1 + strlob r1, [r0] + blo _0222BD74 + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222BDB4 ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222BDA8 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {r4, r5, pc} +_0222BD18: + cmp r2, #2 + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #3 + mov r4, #2 + streqb r1, [r0] + beq _0222BD68 + cmp r2, #3 + ldreq r0, _0222BDA0 ; =0x022430E4 + streqb r4, [r0] + beq _0222BD68 + cmp r2, #7 + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #8 + streqb r1, [r0] + beq _0222BD68 + cmp r2, #8 + bne _0222BD74 + ldr r0, _0222BDA0 ; =0x022430E4 + mov r1, #7 + strb r1, [r0] +_0222BD68: + mov r0, #8 + bl MOD13_0223424C + bl MOD13_0222BEC0 +_0222BD74: + cmp r4, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #8 + bl MOD13_0223424C + cmp r4, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl MOD13_0222BDF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222BDA0: .word 0x022430E4 +_0222BDA4: .word 0x022430EC +_0222BDA8: .word 0x022430F4 +_0222BDAC: .word 0x022430F0 +_0222BDB0: .word MOD13_0222C0E8 +_0222BDB4: .word MOD13_0222C03C + + arm_func_start MOD13_0222BDB8 +MOD13_0222BDB8: ; 0x0222BDB8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0222BDE8 ; =0x022430E4 + ldr r2, _0222BDEC ; =0x0223F32C + strb r0, [r1] + ldrb r0, [r2, r0] + bl MOD13_0222C1F4 + ldr r1, _0222BDF0 ; =0x022430EC + strb r0, [r1] + bl MOD13_0222BEC0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222BDE8: .word 0x022430E4 +_0222BDEC: .word 0x0223F32C +_0222BDF0: .word 0x022430EC + + arm_func_start MOD13_0222BDF4 +MOD13_0222BDF4: ; 0x0222BDF4 + stmdb sp!, {r4, lr} + ldr r0, _0222BEB0 ; =0x022430E4 + ldrb r0, [r0] + add r0, r0, #0xf5 + and r0, r0, #0xff + cmp r0, #2 + bhi _0222BE18 + bl MOD13_0222BEC0 + ldmia sp!, {r4, pc} +_0222BE18: + bl MOD13_02234164 + ldr r1, _0222BEB4 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_DivS32 + ldr r1, _0222BEB8 ; =0x022430EC + ldrb r1, [r1] + add r2, r1, r0 + cmp r2, #2 + beq _0222BE50 + cmp r2, #6 + beq _0222BE74 + b _0222BE98 +_0222BE50: + ldrb r0, [r4, #0xf5] + cmp r0, #0 + ldrne r0, _0222BEB0 ; =0x022430E4 + movne r1, #2 + strneb r1, [r0] + ldreq r0, _0222BEB0 ; =0x022430E4 + moveq r1, #3 + streqb r1, [r0] + b _0222BEA8 +_0222BE74: + ldrb r0, [r4, #0xf6] + cmp r0, #0 + ldrne r0, _0222BEB0 ; =0x022430E4 + movne r1, #7 + strneb r1, [r0] + ldreq r0, _0222BEB0 ; =0x022430E4 + moveq r1, #8 + streqb r1, [r0] + b _0222BEA8 +_0222BE98: + ldr r1, _0222BEBC ; =0x0223F314 + ldr r0, _0222BEB0 ; =0x022430E4 + ldrb r1, [r1, r2] + strb r1, [r0] +_0222BEA8: + bl MOD13_0222BEC0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222BEB0: .word 0x022430E4 +_0222BEB4: .word 0x022430F0 +_0222BEB8: .word 0x022430EC +_0222BEBC: .word 0x0223F314 + + arm_func_start MOD13_0222BEC0 +MOD13_0222BEC0: ; 0x0222BEC0 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _0222BF90 ; =0x0223F338 + add r3, sp, #8 + mov r2, #7 +_0222BED4: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _0222BED4 + ldr r0, _0222BF94 ; =0x022430E4 + add r1, sp, #8 + ldrb r0, [r0] + ldrb r2, [r1, r0] + cmp r2, #3 + blt _0222BF30 + mov r3, r2, lsl #3 + ldr r1, _0222BF98 ; =0x0223F3CC + ldr r2, _0222BF9C ; =0x0223F3D0 + ldr r0, _0222BFA0 ; =0x0223F3CE + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + ldrh r3, [r0, r3] + mov r0, #3 + bl MOD13_0221F348 + add sp, sp, #0x1c + ldmia sp!, {pc} +_0222BF30: + ldr r0, _0222BF98 ; =0x0223F3CC + mov r1, r2, lsl #3 + add lr, r0, r2, lsl #3 + ldrh ip, [r0, r1] + ldrh r1, [lr, #2] + ldr r0, _0222BFA4 ; =0x022430EC + ldrh r3, [lr, #4] + strh r1, [sp, #2] + ldrh r2, [sp, #2] + ldrb r1, [r0] + mov r0, #0x1d + strh ip, [sp] + mla r0, r1, r0, r2 + strh r3, [sp, #4] + strh r0, [sp, #2] + ldrh ip, [lr, #6] + ldrh r1, [sp] + ldrh r2, [sp, #4] + ldrh r3, [sp, #2] + mov r0, #1 + strh ip, [sp, #6] + bl MOD13_0221F348 + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_0222BF90: .word 0x0223F338 +_0222BF94: .word 0x022430E4 +_0222BF98: .word 0x0223F3CC +_0222BF9C: .word 0x0223F3D0 +_0222BFA0: .word 0x0223F3CE +_0222BFA4: .word 0x022430EC + + arm_func_start MOD13_0222BFA8 +MOD13_0222BFA8: ; 0x0222BFA8 + stmdb sp!, {r4, lr} + ldr r0, _0222C024 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x44] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _0222C028 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222C028 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_ModS32 + ldr r1, _0222C02C ; =0x01FF0000 + sub ip, r0, #0x33 + ldr r2, _0222C030 ; =0x04000010 + and r3, r1, ip, lsl #16 + ldr r0, _0222C034 ; =0x0223F320 + str r3, [r2] + ldrb r3, [r0, r4] + ldr r2, _0222C038 ; =0x04000018 + ldr r0, _0222C024 ; =0x022430F4 + add r3, ip, r3 + and r1, r1, r3, lsl #16 + str r1, [r2] + ldr r0, [r0] + mov r1, #0 + strb r1, [r0, #0x44] + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C024: .word 0x022430F4 +_0222C028: .word 0x022430F0 +_0222C02C: .word 0x01FF0000 +_0222C030: .word 0x04000010 +_0222C034: .word 0x0223F320 +_0222C038: .word 0x04000018 + + arm_func_start MOD13_0222C03C +MOD13_0222C03C: ; 0x0222C03C + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _0222C0DC ; =0x022430F0 + mov r1, #0x1d + ldrh r2, [r0] + add r2, r2, #6 + strh r2, [r0] + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #6 + blt _0222C078 + bl MOD13_0222C4C8 + ldmia sp!, {r4, pc} +_0222C078: + ldr r1, _0222C0DC ; =0x022430F0 + ldrh r2, [r1] + sub r0, r2, r0 + strh r0, [r1] + bl MOD13_0222CD8C + ldr r1, _0222C0DC ; =0x022430F0 + mov r0, #0x37 + ldrh r1, [r1] + ldr r2, _0222C0E0 ; =0xE1FC780F + mul r3, r1, r0 + smull r1, r0, r2, r3 + add r0, r3, r0 + mov r0, r0, asr #7 + mov r1, r3, lsr #0x1f + add r0, r1, r0 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_0222BDF4 + ldr r0, _0222C0E4 ; =0x022430F4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C0DC: .word 0x022430F0 +_0222C0E0: .word 0xE1FC780F +_0222C0E4: .word 0x022430F4 + + arm_func_start MOD13_0222C0E8 +MOD13_0222C0E8: ; 0x0222C0E8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _0222C1C4 ; =0x022430F0 + ldrh r1, [r0] + cmp r1, #6 + subhi r1, r1, #6 + strhih r1, [r0] + movls r1, #0 + strlsh r1, [r0] + ldr r0, _0222C1C4 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_ModS32 + mov r5, r0 + cmp r5, #0x17 + bne _0222C140 + bl MOD13_0222CD8C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222C140: + cmp r5, #0x17 + ble _0222C160 + ldr r0, _0222C1C4 ; =0x022430F0 + rsb r1, r5, #0x1d + ldrh r2, [r0] + mov r5, #0 + add r1, r2, r1 + strh r1, [r0] +_0222C160: + bl MOD13_0222C4C8 + cmp r5, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0222C1C4 ; =0x022430F0 + mov r0, #0x37 + ldrh r1, [r1] + ldr r2, _0222C1C8 ; =0xE1FC780F + mul r3, r1, r0 + smull r1, r0, r2, r3 + add r0, r3, r0 + mov r0, r0, asr #7 + mov r1, r3, lsr #0x1f + add r0, r1, r0 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_0222BDF4 + ldr r0, _0222C1CC ; =0x022430F4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222C1C4: .word 0x022430F0 +_0222C1C8: .word 0xE1FC780F +_0222C1CC: .word 0x022430F4 + + arm_func_start MOD13_0222C1D0 +MOD13_0222C1D0: ; 0x0222C1D0 + stmdb sp!, {r4, lr} + ldr r1, _0222C1F0 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_DivS32 + add r0, r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C1F0: .word 0x022430F0 + + arm_func_start MOD13_0222C1F4 +MOD13_0222C1F4: ; 0x0222C1F4 + stmdb sp!, {r4, lr} + ldr r1, _0222C234 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_DivS32 + mov r1, #0 +_0222C210: + cmp r0, r4 + moveq r0, r1 + ldmeqia sp!, {r4, pc} + add r1, r1, #1 + cmp r1, #4 + add r0, r0, #1 + blt _0222C210 + mvn r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C234: .word 0x022430F0 + + arm_func_start MOD13_0222C238 +MOD13_0222C238: ; 0x0222C238 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r0, _0222C4AC ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0xe + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _0222C4B0 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222C4B4 ; =0x0223F2FC + add r4, sp, #0 + ldrh ip, [r1] + ldrh r3, [r1, #2] + ldrh r2, [r1, #4] + ldrh r1, [r1, #6] + mov r5, r0 + strh ip, [sp] + strh r3, [sp, #2] + strh r2, [sp, #4] + strh r1, [sp, #6] + mov r6, #0 +_0222C298: + cmp r5, #2 + beq _0222C2C4 + cmp r5, #6 + beq _0222C2C4 + mov r0, r4 + bl MOD13_0223B194 + cmp r0, #0 + ldrne r0, _0222C4B8 ; =0x0223F314 + addne sp, sp, #8 + ldrneb r0, [r0, r5] + ldmneia sp!, {r4, r5, r6, pc} +_0222C2C4: + ldrh r0, [sp, #2] + add r6, r6, #1 + cmp r6, #4 + add r0, r0, #0x1d + strh r0, [sp, #2] + add r5, r5, #1 + blt _0222C298 + ldr r0, _0222C4B0 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + mov r3, #0 +_0222C2F4: + cmp r0, #2 + bne _0222C398 + ldr r1, _0222C4BC ; =0x0223F30C + mov r0, #0x1d + ldrh r2, [r1, #2] + mul r4, r3, r0 + strh r2, [sp, #2] + ldrh r5, [r1] + ldrh r3, [r1, #4] + ldrh r2, [r1, #6] + ldrh r0, [sp, #2] + strh r5, [sp] + strh r3, [sp, #4] + add r1, r0, r4 + add r0, sp, #0 + strh r2, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0222C4C0 ; =0x0223F304 + add r0, sp, #0 + ldrh r2, [r1, #2] + ldrh ip, [r1] + ldrh r5, [r1, #4] + strh r2, [sp, #2] + ldrh r3, [r1, #6] + ldrh r2, [sp, #2] + strh ip, [sp] + strh r5, [sp, #4] + add r1, r2, r4 + strh r3, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + beq _0222C3A8 + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_0222C398: + add r3, r3, #1 + cmp r3, #4 + add r0, r0, #1 + blt _0222C2F4 +_0222C3A8: + ldr r0, _0222C4B0 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + mov r3, #0 +_0222C3BC: + cmp r0, #6 + bne _0222C460 + ldr r1, _0222C4BC ; =0x0223F30C + mov r0, #0x1d + ldrh r2, [r1, #2] + mul r4, r3, r0 + strh r2, [sp, #2] + ldrh r5, [r1] + ldrh r3, [r1, #4] + ldrh r2, [r1, #6] + ldrh r0, [sp, #2] + strh r5, [sp] + strh r3, [sp, #4] + add r1, r0, r4 + add r0, sp, #0 + strh r2, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #7 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0222C4C0 ; =0x0223F304 + add r0, sp, #0 + ldrh r2, [r1, #2] + ldrh ip, [r1] + ldrh r5, [r1, #4] + strh r2, [sp, #2] + ldrh r3, [r1, #6] + ldrh r2, [sp, #2] + strh ip, [sp] + strh r5, [sp, #4] + add r1, r2, r4 + strh r3, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + beq _0222C470 + add sp, sp, #8 + mov r0, #8 + ldmia sp!, {r4, r5, r6, pc} +_0222C460: + add r3, r3, #1 + cmp r3, #4 + add r0, r0, #1 + blt _0222C3BC +_0222C470: + ldr r5, _0222C4C4 ; =0x0223F3B4 + mov r4, #0 +_0222C478: + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + addne sp, sp, #8 + addne r0, r4, #0xb + ldmneia sp!, {r4, r5, r6, pc} + add r4, r4, #1 + cmp r4, #3 + add r5, r5, #8 + blt _0222C478 + mov r0, #0xe + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222C4AC: .word 0x0223F75C +_0222C4B0: .word 0x022430F0 +_0222C4B4: .word 0x0223F2FC +_0222C4B8: .word 0x0223F314 +_0222C4BC: .word 0x0223F30C +_0222C4C0: .word 0x0223F304 +_0222C4C4: .word 0x0223F3B4 + + arm_func_start MOD13_0222C4C8 +MOD13_0222C4C8: ; 0x0222C4C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r0, _0222C6EC ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222C6EC ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_ModS32 + ldr r1, _0222C6F0 ; =0x022430F4 + rsb ip, r0, #0x34 + ldr r1, [r1] + ldr r0, [r1, #0x34] + cmp r0, #0 + beq _0222C54C + cmp r4, #0 + moveq r0, #0x26 + streq r0, [sp] + movne r0, #0x100 + strne r0, [sp] + ldr r5, [r1, #0x34] + ldr r1, _0222C6F4 ; =0xFE00FF00 + ldr r2, [r5] + ldr r3, [sp] + ldr r0, _0222C6F8 ; =0x000001FF + and r2, r2, r1 + and r1, ip, #0xff + and r3, r3, r0 + orr r0, r2, r1 + orr r0, r0, r3, lsl #16 + str r0, [r5] +_0222C54C: + mov r3, ip + mov r2, #0 + ldr r7, _0222C6F0 ; =0x022430F4 + ldr lr, _0222C6FC ; =0x01FF0000 + ldr r5, _0222C6F8 ; =0x000001FF + ldr r6, _0222C6F4 ; =0xFE00FF00 +_0222C564: + ldr r0, [r7] + and r8, r3, #0xff + add r1, r0, r2, lsl #2 + ldr r0, [r1, #0x18] + add r2, r2, #1 + ldr sb, [r0] + cmp r2, #5 + and sl, sb, lr + mov sb, sl, lsr #0x10 + str sb, [sp] + ldr sb, [r0] + and r0, r5, sl, lsr #16 + and sb, sb, #0xff + str sb, [sp, #4] + ldr r1, [r1, #0x18] + add r3, r3, #0x1d + ldr sb, [r1] + and sb, sb, r6 + orr r8, sb, r8 + orr r0, r8, r0, lsl #16 + str r0, [r1] + blt _0222C564 + cmp r4, #2 + bgt _0222C624 + ldr r6, [r7] + ldr r0, _0222C6FC ; =0x01FF0000 + ldr r5, [r6, #0x2c] + rsb r2, r4, #2 + ldr r3, [r5] + mov r1, #0x1d + and r0, r3, r0 + mov r3, r0, lsr #0x10 + str r3, [sp] + ldr r5, [r5] + mla r3, r2, r1, ip + and r1, r5, #0xff + str r1, [sp, #4] + ldr r6, [r6, #0x2c] + ldr r1, _0222C6F8 ; =0x000001FF + ldr r5, [r6] + ldr r2, _0222C6F4 ; =0xFE00FF00 + and r3, r3, #0xff + and r2, r5, r2 + and r1, r1, r0, lsr #16 + orr r0, r2, r3 + orr r0, r0, r1, lsl #16 + str r0, [r6] + b _0222C640 +_0222C624: + ldr r1, [r7] + ldr r0, _0222C6F4 ; =0xFE00FF00 + ldr r2, [r1, #0x2c] + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x1000000 + str r0, [r2] +_0222C640: + cmp r4, #2 + blt _0222C6B4 + cmp r4, #6 + bgt _0222C6B4 + ldr r0, _0222C6F0 ; =0x022430F4 + ldr r1, _0222C6FC ; =0x01FF0000 + ldr r0, [r0] + rsb r3, r4, #6 + ldr r6, [r0, #0x30] + mov r2, #0x1d + ldr r4, [r6] + mla r2, r3, r2, ip + and r5, r4, r1 + mov r1, r5, lsr #0x10 + str r1, [sp] + ldr r3, [r6] + ldr r1, _0222C6F4 ; =0xFE00FF00 + and r3, r3, #0xff + str r3, [sp, #4] + ldr r4, [r0, #0x30] + ldr r0, _0222C6F8 ; =0x000001FF + ldr r3, [r4] + and r2, r2, #0xff + and r1, r3, r1 + and r3, r0, r5, lsr #16 + orr r0, r1, r2 + orr r0, r0, r3, lsl #16 + str r0, [r4] + b _0222C6D4 +_0222C6B4: + ldr r1, _0222C6F0 ; =0x022430F4 + ldr r0, _0222C6F4 ; =0xFE00FF00 + ldr r1, [r1] + ldr r2, [r1, #0x30] + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x1000000 + str r0, [r2] +_0222C6D4: + ldr r0, _0222C6F0 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x44] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0222C6EC: .word 0x022430F0 +_0222C6F0: .word 0x022430F4 +_0222C6F4: .word 0xFE00FF00 +_0222C6F8: .word 0x000001FF +_0222C6FC: .word 0x01FF0000 + + arm_func_start MOD13_0222C700 +MOD13_0222C700: ; 0x0222C700 + stmdb sp!, {r4, lr} + sub sp, sp, #0x30 + mov ip, r0 + ldrb r2, [ip, #1] + mov r4, r1 + add r0, sp, #0xc + str r2, [sp] + ldrb r3, [ip, #2] + ldr r2, _0222C780 ; =0x02240278 + mov r1, #0x10 + str r3, [sp, #4] + ldrb r3, [ip, #3] + str r3, [sp, #8] + ldrb r3, [ip] + bl swprintf + mov r2, #7 + mov r0, #0x1d + mul r1, r4, r0 + str r2, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + mov r2, #1 + str r2, [sp, #8] + ldr r0, _0222C784 ; =0x022430F4 + add r2, r1, #8 + ldr r0, [r0] + mov r1, #0x5f + ldr r0, [r0, #0x14] + mov r3, #2 + bl MOD13_0223A528 + add sp, sp, #0x30 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C780: .word 0x02240278 +_0222C784: .word 0x022430F4 + + arm_func_start MOD13_0222C788 +MOD13_0222C788: ; 0x0222C788 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x30 + mov r6, r0 + mov r4, r1 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0x22 + bl MI_CpuFill8 + mov r0, r6 + mov r1, #0x20 + bl MOD13_0223BDA4 + mov r5, r0 + cmp r5, #0x10 + movle lr, r5 + movgt lr, #0x10 + cmp lr, #0 + mov ip, #0 + ble _0222C7FC + ldr r2, _0222C8DC ; =0x0000E01D + add r1, sp, #0xc +_0222C7D8: + ldrb r3, [r6, ip] + cmp r3, #0x20 + moveq r0, ip, lsl #1 + streqh r2, [r1, r0] + movne r0, ip, lsl #1 + add ip, ip, #1 + strneh r3, [r1, r0] + cmp ip, lr + blt _0222C7D8 +_0222C7FC: + mov r0, #0x1d + mul r0, r4, r0 + mov r1, #8 + add r4, r0, #2 + str r1, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + ldr r0, _0222C8E0 ; =0x022430F4 + cmp r5, #0x10 + ldr r0, [r0] + addle r4, r4, #5 + ldr r0, [r0, #0x14] + mov r2, r4 + mov r1, #0x48 + mov r3, #2 + bl MOD13_0223A528 + cmp r5, #0x10 + addle sp, sp, #0x30 + ldmleia sp!, {r4, r5, r6, pc} + add r0, sp, #0xc + mov r1, #0 + mov r2, #0x22 + bl MI_CpuFill8 + sub ip, r5, #0x10 + cmp ip, #0 + mov r5, #0 + ble _0222C8A0 + ldr r2, _0222C8DC ; =0x0000E01D + add r1, sp, #0xc +_0222C878: + add r0, r5, #0x10 + ldrb r3, [r6, r0] + cmp r3, #0x20 + moveq r0, r5, lsl #1 + streqh r2, [r1, r0] + movne r0, r5, lsl #1 + add r5, r5, #1 + strneh r3, [r1, r0] + cmp r5, ip + blt _0222C878 +_0222C8A0: + mov r1, #8 + str r1, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + ldr r0, _0222C8E0 ; =0x022430F4 + add r2, r4, #0xc + ldr r0, [r0] + mov r1, #0x48 + ldr r0, [r0, #0x14] + mov r3, #2 + bl MOD13_0223A528 + add sp, sp, #0x30 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222C8DC: .word 0x0000E01D +_0222C8E0: .word 0x022430F4 + + arm_func_start MOD13_0222C8E4 +MOD13_0222C8E4: ; 0x0222C8E4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r5, _0222C9EC ; =0x0223F2FC + ldr r4, _0222C9F0 ; =0x0223F30C + ldr r3, _0222C9F4 ; =0x0223F304 + ldrh ip, [r4] + ldrh r4, [r3] + ldr r3, _0222C9F8 ; =0x022430F4 + ldrh lr, [r5] + ldr r3, [r3] + mov r6, r0 + add r3, r3, #0x18 + sub r0, r6, #1 + mov r5, r1 + strh lr, [sp] + strh ip, [sp, #2] + strh ip, [sp, #4] + strh r4, [sp, #6] + strh r4, [sp, #8] + cmp r0, #1 + add r4, r3, r2, lsl #2 + bhi _0222C960 + mov r0, r2 + bl MOD13_0222C1D0 + cmp r0, #2 + ldreq r0, _0222C9F8 ; =0x022430F4 + ldreq r0, [r0] + addeq r4, r0, #0x2c + ldrne r0, _0222C9F8 ; =0x022430F4 + ldrne r0, [r0] + addne r4, r0, #0x30 +_0222C960: + ldr r1, _0222C9FC ; =0x0223F348 + mov r0, #3 + mla r0, r6, r0, r1 + ldrb r1, [r5, r0] + cmp r1, #0 + beq _0222C9CC + ldr r2, [r4] + mov r0, #0 + bl MOD13_02239E8C + ldr r5, [r4] + add r0, sp, #0 + mov r1, r6, lsl #1 + ldrh r3, [r0, r1] + ldr r0, _0222CA00 ; =0x000001FF + ldr r2, [r5] + ldr r1, _0222CA04 ; =0xFE00FF00 + and r3, r3, r0 + and r0, r2, r1 + orr r0, r0, r3, lsl #16 + str r0, [r5] + ldr r1, [r4] + add sp, sp, #0x10 + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + ldmia sp!, {r4, r5, r6, pc} +_0222C9CC: + ldr r2, [r4] + ldr r0, _0222CA04 ; =0xFE00FF00 + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x1000000 + str r0, [r2] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222C9EC: .word 0x0223F2FC +_0222C9F0: .word 0x0223F30C +_0222C9F4: .word 0x0223F304 +_0222C9F8: .word 0x022430F4 +_0222C9FC: .word 0x0223F348 +_0222CA00: .word 0x000001FF +_0222CA04: .word 0xFE00FF00 + + arm_func_start MOD13_0222CA08 +MOD13_0222CA08: ; 0x0222CA08 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02234164 + cmp r4, #0xa + mov r1, #1 + addls pc, pc, r4, lsl #2 + b _0222CA94 +_0222CA24: ; jump table + b _0222CA60 ; case 0 + b _0222CA60 ; case 1 + b _0222CA94 ; case 2 + b _0222CA94 ; case 3 + b _0222CA78 ; case 4 + b _0222CA78 ; case 5 + b _0222CA78 ; case 6 + b _0222CA50 ; case 7 + b _0222CA94 ; case 8 + b _0222CA88 ; case 9 + b _0222CA88 ; case 10 +_0222CA50: + ldrb r0, [r0, #0xf5] + cmp r0, #0 + moveq r1, #0 + b _0222CA94 +_0222CA60: + ldrb r0, [r0, #0xe7] + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #1 + movls r1, #0 + b _0222CA94 +_0222CA78: + ldrb r0, [r0, #0xf5] + cmp r0, #0 + movne r1, #0 + b _0222CA94 +_0222CA88: + ldrb r0, [r0, #0xf6] + cmp r0, #0 + movne r1, #0 +_0222CA94: + mov r0, r1 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0222CA9C +MOD13_0222CA9C: ; 0x0222CA9C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, r1 + bl MOD13_02234164 + cmp r4, #8 + addls pc, pc, r4, lsl #2 + b _0222CBD0 +_0222CAB8: ; jump table + b _0222CADC ; case 0 + b _0222CADC ; case 1 + b _0222CAF8 ; case 2 + b _0222CB44 ; case 3 + b _0222CB44 ; case 4 + b _0222CB44 ; case 5 + b _0222CB5C ; case 6 + b _0222CBB8 ; case 7 + b _0222CBB8 ; case 8 +_0222CADC: + mov r5, #0 + mov r0, r5 + mov r4, r5 + bl MOD13_0222CA08 + cmp r0, #0 + moveq r4, #2 + b _0222CBD8 +_0222CAF8: + ldr r2, _0222CBEC ; =0x022430F4 + ldrb r0, [r0, #0xf5] + ldr r3, [r2] + mov r1, #0 + ldrb r2, [r3, #4] + cmp r0, #0 + movne r5, #1 + movne r0, #4 + moveq r5, #2 + moveq r0, #3 + cmp r2, #0 + mov r4, r1 + ldrb r2, [r3, #5] + movne r4, #1 + cmp r2, #0 + movne r1, #1 + mov r2, r6 + bl MOD13_0222C8E4 + b _0222CBD8 +_0222CB44: + ldrb r0, [r0, #0xf5] + mov r5, #0 + cmp r0, #0 + movne r4, #2 + moveq r4, r5 + b _0222CBD8 +_0222CB5C: + ldrb r2, [r0, #0xf6] + mov r1, #0 + mov r4, r1 + cmp r2, #0 + movne r5, #1 + movne r0, #4 + bne _0222CB8C + ldrb r0, [r0, #0xf5] + mov r5, #2 + cmp r0, #0 + moveq r4, #2 + mov r0, #3 +_0222CB8C: + ldr r2, _0222CBEC ; =0x022430F4 + ldr r3, [r2] + ldrb r2, [r3, #6] + cmp r2, #0 + ldrb r2, [r3, #7] + movne r4, #1 + cmp r2, #0 + movne r1, #1 + mov r2, r6 + bl MOD13_0222C8E4 + b _0222CBD8 +_0222CBB8: + ldrb r0, [r0, #0xf6] + mov r5, #0 + cmp r0, #0 + movne r4, #2 + moveq r4, r5 + b _0222CBD8 +_0222CBD0: + mov r5, #0 + mov r4, #2 +_0222CBD8: + mov r0, r5 + mov r1, r4 + mov r2, r6 + bl MOD13_0222C8E4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222CBEC: .word 0x022430F4 + + arm_func_start MOD13_0222CBF0 +MOD13_0222CBF0: ; 0x0222CBF0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + mov r6, r0 + mov r5, r1 + bl MOD13_02234164 + cmp r6, #8 + addls pc, pc, r6, lsl #2 + b _0222CD84 +_0222CC10: ; jump table + b _0222CC34 ; case 0 + b _0222CC48 ; case 1 + b _0222CD84 ; case 2 + b _0222CCD8 ; case 3 + b _0222CCFC ; case 4 + b _0222CD20 ; case 5 + b _0222CD84 ; case 6 + b _0222CD44 ; case 7 + b _0222CD68 ; case 8 +_0222CC34: + mov r1, r5 + add r0, r0, #0x40 + bl MOD13_0222C788 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CC48: + ldrb r1, [r0, #0xe6] + mov r1, r1, lsl #0x1e + mov r1, r1, lsr #0x1e + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _0222CC8C +_0222CC60: ; jump table + b _0222CC70 ; case 0 + b _0222CC78 ; case 1 + b _0222CC80 ; case 2 + b _0222CC88 ; case 3 +_0222CC70: + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CC78: + mov r4, #0xa + b _0222CC8C +_0222CC80: + mov r4, #0x1a + b _0222CC8C +_0222CC88: + mov r4, #0x20 +_0222CC8C: + ldrb r0, [r0, #0xe6] + mov r1, #0 + mov r2, #0x21 + mov r0, r0, lsl #0x18 + mov r0, r0, lsr #0x1a + cmp r0, #1 + addeq r0, r4, r4, lsr #31 + moveq r4, r0, asr #1 + add r0, sp, #0 + bl MI_CpuFill8 + add r0, sp, #0 + mov r2, r4 + mov r1, #0x2a + bl Call_FillMemWithValue + add r0, sp, #0 + mov r1, r5 + bl MOD13_0222C788 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CCD8: + ldrb r1, [r0, #0xf5] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xc0 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CCFC: + ldrb r1, [r0, #0xf5] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xf0 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CD20: + ldrb r1, [r0, #0xf5] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xc4 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CD44: + ldrb r1, [r0, #0xf6] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xc8 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CD68: + ldrb r1, [r0, #0xf6] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xcc + bl MOD13_0222C700 +_0222CD84: + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_0222CD8C +MOD13_0222CD8C: ; 0x0222CD8C + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _0222CE44 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222CE48 ; =0x022430F4 + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + ldr r0, [r0, #0x14] + bl MOD13_0223A4D8 + mov r6, r4 + mov r5, #0 +_0222CDC0: + mov r0, r6 + mov r1, r5 + bl MOD13_0222CBF0 + add r5, r5, #1 + cmp r5, #5 + add r6, r6, #1 + blt _0222CDC0 + ldr r0, _0222CE48 ; =0x022430F4 + ldr r1, _0222CE4C ; =0x0223F358 + mov r2, r4, lsl #1 + ldr r3, [r0] + ldrh r0, [r1, r2] + ldr r2, [r3, #8] + mov r1, #0 + add r0, r2, r0, lsl #1 + mov r2, #0x1e + mov r3, #0x13 + bl MOD13_02232878 + mov r5, #0 +_0222CE0C: + mov r0, r4 + mov r1, r5 + bl MOD13_0222CA9C + add r5, r5, #1 + cmp r5, #5 + add r4, r4, #1 + blt _0222CE0C + bl MOD13_022328D0 + ldr r0, _0222CE48 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bl MOD13_0223A410 + bl MOD13_0222C4C8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222CE44: .word 0x022430F0 +_0222CE48: .word 0x022430F4 +_0222CE4C: .word 0x0223F358 + + arm_func_start MOD13_0222CE50 +MOD13_0222CE50: ; 0x0222CE50 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0222D130 ; =0x022430F4 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1] + bl MOD13_0223C104 + ldr r1, _0222D130 ; =0x022430F4 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1, #0x3c] + bl MOD13_0223C104 + mov r5, #0 + ldr r4, _0222D130 ; =0x022430F4 +_0222CEB0: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x18] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #7 + blt _0222CEB0 + ldr r0, _0222D130 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #0x34] + cmp r0, #0 + beq _0222CEE4 + bl MOD13_0223B974 +_0222CEE4: + bl MOD13_02232F78 + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221F21C + ldr r0, _0222D130 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x40] + cmp r0, #0xc + beq _0222CF0C + bl MOD13_0221EE54 +_0222CF0C: + bl MOD13_022328E8 + ldr r0, _0222D130 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #8] + bl MOD13_0223939C + mov r5, #0 + ldr r4, _0222D130 ; =0x022430F4 +_0222CF28: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xc] + bl MOD13_0223939C + add r5, r5, #1 + cmp r5, #2 + blt _0222CF28 + ldr r0, _0222D134 ; =0x02240298 + ldr r1, _0222D138 ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AE98 + ldr r2, _0222D13C ; =0x04000010 + mov r1, #0 + ldr r0, _0222D140 ; =0x04000018 + str r1, [r2] + str r1, [r0] + ldr r3, _0222D144 ; =0x0400000C + ldr r0, _0222D130 ; =0x022430F4 + ldrh r2, [r3] + and r2, r2, #0x43 + orr r2, r2, #0xe10 + strh r2, [r3] + ldr r0, [r0] + ldrb r0, [r0, #0x40] + cmp r0, #0xd + addls pc, pc, r0, lsl #2 + b _0222D120 +_0222CFA8: ; jump table + b _0222CFE0 ; case 0 + b _0222CFE0 ; case 1 + b _0222D120 ; case 2 + b _0222D120 ; case 3 + b _0222CFFC ; case 4 + b _0222CFFC ; case 5 + b _0222CFFC ; case 6 + b _0222D120 ; case 7 + b _0222D120 ; case 8 + b _0222CFFC ; case 9 + b _0222CFFC ; case 10 + b _0222D02C ; case 11 + b _0222D0C4 ; case 12 + b _0222D0D8 ; case 13 +_0222CFE0: + bl MOD13_02222F6C + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _0222D148 ; =MOD13_0222A190 + bl MOD13_02222FBC + b _0222D120 +_0222CFFC: + sub r4, r0, #4 + cmp r0, #9 + subhs r4, r4, #2 + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, r4 + mov r1, #0 + bl MOD13_02222F6C + ldr r0, _0222D14C ; =MOD13_0222AF48 + bl MOD13_02222FBC + b _0222D120 +_0222D02C: + bl MOD13_02234164 + mov r4, r0 + add r0, r4, #0xf0 + bl FUN_02095BE0 + strb r0, [r4, #0xd0] + ldrb r0, [r4, #0xf5] + cmp r0, #0 + beq _0222D084 + add r0, r4, #0xc0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + add r0, r4, #0xc4 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + add r0, r4, #0xf0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r0, #0 + strb r0, [r4, #0xd0] +_0222D084: + ldrb r0, [r4, #0xf6] + cmp r0, #0 + beq _0222D0A0 + add r0, r4, #0xc8 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 +_0222D0A0: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _0222D150 ; =MOD13_022313C8 + bl MOD13_02222FBC + b _0222D120 +_0222D0C4: + mov r0, r1 + bl MOD13_02222FA8 + ldr r0, _0222D154 ; =MOD13_0222E1B0 + bl MOD13_02222FBC + b _0222D120 +_0222D0D8: + ldr r0, _0222D158 ; =0x022430E8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222D100 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222D15C ; =MOD13_02230714 + bl MOD13_02222FBC + b _0222D120 +_0222D100: + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + bl MOD13_02233C24 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222D160 ; =MOD13_02230EC4 + bl MOD13_02222FBC +_0222D120: + ldr r0, _0222D130 ; =0x022430F4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222D130: .word 0x022430F4 +_0222D134: .word 0x02240298 +_0222D138: .word 0x020C9480 +_0222D13C: .word 0x04000010 +_0222D140: .word 0x04000018 +_0222D144: .word 0x0400000C +_0222D148: .word MOD13_0222A190 +_0222D14C: .word MOD13_0222AF48 +_0222D150: .word MOD13_022313C8 +_0222D154: .word MOD13_0222E1B0 +_0222D158: .word 0x022430E8 +_0222D15C: .word MOD13_02230714 +_0222D160: .word MOD13_02230EC4 + + arm_func_start MOD13_0222D164 +MOD13_0222D164: ; 0x0222D164 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222D1B8 ; =MOD13_0222CE50 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222D1B8: .word MOD13_0222CE50 + + arm_func_start MOD13_0222D1BC +MOD13_0222D1BC: ; 0x0222D1BC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02232F14 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222D1E0 ; =MOD13_0222D164 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222D1E0: .word MOD13_0222D164 + + arm_func_start MOD13_0222D1E4 +MOD13_0222D1E4: ; 0x0222D1E4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222D484 ; =0x022430F4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x41] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r1, #0x41] + bl MOD13_02232F50 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0222D47C +_0222D224: ; jump table + b _0222D47C ; case 0 + b _0222D244 ; case 1 + b _0222D25C ; case 2 + b _0222D2BC ; case 3 + b _0222D37C ; case 4 + b _0222D46C ; case 5 + b _0222D3F4 ; case 6 + b _0222D46C ; case 7 +_0222D244: + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x45] + ldmia sp!, {pc} +_0222D25C: + ldr r0, _0222D484 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x41] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_02232F64 + mov r1, #0x91 + mul r1, r0, r1 + ldr r2, _0222D488 ; =0x094F2095 + mov r0, r1, lsr #0x1f + smull r1, r3, r2, r1 + mov r3, r3, asr #1 + ldr r1, _0222D48C ; =0x022430F0 + add r3, r0, r3 + strh r3, [r1] + bl MOD13_0222CD8C + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #4 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x41] + ldmia sp!, {pc} +_0222D2BC: + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x45] + bl MOD13_02232F64 + mov r1, #0x91 + mul r1, r0, r1 + ldr r2, _0222D488 ; =0x094F2095 + mov r0, r1, lsr #0x1f + smull r1, r3, r2, r1 + mov r3, r3, asr #1 + ldr r1, _0222D48C ; =0x022430F0 + add r3, r0, r3 + mov r0, #0x13 + strh r3, [r1] + bl MOD13_0223424C + bl MOD13_0222CD8C + ldr r0, _0222D48C ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #0 + bne _0222D324 + bl MOD13_0222BDF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D324: + cmp r0, #0x10 + bge _0222D354 + mov r0, #0 + ldr r1, _0222D490 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D354: + mov r0, #0 + ldr r1, _0222D494 ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D37C: + ldr r0, _0222D48C ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0 + bne _0222D3C4 + ldr r0, _0222D484 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x46] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x46] + ldmia sp!, {pc} +_0222D3C4: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222D490 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D3F4: + ldr r0, _0222D48C ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0x91 + bne _0222D43C + ldr r0, _0222D484 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x46] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x46] + ldmia sp!, {pc} +_0222D43C: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222D494 ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D46C: + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x46] +_0222D47C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222D484: .word 0x022430F4 +_0222D488: .word 0x094F2095 +_0222D48C: .word 0x022430F0 +_0222D490: .word MOD13_0222C0E8 +_0222D494: .word MOD13_0222C03C + + arm_func_start MOD13_0222D498 +MOD13_0222D498: ; 0x0222D498 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02234164 + ldrb r0, [r0, #0xf6] + cmp r0, r4 + ldmeqia sp!, {r4, pc} + ldr r1, _0222D4CC ; =0x022430F4 + mov r0, r4 + ldr r1, [r1] + strb r4, [r1, #0x43] + bl MOD13_0223413C + bl MOD13_0222CD8C + ldmia sp!, {r4, pc} + .align 2, 0 +_0222D4CC: .word 0x022430F4 + + arm_func_start MOD13_0222D4D0 +MOD13_0222D4D0: ; 0x0222D4D0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD13_02234164 + ldrb r1, [r0, #0xf5] + cmp r1, r4 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + cmp r4, #0 + beq _0222D514 + ldr r0, _0222D544 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x43] + cmp r0, #0 + movne r5, #1 + moveq r5, #0 + b _0222D528 +_0222D514: + ldr r1, _0222D544 ; =0x022430F4 + ldrb r2, [r0, #0xf6] + ldr r0, [r1] + mov r5, #0 + strb r2, [r0, #0x43] +_0222D528: + mov r0, r4 + bl MOD13_02234150 + mov r0, r5 + bl MOD13_0223413C + bl MOD13_0222CD8C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222D544: .word 0x022430F4 + + arm_func_start MOD13_0222D548 +MOD13_0222D548: ; 0x0222D548 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + bl MOD13_0222CA08 + cmp r0, #0 + bne _0222D570 + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D570: + cmp r4, #8 + addls pc, pc, r4, lsl #2 + b _0222D5E8 +_0222D57C: ; jump table + b _0222D5E8 ; case 0 + b _0222D5E8 ; case 1 + b _0222D5A0 ; case 2 + b _0222D5A0 ; case 3 + b _0222D5E8 ; case 4 + b _0222D5E8 ; case 5 + b _0222D5E8 ; case 6 + b _0222D5C4 ; case 7 + b _0222D5C4 ; case 8 +_0222D5A0: + mov r0, #6 + bl MOD13_0223424C + sub r0, r4, #2 + eors r0, r0, #1 + movne r0, #1 + moveq r0, #0 + bl MOD13_0222D4D0 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D5C4: + mov r0, #6 + bl MOD13_0223424C + sub r0, r4, #7 + eors r0, r0, #1 + movne r0, #1 + moveq r0, #0 + bl MOD13_0222D498 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D5E8: + ldr r0, _0222D6B8 ; =0x022430F4 + sub r1, r4, #0xb + ldr r0, [r0] + cmp r1, #1 + strb r4, [r0, #0x40] + bhi _0222D664 + bl MOD13_0222BA38 + bl MOD13_0222B87C + cmp r0, #0 + bne _0222D644 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #6 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222D6BC ; =MOD13_0222B830 + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D644: + cmp r4, #0xb + bne _0222D658 + mov r0, #6 + bl MOD13_0223424C + b _0222D6A4 +_0222D658: + mov r0, #0xe + bl MOD13_0223424C + b _0222D6A4 +_0222D664: + cmp r4, #0xd + bne _0222D67C + bl MOD13_0222BA38 + mov r0, #7 + bl MOD13_0223424C + b _0222D6A4 +_0222D67C: + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222D6C0 ; =0x0223F32C + ldrb r0, [r0, r4] + bl MOD13_0222C1F4 + mov r2, r0 + mov r0, #0 + mov r1, #1 + bl MOD13_0222C8E4 + bl MOD13_0222C4C8 +_0222D6A4: + bl MOD13_02232F14 + ldr r0, _0222D6C4 ; =MOD13_0222D1BC + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222D6B8: .word 0x022430F4 +_0222D6BC: .word MOD13_0222B830 +_0222D6C0: .word 0x0223F32C +_0222D6C4: .word MOD13_0222D1BC + + arm_func_start MOD13_0222D6C8 +MOD13_0222D6C8: ; 0x0222D6C8 + stmdb sp!, {r4, lr} + bl MOD13_02234164 + bl MOD13_0222C238 + mov r4, r0 + cmp r4, #0xe + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD13_0222CA08 + cmp r0, #0 + bne _0222D700 + mov r0, #9 + bl MOD13_0223424C + mov r0, #1 + ldmia sp!, {r4, pc} +_0222D700: + mov r0, r4 + bl MOD13_0222BDB8 + cmp r4, #8 + addls pc, pc, r4, lsl #2 + b _0222D73C +_0222D714: ; jump table + b _0222D73C ; case 0 + b _0222D73C ; case 1 + b _0222D738 ; case 2 + b _0222D738 ; case 3 + b _0222D73C ; case 4 + b _0222D73C ; case 5 + b _0222D73C ; case 6 + b _0222D738 ; case 7 + b _0222D738 ; case 8 +_0222D738: + bl MOD13_0222B91C +_0222D73C: + mov r0, r4 + bl MOD13_0222D548 + mov r0, #1 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0222D74C +MOD13_0222D74C: ; 0x0222D74C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222DA0C ; =0x022430F4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x45] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222D6C8 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222D7B0 + ldr r0, _0222DA10 ; =0x022430E4 + ldrb r0, [r0] + bl MOD13_0222D548 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D7B0: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222D7E8 + mov r0, #7 + bl MOD13_0223424C + ldr r1, _0222DA0C ; =0x022430F4 + ldr r0, _0222DA14 ; =MOD13_0222D1BC + ldr r1, [r1] + mov r2, #0xd + strb r2, [r1, #0x40] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222D7E8: + mov r0, #0x200 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D870 + ldr r0, _0222DA18 ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0x91 + bne _0222D840 + ldr r0, _0222DA0C ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222DA0C ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {pc} +_0222D840: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222DA1C ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222DA0C ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D870: + mov r0, #0x200 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x100 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D91C + ldr r0, _0222DA18 ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0 + bne _0222D8EC + ldr r0, _0222DA0C ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222DA0C ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {pc} +_0222D8EC: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222DA20 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222DA0C ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D91C: + mov r0, #0x100 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D960 + mov r0, #1 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D960: + mov r0, #0x40 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D9A4 + mov r0, #3 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D9A4: + mov r0, #0x80 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D9E8 + mov r0, #0 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D9E8: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #2 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DA0C: .word 0x022430F4 +_0222DA10: .word 0x022430E4 +_0222DA14: .word MOD13_0222D1BC +_0222DA18: .word 0x022430F0 +_0222DA1C: .word MOD13_0222C03C +_0222DA20: .word MOD13_0222C0E8 + + arm_func_start MOD13_0222DA24 +MOD13_0222DA24: ; 0x0222DA24 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222D74C + bl MOD13_0222D1E4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222DA7C ; =MOD13_0222DA24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DA7C: .word MOD13_0222DA24 + + arm_func_start MOD13_0222DA80 +MOD13_0222DA80: ; 0x0222DA80 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AEF4 + ldr r0, _0222DAD8 ; =0x0222DA3C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DAD8: .word 0x0222DA3C + + arm_func_start MOD13_0222DADC +MOD13_0222DADC: ; 0x0222DADC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02234164 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r2, _0222DB28 ; =0x022430F0 + mov r3, #0 + ldr r1, _0222DB2C ; =0x022430E4 + ldr r0, _0222DB30 ; =0x022430EC + strh r3, [r2] + strb r3, [r1] + strb r3, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DB28: .word 0x022430F0 +_0222DB2C: .word 0x022430E4 +_0222DB30: .word 0x022430EC + + arm_func_start MOD13_0222DB34 +MOD13_0222DB34: ; 0x0222DB34 + stmdb sp!, {lr} + sub sp, sp, #0x44 + ldr r3, _0222DCFC ; =0x0223F39C + add ip, sp, #0 + mov r2, #0xb +_0222DB48: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [ip], #1 + strb r0, [ip], #1 + bne _0222DB48 + ldrb r0, [r3] + ldr r3, _0222DD00 ; =0x0223F36C + add lr, sp, #0x17 + strb r0, [ip] + mov r2, #0xa +_0222DB74: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [lr], #1 + strb r0, [lr], #1 + bne _0222DB74 + ldrb r0, [r3] + ldr ip, _0222DD04 ; =0x0223F384 + add r3, sp, #0x2c + strb r0, [lr] + mov r2, #0xb +_0222DBA0: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _0222DBA0 + ldr ip, _0222DD08 ; =0x0400000C + ldr r2, _0222DD0C ; =0x00000E18 + ldrh r3, [ip] + ldr r0, _0222DD10 ; =0x022402B0 + ldr r1, _0222DD14 ; =0x020C9480 + and r3, r3, #0x43 + orr r2, r3, r2 + strh r2, [ip] + bl MOD13_0221F174 + ldr r0, _0222DD18 ; =0x022402C4 + ldr r1, _0222DD1C ; =0x020C8C7C + bl MOD13_0221F174 + ldr r0, _0222DD20 ; =0x022402DC + ldr r1, _0222DD24 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r1, _0222DD28 ; =0x020C9550 + add r0, sp, #0x17 + bl MOD13_0221F174 + ldr r0, _0222DD2C ; =0x022402F4 + ldr r1, _0222DD30 ; =0x020C8FBC + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0222DD34 ; =0x022430F4 + ldr r2, [r1] + str r0, [r2, #8] + ldr r0, [r1] + ldr r0, [r0, #8] + bl MOD13_02232918 + bl MOD13_022328D0 + add r0, sp, #0x17 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0222DD34 ; =0x022430F4 + ldr r1, [r1] + str r0, [r1, #0xc] + add r0, sp, #0x2c + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0222DD34 ; =0x022430F4 + ldr r2, _0222DD38 ; =0x04001008 + ldr r3, [r1] + ldr r1, _0222DD3C ; =0x0400100A + str r0, [r3, #0x10] + ldrh r0, [r2] + ldr ip, _0222DD40 ; =0x04000008 + ldr r3, _0222DD44 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + ldr r2, _0222DD08 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222DD48 ; =0x0400000E + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r1] + add sp, sp, #0x44 + ldmia sp!, {pc} + .align 2, 0 +_0222DCFC: .word 0x0223F39C +_0222DD00: .word 0x0223F36C +_0222DD04: .word 0x0223F384 +_0222DD08: .word 0x0400000C +_0222DD0C: .word 0x00000E18 +_0222DD10: .word 0x022402B0 +_0222DD14: .word 0x020C9480 +_0222DD18: .word 0x022402C4 +_0222DD1C: .word 0x020C8C7C +_0222DD20: .word 0x022402DC +_0222DD24: .word 0x020C8D4C +_0222DD28: .word 0x020C9550 +_0222DD2C: .word 0x022402F4 +_0222DD30: .word 0x020C8FBC +_0222DD34: .word 0x022430F4 +_0222DD38: .word 0x04001008 +_0222DD3C: .word 0x0400100A +_0222DD40: .word 0x04000008 +_0222DD44: .word 0x0400000A +_0222DD48: .word 0x0400000E + + arm_func_start MOD13_0222DD4C +MOD13_0222DD4C: ; 0x0222DD4C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + bl MOD13_02234164 + mov r5, r0 + mov r0, #0x48 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _0222DF38 ; =0x022430F4 + mov r2, #0xc + str r0, [r1] + ldrb r3, [r5, #0xf6] + strb r3, [r0, #0x43] + ldr r0, [r1] + strb r2, [r0, #0x42] + bl MOD13_0222DADC + bl MOD13_0222DB34 + ldr r0, _0222DF3C ; =0x022430E8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222DDBC + bl MOD13_02222F34 + ldr r1, _0222DF40 ; =0x0223F2F4 + ldrb r2, [r5, #0xf4] + ldrsb r1, [r1, r0] + mov r0, #0x30 + add r2, r2, #1 + bl MOD13_0221EE98 + b _0222DDCC +_0222DDBC: + mov r0, #0x45 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_0222DDCC: + mov r0, #1 + bl MOD13_0221F124 + bl MOD13_0221F48C + ldr r0, _0222DF44 ; =0x022430F0 + mov r1, #0x37 + ldrh r3, [r0] + ldr r2, _0222DF48 ; =0xE1FC780F + mov r0, #2 + mul r4, r3, r1 + smull r1, r3, r2, r4 + add r3, r4, r3 + mov r3, r3, asr #7 + mov r1, r4, lsr #0x1f + add r3, r1, r3 + str r3, [sp] + mov r1, #0x55 + mov r2, #0xf1 + mov r3, #0x41 + bl MOD13_02232FB8 + mov r0, #0 + mov r1, #1 + bl MOD13_0223A7F0 + ldr r6, _0222DF38 ; =0x022430F4 + mov r4, #0 + ldr r2, [r6] + ldr r1, _0222DF4C ; =0x0223F348 + str r0, [r2, #0x14] + ldrb r8, [r1, #1] + mov r7, r4 +_0222DE40: + mov r0, r7 + mov r1, r8 + bl MOD13_02239E54 + ldr r1, [r6] + add r1, r1, r4, lsl #2 + add r4, r4, #1 + str r0, [r1, #0x18] + cmp r4, #7 + blt _0222DE40 + ldrb r0, [r5, #0xe7] + cmp r0, #1 + beq _0222DE7C + cmp r0, #2 + beq _0222DEB0 + b _0222DEE0 +_0222DE7C: + mov r0, #0 + mov r1, #0x50 + bl MOD13_02239E54 + ldr r1, _0222DF38 ; =0x022430F4 + ldr r2, [r1] + str r0, [r2, #0x34] + ldr r0, [r1] + ldr r1, [r0, #0x34] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + b _0222DEE0 +_0222DEB0: + mov r0, #0 + mov r1, #0x51 + bl MOD13_02239E54 + ldr r1, _0222DF38 ; =0x022430F4 + ldr r2, [r1] + str r0, [r2, #0x34] + ldr r0, [r1] + ldr r1, [r0, #0x34] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] +_0222DEE0: + ldr r1, _0222DF50 ; =MOD13_0222BFA8 + mov r0, #1 + mov r2, #0 + mov r3, #0x6e + bl MOD13_0223C1C4 + ldr r2, _0222DF38 ; =0x022430F4 + ldr r1, _0222DF54 ; =MOD13_0222B9DC + ldr r2, [r2] + mov r3, #0x78 + str r0, [r2, #0x3c] + mov r0, #0 + mov r2, r0 + bl MOD13_0223C1C4 + ldr r1, _0222DF38 ; =0x022430F4 + ldr r1, [r1] + str r0, [r1] + bl MOD13_0222CD8C + bl MOD13_0222BEC0 + ldr r0, _0222DF58 ; =MOD13_0222DA80 + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0222DF38: .word 0x022430F4 +_0222DF3C: .word 0x022430E8 +_0222DF40: .word 0x0223F2F4 +_0222DF44: .word 0x022430F0 +_0222DF48: .word 0xE1FC780F +_0222DF4C: .word 0x0223F348 +_0222DF50: .word MOD13_0222BFA8 +_0222DF54: .word MOD13_0222B9DC +_0222DF58: .word MOD13_0222DA80 + + arm_func_start MOD13_0222DF5C +MOD13_0222DF5C: ; 0x0222DF5C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222DFC4 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DFC4: .word MOD13_02230714 + + arm_func_start MOD13_0222DFC8 +MOD13_0222DFC8: ; 0x0222DFC8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222E008 ; =MOD13_0222DF5C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E008: .word MOD13_0222DF5C + + arm_func_start MOD13_0222E00C +MOD13_0222E00C: ; 0x0222E00C + bx lr + + arm_func_start MOD13_0222E010 +MOD13_0222E010: ; 0x0222E010 + bx lr + + arm_func_start MOD13_0222E014 +MOD13_0222E014: ; 0x0222E014 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222E010 + bl MOD13_0222E00C + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E044 ; =MOD13_0222DFC8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E044: .word MOD13_0222DFC8 + + arm_func_start MOD13_0222E048 +MOD13_0222E048: ; 0x0222E048 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov ip, #0 + mov r0, #0x44 + mov r1, #5 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222E0A4 ; =MOD13_0222E014 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E0A4: .word MOD13_0222E014 + + arm_func_start MOD13_0222E0A8 +MOD13_0222E0A8: ; 0x0222E0A8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _0222E100 ; =MOD13_0222E048 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E100: .word MOD13_0222E048 + + arm_func_start MOD13_0222E104 +MOD13_0222E104: ; 0x0222E104 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222E188 ; =0x02240308 + ldr r1, _0222E18C ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222E190 ; =0x02240320 + ldr r1, _0222E194 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222E198 ; =0x02240338 + ldr r1, _0222E19C ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _0222E1A0 ; =0x04001008 + ldr r3, _0222E1A4 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _0222E1A8 ; =0x0400000A + ldr r1, _0222E1AC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E188: .word 0x02240308 +_0222E18C: .word 0x020C8D4C +_0222E190: .word 0x02240320 +_0222E194: .word 0x020C9550 +_0222E198: .word 0x02240338 +_0222E19C: .word 0x020C908C +_0222E1A0: .word 0x04001008 +_0222E1A4: .word 0x0400100A +_0222E1A8: .word 0x0400000A +_0222E1AC: .word 0x0400000C + + arm_func_start MOD13_0222E1B0 +MOD13_0222E1B0: ; 0x0222E1B0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222E104 + bl MOD13_0221F4AC + bl MOD13_02233B3C + ldr r0, _0222E1D4 ; =MOD13_0222E0A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E1D4: .word MOD13_0222E0A8 + + arm_func_start MOD13_0222E1D8 +MOD13_0222E1D8: ; 0x0222E1D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E200 ; =MOD13_0222E430 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E200: .word MOD13_0222E430 + + arm_func_start MOD13_0222E204 +MOD13_0222E204: ; 0x0222E204 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222E238 ; =MOD13_0222E1D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E238: .word MOD13_0222E1D8 + + arm_func_start MOD13_0222E23C +MOD13_0222E23C: ; 0x0222E23C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02223B24 + cmp r0, #2 + beq _0222E260 + cmp r0, #4 + beq _0222E27C + add sp, sp, #4 + ldmia sp!, {pc} +_0222E260: + ldr r1, _0222E2C4 ; =0x022430F8 + mov r2, #1 + ldr r0, _0222E2C8 ; =MOD13_0222E430 + strb r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E27C: + ldr r0, _0222E2C4 ; =0x022430F8 + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xd + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222E2CC ; =MOD13_0222E204 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E2C4: .word 0x022430F8 +_0222E2C8: .word MOD13_0222E430 +_0222E2CC: .word MOD13_0222E204 + + arm_func_start MOD13_0222E2D0 +MOD13_0222E2D0: ; 0x0222E2D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E3A4 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E310 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_0222E310: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222E3A4 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E34C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222E34C: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222E3A4 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E388 + bl MOD13_02223BE0 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222E3A8 ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E388: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _0222E3AC ; =MOD13_0222EB58 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E3A4: .word 0x022430F8 +_0222E3A8: .word MOD13_02230EC4 +_0222E3AC: .word MOD13_0222EB58 + + arm_func_start MOD13_0222E3B0 +MOD13_0222E3B0: ; 0x0222E3B0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E428 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E3E0 + bl MOD13_0221ED28 +_0222E3E0: + ldr r0, _0222E428 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E404 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_0222E404: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222E42C ; =MOD13_0222E2D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E428: .word 0x022430F8 +_0222E42C: .word MOD13_0222E2D0 + + arm_func_start MOD13_0222E430 +MOD13_0222E430: ; 0x0222E430 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222E454 ; =MOD13_0222E3B0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E454: .word MOD13_0222E3B0 + + arm_func_start MOD13_0222E458 +MOD13_0222E458: ; 0x0222E458 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222E48C ; =MOD13_0222E430 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E48C: .word MOD13_0222E430 + + arm_func_start MOD13_0222E490 +MOD13_0222E490: ; 0x0222E490 + bx lr + + arm_func_start MOD13_0222E494 +MOD13_0222E494: ; 0x0222E494 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222E4BC + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222E4BC: + bl MOD13_0222E68C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xa + bl OS_Sleep + bl MOD13_0222E23C + bl MOD13_0222E494 + bl MOD13_0222E490 + bl MOD13_0222E458 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222E534 ; =0x0222E4DC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E534: .word 0x0222E4DC + + arm_func_start MOD13_0222E538 +MOD13_0222E538: ; 0x0222E538 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222E56C ; =0x0222E504 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E56C: .word 0x0222E504 + + arm_func_start MOD13_0222E570 +MOD13_0222E570: ; 0x0222E570 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222E5A8 ; =MOD13_0222E538 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E5A8: .word MOD13_0222E538 + + arm_func_start MOD13_0222E5AC +MOD13_0222E5AC: ; 0x0222E5AC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222E62C ; =0x0224034C + ldr r1, _0222E630 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222E634 ; =0x04001008 + ldr ip, _0222E638 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222E63C ; =0x04000008 + ldr r2, _0222E640 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222E644 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E62C: .word 0x0224034C +_0222E630: .word 0x020C908C +_0222E634: .word 0x04001008 +_0222E638: .word 0x0400100A +_0222E63C: .word 0x04000008 +_0222E640: .word 0x0400000A +_0222E644: .word 0x0400000C + + arm_func_start MOD13_0222E648 +MOD13_0222E648: ; 0x0222E648 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222E684 ; =0x022430F8 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222E5AC + bl MOD13_0221F4AC + mov r0, #0x25 + bl MOD13_0221F070 + mov r0, #1 + bl MOD13_0221E694 + ldr r0, _0222E688 ; =MOD13_0222E570 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E684: .word 0x022430F8 +_0222E688: .word MOD13_0222E570 + + arm_func_start MOD13_0222E68C +MOD13_0222E68C: ; 0x0222E68C + ldr r0, _0222E6A8 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0222E6A8: .word 0x027FFFA8 + + arm_func_start MOD13_0222E6AC +MOD13_0222E6AC: ; 0x0222E6AC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E6D4 ; =MOD13_0222E940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E6D4: .word MOD13_0222E940 + + arm_func_start MOD13_0222E6D8 +MOD13_0222E6D8: ; 0x0222E6D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222E70C ; =MOD13_0222E6AC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E70C: .word MOD13_0222E6AC + + arm_func_start MOD13_0222E710 +MOD13_0222E710: ; 0x0222E710 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02223B24 + cmp r0, #3 + beq _0222E73C + cmp r0, #4 + beq _0222E760 + cmp r0, #5 + beq _0222E7A8 + add sp, sp, #4 + ldmia sp!, {pc} +_0222E73C: + ldr r0, _0222E7F0 ; =0x022430FC + mov r1, #1 + strb r1, [r0] + bl MOD13_022341E8 + bl MOD13_02223AF8 + ldr r0, _0222E7F4 ; =MOD13_0222E940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E760: + ldr r0, _0222E7F0 ; =0x022430FC + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xd + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222E7F8 ; =MOD13_0222E6D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E7A8: + ldr r0, _0222E7F0 ; =0x022430FC + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xe + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222E7F8 ; =MOD13_0222E6D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E7F0: .word 0x022430FC +_0222E7F4: .word MOD13_0222E940 +_0222E7F8: .word MOD13_0222E6D8 + + arm_func_start MOD13_0222E7FC +MOD13_0222E7FC: ; 0x0222E7FC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E8C4 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E83C + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_0222E83C: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222E8C4 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E878 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222E878: + bl MOD13_02223BE0 + ldr r0, _0222E8C4 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E8A8 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222E8C8 ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E8A8: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _0222E8CC ; =MOD13_0222EDE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E8C4: .word 0x022430FC +_0222E8C8: .word MOD13_02230EC4 +_0222E8CC: .word MOD13_0222EDE4 + + arm_func_start MOD13_0222E8D0 +MOD13_0222E8D0: ; 0x0222E8D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _0222E938 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E914 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_0222E914: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222E93C ; =MOD13_0222E7FC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E938: .word 0x022430FC +_0222E93C: .word MOD13_0222E7FC + + arm_func_start MOD13_0222E940 +MOD13_0222E940: ; 0x0222E940 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222E964 ; =MOD13_0222E8D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E964: .word MOD13_0222E8D0 + + arm_func_start MOD13_0222E968 +MOD13_0222E968: ; 0x0222E968 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222E99C ; =MOD13_0222E940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E99C: .word MOD13_0222E940 + + arm_func_start MOD13_0222E9A0 +MOD13_0222E9A0: ; 0x0222E9A0 + bx lr + + arm_func_start MOD13_0222E9A4 +MOD13_0222E9A4: ; 0x0222E9A4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222E9CC + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222E9CC: + bl MOD13_0222EB9C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xa + bl OS_Sleep + bl MOD13_0222E710 + bl MOD13_0222E9A4 + bl MOD13_0222E9A0 + bl MOD13_0222E968 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222EA44 ; =0x0222E9EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EA44: .word 0x0222E9EC + + arm_func_start MOD13_0222EA48 +MOD13_0222EA48: ; 0x0222EA48 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222EA7C ; =0x0222EA14 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EA7C: .word 0x0222EA14 + + arm_func_start MOD13_0222EA80 +MOD13_0222EA80: ; 0x0222EA80 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222EAB8 ; =MOD13_0222EA48 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EAB8: .word MOD13_0222EA48 + + arm_func_start MOD13_0222EABC +MOD13_0222EABC: ; 0x0222EABC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EB3C ; =0x02240360 + ldr r1, _0222EB40 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222EB44 ; =0x04001008 + ldr ip, _0222EB48 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222EB4C ; =0x04000008 + ldr r2, _0222EB50 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222EB54 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EB3C: .word 0x02240360 +_0222EB40: .word 0x020C908C +_0222EB44: .word 0x04001008 +_0222EB48: .word 0x0400100A +_0222EB4C: .word 0x04000008 +_0222EB50: .word 0x0400000A +_0222EB54: .word 0x0400000C + + arm_func_start MOD13_0222EB58 +MOD13_0222EB58: ; 0x0222EB58 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EB94 ; =0x022430FC + mov r1, #0 + strb r1, [r0] + bl MOD13_0222EABC + bl MOD13_0221F4AC + mov r0, #0x2a + bl MOD13_0221F070 + mov r0, #2 + bl MOD13_0221E694 + ldr r0, _0222EB98 ; =MOD13_0222EA80 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EB94: .word 0x022430FC +_0222EB98: .word MOD13_0222EA80 + + arm_func_start MOD13_0222EB9C +MOD13_0222EB9C: ; 0x0222EB9C + ldr r0, _0222EBB8 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0222EBB8: .word 0x027FFFA8 + + arm_func_start MOD13_0222EBBC +MOD13_0222EBBC: ; 0x0222EBBC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EBF4 ; =0x02243100 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _0222EBF8 ; =MOD13_0222EC7C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EBF4: .word 0x02243100 +_0222EBF8: .word MOD13_0222EC7C + + arm_func_start MOD13_0222EBFC +MOD13_0222EBFC: ; 0x0222EBFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _0222EC78 ; =MOD13_0223197C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EC78: .word MOD13_0223197C + + arm_func_start MOD13_0222EC7C +MOD13_0222EC7C: ; 0x0222EC7C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222ECBC ; =MOD13_0222EBFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222ECBC: .word MOD13_0222EBFC + + arm_func_start MOD13_0222ECC0 +MOD13_0222ECC0: ; 0x0222ECC0 + bx lr + + arm_func_start MOD13_0222ECC4 +MOD13_0222ECC4: ; 0x0222ECC4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222EBBC + bl MOD13_0222ECC0 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222ED08 ; =MOD13_0222ECC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222ED08: .word MOD13_0222ECC4 + + arm_func_start MOD13_0222ED0C +MOD13_0222ED0C: ; 0x0222ED0C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222ED44 ; =0x0222ECDC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222ED44: .word 0x0222ECDC + + arm_func_start MOD13_0222ED48 +MOD13_0222ED48: ; 0x0222ED48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EDC8 ; =0x02240374 + ldr r1, _0222EDCC ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222EDD0 ; =0x04001008 + ldr ip, _0222EDD4 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222EDD8 ; =0x04000008 + ldr r2, _0222EDDC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222EDE0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EDC8: .word 0x02240374 +_0222EDCC: .word 0x020C908C +_0222EDD0: .word 0x04001008 +_0222EDD4: .word 0x0400100A +_0222EDD8: .word 0x04000008 +_0222EDDC: .word 0x0400000A +_0222EDE0: .word 0x0400000C + + arm_func_start MOD13_0222EDE4 +MOD13_0222EDE4: ; 0x0222EDE4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EE20 ; =0x02243100 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222ED48 + bl MOD13_0221F4AC + mov r0, #0x26 + bl MOD13_0221F070 + mov r0, #0x10 + bl MOD13_0223424C + ldr r0, _0222EE24 ; =MOD13_0222ED0C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EE20: .word 0x02243100 +_0222EE24: .word MOD13_0222ED0C + + arm_func_start MOD13_0222EE28 +MOD13_0222EE28: ; 0x0222EE28 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222EE50 ; =MOD13_0222F080 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EE50: .word MOD13_0222F080 + + arm_func_start MOD13_0222EE54 +MOD13_0222EE54: ; 0x0222EE54 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222EE88 ; =MOD13_0222EE28 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EE88: .word MOD13_0222EE28 + + arm_func_start MOD13_0222EE8C +MOD13_0222EE8C: ; 0x0222EE8C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02223B24 + cmp r0, #1 + beq _0222EEB0 + cmp r0, #4 + beq _0222EECC + add sp, sp, #4 + ldmia sp!, {pc} +_0222EEB0: + ldr r1, _0222EF14 ; =0x02243104 + mov r2, #1 + ldr r0, _0222EF18 ; =MOD13_0222F080 + strb r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222EECC: + ldr r0, _0222EF14 ; =0x02243104 + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xd + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222EF1C ; =MOD13_0222EE54 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EF14: .word 0x02243104 +_0222EF18: .word MOD13_0222F080 +_0222EF1C: .word MOD13_0222EE54 + + arm_func_start MOD13_0222EF20 +MOD13_0222EF20: ; 0x0222EF20 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222EFF4 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222EF60 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_0222EF60: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222EFF4 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222EF9C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222EF9C: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222EFF4 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222EFD8 + bl MOD13_02223BE0 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222EFF8 ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222EFD8: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _0222EFFC ; =MOD13_0222E648 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EFF4: .word 0x02243104 +_0222EFF8: .word MOD13_02230EC4 +_0222EFFC: .word MOD13_0222E648 + + arm_func_start MOD13_0222F000 +MOD13_0222F000: ; 0x0222F000 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222F078 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222F030 + bl MOD13_0221ED28 +_0222F030: + ldr r0, _0222F078 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222F054 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_0222F054: + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222F07C ; =MOD13_0222EF20 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F078: .word 0x02243104 +_0222F07C: .word MOD13_0222EF20 + + arm_func_start MOD13_0222F080 +MOD13_0222F080: ; 0x0222F080 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222F0A4 ; =MOD13_0222F000 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F0A4: .word MOD13_0222F000 + + arm_func_start MOD13_0222F0A8 +MOD13_0222F0A8: ; 0x0222F0A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222F0DC ; =MOD13_0222F080 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F0DC: .word MOD13_0222F080 + + arm_func_start MOD13_0222F0E0 +MOD13_0222F0E0: ; 0x0222F0E0 + bx lr + + arm_func_start MOD13_0222F0E4 +MOD13_0222F0E4: ; 0x0222F0E4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222F10C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222F10C: + bl MOD13_0222F35C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xa + bl OS_Sleep + bl MOD13_0222EE8C + bl MOD13_0222F0E4 + bl MOD13_0222F0E0 + bl MOD13_0222F0A8 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222F184 ; =0x0222F12C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F184: .word 0x0222F12C + + arm_func_start MOD13_0222F188 +MOD13_0222F188: ; 0x0222F188 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02223C0C + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222F1D4 ; =0x0222F154 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F1D4: .word 0x0222F154 + + arm_func_start MOD13_0222F1D8 +MOD13_0222F1D8: ; 0x0222F1D8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222F230 ; =MOD13_0222F188 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F230: .word MOD13_0222F188 + + arm_func_start MOD13_0222F234 +MOD13_0222F234: ; 0x0222F234 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222F2CC ; =0x02240388 + ldr r1, _0222F2D0 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222F2D4 ; =0x022403A0 + ldr r1, _0222F2D8 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222F2DC ; =0x022403B8 + ldr r1, _0222F2E0 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222F2E4 ; =0x04001008 + ldr ip, _0222F2E8 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222F2EC ; =0x04000008 + ldr r2, _0222F2F0 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222F2F4 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F2CC: .word 0x02240388 +_0222F2D0: .word 0x020C8D4C +_0222F2D4: .word 0x022403A0 +_0222F2D8: .word 0x020C9550 +_0222F2DC: .word 0x022403B8 +_0222F2E0: .word 0x020C908C +_0222F2E4: .word 0x04001008 +_0222F2E8: .word 0x0400100A +_0222F2EC: .word 0x04000008 +_0222F2F0: .word 0x0400000A +_0222F2F4: .word 0x0400000C + + arm_func_start MOD13_0222F2F8 +MOD13_0222F2F8: ; 0x0222F2F8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222F354 ; =0x02243104 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222F234 + bl MOD13_0221F4AC + mov r0, #0x37 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0x24 + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _0222F358 ; =MOD13_0222F1D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F354: .word 0x02243104 +_0222F358: .word MOD13_0222F1D8 + + arm_func_start MOD13_0222F35C +MOD13_0222F35C: ; 0x0222F35C + ldr r0, _0222F378 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0222F378: .word 0x027FFFA8 + + arm_func_start MOD13_0222F37C +MOD13_0222F37C: ; 0x0222F37C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222F3A4 ; =MOD13_0222F520 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F3A4: .word MOD13_0222F520 + + arm_func_start MOD13_0222F3A8 +MOD13_0222F3A8: ; 0x0222F3A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222F3DC ; =MOD13_0222F37C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F3DC: .word MOD13_0222F37C + + arm_func_start MOD13_0222F3E0 +MOD13_0222F3E0: ; 0x0222F3E0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_0222F420: + bl MOD13_0223339C + cmp r0, #0 + beq _0222F420 + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222F4B8 ; =0x02243108 + ldrb r0, [r0] + cmp r0, #1 + beq _0222F490 + bl MOD13_02233570 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + bl MOD13_02233C24 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222F4BC ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222F490: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _0222F4C0 ; =MOD13_022295D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F4B8: .word 0x02243108 +_0222F4BC: .word MOD13_02230EC4 +_0222F4C0: .word MOD13_022295D8 + + arm_func_start MOD13_0222F4C4 +MOD13_0222F4C4: ; 0x0222F4C4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222F51C ; =MOD13_0222F3E0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F51C: .word MOD13_0222F3E0 + + arm_func_start MOD13_0222F520 +MOD13_0222F520: ; 0x0222F520 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222F544 ; =MOD13_0222F4C4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F544: .word MOD13_0222F4C4 + + arm_func_start MOD13_0222F548 +MOD13_0222F548: ; 0x0222F548 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222F57C ; =MOD13_0222F520 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F57C: .word MOD13_0222F520 + + arm_func_start MOD13_0222F580 +MOD13_0222F580: ; 0x0222F580 + bx lr + + arm_func_start MOD13_0222F584 +MOD13_0222F584: ; 0x0222F584 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_022341E8 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0222F5B4 +MOD13_0222F5B4: ; 0x0222F5B4 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _0222F6D0 ; =0x0224310C + ldrh r1, [r0] + add r1, r1, #1 + strh r1, [r0] + ldrh r0, [r0] + cmp r0, #0x12c + addlo sp, sp, #0xc + ldmloia sp!, {pc} + bl MOD13_022341E8 + add r0, sp, #4 + bl MOD13_0223333C + cmp r0, #0 + bne _0222F634 + ldr r0, _0222F6D4 ; =0x02243108 + mov r3, #2 + strb r3, [r0] + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xf + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + mov r0, #0x12 + bl MOD13_0223424C + bl MOD13_0221EC84 + ldr r0, _0222F6D8 ; =MOD13_0222F3A8 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} +_0222F634: + cmp r0, #0 + mov r3, #0 + ble _0222F660 + ldr r2, [sp, #4] +_0222F644: + ldrb r1, [r2, #0x28] + cmp r1, #2 + bne _0222F660 + add r3, r3, #1 + cmp r3, r0 + add r2, r2, #0x2a + blt _0222F644 +_0222F660: + cmp r3, r0 + bne _0222F6AC + ldr r0, _0222F6D4 ; =0x02243108 + mov r3, #3 + strb r3, [r0] + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xe + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + mov r0, #0x12 + bl MOD13_0223424C + bl MOD13_0221EC84 + ldr r0, _0222F6D8 ; =MOD13_0222F3A8 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} +_0222F6AC: + ldr r1, _0222F6D4 ; =0x02243108 + mov r2, #1 + mov r0, #0xf + strb r2, [r1] + bl MOD13_0223424C + ldr r0, _0222F6DC ; =MOD13_0222F520 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_0222F6D0: .word 0x0224310C +_0222F6D4: .word 0x02243108 +_0222F6D8: .word MOD13_0222F3A8 +_0222F6DC: .word MOD13_0222F520 + + arm_func_start MOD13_0222F6E0 +MOD13_0222F6E0: ; 0x0222F6E0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222F584 + bl MOD13_0222F580 + bl MOD13_0222F548 + bl MOD13_0222F5B4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222F730 ; =MOD13_0222F6E0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F730: .word MOD13_0222F6E0 + + arm_func_start MOD13_0222F734 +MOD13_0222F734: ; 0x0222F734 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222F77C ; =0x0222F700 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F77C: .word 0x0222F700 + + arm_func_start MOD13_0222F780 +MOD13_0222F780: ; 0x0222F780 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222F7D8 ; =MOD13_0222F734 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F7D8: .word MOD13_0222F734 + + arm_func_start MOD13_0222F7DC +MOD13_0222F7DC: ; 0x0222F7DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222F874 ; =0x022403CC + ldr r1, _0222F878 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222F87C ; =0x022403E4 + ldr r1, _0222F880 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222F884 ; =0x022403FC + ldr r1, _0222F888 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222F88C ; =0x04001008 + ldr ip, _0222F890 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222F894 ; =0x04000008 + ldr r2, _0222F898 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222F89C ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F874: .word 0x022403CC +_0222F878: .word 0x020C8D4C +_0222F87C: .word 0x022403E4 +_0222F880: .word 0x020C9550 +_0222F884: .word 0x022403FC +_0222F888: .word 0x020C908C +_0222F88C: .word 0x04001008 +_0222F890: .word 0x0400100A +_0222F894: .word 0x04000008 +_0222F898: .word 0x0400000A +_0222F89C: .word 0x0400000C + + arm_func_start MOD13_0222F8A0 +MOD13_0222F8A0: ; 0x0222F8A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0222F90C ; =0x0224310C + mov r2, #0 + ldr r0, _0222F910 ; =0x02243108 + strh r2, [r1] + strb r2, [r0] + bl MOD13_0222F7DC + mov r0, #0x33 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + bl MOD13_0221F4AC + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0x33 + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + bl MOD13_022335AC + bl MOD13_0223348C + mov r0, #0xa + bl MOD13_0223424C + ldr r0, _0222F914 ; =MOD13_0222F780 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F90C: .word 0x0224310C +_0222F910: .word 0x02243108 +_0222F914: .word MOD13_0222F780 + + arm_func_start MOD13_0222F918 +MOD13_0222F918: ; 0x0222F918 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r2, _0222F9EC ; =0x0223F400 + ldr r1, _0222F9F0 ; =0x0223F404 + ldrb r7, [r2] + ldrb r6, [r2, #1] + ldrb r5, [r2, #2] + ldrb r4, [r2, #3] + ldrb lr, [r1] + ldrb ip, [r1, #1] + ldrb r3, [r1, #2] + ldrb r2, [r1, #3] + ldr r0, _0222F9F4 ; =0x02243110 + strb r7, [sp] + ldrb r1, [r0] + strb r2, [sp, #7] + strb r6, [sp, #1] + strb r5, [sp, #2] + strb r4, [sp, #3] + strb lr, [sp, #4] + strb ip, [sp, #5] + strb r3, [sp, #6] + cmp r1, #3 + add r2, sp, #0 + addhi sp, sp, #0xc + ldmhiia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0222F9F8 ; =0x02243114 + ldrb r1, [r2, r1] + ldr r0, [r0] + ldr r0, [r0] + mov r2, r1 + bl MOD13_022327DC + ldr r0, _0222F9F4 ; =0x02243110 + ldrb r0, [r0] + cmp r0, #3 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD13_02233D0C + ldr r1, _0222F9F4 ; =0x02243110 + ldr r2, _0222F9F8 ; =0x02243114 + ldrb r3, [r1] + ldr r2, [r2] + cmp r0, #2 + movgt r0, #3 + add r1, sp, #4 + add r2, r2, r3, lsl #2 + ldrb r3, [r1, r0] + ldr r0, [r2, #4] + mvn r1, #0 + mov r2, #0 + bl MOD13_02239994 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0222F9EC: .word 0x0223F400 +_0222F9F0: .word 0x0223F404 +_0222F9F4: .word 0x02243110 +_0222F9F8: .word 0x02243114 + + arm_func_start MOD13_0222F9FC +MOD13_0222F9FC: ; 0x0222F9FC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222FA28 ; =MOD13_022303D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222FA28: .word MOD13_022303D8 + + arm_func_start MOD13_0222FA2C +MOD13_0222FA2C: ; 0x0222FA2C + stmdb sp!, {r4, lr} + ldr r0, _0222FB8C ; =0x02243110 + ldrb r0, [r0] + sub r4, r0, #4 + bl MOD13_02235E9C + cmp r0, #0 + beq _0222FB00 + cmp r0, #1 + ldmneia sp!, {r4, pc} + mov r0, #0xe + bl MOD13_0223424C + mov r0, r4 + bl MOD13_022338B8 + ldr r0, _0222FB90 ; =0x02243114 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #4] + bl MOD13_02239ADC + ldr r1, _0222FB94 ; =0x0223F3FC + mov r2, r0 + ldrb r1, [r1, #3] + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _0222FB90 ; =0x02243114 + mov ip, r4, lsl #2 + ldr r0, [r0] + mvn r1, #0 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #4] + ldr r2, _0222FB98 ; =0x0223F428 + ldr r3, _0222FB9C ; =0x0223F42A + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_02239888 + ldr r0, _0222FB90 ; =0x02243114 + mvn r1, #0 + ldr r0, [r0] + mov r2, #3 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #4] + bl MOD13_02239814 + ldr r0, _0222FB90 ; =0x02243114 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239AE8 + mov r1, #0 + ldr r0, _0222FB90 ; =0x02243114 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x10] + b _0222FB7C +_0222FB00: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222FB90 ; =0x02243114 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239ADC + mov r2, r0 + mov r0, #0 + mov r1, #0x11 + bl MOD13_02239E8C + ldr r0, _0222FB90 ; =0x02243114 + add r1, r4, #3 + ldr r0, [r0] + mov ip, r1, lsl #2 + ldr r2, _0222FB98 ; =0x0223F428 + ldr r3, _0222FB9C ; =0x0223F42A + add r0, r0, r4, lsl #2 + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + ldr r0, [r0, #0x10] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0222FB90 ; =0x02243114 + mvn r1, #0 + ldr r0, [r0] + mov r2, #3 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239814 +_0222FB7C: + bl MOD13_02235EB0 + ldr r0, _0222FBA0 ; =MOD13_0222F9FC + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_0222FB8C: .word 0x02243110 +_0222FB90: .word 0x02243114 +_0222FB94: .word 0x0223F3FC +_0222FB98: .word 0x0223F428 +_0222FB9C: .word 0x0223F42A +_0222FBA0: .word MOD13_0222F9FC + + arm_func_start MOD13_0222FBA4 +MOD13_0222FBA4: ; 0x0222FBA4 + stmdb sp!, {r4, lr} + ldr r1, _0222FC2C ; =0x02243110 + ldr r0, _0222FC30 ; =0x02243114 + ldrb r2, [r1] + ldr r0, [r0] + mov r1, #0 + sub r4, r2, #4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239ADC + mov r2, r0 + mov r0, #0 + mov r1, #0x32 + bl MOD13_02239E8C + ldr r0, _0222FC30 ; =0x02243114 + add r3, r4, #3 + ldr r2, [r0] + ldr r1, _0222FC34 ; =0x0223F428 + mov r3, r3, lsl #2 + ldr r0, _0222FC38 ; =0x0223F42A + add ip, r2, r4, lsl #2 + ldrh r2, [r1, r3] + ldrh r3, [r0, r3] + ldr r0, [ip, #0x10] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0222FC30 ; =0x02243114 + mvn r1, #0 + ldr r0, [r0] + mov r2, #3 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239814 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222FC2C: .word 0x02243110 +_0222FC30: .word 0x02243114 +_0222FC34: .word 0x0223F428 +_0222FC38: .word 0x0223F42A + + arm_func_start MOD13_0222FC3C +MOD13_0222FC3C: ; 0x0222FC3C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _0222FE54 ; =0x02243110 + mov r1, #1 + ldrb r2, [r3] + cmp r2, #6 + addls pc, pc, r2, lsl #2 + b _0222FE34 +_0222FC5C: ; jump table + b _0222FC78 ; case 0 + b _0222FCBC ; case 1 + b _0222FD00 ; case 2 + b _0222FD44 ; case 3 + b _0222FD70 ; case 4 + b _0222FDB4 ; case 5 + b _0222FDF4 ; case 6 +_0222FC78: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + mov ip, #0 + strb ip, [r2, #0x1c] + moveq r0, #2 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + streqb r1, [r3] + beq _0222FE34 + cmp r0, #1 + moveq r0, #3 + streqb r0, [r3] + movne r0, #4 + strneb r0, [r3] + b _0222FE34 +_0222FCBC: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + moveq r0, #0 + strb r1, [r2, #0x1c] + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #2 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + moveq r0, #3 + streqb r0, [r3] + movne r0, #5 + strneb r0, [r3] + b _0222FE34 +_0222FD00: + ldr r2, _0222FE58 ; =0x02243114 + mov ip, #2 + ldr r2, [r2] + cmp r0, #0 + strb ip, [r2, #0x1c] + streqb r1, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #0 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + moveq r0, #3 + streqb r0, [r3] + movne r0, #6 + strneb r0, [r3] + b _0222FE34 +_0222FD44: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #1 + ldr r2, [r2] + ldrb ip, [r2, #0x1c] + add r2, ip, #4 + streqb r2, [r3] + beq _0222FE34 + cmp r0, #3 + streqb ip, [r3] + movne r1, #0 + b _0222FE34 +_0222FD70: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + mov ip, #0 + strb ip, [r2, #0x1c] + moveq r0, #6 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #5 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + streqb ip, [r3] + movne r0, #3 + strneb r0, [r3] + b _0222FE34 +_0222FDB4: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + moveq r0, #4 + strb r1, [r2, #0x1c] + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #6 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + streqb r1, [r3] + movne r0, #3 + strneb r0, [r3] + b _0222FE34 +_0222FDF4: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + mov ip, #2 + strb ip, [r2, #0x1c] + moveq r0, #5 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #4 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + streqb ip, [r3] + movne r0, #3 + strneb r0, [r3] +_0222FE34: + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #8 + bl MOD13_0223424C + bl MOD13_0222FE5C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222FE54: .word 0x02243110 +_0222FE58: .word 0x02243114 + + arm_func_start MOD13_0222FE5C +MOD13_0222FE5C: ; 0x0222FE5C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222FED0 ; =0x02243110 + ldrb r2, [r0] + cmp r2, #4 + bhs _0222FEA4 + mov ip, r2, lsl #3 + ldr r0, _0222FED4 ; =0x0223F478 + ldr r1, _0222FED8 ; =0x0223F47C + ldr r2, _0222FEDC ; =0x0223F47A + ldr r3, _0222FEE0 ; =0x0223F47E + ldrh r0, [r0, ip] + ldrh r1, [r1, ip] + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {pc} +_0222FEA4: + ldr r1, _0222FED4 ; =0x0223F478 + mov r3, r2, lsl #3 + ldr r2, _0222FED8 ; =0x0223F47C + ldr r0, _0222FEDC ; =0x0223F47A + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + ldrh r3, [r0, r3] + mov r0, #0 + bl MOD13_0221F348 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222FED0: .word 0x02243110 +_0222FED4: .word 0x0223F478 +_0222FED8: .word 0x0223F47C +_0222FEDC: .word 0x0223F47A +_0222FEE0: .word 0x0223F47E + + arm_func_start MOD13_0222FEE4 +MOD13_0222FEE4: ; 0x0222FEE4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl MOD13_022343D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r4, _02230084 ; =0x02243114 + mov r5, #0 +_0222FF3C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0222FF54 + bl MOD13_02239AE8 +_0222FF54: + add r5, r5, #1 + cmp r5, #3 + blo _0222FF3C + ldr r4, _02230084 ; =0x02243114 + mov r5, #0 +_0222FF68: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0222FF80 + bl MOD13_02239AE8 +_0222FF80: + add r5, r5, #1 + cmp r5, #3 + blo _0222FF68 + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _02230084 ; =0x02243114 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223939C + ldr r0, _02230088 ; =0x02240410 + ldr r1, _0223008C ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _02230084 ; =0x02243114 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + cmp r0, #2 + bne _0222FFF4 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02230090 ; =MOD13_022245B4 + bl MOD13_02222FBC + b _02230074 +_0222FFF4: + ldr r0, _02230094 ; =0x02243110 + ldrb r0, [r0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02230074 +_02230008: ; jump table + b _02230018 ; case 0 + b _02230018 ; case 1 + b _02230018 ; case 2 + b _02230060 ; case 3 +_02230018: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + bl MOD13_02234164 + ldrb r0, [r0, #0xe7] + cmp r0, #0xff + bne _02230040 + ldr r0, _02230098 ; =MOD13_02230EC4 + bl MOD13_02222FBC + b _02230074 +_02230040: + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + mov r0, #0 + bl MOD13_0222B7F4 + ldr r0, _0223009C ; =MOD13_0222DD4C + bl MOD13_02222FBC + b _02230074 +_02230060: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022300A0 ; =MOD13_0223201C + bl MOD13_02222FBC +_02230074: + ldr r0, _02230084 ; =0x02243114 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02230084: .word 0x02243114 +_02230088: .word 0x02240410 +_0223008C: .word 0x020C9480 +_02230090: .word MOD13_022245B4 +_02230094: .word 0x02243110 +_02230098: .word MOD13_02230EC4 +_0223009C: .word MOD13_0222DD4C +_022300A0: .word MOD13_0223201C + + arm_func_start MOD13_022300A4 +MOD13_022300A4: ; 0x022300A4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02230130 ; =0x02243114 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + cmp r0, #1 + bne _022300F8 + ldr r0, _02230134 ; =0x02243110 + ldrb r0, [r0] + cmp r0, #3 + beq _022300F4 + bl MOD13_02234164 + ldrb r0, [r0, #0xe7] + cmp r0, #0xff + beq _022300F8 +_022300F4: + bl MOD13_0221ED28 +_022300F8: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02230138 ; =MOD13_0222FEE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230130: .word 0x02243114 +_02230134: .word 0x02243110 +_02230138: .word MOD13_0222FEE4 + + arm_func_start MOD13_0223013C +MOD13_0223013C: ; 0x0223013C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02230178 ; =0x02243114 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + cmp r0, #2 + bne _0223015C + bl MOD13_02234908 +_0223015C: + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0223017C ; =MOD13_022300A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230178: .word 0x02243114 +_0223017C: .word MOD13_022300A4 + + arm_func_start MOD13_02230180 +MOD13_02230180: ; 0x02230180 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + bl MOD13_0221ED14 + cmp r0, #0 + beq _022301A4 + cmp r0, #1 + beq _022301EC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022301A4: + bl MOD13_02222F1C + cmp r0, #0 + beq _022301BC + cmp r0, #1 + beq _022301D8 + b _02230294 +_022301BC: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022302A4 ; =0x02243114 + mov r1, #2 + ldr r0, [r0] + strb r1, [r0, #0x1d] + b _02230294 +_022301D8: + bl MOD13_0221EC84 + ldr r0, _022302A8 ; =MOD13_02223CFC + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022301EC: + ldr r0, _022302A4 ; =0x02243114 + mov r2, #1 + ldr r1, [r0] + ldr r0, _022302AC ; =0x02243110 + strb r2, [r1, #0x1d] + ldrb r0, [r0] + cmp r0, #4 + blo _0223027C + sub r4, r0, #4 + mov r0, r4 + bl MOD13_02233D0C + cmp r0, #0xff + bne _02230238 + mov r0, #9 + bl MOD13_0223424C + mvn r0, #0 + bl MOD13_0221ECE0 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02230238: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02222F34 + add r2, r4, #1 + str r2, [sp] + ldr r1, _022302B0 ; =0x0223F408 + mov r2, #1 + ldrsb r3, [r1, r0] + mov r0, #0x46 + mov r1, #0 + bl MOD13_02235EFC + bl MOD13_0222FBA4 + bl MOD13_0221EC84 + ldr r0, _022302B4 ; =MOD13_0222FA2C + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0223027C: + cmp r0, #2 + bhi _02230288 + bl MOD13_02233C24 +_02230288: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_0222F918 +_02230294: + ldr r0, _022302B8 ; =MOD13_0223013C + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022302A4: .word 0x02243114 +_022302A8: .word MOD13_02223CFC +_022302AC: .word 0x02243110 +_022302B0: .word 0x0223F408 +_022302B4: .word MOD13_0222FA2C +_022302B8: .word MOD13_0223013C + + arm_func_start MOD13_022302BC +MOD13_022302BC: ; 0x022302BC + bx lr + + arm_func_start MOD13_022302C0 +MOD13_022302C0: ; 0x022302C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _022303D0 ; =0x0223F440 + mov r5, #0 +_022302D0: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _022302FC + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _022303D4 ; =0x02243110 + strb r5, [r0] + bl MOD13_0222FE5C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022302FC: + add r5, r5, #1 + cmp r5, #7 + add r4, r4, #8 + blo _022302D0 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0223032C + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223032C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0223034C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223034C: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0223036C + mov r0, #1 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223036C: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0223038C + mov r0, #3 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223038C: + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022303AC + mov r0, #0 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022303AC: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #2 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022303D0: .word 0x0223F440 +_022303D4: .word 0x02243110 + + arm_func_start MOD13_022303D8 +MOD13_022303D8: ; 0x022303D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022302C0 + bl MOD13_022302BC + bl MOD13_02230180 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_02234800 + cmp r0, #1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02230434 ; =MOD13_022303D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230434: .word MOD13_022303D8 + + arm_func_start MOD13_02230438 +MOD13_02230438: ; 0x02230438 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _02230480 ; =0x022303F4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230480: .word 0x022303F4 + + arm_func_start MOD13_02230484 +MOD13_02230484: ; 0x02230484 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _022304DC ; =MOD13_02230438 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022304DC: .word MOD13_02230438 + + arm_func_start MOD13_022304E0 +MOD13_022304E0: ; 0x022304E0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, #0 + ldr r4, _022305F0 ; =0x02243114 + ldr r5, _022305F4 ; =0x0223F428 + str sb, [sp] + str sb, [sp, #4] + mov fp, #0x11 + mov r7, #1 + mvn r6, #0 + mov r8, #3 +_0223050C: + mov r0, sb + bl MOD13_02233D0C + mov sl, r0 + cmp sl, #0xff + moveq sl, r8 + beq _02230580 + ldr r0, [sp] + mov r1, fp + mov r2, r7 + bl MOD13_02239E0C + ldr r1, [r4] + add r3, sb, #3 + add r1, r1, sb, lsl #2 + str r0, [r1, #0x10] + mov r2, r3, lsl #2 + ldr r0, [r4] + add r3, r5, r3, lsl #2 + add r0, r0, sb, lsl #2 + ldrh r2, [r5, r2] + ldrh r3, [r3, #2] + ldr r0, [r0, #0x10] + mov r1, r6 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, r6 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0x10] + mov r2, r8 + bl MOD13_02239814 +_02230580: + ldr r0, _022305F8 ; =0x0223F3FC + mov r2, r7 + ldrb r1, [r0, sl] + ldr r0, [sp, #4] + bl MOD13_02239E0C + ldr r1, [r4] + mov r2, sb, lsl #2 + add r1, r1, sb, lsl #2 + str r0, [r1, #4] + ldr r0, [r4] + add r3, r5, sb, lsl #2 + add r0, r0, sb, lsl #2 + ldrh r2, [r5, r2] + ldrh r3, [r3, #2] + ldr r0, [r0, #4] + mov r1, r6 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, r6 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #4] + mov r2, r8 + bl MOD13_02239814 + add sb, sb, #1 + cmp sb, #3 + blt _0223050C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022305F0: .word 0x02243114 +_022305F4: .word 0x0223F428 +_022305F8: .word 0x0223F3FC + + arm_func_start MOD13_022305FC +MOD13_022305FC: ; 0x022305FC + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _022306DC ; =0x0223F410 + add r3, sp, #0 + mov r2, #0xb +_02230610: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02230610 + ldr r0, _022306E0 ; =0x02240428 + ldr r1, _022306E4 ; =0x020C9480 + bl MOD13_0221F174 + ldr r0, _022306E8 ; =0x0224043C + ldr r1, _022306EC ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _022306F0 ; =0x02240454 + ldr r1, _022306F4 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _022306F8 ; =0x0224046C + ldr r1, _022306FC ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r2, _02230700 ; =0x02243114 + mov r1, #0x10 + ldr r2, [r2] + str r0, [r2] + mov r0, #1 + bl MOD13_0223AEF4 + ldr ip, _02230704 ; =0x04001008 + ldr r3, _02230708 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _0223070C ; =0x0400000A + ldr r1, _02230710 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_022306DC: .word 0x0223F410 +_022306E0: .word 0x02240428 +_022306E4: .word 0x020C9480 +_022306E8: .word 0x0224043C +_022306EC: .word 0x020C8D4C +_022306F0: .word 0x02240454 +_022306F4: .word 0x020C9550 +_022306F8: .word 0x0224046C +_022306FC: .word 0x020C908C +_02230700: .word 0x02243114 +_02230704: .word 0x04001008 +_02230708: .word 0x0400100A +_0223070C: .word 0x0400000A +_02230710: .word 0x0400000C + + arm_func_start MOD13_02230714 +MOD13_02230714: ; 0x02230714 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x20 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _02230774 ; =0x02243114 + mov r2, #0 + str r0, [r1] + strb r2, [r0, #0x1d] + bl MOD13_022305FC + mov r0, #1 + bl MOD13_0221F4CC + mov r0, #0x2f + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0 + bl MOD13_0221F124 + bl MOD13_022304E0 + bl MOD13_0222FE5C + ldr r0, _02230778 ; =MOD13_02230484 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230774: .word 0x02243114 +_02230778: .word MOD13_02230484 + + arm_func_start MOD13_0223077C +MOD13_0223077C: ; 0x0223077C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _022307D0 ; =0x0223F4B0 + ldr r1, _022307D4 ; =0x0224311C + ldrb lr, [r0] + ldrb ip, [r0, #1] + ldrb r3, [r0, #2] + ldrb r2, [r0, #3] + ldr r0, _022307D8 ; =0x02243124 + ldrsb r1, [r1] + add r4, sp, #0 + strb lr, [sp] + strb ip, [sp, #1] + strb r3, [sp, #2] + strb r2, [sp, #3] + ldrb r1, [r4, r1] + ldr r0, [r0] + mov r2, r1 + bl MOD13_022327DC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022307D0: .word 0x0223F4B0 +_022307D4: .word 0x0224311C +_022307D8: .word 0x02243124 + + arm_func_start MOD13_022307DC +MOD13_022307DC: ; 0x022307DC + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _022308B8 ; =0x0224311C + mov r5, r0 + mov r0, #1 + ldrsb r4, [r1] + bl MOD13_02222EFC + ldr r2, _022308BC ; =0x0223F4D4 + mvn r1, #0 + add r0, r2, r0, lsl #4 + add r0, r0, r4, lsl #2 + ldrsb r2, [r5, r0] + cmp r2, r1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r2, #0 + ldreq r0, _022308C0 ; =0x02243118 + streqb r4, [r0] + mvn r0, #1 + cmp r2, r0 + ldreq r1, _022308C0 ; =0x02243118 + ldreq r0, _022308B8 ; =0x0224311C + ldreqsb r1, [r1] + streqb r1, [r0] + ldrne r0, _022308B8 ; =0x0224311C + strneb r2, [r0] + mov r0, #8 + bl MOD13_0223424C + mov r0, #1 + bl MOD13_02222EFC + mov r6, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r5, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r4, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r3, r0 + ldr r0, _022308B8 ; =0x0224311C + ldr r1, _022308C4 ; =0x0223F534 + ldrsb lr, [r0] + ldr r0, _022308C8 ; =0x0223F536 + add ip, r1, r6, lsl #5 + ldr r1, _022308CC ; =0x0223F538 + add r2, r0, r4, lsl #5 + ldr r4, _022308D0 ; =0x0223F53A + add r1, r1, r5, lsl #5 + mov r5, lr, lsl #3 + add r3, r4, r3, lsl #5 + ldrh r0, [r5, ip] + ldrh r1, [r5, r1] + ldrh r2, [r5, r2] + ldrh r3, [r5, r3] + bl MOD13_0221F25C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022308B8: .word 0x0224311C +_022308BC: .word 0x0223F4D4 +_022308C0: .word 0x02243118 +_022308C4: .word 0x0223F534 +_022308C8: .word 0x0223F536 +_022308CC: .word 0x0223F538 +_022308D0: .word 0x0223F53A + + arm_func_start MOD13_022308D4 +MOD13_022308D4: ; 0x022308D4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _02230A14 ; =0x02243124 + ldr r0, [r0] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _02230A18 ; =0x02243120 + ldrb r0, [r0] + cmp r0, #0 + bne _0223096C + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _02230A1C ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0223096C: + ldr r0, _02230A20 ; =0x0224311C + ldrsb r0, [r0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02230A0C +_02230980: ; jump table + b _02230990 ; case 0 + b _022309AC ; case 1 + b _022309C8 ; case 2 + b _022309E4 ; case 3 +_02230990: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02230A24 ; =MOD13_0222F8A0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022309AC: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02230A28 ; =MOD13_02227C38 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022309C8: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02230A2C ; =MOD13_0222F2F8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022309E4: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + mov r0, #1 + bl MOD13_0222B7F4 + ldr r0, _02230A30 ; =MOD13_0222DD4C + bl MOD13_02222FBC +_02230A0C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230A14: .word 0x02243124 +_02230A18: .word 0x02243120 +_02230A1C: .word MOD13_02230714 +_02230A20: .word 0x0224311C +_02230A24: .word MOD13_0222F8A0 +_02230A28: .word MOD13_02227C38 +_02230A2C: .word MOD13_0222F2F8 +_02230A30: .word MOD13_0222DD4C + + arm_func_start MOD13_02230A34 +MOD13_02230A34: ; 0x02230A34 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02230A9C ; =0x02243120 + ldrb r0, [r0] + cmp r0, #0 + beq _02230A64 + bl MOD13_0221ED28 +_02230A64: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02230AA0 ; =MOD13_022308D4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230A9C: .word 0x02243120 +_02230AA0: .word MOD13_022308D4 + + arm_func_start MOD13_02230AA4 +MOD13_02230AA4: ; 0x02230AA4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02230AC8 ; =MOD13_02230A34 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230AC8: .word MOD13_02230A34 + + arm_func_start MOD13_02230ACC +MOD13_02230ACC: ; 0x02230ACC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02230AF0 + cmp r0, #1 + beq _02230AFC + add sp, sp, #4 + ldmia sp!, {pc} +_02230AF0: + mov r0, #7 + bl MOD13_0223424C + b _02230B14 +_02230AFC: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_0223077C + ldr r0, _02230B24 ; =0x02243120 + mov r1, #1 + strb r1, [r0] +_02230B14: + ldr r0, _02230B28 ; =MOD13_02230AA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230B24: .word 0x02243120 +_02230B28: .word MOD13_02230AA4 + + arm_func_start MOD13_02230B2C +MOD13_02230B2C: ; 0x02230B2C + bx lr + + arm_func_start MOD13_02230B30 +MOD13_02230B30: ; 0x02230B30 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, #0 + mov r6, r7 + ldr r4, _02230CC0 ; =0x0223F4F4 + mov r5, #1 +_02230B48: + mov r0, r5 + bl MOD13_02222EFC + add r0, r4, r0, lsl #5 + add r0, r0, r6 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02230BEC + mov r0, #1 + bl MOD13_0221ECF4 + ldr r1, _02230CC4 ; =0x0224311C + mov r0, #1 + strb r7, [r1] + bl MOD13_02222EFC + mov r6, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r5, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r4, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r3, r0 + ldr r0, _02230CC4 ; =0x0224311C + ldr r1, _02230CC8 ; =0x0223F534 + ldrsb lr, [r0] + ldr r0, _02230CCC ; =0x0223F536 + add ip, r1, r6, lsl #5 + ldr r1, _02230CD0 ; =0x0223F538 + add r2, r0, r4, lsl #5 + ldr r4, _02230CD4 ; =0x0223F53A + add r1, r1, r5, lsl #5 + mov r5, lr, lsl #3 + add r3, r4, r3, lsl #5 + ldrh r0, [r5, ip] + ldrh r1, [r5, r1] + ldrh r2, [r5, r2] + ldrh r3, [r5, r3] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230BEC: + add r7, r7, #1 + cmp r7, #4 + add r6, r6, #8 + blo _02230B48 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02230C1C + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C1C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02230C3C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C3C: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02230C5C + mov r0, #1 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C5C: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02230C7C + mov r0, #3 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C7C: + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02230C9C + mov r0, #0 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C9C: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, #2 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02230CC0: .word 0x0223F4F4 +_02230CC4: .word 0x0224311C +_02230CC8: .word 0x0223F534 +_02230CCC: .word 0x0223F536 +_02230CD0: .word 0x0223F538 +_02230CD4: .word 0x0223F53A + + arm_func_start MOD13_02230CD8 +MOD13_02230CD8: ; 0x02230CD8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02230B30 + bl MOD13_02230B2C + bl MOD13_02230ACC + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02230D24 ; =MOD13_02230CD8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230D24: .word MOD13_02230CD8 + + arm_func_start MOD13_02230D28 +MOD13_02230D28: ; 0x02230D28 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _02230D70 ; =0x02230CF4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230D70: .word 0x02230CF4 + + arm_func_start MOD13_02230D74 +MOD13_02230D74: ; 0x02230D74 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _02230DCC ; =MOD13_02230D28 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230DCC: .word MOD13_02230D28 + + arm_func_start MOD13_02230DD0 +MOD13_02230DD0: ; 0x02230DD0 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _02230E94 ; =0x0223F4BC + add r3, sp, #0 + mov r2, #0xb +_02230DE4: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02230DE4 + ldr r0, _02230E98 ; =0x02240480 + ldr r1, _02230E9C ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02230EA0 ; =0x02240498 + ldr r1, _02230EA4 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02230EA8 ; =0x022404B0 + ldr r1, _02230EAC ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _02230EB0 ; =0x02243124 + ldr ip, _02230EB4 ; =0x04001008 + str r0, [r1] + ldrh r0, [ip] + ldr r3, _02230EB8 ; =0x0400100A + ldr r2, _02230EBC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + ldr r1, _02230EC0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_02230E94: .word 0x0223F4BC +_02230E98: .word 0x02240480 +_02230E9C: .word 0x020C8D4C +_02230EA0: .word 0x02240498 +_02230EA4: .word 0x020C9550 +_02230EA8: .word 0x022404B0 +_02230EAC: .word 0x020C908C +_02230EB0: .word 0x02243124 +_02230EB4: .word 0x04001008 +_02230EB8: .word 0x0400100A +_02230EBC: .word 0x0400000A +_02230EC0: .word 0x0400000C + + arm_func_start MOD13_02230EC4 +MOD13_02230EC4: ; 0x02230EC4 + stmdb sp!, {r4, r5, r6, lr} + bl MOD13_02234164 + ldr r1, _02230FD0 ; =0x02243118 + ldr r2, _02230FD4 ; =0x02243120 + ldrsb r3, [r1] + mov r5, #0 + mov r4, r0 + cmp r3, #0 + moveq r0, #1 + strb r5, [r2] + streqb r0, [r1] + bl MOD13_02222F34 + cmp r0, #0 + beq _02230F24 + ldr r0, _02230FD8 ; =0x0224311C + ldrsb r1, [r0] + cmp r1, #2 + moveq r1, #0 + streqb r1, [r0] + ldr r0, _02230FD0 ; =0x02243118 + ldrsb r1, [r0] + cmp r1, #2 + moveq r1, #1 + streqb r1, [r0] +_02230F24: + bl MOD13_02230DD0 + bl MOD13_0221F4AC + bl MOD13_02222F34 + mov r5, r0 + ldrb r1, [r4, #0xf4] + mov r0, #0x32 + ldr r3, _02230FDC ; =0x0223F4B4 + add r2, r1, #1 + ldrsb r1, [r3, r5] + bl MOD13_0221EE98 + mov r0, #1 + bl MOD13_0221F124 + mov r0, #1 + bl MOD13_02222EFC + mov r6, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r5, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r4, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r3, r0 + ldr r1, _02230FE0 ; =0x0223F534 + ldr r0, _02230FD8 ; =0x0224311C + add ip, r1, r6, lsl #5 + ldrsb lr, [r0] + ldr r1, _02230FE4 ; =0x0223F538 + ldr r0, _02230FE8 ; =0x0223F536 + add r1, r1, r5, lsl #5 + add r2, r0, r4, lsl #5 + mov r5, lr, lsl #3 + ldrh r0, [r5, ip] + ldrh r1, [r5, r1] + ldrh r2, [r5, r2] + ldr r4, _02230FEC ; =0x0223F53A + add r3, r4, r3, lsl #5 + ldrh r3, [r5, r3] + bl MOD13_0221F25C + ldr r0, _02230FF0 ; =MOD13_02230D74 + bl MOD13_02222FBC + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02230FD0: .word 0x02243118 +_02230FD4: .word 0x02243120 +_02230FD8: .word 0x0224311C +_02230FDC: .word 0x0223F4B4 +_02230FE0: .word 0x0223F534 +_02230FE4: .word 0x0223F538 +_02230FE8: .word 0x0223F536 +_02230FEC: .word 0x0223F53A +_02230FF0: .word MOD13_02230D74 + + arm_func_start MOD13_02230FF4 +MOD13_02230FF4: ; 0x02230FF4 + ldr ip, _02231000 ; =MOD13_0223AF48 + mov r0, r1 + bx ip + .align 2, 0 +_02231000: .word MOD13_0223AF48 + + arm_func_start MOD13_02231004 +MOD13_02231004: ; 0x02231004 + ldr ip, _02231014 ; =MOD13_0223B004 + mov r0, r1 + mov r1, #0x20 + bx ip + .align 2, 0 +_02231014: .word MOD13_0223B004 + + arm_func_start MOD13_02231018 +MOD13_02231018: ; 0x02231018 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl FUN_021EBB80 + movs r4, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl MOD13_0221F694 + bl MOD13_022341E8 + cmp r4, #0 + ble _0223105C + ldr r1, _02231088 ; =0x02243128 + mov r2, #1 + mov r0, #0x11 + strb r2, [r1] + bl MOD13_0223424C + b _0223106C +_0223105C: + bl FUN_021EBAE8 + bl MOD13_0222B0BC + mov r0, #0x12 + bl MOD13_0223424C +_0223106C: + ldr r0, _0223108C ; =MOD13_0223115C + bl MOD13_02222FBC + mov r1, r5 + mov r0, #0 + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02231088: .word 0x02243128 +_0223108C: .word MOD13_0223115C + + arm_func_start MOD13_02231090 +MOD13_02231090: ; 0x02231090 + stmdb sp!, {r4, lr} + bl MOD13_022338FC + mov r4, r0 + bl FUN_021EB9D8 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl FUN_02095324 + add r1, r4, #0xf0 + mov r2, #0xe + bl MI_CpuCopy8 + bl FUN_02095324 + add r1, r4, #0x1f0 + mov r2, #0xe + bl MI_CpuCopy8 + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02231120 ; =0x02243128 + ldrb r0, [r0] + cmp r0, #0 + bne _02231108 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231124 ; =MOD13_0222B7D0 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} +_02231108: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231128 ; =MOD13_02231704 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_02231120: .word 0x02243128 +_02231124: .word MOD13_0222B7D0 +_02231128: .word MOD13_02231704 + + arm_func_start MOD13_0223112C +MOD13_0223112C: ; 0x0223112C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231158 ; =MOD13_02231090 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231158: .word MOD13_02231090 + + arm_func_start MOD13_0223115C +MOD13_0223115C: ; 0x0223115C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02231188 ; =MOD13_0223112C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231188: .word MOD13_0223112C + + arm_func_start MOD13_0223118C +MOD13_0223118C: ; 0x0223118C + bx lr + + arm_func_start MOD13_02231190 +MOD13_02231190: ; 0x02231190 + bx lr + + arm_func_start MOD13_02231194 +MOD13_02231194: ; 0x02231194 + bx lr + + arm_func_start MOD13_02231198 +MOD13_02231198: ; 0x02231198 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02231194 + bl MOD13_02231190 + bl MOD13_0223118C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022311F4 ; =MOD13_02231198 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022311F4: .word MOD13_02231198 + + arm_func_start MOD13_022311F8 +MOD13_022311F8: ; 0x022311F8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _02231258 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 +_02231258: + ldr r0, _02231268 ; =0x022311B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231268: .word 0x022311B4 + + arm_func_start MOD13_0223126C +MOD13_0223126C: ; 0x0223126C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + bl MOD13_02234164 + mov r4, r0 + ldr r0, _022312FC ; =0x0223F574 + add r1, sp, #4 + mov r2, #0xc + bl MIi_CpuCopy32 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #2 + moveq r0, #4 + streqb r0, [sp, #0xe] + ldrneb r0, [r4, #0xf4] + addne r0, r0, #1 + strneb r0, [sp, #0xe] + add r0, sp, #4 + bl FUN_021EBC60 + cmp r0, #0 + bne _022312C8 + bl OS_Terminate +_022312C8: + ldr r0, [sp] + cmp r0, #0 + bne _022312E0 + ldrb r0, [r4, #0xf4] + mov r1, r4 + bl FUN_021EB9A4 +_022312E0: + mov r0, #0 + ldr r1, _02231300 ; =MOD13_02231018 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022312FC: .word 0x0223F574 +_02231300: .word MOD13_02231018 + + arm_func_start MOD13_02231304 +MOD13_02231304: ; 0x02231304 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223139C ; =0x022404C4 + ldr r1, _022313A0 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _022313A4 ; =0x022404DC + ldr r1, _022313A8 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _022313AC ; =0x022404F4 + ldr r1, _022313B0 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _022313B4 ; =0x04001008 + ldr ip, _022313B8 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _022313BC ; =0x04000008 + ldr r2, _022313C0 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _022313C4 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223139C: .word 0x022404C4 +_022313A0: .word 0x020C8D4C +_022313A4: .word 0x022404DC +_022313A8: .word 0x020C9550 +_022313AC: .word 0x022404F4 +_022313B0: .word 0x020C908C +_022313B4: .word 0x04001008 +_022313B8: .word 0x0400100A +_022313BC: .word 0x04000008 +_022313C0: .word 0x0400000A +_022313C4: .word 0x0400000C + + arm_func_start MOD13_022313C8 +MOD13_022313C8: ; 0x022313C8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231454 ; =0x02243128 + mov r1, #0 + strb r1, [r0] + bl MOD13_02231304 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _02231408 + mov r0, #0x31 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_02231408: + mov r0, #2 + bl MOD13_0221F124 + ldr r0, [sp] + cmp r0, #0 + bne _02231420 + bl MOD13_0221F4AC +_02231420: + mov r0, #0x2c + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + bl MOD13_0223126C + mov r0, #0 + bl MOD13_0221F6E0 + mov r0, #0xc + bl MOD13_0223424C + ldr r0, _02231458 ; =MOD13_022311F8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231454: .word 0x02243128 +_02231458: .word MOD13_022311F8 + + arm_func_start MOD13_0223145C +MOD13_0223145C: ; 0x0223145C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022314D0 ; =0x0224312C + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0xb4 + addlo sp, sp, #4 + ldmloia sp!, {pc} + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + bl MOD13_02222F1C + cmp r0, #0 + beq _022314C0 + cmp r0, #1 + bne _022314C0 + ldr r0, [sp] + cmp r0, #0 + beq _022314C0 + ldr r0, _022314D4 ; =MOD13_02223CFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022314C0: + ldr r0, _022314D8 ; =MOD13_02231598 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022314D0: .word 0x0224312C +_022314D4: .word MOD13_02223CFC +_022314D8: .word MOD13_02231598 + + arm_func_start MOD13_022314DC +MOD13_022314DC: ; 0x022314DC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022343D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _02231580 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _02231590 ; =MOD13_0222DD4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02231580: + ldr r0, _02231594 ; =MOD13_022245B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231590: .word MOD13_0222DD4C +_02231594: .word MOD13_022245B4 + + arm_func_start MOD13_02231598 +MOD13_02231598: ; 0x02231598 + stmdb sp!, {lr} + sub sp, sp, #4 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + beq _022315BC + bl MOD13_02234908 +_022315BC: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022315F4 ; =MOD13_022314DC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022315F4: .word MOD13_022314DC + + arm_func_start MOD13_022315F8 +MOD13_022315F8: ; 0x022315F8 + bx lr + + arm_func_start MOD13_022315FC +MOD13_022315FC: ; 0x022315FC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223145C + bl MOD13_022315F8 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231640 ; =MOD13_022315FC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231640: .word MOD13_022315FC + + arm_func_start MOD13_02231644 +MOD13_02231644: ; 0x02231644 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0223167C ; =0x02231614 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223167C: .word 0x02231614 + + arm_func_start MOD13_02231680 +MOD13_02231680: ; 0x02231680 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022316EC ; =0x02240508 + ldr r1, _022316F0 ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _022316F4 ; =0x04001008 + ldr r3, _022316F8 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _022316FC ; =0x0400000A + ldr r1, _02231700 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022316EC: .word 0x02240508 +_022316F0: .word 0x020C908C +_022316F4: .word 0x04001008 +_022316F8: .word 0x0400100A +_022316FC: .word 0x0400000A +_02231700: .word 0x0400000C + + arm_func_start MOD13_02231704 +MOD13_02231704: ; 0x02231704 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231734 ; =0x0224312C + mov r1, #0 + strb r1, [r0] + bl MOD13_02231680 + mov r0, #0x2d + bl MOD13_0221F070 + ldr r0, _02231738 ; =MOD13_02231644 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231734: .word 0x0224312C +_02231738: .word MOD13_02231644 + + arm_func_start MOD13_0223173C +MOD13_0223173C: ; 0x0223173C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231780 ; =MOD13_022313C8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231780: .word MOD13_022313C8 + + arm_func_start MOD13_02231784 +MOD13_02231784: ; 0x02231784 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022317C0 ; =MOD13_0223173C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022317C0: .word MOD13_0223173C + + arm_func_start MOD13_022317C4 +MOD13_022317C4: ; 0x022317C4 + bx lr + + arm_func_start MOD13_022317C8 +MOD13_022317C8: ; 0x022317C8 + bx lr + + arm_func_start MOD13_022317CC +MOD13_022317CC: ; 0x022317CC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022317C8 + bl MOD13_022317C4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02231810 ; =MOD13_02231784 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231810: .word MOD13_02231784 + + arm_func_start MOD13_02231814 +MOD13_02231814: ; 0x02231814 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r0, _02231894 ; =0x0223F580 + add r3, sp, #8 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {pc} + add r1, sp, #4 + mov r0, #0 + bl MOD13_02222F44 + mov r0, #0 + str r0, [sp] + mov r1, #1 + ldr r3, [sp, #4] + add r0, sp, #8 + ldr r0, [r0, r3, lsl #2] + mov r2, r1 + mvn r3, #0 + bl MOD13_02235EFC + ldr r0, _02231898 ; =MOD13_022317CC + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_02231894: .word 0x0223F580 +_02231898: .word MOD13_022317CC + + arm_func_start MOD13_0223189C +MOD13_0223189C: ; 0x0223189C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _022318F4 ; =MOD13_02231814 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022318F4: .word MOD13_02231814 + + arm_func_start MOD13_022318F8 +MOD13_022318F8: ; 0x022318F8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231964 ; =0x0224051C + ldr r1, _02231968 ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _0223196C ; =0x04001008 + ldr r3, _02231970 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _02231974 ; =0x0400000A + ldr r1, _02231978 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231964: .word 0x0224051C +_02231968: .word 0x020C908C +_0223196C: .word 0x04001008 +_02231970: .word 0x0400100A +_02231974: .word 0x0400000A +_02231978: .word 0x0400000C + + arm_func_start MOD13_0223197C +MOD13_0223197C: ; 0x0223197C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02233570 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + bl MOD13_022318F8 + mov r0, #0x31 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + ldr r0, [sp] + cmp r0, #2 + beq _022319B8 + bl MOD13_0221F4AC +_022319B8: + ldr r0, [sp] + cmp r0, #1 + bne _022319C8 + bl MOD13_02233B3C +_022319C8: + ldr r0, _022319D8 ; =MOD13_0223189C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022319D8: .word MOD13_0223189C + + arm_func_start MOD13_022319DC +MOD13_022319DC: ; 0x022319DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231A14 ; =0x02243130 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _02231A18 ; =MOD13_02231A9C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231A14: .word 0x02243130 +_02231A18: .word MOD13_02231A9C + + arm_func_start MOD13_02231A1C +MOD13_02231A1C: ; 0x02231A1C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #2 + bl MOD13_02222F6C + ldr r0, _02231A98 ; =MOD13_0223197C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231A98: .word MOD13_0223197C + + arm_func_start MOD13_02231A9C +MOD13_02231A9C: ; 0x02231A9C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02231ADC ; =MOD13_02231A1C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231ADC: .word MOD13_02231A1C + + arm_func_start MOD13_02231AE0 +MOD13_02231AE0: ; 0x02231AE0 + bx lr + + arm_func_start MOD13_02231AE4 +MOD13_02231AE4: ; 0x02231AE4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022319DC + bl MOD13_02231AE0 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231B28 ; =MOD13_02231AE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231B28: .word MOD13_02231AE4 + + arm_func_start MOD13_02231B2C +MOD13_02231B2C: ; 0x02231B2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02231B64 ; =0x02231AFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231B64: .word 0x02231AFC + + arm_func_start MOD13_02231B68 +MOD13_02231B68: ; 0x02231B68 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231BE8 ; =0x02240530 + ldr r1, _02231BEC ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02231BF0 ; =0x04001008 + ldr ip, _02231BF4 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02231BF8 ; =0x04000008 + ldr r2, _02231BFC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02231C00 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231BE8: .word 0x02240530 +_02231BEC: .word 0x020C908C +_02231BF0: .word 0x04001008 +_02231BF4: .word 0x0400100A +_02231BF8: .word 0x04000008 +_02231BFC: .word 0x0400000A +_02231C00: .word 0x0400000C + + arm_func_start MOD13_02231C04 +MOD13_02231C04: ; 0x02231C04 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231C44 ; =0x02243130 + mov r1, #0 + strb r1, [r0] + bl MOD13_02231B68 + mov r0, #8 + bl MOD13_0221F4CC + mov r0, #0x29 + bl MOD13_0221F070 + mov r0, #0x10 + bl MOD13_0223424C + ldr r0, _02231C48 ; =MOD13_02231B2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231C44: .word 0x02243130 +_02231C48: .word MOD13_02231B2C + + arm_func_start MOD13_02231C4C +MOD13_02231C4C: ; 0x02231C4C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231D18 ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231C8C + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02231C8C: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02231D18 ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231CC4 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02231CC4: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02231D18 ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231CFC + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231D1C ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02231CFC: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231D20 ; =MOD13_0223269C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231D18: .word 0x02243134 +_02231D1C: .word MOD13_02230714 +_02231D20: .word MOD13_0223269C + + arm_func_start MOD13_02231D24 +MOD13_02231D24: ; 0x02231D24 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _02231D8C ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231D68 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02231D68: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02231D90 ; =MOD13_02231C4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231D8C: .word 0x02243134 +_02231D90: .word MOD13_02231C4C + + arm_func_start MOD13_02231D94 +MOD13_02231D94: ; 0x02231D94 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02231DB8 ; =MOD13_02231D24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231DB8: .word MOD13_02231D24 + + arm_func_start MOD13_02231DBC +MOD13_02231DBC: ; 0x02231DBC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02231DE0 + cmp r0, #1 + beq _02231DEC + add sp, sp, #4 + ldmia sp!, {pc} +_02231DE0: + mov r0, #7 + bl MOD13_0223424C + b _02231E00 +_02231DEC: + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02231E10 ; =0x02243134 + mov r1, #1 + strb r1, [r0] +_02231E00: + ldr r0, _02231E14 ; =MOD13_02231D94 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231E10: .word 0x02243134 +_02231E14: .word MOD13_02231D94 + + arm_func_start MOD13_02231E18 +MOD13_02231E18: ; 0x02231E18 + bx lr + + arm_func_start MOD13_02231E1C +MOD13_02231E1C: ; 0x02231E1C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02231E3C + mov r0, #1 + bl MOD13_0221ECF4 +_02231E3C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02231E1C + bl MOD13_02231E18 + bl MOD13_02231DBC + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02231EAC ; =0x02231E60 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231EAC: .word 0x02231E60 + + arm_func_start MOD13_02231EB0 +MOD13_02231EB0: ; 0x02231EB0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0221F0EC + ldr r0, _02231EF8 ; =0x02231E7C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231EF8: .word 0x02231E7C + + arm_func_start MOD13_02231EFC +MOD13_02231EFC: ; 0x02231EFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02231F54 ; =MOD13_02231EB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231F54: .word MOD13_02231EB0 + + arm_func_start MOD13_02231F58 +MOD13_02231F58: ; 0x02231F58 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231FF0 ; =0x02240544 + ldr r1, _02231FF4 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02231FF8 ; =0x0224055C + ldr r1, _02231FFC ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02232000 ; =0x02240574 + ldr r1, _02232004 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02232008 ; =0x04001008 + ldr ip, _0223200C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02232010 ; =0x04000008 + ldr r2, _02232014 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02232018 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231FF0: .word 0x02240544 +_02231FF4: .word 0x020C8D4C +_02231FF8: .word 0x0224055C +_02231FFC: .word 0x020C9550 +_02232000: .word 0x02240574 +_02232004: .word 0x020C908C +_02232008: .word 0x04001008 +_0223200C: .word 0x0400100A +_02232010: .word 0x04000008 +_02232014: .word 0x0400000A +_02232018: .word 0x0400000C + + arm_func_start MOD13_0223201C +MOD13_0223201C: ; 0x0223201C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223206C ; =0x02243134 + mov r1, #0 + strb r1, [r0] + bl MOD13_02231F58 + mov r0, #8 + bl MOD13_0221F4CC + mov r0, #0x38 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #1 + bl MOD13_0221F124 + mov r0, #0x27 + bl MOD13_0221F070 + ldr r0, _02232070 ; =MOD13_02231EFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223206C: .word 0x02243134 +_02232070: .word MOD13_02231EFC + + arm_func_start MOD13_02232074 +MOD13_02232074: ; 0x02232074 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022320DC ; =0x02243138 + ldrb r0, [r0] + cmp r0, #1 + bne _022320AC + ldr r0, _022320E0 ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022320AC: + mov r0, #0xb + bl MOD13_0223424C + bl MOD13_0221EC9C + ldr r1, _022320DC ; =0x02243138 + mov r2, #0 + ldr r0, _022320E4 ; =MOD13_022321B8 + strb r2, [r1] + bl MOD13_022353A4 + ldr r0, _022320E8 ; =0x02232514 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022320DC: .word 0x02243138 +_022320E0: .word MOD13_02232444 +_022320E4: .word MOD13_022321B8 +_022320E8: .word 0x02232514 + + arm_func_start MOD13_022320EC +MOD13_022320EC: ; 0x022320EC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + beq _02232124 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _0223214C ; =0x02243138 + mov r2, #3 + mov r0, #6 + strb r2, [r1] + bl MOD13_0223424C + b _02232138 +_02232124: + ldr r1, _0223214C ; =0x02243138 + mov r2, #1 + mov r0, #7 + strb r2, [r1] + bl MOD13_0223424C +_02232138: + bl MOD13_02235EB0 + ldr r0, _02232150 ; =MOD13_02232074 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223214C: .word 0x02243138 +_02232150: .word MOD13_02232074 + + arm_func_start MOD13_02232154 +MOD13_02232154: ; 0x02232154 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0223217C ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223217C: .word MOD13_02232444 + + arm_func_start MOD13_02232180 +MOD13_02232180: ; 0x02232180 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _022321B4 ; =MOD13_02232154 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022321B4: .word MOD13_02232154 + + arm_func_start MOD13_022321B8 +MOD13_022321B8: ; 0x022321B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _022322AC ; =0x02243138 + ldrb r2, [r1] + cmp r2, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022322A4 +_022321E0: ; jump table + b _022321F0 ; case 0 + b _02232234 ; case 1 + b _02232250 ; case 2 + b _02232288 ; case 3 +_022321F0: + mov r0, #3 + strb r0, [r1] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0x10 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _022322B0 ; =MOD13_02232180 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02232234: + mov r0, #1 + strb r0, [r1] + bl MOD13_022341E8 + ldr r0, _022322B4 ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02232250: + bl MOD13_022341E8 + mov r0, #0 + bl MOD13_022353A4 + mov r1, #0 + mov r0, #0x11 + mov r2, #1 + mvn r3, #0 + str r1, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _022322B8 ; =MOD13_022320EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02232288: + mov r0, #2 + strb r0, [r1] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022322B4 ; =MOD13_02232444 + bl MOD13_02222FBC +_022322A4: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022322AC: .word 0x02243138 +_022322B0: .word MOD13_02232180 +_022322B4: .word MOD13_02232444 +_022322B8: .word MOD13_022320EC + + arm_func_start MOD13_022322BC +MOD13_022322BC: ; 0x022322BC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022323BC ; =0x02243138 + ldrb r0, [r0] + cmp r0, #2 + bne _022322FC + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_022322FC: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_022353BC + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _022323BC ; =0x02243138 + ldrb r0, [r0] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _02232344 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02232344: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _022323BC ; =0x02243138 + ldrb r0, [r0] + cmp r0, #2 + bne _0223237C + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022323C0 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0223237C: + cmp r0, #3 + bne _022323A0 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022323C4 ; =MOD13_0223201C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022323A0: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _022323C8 ; =MOD13_02231C04 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022323BC: .word 0x02243138 +_022323C0: .word MOD13_02230714 +_022323C4: .word MOD13_0223201C +_022323C8: .word MOD13_02231C04 + + arm_func_start MOD13_022323CC +MOD13_022323CC: ; 0x022323CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _0223243C ; =0x02243138 + ldrb r0, [r0] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _02232418 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02232418: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02232440 ; =MOD13_022322BC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223243C: .word 0x02243138 +_02232440: .word MOD13_022322BC + + arm_func_start MOD13_02232444 +MOD13_02232444: ; 0x02232444 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02232468 ; =MOD13_022323CC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232468: .word MOD13_022323CC + + arm_func_start MOD13_0223246C +MOD13_0223246C: ; 0x0223246C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022324C0 ; =0x02243138 + ldrb r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022324C0 ; =0x02243138 + mov r1, #2 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022324C4 ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022324C0: .word 0x02243138 +_022324C4: .word MOD13_02232444 + + arm_func_start MOD13_022324C8 +MOD13_022324C8: ; 0x022324C8 + bx lr + + arm_func_start MOD13_022324CC +MOD13_022324CC: ; 0x022324CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022324F4 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_022324F4: + bl MOD13_02232730 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022324CC + bl MOD13_022324C8 + bl MOD13_0223246C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02232560 ; =0x02232514 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232560: .word 0x02232514 + + arm_func_start MOD13_02232564 +MOD13_02232564: ; 0x02232564 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_0221F0EC + ldr r0, _02232598 ; =0x02232530 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232598: .word 0x02232530 + + arm_func_start MOD13_0223259C +MOD13_0223259C: ; 0x0223259C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _022325D4 ; =MOD13_02232564 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022325D4: .word MOD13_02232564 + + arm_func_start MOD13_022325D8 +MOD13_022325D8: ; 0x022325D8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02232670 ; =0x02240588 + ldr r1, _02232674 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02232678 ; =0x022405A0 + ldr r1, _0223267C ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02232680 ; =0x022405B8 + ldr r1, _02232684 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02232688 ; =0x04001008 + ldr ip, _0223268C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02232690 ; =0x04000008 + ldr r2, _02232694 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02232698 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232670: .word 0x02240588 +_02232674: .word 0x020C8D4C +_02232678: .word 0x022405A0 +_0223267C: .word 0x020C9550 +_02232680: .word 0x022405B8 +_02232684: .word 0x020C908C +_02232688: .word 0x04001008 +_0223268C: .word 0x0400100A +_02232690: .word 0x04000008 +_02232694: .word 0x0400000A +_02232698: .word 0x0400000C + + arm_func_start MOD13_0223269C +MOD13_0223269C: ; 0x0223269C + stmdb sp!, {lr} + sub sp, sp, #0x6c + ldr r0, _02232724 ; =0x02243138 + mov r1, #0 + strb r1, [r0] + bl MOD13_022325D8 + mov r0, #8 + bl MOD13_0221F4CC + mov r0, #2 + bl MOD13_0221F124 + add r0, sp, #0x16 + bl OS_GetOwnerInfo + add r1, sp, #0 + mov r0, #0 + mov r2, #0x16 + bl MIi_CpuClear16 + ldrh r2, [sp, #0x2e] + add r0, sp, #0x1a + add r1, sp, #0 + mov r2, r2, lsl #1 + bl MIi_CpuCopy16 + add r0, sp, #0 + mov r1, #0x28 + bl MOD13_0221EFA8 + mov r0, #0 + bl MOD13_0221E694 + ldr r0, _02232728 ; =MOD13_022321B8 + bl MOD13_022354F4 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _0223272C ; =MOD13_0223259C + bl MOD13_02222FBC + add sp, sp, #0x6c + ldmia sp!, {pc} + .align 2, 0 +_02232724: .word 0x02243138 +_02232728: .word MOD13_022321B8 +_0223272C: .word MOD13_0223259C + + arm_func_start MOD13_02232730 +MOD13_02232730: ; 0x02232730 + ldr r0, _0223274C ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0223274C: .word 0x027FFFA8 + + arm_func_start MOD13_02232750 +MOD13_02232750: ; 0x02232750 + stmdb sp!, {r4, lr} + ldr r1, _0223277C ; =0x02243140 + mov r4, r0 + ldr r0, [r1] + mov r1, #0x5000000 + mov r2, #0x200 + bl MIi_CpuCopy16 + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223277C: .word 0x02243140 + + arm_func_start MOD13_02232780 +MOD13_02232780: ; 0x02232780 + ldr r2, _022327A0 ; =0x02243140 + ldr ip, _022327A4 ; =MOD13_0223C1C4 + str r0, [r2] + ldr r1, _022327A8 ; =MOD13_02232750 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bx ip + .align 2, 0 +_022327A0: .word 0x02243140 +_022327A4: .word MOD13_0223C1C4 +_022327A8: .word MOD13_02232750 + + arm_func_start MOD13_022327AC +MOD13_022327AC: ; 0x022327AC + stmdb sp!, {r4, lr} + ldr r1, _022327D8 ; =0x02243140 + mov r4, r0 + ldr r0, [r1] + ldr r1, [r1, #4] + mov r2, #0x20 + bl MIi_CpuCopy16 + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_022327D8: .word 0x02243140 + + arm_func_start MOD13_022327DC +MOD13_022327DC: ; 0x022327DC + stmdb sp!, {r4, lr} + add r4, r0, r1, lsl #5 + mov r0, r2, lsl #5 + ldr ip, _02232810 ; =0x02243140 + add lr, r0, #0x5000000 + ldr r1, _02232814 ; =MOD13_022327AC + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + str r4, [ip] + str lr, [ip, #4] + bl MOD13_0223C1C4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02232810: .word 0x02243140 +_02232814: .word MOD13_022327AC + + arm_func_start MOD13_02232818 +MOD13_02232818: ; 0x02232818 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02232874 ; =0x0224313C + ldr r1, [r0] + ldrb r0, [r1, #0x604] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + add r0, r1, #4 + mov r1, #0x600 + bl DC_FlushRange + ldr r0, _02232874 ; =0x0224313C + mov r1, #0 + ldr r0, [r0] + mov r2, #0x600 + add r0, r0, #4 + bl GX_LoadBG2Scr + ldr r0, _02232874 ; =0x0224313C + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x604] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232874: .word 0x0224313C + + arm_func_start MOD13_02232878 +MOD13_02232878: ; 0x02232878 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr ip, _022328CC ; =0x0224313C + mov r7, r3 + ldr r3, [ip] + mov r8, r0 + add r0, r3, #4 + add r6, r0, r1, lsl #1 + mov r5, #0 + cmp r7, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, r2, lsl #1 +_022328A4: + mov r0, r8 + mov r1, r6 + mov r2, r4 + bl MIi_CpuCopy16 + add r5, r5, #1 + cmp r5, r7 + add r8, r8, #0x40 + add r6, r6, #0x40 + blt _022328A4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022328CC: .word 0x0224313C + + arm_func_start MOD13_022328D0 +MOD13_022328D0: ; 0x022328D0 + ldr r0, _022328E4 ; =0x0224313C + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x604] + bx lr + .align 2, 0 +_022328E4: .word 0x0224313C + + arm_func_start MOD13_022328E8 +MOD13_022328E8: ; 0x022328E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02232914 ; =0x0224313C + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1] + bl MOD13_0223C104 + ldr r0, _02232914 ; =0x0224313C + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232914: .word 0x0224313C + + arm_func_start MOD13_02232918 +MOD13_02232918: ; 0x02232918 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0223296C ; =0x00000608 + mov r1, #4 + bl MOD13_0223AFE0 + mov ip, r0 + ldr r3, _02232970 ; =0x0224313C + mov r0, r4 + add r1, ip, #4 + mov r2, #0x600 + str ip, [r3] + bl MIi_CpuCopyFast + ldr r1, _02232974 ; =MOD13_02232818 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02232970 ; =0x0224313C + ldr r1, [r1] + str r0, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_0223296C: .word 0x00000608 +_02232970: .word 0x0224313C +_02232974: .word MOD13_02232818 + + arm_func_start MOD13_02232978 +MOD13_02232978: ; 0x02232978 + stmdb sp!, {r4, lr} + ldr r1, _022329B0 ; =0x02243148 + mov r4, r0 + ldr r0, [r1] + mvn r1, #0 + ldrh r3, [r0, #0x12] + ldrh r2, [r0, #0x10] + ldr r0, [r0] + add r3, r4, r3 + bl MOD13_02239888 + ldr r0, _022329B0 ; =0x02243148 + ldr r0, [r0] + strb r4, [r0, #0x1a] + ldmia sp!, {r4, pc} + .align 2, 0 +_022329B0: .word 0x02243148 + + arm_func_start MOD13_022329B4 +MOD13_022329B4: ; 0x022329B4 + ldr r2, _02232A8C ; =0x02243148 + cmp r0, #4 + ldr r3, [r2] + ldrh r3, [r3, #0x10] + strh r3, [r1] + ldrh r3, [r1] + add r3, r3, #0xc + strh r3, [r1, #4] + addls pc, pc, r0, lsl #2 + bx lr +_022329DC: ; jump table + bx lr ; case 0 + b _022329F0 ; case 1 + b _02232A24 ; case 2 + b _02232A44 ; case 3 + b _02232A68 ; case 4 +_022329F0: + ldr r3, [r2] + ldr r0, _02232A90 ; =0x0223F590 + ldrh ip, [r3, #0x12] + ldrb r3, [r3, #0x1a] + add r3, ip, r3 + strh r3, [r1, #2] + ldr r2, [r2] + ldrh r3, [r1, #2] + ldrb r2, [r2, #0x1b] + ldrb r0, [r0, r2] + add r0, r3, r0 + strh r0, [r1, #6] + bx lr +_02232A24: + ldr r0, [r2] + ldrh r0, [r0, #0x12] + sub r0, r0, #0xd + strh r0, [r1, #2] + ldr r0, [r2] + ldrh r0, [r0, #0x12] + strh r0, [r1, #6] + bx lr +_02232A44: + ldr r0, [r2] + ldrh r2, [r0, #0x12] + ldrb r0, [r0, #0x19] + add r0, r2, r0 + strh r0, [r1, #2] + ldrh r0, [r1, #2] + add r0, r0, #0xd + strh r0, [r1, #6] + bx lr +_02232A68: + ldr r0, [r2] + ldrh r0, [r0, #0x12] + strh r0, [r1, #2] + ldr r0, [r2] + ldrh r2, [r1, #2] + ldrb r0, [r0, #0x19] + add r0, r2, r0 + strh r0, [r1, #6] + bx lr + .align 2, 0 +_02232A8C: .word 0x02243148 +_02232A90: .word 0x0223F590 + + arm_func_start MOD13_02232A94 +MOD13_02232A94: ; 0x02232A94 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, #2 + add r4, sp, #0 +_02232AA4: + mov r0, r5 + mov r1, r4 + bl MOD13_022329B4 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, r5 + ldmneia sp!, {r4, r5, pc} + add r5, r5, #1 + cmp r5, #3 + ble _02232AA4 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_02232AE0 +MOD13_02232AE0: ; 0x02232AE0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + add r1, sp, #0 + mov r0, #1 + bl MOD13_022329B4 + add r0, sp, #0 + bl MOD13_0223B248 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + mov r5, #2 + add r4, sp, #0 +_02232B14: + mov r0, r5 + mov r1, r4 + bl MOD13_022329B4 + mov r0, r4 + bl MOD13_0223B248 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, r5 + ldmneia sp!, {r4, r5, pc} + add r5, r5, #1 + cmp r5, #3 + ble _02232B14 + add r1, sp, #0 + mov r0, #4 + bl MOD13_022329B4 + add r0, sp, #0 + bl MOD13_0223B2B4 + cmp r0, #0 + movne r0, #4 + moveq r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_02232B6C +MOD13_02232B6C: ; 0x02232B6C + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #0 + bl MOD13_0223B14C + ldr r0, _02232BD8 ; =0x02243148 + ldr r2, _02232BDC ; =0x0223F590 + ldr ip, [r0] + ldrh r1, [sp, #2] + ldrb r3, [ip, #0x1b] + ldrh r0, [ip, #0x12] + ldrb r2, [r2, r3] + sub r1, r1, r0 + mov r0, r2, lsr #1 + subs r0, r1, r0 + movmi r0, #0 + bmi _02232BBC + ldrb r1, [ip, #0x19] + sub r1, r1, r2 + cmp r0, r1 + movge r0, r1 +_02232BBC: + bl MOD13_02232978 + ldr r0, _02232BD8 ; =0x02243148 + mov r1, #3 + ldr r0, [r0] + strb r1, [r0, #0x1d] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232BD8: .word 0x02243148 +_02232BDC: .word 0x0223F590 + + arm_func_start MOD13_02232BE0 +MOD13_02232BE0: ; 0x02232BE0 + ldr r1, _02232C08 ; =0x02243148 + cmp r0, #2 + ldr r1, [r1] + strb r0, [r1, #0x1c] + ldr r0, _02232C08 ; =0x02243148 + moveq r1, #4 + ldr r0, [r0] + movne r1, #6 + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 +_02232C08: .word 0x02243148 + + arm_func_start MOD13_02232C0C +MOD13_02232C0C: ; 0x02232C0C + stmdb sp!, {r4, lr} + ldr r1, _02232C80 ; =0x02243148 + ldr r1, [r1] + ldrb r1, [r1, #0x1a] + subs r4, r1, r0 + rsbmi r4, r4, #0 + cmp r4, #2 + movlt r0, #0 + blt _02232C48 + cmp r4, #6 + movge r0, #0x7f + bge _02232C48 + rsb r1, r4, #6 + mov r0, #0x7f + bl FX_DivS32 +_02232C48: + bl MOD13_0223422C + cmp r4, #2 + mvnlt r1, #0xff + blt _02232C74 + cmp r4, #6 + movge r1, #0x100 + bge _02232C74 + rsb r1, r4, #6 + mov r0, #0x200 + bl FX_DivS32 + sub r1, r0, #0x100 +_02232C74: + ldr r0, _02232C84 ; =0x0000FFFF + bl MOD13_02234208 + ldmia sp!, {r4, pc} + .align 2, 0 +_02232C80: .word 0x02243148 +_02232C84: .word 0x0000FFFF + + arm_func_start MOD13_02232C88 +MOD13_02232C88: ; 0x02232C88 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _02232D4C ; =0x0223F75C + bl MOD13_0223B320 + cmp r0, #0 + beq _02232D24 + add r0, sp, #0 + bl MOD13_0223B14C + ldr r0, _02232D50 ; =0x02243148 + ldrh r1, [sp] + ldr r3, [r0] + ldrh r0, [r3, #0x10] + sub r0, r0, #0x1e + cmp r1, r0 + blt _02232D24 + ldrh r1, [sp, #2] + ldrh r0, [r3, #0x16] + ldrb r2, [r3, #0x18] + sub r0, r1, r0 + adds r4, r2, r0 + movmi r4, #0 + bmi _02232CFC + ldrb r1, [r3, #0x1b] + ldr r0, _02232D54 ; =0x0223F590 + ldrb r2, [r3, #0x19] + ldrb r0, [r0, r1] + sub r0, r2, r0 + cmp r4, r0 + movge r4, r0 +_02232CFC: + mov r0, r4 + bl MOD13_02232C0C + mov r0, r4 + bl MOD13_02232978 + ldr r0, _02232D50 ; =0x02243148 + mov r1, #2 + ldr r0, [r0] + add sp, sp, #8 + strb r1, [r0, #0x1d] + ldmia sp!, {r4, pc} +_02232D24: + bl MOD13_022341E8 + ldr r0, _02232D50 ; =0x02243148 + mov r3, #0 + ldr r2, [r0] + mov r1, #3 + strb r3, [r2, #0x1c] + ldr r0, [r0] + strb r1, [r0, #0x1d] + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02232D4C: .word 0x0223F75C +_02232D50: .word 0x02243148 +_02232D54: .word 0x0223F590 + + arm_func_start MOD13_02232D58 +MOD13_02232D58: ; 0x02232D58 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02232F10 ; =0x02243148 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x1d] + ldr r1, [r0] + ldrb r0, [r1, #0x1c] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02232F08 +_02232D84: ; jump table + b _02232D94 ; case 0 + b _02232E5C ; case 1 + b _02232E68 ; case 2 + b _02232EBC ; case 3 +_02232D94: + ldrb r0, [r1, #0x1e] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02232AE0 + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _02232F08 +_02232DB4: ; jump table + b _02232F08 ; case 0 + b _02232DC8 ; case 1 + b _02232E30 ; case 2 + b _02232E40 ; case 3 + b _02232E50 ; case 4 +_02232DC8: + ldr r0, _02232F10 ; =0x02243148 + ldr r0, [r0] + ldrb r0, [r0, #0x1b] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0x16 + bl MOD13_0223424C + mov r0, #0 + bl MOD13_0223422C + ldr r0, _02232F10 ; =0x02243148 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x1d] + ldr r0, [r0] + add r0, r0, #0x14 + bl MOD13_0223B14C + ldr r0, _02232F10 ; =0x02243148 + mov r1, #1 + ldr r3, [r0] + add sp, sp, #4 + ldrb r2, [r3, #0x1a] + strb r2, [r3, #0x18] + ldr r0, [r0] + strb r1, [r0, #0x1c] + ldmia sp!, {pc} +_02232E30: + mov r0, #2 + bl MOD13_02232BE0 + add sp, sp, #4 + ldmia sp!, {pc} +_02232E40: + mov r0, #3 + bl MOD13_02232BE0 + add sp, sp, #4 + ldmia sp!, {pc} +_02232E50: + bl MOD13_02232B6C + add sp, sp, #4 + ldmia sp!, {pc} +_02232E5C: + bl MOD13_02232C88 + add sp, sp, #4 + ldmia sp!, {pc} +_02232E68: + mov r0, #2 + bl MOD13_02232A94 + cmp r0, #2 + beq _02232E9C + ldr r0, _02232F10 ; =0x02243148 + mov r3, #5 + ldr r2, [r0] + mov r1, #0 + strb r3, [r2, #0x1d] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x1c] + ldmia sp!, {pc} +_02232E9C: + bl MOD13_02232AE0 + cmp r0, #2 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_02232BE0 + add sp, sp, #4 + ldmia sp!, {pc} +_02232EBC: + mov r0, #3 + bl MOD13_02232A94 + cmp r0, #3 + beq _02232EF0 + ldr r0, _02232F10 ; =0x02243148 + mov r3, #7 + ldr r2, [r0] + mov r1, #0 + strb r3, [r2, #0x1d] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x1c] + ldmia sp!, {pc} +_02232EF0: + bl MOD13_02232AE0 + cmp r0, #3 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_02232BE0 +_02232F08: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232F10: .word 0x02243148 + + arm_func_start MOD13_02232F14 +MOD13_02232F14: ; 0x02232F14 + ldr r0, _02232F28 ; =0x02243148 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x1e] + bx lr + .align 2, 0 +_02232F28: .word 0x02243148 + + arm_func_start MOD13_02232F2C +MOD13_02232F2C: ; 0x02232F2C + ldr r0, _02232F40 ; =0x02243148 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x1e] + bx lr + .align 2, 0 +_02232F40: .word 0x02243148 + + arm_func_start MOD13_02232F44 +MOD13_02232F44: ; 0x02232F44 + ldr ip, _02232F4C ; =MOD13_02232978 + bx ip + .align 2, 0 +_02232F4C: .word MOD13_02232978 + + arm_func_start MOD13_02232F50 +MOD13_02232F50: ; 0x02232F50 + ldr r0, _02232F60 ; =0x02243148 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + bx lr + .align 2, 0 +_02232F60: .word 0x02243148 + + arm_func_start MOD13_02232F64 +MOD13_02232F64: ; 0x02232F64 + ldr r0, _02232F74 ; =0x02243148 + ldr r0, [r0] + ldrb r0, [r0, #0x1a] + bx lr + .align 2, 0 +_02232F74: .word 0x02243148 + + arm_func_start MOD13_02232F78 +MOD13_02232F78: ; 0x02232F78 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02232FB4 ; =0x02243148 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0xc] + bl MOD13_0223C104 + ldr r0, _02232FB4 ; =0x02243148 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_02239AE8 + ldr r0, _02232FB4 ; =0x02243148 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232FB4: .word 0x02243148 + + arm_func_start MOD13_02232FB8 +MOD13_02232FB8: ; 0x02232FB8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r0 + mov r7, r1 + mov r0, #0x20 + mov r1, #4 + mov r5, r2 + mov r4, r3 + bl MOD13_0223AFE0 + ldr r2, _0223308C ; =0x02243148 + ldr ip, [sp, #0x18] + str r0, [r2] + strb r6, [r0, #0x1b] + ldr r1, [r2] + mov r0, r5 + strb r7, [r1, #0x19] + ldr r3, [r2] + mov r1, r4 + strb ip, [r3, #0x1a] + ldr r2, [r2] + add r2, r2, #0x10 + bl MOD13_0223ABC0 + ldr r1, _02233090 ; =0x0223F58C + mov r0, #0 + ldrb r1, [r1, r6] + mov r2, #1 + bl MOD13_02239E0C + mov r2, r5 + ldr r5, _0223308C ; =0x02243148 + ldr r3, [sp, #0x18] + ldr r6, [r5] + mvn r1, #0 + str r0, [r6] + ldr r0, [r5] + add r3, r4, r3 + ldr r0, [r0] + bl MOD13_02239888 + mov r0, r5 + ldr r0, [r0] + mvn r1, #0 + ldr r0, [r0] + mov r2, #1 + bl MOD13_02239814 + mov r0, #0 + ldr r1, _02233094 ; =MOD13_02232D58 + mov r2, r0 + mov r3, #0x80 + bl MOD13_0223C1C4 + mov r1, r5 + ldr r1, [r1] + str r0, [r1, #0xc] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223308C: .word 0x02243148 +_02233090: .word 0x0223F58C +_02233094: .word MOD13_02232D58 + + arm_func_start MOD13_02233098 +MOD13_02233098: ; 0x02233098 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xac + ldr r1, _022332AC ; =0x0224314C + str r0, [sp] + ldr r2, [r1] + mov r1, #0x400 + add r0, r2, #0xf00 + add r2, r2, #0x1300 + str r2, [sp, #4] + bl DC_InvalidateRange + ldr r0, [sp] + ldrh r1, [r0, #0xe] + mov r0, #0 + str r0, [sp, #8] + cmp r1, #0 + addle sp, sp, #0xac + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x20] + str r0, [sp, #0x18] + mov r0, #0x20 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x24] + mov r0, #1 + ldr fp, _022332B0 ; =0x0223F598 + add r5, sp, #0x28 + mov r6, #6 + mov r4, #4 + str r0, [sp, #0x1c] +_02233114: + ldr r1, [sp] + ldr r0, [sp, #8] + add r0, r1, r0, lsl #2 + ldr sl, [r0, #0x10] + ldrb r0, [sl, #0xc] + cmp r0, #0 + beq _02233284 + ldrh r0, [sl, #0x3c] + cmp r0, #0 + bne _02233284 + ldr sb, [sp, #0xc] + ldr r8, [sp, #4] + add r7, sl, #4 +_02233148: + mov r0, r7 + add r1, r8, #0x20 + mov r2, r6 + bl memcmp + cmp r0, #0 + beq _02233170 + add r8, r8, #0x2a + add sb, sb, #1 + cmp sb, #0x14 + blt _02233148 +_02233170: + cmp sb, #0x14 + bne _022331B4 + ldr sb, [sp, #0x10] + ldr r7, [sp, #4] +_02233180: + add r0, r7, #0x20 + mov r1, fp + mov r2, r6 + bl memcmp + cmp r0, #0 + beq _022331A8 + add r7, r7, #0x2a + add sb, sb, #1 + cmp sb, #0x14 + blt _02233180 +_022331A8: + cmp sb, #0x14 + addeq sp, sp, #0xac + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022331B4: + ldr r0, [sp, #4] + mov r1, #0x2a + mla r7, sb, r1, r0 + add r0, sl, #4 + add r1, r7, #0x20 + mov r2, r6 + bl MI_CpuCopy8 + ldr r2, [sp, #0x14] + add r0, sl, #0xc + mov r1, r7 + bl MI_CpuCopy8 + ldr r1, [sp] + ldr r0, [sp, #8] + add r0, r1, r0, lsl #1 + ldrh r0, [r0, #0x50] + strh r0, [r7, #0x26] + ldrh r0, [sl, #0x2c] + ands r0, r0, #0x10 + ldreq r0, [sp, #0x18] + streqb r0, [r7, #0x28] + beq _02233284 + ldr r0, [sp, #0x1c] + mov r1, sl + strb r0, [r7, #0x28] + mov r0, r5 + bl WM_GetOtherElements + ldrb r8, [sp, #0x28] + ldr sb, [sp, #0x20] + cmp r8, #0 + ble _02233284 +_0223322C: + add r1, r5, sb, lsl #3 + ldrb r0, [r1, #4] + cmp r0, #0x30 + ldreq r0, [sp, #0x24] + streqb r0, [r7, #0x28] + beq _02233284 + cmp r0, #0xdd + bne _02233278 + ldrb r0, [r1, #5] + cmp r0, #4 + blo _02233278 + ldr r0, [r1, #8] + ldr r1, _022332B4 ; =0x0223F594 + mov r2, r4 + bl memcmp + cmp r0, #0 + ldreq r0, [sp, #0x24] + streqb r0, [r7, #0x28] + beq _02233284 +_02233278: + add sb, sb, #1 + cmp sb, r8 + blt _0223322C +_02233284: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + ldr r0, [sp] + ldrh r1, [r0, #0xe] + ldr r0, [sp, #8] + cmp r0, r1 + blt _02233114 + add sp, sp, #0xac + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022332AC: .word 0x0224314C +_022332B0: .word 0x0223F598 +_022332B4: .word 0x0223F594 + + arm_func_start MOD13_022332B8 +MOD13_022332B8: ; 0x022332B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r1, [r0, #2] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _02233338 ; =0x0224314C + ldr r1, [r1] + add r1, r1, #0x1000 + ldrb r1, [r1, #0xe4c] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r1, [r0] + cmp r1, #0x26 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r1, [r0, #8] + cmp r1, #4 + beq _02233320 + cmp r1, #5 + bne _0223332C + bl MOD13_02233098 + bl MOD13_0223344C + add sp, sp, #4 + ldmia sp!, {pc} +_02233320: + bl MOD13_0223344C + add sp, sp, #4 + ldmia sp!, {pc} +_0223332C: + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02233338: .word 0x0224314C + + arm_func_start MOD13_0223333C +MOD13_0223333C: ; 0x0223333C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02233394 ; =0x0224314C + mov r4, #0 + ldr r1, [r1] + mov r8, r4 + add r1, r1, #0x1300 + str r1, [r0] + ldr r7, [r0] + ldr r6, _02233398 ; =0x0223F598 + mov r5, #6 +_02233364: + mov r1, r6 + mov r2, r5 + add r0, r7, #0x20 + bl memcmp + cmp r0, #0 + add r8, r8, #1 + addne r4, r4, #1 + cmp r8, #0x14 + add r7, r7, #0x2a + blt _02233364 + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02233394: .word 0x0224314C +_02233398: .word 0x0223F598 + + arm_func_start MOD13_0223339C +MOD13_0223339C: ; 0x0223339C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02233440 ; =0x0224314C + mov r3, #1 + ldr r0, [r2] + ldr r1, _02233444 ; =0x0000168C + add r0, r0, #0x1000 + strb r3, [r0, #0xe4c] + ldr r0, [r2] + add r0, r0, r1 + bl WM_ReadStatus + ldr r0, _02233440 ; =0x0224314C + ldr r0, [r0] + add r0, r0, #0x1600 + ldrh r0, [r0, #0x8c] + cmp r0, #2 + beq _02233424 + ldr r0, _02233448 ; =MOD13_022332B8 + bl WM_Reset + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} +_022333F8: + ldr r1, _02233440 ; =0x0224314C + ldr r0, _02233444 ; =0x0000168C + ldr r1, [r1] + add r0, r1, r0 + bl WM_ReadStatus + ldr r0, _02233440 ; =0x0224314C + ldr r0, [r0] + add r0, r0, #0x1600 + ldrh r0, [r0, #0x8c] + cmp r0, #2 + bne _022333F8 +_02233424: + ldr r0, _02233448 ; =MOD13_022332B8 + bl WM_End + cmp r0, #2 + movne r0, #0 + moveq r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02233440: .word 0x0224314C +_02233444: .word 0x0000168C +_02233448: .word MOD13_022332B8 + + arm_func_start MOD13_0223344C +MOD13_0223344C: ; 0x0223344C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02233480 ; =0x0224314C + ldr r1, _02233484 ; =0x00001648 + ldr r2, [r0] + ldr r0, _02233488 ; =MOD13_022332B8 + add r1, r2, r1 + bl WM_StartScanEx + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02233480: .word 0x0224314C +_02233484: .word 0x00001648 +_02233488: .word MOD13_022332B8 + + arm_func_start MOD13_0223348C +MOD13_0223348C: ; 0x0223348C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _0223355C ; =0x0224314C + mov r0, #0 + ldr r1, [r1] + mov r2, #0x348 + add r1, r1, #0x1300 + bl MIi_CpuClear16 + ldr r0, _0223355C ; =0x0224314C + ldr r1, _02233560 ; =MOD13_022332B8 + ldr r0, [r0] + mov r2, #3 + bl WM_Initialize + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} +_022334D0: + ldr r1, _0223355C ; =0x0224314C + ldr r0, _02233564 ; =0x0000168C + ldr r1, [r1] + add r0, r1, r0 + bl WM_ReadStatus + ldr r0, _0223355C ; =0x0224314C + ldr r5, [r0] + add r0, r5, #0x1600 + ldrh r0, [r0, #0x8c] + cmp r0, #2 + bne _022334D0 + ldr r0, _02233568 ; =0x00001648 + ldr r4, _0223356C ; =0x0223F5A0 + add lr, r5, r0 + mov ip, #4 +_0223350C: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0223350C + ldr r0, [r4] + add r1, r5, #0xf00 + str r0, [lr] + add r0, r5, #0x1000 + str r1, [r0, #0x648] + bl WM_GetDispersionScanPeriod + ldr r1, _0223355C ; =0x0224314C + ldr r1, [r1] + add r1, r1, #0x1600 + strh r0, [r1, #0x50] + bl MOD13_0223344C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223355C: .word 0x0224314C +_02233560: .word MOD13_022332B8 +_02233564: .word 0x0000168C +_02233568: .word 0x00001648 +_0223356C: .word 0x0223F5A0 + + arm_func_start MOD13_02233570 +MOD13_02233570: ; 0x02233570 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022335A8 ; =0x0224314C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_0223358C: + bl WM_GetAllowedChannel + cmp r0, #0x8000 + bne _0223358C + ldr r0, _022335A8 ; =0x0224314C + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022335A8: .word 0x0224314C + + arm_func_start MOD13_022335AC +MOD13_022335AC: ; 0x022335AC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022335E4 ; =0x0224314C + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022335E8 ; =0x00001E60 + mov r1, #0x20 + bl MOD13_0223AFE0 + ldr r1, _022335E4 ; =0x0224314C + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022335E4: .word 0x0224314C +_022335E8: .word 0x00001E60 + + arm_func_start MOD13_022335EC +MOD13_022335EC: ; 0x022335EC + cmp r0, #0x39 + subls r0, r0, #0x30 + bxls lr + cmp r0, #0x46 + subls r0, r0, #0x37 + subhi r0, r0, #0x57 + bx lr + + arm_func_start MOD13_02233608 +MOD13_02233608: ; 0x02233608 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + mov sb, r1 + add r0, sp, #0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r8, #0 + mov r7, r8 + add r6, sp, #0 + mov fp, r8 + mov r4, #0x20 + mov r5, #3 +_02233640: + mov r1, r6 + mov r2, r5 + add r0, sl, r7 + bl MI_CpuCopy8 + mov r2, fp + mov r1, r6 +_02233658: + ldrb r0, [r1] + cmp r0, #0 + bne _02233674 + add r2, r2, #1 + cmp r2, #3 + strb r4, [r1], #1 + blt _02233658 +_02233674: + mov r0, r6 + bl atol + strb r0, [sb, r8] + add r8, r8, #1 + cmp r8, #4 + add r7, r7, #3 + blt _02233640 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start MOD13_02233698 +MOD13_02233698: ; 0x02233698 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + ldr r1, _02233800 ; =0x02243150 + mov r7, r0 + ldr r0, [r1] + mov r4, #0 + add r2, r0, r7, lsl #8 + ldrb r6, [r2, #0xe7] + mov r3, #1 + add r0, sp, #4 + mov r1, r4 + mov r2, #0x10 + mov r5, r3, lsl r7 + bl MI_CpuFill8 + add r0, sp, #4 + mov r2, #1 + str r2, [r0, r7, lsl #2] + cmp r7, #2 + bgt _02233778 + ldr r0, _02233800 ; =0x02243150 + ldr r0, [r0] + ldrb r1, [r0, #0xef] + ands r1, r1, r5 + movne r4, r2 + cmp r6, #0xff + bne _0223373C + cmp r4, #0 + beq _0223373C + ldrb r2, [r0, #0xef] + mvn r3, r5 + ldr r1, _02233800 ; =0x02243150 + and r2, r2, r3 + strb r2, [r0, #0xef] + ldr r2, [r1] + mov r0, #1 + ldrb r1, [r2, #0x1ef] + and r1, r1, r3 + strb r1, [r2, #0x1ef] + str r0, [sp, #8] + str r0, [sp, #4] + b _02233778 +_0223373C: + cmp r6, #0xff + beq _02233778 + cmp r4, #0 + bne _02233778 + ldrb r3, [r0, #0xef] + ldr r1, _02233800 ; =0x02243150 + mov r2, #1 + orr r3, r3, r5 + strb r3, [r0, #0xef] + ldr r1, [r1] + ldrb r0, [r1, #0x1ef] + orr r0, r0, r5 + strb r0, [r1, #0x1ef] + str r2, [sp, #8] + str r2, [sp, #4] +_02233778: + mov r7, #0 + mov r6, r7 + ldr sb, _02233800 ; =0x02243150 + add r5, sp, #4 + mov r4, #0xfe + ldr r8, _02233804 ; =0x000004F8 +_02233790: + ldr r0, [r5, r7, lsl #2] + cmp r0, #0 + beq _022337BC + ldr r1, [sb] + mov r2, r4 + add r0, r1, r8 + add r1, r1, r6 + bl MATH_CalcCRC16 + ldr r1, [sb] + add r1, r1, r7, lsl #8 + strh r0, [r1, #0xfe] +_022337BC: + add r7, r7, #1 + cmp r7, #4 + add r6, r6, #0x100 + blt _02233790 + mov r0, #0x100 + mov r1, #0x20 + bl MOD13_0223B004 + mov r2, r0 + ldr r0, _02233800 ; =0x02243150 + add r1, sp, #4 + ldr r0, [r0] + str r2, [sp] + bl FUN_02095CDC + add r0, sp, #0 + bl MOD13_0223AF90 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02233800: .word 0x02243150 +_02233804: .word 0x000004F8 + + arm_func_start MOD13_02233808 +MOD13_02233808: ; 0x02233808 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x18 + ldr r1, _022338B4 ; =0x02243150 + mov r0, #0 + ldr r1, [r1] + mov r2, #0x400 + bl MIi_CpuClear16 + mov r3, #0 + ldr r0, _022338B4 ; =0x02243150 + mov r2, #0xff +_02233830: + ldr r1, [r0] + add r1, r1, r3, lsl #8 + add r3, r3, #1 + strb r2, [r1, #0xe7] + cmp r3, #3 + blt _02233830 + add r0, sp, #0 + bl FUN_020967A4 + add r0, sp, #0 + bl FUN_02095330 + mov r6, #0 + ldr r4, _022338B4 ; =0x02243150 + mov r8, r0 + mov r7, r6 + mov r5, #0xe +_0223386C: + ldr r1, [r4] + mov r0, r8 + add r1, r1, r7 + mov r2, r5 + add r1, r1, #0xf0 + bl MI_CpuCopy8 + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #0x100 + blt _0223386C + mov r4, #0 +_02233898: + mov r0, r4 + bl MOD13_02233698 + add r4, r4, #1 + cmp r4, #4 + blt _02233898 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022338B4: .word 0x02243150 + + arm_func_start MOD13_022338B8 +MOD13_022338B8: ; 0x022338B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _022338F8 ; =0x02243150 + mov r5, r0 + ldr r0, [r1] + mov r1, #0 + add r4, r0, r5, lsl #8 + mov r0, r4 + mov r2, #0xef + bl MI_CpuFill8 + mov r1, #0xff + mov r0, r5 + strb r1, [r4, #0xe7] + bl MOD13_02233698 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022338F8: .word 0x02243150 + + arm_func_start MOD13_022338FC +MOD13_022338FC: ; 0x022338FC + ldr r0, _02233908 ; =0x02243150 + ldr r0, [r0] + bx lr + .align 2, 0 +_02233908: .word 0x02243150 + + arm_func_start MOD13_0223390C +MOD13_0223390C: ; 0x0223390C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02233A20 ; =0x02243150 + mov r5, r0 + ldr r0, [r1] + mov r1, #0 + add r4, r0, #0x400 + mov r0, r4 + mov r2, #0xef + bl MI_CpuFill8 + mov r0, r5 + add r1, r4, #0xd1 + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #6 + add r1, r4, #0xd6 + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #0xc + add r1, r4, #0xdb + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #0x12 + add r1, r4, #0xe0 + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #0x18 + add r1, r4, #0x60 + mov r2, #0x20 + bl MI_CpuCopy8 + add r0, r5, #0x39 + add r1, r4, #0x80 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x47 + add r1, r4, #0x90 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x55 + add r1, r4, #0xa0 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x63 + add r1, r4, #0xb0 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x71 + add r1, r4, #0x40 + mov r2, #0x20 + bl MI_CpuCopy8 + ldrb r1, [r4, #0xe6] + mov r3, #1 + add r0, r4, #0xf0 + bic r1, r1, #3 + orr r1, r1, #2 + strb r1, [r4, #0xe6] + ldrb ip, [r4, #0xe6] + mov r1, #0 + mov r2, #4 + bic ip, ip, #0xfc + strb ip, [r4, #0xe6] + strb r3, [r4, #0xe7] + bl MI_CpuFill8 + mov r0, #1 + strb r0, [r4, #0xf5] + strb r0, [r4, #0xf6] + bl MOD13_02233B3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02233A20: .word 0x02243150 + + arm_func_start MOD13_02233A24 +MOD13_02233A24: ; 0x02233A24 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02233B38 ; =0x02243150 + mov r6, r0 + ldr r0, [r1] + mov r1, #0 + add r5, r0, #0x400 + mov r0, r5 + mov r2, #0xef + bl MI_CpuFill8 + mov r0, r6 + add r1, r5, #0x40 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r6, #0x20] + cmp r0, #1 + beq _02233A78 + cmp r0, #2 + beq _02233A90 + cmp r0, #3 + beq _02233AA8 + b _02233AC0 +_02233A78: + ldrb r0, [r5, #0xe6] + mov r4, #5 + bic r0, r0, #3 + orr r0, r0, #1 + strb r0, [r5, #0xe6] + b _02233AD0 +_02233A90: + ldrb r0, [r5, #0xe6] + mov r4, #0xd + bic r0, r0, #3 + orr r0, r0, #2 + strb r0, [r5, #0xe6] + b _02233AD0 +_02233AA8: + ldrb r0, [r5, #0xe6] + mov r4, #0x10 + bic r0, r0, #3 + orr r0, r0, #3 + strb r0, [r5, #0xe6] + b _02233AD0 +_02233AC0: + ldrb r0, [r5, #0xe6] + mov r4, #0 + bic r0, r0, #3 + strb r0, [r5, #0xe6] +_02233AD0: + ldrb r0, [r5, #0xe6] + add r7, r5, #0x80 + add r6, r6, #0x28 + bic r0, r0, #0xfc + strb r0, [r5, #0xe6] + mov r8, #0 +_02233AE8: + mov r0, r6 + mov r1, r7 + mov r2, r4 + bl MI_CpuCopy8 + add r8, r8, #1 + cmp r8, #4 + add r7, r7, #0x10 + add r6, r6, #0x20 + blt _02233AE8 + mov r3, #2 + add r0, r5, #0xf0 + mov r1, #0 + mov r2, #4 + strb r3, [r5, #0xe7] + bl MI_CpuFill8 + mov r0, #1 + strb r0, [r5, #0xf5] + strb r0, [r5, #0xf6] + bl MOD13_02233B3C + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02233B38: .word 0x02243150 + + arm_func_start MOD13_02233B3C +MOD13_02233B3C: ; 0x02233B3C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _02233C20 ; =0x02243150 + mov r2, #0x78 + ldr r1, [r0] + add r5, r1, #0x400 + ldrb r0, [r5, #0xf4] + mov ip, r5 + add r4, r1, r0, lsl #8 + mov r3, r4 +_02233B64: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02233B64 + ldrb r0, [r5, #0xf5] + cmp r0, #0 + beq _02233BB4 + add r0, r4, #0xc0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + add r0, r4, #0xc4 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r0, #0 + strb r0, [r4, #0xd0] + b _02233BE0 +_02233BB4: + add r0, r5, #0xc0 + add r1, r4, #0xc0 + mov r2, #4 + bl MI_CpuCopy8 + add r0, r5, #0xc4 + add r1, r4, #0xc4 + mov r2, #4 + bl MI_CpuCopy8 + add r0, r5, #0xf0 + bl FUN_02095BE0 + strb r0, [r4, #0xd0] +_02233BE0: + ldrb r0, [r5, #0xf6] + cmp r0, #0 + beq _02233C00 + add r0, r4, #0xc8 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + b _02233C10 +_02233C00: + add r0, r5, #0xc8 + add r1, r4, #0xc8 + mov r2, #8 + bl MI_CpuCopy8 +_02233C10: + ldrb r0, [r5, #0xf4] + bl MOD13_02233698 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02233C20: .word 0x02243150 + + arm_func_start MOD13_02233C24 +MOD13_02233C24: ; 0x02233C24 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02233D04 ; =0x02243150 + mov r3, #0x78 + ldr r5, [r1] + add r4, r5, r0, lsl #8 + mov lr, r4 + add ip, r5, #0x400 +_02233C44: + ldrb r2, [lr], #1 + ldrb r1, [lr], #1 + subs r3, r3, #1 + strb r2, [ip], #1 + strb r1, [ip], #1 + bne _02233C44 + ldr r1, _02233D08 ; =0x0223F5E4 + strb r0, [r5, #0x4f4] + add r0, r4, #0xc0 + mov r2, #4 + bl memcmp + cmp r0, #0 + ldrne r0, _02233D04 ; =0x02243150 + movne r1, #0 + ldrne r0, [r0] + mov r2, #4 + strneb r1, [r0, #0x4f5] + ldreq r0, _02233D04 ; =0x02243150 + moveq r1, #1 + ldreq r0, [r0] + streqb r1, [r0, #0x4f5] + ldr r1, _02233D08 ; =0x0223F5E4 + add r0, r4, #0xc8 + bl memcmp + cmp r0, #0 + bne _02233CC4 + ldr r1, _02233D08 ; =0x0223F5E4 + add r0, r4, #0xcc + mov r2, #4 + bl memcmp + cmp r0, #0 + beq _02233CD8 +_02233CC4: + ldr r0, _02233D04 ; =0x02243150 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x4f6] + b _02233CE8 +_02233CD8: + ldr r0, _02233D04 ; =0x02243150 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x4f6] +_02233CE8: + ldr r1, _02233D04 ; =0x02243150 + ldrb r0, [r4, #0xd0] + ldr r1, [r1] + add r1, r1, #0x4f0 + bl FUN_02095BB0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02233D04: .word 0x02243150 +_02233D08: .word 0x0223F5E4 + + arm_func_start MOD13_02233D0C +MOD13_02233D0C: ; 0x02233D0C + ldr r1, _02233D20 ; =0x02243150 + ldr r1, [r1] + add r0, r1, r0, lsl #8 + ldrb r0, [r0, #0xe7] + bx lr + .align 2, 0 +_02233D20: .word 0x02243150 + + arm_func_start MOD13_02233D24 +MOD13_02233D24: ; 0x02233D24 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _02233D64 ; =0x02243150 + ldr r2, _02233D68 ; =0x000004CC + ldr r3, [r1] + ldr r1, _02233D6C ; =0x022405CC + add ip, r3, r2 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4cc] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233D64: .word 0x02243150 +_02233D68: .word 0x000004CC +_02233D6C: .word 0x022405CC + + arm_func_start MOD13_02233D70 +MOD13_02233D70: ; 0x02233D70 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _02233DB0 ; =0x02243150 + ldr r2, _02233DB4 ; =0x000004C8 + ldr r3, [r1] + ldr r1, _02233DB8 ; =0x022405CC + add ip, r3, r2 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4c8] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233DB0: .word 0x02243150 +_02233DB4: .word 0x000004C8 +_02233DB8: .word 0x022405CC + + arm_func_start MOD13_02233DBC +MOD13_02233DBC: ; 0x02233DBC + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _02233DFC ; =0x02243150 + ldr r2, _02233E00 ; =0x000004C4 + ldr r3, [r1] + ldr r1, _02233E04 ; =0x022405CC + add ip, r3, r2 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4c4] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233DFC: .word 0x02243150 +_02233E00: .word 0x000004C4 +_02233E04: .word 0x022405CC + + arm_func_start MOD13_02233E08 +MOD13_02233E08: ; 0x02233E08 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _02233E44 ; =0x02243150 + ldr r1, _02233E48 ; =0x022405CC + ldr r3, [r2] + add ip, r3, #0x4f0 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4f0] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233E44: .word 0x02243150 +_02233E48: .word 0x022405CC + + arm_func_start MOD13_02233E4C +MOD13_02233E4C: ; 0x02233E4C + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _02233E88 ; =0x02243150 + ldr r1, _02233E8C ; =0x022405CC + ldr r3, [r2] + add ip, r3, #0x4c0 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4c0] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233E88: .word 0x02243150 +_02233E8C: .word 0x022405CC + + arm_func_start MOD13_02233E90 +MOD13_02233E90: ; 0x02233E90 + ldr r2, _02233EAC ; =0x02243150 + mov r1, r0 + ldr r0, [r2] + ldr ip, _02233EB0 ; =0x020CE3E0 + mov r2, #0x20 + add r0, r0, #0x440 + bx ip + .align 2, 0 +_02233EAC: .word 0x02243150 +_02233EB0: .word 0x020CE3E0 + + arm_func_start MOD13_02233EB4 +MOD13_02233EB4: ; 0x02233EB4 + ldr r2, _02233ECC ; =0x02243150 + ldr r1, _02233ED0 ; =0x000004CC + ldr r2, [r2] + ldr ip, _02233ED4 ; =MOD13_02233608 + add r1, r2, r1 + bx ip + .align 2, 0 +_02233ECC: .word 0x02243150 +_02233ED0: .word 0x000004CC +_02233ED4: .word MOD13_02233608 + + arm_func_start MOD13_02233ED8 +MOD13_02233ED8: ; 0x02233ED8 + ldr r2, _02233EF0 ; =0x02243150 + ldr r1, _02233EF4 ; =0x000004C8 + ldr r2, [r2] + ldr ip, _02233EF8 ; =MOD13_02233608 + add r1, r2, r1 + bx ip + .align 2, 0 +_02233EF0: .word 0x02243150 +_02233EF4: .word 0x000004C8 +_02233EF8: .word MOD13_02233608 + + arm_func_start MOD13_02233EFC +MOD13_02233EFC: ; 0x02233EFC + ldr r2, _02233F14 ; =0x02243150 + ldr r1, _02233F18 ; =0x000004C4 + ldr r2, [r2] + ldr ip, _02233F1C ; =MOD13_02233608 + add r1, r2, r1 + bx ip + .align 2, 0 +_02233F14: .word 0x02243150 +_02233F18: .word 0x000004C4 +_02233F1C: .word MOD13_02233608 + + arm_func_start MOD13_02233F20 +MOD13_02233F20: ; 0x02233F20 + ldr r1, _02233F34 ; =0x02243150 + ldr ip, _02233F38 ; =MOD13_02233608 + ldr r1, [r1] + add r1, r1, #0x4f0 + bx ip + .align 2, 0 +_02233F34: .word 0x02243150 +_02233F38: .word MOD13_02233608 + + arm_func_start MOD13_02233F3C +MOD13_02233F3C: ; 0x02233F3C + ldr r1, _02233F50 ; =0x02243150 + ldr ip, _02233F54 ; =MOD13_02233608 + ldr r1, [r1] + add r1, r1, #0x4c0 + bx ip + .align 2, 0 +_02233F50: .word 0x02243150 +_02233F54: .word MOD13_02233608 + + arm_func_start MOD13_02233F58 +MOD13_02233F58: ; 0x02233F58 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02234100 ; =0x02243150 + mov r6, r0 + ldr r0, [r1] + mov r1, #0 + add r0, r0, #0x480 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, r6 + mov r1, #0x20 + bl MOD13_0223BDA4 + mov r4, r0 + cmp r4, #0xa + bgt _02233FA4 + cmp r4, #0xa + bge _02233FC0 + cmp r4, #0 + beq _02233FC0 + b _0223401C +_02233FA4: + cmp r4, #0x1a + bgt _02233FB8 + cmp r4, #0x1a + beq _02233FC0 + b _0223401C +_02233FB8: + cmp r4, #0x20 + bne _0223401C +_02233FC0: + ldr r0, _02234100 ; =0x02243150 + cmp r4, #0 + ldr r2, [r0] + mov r5, #0 + ldrb r1, [r2, #0x4e6] + bic r1, r1, #0xfc + strb r1, [r2, #0x4e6] + ldr r0, [r0] + add r8, r0, #0x480 + ble _02234048 +_02233FE8: + ldrb r0, [r6, r5] + bl MOD13_022335EC + add r1, r5, #1 + mov r7, r0 + ldrb r0, [r6, r1] + bl MOD13_022335EC + add r0, r0, r7, lsl #4 + add r5, r5, #2 + strb r0, [r8] + cmp r5, r4 + add r8, r8, #1 + blt _02233FE8 + b _02234048 +_0223401C: + ldr r1, _02234100 ; =0x02243150 + mov r0, r6 + ldr r5, [r1] + mov r2, #0x10 + ldrb r3, [r5, #0x4e6] + bic r3, r3, #0xfc + orr r3, r3, #4 + strb r3, [r5, #0x4e6] + ldr r1, [r1] + add r1, r1, #0x480 + bl MI_CpuCopy8 +_02234048: + cmp r4, #5 + bgt _02234064 + cmp r4, #5 + bge _022340AC + cmp r4, #0 + beq _02234094 + b _022340E4 +_02234064: + cmp r4, #0xd + bgt _02234088 + cmp r4, #0xa + blt _022340E4 + cmp r4, #0xa + beq _022340AC + cmp r4, #0xd + beq _022340C8 + b _022340E4 +_02234088: + cmp r4, #0x1a + beq _022340C8 + b _022340E4 +_02234094: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022340AC: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + orr r0, r0, #1 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022340C8: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + orr r0, r0, #2 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022340E4: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + orr r0, r0, #3 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234100: .word 0x02243150 + + arm_func_start MOD13_02234104 +MOD13_02234104: ; 0x02234104 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02234138 ; =0x02243150 + mov r2, #0x20 + ldr r1, [r1] + add r1, r1, #0x440 + bl MI_CpuCopy8 + ldr r0, _02234138 ; =0x02243150 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x4e7] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02234138: .word 0x02243150 + + arm_func_start MOD13_0223413C +MOD13_0223413C: ; 0x0223413C + ldr r1, _0223414C ; =0x02243150 + ldr r1, [r1] + strb r0, [r1, #0x4f6] + bx lr + .align 2, 0 +_0223414C: .word 0x02243150 + + arm_func_start MOD13_02234150 +MOD13_02234150: ; 0x02234150 + ldr r1, _02234160 ; =0x02243150 + ldr r1, [r1] + strb r0, [r1, #0x4f5] + bx lr + .align 2, 0 +_02234160: .word 0x02243150 + + arm_func_start MOD13_02234164 +MOD13_02234164: ; 0x02234164 + ldr r0, _02234174 ; =0x02243150 + ldr r0, [r0] + add r0, r0, #0x400 + bx lr + .align 2, 0 +_02234174: .word 0x02243150 + + arm_func_start MOD13_02234178 +MOD13_02234178: ; 0x02234178 + ldr ip, _02234184 ; =MOD13_0223AF90 + ldr r0, _02234188 ; =0x02243150 + bx ip + .align 2, 0 +_02234184: .word MOD13_0223AF90 +_02234188: .word 0x02243150 + + arm_func_start MOD13_0223418C +MOD13_0223418C: ; 0x0223418C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022341CC ; =0x000006F8 + mov r1, #0x20 + bl MOD13_0223B004 + ldr r1, _022341D0 ; =0x02243150 + ldr r2, _022341D4 ; =0x000004F8 + str r0, [r1] + ldr r1, _022341D8 ; =0x0000A001 + add r0, r0, r2 + bl MATHi_CRC16InitTableRev + ldr r0, _022341D0 ; =0x02243150 + ldr r0, [r0] + bl FUN_02095D68 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022341CC: .word 0x000006F8 +_022341D0: .word 0x02243150 +_022341D4: .word 0x000004F8 +_022341D8: .word 0x0000A001 + + arm_func_start MOD13_022341DC +MOD13_022341DC: ; 0x022341DC + ldr ip, _022341E4 ; =0x020C01A0 + bx ip + .align 2, 0 +_022341E4: .word 0x020C01A0 + + arm_func_start MOD13_022341E8 +MOD13_022341E8: ; 0x022341E8 + ldr r0, _02234200 ; =0x02243154 + ldr ip, _02234204 ; =0x020C10A4 + ldr r0, [r0] + mov r1, #0 + add r0, r0, #0x90 + bx ip + .align 2, 0 +_02234200: .word 0x02243154 +_02234204: .word 0x020C10A4 + + arm_func_start MOD13_02234208 +MOD13_02234208: ; 0x02234208 + ldr r2, _02234224 ; =0x02243154 + ldr ip, _02234228 ; =0x020C0EA4 + ldr r3, [r2] + mov r2, r1 + mov r1, r0 + add r0, r3, #0x90 + bx ip + .align 2, 0 +_02234224: .word 0x02243154 +_02234228: .word 0x020C0EA4 + + arm_func_start MOD13_0223422C +MOD13_0223422C: ; 0x0223422C + ldr r2, _02234244 ; =0x02243154 + mov r1, r0 + ldr r0, [r2] + ldr ip, _02234248 ; =0x020C0F40 + add r0, r0, #0x90 + bx ip + .align 2, 0 +_02234244: .word 0x02243154 +_02234248: .word 0x020C0F40 + + arm_func_start MOD13_0223424C +MOD13_0223424C: ; 0x0223424C + ldr r1, _02234268 ; =0x02243154 + mov r2, r0 + ldr r0, [r1] + ldr ip, _0223426C ; =0x020C3888 + mov r1, #0 + add r0, r0, #0x90 + bx ip + .align 2, 0 +_02234268: .word 0x02243154 +_0223426C: .word 0x020C3888 + + arm_func_start MOD13_02234270 +MOD13_02234270: ; 0x02234270 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0223429C ; =0x02243154 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0x98] + bl MOD13_0223C110 + ldr r0, _0223429C ; =0x02243154 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223429C: .word 0x02243154 + + arm_func_start MOD13_022342A0 +MOD13_022342A0: ; 0x022342A0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x9c + mov r1, #4 + bl MOD13_0223B004 + ldr r2, _0223432C ; =0x02243154 + add r1, sp, #0 + str r0, [r2] + ldr r0, _02234330 ; =0x022405DC + mov r2, #0x20 + bl MOD13_022393D8 + ldr r1, _0223432C ; =0x02243154 + ldr r1, [r1] + str r0, [r1, #0x94] + bl FUN_020C01D0 + ldr r0, _0223432C ; =0x02243154 + ldr r0, [r0] + ldr r1, [r0, #0x94] + bl FUN_020C2444 + mov r0, #0 + bl FUN_020C39CC + ldr r0, _0223432C ; =0x02243154 + ldr r0, [r0] + add r0, r0, #0x90 + bl FUN_020C0F80 + mov r0, #0 + ldr r1, _02234334 ; =MOD13_022341DC + mov r2, r0 + mov r3, #0xc8 + bl MOD13_0223C1C4 + ldr r1, _0223432C ; =0x02243154 + ldr r1, [r1] + str r0, [r1, #0x98] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223432C: .word 0x02243154 +_02234330: .word 0x022405DC +_02234334: .word MOD13_022341DC + + arm_func_start MOD13_02234338 +MOD13_02234338: ; 0x02234338 + stmdb sp!, {r4, lr} + ldr r1, _02234380 ; =0x02243158 + mov r4, r0 + ldr r0, [r1] + mov r1, #0x600 + bl DC_FlushRange + ldr r0, _02234380 ; =0x02243158 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x600 + bl GXS_LoadBG1Scr + ldr r0, _02234380 ; =0x02243158 + ldr r0, [r0] + bl MOD13_0223939C + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_02234380: .word 0x02243158 + + arm_func_start MOD13_02234384 +MOD13_02234384: ; 0x02234384 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _022343C8 ; =0x02240658 + ldr r0, [r1, r0, lsl #2] + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r2, _022343CC ; =0x02243158 + ldr r1, _022343D0 ; =MOD13_02234338 + str r0, [r2] + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022343C8: .word 0x02240658 +_022343CC: .word 0x02243158 +_022343D0: .word MOD13_02234338 + + arm_func_start MOD13_022343D4 +MOD13_022343D4: ; 0x022343D4 + ldr r0, _022343FC ; =0x0224315C + ldr r0, [r0] + cmp r0, #0 + moveq r0, #1 + bxeq lr + ldrb r0, [r0, #0x18] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_022343FC: .word 0x0224315C + + arm_func_start MOD13_02234400 +MOD13_02234400: ; 0x02234400 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _022344C8 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp] + ldr r6, _022344C8 ; =0x0224315C + sub r0, r0, #8 + ldr r7, _022344CC ; =0x0223F608 + mov r4, #0 + str r0, [sp] + mvn r8, #0 +_02234444: + add r0, r7, r4, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r4, lsl #2] + ldr r2, [sp] + mov r1, r8 + bl MOD13_02239888 + add r4, r4, #1 + cmp r4, #5 + blt _02234444 + ldr r1, [sp] + ldr r0, _022344D0 ; =0x000001D6 + cmp r1, r0 + addgt sp, sp, #8 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} + cmp r1, #0x100 + addlt sp, sp, #8 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + mov r1, r5 + mov r0, #0 + bl MOD13_0223C110 + mov r5, #0 + ldr r4, _022344C8 ; =0x0224315C +_022344A0: + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + bl MOD13_02239AE8 + add r5, r5, #1 + cmp r5, #5 + blt _022344A0 + ldr r0, _022344C8 ; =0x0224315C + bl MOD13_0223AF90 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022344C8: .word 0x0224315C +_022344CC: .word 0x0223F608 +_022344D0: .word 0x000001D6 + + arm_func_start MOD13_022344D4 +MOD13_022344D4: ; 0x022344D4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _022345A0 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #4] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r4, _022345A4 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r4] + sub r1, r1, #8 + str r1, [sp] + cmp r1, r0 + ble _02234554 + ldr r5, _022345A0 ; =0x0224315C + mov r7, #1 + mvn r6, #0 +_02234524: + add r0, r4, r7, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234524 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234554: + str r0, [sp] + mov r8, #1 + ldr r6, _022345A0 ; =0x0224315C + mvn r7, #0 +_02234564: + add r0, r4, r8, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234564 + ldr r1, _022345A8 ; =MOD13_02234400 + mov r0, r5 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022345A0: .word 0x0224315C +_022345A4: .word 0x0223F608 +_022345A8: .word MOD13_02234400 + + arm_func_start MOD13_022345AC +MOD13_022345AC: ; 0x022345AC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234678 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r4, _0223467C ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r4, #4] + sub r1, r1, #8 + str r1, [sp] + cmp r1, r0 + ble _0223462C + ldr r5, _02234678 ; =0x0224315C + mov r7, #2 + mvn r6, #0 +_022345FC: + add r0, r4, r7, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _022345FC + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0223462C: + str r0, [sp] + mov r8, #2 + ldr r6, _02234678 ; =0x0224315C + mvn r7, #0 +_0223463C: + add r0, r4, r8, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _0223463C + ldr r1, _02234680 ; =MOD13_022344D4 + mov r0, r5 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234678: .word 0x0224315C +_0223467C: .word 0x0223F608 +_02234680: .word MOD13_022344D4 + + arm_func_start MOD13_02234684 +MOD13_02234684: ; 0x02234684 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234750 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0xc] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r4, _02234754 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r4, #8] + sub r1, r1, #8 + str r1, [sp] + cmp r1, r0 + ble _02234704 + ldr r5, _02234750 ; =0x0224315C + mov r7, #3 + mvn r6, #0 +_022346D4: + add r0, r4, r7, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _022346D4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234704: + str r0, [sp] + mov r8, #3 + ldr r6, _02234750 ; =0x0224315C + mvn r7, #0 +_02234714: + add r0, r4, r8, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234714 + ldr r1, _02234758 ; =MOD13_022345AC + mov r0, r5 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234750: .word 0x0224315C +_02234754: .word 0x0223F608 +_02234758: .word MOD13_022345AC + + arm_func_start MOD13_0223475C +MOD13_0223475C: ; 0x0223475C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022347F4 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0x10] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r1, _022347F8 ; =0x0223F608 + ldr r0, [sp] + ldrh ip, [r1, #0xc] + sub r2, r0, #8 + str r2, [sp] + cmp r2, ip + ble _022347C0 + ldr r0, _022347F4 ; =0x0224315C + ldrh r3, [r1, #0x12] + ldr r0, [r0] + mvn r1, #0 + ldr r0, [r0, #0x10] + bl MOD13_02239888 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022347C0: + ldr r0, _022347F4 ; =0x0224315C + str ip, [sp] + ldr r0, [r0] + ldrh r3, [r1, #0x12] + ldr r0, [r0, #0x10] + mov r2, ip + mvn r1, #0 + bl MOD13_02239888 + ldr r1, _022347FC ; =MOD13_02234684 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022347F4: .word 0x0224315C +_022347F8: .word 0x0223F608 +_022347FC: .word MOD13_02234684 + + arm_func_start MOD13_02234800 +MOD13_02234800: ; 0x02234800 + ldr r0, _0223481C ; =0x0224315C + ldr r0, [r0] + ldr r0, [r0, #0x14] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0223481C: .word 0x0224315C + + arm_func_start MOD13_02234820 +MOD13_02234820: ; 0x02234820 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r1, #5 + mul r2, r0, r1 + mov sl, #0 + str r0, [sp] + ldr r1, _022348F8 ; =0x0223F5E8 + ldr r0, _022348FC ; =0x0223F5F8 + ldr r4, _02234900 ; =0x0224315C + add sb, r1, r2 + add r8, r0, r2 + mov r7, sl + mov fp, sl + str sl, [sp, #4] + mov r6, #1 + mvn r5, #0 +_02234860: + ldr r0, [r4] + mov r1, r7 + ldr r0, [r0, sl, lsl #2] + bl MOD13_02239ADC + mov r2, r0 + ldrb r1, [sb] + mov r0, r6 + bl MOD13_02239E8C + ldr r0, [r4] + mov r1, r5 + ldr r0, [r0, sl, lsl #2] + mov r2, fp + bl MOD13_02239814 + ldr r3, _02234904 ; =0x0223F608 + ldr r0, [r4] + add r3, r3, sl, lsl #2 + ldr r1, _02234904 ; =0x0223F608 + mov r2, sl, lsl #2 + ldrh r2, [r1, r2] + ldrh r3, [r3, #2] + ldr r0, [r0, sl, lsl #2] + mov r1, r5 + bl MOD13_02239888 + ldr r0, [r4] + ldrb r3, [r8] + ldr r0, [r0, sl, lsl #2] + ldr r2, [sp, #4] + mov r1, r5 + bl MOD13_02239994 + add sl, sl, #2 + add sb, sb, #2 + add r8, r8, #2 + cmp sl, #5 + blt _02234860 + ldr r0, [sp] + bl MOD13_02234384 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022348F8: .word 0x0223F5E8 +_022348FC: .word 0x0223F5F8 +_02234900: .word 0x0224315C +_02234904: .word 0x0223F608 + + arm_func_start MOD13_02234908 +MOD13_02234908: ; 0x02234908 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02234948 ; =0x0224315C + mov r0, #0 + ldr ip, [r1] + mov lr, #1 + ldr r1, _0223494C ; =MOD13_0223475C + mov r2, r0 + mov r3, #0x78 + strb lr, [ip, #0x18] + bl MOD13_0223C1C4 + ldr r1, _02234948 ; =0x0224315C + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02234948: .word 0x0224315C +_0223494C: .word MOD13_0223475C + + arm_func_start MOD13_02234950 +MOD13_02234950: ; 0x02234950 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + ldr r0, _0223497C ; =0x0224315C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223497C: .word 0x0224315C + + arm_func_start MOD13_02234980 +MOD13_02234980: ; 0x02234980 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02234A24 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0x10] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r1, _02234A28 ; =0x0223F608 + ldr r0, [sp] + ldrh ip, [r1, #0x10] + add r2, r0, #8 + str r2, [sp] + cmp r2, ip + blt _022349CC + cmp r2, #0x100 + ble _022349F0 +_022349CC: + ldr r1, _02234A24 ; =0x0224315C + ldr r0, _02234A28 ; =0x0223F608 + ldr r1, [r1] + ldrh r3, [r0, #0x12] + ldr r0, [r1, #0x10] + mvn r1, #0 + bl MOD13_02239888 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022349F0: + ldr r0, _02234A24 ; =0x0224315C + str ip, [sp] + ldr r0, [r0] + ldrh r3, [r1, #0x12] + ldr r0, [r0, #0x10] + mov r2, ip + mvn r1, #0 + bl MOD13_02239888 + ldr r1, _02234A2C ; =MOD13_02234950 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02234A24: .word 0x0224315C +_02234A28: .word 0x0223F608 +_02234A2C: .word MOD13_02234950 + + arm_func_start MOD13_02234A30 +MOD13_02234A30: ; 0x02234A30 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234B08 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0xc] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234B0C ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6, #0xc] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234A7C + cmp r1, #0x100 + ble _02234ABC +_02234A7C: + ldr r4, _02234B08 ; =0x0224315C + ldr r5, _02234B0C ; =0x0223F608 + mov r7, #3 + mvn r6, #0 +_02234A8C: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234A8C + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234ABC: + str r0, [sp] + mov r8, #3 + ldr r5, _02234B08 ; =0x0224315C + mvn r7, #0 +_02234ACC: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234ACC + ldr r1, _02234B10 ; =MOD13_02234980 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234B08: .word 0x0224315C +_02234B0C: .word 0x0223F608 +_02234B10: .word MOD13_02234980 + + arm_func_start MOD13_02234B14 +MOD13_02234B14: ; 0x02234B14 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234BEC ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234BF0 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6, #8] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234B60 + cmp r1, #0x100 + ble _02234BA0 +_02234B60: + ldr r4, _02234BEC ; =0x0224315C + ldr r5, _02234BF0 ; =0x0223F608 + mov r7, #2 + mvn r6, #0 +_02234B70: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234B70 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234BA0: + str r0, [sp] + mov r8, #2 + ldr r5, _02234BEC ; =0x0224315C + mvn r7, #0 +_02234BB0: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234BB0 + ldr r1, _02234BF4 ; =MOD13_02234A30 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234BEC: .word 0x0224315C +_02234BF0: .word 0x0223F608 +_02234BF4: .word MOD13_02234A30 + + arm_func_start MOD13_02234BF8 +MOD13_02234BF8: ; 0x02234BF8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234CD0 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #4] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234CD4 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6, #4] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234C44 + cmp r1, #0x100 + ble _02234C84 +_02234C44: + ldr r4, _02234CD0 ; =0x0224315C + ldr r5, _02234CD4 ; =0x0223F608 + mov r7, #1 + mvn r6, #0 +_02234C54: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234C54 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234C84: + str r0, [sp] + mov r8, #1 + ldr r5, _02234CD0 ; =0x0224315C + mvn r7, #0 +_02234C94: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234C94 + ldr r1, _02234CD8 ; =MOD13_02234B14 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234CD0: .word 0x0224315C +_02234CD4: .word 0x0223F608 +_02234CD8: .word MOD13_02234B14 + + arm_func_start MOD13_02234CDC +MOD13_02234CDC: ; 0x02234CDC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234DB4 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234DB8 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234D28 + cmp r1, #0x100 + ble _02234D68 +_02234D28: + ldr r4, _02234DB4 ; =0x0224315C + ldr r5, _02234DB8 ; =0x0223F608 + mov r7, #0 + mvn r6, #0 +_02234D38: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234D38 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234D68: + str r0, [sp] + mov r8, #0 + ldr r5, _02234DB4 ; =0x0224315C + mvn r7, #0 +_02234D78: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234D78 + ldr r1, _02234DBC ; =MOD13_02234BF8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234DB4: .word 0x0224315C +_02234DB8: .word 0x0223F608 +_02234DBC: .word MOD13_02234BF8 + + arm_func_start MOD13_02234DC0 +MOD13_02234DC0: ; 0x02234DC0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + str r0, [sp] + mov r0, #0x1c + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, [sp] + mov r2, #5 + mul r3, r1, r2 + mov sl, #0 + ldr r4, _02234EC4 ; =0x0224315C + ldr r2, _02234EC8 ; =0x0223F5E8 + ldr r1, _02234ECC ; =0x0223F5F8 + str r0, [r4] + add sb, r2, r3 + add r8, r1, r3 + mov fp, sl + str sl, [sp, #4] + mov r7, #1 + mvn r6, #0 + mvn r5, #0x29 +_02234E14: + ldrb r1, [sb] + mov r0, r7 + mov r2, r7 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r6 + str r0, [r2, sl, lsl #2] + ldr r0, [r4] + mov r2, fp + ldr r0, [r0, sl, lsl #2] + bl MOD13_02239814 + ldr r3, _02234ED0 ; =0x0223F608 + ldr r0, [r4] + add r3, r3, sl, lsl #2 + ldrh r3, [r3, #2] + ldr r0, [r0, sl, lsl #2] + mov r1, r6 + mov r2, r5 + bl MOD13_02239888 + ldr r0, [r4] + ldrb r3, [r8] + ldr r0, [r0, sl, lsl #2] + ldr r2, [sp, #4] + mov r1, r6 + bl MOD13_02239994 + add sl, sl, #1 + add sb, sb, #1 + add r8, r8, #1 + cmp sl, #5 + blt _02234E14 + mov r0, #0 + ldr r1, _02234ED4 ; =MOD13_02234CDC + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02234EC4 ; =0x0224315C + ldr r1, [r1] + str r0, [r1, #0x14] + ldr r0, [sp] + bl MOD13_02234384 + mov r0, #0xd + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02234EC4: .word 0x0224315C +_02234EC8: .word 0x0223F5E8 +_02234ECC: .word 0x0223F5F8 +_02234ED0: .word 0x0223F608 +_02234ED4: .word MOD13_02234CDC + + arm_func_start MOD13_02234ED8 +MOD13_02234ED8: ; 0x02234ED8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + str r0, [sp] + bl OS_GetTick + ldr r2, _02235018 ; =0x02243160 + ldr r3, _0223501C ; =0x0017F898 + ldr fp, [r2] + mov r8, #0 + add r2, fp, #0x1000 + ldr r4, [r2, #0xb78] + ldr r2, [r2, #0xb7c] + adds r3, r4, r3 + adc r2, r2, #0 + cmp r1, r2 + cmpeq r0, r3 + addlo sp, sp, #4 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov sb, r8 + mov sl, r8 + mov r6, fp + add r7, fp, #0x1300 + mov r4, #1 + mov r5, #6 +_02234F34: + ldr r1, _02235020 ; =0x0223F61C + mov r0, r7 + mov r2, r5 + bl memcmp + cmp r0, #0 + beq _02234F60 + add r0, r6, #0x1000 + ldrb r0, [r0, #0x306] + cmp r0, #0 + movne sb, r4 + moveq r8, r4 +_02234F60: + add sl, sl, #1 + cmp sl, #0x10 + add r7, r7, #7 + add r6, r6, #7 + blt _02234F34 + cmp sb, #0 + beq _02234FA0 + cmp r8, #0 + beq _02234FA0 + add r0, fp, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + beq _02234FE4 + mov r0, #2 + blx r1 + b _02234FE4 +_02234FA0: + cmp sb, #0 + beq _02234FC4 + add r0, fp, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + beq _02234FE4 + mov r0, #1 + blx r1 + b _02234FE4 +_02234FC4: + cmp r8, #0 + bne _02234FE4 + add r0, fp, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + beq _02234FE4 + mov r0, #0 + blx r1 +_02234FE4: + ldr r3, _02235018 ; =0x02243160 + mov r0, #0 + ldr r2, [r3] + ldr r1, [sp] + add r2, r2, #0x1000 + str r0, [r2, #0xb80] + ldr r2, [r3] + mov r3, #1 + add r2, r2, #0x1000 + strb r3, [r2, #0xb86] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02235018: .word 0x02243160 +_0223501C: .word 0x0017F898 +_02235020: .word 0x0223F61C + + arm_func_start MOD13_02235024 +MOD13_02235024: ; 0x02235024 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r1, _02235154 ; =0x02243160 + mov r4, r0 + ldr r2, [r1] + add r1, r2, #0x1000 + ldrb r0, [r1, #0xb85] + cmp r0, #0 + beq _02235064 + ldr r1, [r1, #0x370] + cmp r1, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02235064: + add r0, r2, #0xf00 + mov r1, #0x400 + bl DC_InvalidateRange + ldrh fp, [r4, #0xe] + mov sl, #0 + cmp fp, #0 + addle sp, sp, #0xc + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _02235154 ; =0x02243160 + ldr r7, [r0] + str sl, [sp, #4] + mov r5, #6 + mov r0, #8 + str r0, [sp] +_0223509C: + add r0, r4, sl, lsl #2 + ldr r6, [r0, #0x10] + ldr r1, _02235158 ; =0x0223F624 + ldr r2, [sp] + add r0, r6, #0xc + bl memcmp + cmp r0, #0 + bne _02235140 + ldrb r0, [r6, #0x15] + ands r0, r0, #1 + beq _02235140 + ldr sb, [sp, #4] + add r8, r7, #0x1300 + add r6, r6, #4 +_022350D4: + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl memcmp + cmp r0, #0 + bne _02235130 + mov r0, #7 + mla r0, sb, r0, r7 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x306] + cmp r0, #0 + bne _02235140 + add r0, r7, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0xb85] + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02235130: + add sb, sb, #1 + cmp sb, #0x10 + add r8, r8, #7 + blt _022350D4 +_02235140: + add sl, sl, #1 + cmp sl, fp + blt _0223509C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02235154: .word 0x02243160 +_02235158: .word 0x0223F624 + + arm_func_start MOD13_0223515C +MOD13_0223515C: ; 0x0223515C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + str r0, [sp] + ldrh r0, [r0, #0xe] + mov fp, #0 + cmp r0, #0 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0xc0 + str r0, [sp, #4] + mov r0, #8 + ldr r4, _022352EC ; =0x0223F61C + str fp, [sp, #0x18] + str fp, [sp, #0xc] + str fp, [sp, #0x10] + mov r5, #6 + str r0, [sp, #8] +_022351A8: + ldr r0, [sp] + ldr r1, [sp, #4] + add r0, r0, fp, lsl #2 + ldr sl, [r0, #0x10] + mov r0, sl + bl DC_InvalidateRange + ldr r1, _022352F0 ; =0x0223F624 + ldr r2, [sp, #8] + add r0, sl, #0xc + bl memcmp + cmp r0, #0 + bne _022352D0 + ldr r0, _022352F4 ; =0x02243160 + ldr sb, [sp, #0xc] + ldr r7, [r0] + add r6, sl, #4 + add r8, r7, #0x1300 +_022351EC: + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl memcmp + cmp r0, #0 + bne _0223524C + mov r0, #7 + mla r0, sb, r0, r7 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x306] + cmp r0, #0 + bne _022352D0 + ldrb r0, [sl, #0x15] + ands r0, r0, #1 + beq _022352D0 + add r0, r7, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + blx r1 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0223524C: + add r8, r8, #7 + add sb, sb, #1 + cmp sb, #0x10 + blt _022351EC + ldr r6, [sp, #0x10] + add r8, r7, #0x1300 +_02235264: + mov r0, r8 + mov r1, r4 + mov r2, r5 + bl memcmp + cmp r0, #0 + bne _022352C0 + mov r0, #7 + add r1, r7, #0x1300 + mul r7, r6, r0 + add r1, r1, r7 + add r0, sl, #4 + mov r2, r5 + bl MI_CpuCopy8 + ldrb r0, [sl, #0x15] + ands r0, r0, #1 + ldr r0, _022352F4 ; =0x02243160 + ldrne r1, [sp, #0x14] + ldr r0, [r0] + ldreq r1, [sp, #0x18] + add r0, r0, r7 + add r0, r0, #0x1000 + strb r1, [r0, #0x306] + b _022352D0 +_022352C0: + add r8, r8, #7 + add r6, r6, #1 + cmp r6, #0x10 + blt _02235264 +_022352D0: + ldr r0, [sp] + add fp, fp, #1 + ldrh r0, [r0, #0xe] + cmp fp, r0 + blt _022351A8 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022352EC: .word 0x0223F61C +_022352F0: .word 0x0223F624 +_022352F4: .word 0x02243160 + + arm_func_start MOD13_022352F8 +MOD13_022352F8: ; 0x022352F8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r1, [r0, #2] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _022353A0 ; =0x02243160 + ldr r1, [r1] + add r1, r1, #0x1000 + ldrb r2, [r1, #0xb84] + cmp r2, #0 + beq _02235340 + ldrh r0, [r0] + add sp, sp, #4 + cmp r0, #2 + moveq r0, #2 + streqb r0, [r1, #0xb84] + ldmia sp!, {pc} +_02235340: + ldrh r2, [r0] + cmp r2, #0x26 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r2, [r0, #8] + cmp r2, #4 + beq _02235388 + cmp r2, #5 + bne _02235394 + ldrb r1, [r1, #0xb86] + cmp r1, #0 + beq _02235378 + bl MOD13_02235024 + b _0223537C +_02235378: + bl MOD13_0223515C +_0223537C: + bl MOD13_022354B4 + add sp, sp, #4 + ldmia sp!, {pc} +_02235388: + bl MOD13_022354B4 + add sp, sp, #4 + ldmia sp!, {pc} +_02235394: + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022353A0: .word 0x02243160 + + arm_func_start MOD13_022353A4 +MOD13_022353A4: ; 0x022353A4 + ldr r1, _022353B8 ; =0x02243160 + ldr r1, [r1] + add r1, r1, #0x1000 + str r0, [r1, #0x370] + bx lr + .align 2, 0 +_022353B8: .word 0x02243160 + + arm_func_start MOD13_022353BC +MOD13_022353BC: ; 0x022353BC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _022354A8 ; =0x02243160 + mov r3, #1 + ldr r0, [r2] + ldr r1, _022354AC ; =0x000013B8 + add r0, r0, #0x1000 + strb r3, [r0, #0xb84] + ldr r0, [r2] + add r0, r0, r1 + bl WM_ReadStatus + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1300 + ldrh r0, [r0, #0xb8] + cmp r0, #2 + beq _02235444 + ldr r0, _022354B0 ; =MOD13_022352F8 + bl WM_Reset + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} +_02235418: + ldr r1, _022354A8 ; =0x02243160 + ldr r0, _022354AC ; =0x000013B8 + ldr r1, [r1] + add r0, r1, r0 + bl WM_ReadStatus + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1300 + ldrh r0, [r0, #0xb8] + cmp r0, #2 + bne _02235418 +_02235444: + ldr r0, _022354B0 ; =MOD13_022352F8 + bl WM_End + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r1, [r0, #0xb80] + cmp r1, #0 + beq _0223547C + mov r0, #0 + bl MOD13_0223C104 +_0223547C: + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1000 +_02235488: + ldrb r1, [r0, #0xb84] + cmp r1, #2 + bne _02235488 + ldr r0, _022354A8 ; =0x02243160 + bl MOD13_0223AF90 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022354A8: .word 0x02243160 +_022354AC: .word 0x000013B8 +_022354B0: .word MOD13_022352F8 + + arm_func_start MOD13_022354B4 +MOD13_022354B4: ; 0x022354B4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022354E8 ; =0x02243160 + ldr r1, _022354EC ; =0x00001374 + ldr r2, [r0] + ldr r0, _022354F0 ; =MOD13_022352F8 + add r1, r2, r1 + bl WM_StartScanEx + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022354E8: .word 0x02243160 +_022354EC: .word 0x00001374 +_022354F0: .word MOD13_022352F8 + + arm_func_start MOD13_022354F4 +MOD13_022354F4: ; 0x022354F4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x54 + mov r4, r0 + ldr r0, _0223565C ; =0x00001BA0 + mov r1, #0x20 + bl MOD13_0223AFE0 + ldr r2, _02235660 ; =0x02243160 + add r1, r0, #0x1000 + str r0, [r2] + str r4, [r1, #0x370] + ldr r4, [r2] + bl OS_GetTick + add r2, r4, #0x1000 + str r0, [r2, #0xb78] + str r1, [r2, #0xb7c] + ldr r1, _02235664 ; =MOD13_022352F8 + mov r0, r4 + mov r2, #3 + bl WM_Initialize + cmp r0, #2 + bne _02235648 + ldr r5, _02235660 ; =0x02243160 + ldr r4, _02235668 ; =0x000013B8 +_02235550: + ldr r0, [r5] + add r0, r0, r4 + bl WM_ReadStatus + ldr ip, [r5] + add r0, ip, #0x1300 + ldrh r0, [r0, #0xb8] + cmp r0, #2 + bne _02235550 + ldr r0, _0223566C ; =0x00001374 + ldr lr, _02235670 ; =0x0223F630 + add r5, ip, r0 + mov r4, #4 +_02235580: + ldmia lr!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _02235580 + ldr r0, [lr] + add r1, ip, #0xf00 + str r0, [r5] + add r0, ip, #0x1000 + str r1, [r0, #0x374] + bl WM_GetDispersionScanPeriod + ldr r1, _02235660 ; =0x02243160 + ldr r1, [r1] + add r1, r1, #0x1300 + strh r0, [r1, #0x7c] + add r0, sp, #0 + bl OS_GetOwnerInfo + ldr r0, _02235660 ; =0x02243160 + ldr r1, _02235674 ; =0x00001388 + ldr r2, [r0] + ldr r0, _02235678 ; =0x0223F624 + add r1, r2, r1 + mov r2, #8 + bl MI_CpuCopy8 + ldr r2, _02235660 ; =0x02243160 + mov r3, #1 + ldr r0, [r2] + ldr r1, _0223567C ; =0x00001394 + add r0, r0, #0x1000 + strb r3, [r0, #0x391] + ldr r2, [r2] + ldrh r3, [sp, #0x18] + add r1, r2, r1 + add r0, sp, #4 + mov r2, r3, lsl #1 + bl MI_CpuCopy8 + bl MOD13_022354B4 + cmp r0, #0 + beq _02235648 + mov r0, #0 + ldr r1, _02235680 ; =MOD13_02234ED8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235660 ; =0x02243160 + add sp, sp, #0x54 + ldr r1, [r1] + add r1, r1, #0x1000 + str r0, [r1, #0xb80] + mov r0, #1 + ldmia sp!, {r4, r5, pc} +_02235648: + ldr r0, _02235660 ; =0x02243160 + bl MOD13_0223AF90 + mov r0, #0 + add sp, sp, #0x54 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223565C: .word 0x00001BA0 +_02235660: .word 0x02243160 +_02235664: .word MOD13_022352F8 +_02235668: .word 0x000013B8 +_0223566C: .word 0x00001374 +_02235670: .word 0x0223F630 +_02235674: .word 0x00001388 +_02235678: .word 0x0223F624 +_0223567C: .word 0x00001394 +_02235680: .word MOD13_02234ED8 + + arm_func_start MOD13_02235684 +MOD13_02235684: ; 0x02235684 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r3, #0x4000000 + ldr r2, [r3] + ldr r1, _02235730 ; =0x02243164 + bic r2, r2, #0xe000 + str r2, [r3] + ldr r1, [r1] + mov r6, r0 + ldr r0, [r1] + bl MOD13_02239AE8 + ldr r0, _02235730 ; =0x02243164 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_02239AE8 + ldr r7, _02235730 ; =0x02243164 + ldr r4, _02235734 ; =0x0223F680 + ldr r1, [r7] + mov r5, #0 + ldrb r0, [r1, #0x1c] + ldrb r0, [r4, r0] + cmp r0, #0 + ble _0223570C +_022356E0: + add r0, r1, r5, lsl #2 + ldr r0, [r0, #8] + cmp r0, #0 + beq _022356F4 + bl MOD13_02239AE8 +_022356F4: + ldr r1, [r7] + add r5, r5, #1 + ldrb r0, [r1, #0x1c] + ldrb r0, [r4, r0] + cmp r5, r0 + blt _022356E0 +_0223570C: + ldr r0, [r1, #0x10] + bl MOD13_0223A978 + mov r1, r6 + mov r0, #1 + bl MOD13_0223C110 + ldr r0, _02235730 ; =0x02243164 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02235730: .word 0x02243164 +_02235734: .word 0x0223F680 + + arm_func_start MOD13_02235738 +MOD13_02235738: ; 0x02235738 + stmdb sp!, {r4, lr} + ldr r1, _02235788 ; =0x02243164 + mov r4, r0 + ldr r3, [r1] + ldr r0, _0223578C ; =0x04000050 + ldrsb r2, [r3, #0x1a] + add r2, r2, #1 + strb r2, [r3, #0x1a] + ldr r1, [r1] + ldrsb r1, [r1, #0x1a] + bl G2x_ChangeBlendBrightness_ + ldr r0, _02235788 ; =0x02243164 + ldr r0, [r0] + ldrsb r0, [r0, #0x1a] + cmp r0, #0 + ldmltia sp!, {r4, pc} + ldr r1, _02235790 ; =MOD13_02235684 + mov r0, r4 + bl MOD13_0223C130 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235788: .word 0x02243164 +_0223578C: .word 0x04000050 +_02235790: .word MOD13_02235684 + + arm_func_start MOD13_02235794 +MOD13_02235794: ; 0x02235794 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02235818 ; =0x02243164 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + add r0, r0, #0xc + str r0, [sp, #4] + bl MOD13_022359B8 + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r0, _02235818 ; =0x02243164 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + cmp r0, #0 + beq _02235804 + ldr r1, _0223581C ; =MOD13_02235738 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02235804: + ldr r1, _02235820 ; =MOD13_02235684 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235818: .word 0x02243164 +_0223581C: .word MOD13_02235738 +_02235820: .word MOD13_02235684 + + arm_func_start MOD13_02235824 +MOD13_02235824: ; 0x02235824 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02235864 ; =0x02243164 + ldr r3, [r1] + ldrb r2, [r3, #0x1d] + add r2, r2, #1 + strb r2, [r3, #0x1d] + ldr r1, [r1] + ldrb r1, [r1, #0x1d] + cmp r1, #8 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r1, _02235868 ; =MOD13_02235794 + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02235864: .word 0x02243164 +_02235868: .word MOD13_02235794 + + arm_func_start MOD13_0223586C +MOD13_0223586C: ; 0x0223586C + stmdb sp!, {r4, lr} + ldr r1, _02235918 ; =0x02243164 + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #8] + bl MOD13_02239ADC + ldr r1, _02235918 ; =0x02243164 + mov r2, r0 + ldr r0, [r1] + ldr r1, _0223591C ; =0x0223F6B0 + ldrb r3, [r0, #0x1c] + mov r0, #0 + add r1, r1, r3, lsl #1 + ldrb r1, [r4, r1] + add r1, r1, #1 + bl MOD13_02239E8C + ldr r0, _02235918 ; =0x02243164 + ldr r2, _02235920 ; =0x0223F698 + ldr r0, [r0] + ldr r1, _02235924 ; =0x0223F718 + ldrb lr, [r0, #0x1c] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #8] + add r2, r2, lr, lsl #1 + ldrb r3, [r4, r2] + add r2, r1, lr, lsl #3 + mvn r1, #0 + mov ip, r3, lsl #2 + ldrh r2, [ip, r2] + ldr r3, _02235928 ; =0x0223F71A + add r3, r3, lr, lsl #3 + ldrh r3, [ip, r3] + bl MOD13_02239888 + ldr r0, _02235918 ; =0x02243164 + mvn r1, #0 + ldr r0, [r0] + mov r2, #0 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #8] + bl MOD13_02239814 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235918: .word 0x02243164 +_0223591C: .word 0x0223F6B0 +_02235920: .word 0x0223F698 +_02235924: .word 0x0223F718 +_02235928: .word 0x0223F71A + + arm_func_start MOD13_0223592C +MOD13_0223592C: ; 0x0223592C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov sb, r1 + bl MOD13_02239AD4 + mov r8, r0 + cmp r8, #0 + mov r7, #0 + addle sp, sp, #0xc + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add fp, sp, #0 + mov r6, r7 + mov r4, r7 + mov r5, #0x200 +_02235964: + mov r0, sl + mov r1, r7 + mov r2, fp + add r3, sp, #4 + bl MOD13_022397DC + ldr r0, [sp, #4] + cmp r0, sb + blt _02235990 + cmp r0, #0xc0 + movlt r2, r6 + blt _02235994 +_02235990: + mov r2, r5 +_02235994: + mov r0, sl + mov r1, r7 + mov r3, r4 + bl MOD13_02239A1C + add r7, r7, #1 + cmp r7, r8 + blt _02235964 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start MOD13_022359B8 +MOD13_022359B8: ; 0x022359B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r1, _02235B4C ; =0x02243164 + mov sl, r0 + ldr r0, [r1] + ldr r1, _02235B50 ; =0x0223F6E8 + ldrb r2, [r0, #0x1c] + ldr r0, [r0] + mov r3, sl + mov r2, r2, lsl #2 + ldrh r2, [r1, r2] + mvn r1, #0 + bl MOD13_02239888 + ldr r1, _02235B4C ; =0x02243164 + ldr r0, _02235B54 ; =0x0223F674 + ldr r5, [r1] + ldr r2, _02235B50 ; =0x0223F6E8 + ldrb r3, [r5, #0x1c] + ldrh r1, [r0, #2] + ldrh r4, [r0] + mov r0, r3, lsl #2 + ldrh r2, [r2, r0] + ldr r0, [r5, #4] + add r3, sl, r1 + add r2, r4, r2 + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _02235B4C ; =0x02243164 + mov r1, sl + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223592C + ldr r0, _02235B4C ; =0x02243164 + mov r1, sl + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223592C + ldr r4, _02235B4C ; =0x02243164 + ldr r8, _02235B58 ; =0x0223F680 + ldr r0, [r4] + mov sb, #0 + ldrb r0, [r0, #0x1c] + ldrb r1, [r8, r0] + cmp r1, #0 + ble _02235AE8 + ldr r7, _02235B5C ; =0x0223F698 + ldr r5, _02235B60 ; =0x0223F718 + ldr fp, _02235B50 ; =0x0223F6E8 + mvn r6, #0 +_02235A7C: + add r1, r7, r0, lsl #1 + ldrb ip, [sb, r1] + add r2, r5, r0, lsl #3 + add r3, fp, r0, lsl #2 + add r0, r2, ip, lsl #2 + ldr r1, [r4] + mov ip, ip, lsl #2 + ldrh r2, [ip, r2] + ldrh r0, [r0, #2] + add r1, r1, sb, lsl #2 + ldrh r3, [r3, #2] + add ip, sl, r0 + ldr r0, [r1, #8] + mov r1, r6 + sub r3, ip, r3 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, sl + add r0, r0, sb, lsl #2 + ldr r0, [r0, #8] + bl MOD13_0223592C + ldr r0, [r4] + add sb, sb, #1 + ldrb r0, [r0, #0x1c] + ldrb r1, [r8, r0] + cmp sb, r1 + blt _02235A7C +_02235AE8: + and r1, sl, #0xff + cmp r1, #0xc0 + movge r3, #0 + movge r1, r3 + ldrlt r2, _02235B64 ; =0x0223F702 + movlt r3, r0, lsl #2 + ldrlth r2, [r2, r3] + mov r5, r0, lsl #2 + add r4, sp, #4 + addlt r3, r1, r2 + ldr r2, _02235B50 ; =0x0223F6E8 + cmp r3, #0xc0 + ldrh r0, [r2, r5] + ldr r2, _02235B68 ; =0x0223F700 + movgt r3, #0xc0 + str r4, [sp] + ldrh r2, [r2, r5] + add r2, r0, r2 + bl MOD13_0223ABA8 + mov r0, #0 + mov r2, r4 + mov r1, r0 + bl MOD13_0223AD38 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02235B4C: .word 0x02243164 +_02235B50: .word 0x0223F6E8 +_02235B54: .word 0x0223F674 +_02235B58: .word 0x0223F680 +_02235B5C: .word 0x0223F698 +_02235B60: .word 0x0223F718 +_02235B64: .word 0x0223F702 +_02235B68: .word 0x0223F700 + + arm_func_start MOD13_02235B6C +MOD13_02235B6C: ; 0x02235B6C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02235BDC ; =0x02243164 + mvn ip, #0 + ldr r3, [r2] + mov r1, r0 + strb ip, [r3, #0x1b] + ldr r3, [r2] + ldrh r0, [r3, #0x18] + add r0, r0, #1 + strh r0, [r3, #0x18] + ldr r0, [r2] + ldrh r0, [r0, #0x18] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + mov r0, #0 + bl MOD13_0223C110 + ldr r1, _02235BE0 ; =MOD13_02235824 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235BDC ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02235BDC: .word 0x02243164 +_02235BE0: .word MOD13_02235824 + + arm_func_start MOD13_02235BE4 +MOD13_02235BE4: ; 0x02235BE4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r5, _02235D20 ; =0x02243164 + ldr sl, _02235D24 ; =0x0223F680 + ldr r0, [r5] + mov r4, #0 + ldrb r1, [r0, #0x1c] + ldrb r0, [sl, r1] + cmp r0, #0 + ble _02235C6C + ldr sb, _02235D28 ; =0x0223F718 + ldr r8, _02235D2C ; =0x0223F698 + ldr r7, _02235D30 ; =0x0223F6BC + add r6, sp, #0 +_02235C1C: + add r0, r8, r1, lsl #1 + ldrb r0, [r4, r0] + add r3, sb, r1, lsl #3 + mov r2, r6 + add r0, r3, r0, lsl #2 + add r1, r7, r1, lsl #2 + bl MOD13_0223AB74 + mov r0, r6 + bl MOD13_0223B2B4 + cmp r0, #0 + ldrne r0, _02235D20 ; =0x02243164 + ldrne r0, [r0] + strneb r4, [r0, #0x1b] + bne _02235C6C + ldr r0, [r5] + add r4, r4, #1 + ldrb r1, [r0, #0x1c] + ldrb r0, [sl, r1] + cmp r4, r0 + blt _02235C1C +_02235C6C: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02235C98 + ldr r0, _02235D20 ; =0x02243164 + ldr r1, _02235D34 ; =0x0223F6A4 + ldr r2, [r0] + ldrb r0, [r2, #0x1c] + mov r0, r0, lsl #1 + ldrsb r0, [r1, r0] + strb r0, [r2, #0x1b] +_02235C98: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02235CC4 + ldr r0, _02235D20 ; =0x02243164 + ldr r1, _02235D38 ; =0x0223F6A5 + ldr r2, [r0] + ldrb r0, [r2, #0x1c] + mov r0, r0, lsl #1 + ldrsb r0, [r1, r0] + strb r0, [r2, #0x1b] +_02235CC4: + ldr r0, _02235D20 ; =0x02243164 + ldr r2, _02235D24 ; =0x0223F680 + ldr r4, [r0] + mov r0, #0 + ldrb r1, [r4, #0x1c] + ldrb r1, [r2, r1] + cmp r1, #0 + ble _02235D10 + ldrsb r3, [r4, #0x1b] +_02235CE8: + cmp r0, r3 + bne _02235CFC + bl MOD13_0223586C + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02235CFC: + ldrb r1, [r4, #0x1c] + add r0, r0, #1 + ldrb r1, [r2, r1] + cmp r0, r1 + blt _02235CE8 +_02235D10: + mvn r0, #0 + strb r0, [r4, #0x1b] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02235D20: .word 0x02243164 +_02235D24: .word 0x0223F680 +_02235D28: .word 0x0223F718 +_02235D2C: .word 0x0223F698 +_02235D30: .word 0x0223F6BC +_02235D34: .word 0x0223F6A4 +_02235D38: .word 0x0223F6A5 + + arm_func_start MOD13_02235D3C +MOD13_02235D3C: ; 0x02235D3C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02235E10 ; =0x02243164 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + ldr r1, _02235E10 ; =0x02243164 + sub r0, r0, #0xc + ldr r1, [r1] + str r0, [sp, #4] + ldrb r2, [r1, #0x1c] + ldr r1, _02235E14 ; =0x0223F6EA + mov r2, r2, lsl #2 + ldrh r1, [r1, r2] + cmp r0, r1 + ble _02235D9C + bl MOD13_022359B8 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02235D9C: + mov r0, r1 + bl MOD13_022359B8 + ldr r0, _02235E10 ; =0x02243164 + ldr r0, [r0] + ldrb r0, [r0, #0x1c] + cmp r0, #5 + bne _02235DDC + mov r0, #0 + ldr r1, _02235E18 ; =MOD13_02235B6C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235E10 ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + b _02235DFC +_02235DDC: + mov r0, #0 + ldr r1, _02235E1C ; =MOD13_02235BE4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235E10 ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] +_02235DFC: + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235E10: .word 0x02243164 +_02235E14: .word 0x0223F6EA +_02235E18: .word MOD13_02235B6C +_02235E1C: .word MOD13_02235BE4 + + arm_func_start MOD13_02235E20 +MOD13_02235E20: ; 0x02235E20 + stmdb sp!, {r4, lr} + ldr r1, _02235E74 ; =0x02243164 + mov r4, r0 + ldr r3, [r1] + ldr r0, _02235E78 ; =0x04000050 + ldrsb r2, [r3, #0x1a] + sub r2, r2, #1 + strb r2, [r3, #0x1a] + ldr r1, [r1] + ldrsb r1, [r1, #0x1a] + bl G2x_ChangeBlendBrightness_ + ldr r1, _02235E74 ; =0x02243164 + mvn r0, #0xb + ldr r1, [r1] + ldrsb r1, [r1, #0x1a] + cmp r1, r0 + ldmgtia sp!, {r4, pc} + ldr r1, _02235E7C ; =MOD13_02235D3C + mov r0, r4 + bl MOD13_0223C130 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235E74: .word 0x02243164 +_02235E78: .word 0x04000050 +_02235E7C: .word MOD13_02235D3C + + arm_func_start MOD13_02235E80 +MOD13_02235E80: ; 0x02235E80 + ldr r0, _02235E98 ; =0x02243164 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02235E98: .word 0x02243164 + + arm_func_start MOD13_02235E9C +MOD13_02235E9C: ; 0x02235E9C + ldr r0, _02235EAC ; =0x02243164 + ldr r0, [r0] + ldrsb r0, [r0, #0x1b] + bx lr + .align 2, 0 +_02235EAC: .word 0x02243164 + + arm_func_start MOD13_02235EB0 +MOD13_02235EB0: ; 0x02235EB0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02235EF4 ; =0x02243164 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0x14] + bl MOD13_0223C110 + ldr r1, _02235EF8 ; =MOD13_02235824 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235EF4 ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02235EF4: .word 0x02243164 +_02235EF8: .word MOD13_02235824 + + arm_func_start MOD13_02235EFC +MOD13_02235EFC: ; 0x02235EFC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + ldr r5, _02236224 ; =0x0223F688 + ldr r4, _02236228 ; =0x0224307C + ldrb sl, [r5] + ldrb sb, [r5, #1] + ldrb r8, [r5, #2] + ldrb r7, [r5, #3] + ldrb r6, [r5, #4] + ldrb r5, [r5, #5] + mov fp, r0 + str r2, [sp, #0x14] + mov r2, r3 + str r1, [sp, #0x10] + ldr r0, [r4] + ldr r3, [sp, #0x50] + mov r1, fp + strb sl, [sp, #0x20] + strb sb, [sp, #0x21] + strb r8, [sp, #0x22] + strb r7, [sp, #0x23] + strb r6, [sp, #0x24] + strb r5, [sp, #0x25] + bl MOD13_0222352C + str r0, [sp, #0x18] + mov r0, #0x20 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _0223622C ; =0x02243164 + ldr r1, [sp, #0x10] + str r0, [r2] + strb r1, [r0, #0x1c] + ldr r1, [r2] + mvn r3, #1 + strb r3, [r1, #0x1b] + ldr r3, [r2] + ldr r2, [sp, #0x14] + ldr r0, _02236230 ; =0x04000050 + strb r2, [r3, #0x1e] + mov r1, #0x1f + mov r2, #0 + bl G2x_SetBlendBrightness_ + mov r0, #0 + ldr r3, _02236234 ; =0x0223F678 + ldr r1, [sp, #0x10] + mov r2, r0 + ldrb r1, [r3, r1] + bl MOD13_02239E0C + ldr r3, _0223622C ; =0x02243164 + mvn r1, #0 + ldr r4, [r3] + mov r2, #0x100 + str r0, [r4] + ldr r0, [r3] + mov r3, #0 + ldr r0, [r0] + bl MOD13_02239888 + ldr r0, _0223622C ; =0x02243164 + mvn r1, #0 + ldr r0, [r0] + mov r2, #0 + ldr r0, [r0] + bl MOD13_02239814 + ldr r2, _02236238 ; =0x0223F680 + ldr r0, [sp, #0x10] + mov sl, #0 + ldrb r0, [r2, r0] + cmp r0, #0 + ble _0223609C + ldr r0, [sp, #0x10] + ldr r1, _0223623C ; =0x0223F6B0 + ldr r4, _0223622C ; =0x02243164 + add r8, r2, r0 + add sb, r1, r0, lsl #1 + str sl, [sp, #0x1c] + mov r5, sl + mov fp, sl + mvn r7, #0 + mov r6, #0x100 +_02236038: + ldr r0, [sp, #0x1c] + ldrb r1, [sb] + mov r2, r0 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r7 + add r2, r2, sl, lsl #2 + str r0, [r2, #8] + ldr r0, [r4] + mov r2, r6 + add r0, r0, sl, lsl #2 + ldr r0, [r0, #8] + mov r3, r5 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, r7 + add r0, r0, sl, lsl #2 + ldr r0, [r0, #8] + mov r2, fp + bl MOD13_02239814 + ldrb r0, [r8] + add sl, sl, #1 + add sb, sb, #1 + cmp sl, r0 + blt _02236038 +_0223609C: + add r1, sp, #0x28 + str r1, [sp] + mov r0, #0 + mov r1, #0x20 + mov r2, #0xc + mov r3, #1 + str r0, [sp, #4] + bl MOD13_0223A9A4 + ldr r1, _0223622C ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x10] + mov r0, #0 + ldr r1, [sp, #0x28] + mov r2, r0 + bl MOD13_02239B74 + ldr r1, _0223622C ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #4] + bl MOD13_0221EF88 + ldr r1, [sp, #0x10] + mov r3, #2 + mov r5, r1, lsl #2 + ldr r1, _02236240 ; =0x0223F6D2 + ldr r2, _0223622C ; =0x02243164 + ldrh r4, [r1, r5] + mov r1, #0 + str r4, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x18] + ldr r3, _02236244 ; =0x0223F6D0 + str r0, [sp, #0xc] + ldr r0, [r2] + ldrh r3, [r3, r5] + ldr r0, [r0, #0x10] + mov r2, r1 + bl MOD13_0223A4F0 + ldr r0, _0223622C ; =0x02243164 + mov r2, #0 + ldr r3, [r0] + mov r1, #0x100 + str r2, [sp] + ldr r0, [r3, #0x10] + ldr r3, [r3, #4] + bl MOD13_0223A440 + mov r0, #0 + mov r1, r0 + mov r2, #0x1f + mov r3, r0 + bl MOD13_0223ABCC + ldr r3, _0223622C ; =0x02243164 + add r4, sp, #0x20 + ldr r3, [r3] + mov r0, #0 + ldrb r3, [r3, #0x1c] + mov r1, #1 + mov r2, #0x1f + ldrb r3, [r4, r3] + bl MOD13_0223ABCC + mov r0, #0 + mov r1, #3 + mov r2, #0x1f + mov r3, #1 + bl MOD13_0223ABCC + ldr r2, _02236248 ; =0x0223F690 + mov r0, #0 + mov r1, #1 + bl MOD13_0223AD38 + mov r0, #0xc0 + bl MOD13_022359B8 + mov r2, #0x4000000 + ldr r0, [sp, #0x14] + ldr r1, [r2] + cmp r0, #0 + bic r0, r1, #0xe000 + orr r0, r0, #0x6000 + str r0, [r2] + beq _022361FC + ldr r1, _0223624C ; =MOD13_02235E20 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0223622C ; =0x02243164 + add sp, sp, #0x2c + ldr r1, [r1] + str r0, [r1, #0x14] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022361FC: + ldr r1, _02236250 ; =MOD13_02235D3C + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0223622C ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02236224: .word 0x0223F688 +_02236228: .word 0x0224307C +_0223622C: .word 0x02243164 +_02236230: .word 0x04000050 +_02236234: .word 0x0223F678 +_02236238: .word 0x0223F680 +_0223623C: .word 0x0223F6B0 +_02236240: .word 0x0223F6D2 +_02236244: .word 0x0223F6D0 +_02236248: .word 0x0223F690 +_0223624C: .word MOD13_02235E20 +_02236250: .word MOD13_02235D3C + + arm_func_start MOD13_02236254 +MOD13_02236254: ; 0x02236254 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02236310 ; =0x02243168 + mov r5, #1 + ldr lr, [r1] + ldrh r4, [lr, #2] + mov ip, r5 + add r1, lr, #0x24 + mov r6, #0x1e +_02236274: + mov r2, ip, lsl r5 + ands r2, r4, r2 + beq _022362F4 + sub r2, r5, #1 + mul r3, r2, r6 + ldrb r8, [r0] + ldrb r7, [r1, r3] + add r2, r1, r3 + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #1] + ldrb r7, [r2, #1] + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #2] + ldrb r7, [r2, #2] + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #3] + ldrb r7, [r2, #3] + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #4] + ldrb r7, [r2, #4] + cmp r8, r7 + bne _022362F4 + ldrb r7, [r0, #5] + ldrb r2, [r2, #5] + cmp r7, r2 + addeq r0, lr, r3 + ldreqh r0, [r0, #0x2a] + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_022362F4: + add r2, r5, #1 + mov r2, r2, lsl #0x10 + mov r5, r2, lsr #0x10 + cmp r5, #2 + blo _02236274 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02236310: .word 0x02243168 + + arm_func_start MOD13_02236314 +MOD13_02236314: ; 0x02236314 + ldr r1, _02236344 ; =0x02243168 + mov r2, #1 + ldr r3, [r1] + mov r1, r2, lsl r0 + ldrh r2, [r3, #2] + ands r1, r2, r1 + subne r1, r0, #1 + addne r2, r3, #0xe + movne r0, #0x1e + mlane r0, r1, r0, r2 + moveq r0, #0 + bx lr + .align 2, 0 +_02236344: .word 0x02243168 + + arm_func_start MOD13_02236348 +MOD13_02236348: ; 0x02236348 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02236410 ; =0x02243168 + mov r2, #1 + ldr r3, [r1] + mov r1, r2, lsl r4 + mov r1, r1, lsl #0x10 + ldrh r2, [r3, #2] + mov r4, r1, lsr #0x10 + mov r5, r0 + ands r1, r2, r4 + bne _02236390 + bl OS_RestoreInterrupts + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_02236390: + add r1, sp, #0 + mov r0, r3 + mov r2, #0xe + bl MI_CpuCopy8 + mov r0, r5 + bl OS_RestoreInterrupts + ldrh r0, [sp, #4] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #2 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #6] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #3 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #8] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #4 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #0xa] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #5 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #0xc] + ands r0, r0, r4 + movne r0, #6 + moveq r0, #1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236410: .word 0x02243168 + + arm_func_start MOD13_02236414 +MOD13_02236414: ; 0x02236414 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _02236468 ; =0x02243168 + ldr r1, _0223646C ; =0x0224316C + ldr r2, [r2] + add r5, r2, #2 + add r4, r2, #4 + add lr, r2, #6 + add ip, r2, #8 + add r3, r2, #0xa + add r2, r2, #0xc + str r5, [r1] + str r4, [r1, #4] + str lr, [r1, #8] + str ip, [r1, #0xc] + str r3, [r1, #0x10] + str r2, [r1, #0x14] + ldr r0, [r1, r0, lsl #2] + ldrh r0, [r0] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236468: .word 0x02243168 +_0223646C: .word 0x0224316C + + arm_func_start MOD13_02236470 +MOD13_02236470: ; 0x02236470 + ldr r0, _02236480 ; =0x02243168 + ldr r0, [r0] + ldrh r0, [r0] + bx lr + .align 2, 0 +_02236480: .word 0x02243168 + + arm_func_start MOD13_02236484 +MOD13_02236484: ; 0x02236484 + ldr r1, _02236494 ; =0x02243168 + ldr r1, [r1] + strh r0, [r1] + bx lr + .align 2, 0 +_02236494: .word 0x02243168 + + arm_func_start MOD13_02236498 +MOD13_02236498: ; 0x02236498 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r2 + cmp r1, #0xe + addls pc, pc, r1, lsl #2 + b _022367CC +_022364B0: ; jump table + b _022367CC ; case 0 + ldmia sp!, {r4, r5, r6, pc} ; case 1 + b _022364EC ; case 2 + b _02236574 ; case 3 + ldmia sp!, {r4, r5, r6, pc} ; case 4 + ldmia sp!, {r4, r5, r6, pc} ; case 5 + ldmia sp!, {r4, r5, r6, pc} ; case 6 + b _022366AC ; case 7 + ldmia sp!, {r4, r5, r6, pc} ; case 8 + b _022366DC ; case 9 + b _022365FC ; case 10 + ldmia sp!, {r4, r5, r6, pc} ; case 11 + b _02236724 ; case 12 + b _02236780 ; case 13 + b _02236668 ; case 14 +_022364EC: + bl MOD13_02236470 + cmp r0, #2 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, _022367D4 ; =0x02243168 + ldr r6, [r0] + bl OS_DisableInterrupts + ldrh r2, [r6, #2] + mov r1, #1 + orr r1, r2, r1, lsl r5 + strh r1, [r6, #2] + bl OS_RestoreInterrupts + ldr r1, _022367D4 ; =0x02243168 + sub r3, r5, #1 + mov r0, #0x1e + mul r0, r3, r0 + ldr r2, [r1] + add r3, r2, #0x24 + ldrb r2, [r4, #0xa] + add ip, r3, r0 + strb r2, [r3, r0] + ldrb r2, [r4, #0xb] + strb r2, [ip, #1] + ldrb r2, [r4, #0xc] + strb r2, [ip, #2] + ldrb r2, [r4, #0xd] + strb r2, [ip, #3] + ldrb r2, [r4, #0xe] + strb r2, [ip, #4] + ldrb r2, [r4, #0xf] + strb r2, [ip, #5] + ldr r1, [r1] + add r0, r1, r0 + strh r5, [r0, #0x2a] + ldmia sp!, {r4, r5, r6, pc} +_02236574: + bl MOD13_02236348 + cmp r0, #6 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #1 + mvn r0, r0, lsl r5 + mov r4, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _022367D4 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r4, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r4, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r4, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r4, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r4, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r4, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + ldmia sp!, {r4, r5, r6, pc} +_022365FC: + bl MOD13_02236470 + cmp r0, #2 + beq _02236614 + mov r0, r5 + bl MOD13_02236B38 + ldmia sp!, {r4, r5, r6, pc} +_02236614: + ldr r0, _022367D4 ; =0x02243168 + mov r1, #1 + ldr r3, [r0] + mov r0, r5 + ldrh r2, [r3, #4] + orr r1, r2, r1, lsl r5 + strh r1, [r3, #4] + bl MOD13_02236C1C + mov r0, r5 + bl MOD13_022132CC + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, _022367D4 ; =0x02243168 + sub r2, r5, #1 + ldr r3, [r1] + mov r1, #0x1e + add r3, r3, #0xe + mla r1, r2, r1, r3 + mov r2, #0x16 + bl MI_CpuCopy8 + ldmia sp!, {r4, r5, r6, pc} +_02236668: + ldr r0, _022367D4 ; =0x02243168 + mov r4, #1 + ldr r3, [r0] + mvn r1, r4, lsl r5 + ldrh r2, [r3, #4] + and r1, r2, r1 + strh r1, [r3, #4] + ldr r1, [r0] + ldrh r0, [r1, #6] + orr r0, r0, r4, lsl r5 + strh r0, [r1, #6] + bl MOD13_02236470 + cmp r0, #3 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl MOD13_02236A54 + ldmia sp!, {r4, r5, r6, pc} +_022366AC: + ldr r0, _022367D4 ; =0x02243168 + mov r4, #1 + ldr r3, [r0] + mvn r1, r4, lsl r5 + ldrh r2, [r3, #8] + and r1, r2, r1 + strh r1, [r3, #8] + ldr r1, [r0] + ldrh r0, [r1, #0xa] + orr r0, r0, r4, lsl r5 + strh r0, [r1, #0xa] + ldmia sp!, {r4, r5, r6, pc} +_022366DC: + ldr r0, _022367D4 ; =0x02243168 + mov r4, #1 + ldr r3, [r0] + mvn r1, r4, lsl r5 + ldrh r2, [r3, #0xa] + and r1, r2, r1 + strh r1, [r3, #0xa] + ldr r2, [r0] + ldrh r1, [r2, #0xc] + orr r1, r1, r4, lsl r5 + strh r1, [r2, #0xc] + ldr r0, [r0] + ldrh r1, [r0, #2] + ldrh r0, [r0, #0xc] + cmp r1, r0 + ldmneia sp!, {r4, r5, r6, pc} + bl MOD13_02214F18 + ldmia sp!, {r4, r5, r6, pc} +_02236724: + bl MOD13_02236470 + cmp r0, #4 + bne _0223673C + mov r0, #5 + bl MOD13_02236484 + b _02236744 +_0223673C: + mov r0, #0 + bl MOD13_02236484 +_02236744: + ldr r0, _022367D4 ; =0x02243168 + ldr r0, [r0] + add r0, r0, #0x1b000 + ldr r1, [r0, #0x144] + cmp r1, #0 + movne r1, #0 + strne r1, [r0, #0x144] + ldr r0, _022367D4 ; =0x02243168 + ldr r0, [r0] + add r0, r0, #0x1b000 + ldr r1, [r0, #0x140] + cmp r1, #0 + movne r1, #0 + strne r1, [r0, #0x140] + ldmia sp!, {r4, r5, r6, pc} +_02236780: + ldrh r0, [r4] + cmp r0, #8 + bgt _022367B8 + cmp r0, #8 + ldmgeia sp!, {r4, r5, r6, pc} + cmp r0, #2 + ldmgtia sp!, {r4, r5, r6, pc} + cmp r0, #1 + ldmltia sp!, {r4, r5, r6, pc} + cmp r0, #1 + beq _022367C0 + cmp r0, #2 + beq _022367C0 + ldmia sp!, {r4, r5, r6, pc} +_022367B8: + cmp r0, #9 + ldmneia sp!, {r4, r5, r6, pc} +_022367C0: + mov r0, #7 + bl MOD13_02236484 + ldmia sp!, {r4, r5, r6, pc} +_022367CC: + bl OS_Terminate + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022367D4: .word 0x02243168 + + arm_func_start MOD13_022367D8 +MOD13_022367D8: ; 0x022367D8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #6 + bl MOD13_02236484 + bl MOD13_02214F18 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_022367F4 +MOD13_022367F4: ; 0x022367F4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, #0 + mov sb, #1 + ldr r4, _022368F8 ; =0x02243168 + mov r6, sb + mov r5, #3 +_02236810: + ldr r0, [r4] + mov r7, r6, lsl sb + ldrh r0, [r0, #0xa] + ands r0, r0, r7 + beq _022368BC + mov r0, sb + mov r1, r5 + bl MOD13_02213174 + cmp r0, #0 + orrne r0, r8, r7 + movne r0, r0, lsl #0x10 + movne r8, r0, lsr #0x10 + bne _022368BC + mvn r0, r7 + mov r7, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r2, [r4] + ldrh r1, [r2, #2] + and r1, r1, r7, lsr #16 + strh r1, [r2, #2] + ldr r2, [r4] + ldrh r1, [r2, #4] + and r1, r1, r7, lsr #16 + strh r1, [r2, #4] + ldr r2, [r4] + ldrh r1, [r2, #6] + and r1, r1, r7, lsr #16 + strh r1, [r2, #6] + ldr r2, [r4] + ldrh r1, [r2, #8] + and r1, r1, r7, lsr #16 + strh r1, [r2, #8] + ldr r2, [r4] + ldrh r1, [r2, #0xa] + and r1, r1, r7, lsr #16 + strh r1, [r2, #0xa] + ldr r2, [r4] + ldrh r1, [r2, #0xc] + and r1, r1, r7, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, sb + bl MOD13_02214D6C +_022368BC: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, lsr #0x10 + cmp sb, #0x10 + blo _02236810 + cmp r8, #0 + bne _022368E8 + mov r0, #7 + bl MOD13_02236484 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022368E8: + mov r0, #4 + bl MOD13_02236484 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022368F8: .word 0x02243168 + + arm_func_start MOD13_022368FC +MOD13_022368FC: ; 0x022368FC + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _02236964 ; =0x02243168 + ldr r0, [r4] + ldrh r0, [r0, #2] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r6, #1 + mov r5, r6 +_02236920: + ldr r1, [r4] + mov r0, r5, lsl r6 + ldrh r1, [r1, #2] + ands r0, r1, r0 + beq _02236948 + mov r0, r6 + bl MOD13_02213270 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} +_02236948: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, #0x10 + blo _02236920 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02236964: .word 0x02243168 + + arm_func_start MOD13_02236968 +MOD13_02236968: ; 0x02236968 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02236484 + mov r5, #1 + ldr r7, _02236A50 ; =0x02243168 + mov r4, r5 +_02236984: + ldr r1, [r7] + mov r2, r4, lsl r5 + ldrh r0, [r1, #2] + ands r0, r0, r2 + beq _02236A34 + ldrh r0, [r1, #4] + ands r0, r0, r2 + bne _02236A34 + ldrh r0, [r1, #6] + ands r0, r0, r2 + bne _02236A2C + mvn r0, r2 + mov r6, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r2, [r7] + ldrh r1, [r2, #2] + and r1, r1, r6, lsr #16 + strh r1, [r2, #2] + ldr r2, [r7] + ldrh r1, [r2, #4] + and r1, r1, r6, lsr #16 + strh r1, [r2, #4] + ldr r2, [r7] + ldrh r1, [r2, #6] + and r1, r1, r6, lsr #16 + strh r1, [r2, #6] + ldr r2, [r7] + ldrh r1, [r2, #8] + and r1, r1, r6, lsr #16 + strh r1, [r2, #8] + ldr r2, [r7] + ldrh r1, [r2, #0xa] + and r1, r1, r6, lsr #16 + strh r1, [r2, #0xa] + ldr r2, [r7] + ldrh r1, [r2, #0xc] + and r1, r1, r6, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r5 + bl MOD13_02214D6C + b _02236A34 +_02236A2C: + mov r0, r5 + bl MOD13_02236A54 +_02236A34: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 + cmp r5, #0x10 + blo _02236984 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02236A50: .word 0x02243168 + + arm_func_start MOD13_02236A54 +MOD13_02236A54: ; 0x02236A54 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #2 + mov r4, r0 + bl MOD13_02213174 + cmp r0, #0 + bne _02236AF8 + mov r0, #1 + mvn r0, r0, lsl r4 + mov r5, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _02236B34 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r5, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r5, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r5, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r5, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r5, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r5, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + bl MOD13_02214D6C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02236AF8: + bl OS_DisableInterrupts + ldr r1, _02236B34 ; =0x02243168 + mov ip, #1 + ldr r5, [r1] + mvn r2, ip, lsl r4 + ldrh r3, [r5, #6] + and r2, r3, r2 + strh r2, [r5, #6] + ldr r2, [r1] + ldrh r1, [r2, #8] + orr r1, r1, ip, lsl r4 + strh r1, [r2, #8] + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236B34: .word 0x02243168 + + arm_func_start MOD13_02236B38 +MOD13_02236B38: ; 0x02236B38 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #0 + mov r4, r0 + bl MOD13_02213174 + cmp r0, #0 + bne _02236BDC + mov r0, #1 + mvn r0, r0, lsl r4 + mov r5, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _02236C18 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r5, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r5, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r5, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r5, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r5, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r5, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + bl MOD13_02214D6C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02236BDC: + bl OS_DisableInterrupts + ldr r1, _02236C18 ; =0x02243168 + mov r2, #1 + ldr r3, [r1] + mvn r4, r2, lsl r4 + ldrh r2, [r3, #4] + and r2, r2, r4 + strh r2, [r3, #4] + ldr r2, [r1] + ldrh r1, [r2, #2] + and r1, r1, r4 + strh r1, [r2, #2] + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236C18: .word 0x02243168 + + arm_func_start MOD13_02236C1C +MOD13_02236C1C: ; 0x02236C1C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #1 + mov r4, r0 + bl MOD13_02213174 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #1 + mvn r0, r0, lsl r4 + mov r5, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _02236CC4 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r5, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r5, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r5, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r5, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r5, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r5, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + bl MOD13_02214D6C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236CC4: .word 0x02243168 + + arm_func_start MOD13_02236CC8 +MOD13_02236CC8: ; 0x02236CC8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + mov r6, r0 + ldr r0, [r6] + mov r4, #0 + cmp r0, #0 + moveq r5, r4 + beq _02236D10 + add r0, sp, #0 + bl FS_InitFile + ldr r1, [r6] + add r0, sp, #0 + bl FS_OpenFile + cmp r0, #0 + addeq sp, sp, #0x48 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, sp, #0 +_02236D10: + mov r0, r5 + bl MOD13_0221411C + cmp r0, #0 + beq _02236D7C + ldr r1, _02236D98 ; =0x02243168 + ldr r0, [r1] + add r2, r0, #0x2c + add r0, r0, #0x1b000 + str r2, [r0, #0x144] + ldr r0, [r1] + add r0, r0, #0x1b000 + ldr r1, [r0, #0x144] + cmp r1, #0 + beq _02236D7C + mov r0, r5 + mov r2, #0x10000 + bl MOD13_02213CB0 + cmp r0, #0 + beq _02236D7C + ldr r1, _02236D98 ; =0x02243168 + mov r0, r6 + ldr r1, [r1] + add r1, r1, #0x1b000 + ldr r1, [r1, #0x144] + bl MOD13_02213944 + cmp r0, #0 + movne r4, #1 +_02236D7C: + add r0, sp, #0 + cmp r5, r0 + bne _02236D8C + bl FS_CloseFile +_02236D8C: + mov r0, r4 + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02236D98: .word 0x02243168 + + arm_func_start MOD13_02236D9C +MOD13_02236D9C: ; 0x02236D9C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + mov r0, #2 + bl MOD13_02236484 + mov r0, r4 + bl MOD13_02215028 + cmp r0, #0 + beq _02236DD4 + mov r0, #7 + bl MOD13_02236484 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02236DD4: + mov r0, r5 + bl MOD13_02236CC8 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_02236DF4 +MOD13_02236DF4: ; 0x02236DF4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x7c + mov r5, r0 + add r0, sp, #0x28 + mov r4, r1 + bl OS_GetOwnerInfo + ldrb r2, [sp, #4] + ldrb r1, [sp, #0x29] + ldrh r3, [sp, #0x40] + bic r2, r2, #0xf + and r1, r1, #0xf + orr r2, r2, r1 + strb r2, [sp, #4] + add r0, sp, #0x2c + add r1, sp, #6 + mov r2, r3, lsl #1 + strb r3, [sp, #5] + bl MI_CpuCopy8 + ldrb r0, [sp, #4] + add ip, sp, #0x1a + mov r1, #0 + bic r0, r0, #0xf0 + strb r0, [sp, #4] + strh r1, [ip] + strh r1, [ip, #2] + strh r1, [ip, #4] + strh r1, [ip, #6] + strh r1, [ip, #8] + strh r1, [ip, #0xa] + ldr r0, _02236F04 ; =0x02243168 + strh r1, [ip, #0xc] + ldr lr, [r0] + mov r2, #3 + mov r3, lr +_02236E7C: + ldrh r1, [ip], #2 + ldrh r0, [ip], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + strh r0, [r3], #2 + bne _02236E7C + ldrh r2, [ip] + ldr r0, _02236F08 ; =0x00010040 + add r1, lr, #0x1b000 + strh r2, [r3] + add r0, lr, r0 + str r0, [r1, #0x140] + mov r1, #2 + str r1, [sp] + ldr r0, _02236F04 ; =0x02243168 + add r1, sp, #4 + ldr r0, [r0] + mov r2, r5 + add r0, r0, #0x1b000 + ldr r0, [r0, #0x140] + mov r3, r4 + bl MOD13_02215474 + cmp r0, #0 + beq _02236EE0 + bl OS_Terminate +_02236EE0: + mov r0, #0x100 + mov r1, #1 + bl MOD13_02215360 + ldr r0, _02236F0C ; =MOD13_02236498 + bl MOD13_02213368 + mov r0, #1 + bl MOD13_02236484 + add sp, sp, #0x7c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236F04: .word 0x02243168 +_02236F08: .word 0x00010040 +_02236F0C: .word MOD13_02236498 + + arm_func_start MOD13_02236F10 +MOD13_02236F10: ; 0x02236F10 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02236F54 ; =0x02243168 + ldr r1, _02236F58 ; =0x0001B160 + str r0, [r2] + add r0, r0, r1 + bl MOD13_0223831C + ldr r1, _02236F54 ; =0x02243168 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x1b000 + str r2, [r0, #0x140] + ldr r0, [r1] + add r0, r0, #0x1b000 + str r2, [r0, #0x144] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02236F54: .word 0x02243168 +_02236F58: .word 0x0001B160 + + arm_func_start MOD13_02236F5C +MOD13_02236F5C: ; 0x02236F5C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02236FB0 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #1 + beq _02236F7C + bl OS_Terminate +_02236F7C: + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02236FB4 ; =MOD13_0223794C + bl WM_End + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02236FB0: .word 0x02243188 +_02236FB4: .word MOD13_0223794C + + arm_func_start MOD13_02236FB8 +MOD13_02236FB8: ; 0x02236FB8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022370F8 ; =0x02243188 + ldr r0, [r0] + ldr r2, [r0, #0x40] + cmp r2, #1 + bne _02236FFC + ldr r0, _022370FC ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _02237100 ; =0x022407D0 + mov r0, #0x8000000 + blx r2 + add sp, sp, #4 + ldmia sp!, {pc} +_02236FFC: + ldr r0, _022370FC ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237018 + ldr r1, _02237104 ; =0x022407F4 + mov r0, #0x8000000 + blx r3 +_02237018: + ldr r0, _022370F8 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #6 + beq _02237050 + cmp r0, #5 + beq _02237050 + cmp r0, #4 + beq _02237050 + mov r0, #3 + bl MOD13_02238294 + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_02237050: + mov r0, #3 + bl MOD13_02238294 + ldr r0, _022370F8 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x44] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022370F0 +_02237070: ; jump table + b _022370DC ; case 0 + b _022370A4 ; case 1 + b _022370C0 ; case 2 + b _02237088 ; case 3 + b _022370DC ; case 4 + b _022370A4 ; case 5 +_02237088: + bl MOD13_02237AE4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_022370A4: + bl MOD13_02237AA8 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_022370C0: + bl MOD13_02237C48 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_022370DC: + bl MOD13_02237C0C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 +_022370F0: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022370F8: .word 0x02243188 +_022370FC: .word 0x02243184 +_02237100: .word 0x022407D0 +_02237104: .word 0x022407F4 + + arm_func_start MOD13_02237108 +MOD13_02237108: ; 0x02237108 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022379B4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237130 +MOD13_02237130: ; 0x02237130 + stmdb sp!, {r4, lr} + ldr r1, _022371CC ; =0x02243188 + ldr r2, _022371D0 ; =0x000013E0 + ldr r3, [r1] + mov r1, r0 + add r0, r3, r2 + add r2, r3, #0x1c00 + bl WM_StepDataSharing + mov r4, r0 + cmp r4, #7 + bne _02237180 + ldr r0, _022371D4 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _02237178 + ldr r1, _022371D8 ; =0x02240818 + mov r0, #0x8000000 + blx r2 +_02237178: + mov r0, #0 + ldmia sp!, {r4, pc} +_02237180: + cmp r4, #5 + bne _022371B4 + ldr r0, _022371D4 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _022371A4 + ldr r1, _022371DC ; =0x02240848 + mov r0, #0x8000000 + blx r2 +_022371A4: + mov r0, r4 + bl MOD13_02238274 + mov r0, #0 + ldmia sp!, {r4, pc} +_022371B4: + cmp r4, #0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + bl MOD13_02238274 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022371CC: .word 0x02243188 +_022371D0: .word 0x000013E0 +_022371D4: .word 0x02243184 +_022371D8: .word 0x02240818 +_022371DC: .word 0x02240848 + + arm_func_start MOD13_022371E0 +MOD13_022371E0: ; 0x022371E0 + ldr r2, _02237200 ; =0x02243188 + ldr r1, _02237204 ; =0x000013E0 + ldr r3, [r2] + ldr ip, _02237208 ; =0x020DA048 + mov r2, r0 + add r0, r3, r1 + add r1, r3, #0x1c00 + bx ip + .align 2, 0 +_02237200: .word 0x02243188 +_02237204: .word 0x000013E0 +_02237208: .word 0x020DA048 + + arm_func_start MOD13_0223720C +MOD13_0223720C: ; 0x0223720C + ldr r1, _0223721C ; =0x02243188 + ldr r1, [r1] + str r0, [r1, #0x4c] + bx lr + .align 2, 0 +_0223721C: .word 0x02243188 + + arm_func_start MOD13_02237220 +MOD13_02237220: ; 0x02237220 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _02237398 ; =0x02243188 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + ldr r0, [r0, #0x40] + mov r4, r2 + cmp r0, #1 + beq _02237248 + bl OS_Terminate +_02237248: + ldr r2, _02237398 ; =0x02243188 + mov r1, #0x180 + ldr r0, [r2] + mov r3, #0xe0 + add r0, r0, #0x1000 + str r1, [r0, #0x2a4] + ldr r0, [r2] + ldr r1, _0223739C ; =0x02243184 + add r0, r0, #0x1000 + str r3, [r0, #0x2a0] + ldr r3, [r1] + cmp r3, #0 + beq _02237294 + ldr r0, [r2] + ldr r1, _022373A0 ; =0x0224087C + add r0, r0, #0x1000 + ldr r2, [r0, #0x2a4] + mov r0, #0x8000000 + blx r3 +_02237294: + ldr r0, _0223739C ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _022372C0 + ldr r0, _02237398 ; =0x02243188 + ldr r1, _022373A4 ; =0x02240894 + ldr r2, [r0] + mov r0, #0x8000000 + add r2, r2, #0x1000 + ldr r2, [r2, #0x2a0] + blx r3 +_022372C0: + ldr r1, _02237398 ; =0x02243188 + mov r0, #3 + ldr r1, [r1] + str r6, [r1, #0x44] + bl MOD13_02238294 + ldr r0, _02237398 ; =0x02243188 + ldr r1, [r0] + strh r5, [r1, #0xc] + ldr r0, [r0] + strh r4, [r0, #0x32] + bl WM_GetDispersionBeaconPeriod + ldr r1, _02237398 ; =0x02243188 + mov r2, #0xd0 + ldr r3, [r1] + mov r4, #0x44 + strh r0, [r3, #0x18] + ldr r0, [r1] + mov r3, #2 + strh r2, [r0, #0x34] + ldr r0, [r1] + mov r2, #0 + strh r4, [r0, #0x36] + ldr r0, [r1] + mov r4, #1 + strh r3, [r0, #0x10] + ldr r0, [r1] + cmp r6, #2 + strh r2, [r0, #0x16] + ldr r0, [r1] + strh r2, [r0, #0x12] + ldr r0, [r1] + strh r4, [r0, #0xe] + ldr r0, _02237398 ; =0x02243188 + movne r4, r2 + ldr r0, [r0] + cmp r6, #0 + strh r4, [r0, #0x14] + beq _02237368 + cmp r6, #2 + beq _02237368 + cmp r6, #4 + bne _02237370 +_02237368: + bl MOD13_02238224 + ldmia sp!, {r4, r5, r6, pc} +_02237370: + ldr r0, _0223739C ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237390 + ldr r1, _022373A8 ; =0x022408AC + mov r2, r6 + mov r0, #0x8000000 + blx r3 +_02237390: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02237398: .word 0x02243188 +_0223739C: .word 0x02243184 +_022373A0: .word 0x0224087C +_022373A4: .word 0x02240894 +_022373A8: .word 0x022408AC + + arm_func_start MOD13_022373AC +MOD13_022373AC: ; 0x022373AC + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _022373D4 + bl MOD13_02238274 + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_022373D4: + ldr r0, _02237408 ; =MOD13_02237464 + bl WM_SetIndCallback + cmp r0, #0 + beq _022373F8 + bl MOD13_02238274 + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_022373F8: + mov r0, #1 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237408: .word MOD13_02237464 + + arm_func_start MOD13_0223740C +MOD13_0223740C: ; 0x0223740C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _0223745C ; =0x02243188 + ldr r1, _02237460 ; =MOD13_022373AC + ldr r0, [r0] + mov r2, #2 + add r0, r0, #0x80 + bl WM_Initialize + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0xa + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223745C: .word 0x02243188 +_02237460: .word MOD13_022373AC + + arm_func_start MOD13_02237464 +MOD13_02237464: ; 0x02237464 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #8 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237490 +MOD13_02237490: ; 0x02237490 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _0223750C ; =0x02243188 + mov r0, #0 + ldr r1, [r2] + mov r3, #1 + add r1, r1, #0x1000 + str r0, [r1, #0x2a4] + ldr r1, [r2] + add r1, r1, #0x1000 + str r0, [r1, #0x2a0] + ldr r1, [r2] + str r0, [r1, #0x48] + ldr r1, [r2] + strh r0, [r1, #0x50] + ldr r1, [r2] + strh r3, [r1, #0x52] + ldr r1, [r2] + str r0, [r1, #0x54] + ldr r1, [r2] + str r0, [r1] + ldr r1, [r2] + strh r0, [r1, #4] + ldr r1, [r2] + str r0, [r1, #0x4c] + bl MOD13_0223740C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223750C: .word 0x02243188 + + arm_func_start MOD13_02237510 +MOD13_02237510: ; 0x02237510 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, #0 + mov r2, r4 + mov r5, r4 + mov r3, #1 +_02237528: + mov r1, r3, lsl r5 + ands r1, r0, r1 + beq _0223754C + add r1, r5, #1 + add r2, r2, #1 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x10 + mov r4, r1, asr #0x10 + mov r2, r2, lsr #0x10 +_0223754C: + add r1, r5, #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 + cmp r5, #0x10 + blt _02237528 + cmp r2, #1 + addls sp, sp, #4 + movls r0, r4 + ldmlsia sp!, {r4, r5, pc} + ldr lr, _022375FC ; =0x02243188 + ldr r3, _02237600 ; =0x00010DCD + ldr r5, [lr] + ldr ip, _02237604 ; =0x00003039 + ldr r4, [r5, #0x58] + mov r1, #0 + mla r3, r4, r3, ip + str r3, [r5, #0x58] + ldr r3, [lr] + ldr r3, [r3, #0x58] + and r3, r3, #0xff + mul r3, r2, r3 + mov r2, r3, lsl #8 + mov r3, r2, lsr #0x10 +_022375A8: + ands r2, r0, #1 + beq _022375D4 + cmp r3, #0 + addeq r0, r1, #1 + moveq r0, r0, lsl #0x10 + addeq sp, sp, #4 + moveq r0, r0, asr #0x10 + ldmeqia sp!, {r4, r5, pc} + sub r2, r3, #1 + mov r2, r2, lsl #0x10 + mov r3, r2, lsr #0x10 +_022375D4: + add r1, r1, #1 + mov r1, r1, lsl #0x10 + mov r0, r0, lsl #0xf + mov r1, r1, asr #0x10 + cmp r1, #0x10 + mov r0, r0, lsr #0x10 + blt _022375A8 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022375FC: .word 0x02243188 +_02237600: .word 0x00010DCD +_02237604: .word 0x00003039 + + arm_func_start MOD13_02237608 +MOD13_02237608: ; 0x02237608 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237684 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #7 + beq _02237628 + bl OS_Terminate +_02237628: + mov r0, #1 + bl MOD13_02238294 + ldr r0, _02237684 ; =0x02243188 + ldr r0, [r0] + ldrh r0, [r0, #0x60] + bl MOD13_02237510 + ldr r2, _02237684 ; =0x02243188 + ldr r1, _02237688 ; =0x02243184 + ldr r3, [r2] + strh r0, [r3, #0x5c] + ldr r3, [r1] + cmp r3, #0 + beq _02237670 + ldr r0, [r2] + ldr r1, _0223768C ; =0x022408C8 + ldrh r2, [r0, #0x5c] + mov r0, #0x8000000 + blx r3 +_02237670: + ldr r0, _02237684 ; =0x02243188 + ldr r0, [r0] + ldrh r0, [r0, #0x5c] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237684: .word 0x02243188 +_02237688: .word 0x02243184 +_0223768C: .word 0x022408C8 + + arm_func_start MOD13_02237690 +MOD13_02237690: ; 0x02237690 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r3, r1 + mov ip, #0x1e + mov r1, #3 + mov r2, #0x11 + str ip, [sp] + bl WM_MeasureChannel + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + mov r4, r0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _022376DC + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + ldmia sp!, {r4, pc} +_022376DC: + ldr r0, _02237788 ; =0x02243184 + ldr ip, [r0] + cmp ip, #0 + beq _02237700 + ldrh r2, [r4, #8] + ldrh r3, [r4, #0xa] + ldr r1, _0223778C ; =0x022408E0 + mov r0, #0x8000000 + blx ip +_02237700: + ldr r0, _02237790 ; =0x02243188 + ldrh r2, [r4, #0xa] + ldr r3, [r0] + ldrh ip, [r4, #8] + ldrh r1, [r3, #0x5e] + cmp r1, r2 + bls _02237738 + strh r2, [r3, #0x5e] + sub r1, ip, #1 + mov r2, #1 + mov r1, r2, lsl r1 + ldr r0, [r0] + strh r1, [r0, #0x60] + b _02237750 +_02237738: + cmp r1, r2 + ldreqh r2, [r3, #0x60] + subeq r0, ip, #1 + moveq r1, #1 + orreq r0, r2, r1, lsl r0 + streqh r0, [r3, #0x60] +_02237750: + add r0, ip, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl MOD13_02237794 + cmp r0, #0x18 + bne _02237774 + mov r0, #7 + bl MOD13_02238294 + ldmia sp!, {r4, pc} +_02237774: + cmp r0, #2 + ldmeqia sp!, {r4, pc} + mov r0, #9 + bl MOD13_02238294 + ldmia sp!, {r4, pc} + .align 2, 0 +_02237788: .word 0x02243184 +_0223778C: .word 0x022408E0 +_02237790: .word 0x02243188 + + arm_func_start MOD13_02237794 +MOD13_02237794: ; 0x02237794 + stmdb sp!, {r4, lr} + mov r4, r0 + bl WM_GetAllowedChannel + cmp r0, #0x8000 + bne _022377C0 + mov r0, #3 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #3 + ldmia sp!, {r4, pc} +_022377C0: + cmp r0, #0 + bne _022377E0 + mov r0, #0x16 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0x18 + ldmia sp!, {r4, pc} +_022377E0: + sub r1, r4, #1 + mov r2, #1 + mov r1, r2, lsl r1 + ands r1, r1, r0 + bne _0223781C +_022377F4: + add r1, r4, #1 + mov r1, r1, lsl #0x10 + mov r4, r1, lsr #0x10 + cmp r4, #0x10 + movhi r0, #0x18 + ldmhiia sp!, {r4, pc} + sub r1, r4, #1 + mov r1, r2, lsl r1 + ands r1, r1, r0 + beq _022377F4 +_0223781C: + ldr r0, _02237834 ; =0x022376B8 + mov r1, r4 + bl MOD13_02237690 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_02237834: .word 0x022376B8 + + arm_func_start MOD13_02237838 +MOD13_02237838: ; 0x02237838 + stmdb sp!, {lr} + sub sp, sp, #0xc + add r0, sp, #0 + bl OS_GetMacAddress + ldr r1, _02237900 ; =0x027FFC3C + ldrh r0, [sp] + ldr r3, [r1] + ldrh r1, [sp, #2] + add r0, r0, r3 + ldr r2, _02237904 ; =0x02243188 + add r1, r1, r0 + ldrh r3, [sp, #4] + ldr r0, [r2] + mov ip, #0 + add r1, r3, r1 + str r1, [r0, #0x58] + ldr lr, [r2] + ldr r0, _02237908 ; =0x00010DCD + ldr r3, [lr, #0x58] + ldr r1, _0223790C ; =0x00003039 + mla r0, r3, r0, r1 + str r0, [lr, #0x58] + ldr r0, [r2] + mov r3, #0x65 + strh ip, [r0, #0x5c] + ldr r1, [r2] + mov r0, #3 + strh r3, [r1, #0x5e] + bl MOD13_02238294 + mov r0, #1 + bl MOD13_02237794 + cmp r0, #0x18 + bne _022378D8 + mov r0, #0x18 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {pc} +_022378D8: + cmp r0, #2 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02237900: .word 0x027FFC3C +_02237904: .word 0x02243188 +_02237908: .word 0x00010DCD +_0223790C: .word 0x00003039 + + arm_func_start MOD13_02237910 +MOD13_02237910: ; 0x02237910 + ldr r0, _02237920 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + bx lr + .align 2, 0 +_02237920: .word 0x02243188 + + arm_func_start MOD13_02237924 +MOD13_02237924: ; 0x02237924 + ldr r0, _02237934 ; =0x02243188 + ldr r0, [r0] + ldrh r0, [r0, #0x52] + bx lr + .align 2, 0 +_02237934: .word 0x02243188 + + arm_func_start MOD13_02237938 +MOD13_02237938: ; 0x02237938 + ldr r1, _02237948 ; =0x02243188 + ldr r1, [r1] + str r0, [r1, #8] + bx lr + .align 2, 0 +_02237948: .word 0x02243188 + + arm_func_start MOD13_0223794C +MOD13_0223794C: ; 0x0223794C + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237970 + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237970: + mov r0, #0 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + mov r4, r0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _022379A8 + mov r0, #9 + bl MOD13_02238294 + ldrh r0, [r4, #2] + bl MOD13_02238274 + ldmia sp!, {r4, pc} +_022379A8: + mov r0, #1 + bl MOD13_02238294 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_022379B4 +MOD13_022379B4: ; 0x022379B4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _022379EC ; =0x02237980 + bl WM_Reset + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022379EC: .word 0x02237980 + + arm_func_start MOD13_022379F0 +MOD13_022379F0: ; 0x022379F0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237A10 + bl MOD13_02238274 + add sp, sp, #4 + ldmia sp!, {pc} +_02237A10: + mov r0, #1 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237A20 +MOD13_02237A20: ; 0x02237A20 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237A60 ; =MOD13_022379F0 + mov r1, #0 + bl WM_Disconnect + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + bl MOD13_02237108 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237A60: .word MOD13_022379F0 + + arm_func_start MOD13_02237A64 +MOD13_02237A64: ; 0x02237A64 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237A88 + bl MOD13_02238274 + bl MOD13_02236FB8 + add sp, sp, #4 + ldmia sp!, {pc} +_02237A88: + bl MOD13_02237A20 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237AA8 +MOD13_02237AA8: ; 0x02237AA8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237AE0 ; =MOD13_02237A64 + bl WM_EndMP + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237AE0: .word MOD13_02237A64 + + arm_func_start MOD13_02237AE4 +MOD13_02237AE4: ; 0x02237AE4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237B40 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #6 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237B40 ; =0x02243188 + ldr r0, [r0] + add r0, r0, #0x1e00 + bl WM_EndKeySharing + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237B40: .word 0x02243188 + + arm_func_start MOD13_02237B44 +MOD13_02237B44: ; 0x02237B44 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237B64 + bl MOD13_02238274 + add sp, sp, #4 + ldmia sp!, {pc} +_02237B64: + mov r0, #1 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237B74 +MOD13_02237B74: ; 0x02237B74 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237BA4 ; =MOD13_02237B44 + bl WM_EndParent + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237BA4: .word MOD13_02237B44 + + arm_func_start MOD13_02237BA8 +MOD13_02237BA8: ; 0x02237BA8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237BCC + bl MOD13_02238274 + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_02237BCC: + bl MOD13_02237B74 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02237C04 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _02237BF8 + ldr r1, _02237C08 ; =0x02240918 + mov r0, #0x8000000 + blx r2 +_02237BF8: + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237C04: .word 0x02243184 +_02237C08: .word 0x02240918 + + arm_func_start MOD13_02237C0C +MOD13_02237C0C: ; 0x02237C0C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237C44 ; =MOD13_02237BA8 + bl WM_EndMP + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237C44: .word MOD13_02237BA8 + + arm_func_start MOD13_02237C48 +MOD13_02237C48: ; 0x02237C48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237C80 ; =0x02243188 + ldr r0, [r0] + add r0, r0, #0x1e00 + bl WM_EndKeySharing + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237C80: .word 0x02243188 + + arm_func_start MOD13_02237C84 +MOD13_02237C84: ; 0x02237C84 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #6 + bl MOD13_02238294 + ldr r0, _02237CC8 ; =0x02243188 + mov r1, #0xd + ldr r0, [r0] + add r0, r0, #0x1e00 + bl WM_StartKeySharing + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237CC8: .word 0x02243188 + + arm_func_start MOD13_02237CCC +MOD13_02237CCC: ; 0x02237CCC + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r1, [r0, #2] + cmp r1, #0 + beq _02237CF8 + mov r0, r1 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237CF8: + ldrh r2, [r0, #4] + sub r0, r2, #0xa + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02237DEC +_02237D0C: ; jump table + b _02237D1C ; case 0 + b _02237E0C ; case 1 + b _02237DEC ; case 2 + b _02237DEC ; case 3 +_02237D1C: + ldr r0, _02237E14 ; =0x02243188 + ldr r1, [r0] + ldr r0, [r1, #0x44] + cmp r0, #2 + bne _02237D88 + ldr r0, [r1, #0x40] + cmp r0, #4 + bne _02237D78 + bl MOD13_02237C84 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02237E18 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _02237D68 + ldr r1, _02237E1C ; =0x02240940 + mov r0, #0x8000000 + blx r2 +_02237D68: + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237D78: + cmp r0, #6 + bne _02237DDC + add sp, sp, #4 + ldmia sp!, {pc} +_02237D88: + cmp r0, #4 + bne _02237DDC + ldr r0, _02237E20 ; =0x000013E0 + mov ip, #1 + add r0, r1, r0 + mov r1, #0xd + mov r2, #7 + mov r3, #0x44 + str ip, [sp] + bl WM_StartDataSharing + cmp r0, #0 + beq _02237DCC + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237DCC: + mov r0, #5 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237DDC: + mov r0, #4 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237DEC: + ldr r0, _02237E18 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _02237E24 ; =0x022408F8 + mov r0, #0x8000000 + blx r3 +_02237E0C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237E14: .word 0x02243188 +_02237E18: .word 0x02243184 +_02237E1C: .word 0x02240940 +_02237E20: .word 0x000013E0 +_02237E24: .word 0x022408F8 + + arm_func_start MOD13_02237E28 +MOD13_02237E28: ; 0x02237E28 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _02237EBC ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + sub r0, r0, #4 + cmp r0, #2 + addls sp, sp, #0xc + movls r0, #1 + ldmlsia sp!, {pc} + mov r0, #4 + bl MOD13_02238294 + ldr r0, _02237EBC ; =0x02243188 + mov ip, #1 + ldr lr, [r0] + ldr r2, _02237EC0 ; =0x00001060 + add r3, lr, #0x1000 + ldr r1, [r3, #0x2a0] + ldr r0, _02237EC4 ; =MOD13_02237CCC + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + str r1, [sp] + str ip, [sp, #4] + ldr r3, [r3, #0x2a4] + add r1, lr, r2 + mov r2, r3, lsl #0x10 + mov r2, r2, lsr #0x10 + add r3, lr, #0xf80 + bl WM_StartMP + cmp r0, #2 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02237EBC: .word 0x02243188 +_02237EC0: .word 0x00001060 +_02237EC4: .word MOD13_02237CCC + + arm_func_start MOD13_02237EC8 +MOD13_02237EC8: ; 0x02237EC8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldrh r2, [r5, #0x10] + mov r1, #1 + ldrh r0, [r5, #2] + mov r1, r1, lsl r2 + mov r1, r1, lsl #0x10 + cmp r0, #0 + mov r4, r1, lsr #0x10 + beq _02237F08 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02237F08: + ldrh ip, [r5, #8] + cmp ip, #7 + bgt _02237F44 + cmp ip, #7 + bge _02237F50 + cmp ip, #2 + bgt _02238034 + cmp ip, #0 + blt _02238034 + cmp ip, #0 + beq _02238014 + cmp ip, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + b _02238034 +_02237F44: + cmp ip, #9 + beq _02237FD8 + b _02238034 +_02237F50: + ldr r0, _02238060 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237F6C + ldr r1, _02238064 ; =0x02240970 + mov r0, #0x8000000 + blx r3 +_02237F6C: + ldr r0, _02238068 ; =0x02243188 + ldr r0, [r0] + ldr r1, [r0, #0x4c] + cmp r1, #0 + beq _02237FBC + mov r0, r5 + blx r1 + cmp r0, #0 + bne _02237FBC + ldrh r1, [r5, #0x10] + mov r0, #0 + bl WM_Disconnect + cmp r0, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02237FBC: + ldr r0, _02238068 ; =0x02243188 + add sp, sp, #4 + ldr r1, [r0] + ldrh r0, [r1, #0x52] + orr r0, r0, r4 + strh r0, [r1, #0x52] + ldmia sp!, {r4, r5, pc} +_02237FD8: + ldr r0, _02238060 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237FF4 + ldr r1, _0223806C ; =0x0224099C + mov r0, #0x8000000 + blx r3 +_02237FF4: + ldr r0, _02238068 ; =0x02243188 + mvn r1, r4 + ldr r2, [r0] + add sp, sp, #4 + ldrh r0, [r2, #0x52] + and r0, r0, r1 + strh r0, [r2, #0x52] + ldmia sp!, {r4, r5, pc} +_02238014: + bl MOD13_02237E28 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02238034: + ldr r0, _02238060 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _02238070 ; =0x022408F8 + mov r2, ip + mov r0, #0x8000000 + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02238060: .word 0x02243184 +_02238064: .word 0x02240970 +_02238068: .word 0x02243188 +_0223806C: .word 0x0224099C +_02238070: .word 0x022408F8 + + arm_func_start MOD13_02238074 +MOD13_02238074: ; 0x02238074 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022380E0 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + sub r0, r0, #4 + cmp r0, #2 + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {pc} + ldr r0, _022380E4 ; =MOD13_02237EC8 + bl WM_StartParent + cmp r0, #2 + beq _022380BC + bl MOD13_02238274 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_022380BC: + ldr r1, _022380E0 ; =0x02243188 + mov r3, #0 + ldr r2, [r1] + mov r0, #1 + strh r3, [r2, #0x50] + ldr r1, [r1] + strh r0, [r1, #0x52] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022380E0: .word 0x02243188 +_022380E4: .word MOD13_02237EC8 + + arm_func_start MOD13_022380E8 +MOD13_022380E8: ; 0x022380E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02238110 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02238110: + bl MOD13_02238074 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02238130 +MOD13_02238130: ; 0x02238130 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02238198 ; =0x02243188 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r2, [r0, #0x3ac] + add r0, r1, #0x13c0 + blx r2 + ldr r2, _02238198 ; =0x02243188 + mov r1, r0 + ldr r2, [r2] + ldr r0, _0223819C ; =MOD13_022380E8 + add r2, r2, #0x13c0 + bl WM_SetWEPKeyEx2 + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238198: .word 0x02243188 +_0223819C: .word MOD13_022380E8 + + arm_func_start MOD13_022381A0 +MOD13_022381A0: ; 0x022381A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _022381C8 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_022381C8: + ldr r0, _02238220 ; =0x02243188 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x3ac] + cmp r0, #0 + beq _02238200 + bl MOD13_02238130 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02238200: + bl MOD13_02238074 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238220: .word 0x02243188 + + arm_func_start MOD13_02238224 +MOD13_02238224: ; 0x02238224 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r1, _0223826C ; =0x02243188 + ldr r0, _02238270 ; =MOD13_022381A0 + ldr r1, [r1] + bl WM_SetParentParameter + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223826C: .word 0x02243188 +_02238270: .word MOD13_022381A0 + + arm_func_start MOD13_02238274 +MOD13_02238274: ; 0x02238274 + ldr r1, _02238290 ; =0x02243188 + ldr r2, [r1] + ldr r1, [r2, #0x40] + sub r1, r1, #9 + cmp r1, #1 + strhi r0, [r2, #0x54] + bx lr + .align 2, 0 +_02238290: .word 0x02243188 + + arm_func_start MOD13_02238294 +MOD13_02238294: ; 0x02238294 + stmdb sp!, {r4, lr} + ldr r1, _02238308 ; =0x02243184 + mov r4, r0 + ldr ip, [r1] + cmp ip, #0 + beq _022382CC + ldr r0, _0223830C ; =0x02243188 + ldr r2, _02238310 ; =0x022407A8 + ldr r0, [r0] + ldr r1, _02238314 ; =0x022409C8 + ldr r3, [r0, #0x40] + mov r0, #0x8000000 + ldr r2, [r2, r3, lsl #2] + blx ip +_022382CC: + ldr r1, _0223830C ; =0x02243188 + ldr r0, _02238308 ; =0x02243184 + ldr r2, [r1] + str r4, [r2, #0x40] + ldr r3, [r0] + cmp r3, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r1] + ldr r0, _02238310 ; =0x022407A8 + ldr r2, [r1, #0x40] + ldr r1, _02238318 ; =0x022409D0 + ldr r2, [r0, r2, lsl #2] + mov r0, #0x8000000 + blx r3 + ldmia sp!, {r4, pc} + .align 2, 0 +_02238308: .word 0x02243184 +_0223830C: .word 0x02243188 +_02238310: .word 0x022407A8 +_02238314: .word 0x022409C8 +_02238318: .word 0x022409D0 + + arm_func_start MOD13_0223831C +MOD13_0223831C: ; 0x0223831C + ldr r1, _02238354 ; =0x02243188 + mov r2, #0 + str r0, [r1] + str r2, [r0, #0x40] + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3a8] + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3ac] + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3b0] + bx lr + .align 2, 0 +_02238354: .word 0x02243188 + + arm_func_start MOD13_02238358 +MOD13_02238358: ; 0x02238358 + ldr r0, _0223836C ; =0x0224318C + ldr r0, [r0] + add r0, r0, #0x100 + ldrh r0, [r0, #0x44] + bx lr + .align 2, 0 +_0223836C: .word 0x0224318C + + arm_func_start MOD13_02238370 +MOD13_02238370: ; 0x02238370 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov ip, #0 + ldr r4, _0223845C ; =0x0224318C + mov r5, ip + mov r2, ip + mov r0, #1 + mov r1, #0xbc + mov lr, #0x44 +_02238394: + ldr r3, [r4] + add r6, r3, ip, lsl #2 + ldr r6, [r6, #0x208] + cmp r6, #0 + beq _02238448 + add r6, r3, #0x100 + mla r7, ip, lr, r6 + cmp ip, #1 + bne _02238448 + ldrb r6, [r3, #0xa93] + cmp r6, #1 + bne _02238418 + ldrh r6, [r7] + cmp r6, #0x10 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r6, [r3, #0xa94] + add r6, r6, #1 + str r6, [r3, #0xa94] + ldr r6, [r4] + ldr r3, [r6, #0xa94] + ands r3, r3, #1 + bne _02238448 + add r3, r6, #0x200 + ldrh r6, [r3] + add r6, r6, #1 + strh r6, [r3] + ldr r3, [r4] + add r3, r3, #0x200 + ldrh r6, [r3] + cmp r6, #0x24 + strhsh r2, [r3] + b _02238448 +_02238418: + add r3, r3, #0x200 + strh r1, [r3, #2] + ldrh r3, [r7] + cmp r3, #0xbd + bne _02238448 + ldr r3, [r4] + strb r0, [r3, #0xa93] + ldr r3, [r4] + add r3, r3, #0x200 + strh r5, [r3] + ldr r3, [r4] + str r5, [r3, #0xa94] +_02238448: + add ip, ip, #1 + cmp ip, #0x10 + blt _02238394 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223845C: .word 0x0224318C + + arm_func_start MOD13_02238460 +MOD13_02238460: ; 0x02238460 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r3, _022385B8 ; =0x0224318C + ldr r5, [r3] + ldrb r4, [r5, #0xa93] + cmp r4, #1 + bne _022384A8 + ldr r4, [r5, #0xab0] + strh r0, [r4] + ldr r4, [r3] + mov r0, r2 + ldr r4, [r4, #0xab0] + mov r2, #0x40 + strh r1, [r4, #2] + ldr r1, [r3] + ldr r1, [r1, #0xab0] + add r1, r1, #4 + bl MI_CpuCopy8 + b _022384D4 +_022384A8: + ldr r0, [r5, #0x204] + mov r1, #0xbc + add r0, r0, #1 + str r0, [r5, #0x204] + ldr r0, [r3] + ldr r0, [r0, #0xab0] + strh r1, [r0] + ldr r0, [r3] + ldrb r1, [r0, #0xa92] + ldr r0, [r0, #0xab0] + strb r1, [r0, #4] +_022384D4: + bl MOD13_02237910 + cmp r0, #5 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022385B8 ; =0x0224318C + ldr r0, [r0] + bl MOD13_02237130 + cmp r0, #0 + bne _0223850C + ldr r0, _022385B8 ; =0x0224318C + ldr r1, [r0] + ldr r0, [r1, #0x204] + add r0, r0, #4 + str r0, [r1, #0x204] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0223850C: + ldr r0, _022385B8 ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa93] + cmp r0, #0 + ldreq r0, [r1, #0x204] + addeq r0, r0, #1 + streq r0, [r1, #0x204] + beq _02238550 + mov r0, #0 + str r0, [r1, #0x204] + bl MOD13_02237924 + cmp r0, #3 + ldrne r0, _022385B8 ; =0x0224318C + movne r1, #0x1b + ldrne r0, [r0] + strneb r1, [r0, #0xa90] + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_02238550: + mov r7, #0 + ldr r8, _022385B8 ; =0x0224318C + mov r4, r7 + mov r6, #0x44 + mov r5, #1 +_02238564: + mov r0, r7 + bl MOD13_022371E0 + cmp r0, #0 + ldreq r0, [r8] + addeq r0, r0, r7, lsl #2 + streq r4, [r0, #0x208] + beq _022385A0 + ldr r1, [r8] + mov r2, r6 + add r1, r1, #0x100 + mla r1, r7, r6, r1 + bl MI_CpuCopy8 + ldr r0, [r8] + add r0, r0, r7, lsl #2 + str r5, [r0, #0x208] +_022385A0: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + cmp r7, #2 + blo _02238564 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022385B8: .word 0x0224318C + + arm_func_start MOD13_022385BC +MOD13_022385BC: ; 0x022385BC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02238604 ; =0x0224318C + mov r1, #0 + ldr r0, [r0] + mov r2, #0x100 + add r0, r0, #0x100 + bl MI_CpuFill8 + ldr r0, _02238604 ; =0x0224318C + mov r1, #0 + ldr r0, [r0] + mov r2, #0x100 + bl MI_CpuFill8 + ldr r0, _02238604 ; =0x0224318C + ldr r0, [r0] + str r0, [r0, #0xab0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238604: .word 0x0224318C + + arm_func_start MOD13_02238608 +MOD13_02238608: ; 0x02238608 + stmdb sp!, {r4, lr} + add r0, r0, #0xa + bl MOD13_02236254 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD13_02236314 + ldr r1, _02238640 ; =0x0224318C + sub r2, r4, #1 + ldr r1, [r1] + add r1, r1, r2, lsl #2 + str r0, [r1, #0xaa0] + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02238640: .word 0x0224318C + + arm_func_start MOD13_02238644 +MOD13_02238644: ; 0x02238644 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r1, _0223867C ; =0x0224318C + mov r0, #1 + ldr r1, [r1] + strb r0, [r1, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223867C: .word 0x0224318C + + arm_func_start MOD13_02238680 +MOD13_02238680: ; 0x02238680 + ldr r0, _02238694 ; =0x0224318C + mov r1, #0xc + ldr r0, [r0] + strb r1, [r0, #0xa90] + bx lr + .align 2, 0 +_02238694: .word 0x0224318C + + arm_func_start MOD13_02238698 +MOD13_02238698: ; 0x02238698 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02237910 + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02238878 +_022386B0: ; jump table + b _02238878 ; case 0 + b _022386CC ; case 1 + b _02238878 ; case 2 + b _02238878 ; case 3 + b _022386FC ; case 4 + b _022386FC ; case 5 + b _022386FC ; case 6 +_022386CC: + ldr r1, _02238880 ; =0x0224318C + mov r0, #4 + ldr r1, [r1] + add r1, r1, #0x600 + ldrh r3, [r1, #0x48] + ldrh r2, [r1, #0x4a] + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl MOD13_02237220 + add sp, sp, #4 + ldmia sp!, {pc} +_022386FC: + ldr r1, _02238880 ; =0x0224318C + mov r0, #0 + ldr r2, [r1] + add r1, r2, #0x200 + ldrh r1, [r1] + ldr ip, [r2, #0xaa4] + mov r3, r1, lsr #0x1f + rsb r2, r3, r1, lsl #28 + add r2, r3, r2, ror #28 + add r2, ip, r2, lsl #6 + bl MOD13_02238460 + bl MOD13_02238370 + ldr r0, _02238880 ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa90] + cmp r0, #0x1b + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r1, #0x204] + cmp r0, #0x1e0 + movhi r0, #0x1b + strhib r0, [r1, #0xa90] + addhi sp, sp, #4 + ldmhiia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x10 + beq _02238774 + bl MOD13_02238358 + cmp r0, #0x20 + bne _02238790 +_02238774: + bl MOD13_02238358 + ldr r0, _02238880 ; =0x0224318C + mov r1, #0xa + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238790: + bl MOD13_02238358 + cmp r0, #0x40 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0xb + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0xff + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x1b + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x50 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x15 + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x60 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x18 + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x70 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x1b + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #8 + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0xbd + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #9 + ldreq r0, [r0] + streqb r1, [r0, #0xa90] + ldrne r0, _02238880 ; =0x0224318C + movne r1, #0x1f + ldrne r0, [r0] + strneb r1, [r0, #0xa90] +_02238878: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238880: .word 0x0224318C + + arm_func_start MOD13_02238884 +MOD13_02238884: ; 0x02238884 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022385BC + ldr r0, _022388B0 ; =MOD13_02238608 + bl MOD13_0223720C + ldr r0, _022388B4 ; =0x0224318C + mov r1, #8 + ldr r0, [r0] + strb r1, [r0, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022388B0: .word MOD13_02238608 +_022388B4: .word 0x0224318C + + arm_func_start MOD13_022388B8 +MOD13_022388B8: ; 0x022388B8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02236470 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02238A94 +_022388D0: ; jump table + b _02238A3C ; case 0 + b _022388F0 ; case 1 + b _02238914 ; case 2 + b _022389AC ; case 3 + b _02238A94 ; case 4 + b _02238A08 ; case 5 + b _02238A94 ; case 6 + b _02238A20 ; case 7 +_022388F0: + ldr r1, _02238A9C ; =0x0224318C + ldr r0, _02238AA0 ; =0x00000AB4 + ldr r2, [r1] + add r1, r2, #0x600 + ldrh r1, [r1, #0x4a] + add r0, r2, r0 + bl MOD13_02236D9C + add sp, sp, #4 + ldmia sp!, {pc} +_02238914: + mov r0, #2 + bl MOD13_02236414 + cmp r0, #0 + ldrne r0, _02238A9C ; =0x0224318C + movne r1, #5 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0xa90] + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_02236414 + cmp r0, #0 + bne _02238958 + mov r0, #4 + bl MOD13_02236414 + cmp r0, #0 + beq _02238970 +_02238958: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #6 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238970: + ldr r0, _02238A9C ; =0x0224318C + ldr r0, [r0] + ldrb r0, [r0, #0xa90] + cmp r0, #5 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_02236414 + cmp r0, #0 + ldreq r0, _02238A9C ; =0x0224318C + moveq r1, #0xd + ldreq r0, [r0] + add sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmia sp!, {pc} +_022389AC: + bl MOD13_022368FC + cmp r0, #0 + beq _022389C4 + bl MOD13_022367F4 + add sp, sp, #4 + ldmia sp!, {pc} +_022389C4: + ldr r0, _02238A9C ; =0x0224318C + ldr r0, [r0] + ldrb r0, [r0, #0xa90] + add r0, r0, #0xfa + and r0, r0, #0xff + cmp r0, #1 + addhi sp, sp, #4 + ldmhiia sp!, {pc} + mov r0, #3 + bl MOD13_02236414 + cmp r0, #0 + ldreq r0, _02238A9C ; =0x0224318C + moveq r1, #0x12 + ldreq r0, [r0] + add sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A08: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #7 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A20: + bl MOD13_022367D8 + ldr r0, _02238A9C ; =0x0224318C + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A3C: + bl MOD13_02237910 + cmp r0, #0 + beq _02238A6C + cmp r0, #1 + beq _02238A60 + cmp r0, #3 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + b _02238A84 +_02238A60: + bl MOD13_02236F5C + add sp, sp, #4 + ldmia sp!, {pc} +_02238A6C: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #0x1f + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A84: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #0x1f + ldr r0, [r0] + strb r1, [r0, #0xa90] +_02238A94: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238A9C: .word 0x0224318C +_02238AA0: .word 0x00000AB4 + + arm_func_start MOD13_02238AA4 +MOD13_02238AA4: ; 0x02238AA4 + ldr r0, _02238AC0 ; =0x0224318C + ldr ip, _02238AC4 ; =MOD13_02236DF4 + ldr r2, [r0] + add r0, r2, #0x600 + ldrh r1, [r0, #0x48] + ldr r0, [r2, #0xac8] + bx ip + .align 2, 0 +_02238AC0: .word 0x0224318C +_02238AC4: .word MOD13_02236DF4 + + arm_func_start MOD13_02238AC8 +MOD13_02238AC8: ; 0x02238AC8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02237910 + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _02238B78 +_02238AE0: ; jump table + b _02238B48 ; case 0 + b _02238B08 ; case 1 + b _02238B78 ; case 2 + b _02238B7C ; case 3 + b _02238B78 ; case 4 + b _02238B78 ; case 5 + b _02238B78 ; case 6 + b _02238B14 ; case 7 + b _02238B78 ; case 8 + b _02238B6C ; case 9 +_02238B08: + bl MOD13_02237838 + add sp, sp, #4 + ldmia sp!, {pc} +_02238B14: + bl MOD13_02237608 + ldr r2, _02238B84 ; =0x0224318C + mov ip, #0 + ldr r1, [r2] + mov r3, #3 + add r1, r1, #0x600 + strh r0, [r1, #0x4a] + ldr r0, [r2] + add sp, sp, #4 + str ip, [r0, #0xa98] + ldr r0, [r2] + strb r3, [r0, #0xa90] + ldmia sp!, {pc} +_02238B48: + ldr r0, _02238B84 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #3 + str r3, [r2, #0xa98] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238B6C: + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_02238B78: + bl OS_Terminate +_02238B7C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238B84: .word 0x0224318C + + arm_func_start MOD13_02238B88 +MOD13_02238B88: ; 0x02238B88 + ldr ip, _02238B94 ; =MOD13_022132CC + mov r0, #1 + bx ip + .align 2, 0 +_02238B94: .word MOD13_022132CC + + arm_func_start MOD13_02238B98 +MOD13_02238B98: ; 0x02238B98 + ldr r2, _02238BDC ; =0x0224318C + ldr r3, [r2] + ldrb r3, [r3, #0xa90] + strb r3, [r0] + ldr r0, [r2] + ldrb r2, [r0, #0xa90] + ldrb r0, [r0, #0xa91] + cmp r2, r0 + movne r0, #1 + strneb r0, [r1] + moveq r0, #0 + streqb r0, [r1] + ldr r0, _02238BDC ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa90] + strb r0, [r1, #0xa91] + bx lr + .align 2, 0 +_02238BDC: .word 0x0224318C + + arm_func_start MOD13_02238BE0 +MOD13_02238BE0: ; 0x02238BE0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02238FF0 ; =0x0224318C + ldr r0, [r1] + ldrb r2, [r0, #0xa90] + cmp r2, #0x22 + addls pc, pc, r2, lsl #2 + b _02238FE8 +_02238C00: ; jump table + b _02238FE8 ; case 0 + b _02238C8C ; case 1 + b _02238CD4 ; case 2 + b _02238CE0 ; case 3 + b _02238CFC ; case 4 + b _02238D14 ; case 5 + b _02238D14 ; case 6 + b _02238D20 ; case 7 + b _02238D2C ; case 8 + b _02238D2C ; case 9 + b _02238D2C ; case 10 + b _02238D38 ; case 11 + b _02238FE8 ; case 12 + b _02238FE8 ; case 13 + b _02238FE8 ; case 14 + b _02238FE8 ; case 15 + b _02238D44 ; case 16 + b _02238D60 ; case 17 + b _02238D84 ; case 18 + b _02238DAC ; case 19 + b _02238FE8 ; case 20 + b _02238DF0 ; case 21 + b _02238E18 ; case 22 + b _02238FE8 ; case 23 + b _02238E5C ; case 24 + b _02238E84 ; case 25 + b _02238FE8 ; case 26 + b _02238EC8 ; case 27 + b _02238EF0 ; case 28 + b _02238FE8 ; case 29 + b _02238FE4 ; case 30 + b _02238FE8 ; case 31 + b _02238F78 ; case 32 + b _02238FA0 ; case 33 + b _02238FE8 ; case 34 +_02238C8C: + ldrb r2, [r0, #0xaac] + cmp r2, #1 + bne _02238CAC + mov r1, #0 + strb r1, [r0, #0xaac] + bl MOD13_0223903C + add sp, sp, #4 + ldmia sp!, {pc} +_02238CAC: + cmp r2, #2 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r2, #0 + strb r2, [r0, #0xaac] + ldr r0, [r1] + mov r1, #0x22 + strb r1, [r0, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} +_02238CD4: + bl MOD13_02238AC8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238CE0: + bl MOD13_02238AA4 + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #4 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238CFC: + ldr r1, [r0, #0xa98] + add r1, r1, #1 + str r1, [r0, #0xa98] + bl MOD13_022388B8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D14: + bl MOD13_022388B8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D20: + bl MOD13_02238884 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D2C: + bl MOD13_02238698 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D38: + bl MOD13_02238680 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D44: + mov r2, #0 + str r2, [r0, #0xa9c] + ldr r0, [r1] + mov r1, #0x11 + strb r1, [r0, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} +_02238D60: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02238644 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D84: + bl MOD13_02214F18 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x16 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238DAC: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x14 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238DF0: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x16 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238E18: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x17 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238E5C: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x19 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238E84: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x1a + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238EC8: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x1c + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238EF0: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + bne _02238F30 + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x1d + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238F30: + ldr r1, _02238FF0 ; =0x0224318C + ldr r0, _02238FF4 ; =0x88888889 + ldr r1, [r1] + ldr r2, _02238FF8 ; =0x0000001E + ldr r3, [r1, #0xa9c] + umull r0, r1, r3, r0 + mov r1, r1, lsr #4 + umull r0, r1, r2, r1 + sub r1, r3, r0 + cmp r1, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + cmp r3, #0x37 + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02236FB8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238F78: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x21 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238FA0: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x22 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238FE4: + bl MOD13_02236FB8 +_02238FE8: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238FF0: .word 0x0224318C +_02238FF4: .word 0x88888889 +_02238FF8: .word 0x0000001E + + arm_func_start MOD13_02238FFC +MOD13_02238FFC: ; 0x02238FFC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239038 ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa90] + cmp r0, #5 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + mov r0, #6 + strb r0, [r1, #0xa90] + bl MOD13_02236968 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239038: .word 0x0224318C + + arm_func_start MOD13_0223903C +MOD13_0223903C: ; 0x0223903C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239098 ; =0x0224318C + ldr r0, [r0] + ldrb r0, [r0, #0xa90] + cmp r0, #1 + beq _02239068 + cmp r0, #0x1a + beq _02239068 + cmp r0, #0x1d + bne _0223908C +_02239068: + bl MOD13_0223909C + bl MOD13_02237490 + ldr r0, _02239098 ; =0x0224318C + mov r2, #2 + ldr r1, [r0] + add sp, sp, #4 + strb r2, [r1, #0xa90] + mov r0, #1 + ldmia sp!, {pc} +_0223908C: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239098: .word 0x0224318C + + arm_func_start MOD13_0223909C +MOD13_0223909C: ; 0x0223909C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239120 ; =0x0224318C + ldr r0, [r0] + ldr r0, [r0, #0xac8] + bl MOD13_02237938 + ldr r0, _02239120 ; =0x0224318C + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0xa90] + bl WM_GetNextTgid + ldr r3, _02239120 ; =0x0224318C + mov r2, #0x40 + ldr r1, [r3] + add r1, r1, #0x600 + strh r0, [r1, #0x48] + ldr r1, [r3] + ldr r0, [r1, #0xaa4] + add r1, r1, #0xa50 + bl MI_CpuCopy8 + ldr r0, _02239120 ; =0x0224318C + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0xa93] + ldr r1, [r0] + str r2, [r1, #0x204] + ldr r0, [r0] + add r0, r0, #0x600 + ldrh r1, [r0, #0x48] + add r1, r1, #1 + strh r1, [r0, #0x48] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239120: .word 0x0224318C + + arm_func_start MOD13_02239124 +MOD13_02239124: ; 0x02239124 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239238 ; =0x0224318C + ldr r2, [r0] + ldrb r1, [r2, #0xa90] + cmp r1, #1 + beq _02239160 + cmp r1, #0x14 + beq _02239160 + cmp r1, #0x17 + beq _02239160 + cmp r1, #0x1a + beq _02239160 + cmp r1, #0x1d + bne _02239184 +_02239160: + mov r1, #0x22 + strb r1, [r2, #0xa90] + ldr r0, _02239238 ; =0x0224318C + mov r1, #0 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xaac] + mov r0, #1 + ldmia sp!, {pc} +_02239184: + cmp r1, #4 + beq _022391A4 + cmp r1, #5 + beq _022391A4 + cmp r1, #6 + beq _022391A4 + cmp r1, #0xd + bne _022391EC +_022391A4: + cmp r1, #4 + bne _022391C0 + ldr r0, [r2, #0xa98] + cmp r0, #6 + addlo sp, sp, #4 + movlo r0, #0 + ldmloia sp!, {pc} +_022391C0: + bl MOD13_02214F18 + ldr r0, _02239238 ; =0x0224318C + mov r3, #0x10 + ldr r1, [r0] + mov r2, #2 + strb r3, [r1, #0xa90] + ldr r1, [r0] + add sp, sp, #4 + strb r2, [r1, #0xaac] + mov r0, #1 + ldmia sp!, {pc} +_022391EC: + add r0, r1, #0xf7 + and r0, r0, #0xff + cmp r0, #1 + movls r0, #0x20 + strlsb r0, [r2, #0xa90] + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {pc} + cmp r1, #0xc + moveq r0, #0x22 + streqb r0, [r2, #0xa90] + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + cmp r1, #2 + moveq r0, #0 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239238: .word 0x0224318C + + arm_func_start MOD13_0223923C +MOD13_0223923C: ; 0x0223923C + stmdb sp!, {r4, lr} + ldr r2, _02239328 ; =0x0224318C + mov r4, r1 + str r0, [r2] + add r0, r0, #0xb00 + bl MOD13_02236F10 + ldr r1, _02239328 ; =0x0224318C + mov r3, #0 + ldr r0, [r1] + mov r2, #1 + add r0, r0, #0x600 + strh r3, [r0, #0x48] + ldr r0, [r1] + add r0, r0, #0x600 + strh r3, [r0, #0x4a] + ldr r0, [r1] + strb r2, [r0, #0xa90] + ldr r0, [r1] + strb r2, [r0, #0xa91] + ldr r0, [r1] + str r3, [r0, #0xa9c] + bl MOD13_022385BC + ldr r0, _02239328 ; =0x0224318C + ldr r3, [r4] + ldr r2, [r0] + mov r1, #2 + str r3, [r2, #0xab4] + ldr r3, [r4, #4] + ldr r2, [r0] + str r3, [r2, #0xab8] + ldr r3, [r4, #8] + ldr r2, [r0] + str r3, [r2, #0xabc] + ldr r3, [r4, #0xc] + ldr r2, [r0] + str r3, [r2, #0xac0] + ldr r3, [r4, #0x10] + ldr r2, [r0] + str r3, [r2, #0xac4] + ldr r3, [r4, #0x14] + ldr r2, [r0] + str r3, [r2, #0xac8] + ldrb r3, [r4, #0x18] + ldr r2, [r0] + strb r3, [r2, #0xa92] + ldr r0, [r0] + strb r1, [r0, #0xacc] + bl OS_GetTick + ldr r1, _02239328 ; =0x0224318C + ldr r0, _0223932C ; =0x0000064C + ldr r1, [r1] + add r0, r1, r0 + bl FUN_02095D68 + bl OS_GetTick + bl MOD13_022338FC + ldr r1, _02239328 ; =0x0224318C + ldr r1, [r1] + str r0, [r1, #0xaa4] + ldmia sp!, {r4, pc} + .align 2, 0 +_02239328: .word 0x0224318C +_0223932C: .word 0x0000064C + + arm_func_start MOD13_02239330 +MOD13_02239330: ; 0x02239330 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r1 + mov r7, r0 + mov r5, r2 + bl strlen + mov r4, r0 + mov r0, r6 + bl strlen + cmp r4, r5 + blt _02239364 + cmp r0, r5 + bge _02239370 +_02239364: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_02239370: + sub r1, r0, r5 + sub r3, r4, r5 + mov r2, r5 + add r0, r7, r3 + add r1, r6, r1 + bl memcmp + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start MOD13_0223939C +MOD13_0223939C: ; 0x0223939C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #8 + bl MOD13_0223AF90 + ldr r0, _022393D4 ; =0x02243190 + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0x84] + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022393D4: .word 0x02243190 + + arm_func_start MOD13_022393D8 +MOD13_022393D8: ; 0x022393D8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x4c + ldr r3, _022394C4 ; =0x02243190 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + ldr r0, [r0, #0x84] + mov r4, r2 + bl MOD13_02239F78 + add r0, sp, #4 + bl FS_InitFile + add r0, sp, #4 + mov r1, r6 + bl FS_OpenFile + cmp r0, #0 + bne _0223941C + bl OS_Terminate +_0223941C: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x28] + mov r2, #2 + sub r7, r1, r0 + cmp r5, #0 + ldr r1, _022394C8 ; =0x022409D4 + mov r0, r6 + strne r7, [r5] + bl MOD13_02239330 + cmp r0, #0 + mvnne r6, #3 + moveq r6, r4 + mov r0, r7 + mov r1, r6 + bl MOD13_0223B004 + mov r1, r0 + add r0, sp, #4 + mov r2, r7 + str r1, [sp] + bl FS_ReadFile + add r0, sp, #4 + bl FS_CloseFile + cmp r6, #0 + ldrgt r0, [sp] + addgt sp, sp, #0x4c + ldmgtia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp] + cmp r5, #0 + ldr r0, [r0] + mov r1, r4 + mov r0, r0, lsr #8 + strne r0, [r5] + bl MOD13_0223B004 + mov r4, r0 + ldr r0, [sp] + mov r1, r4 + bl MI_UncompressLZ8 + add r0, sp, #0 + bl MOD13_0223AF90 + mov r0, r4 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022394C4: .word 0x02243190 +_022394C8: .word 0x022409D4 + + arm_func_start MOD13_022394CC +MOD13_022394CC: ; 0x022394CC + mov r0, #1 + bx lr + + arm_func_start MOD13_022394D4 +MOD13_022394D4: ; 0x022394D4 + ldr ip, _022394E0 ; =0x020D0B40 + mov r1, #0 + bx ip + .align 2, 0 +_022394E0: .word 0x020D0B40 + + arm_func_start MOD13_022394E4 +MOD13_022394E4: ; 0x022394E4 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr ip, _02239524 ; =MOD13_022394D4 + str ip, [sp] + str r0, [sp, #4] + mov ip, #1 + str ip, [sp, #8] + ldr r0, [r0, #0x28] + mov ip, r1 + add r1, r2, r0 + mov r2, ip + mvn r0, #0 + bl CARDi_ReadRom + mov r0, #6 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02239524: .word MOD13_022394D4 + + arm_func_start MOD13_02239528 +MOD13_02239528: ; 0x02239528 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #1 + beq _02239584 + cmp r1, #9 + beq _0223954C + cmp r1, #0xa + beq _02239568 + b _02239590 +_0223954C: + ldr r0, _0223959C ; =0x02243190 + ldr r0, [r0] + ldrh r0, [r0, #0xe4] + bl CARD_LockRom + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_02239568: + ldr r0, _0223959C ; =0x02243190 + ldr r0, [r0] + ldrh r0, [r0, #0xe4] + bl CARD_UnlockRom + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_02239584: + add sp, sp, #4 + mov r0, #4 + ldmia sp!, {pc} +_02239590: + mov r0, #8 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223959C: .word 0x02243190 + + arm_func_start MOD13_022395A0 +MOD13_022395A0: ; 0x022395A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239624 ; =0x022409D8 + bl FS_ChangeDir + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FS_UnloadArchiveTables + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FUN_020D0EB0 + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FUN_020D0FF0 + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + ldrh r0, [r0, #0xe4] + bl OS_ReleaseLockID + ldr r0, _02239628 ; =0x02243190 + mov r2, #0 + ldr r1, [r0] + strh r2, [r1, #0xe4] + ldr r0, [r0] + bl MOD13_0223AF90 + ldr r0, _02239628 ; =0x02243190 + mov r2, #0 + ldr r1, [r0] + str r2, [r1] + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239624: .word 0x022409D8 +_02239628: .word 0x02243190 + + arm_func_start MOD13_0223962C +MOD13_0223962C: ; 0x0223962C + stmdb sp!, {r4, lr} + sub sp, sp, #0xe8 + mov r0, #0xe8 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _022397BC ; =0x02243190 + str r0, [r1] + add r0, sp, #0x20 + bl FS_InitFile + ldr r1, _022397C0 ; =0x022409E0 + add r0, sp, #0x20 + bl FS_OpenFile + cmp r0, #0 + bne _02239668 + bl OS_Terminate +_02239668: + bl OS_GetLockID + ldr r2, _022397BC ; =0x02243190 + add r1, sp, #0x10 + ldr r3, [r2] + mov r2, #8 + strh r0, [r3, #0xe4] + add r0, sp, #0x20 + ldr r4, [sp, #0x44] + bl FS_ReadFile + add r0, sp, #0x20 + add r1, sp, #0x18 + mov r2, #8 + bl FS_ReadFile + add r0, sp, #0x20 + bl FS_CloseFile + ldr r0, _022397BC ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FS_InitArchive + ldr r0, _022397BC ; =0x02243190 + ldr r1, _022397C4 ; =0x0223F740 + ldr r0, [r0] + mov r2, #3 + add r0, r0, #0x88 + bl FS_RegisterArchiveName + cmp r0, #0 + bne _022396D8 + bl OS_Terminate +_022396D8: + ldr r0, _022397BC ; =0x02243190 + ldr r1, _022397C8 ; =MOD13_02239528 + ldr r0, [r0] + ldr r2, _022397CC ; =0x00000602 + add r0, r0, #0x88 + bl FS_SetArchiveProc + ldr r0, [sp, #0x10] + ldr r1, _022397D0 ; =MOD13_022394E4 + str r0, [sp] + ldr r2, [sp, #0x14] + ldr r0, _022397D4 ; =MOD13_022394CC + str r2, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _022397BC ; =0x02243190 + ldr r2, [sp, #0x18] + ldr r0, [r0] + ldr r3, [sp, #0x1c] + mov r1, r4 + add r0, r0, #0x88 + bl FS_LoadArchive + cmp r0, #0 + bne _02239738 + bl OS_Terminate +_02239738: + ldr r0, _022397BC ; =0x02243190 + mov r1, #0 + ldr r0, [r0] + mov r2, r1 + add r0, r0, #0x88 + bl FUN_020D0D84 + mov r1, #4 + mov r4, r0 + bl MOD13_0223B004 + ldr r1, _022397BC ; =0x02243190 + mov r2, r4 + ldr r3, [r1] + str r0, [r3] + ldr r0, [r1] + ldr r1, [r0], #0x88 + bl FUN_020D0D84 + ldr r1, _022397BC ; =0x02243190 + mov r0, #0x20 + ldr r1, [r1] + mov r2, #4 + add r1, r1, #4 + bl MOD13_0223A054 + ldr r2, _022397BC ; =0x02243190 + ldr r1, _022397D8 ; =0x022409F8 + ldr r3, [r2] + ldr r2, _022397C4 ; =0x0223F740 + str r0, [r3, #0x84] + add r0, sp, #0x68 + bl OS_SPrintf + add r0, sp, #0x68 + bl FS_ChangeDir + add sp, sp, #0xe8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022397BC: .word 0x02243190 +_022397C0: .word 0x022409E0 +_022397C4: .word 0x0223F740 +_022397C8: .word MOD13_02239528 +_022397CC: .word 0x00000602 +_022397D0: .word MOD13_022394E4 +_022397D4: .word MOD13_022394CC +_022397D8: .word 0x022409F8 + + arm_func_start MOD13_022397DC +MOD13_022397DC: ; 0x022397DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr lr, [r0, #8] + ldr r0, _02239810 ; =0x01FF0000 + ldr ip, [lr, r1, lsl #3] + and r0, ip, r0 + mov r0, r0, lsr #0x10 + str r0, [r2] + ldr r0, [lr, r1, lsl #3] + and r0, r0, #0xff + str r0, [r3] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239810: .word 0x01FF0000 + + arm_func_start MOD13_02239814 +MOD13_02239814: ; 0x02239814 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #0 + ldr lr, [r0, #8] + blt _02239844 + add r1, lr, r1, lsl #3 + ldrh r0, [r1, #4] + add sp, sp, #4 + bic r0, r0, #0xc00 + orr r0, r0, r2, lsl #10 + strh r0, [r1, #4] + ldmia sp!, {pc} +_02239844: + ldrb r1, [r0, #0xc] + mov ip, #0 + cmp r1, #0 + addle sp, sp, #4 + ldmleia sp!, {pc} + mov r3, r2, lsl #0xa +_0223985C: + add r2, lr, ip, lsl #3 + ldrh r1, [r2, #4] + add ip, ip, #1 + bic r1, r1, #0xc00 + orr r1, r1, r3 + strh r1, [r2, #4] + ldrb r1, [r0, #0xc] + cmp ip, r1 + blt _0223985C + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02239888 +MOD13_02239888: ; 0x02239888 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + cmp r1, #0 + ldr ip, [r0, #8] + blt _022398C8 + ldr r5, [ip, r1, lsl #3] + ldr r4, _02239988 ; =0xFE00FF00 + ldr r0, _0223998C ; =0x000001FF + and r4, r5, r4 + and r3, r3, #0xff + and r2, r2, r0 + orr r0, r4, r3 + orr r0, r0, r2, lsl #16 + str r0, [ip, r1, lsl #3] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022398C8: + ldr r1, [ip] + ldr lr, _02239990 ; =0x01FF0000 + ldr r4, _0223998C ; =0x000001FF + and r1, r1, lr + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [ip] + ldr r5, _02239988 ; =0xFE00FF00 + and r1, r1, #0xff + str r1, [sp, #4] + ldr r6, [ip] + and r1, r3, #0xff + and r6, r6, r5 + and r7, r2, r4 + orr r1, r6, r1 + orr r1, r1, r7, lsl #16 + str r1, [ip] + ldrb r1, [r0, #0xc] + ldr r7, [sp] + ldr r6, [sp, #4] + cmp r1, #1 + sub r1, r3, r6 + addle sp, sp, #0x10 + sub r2, r2, r7 + mov r3, #1 + ldmleia sp!, {r4, r5, r6, r7, r8, pc} +_02239930: + ldr r6, [ip, r3, lsl #3] + and r7, r6, lr + mov r6, r7, lsr #0x10 + str r6, [sp, #8] + ldr r6, [ip, r3, lsl #3] + add r8, r2, r7, lsr #16 + and r6, r6, #0xff + str r6, [sp, #0xc] + ldr r7, [ip, r3, lsl #3] + add r6, r6, r1 + and r7, r7, r5 + and r6, r6, #0xff + and r8, r8, r4 + orr r6, r7, r6 + orr r6, r6, r8, lsl #16 + str r6, [ip, r3, lsl #3] + ldrb r6, [r0, #0xc] + add r3, r3, #1 + cmp r3, r6 + blt _02239930 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02239988: .word 0xFE00FF00 +_0223998C: .word 0x000001FF +_02239990: .word 0x01FF0000 + + arm_func_start MOD13_02239994 +MOD13_02239994: ; 0x02239994 + stmdb sp!, {r4, lr} + cmp r1, #0 + ldr ip, [r0, #8] + blt _022399CC + ldr r0, [ip, r1, lsl #3] + add lr, ip, r1, lsl #3 + bic r0, r0, #0xc00 + orr r0, r0, r2, lsl #10 + str r0, [ip, r1, lsl #3] + ldrh r0, [lr, #4] + bic r0, r0, #0xf000 + orr r0, r0, r3, lsl #12 + strh r0, [lr, #4] + ldmia sp!, {r4, pc} +_022399CC: + ldrb lr, [r0, #0xc] + mov r1, #0 + cmp lr, #0 + ldmleia sp!, {r4, pc} + mov r4, r2, lsl #0xa + mov lr, r3, lsl #0xc +_022399E4: + ldr r2, [ip, r1, lsl #3] + add r3, ip, r1, lsl #3 + bic r2, r2, #0xc00 + orr r2, r2, r4 + str r2, [ip, r1, lsl #3] + ldrh r2, [r3, #4] + add r1, r1, #1 + bic r2, r2, #0xf000 + orr r2, r2, lr + strh r2, [r3, #4] + ldrb r2, [r0, #0xc] + cmp r1, r2 + blt _022399E4 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_02239A1C +MOD13_02239A1C: ; 0x02239A1C + stmdb sp!, {r4, lr} + cmp r1, #0 + ldr ip, [r0, #8] + blt _02239A70 + cmp r2, #0x100 + beq _02239A54 + cmp r2, #0x300 + beq _02239A54 + ldr r3, [ip, r1, lsl #3] + ldr r0, _02239AD0 ; =0xC1FFFCFF + and r0, r3, r0 + orr r0, r0, r2 + str r0, [ip, r1, lsl #3] + ldmia sp!, {r4, pc} +_02239A54: + ldr lr, [ip, r1, lsl #3] + ldr r0, _02239AD0 ; =0xC1FFFCFF + and r0, lr, r0 + orr r0, r0, r2 + orr r0, r0, r3, lsl #25 + str r0, [ip, r1, lsl #3] + ldmia sp!, {r4, pc} +_02239A70: + ldrb lr, [r0, #0xc] + mov r1, #0 + cmp lr, #0 + ldmleia sp!, {r4, pc} + mov r4, r3, lsl #0x19 + ldr r3, _02239AD0 ; =0xC1FFFCFF +_02239A88: + cmp r2, #0x100 + beq _02239AA8 + cmp r2, #0x300 + ldrne lr, [ip, r1, lsl #3] + andne lr, lr, r3 + orrne lr, lr, r2 + strne lr, [ip, r1, lsl #3] + bne _02239ABC +_02239AA8: + ldr lr, [ip, r1, lsl #3] + and lr, lr, r3 + orr lr, lr, r2 + orr lr, r4, lr + str lr, [ip, r1, lsl #3] +_02239ABC: + ldrb lr, [r0, #0xc] + add r1, r1, #1 + cmp r1, lr + blt _02239A88 + ldmia sp!, {r4, pc} + .align 2, 0 +_02239AD0: .word 0xC1FFFCFF + + arm_func_start MOD13_02239AD4 +MOD13_02239AD4: ; 0x02239AD4 + ldrb r0, [r0, #0xc] + bx lr + + arm_func_start MOD13_02239ADC +MOD13_02239ADC: ; 0x02239ADC + ldr r0, [r0, #8] + add r0, r0, r1, lsl #3 + bx lr + + arm_func_start MOD13_02239AE8 +MOD13_02239AE8: ; 0x02239AE8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldrb r0, [r5, #0xc] + mov r4, #0 + mov r2, r4 + cmp r0, #0 + ldr r3, [r5, #8] + ble _02239B34 + ldr r0, _02239B6C ; =0xC1FFFCFF +_02239B10: + ldr r1, [r3] + add r2, r2, #1 + and r1, r1, r0 + orr r1, r1, #0x200 + str r1, [r3] + ldrb r1, [r5, #0xc] + add r3, r3, #8 + cmp r2, r1 + blt _02239B10 +_02239B34: + mov r0, r5 + bl MOD13_0223B8C4 + ldr r0, _02239B70 ; =0x02243194 + ldr r1, [r0] + add r0, r1, #0x228 + cmp r5, r0 + movhs r4, #1 + mov r0, #0x228 + mla r0, r4, r0, r1 + ldr r0, [r0, #0x224] + mov r1, r5 + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02239B6C: .word 0xC1FFFCFF +_02239B70: .word 0x02243194 + + arm_func_start MOD13_02239B74 +MOD13_02239B74: ; 0x02239B74 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r0, #0x228 + mul r7, sb, r0 + ldr r0, _02239CE4 ; =0x02243194 + mov r5, r1 + ldr r0, [r0] + mov r6, r2 + add r0, r0, r7 + ldr r0, [r0, #0x224] + bl MOD13_02239F78 + mov r4, r0 + mov r0, #1 + bl OS_DisableIrqMask + mov r8, r0 + cmp r6, #0 + beq _02239C44 + ldr r1, _02239CE4 ; =0x02243194 + mov r0, #0x228 + ldr r2, [r1] + mla r0, sb, r0, r2 + add r6, r0, #0x200 + add r0, r0, #0x210 + cmp r6, r0 + beq _02239C24 + mov r1, r5, lsl #3 + add r0, r2, r7 + add r2, r0, #0x210 +_02239BE8: + ldrb sb, [r6, #0xc] + ldr r0, [r6, #4] + ldr ip, [r6, #8] + ldr r3, [r0, #8] + add ip, ip, sb, lsl #3 + add sb, ip, r1 + cmp sb, r3 + bhi _02239C18 + mov r1, r4 + str ip, [r4, #8] + bl MOD13_0223B888 + b _02239C24 +_02239C18: + mov r6, r0 + cmp r0, r2 + bne _02239BE8 +_02239C24: + ldr r0, _02239CE4 ; =0x02243194 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x210 + cmp r6, r0 + bne _02239CCC + bl OS_Terminate + b _02239CCC +_02239C44: + ldr r1, _02239CE4 ; =0x02243194 + mov r0, #0x228 + ldr r1, [r1] + mla r0, sb, r0, r1 + add r6, r0, #0x210 + add r0, r0, #0x200 + cmp r6, r0 + beq _02239CB0 + mov r0, r5, lsl #3 + add r1, r1, r7 + add r1, r1, #0x200 +_02239C70: + ldr ip, [r6] + ldr sb, [r6, #8] + ldrb r2, [ip, #0xc] + ldr r3, [ip, #8] + sub sb, sb, r0 + add r2, r3, r2, lsl #3 + cmp sb, r2 + blo _02239CA4 + mov r0, r6 + mov r1, r4 + str sb, [r4, #8] + bl MOD13_0223B888 + b _02239CB0 +_02239CA4: + mov r6, ip + cmp ip, r1 + bne _02239C70 +_02239CB0: + ldr r0, _02239CE4 ; =0x02243194 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x200 + cmp r6, r0 + bne _02239CCC + bl OS_Terminate +_02239CCC: + mov r0, r8 + bl OS_EnableIrqMask + mov r0, r4 + strb r5, [r4, #0xc] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02239CE4: .word 0x02243194 + + arm_func_start MOD13_02239CE8 +MOD13_02239CE8: ; 0x02239CE8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r5, r6 + ldr r4, _02239D34 ; =0x02243194 +_02239CF8: + ldr r0, [r4] + add r0, r0, r5 + ldr r0, [r0, #0x220] + bl MOD13_0223B904 + ldr r0, [r4] + add r0, r0, r5 + ldr r0, [r0, #0x224] + bl MOD13_0223A030 + add r6, r6, #1 + cmp r6, #2 + add r5, r5, #0x228 + blt _02239CF8 + ldr r0, _02239D34 ; =0x02243194 + bl MOD13_0223AF90 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02239D34: .word 0x02243194 + + arm_func_start MOD13_02239D38 +MOD13_02239D38: ; 0x02239D38 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r0, #0x450 + mov r1, #4 + bl MOD13_0223AFE0 + ldr sl, _02239E08 ; =0x02243194 + mov sb, #0 + mov r8, sb + str r0, [sl] + mov r7, #0x20 + mov r6, #0x10 + mov r5, #0x40 + mov r4, #0x7f +_02239D68: + ldr r1, [sl] + mov r0, r7 + mov r2, r6 + add r1, r1, r8 + bl MOD13_0223A054 + ldr r1, [sl] + add r1, r1, r8 + str r0, [r1, #0x224] + bl MOD13_0223B928 + ldr r2, [sl] + mov r1, r5 + add r2, r2, r8 + str r0, [r2, #0x220] + mov r0, sb + bl MOD13_0223B95C + ldr r2, [sl] + mov r1, r4 + add r2, r2, r8 + str r0, [r2, #0x208] + mov r0, sb + bl MOD13_0223B95C + add r1, r0, #8 + ldr r0, [sl] + add r0, r0, r8 + str r1, [r0, #0x218] + ldr r0, [sl] + add r1, r0, r8 + ldr r0, [r1, #0x220] + add r1, r1, #0x200 + bl MOD13_0223B868 + ldr r0, [sl] + add r1, r0, r8 + ldr r0, [r1, #0x220] + add r1, r1, #0x210 + bl MOD13_0223B878 + add r8, r8, #0x228 + add sb, sb, #1 + cmp sb, #2 + blt _02239D68 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02239E08: .word 0x02243194 + + arm_func_start MOD13_02239E0C +MOD13_02239E0C: ; 0x02239E0C + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _02239E50 ; =0x02243198 + mov r6, r0 + mov r5, r1 + ldr r3, [r3, r6, lsl #2] + mov r1, r5, lsl #3 + ldrh r1, [r3, r1] + bl MOD13_02239B74 + mov r1, #0 + mov r4, r0 + bl MOD13_02239ADC + mov r2, r0 + mov r0, r6 + mov r1, r5 + bl MOD13_02239E8C + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02239E50: .word 0x02243198 + + arm_func_start MOD13_02239E54 +MOD13_02239E54: ; 0x02239E54 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r1 + add r1, sp, #0 + mov r6, r0 + bl MOD13_0223B9C0 + mov r4, r0 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD13_02239E8C + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_02239E8C +MOD13_02239E8C: ; 0x02239E8C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r3, _02239F1C ; =0x02243198 + mov r5, r2 + ldr r6, [r3, r0, lsl #2] + mov r2, r1, lsl #3 + add r0, r6, r1, lsl #3 + ldr r3, [r0, #4] + ldrh r4, [r6, r2] + add r1, sp, #0 + mov r0, #0 + mov r2, #8 + add sl, r6, r3 + bl MIi_CpuClear32 + cmp r4, #0 + mov sb, #0 + addle sp, sp, #8 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r8, sp, #0 + mov r7, #6 + mov r6, #8 +_02239EE0: + mov r0, sl + mov r1, r8 + mov r2, r7 + bl MIi_CpuCopy16 + mov r0, r8 + mov r1, r5 + mov r2, r6 + bl MIi_CpuCopy32 + add sb, sb, #1 + cmp sb, r4 + add sl, sl, #6 + add r5, r5, #8 + blt _02239EE0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02239F1C: .word 0x02243198 + + arm_func_start MOD13_02239F20 +MOD13_02239F20: ; 0x02239F20 + stmdb sp!, {r4, lr} + ldr r1, _02239F44 ; =0x02243198 + mov r4, r0 + ldr r0, [r1, r4, lsl #2] + bl MOD13_0223939C + ldr r0, _02239F44 ; =0x02243198 + mov r1, #0 + str r1, [r0, r4, lsl #2] + ldmia sp!, {r4, pc} + .align 2, 0 +_02239F44: .word 0x02243198 + + arm_func_start MOD13_02239F48 +MOD13_02239F48: ; 0x02239F48 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + mov r0, r1 + add r1, sp, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _02239F74 ; =0x02243198 + str r0, [r1, r4, lsl #2] + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02239F74: .word 0x02243198 + + arm_func_start MOD13_02239F78 +MOD13_02239F78: ; 0x02239F78 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + mov r5, #0 + bl OS_DisableIrqMask + ldrb r2, [r6, #3] + ldrb r1, [r6, #2] + mov r4, r0 + cmp r1, r2 + beq _02239FC0 + ldrh r1, [r6] + add r0, r2, r1 + sub r0, r0, #1 + bl FX_ModS32 + strb r0, [r6, #3] + ldrb r0, [r6, #3] + add r0, r6, r0, lsl #2 + ldr r5, [r0, #4] +_02239FC0: + mov r0, r4 + bl OS_EnableIrqMask + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_02239FD0 +MOD13_02239FD0: ; 0x02239FD0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + mov r4, r1 + bl OS_DisableIrqMask + ldrb r2, [r5, #3] + mov r7, r0 + ldrh r1, [r5] + add r0, r2, #1 + bl FX_ModS32 + ldrb r1, [r5, #2] + mov r6, r0 + cmp r6, r1 + bne _0223A010 + bl OS_Terminate +_0223A010: + ldrb r1, [r5, #3] + mov r0, r7 + add r1, r5, r1, lsl #2 + str r4, [r1, #4] + strb r6, [r5, #3] + bl OS_EnableIrqMask + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start MOD13_0223A030 +MOD13_0223A030: ; 0x0223A030 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #8 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start MOD13_0223A054 +MOD13_0223A054: ; 0x0223A054 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD13_0223A094 + cmp r6, #0 + mov r2, #0 + ble _0223A08C +_0223A074: + add r1, r0, r2, lsl #2 + add r2, r2, #1 + str r5, [r1, #4] + cmp r2, r6 + add r5, r5, r4 + blt _0223A074 +_0223A08C: + strb r6, [r0, #3] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_0223A094 +MOD13_0223A094: ; 0x0223A094 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #1 + mov r0, r0, lsl #2 + add r0, r0, #8 + mov r1, #4 + bl MOD13_0223B004 + add r1, r4, #1 + strh r1, [r0] + mov r1, #0 + strb r1, [r0, #2] + strb r1, [r0, #3] + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0223A0C8 +MOD13_0223A0C8: ; 0x0223A0C8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrsh r2, [r1, #4] + add r2, r2, #1 + strh r2, [r1, #4] + ldrsh r3, [r1, #4] + ldrh r2, [r1, #6] + cmp r3, r2 + addlt sp, sp, #4 + ldmltia sp!, {pc} + mov r2, #0 + strb r2, [r1, #9] + mov r1, r0 + mov r0, #1 + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223A10C +MOD13_0223A10C: ; 0x0223A10C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _0223A168 ; =0x022431A0 + mov r5, r0 + ldr r4, [r1] + ldrb r0, [r4, #9] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0223A16C ; =MOD13_0223A0C8 + mov r2, r4 + mov r0, #1 + mov r3, #0xc8 + bl MOD13_0223C1C4 + str r0, [r4] + mov r0, #0 + strh r0, [r4, #4] + strh r5, [r4, #6] + mov r0, #1 + strb r0, [r4, #9] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223A168: .word 0x022431A0 +_0223A16C: .word MOD13_0223A0C8 + + arm_func_start MOD13_0223A170 +MOD13_0223A170: ; 0x0223A170 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r3, _0223A294 ; =0x0223F748 + ldr r2, _0223A298 ; =0x0223F744 + ldrb r8, [r3] + ldrb r7, [r3, #1] + ldrb r6, [r3, #2] + ldrb lr, [r3, #3] + ldrb ip, [r2] + ldrb r5, [r2, #1] + ldrb r3, [r2, #2] + ldrb r2, [r2, #3] + strb r5, [sp, #5] + mov r4, r1 + strb r8, [sp] + strb r7, [sp, #1] + strb r6, [sp, #2] + strb lr, [sp, #3] + strb ip, [sp, #4] + strb r3, [sp, #6] + strb r2, [sp, #7] + ldrsh r1, [r4, #4] + mov r5, r0 + add r0, r1, #1 + strh r0, [r4, #4] + ldrsh r0, [r4, #4] + ldrh r1, [r4, #6] + mov r0, r0, lsl #4 + bl FX_DivS32 + ldrb r3, [r4, #8] + add r2, sp, #0 + mov r1, r0 + ldrb r2, [r2, r3] + ands r0, r2, #1 + rsbne r1, r1, #0x10 + ands r0, r2, #0x10 + ldr r0, _0223A29C ; =0x022431A0 + rsbne r1, r1, #0 + ldr r0, [r0] + cmp r4, r0 + bne _0223A220 + ldr r0, _0223A2A0 ; =0x04001050 + bl G2x_ChangeBlendBrightness_ + b _0223A228 +_0223A220: + ldr r0, _0223A2A4 ; =0x04000050 + bl G2x_ChangeBlendBrightness_ +_0223A228: + ldrsh r1, [r4, #4] + ldrh r0, [r4, #6] + cmp r1, r0 + addlt sp, sp, #8 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _0223A29C ; =0x022431A0 + ldr r0, [r0] + cmp r4, r0 + bne _0223A264 + ldrb r2, [r4, #8] + add r1, sp, #4 + ldr r0, _0223A2A0 ; =0x04001050 + ldrsb r1, [r1, r2] + bl G2x_ChangeBlendBrightness_ + b _0223A278 +_0223A264: + ldrb r2, [r4, #8] + add r1, sp, #4 + ldr r0, _0223A2A4 ; =0x04000050 + ldrsb r1, [r1, r2] + bl G2x_ChangeBlendBrightness_ +_0223A278: + mov r2, #0 + mov r1, r5 + mov r0, #1 + strb r2, [r4, #9] + bl MOD13_0223C110 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223A294: .word 0x0223F748 +_0223A298: .word 0x0223F744 +_0223A29C: .word 0x022431A0 +_0223A2A0: .word 0x04001050 +_0223A2A4: .word 0x04000050 + + arm_func_start MOD13_0223A2A8 +MOD13_0223A2A8: ; 0x0223A2A8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r4, _0223A374 ; =0x0223F74C + mov r5, r0 + ldrb r0, [r4, #3] + ldrb r6, [r4] + ldrb lr, [r4, #1] + strb r0, [sp, #3] + cmp r1, #1 + ldreq r0, _0223A378 ; =0x022431A0 + ldrb ip, [r4, #2] + strb r6, [sp] + ldreq r6, [r0] + ldrne r0, _0223A378 ; =0x022431A0 + strb lr, [sp, #1] + ldrne r0, [r0] + strb ip, [sp, #2] + addne r6, r0, #0xc + ldrb r0, [r6, #9] + mov r4, r3 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r1, #1 + bne _0223A328 + add r0, sp, #0 + mov r1, r2 + ldrsb r2, [r0, r5] + ldr r0, _0223A37C ; =0x04001050 + bl G2x_SetBlendBrightness_ + b _0223A33C +_0223A328: + add r0, sp, #0 + mov r1, r2 + ldrsb r2, [r0, r5] + ldr r0, _0223A380 ; =0x04000050 + bl G2x_SetBlendBrightness_ +_0223A33C: + ldr r1, _0223A384 ; =MOD13_0223A170 + mov r2, r6 + mov r0, #1 + mov r3, #0xc8 + bl MOD13_0223C1C4 + str r0, [r6] + mov r0, #0 + strh r0, [r6, #4] + strb r5, [r6, #8] + strh r4, [r6, #6] + mov r0, #1 + strb r0, [r6, #9] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0223A374: .word 0x0223F74C +_0223A378: .word 0x022431A0 +_0223A37C: .word 0x04001050 +_0223A380: .word 0x04000050 +_0223A384: .word MOD13_0223A170 + + arm_func_start MOD13_0223A388 +MOD13_0223A388: ; 0x0223A388 + cmp r0, #1 + ldreq r0, _0223A3A8 ; =0x022431A0 + ldreq r0, [r0] + ldrne r0, _0223A3A8 ; =0x022431A0 + ldrne r0, [r0] + addne r0, r0, #0xc + ldrb r0, [r0, #9] + bx lr + .align 2, 0 +_0223A3A8: .word 0x022431A0 + + arm_func_start MOD13_0223A3AC +MOD13_0223A3AC: ; 0x0223A3AC + ldr ip, _0223A3B8 ; =MOD13_0223AF90 + ldr r0, _0223A3BC ; =0x022431A0 + bx ip + .align 2, 0 +_0223A3B8: .word MOD13_0223AF90 +_0223A3BC: .word 0x022431A0 + + arm_func_start MOD13_0223A3C0 +MOD13_0223A3C0: ; 0x0223A3C0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x18 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _0223A404 ; =0x022431A0 + mov r1, #0x3f + str r0, [r2] + ldr r0, _0223A408 ; =0x04000050 + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + ldr r0, _0223A40C ; =0x04001050 + mov r1, #0x3f + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223A404: .word 0x022431A0 +_0223A408: .word 0x04000050 +_0223A40C: .word 0x04001050 + + arm_func_start MOD13_0223A410 +MOD13_0223A410: ; 0x0223A410 + ldr r2, _0223A438 ; =0x022431A4 + ldr r1, _0223A43C ; =0x00000718 + ldr r2, [r2] + add r1, r2, r1 + cmp r0, r1 + moveq r0, #1 + streqb r0, [r2, #0x794] + movne r0, #1 + strneb r0, [r2, #0x795] + bx lr + .align 2, 0 +_0223A438: .word 0x022431A4 +_0223A43C: .word 0x00000718 + + arm_func_start MOD13_0223A440 +MOD13_0223A440: ; 0x0223A440 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r6, r3 + mov r4, r0 + mov r8, r1 + mov r0, r6 + mov r1, #0 + mov r7, r2 + bl MOD13_02239ADC + mov r2, #0 + mov r5, r0 + mov r0, r6 + mvn r1, #0 + mov r3, r2 + bl MOD13_02239A1C + mov r0, r6 + mvn r1, #0 + mov r2, #0 + mov r3, #0xf + bl MOD13_02239994 + mov r0, r6 + mvn r1, #0 + ldr r2, [sp, #0x28] + bl MOD13_02239814 + str r7, [sp] + mov r0, r5 + mov r3, r8 + mov r1, #0 + str r1, [sp, #4] + ldrh r2, [r4, #0x34] + mov r1, #2 + str r2, [sp, #8] + str r1, [sp, #0xc] + ldrb r1, [r4, #0x36] + ldrb r2, [r4, #0x37] + bl FUN_020B5E50 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start MOD13_0223A4D8 +MOD13_0223A4D8: ; 0x0223A4D8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, [r0, #0x18] + blx r2 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223A4F0 +MOD13_0223A4F0: ; 0x0223A4F0 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr lr, [sp, #0x18] + ldr ip, [sp, #0x1c] + str lr, [sp] + ldr lr, [sp, #0x20] + str ip, [sp, #4] + ldr ip, [sp, #0x24] + str lr, [sp, #8] + add r0, r0, #0x20 + str ip, [sp, #0xc] + bl FUN_020B7168 + add sp, sp, #0x14 + ldmia sp!, {pc} + + arm_func_start MOD13_0223A528 +MOD13_0223A528: ; 0x0223A528 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r7, [sp, #0x34] + mov sb, r1 + ldrh r1, [r7] + ldr r8, [sp, #0x30] + ldr r6, [sp, #0x38] + mov sl, r0 + mov fp, r2 + str r3, [sp, #8] + cmp r1, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #0xc + mul r4, r6, r0 +_0223A564: + ldr r0, _0223A5E8 ; =0x022431A4 + ldr r0, [r0] + add r5, r0, r4 + mov r0, r5 + bl FUN_020B5CE4 + mov r1, r0 + ldr r0, _0223A5EC ; =0x0000FFFF + cmp r1, r0 + ldreq r0, [r5] + ldreqh r1, [r0, #2] + mov r0, r5 + bl FUN_020B5C88 + ldrh r1, [r5, #8] + ldrh r2, [r7] + ldr r3, [sp, #8] + cmp r1, #0 + ldrnesb r1, [r0] + ldrneb r0, [r0, #1] + addne r0, r1, r0 + ldreqsb r0, [r0, #2] + sub r1, r8, r0 + str r2, [sp] + mov r0, sl + mov r2, fp + add r1, sb, r1, asr #1 + str r6, [sp, #4] + bl MOD13_0223A5F0 + ldrh r1, [r7, #2]! + add sb, sb, r8 + cmp r1, #0 + bne _0223A564 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0223A5E8: .word 0x022431A4 +_0223A5EC: .word 0x0000FFFF + + arm_func_start MOD13_0223A5F0 +MOD13_0223A5F0: ; 0x0223A5F0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldrh ip, [sp, #0x10] + str r3, [sp] + ldr r3, _0223A630 ; =0x022431A4 + str ip, [sp, #4] + ldr lr, [r3] + ldr ip, [sp, #0x14] + mov r3, #0xc + mov r4, r1 + mla r1, ip, r3, lr + mov r3, r2 + mov r2, r4 + bl FUN_020B63CC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223A630: .word 0x022431A4 + + arm_func_start MOD13_0223A634 +MOD13_0223A634: ; 0x0223A634 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr lr, [sp, #0x10] + ldr ip, [sp, #0x14] + str lr, [sp] + add r0, r0, #0x20 + str ip, [sp, #4] + bl FUN_020B7218 + add sp, sp, #0xc + ldmia sp!, {pc} + + arm_func_start MOD13_0223A65C +MOD13_0223A65C: ; 0x0223A65C + ldr r2, _0223A67C ; =0x022431A4 + ldr r1, _0223A680 ; =0x00000718 + ldr r3, [r2] + mov r2, #0x38 + add r1, r3, r1 + mla r0, r2, r0, r1 + ldr ip, _0223A684 ; =MOD13_0223A688 + bx ip + .align 2, 0 +_0223A67C: .word 0x022431A4 +_0223A680: .word 0x00000718 +_0223A684: .word MOD13_0223A688 + + arm_func_start MOD13_0223A688 +MOD13_0223A688: ; 0x0223A688 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #0x34] + mov r0, #1 + bl MOD13_0223C104 + ldr r1, _0223A70C ; =0x022431A4 + ldr r0, _0223A710 ; =0x00000718 + ldr r1, [r1] + add r0, r1, r0 + cmp r4, r0 + bne _0223A6DC + bl G2_GetBG0CharPtr + ldr r2, _0223A714 ; =0x0223F754 + mov r1, r0 + ldrh r3, [r2] + ldrh r2, [r2, #2] + mov r0, #0 + mul r2, r3, r2 + mov r2, r2, lsl #5 + bl MIi_CpuClear16 + b _0223A700 +_0223A6DC: + bl G2_GetBG0CharPtr + ldr r2, _0223A714 ; =0x0223F754 + mov r1, r0 + ldrh r3, [r2, #4] + ldrh r2, [r2, #6] + mov r0, #0 + mul r2, r3, r2 + mov r2, r2, lsl #5 + bl MIi_CpuClear16 +_0223A700: + add r0, r4, #0x30 + bl MOD13_0223AF90 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223A70C: .word 0x022431A4 +_0223A710: .word 0x00000718 +_0223A714: .word 0x0223F754 + + arm_func_start MOD13_0223A718 +MOD13_0223A718: ; 0x0223A718 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + ldrb r0, [r4] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _0223A7E0 ; =0x022431A4 + ldr r0, _0223A7E4 ; =0x00000794 + ldr r2, [r1] + add r0, r2, r0 + cmp r4, r0 + bne _0223A790 + ldr r1, _0223A7E8 ; =0x0223F754 + ldr r0, [r2, #0x748] + ldrh r2, [r1] + ldrh r1, [r1, #2] + mul r1, r2, r1 + mov r5, r1, lsl #5 + mov r1, r5 + bl DC_FlushRange + ldr r1, _0223A7E0 ; =0x022431A4 + ldr r0, _0223A7EC ; =0x0223F750 + ldr r2, [r1] + ldrh r1, [r0] + ldr r0, [r2, #0x748] + mov r2, r5 + mov r1, r1, lsl #5 + bl GX_LoadBG0Char + b _0223A7D0 +_0223A790: + ldr r1, _0223A7E8 ; =0x0223F754 + ldr r0, [r2, #0x780] + ldrh r2, [r1, #4] + ldrh r1, [r1, #6] + mul r1, r2, r1 + mov r5, r1, lsl #5 + mov r1, r5 + bl DC_FlushRange + ldr r1, _0223A7E0 ; =0x022431A4 + ldr r0, _0223A7EC ; =0x0223F750 + ldr r2, [r1] + ldrh r1, [r0, #2] + ldr r0, [r2, #0x780] + mov r2, r5 + mov r1, r1, lsl #5 + bl GXS_LoadBG0Char +_0223A7D0: + mov r0, #0 + strb r0, [r4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223A7E0: .word 0x022431A4 +_0223A7E4: .word 0x00000794 +_0223A7E8: .word 0x0223F754 +_0223A7EC: .word 0x0223F750 + + arm_func_start MOD13_0223A7F0 +MOD13_0223A7F0: ; 0x0223A7F0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r8, r0 + ldr r0, _0223A954 ; =0x022431A4 + ldr r3, _0223A958 ; =0x0223F756 + mov r4, r8, lsl #2 + ldr r2, _0223A95C ; =0x0223F754 + ldrh r5, [r3, r4] + ldrh r4, [r2, r4] + ldr r3, [r0] + ldr r0, _0223A960 ; =0x00000718 + mul r2, r4, r5 + mov r7, r1 + add r1, r3, r0 + mov r0, #0x38 + mla r6, r8, r0, r1 + mov r0, r2, lsl #5 + mov r1, #0x20 + bl MOD13_0223B004 + str r0, [r6, #0x30] + cmp r8, #1 + bne _0223A86C + ldr r1, _0223A964 ; =0x04001008 + ldrh r0, [r1] + bic r0, r0, #0x40 + strh r0, [r1] + ldrh r0, [r1] + and r0, r0, #0x43 + orr r0, r0, #0xc00 + strh r0, [r1] + b _0223A88C +_0223A86C: + ldr r1, _0223A968 ; =0x04000008 + ldrh r0, [r1] + bic r0, r0, #0x40 + strh r0, [r1] + ldrh r0, [r1] + and r0, r0, #0x43 + orr r0, r0, #0xc00 + strh r0, [r1] +_0223A88C: + mov r0, #4 + str r0, [sp] + ldr r1, [r6, #0x30] + mov r0, r6 + mov r2, r4 + mov r3, r5 + bl FUN_020B6388 + ldr r1, _0223A954 ; =0x022431A4 + mov r0, #0xc + ldr r2, [r1] + mov r1, #1 + mla r0, r7, r0, r2 + str r6, [r6, #0x20] + str r0, [r6, #0x24] + str r1, [r6, #0x28] + str r1, [r6, #0x2c] + cmp r8, #1 + bne _0223A8DC + bl G2S_GetBG0ScrPtr + b _0223A8E0 +_0223A8DC: + bl G2_GetBG0ScrPtr +_0223A8E0: + mov r3, #0 + str r3, [sp] + mov r2, #0x20 + ldr r1, _0223A96C ; =0x0223F750 + str r2, [sp, #4] + mov r2, r8, lsl #1 + ldrh r7, [r1, r2] + mov r1, r4 + mov r2, r5 + str r7, [sp, #8] + mov r4, #0xf + str r4, [sp, #0xc] + bl FUN_020B6240 + mov r0, r6 + mov r1, #0 + bl MOD13_0223A4D8 + ldr r1, _0223A954 ; =0x022431A4 + ldr r0, _0223A970 ; =0x00000794 + ldr r2, [r1] + ldr r1, _0223A974 ; =MOD13_0223A718 + add r0, r2, r0 + add r2, r0, r8 + mov r0, #1 + mov r3, #0xc8 + bl MOD13_0223C1C4 + str r0, [r6, #0x34] + mov r0, r6 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223A954: .word 0x022431A4 +_0223A958: .word 0x0223F756 +_0223A95C: .word 0x0223F754 +_0223A960: .word 0x00000718 +_0223A964: .word 0x04001008 +_0223A968: .word 0x04000008 +_0223A96C: .word 0x0223F750 +_0223A970: .word 0x00000794 +_0223A974: .word MOD13_0223A718 + + arm_func_start MOD13_0223A978 +MOD13_0223A978: ; 0x0223A978 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x30] + bl MOD13_0223BB20 + ldr r0, _0223A9A0 ; =0x022431A4 + mov r1, r4 + ldr r0, [r0] + ldr r0, [r0, #0x788] + bl MOD13_02239FD0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223A9A0: .word 0x022431A4 + + arm_func_start MOD13_0223A9A4 +MOD13_0223A9A4: ; 0x0223A9A4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r4, _0223AA7C ; =0x022431A4 + mov r7, r0 + ldr r0, [r4] + mov r6, r1 + ldr r0, [r0, #0x788] + mov r5, r2 + mov r8, r3 + bl MOD13_02239F78 + mov r4, r0 + strb r6, [r4, #0x36] + mul r1, r6, r5 + mov r2, r8 + strb r5, [r4, #0x37] + mov r0, r7 + add r3, sp, #4 + bl MOD13_0223BB68 + str r0, [r4, #0x30] + ldr r1, [sp, #4] + mov r0, r6 + strh r1, [r4, #0x34] + mov r1, r5 + bl FUN_020B6180 + ldr r1, [sp, #0x20] + cmp r7, #1 + str r0, [r1] + moveq ip, #0x6600000 + ldr r7, [sp, #4] + mov r1, #4 + movne ip, #0x6400000 + str r1, [sp] + mov r0, r4 + mov r2, r6 + mov r3, r5 + add r1, ip, r7, lsl #7 + bl FUN_020B62F8 + ldr r2, [r4, #0x18] + mov r0, r4 + mov r1, #0 + blx r2 + ldr r0, _0223AA7C ; =0x022431A4 + ldr r1, [sp, #0x24] + ldr r2, [r0] + mov r0, #0xc + mla r0, r1, r0, r2 + str r4, [r4, #0x20] + str r0, [r4, #0x24] + mov r1, #1 + str r1, [r4, #0x28] + mov r0, r4 + str r1, [r4, #0x2c] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223AA7C: .word 0x022431A4 + + arm_func_start MOD13_0223AA80 +MOD13_0223AA80: ; 0x0223AA80 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _0223AACC ; =0x022431A4 + mov r5, #0 +_0223AA90: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x78c] + bl MOD13_0223939C + add r5, r5, #1 + cmp r5, #2 + blt _0223AA90 + ldr r0, _0223AACC ; =0x022431A4 + ldr r0, [r0] + ldr r0, [r0, #0x788] + bl MOD13_0223A030 + ldr r0, _0223AACC ; =0x022431A4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223AACC: .word 0x022431A4 + + arm_func_start MOD13_0223AAD0 +MOD13_0223AAD0: ; 0x0223AAD0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r0, _0223AB68 ; =0x00000798 + mov r1, #4 + bl MOD13_0223B004 + mov r4, r0 + ldr r3, _0223AB6C ; =0x022431A4 + add r1, r4, #0x18 + mov r0, #0x20 + mov r2, #0x38 + str r4, [r3] + bl MOD13_0223A054 + ldr sb, _0223AB6C ; =0x022431A4 + mov r8, #0 + ldr r1, [sb] + mov r7, r8 + str r0, [r1, #0x788] + ldr r6, _0223AB70 ; =0x02240A00 + mov r5, r8 + mov r4, #4 +_0223AB20: + ldr r0, [r6, r8, lsl #2] + mov r1, r5 + mov r2, r4 + bl MOD13_022393D8 + ldr r1, [sb] + add r1, r1, r8, lsl #2 + str r0, [r1, #0x78c] + ldr r2, [sb] + add r0, r2, r8, lsl #2 + ldr r1, [r0, #0x78c] + add r0, r2, r7 + bl FUN_020B5D3C + add r8, r8, #1 + cmp r8, #2 + add r7, r7, #0xc + blt _0223AB20 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0223AB68: .word 0x00000798 +_0223AB6C: .word 0x022431A4 +_0223AB70: .word 0x02240A00 + + arm_func_start MOD13_0223AB74 +MOD13_0223AB74: ; 0x0223AB74 + ldrh r3, [r0] + strh r3, [r2] + ldrh r3, [r0, #2] + strh r3, [r2, #2] + ldrh ip, [r0] + ldrh r3, [r1] + add r3, ip, r3 + strh r3, [r2, #4] + ldrh r3, [r0, #2] + ldrh r0, [r1, #2] + add r0, r3, r0 + strh r0, [r2, #6] + bx lr + + arm_func_start MOD13_0223ABA8 +MOD13_0223ABA8: ; 0x0223ABA8 + ldr ip, [sp] + strh r0, [ip] + strh r1, [ip, #2] + strh r2, [ip, #4] + strh r3, [ip, #6] + bx lr + + arm_func_start MOD13_0223ABC0 +MOD13_0223ABC0: ; 0x0223ABC0 + strh r0, [r2] + strh r1, [r2, #2] + bx lr + + arm_func_start MOD13_0223ABCC +MOD13_0223ABCC: ; 0x0223ABCC + cmp r1, #3 + addls pc, pc, r1, lsl #2 + bx lr +_0223ABD8: ; jump table + b _0223ABE8 ; case 0 + b _0223AC38 ; case 1 + b _0223AC88 ; case 2 + b _0223ACD8 ; case 3 +_0223ABE8: + cmp r0, #1 + bne _0223AC14 + ldr r0, _0223AD28 ; =0x04001048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD28 ; =0x04001048 + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr +_0223AC14: + ldr r0, _0223AD2C ; =0x04000048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD2C ; =0x04000048 + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr +_0223AC38: + cmp r0, #1 + bne _0223AC64 + ldr r0, _0223AD28 ; =0x04001048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD28 ; =0x04001048 + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223AC64: + ldr r0, _0223AD2C ; =0x04000048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD2C ; =0x04000048 + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223AC88: + cmp r0, #1 + bne _0223ACB4 + ldr r0, _0223AD30 ; =0x0400104A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD30 ; =0x0400104A + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223ACB4: + ldr r0, _0223AD34 ; =0x0400004A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD34 ; =0x0400004A + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223ACD8: + cmp r0, #1 + bne _0223AD04 + ldr r0, _0223AD30 ; =0x0400104A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD30 ; =0x0400104A + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr +_0223AD04: + ldr r0, _0223AD34 ; =0x0400004A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD34 ; =0x0400004A + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr + .align 2, 0 +_0223AD28: .word 0x04001048 +_0223AD2C: .word 0x04000048 +_0223AD30: .word 0x0400104A +_0223AD34: .word 0x0400004A + + arm_func_start MOD13_0223AD38 +MOD13_0223AD38: ; 0x0223AD38 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #1 + bne _0223ADE0 + cmp r1, #0 + bne _0223AD98 + ldrh r0, [r2] + ldrh r1, [r2, #4] + ldrh r3, [r2, #2] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + orr ip, r2, r1 + ldr r3, _0223AE78 ; =0x04001040 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE7C ; =0x04001044 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223AD98: + ldrh r0, [r2] + ldrh r1, [r2, #4] + ldrh r3, [r2, #2] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + orr ip, r2, r1 + ldr r3, _0223AE80 ; =0x04001042 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE84 ; =0x04001046 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223ADE0: + cmp r1, #0 + bne _0223AE30 + ldrh r0, [r2] + ldrh r1, [r2, #4] + ldrh r3, [r2, #2] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + orr ip, r2, r1 + ldr r3, _0223AE88 ; =0x04000040 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE8C ; =0x04000044 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223AE30: + ldrh r0, [r2] + ldrh r3, [r2, #2] + ldrh r1, [r2, #4] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + ldr r3, _0223AE90 ; =0x04000042 + orr ip, r2, r1 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE94 ; =0x04000046 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223AE78: .word 0x04001040 +_0223AE7C: .word 0x04001044 +_0223AE80: .word 0x04001042 +_0223AE84: .word 0x04001046 +_0223AE88: .word 0x04000040 +_0223AE8C: .word 0x04000044 +_0223AE90: .word 0x04000042 +_0223AE94: .word 0x04000046 + + arm_func_start MOD13_0223AE98 +MOD13_0223AE98: ; 0x0223AE98 + cmp r0, #1 + bne _0223AEC8 + ldr r3, _0223AEF0 ; =0x04001000 + mvn r0, r1 + ldr r2, [r3] + ldr r1, [r3] + and r2, r2, #0x1f00 + bic r1, r1, #0x1f00 + and r0, r0, r2, lsr #8 + orr r0, r1, r0, lsl #8 + str r0, [r3] + bx lr +_0223AEC8: + mov r3, #0x4000000 + ldr r0, [r3] + ldr r2, [r3] + and ip, r0, #0x1f00 + mvn r0, r1 + bic r1, r2, #0x1f00 + and r0, r0, ip, lsr #8 + orr r0, r1, r0, lsl #8 + str r0, [r3] + bx lr + .align 2, 0 +_0223AEF0: .word 0x04001000 + + arm_func_start MOD13_0223AEF4 +MOD13_0223AEF4: ; 0x0223AEF4 + cmp r0, #1 + bne _0223AF20 + ldr r3, _0223AF44 ; =0x04001000 + ldr r2, [r3] + ldr r0, [r3] + and ip, r2, #0x1f00 + bic r2, r0, #0x1f00 + orr r0, r1, ip, lsr #8 + orr r0, r2, r0, lsl #8 + str r0, [r3] + bx lr +_0223AF20: + mov r3, #0x4000000 + ldr r2, [r3] + ldr r0, [r3] + and ip, r2, #0x1f00 + bic r2, r0, #0x1f00 + orr r0, r1, ip, lsr #8 + orr r0, r2, r0, lsl #8 + str r0, [r3] + bx lr + .align 2, 0 +_0223AF44: .word 0x04001000 + + arm_func_start MOD13_0223AF48 +MOD13_0223AF48: ; 0x0223AF48 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + bl OS_DisableIrqMask + cmp r5, #0 + mov r4, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _0223AF8C ; =0x022431A8 + mov r1, r5 + ldr r0, [r0] + bl FUN_020ADDF0 + mov r0, r4 + bl OS_EnableIrqMask + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223AF8C: .word 0x022431A8 + + arm_func_start MOD13_0223AF90 +MOD13_0223AF90: ; 0x0223AF90 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + bl OS_DisableIrqMask + ldr r1, [r5] + mov r4, r0 + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _0223AFDC ; =0x022431A8 + ldr r0, [r0] + bl FUN_020ADDF0 + mov r0, r4 + bl OS_EnableIrqMask + mov r0, #0 + str r0, [r5] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223AFDC: .word 0x022431A8 + + arm_func_start MOD13_0223AFE0 +MOD13_0223AFE0: ; 0x0223AFE0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_0223B004 + mov r2, r4 + mov r1, #0 + mov r4, r0 + bl MI_CpuFill8 + mov r0, r4 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0223B004 +MOD13_0223B004: ; 0x0223B004 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + mov r5, r1 + bl OS_DisableIrqMask + ldr r1, _0223B04C ; =0x022431A8 + mov r4, r0 + ldr r0, [r1] + mov r1, r6 + mov r2, r5 + bl tempName_NNS_FndAllocFromExpHeapEx + movs r5, r0 + bne _0223B03C + bl OS_Terminate +_0223B03C: + mov r0, r4 + bl OS_EnableIrqMask + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0223B04C: .word 0x022431A8 + + arm_func_start MOD13_0223B050 +MOD13_0223B050: ; 0x0223B050 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223B078 ; =0x022431A8 + ldr r0, [r0] + bl thunk_FUN_020adc8c + ldr r0, _0223B078 ; =0x022431A8 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B078: .word 0x022431A8 + + arm_func_start MOD13_0223B07C +MOD13_0223B07C: ; 0x0223B07C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, #0 + mov r2, #0x40000 + bl MI_CpuFill8 + mov r0, r4 + mov r1, #0x40000 + mov r2, #0 + bl tempName_NNS_FndCreateExpHeapEx + ldr r1, _0223B0B8 ; =0x022431A8 + cmp r0, #0 + str r0, [r1] + ldmneia sp!, {r4, pc} + bl OS_Terminate + ldmia sp!, {r4, pc} + .align 2, 0 +_0223B0B8: .word 0x022431A8 + + arm_func_start MOD13_0223B0BC +MOD13_0223B0BC: ; 0x0223B0BC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223B144 ; =0x022431AC + ldrb r0, [r0] + cmp r0, #0 + beq _0223B10C + ldr r0, _0223B148 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl PM_SetLCDPower + cmp r0, #0 + ldrne r0, _0223B144 ; =0x022431AC + movne r1, #0 + strneb r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223B10C: + ldr r0, _0223B148 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl PM_SetLCDPower + cmp r0, #0 + ldrne r0, _0223B144 ; =0x022431AC + movne r1, #1 + strneb r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B144: .word 0x022431AC +_0223B148: .word 0x027FFFA8 + + arm_func_start MOD13_0223B14C +MOD13_0223B14C: ; 0x0223B14C + ldr r1, _0223B190 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1f + movs r1, r1, lsr #0x1f + ldrneh r2, [r3, #0x28] + ldrneh r1, [r3, #0x2a] + strneh r2, [r0] + strneh r1, [r0, #2] + movne r0, #1 + bxne lr + ldrh r2, [r3, #0x2c] + ldrh r1, [r3, #0x2e] + strh r2, [r0] + strh r1, [r0, #2] + mov r0, #0 + bx lr + .align 2, 0 +_0223B190: .word 0x022431B4 + + arm_func_start MOD13_0223B194 +MOD13_0223B194: ; 0x0223B194 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldrh r1, [r0] + strh r1, [sp] + ldrh r1, [r0, #2] + strh r1, [sp, #2] + ldrh r2, [r0] + ldrh r1, [r0, #4] + add r1, r2, r1 + strh r1, [sp, #4] + ldrh r2, [r0, #2] + ldrh r1, [r0, #6] + add r0, sp, #0 + add r1, r2, r1 + strh r1, [sp, #6] + bl MOD13_0223B2B4 + add sp, sp, #0xc + ldmia sp!, {pc} + + arm_func_start MOD13_0223B1DC +MOD13_0223B1DC: ; 0x0223B1DC + ldr r1, _0223B244 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1c + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B244: .word 0x022431B4 + + arm_func_start MOD13_0223B248 +MOD13_0223B248: ; 0x0223B248 + ldr r1, _0223B2B0 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1d + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B2B0: .word 0x022431B4 + + arm_func_start MOD13_0223B2B4 +MOD13_0223B2B4: ; 0x0223B2B4 + ldr r1, _0223B31C ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1e + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B31C: .word 0x022431B4 + + arm_func_start MOD13_0223B320 +MOD13_0223B320: ; 0x0223B320 + ldr r1, _0223B388 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1f + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B388: .word 0x022431B4 + + arm_func_start MOD13_0223B38C +MOD13_0223B38C: ; 0x0223B38C + ldr r1, _0223B3AC ; =0x022431B4 + ldr r1, [r1] + ldrh r1, [r1, #0x36] + and r1, r0, r1 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0223B3AC: .word 0x022431B4 + + arm_func_start MOD13_0223B3B0 +MOD13_0223B3B0: ; 0x0223B3B0 + ldr r1, _0223B3D0 ; =0x022431B4 + ldr r1, [r1] + ldrh r1, [r1, #0x34] + and r1, r0, r1 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0223B3D0: .word 0x022431B4 + + arm_func_start MOD13_0223B3D4 +MOD13_0223B3D4: ; 0x0223B3D4 + ldr r1, _0223B3F4 ; =0x022431B4 + ldr r1, [r1] + ldrh r1, [r1, #0x32] + and r1, r0, r1 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0223B3F4: .word 0x022431B4 + + arm_func_start MOD13_0223B3F8 +MOD13_0223B3F8: ; 0x0223B3F8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r0, _0223B598 ; =0x022431B4 + mov r4, #0 + ldr r0, [r0] + ldrb r0, [r0, #0x38] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + movne r6, #1 + moveq r6, #0 + bl TP_GetLatestIndexInAuto + ldr r7, _0223B598 ; =0x022431B4 + mov r5, r4 + ldr r3, [r7] + mov r8, #5 + ldrh r2, [r3, #0x28] + ldrh r1, [r3, #0x2a] + strh r2, [r3, #0x2c] + strh r1, [r3, #0x2e] +_0223B444: + ldr r1, [r7] + add r1, r1, r0, lsl #3 + ldrh r2, [r1, #4] + cmp r2, #1 + bne _0223B48C + ldrh r2, [r1, #6] + cmp r2, #0 + bne _0223B48C + add r0, sp, #0 + mov r4, #1 + bl TP_GetCalibratedPoint + ldr r1, _0223B598 ; =0x022431B4 + ldrh r0, [sp] + ldr r2, [r1] + ldrh r1, [sp, #2] + add r2, r2, #0x28 + bl MOD13_0223ABC0 + b _0223B4A4 +_0223B48C: + mov r1, r8 + add r5, r5, #1 + add r0, r0, #4 + bl FX_ModS32 + cmp r5, #4 + blt _0223B444 +_0223B4A4: + ldr r1, _0223B598 ; =0x022431B4 + eor r7, r4, r6 + ldr r5, [r1] + and r0, r4, r7 + ldrb r3, [r5, #0x38] + and r2, r0, #0xff + and r0, r6, r7 + bic r3, r3, #2 + and r2, r2, #1 + orr r2, r3, r2, lsl #1 + strb r2, [r5, #0x38] + ldr r5, [r1] + and r0, r0, #0xff + ldrb r3, [r5, #0x38] + and r2, r0, #1 + cmp r4, #0 + bic r3, r3, #8 + orr r2, r3, r2, lsl #3 + strb r2, [r5, #0x38] + ldr r3, [r1] + and r0, r4, #1 + ldrb r2, [r3, #0x38] + addeq sp, sp, #8 + bic r2, r2, #1 + orr r0, r2, r0 + strb r0, [r3, #0x38] + ldr r3, [r1] + moveq r1, #0 + ldrb r2, [r3, #0x38] + mov r0, r2, lsl #0x1e + mov r0, r0, lsr #0x1f + bic r2, r2, #4 + and r0, r0, #1 + orr r0, r2, r0, lsl #2 + strb r0, [r3, #0x38] + ldreq r0, _0223B59C ; =0x022431B0 + streqb r1, [r0] + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _0223B59C ; =0x022431B0 + ldrb r2, [r0] + add r2, r2, #1 + strb r2, [r0] + ldrb r2, [r0] + cmp r2, #0x28 + ldreq r1, [r1] + addeq sp, sp, #8 + ldreqb r0, [r1, #0x38] + orreq r0, r0, #4 + streqb r0, [r1, #0x38] + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r2, #0x2f + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r3, [r1] + mov r1, #0x28 + ldrb r2, [r3, #0x38] + orr r2, r2, #4 + strb r2, [r3, #0x38] + strb r1, [r0] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223B598: .word 0x022431B4 +_0223B59C: .word 0x022431B0 + + arm_func_start MOD13_0223B5A0 +MOD13_0223B5A0: ; 0x0223B5A0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r1, _0223B694 ; =0x04000130 + ldr r0, _0223B698 ; =0x027FFFA8 + ldrh r2, [r1] + ldrh r1, [r0] + ldr r4, _0223B69C ; =0x022431B4 + ldr r0, _0223B6A0 ; =0x00002FFF + ldr r5, [r4] + orr r1, r2, r1 + eor r1, r1, r0 + and r0, r1, r0 + mov r0, r0, lsl #0x10 + ldrh r1, [r5, #0x30] + mov r3, r0, lsr #0x10 + ldr ip, _0223B6A4 ; =0x022431B8 + eor r1, r1, r0, lsr #16 + and r1, r1, r0, lsr #16 + strh r1, [r5, #0x32] + ldrh r2, [r5, #0x30] + ldr r1, [r4] + mov lr, #0 + eor r0, r2, r0, lsr #16 + and r0, r2, r0 + strh r0, [r1, #0x36] + ldr r0, [r4] + strh r3, [r0, #0x30] + ldr r1, [r4] + ldrh r0, [r1, #0x32] + strh r0, [r1, #0x34] + mov r0, lr + mov r5, #0x28 + mov r2, #1 +_0223B624: + mov r1, r2, lsl lr + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + ands r6, r3, r1 + streqb r0, [ip] + beq _0223B67C + ldrb r6, [ip] + add r6, r6, #1 + strb r6, [ip] + ldrb r6, [ip] + cmp r6, #0x28 + ldreq r7, [r4] + ldreqh r6, [r7, #0x34] + orreq r1, r6, r1 + streqh r1, [r7, #0x34] + beq _0223B67C + cmp r6, #0x2f + ldreq r7, [r4] + ldreqh r6, [r7, #0x34] + orreq r1, r6, r1 + streqh r1, [r7, #0x34] + streqb r5, [ip] +_0223B67C: + add lr, lr, #1 + cmp lr, #0xe + add ip, ip, #1 + blt _0223B624 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B694: .word 0x04000130 +_0223B698: .word 0x027FFFA8 +_0223B69C: .word 0x022431B4 +_0223B6A0: .word 0x00002FFF +_0223B6A4: .word 0x022431B8 + + arm_func_start MOD13_0223B6A8 +MOD13_0223B6A8: ; 0x0223B6A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223B5A0 + bl MOD13_0223B3F8 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223B6C0 +MOD13_0223B6C0: ; 0x0223B6C0 + stmdb sp!, {r4, lr} + mov r4, #4 +_0223B6C8: + bl TP_RequestAutoSamplingStopAsync + mov r0, r4 + bl TP_WaitBusy + mov r0, r4 + bl TP_CheckError + cmp r0, #0 + bne _0223B6C8 + ldr r0, _0223B6F0 ; =0x022431B4 + bl MOD13_0223AF90 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223B6F0: .word 0x022431B4 + + arm_func_start MOD13_0223B6F4 +MOD13_0223B6F4: ; 0x0223B6F4 + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r0, #0x3a + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _0223B76C ; =0x022431B4 + str r0, [r1] + add r0, sp, #0 + bl TP_GetUserInfo + cmp r0, #0 + bne _0223B724 + bl OS_Terminate +_0223B724: + add r0, sp, #0 + bl TP_SetCalibrateParam + ldr r1, _0223B76C ; =0x022431B4 + mov r0, #0 + ldr r2, [r1] + mov r1, #4 + mov r3, #5 + bl TP_RequestAutoSamplingStartAsync + mov r0, #2 + bl TP_WaitBusy + mov r0, #2 + bl TP_CheckError + cmp r0, #0 + beq _0223B760 + bl OS_Terminate +_0223B760: + bl MOD13_0223B6A8 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_0223B76C: .word 0x022431B4 + + arm_func_start MOD13_0223B770 +MOD13_0223B770: ; 0x0223B770 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223C1E0 + ldr r0, _0223B79C ; =0x027E0000 + add r0, r0, #0x3000 + ldr r1, [r0, #0xff8] + orr r1, r1, #1 + str r1, [r0, #0xff8] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B79C: .word 0x027E0000 + + arm_func_start MOD13_0223B7A0 +MOD13_0223B7A0: ; 0x0223B7A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _0223B7DC ; =0x04000208 + mov r1, #0 + ldrh r0, [r2] + ldr r0, _0223B7E0 ; =0x022431CC + strh r1, [r2] + ldr r0, [r0] + bl OS_SetIrqMask + ldr r1, _0223B7E4 ; =0x022431C8 + mov r0, #1 + ldr r1, [r1] + bl OS_SetIrqFunction + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B7DC: .word 0x04000208 +_0223B7E0: .word 0x022431CC +_0223B7E4: .word 0x022431C8 + + arm_func_start MOD13_0223B7E8 +MOD13_0223B7E8: ; 0x0223B7E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223B850 ; =0x04000210 + ldr r1, _0223B854 ; =0x022431CC + ldr r2, [r0] + ldr r0, _0223B858 ; =0x00040018 + str r2, [r1] + bl OS_SetIrqMask + mov r0, #1 + bl OS_EnableIrqMask + mov r0, #1 + bl OS_GetIrqFunction + ldr r2, _0223B85C ; =0x022431C8 + ldr r1, _0223B860 ; =MOD13_0223B770 + str r0, [r2] + mov r0, #1 + bl OS_SetIrqFunction + mov r0, #1 + bl OS_ResetRequestIrqMask + ldr r2, _0223B864 ; =0x04000208 + mov r0, #1 + ldrh r1, [r2] + strh r0, [r2] + bl OS_EnableInterrupts + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B850: .word 0x04000210 +_0223B854: .word 0x022431CC +_0223B858: .word 0x00040018 +_0223B85C: .word 0x022431C8 +_0223B860: .word MOD13_0223B770 +_0223B864: .word 0x04000208 + + arm_func_start MOD13_0223B868 +MOD13_0223B868: ; 0x0223B868 + ldr ip, _0223B874 ; =MOD13_0223B888 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0223B874: .word MOD13_0223B888 + + arm_func_start MOD13_0223B878 +MOD13_0223B878: ; 0x0223B878 + ldr ip, _0223B884 ; =MOD13_0223B888 + add r0, r0, #8 + bx ip + .align 2, 0 +_0223B884: .word MOD13_0223B888 + + arm_func_start MOD13_0223B888 +MOD13_0223B888: ; 0x0223B888 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + mov r4, r1 + bl OS_DisableIrqMask + ldr r1, [r5] + str r4, [r1, #4] + ldr r1, [r5] + str r1, [r4] + str r5, [r4, #4] + str r4, [r5] + bl OS_EnableIrqMask + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_0223B8C4 +MOD13_0223B8C4: ; 0x0223B8C4 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #1 + bl OS_DisableIrqMask + ldr r3, [r4, #4] + ldr r2, [r4] + mov r1, #0 + str r3, [r2, #4] + ldr r3, [r4] + ldr r2, [r4, #4] + str r3, [r2] + str r1, [r4, #4] + ldr r1, [r4, #4] + str r1, [r4] + bl OS_EnableIrqMask + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0223B904 +MOD13_0223B904: ; 0x0223B904 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #8 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start MOD13_0223B928 +MOD13_0223B928: ; 0x0223B928 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x10 + mov r1, #4 + bl MOD13_0223B004 + mov r2, #0 + str r2, [r0] + add r1, r0, #8 + str r1, [r0, #4] + str r0, [r0, #8] + str r2, [r0, #0xc] + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223B95C +MOD13_0223B95C: ; 0x0223B95C + ldr r2, _0223B970 ; =0x022431D0 + ldr r2, [r2] + add r0, r2, r0, lsl #10 + add r0, r0, r1, lsl #3 + bx lr + .align 2, 0 +_0223B970: .word 0x022431D0 + + arm_func_start MOD13_0223B974 +MOD13_0223B974: ; 0x0223B974 + mov r1, r0 + ldr r3, [r1] + ldr r0, _0223B9B4 ; =0xC1FFFCFF + ldr r2, _0223B9B8 ; =0x022431D0 + and r0, r3, r0 + orr r0, r0, #0x200 + str r0, [r1] + ldr r2, [r2] + mov r3, #0 + add r0, r2, #0x400 + cmp r1, r0 + movhs r3, #1 + add r0, r2, r3, lsl #2 + ldr ip, _0223B9BC ; =MOD13_02239FD0 + ldr r0, [r0, #0x800] + bx ip + .align 2, 0 +_0223B9B4: .word 0xC1FFFCFF +_0223B9B8: .word 0x022431D0 +_0223B9BC: .word MOD13_02239FD0 + + arm_func_start MOD13_0223B9C0 +MOD13_0223B9C0: ; 0x0223B9C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _0223BA00 ; =0x022431D0 + mov r5, r1 + ldr r1, [r2] + add r0, r1, r0, lsl #2 + ldr r0, [r0, #0x800] + bl MOD13_02239F78 + mov r4, r0 + mov r0, r5 + mov r1, r4 + mov r2, #8 + bl MIi_CpuCopy32 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223BA00: .word 0x022431D0 + + arm_func_start MOD13_0223BA04 +MOD13_0223BA04: ; 0x0223BA04 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0223BA30 ; =0x022431D0 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1, #0x808] + bl MOD13_0223C104 + ldr r0, _0223BA30 ; =0x022431D0 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BA30: .word 0x022431D0 + + arm_func_start MOD13_0223BA34 +MOD13_0223BA34: ; 0x0223BA34 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223BA80 ; =0x022431D0 + mov r1, #0x800 + ldr r0, [r0] + bl DC_FlushRange + ldr r0, _0223BA80 ; =0x022431D0 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x400 + bl GX_LoadOAM + ldr r0, _0223BA80 ; =0x022431D0 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x400 + add r0, r0, #0x400 + bl GXS_LoadOAM + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BA80: .word 0x022431D0 + + arm_func_start MOD13_0223BA84 +MOD13_0223BA84: ; 0x0223BA84 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r0, _0223BB14 ; =0x0000080C + mov r1, #4 + bl MOD13_0223B004 + mov r1, r0 + ldr r3, _0223BB18 ; =0x022431D0 + mov r0, #0x200 + mov r2, #0x800 + str r1, [r3] + bl MIi_CpuClearFast + mov r6, #0 + mov r5, r6 + ldr r7, _0223BB18 ; =0x022431D0 + mov r4, #0x40 + mov r8, #8 +_0223BAC0: + ldr r1, [r7] + mov r0, r4 + mov r2, r8 + add r1, r1, r5 + bl MOD13_0223A054 + ldr r1, [r7] + add r5, r5, #0x400 + add r1, r1, r6, lsl #2 + add r6, r6, #1 + str r0, [r1, #0x800] + cmp r6, #2 + blt _0223BAC0 + ldr r1, _0223BB1C ; =MOD13_0223BA34 + mov r0, #1 + mov r2, #0 + mov r3, #0xc8 + bl MOD13_0223C1C4 + ldr r1, _0223BB18 ; =0x022431D0 + ldr r1, [r1] + str r0, [r1, #0x808] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223BB14: .word 0x0000080C +_0223BB18: .word 0x022431D0 +_0223BB1C: .word MOD13_0223BA34 + + arm_func_start MOD13_0223BB20 +MOD13_0223BB20: ; 0x0223BB20 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, #0 + bl MOD13_0223B8C4 + ldr r0, _0223BB64 ; =0x022431D4 + ldr r1, [r0] + add r0, r1, #0x1a0 + cmp r5, r0 + movhs r4, #1 + mov r0, #0x1a0 + mla r0, r4, r0, r1 + ldr r0, [r0, #0x19c] + mov r1, r5 + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223BB64: .word 0x022431D4 + + arm_func_start MOD13_0223BB68 +MOD13_0223BB68: ; 0x0223BB68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r6, r0 + mov r0, #0x1a0 + mul r7, r6, r0 + ldr r0, _0223BCE0 ; =0x022431D4 + mov r4, r1 + ldr r0, [r0] + mov sl, r2 + add r0, r0, r7 + ldr r0, [r0, #0x19c] + mov r5, r3 + bl MOD13_02239F78 + add r1, r4, #3 + bic r1, r1, #3 + mov r4, r0 + mov r8, r1, asr #2 + mov r0, #1 + strh r8, [r4, #0xa] + bl OS_DisableIrqMask + mov sb, r0 + cmp sl, #0 + beq _0223BC44 + ldr r1, _0223BCE0 ; =0x022431D4 + mov r0, #0x1a0 + ldr r1, [r1] + mla r0, r6, r0, r1 + add r6, r0, #0x180 + add r0, r0, #0x18c + cmp r6, r0 + beq _0223BC24 + add r0, r1, r7 + add r1, r0, #0x18c +_0223BBE8: + ldr r0, [r6, #4] + ldrh sl, [r6, #8] + ldrh r3, [r6, #0xa] + ldrh r2, [r0, #8] + add sl, sl, r3 + add r3, sl, r8 + cmp r3, r2 + bgt _0223BC18 + mov r1, r4 + strh sl, [r4, #8] + bl MOD13_0223B888 + b _0223BC24 +_0223BC18: + mov r6, r0 + cmp r0, r1 + bne _0223BBE8 +_0223BC24: + ldr r0, _0223BCE0 ; =0x022431D4 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x18c + cmp r6, r0 + bne _0223BCC8 + bl OS_Terminate + b _0223BCC8 +_0223BC44: + ldr r1, _0223BCE0 ; =0x022431D4 + mov r0, #0x1a0 + ldr r1, [r1] + mla r0, r6, r0, r1 + add r6, r0, #0x18c + add r0, r0, #0x180 + cmp r6, r0 + beq _0223BCAC + add r0, r1, r7 + add r0, r0, #0x180 +_0223BC6C: + ldr sl, [r6] + ldrh r3, [r6, #8] + ldrh r2, [sl, #8] + ldrh r1, [sl, #0xa] + sub r3, r3, r8 + add r1, r2, r1 + cmp r3, r1 + blt _0223BCA0 + mov r0, r6 + mov r1, r4 + strh r3, [r4, #8] + bl MOD13_0223B888 + b _0223BCAC +_0223BCA0: + mov r6, sl + cmp sl, r0 + bne _0223BC6C +_0223BCAC: + ldr r0, _0223BCE0 ; =0x022431D4 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x180 + cmp r6, r0 + bne _0223BCC8 + bl OS_Terminate +_0223BCC8: + ldrh r1, [r4, #8] + mov r0, sb + str r1, [r5] + bl OS_EnableIrqMask + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0223BCE0: .word 0x022431D4 + + arm_func_start MOD13_0223BCE4 +MOD13_0223BCE4: ; 0x0223BCE4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r0, #0x340 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r4, _0223BDA0 ; =0x022431D4 + mov sl, #0 + mov sb, sl + str r0, [r4] + mov r8, #0x20 + mov r7, #0xc + mov r6, #0x300 + mov r5, #0x400 +_0223BD14: + ldr r1, [r4] + mov r0, r8 + mov r2, r7 + add r1, r1, sb + bl MOD13_0223A054 + ldr r1, [r4] + add r1, r1, sb + str r0, [r1, #0x19c] + bl MOD13_0223B928 + ldr r1, [r4] + add r1, r1, sb + str r0, [r1, #0x198] + ldr r0, [r4] + add r0, r0, sb + add r0, r0, #0x100 + strh r6, [r0, #0x88] + ldr r0, [r4] + add r0, r0, sb + add r0, r0, #0x100 + strh r5, [r0, #0x94] + ldr r0, [r4] + add r1, r0, sb + ldr r0, [r1, #0x198] + add r1, r1, #0x180 + bl MOD13_0223B868 + ldr r0, [r4] + add r1, r0, sb + ldr r0, [r1, #0x198] + add r1, r1, #0x18c + bl MOD13_0223B878 + add sl, sl, #1 + cmp sl, #2 + add sb, sb, #0x1a0 + blt _0223BD14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0223BDA0: .word 0x022431D4 + + arm_func_start MOD13_0223BDA4 +MOD13_0223BDA4: ; 0x0223BDA4 + cmp r1, #0 + mov r3, #0 + ble _0223BDC8 +_0223BDB0: + ldrb r2, [r0, r3] + cmp r2, #0 + beq _0223BDC8 + add r3, r3, #1 + cmp r3, r1 + blt _0223BDB0 +_0223BDC8: + mov r0, r3 + bx lr + + arm_func_start MOD13_0223BDD0 +MOD13_0223BDD0: ; 0x0223BDD0 + ldr ip, _0223BDDC ; =0x020D4CAC + mov r0, #1 + bx ip + .align 2, 0 +_0223BDDC: .word 0x020D4CAC + + arm_func_start MOD13_0223BDE0 +MOD13_0223BDE0: ; 0x0223BDE0 + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #0 + bl PM_GetLEDPattern + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, [sp] + cmp r0, #0xf + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0xf + bl PMi_SendLEDPatternCommand + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223BE1C +MOD13_0223BE1C: ; 0x0223BE1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223BE98 ; =0x000001F3 + bl GX_SetBankForLCDC + mov r0, #0 + mov r1, #0x6800000 + mov r2, #0x40000 + bl MIi_CpuClearFast + ldr r1, _0223BE9C ; =0x06880000 + mov r0, #0 + mov r2, #0x24000 + bl MIi_CpuClearFast + bl GX_DisableBankForLCDC + mov r0, #0x200 + mov r1, #0x7000000 + mov r2, #0x400 + bl MIi_CpuClearFast + mov r0, #0 + mov r1, #0x5000000 + mov r2, #0x400 + bl MIi_CpuClearFast + mov r0, #0x200 + ldr r1, _0223BEA0 ; =0x07000400 + mov r2, #0x400 + bl MIi_CpuClearFast + mov r0, #0 + ldr r1, _0223BEA4 ; =0x05000400 + mov r2, #0x400 + bl MIi_CpuClearFast + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BE98: .word 0x000001F3 +_0223BE9C: .word 0x06880000 +_0223BEA0: .word 0x07000400 +_0223BEA4: .word 0x05000400 + + arm_func_start MOD13_0223BEA8 +MOD13_0223BEA8: ; 0x0223BEA8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl disableBankForX_ + bl GX_DisableBankForOBJExtPltt_2 + bl GX_DisableBankForSubBGExtPltt + bl GX_DisableBankForSubOBJExtPltt_2 + bl MOD13_0223BE1C + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0] + bl GX_SetBankForBG + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #4] + bl GX_SetBankForOBJ + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #8] + bl GX_SetBankForBGExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0xc] + bl GX_SetBankForOBJExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x10] + bl GX_SetBankForTex + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x14] + bl GX_SetBankForTexPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x18] + bl GX_SetBankForClearImage + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x1c] + bl GX_SetBankForSubBG + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x20] + bl GX_SetBankForSubOBJ + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x24] + bl GX_SetBankForSubBGExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x28] + bl GX_SetBankForSubOBJExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x30] + bl GX_SetBankForLCDC + mov r2, #0 + ldr r1, _0223BFBC ; =0x04000050 + ldr r0, _0223BFC0 ; =0x04001050 + strh r2, [r1] + strh r2, [r0] + ldr r1, _0223BFC4 ; =0x04000010 + ldr r0, _0223BFC8 ; =0x04000014 + str r2, [r1] + str r2, [r0] + ldr r1, _0223BFCC ; =0x04000018 + ldr r0, _0223BFD0 ; =0x0400001C + str r2, [r1] + str r2, [r0] + ldr r1, _0223BFD4 ; =0x04001010 + ldr r0, _0223BFD8 ; =0x04001014 + str r2, [r1] + str r2, [r0] + ldr r1, _0223BFDC ; =0x04001018 + ldr r0, _0223BFE0 ; =0x0400101C + str r2, [r1] + str r2, [r0] + mov r0, #1 + bl PM_SetLCDPower + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BFB8: .word 0x022431D8 +_0223BFBC: .word 0x04000050 +_0223BFC0: .word 0x04001050 +_0223BFC4: .word 0x04000010 +_0223BFC8: .word 0x04000014 +_0223BFCC: .word 0x04000018 +_0223BFD0: .word 0x0400001C +_0223BFD4: .word 0x04001010 +_0223BFD8: .word 0x04001014 +_0223BFDC: .word 0x04001018 +_0223BFE0: .word 0x0400101C + + arm_func_start MOD13_0223BFE4 +MOD13_0223BFE4: ; 0x0223BFE4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl disableBankForX_ + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1] + bl GX_DisableBankForOBJExtPltt_2 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #4] + bl GX_DisableBankForBGExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #8] + bl GX_DisableBankForOBJExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0xc] + bl GX_DisableBankForTexPltt_2 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x10] + bl GX_DisableBankForTexPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x14] + bl GX_DisableBankForClearImage + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x18] + bl GX_DisableBankForSubBGExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x1c] + bl GX_DisableBankForSubOBJExtPltt_2 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x20] + bl FUN_020C5E04 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x24] + bl GX_DisableBankForSubOBJExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x28] + bl GX_DisableBankForARM7 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x2c] + bl GX_DisableBankForLCDC + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x30] + ldr r0, [r1, #0x2c] + bl GX_SetBankForARM7 + bl MOD13_0223BE1C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223C09C: .word 0x022431D8 + + arm_func_start MOD13_0223C0A0 +MOD13_0223C0A0: ; 0x0223C0A0 + ldr r2, _0223C0B4 ; =0x0224320C + ldr r2, [r2] + add r0, r2, r0, lsl #6 + strb r1, [r0, #0x38] + bx lr + .align 2, 0 +_0223C0B4: .word 0x0224320C + + arm_func_start MOD13_0223C0B8 +MOD13_0223C0B8: ; 0x0223C0B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + ldrb r1, [r4, #0x11] + mov r5, r0 + cmp r1, #0 + beq _0223C0DC + add r0, r4, #0xc + bl MOD13_0223AF90 +_0223C0DC: + mov r0, r4 + bl MOD13_0223B8C4 + ldr r0, _0223C100 ; =0x0224320C + mov r1, r4 + ldr r0, [r0] + ldr r0, [r0, r5, lsl #6] + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223C100: .word 0x0224320C + + arm_func_start MOD13_0223C104 +MOD13_0223C104: ; 0x0223C104 + ldr ip, _0223C10C ; =MOD13_0223C0B8 + bx ip + .align 2, 0 +_0223C10C: .word MOD13_0223C0B8 + + arm_func_start MOD13_0223C110 +MOD13_0223C110: ; 0x0223C110 + ldr r2, _0223C128 ; =0x0224320C + ldr ip, _0223C12C ; =MOD13_02239FD0 + ldr r2, [r2] + add r0, r2, r0, lsl #6 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0223C128: .word 0x0224320C +_0223C12C: .word MOD13_02239FD0 + + arm_func_start MOD13_0223C130 +MOD13_0223C130: ; 0x0223C130 + str r1, [r0, #8] + bx lr + + arm_func_start MOD13_0223C138 +MOD13_0223C138: ; 0x0223C138 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r4, _0223C1C0 ; =0x0224320C + mov r7, r0 + ldr r0, [r4] + mov r8, r1 + ldr r0, [r0, r7, lsl #6] + mov r4, r2 + mov r6, r3 + bl MOD13_02239F78 + mov r5, r0 + str r8, [r5, #8] + str r4, [r5, #0xc] + ldrb r1, [sp, #0x18] + strb r6, [r5, #0x10] + mov r0, #1 + strb r1, [r5, #0x11] + bl OS_DisableIrqMask + ldr r1, _0223C1C0 ; =0x0224320C + mov r4, r0 + ldr r0, [r1] + add r0, r0, r7, lsl #6 + ldr r0, [r0, #0x10] +_0223C190: + ldrb r1, [r0, #0x10] + cmp r6, r1 + bhs _0223C1A8 + mov r1, r5 + bl MOD13_0223B888 + b _0223C1B0 +_0223C1A8: + ldr r0, [r0, #4] + b _0223C190 +_0223C1B0: + mov r0, r4 + bl OS_EnableIrqMask + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223C1C0: .word 0x0224320C + + arm_func_start MOD13_0223C1C4 +MOD13_0223C1C4: ; 0x0223C1C4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov ip, #0 + str ip, [sp] + bl MOD13_0223C138 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223C1E0 +MOD13_0223C1E0: ; 0x0223C1E0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r7, _0223C2A4 ; =0x0224320C + mov r6, r0 + ldr r0, [r7] + mov r4, r6, lsl #6 + add r2, r0, r6, lsl #6 + ldrb r1, [r2, #0x38] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r5, [r2, #0x10] + add r1, r2, #0x20 + cmp r5, r1 + beq _0223C244 +_0223C21C: + ldr r1, [r5, #0xc] + ldr r2, [r5, #8] + mov r0, r5 + blx r2 + ldr r0, [r7] + ldr r5, [r5, #4] + add r1, r0, r4 + add r1, r1, #0x20 + cmp r5, r1 + bne _0223C21C +_0223C244: + add r1, r0, r6, lsl #6 + ldr r1, [r1, #0x34] + mov r4, r6, lsl #6 + cmp r1, #0 + mov r5, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, pc} + ldr r7, _0223C2A4 ; =0x0224320C +_0223C264: + add r0, r4, r0 + ldr r0, [r0, #4] + bl MOD13_02239F78 + movs r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, r6 + bl MOD13_0223C0B8 + ldr r0, [r7] + add r5, r5, #1 + add r1, r4, r0 + ldr r1, [r1, #0x34] + cmp r5, r1 + blt _0223C264 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223C2A4: .word 0x0224320C + + arm_func_start MOD13_0223C2A8 +MOD13_0223C2A8: ; 0x0223C2A8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _0223C2F0 ; =0x0224320C + mov r5, #0 +_0223C2B8: + ldr r0, [r4] + add r0, r0, r5, lsl #6 + ldr r0, [r0, #8] + bl MOD13_0223B904 + ldr r0, [r4] + ldr r0, [r0, r5, lsl #6] + bl MOD13_0223A030 + add r5, r5, #1 + cmp r5, #2 + blt _0223C2B8 + ldr r0, _0223C2F0 ; =0x0224320C + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223C2F0: .word 0x0224320C + + arm_func_start MOD13_0223C2F4 +MOD13_0223C2F4: ; 0x0223C2F4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r0, #0x80 + mov r1, #4 + bl MOD13_0223B004 + ldr r4, _0223C418 ; =0x0224320C + mov sl, #0 + ldr sb, _0223C41C ; =0x0223F764 + mov r8, sl + str r0, [r4] + str sl, [sp] + mov r7, #4 + mov fp, #0x14 + mov r6, #0xff + mov r5, #1 +_0223C330: + ldr r0, [r4] + ldrb r2, [sb] + add r1, r0, sl, lsl #6 + mov r0, #0x14 + str r2, [r1, #0x34] + ldrb r2, [sb] + mov r1, r7 + mul r0, r2, r0 + bl MOD13_0223B004 + ldr r1, [r4] + mov r2, fp + add r1, r1, sl, lsl #6 + str r0, [r1, #0x3c] + ldr r1, [r4] + ldrb r0, [sb] + add r1, r1, sl, lsl #6 + ldr r1, [r1, #0x3c] + bl MOD13_0223A054 + ldr r1, [r4] + str r0, [r1, sl, lsl #6] + ldrb r0, [sb] + bl MOD13_0223A094 + ldr r1, [r4] + add r1, r1, sl, lsl #6 + str r0, [r1, #4] + bl MOD13_0223B928 + ldr r1, [r4] + add r1, r1, sl, lsl #6 + str r0, [r1, #8] + ldr r0, [r4] + add r1, r0, sl, lsl #6 + ldr r0, [sp] + strb r0, [r1, #0x1c] + ldr r0, [r4] + add r0, r0, sl, lsl #6 + strb r6, [r0, #0x30] + ldr r1, [r4] + add r0, r1, sl, lsl #6 + add r1, r1, r8 + ldr r0, [r0, #8] + add r1, r1, #0xc + bl MOD13_0223B868 + ldr r1, [r4] + add r0, r1, sl, lsl #6 + add r1, r1, r8 + ldr r0, [r0, #8] + add r1, r1, #0x20 + bl MOD13_0223B878 + ldr r0, [r4] + add sb, sb, #1 + add r0, r0, sl, lsl #6 + add sl, sl, #1 + strb r5, [r0, #0x38] + add r8, r8, #0x40 + cmp sl, #2 + blt _0223C330 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0223C418: .word 0x0224320C +_0223C41C: .word 0x0223F764 + + .section .data + ; 0x0223C420 + .incbin "baserom.nds", 0x2237C0, 0x4620 + + .section .bss + ; 0x02240A40 + .space 0x27E0 diff --git a/arm9/modules/13/asm/module_13_init.s b/arm9/modules/13/asm/module_13_init.s new file mode 100644 index 00000000..03402138 --- /dev/null +++ b/arm9/modules/13/asm/module_13_init.s @@ -0,0 +1,33 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD13_02211E60 +MOD13_02211E60: ; 0x02211E60 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0202E49C + bl OS_InitTick + bl OS_InitAlarm + bl OS_DisableInterrupts + mov r1, #1 + add r5, r0, #0 + add r0, r4, #0 + lsl r1, r1, #0x12 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #1 + mov r2, #0 + bl MOD13_02223494 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl OS_RestoreInterrupts + ldr r1, _02211EA0 ; =0x04000208 + ldrh r0, [r1] + mov r0, #1 + strh r0, [r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_02211EA0: .word 0x04000208 diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s new file mode 100644 index 00000000..b180ff6b --- /dev/null +++ b/arm9/modules/13/asm/module_13_thumb.s @@ -0,0 +1,14779 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD13_022172DC +MOD13_022172DC: ; 0x022172DC + str r0, [r1] + mov r0, #1 + strh r0, [r1, #4] + bx lr + + thumb_func_start MOD13_022172E4 +MOD13_022172E4: ; 0x022172E4 + mov r1, #0 + str r1, [r0] + strh r1, [r0, #4] + strh r1, [r0, #6] + bx lr + .align 2, 0 + + thumb_func_start MOD13_022172F0 +MOD13_022172F0: ; 0x022172F0 + push {r4, lr} + sub sp, #0x10 + ldr r0, _02217358 ; =0x02240B3C + ldr r0, [r0] + cmp r0, #0 + bne _02217334 + mov r4, #0 + add r0, sp, #0 + add r1, r4, #0 + mov r2, #0xc + bl MOD13_022174C0 + add r0, sp, #0 + bl RTC_GetTime + cmp r0, #0 + bne _02217322 + ldr r0, [sp] + lsl r0, r0, #0xa + add r1, r4, r0 + ldr r0, [sp, #4] + lsl r0, r0, #3 + add r1, r1, r0 + ldr r0, [sp, #8] + add r4, r1, r0 +_02217322: + ldr r0, _0221735C ; =0x02240B54 + str r4, [r0] + ldr r1, _02217360 ; =0x5D588B65 + str r1, [r0, #4] + ldr r1, _02217364 ; =0x00269EC3 + str r1, [r0, #8] + mov r1, #1 + ldr r0, _02217358 ; =0x02240B3C + str r1, [r0] +_02217334: + ldr r0, _0221735C ; =0x02240B54 + ldr r3, [r0, #8] + ldr r2, [r0, #4] + ldr r1, [r0] + mul r2, r1 + add r1, r3, r2 + str r1, [r0] + lsr r1, r1, #0x10 + ldr r0, _02217368 ; =0x00007FFF + mul r1, r0 + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add sp, #0x10 + pop {r4} + pop {r3} + bx r3 + nop +_02217358: .word 0x02240B3C +_0221735C: .word 0x02240B54 +_02217360: .word 0x5D588B65 +_02217364: .word 0x00269EC3 +_02217368: .word 0x00007FFF + + thumb_func_start MOD13_0221736C +MOD13_0221736C: ; 0x0221736C + mov r2, #0 + ldrsb r1, [r0, r2] + cmp r1, #0 + beq _0221737C +_02217374: + add r2, r2, #1 + ldrsb r1, [r0, r2] + cmp r1, #0 + bne _02217374 +_0221737C: + add r0, r2, #0 + bx lr + + thumb_func_start MOD13_02217380 +MOD13_02217380: ; 0x02217380 + asr r2, r0, #8 + mov r1, #0xff + and r2, r1 + lsl r1, r0, #8 + ldr r0, _02217394 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bx lr + .align 2, 0 +_02217394: .word 0x0000FF00 + + thumb_func_start MOD13_02217398 +MOD13_02217398: ; 0x02217398 + push {r4} + sub sp, #4 + lsl r1, r0, #0x18 + ldr r2, _022173C4 ; =0xFF000000 + and r1, r2 + lsl r4, r0, #8 + ldr r2, _022173C8 ; =0x00FF0000 + and r4, r2 + lsr r3, r0, #0x18 + mov r2, #0xff + and r3, r2 + lsr r2, r0, #8 + ldr r0, _022173CC ; =0x0000FF00 + and r2, r0 + orr r3, r2 + orr r4, r3 + orr r1, r4 + add r0, r1, #0 + add sp, #4 + pop {r4} + bx lr + nop +_022173C4: .word 0xFF000000 +_022173C8: .word 0x00FF0000 +_022173CC: .word 0x0000FF00 + + thumb_func_start MOD13_022173D0 +MOD13_022173D0: ; 0x022173D0 + asr r2, r0, #8 + mov r1, #0xff + and r2, r1 + lsl r1, r0, #8 + ldr r0, _022173E4 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bx lr + .align 2, 0 +_022173E4: .word 0x0000FF00 + + thumb_func_start MOD13_022173E8 +MOD13_022173E8: ; 0x022173E8 + push {r4} + sub sp, #4 + lsl r1, r0, #0x18 + ldr r2, _02217414 ; =0xFF000000 + and r1, r2 + lsl r4, r0, #8 + ldr r2, _02217418 ; =0x00FF0000 + and r4, r2 + lsr r3, r0, #0x18 + mov r2, #0xff + and r3, r2 + lsr r2, r0, #8 + ldr r0, _0221741C ; =0x0000FF00 + and r2, r0 + orr r3, r2 + orr r4, r3 + orr r1, r4 + add r0, r1, #0 + add sp, #4 + pop {r4} + bx lr + nop +_02217414: .word 0xFF000000 +_02217418: .word 0x00FF0000 +_0221741C: .word 0x0000FF00 + + thumb_func_start MOD13_02217420 +MOD13_02217420: ; 0x02217420 + ldr r3, _02217424 ; =0x0209A7B8 + bx r3 + .align 2, 0 +_02217424: .word 0x0209A7B8 + + thumb_func_start MOD13_02217428 +MOD13_02217428: ; 0x02217428 + strb r2, [r1] + ldr r3, _02217430 ; =0x0209A9A4 + bx r3 + nop +_02217430: .word 0x0209A9A4 + + thumb_func_start MOD13_02217434 +MOD13_02217434: ; 0x02217434 + ldr r3, _02217438 ; =0x0209A9D0 + bx r3 + .align 2, 0 +_02217438: .word 0x0209A9D0 + + thumb_func_start MOD13_0221743C +MOD13_0221743C: ; 0x0221743C + bx lr + .align 2, 0 + + thumb_func_start MOD13_02217440 +MOD13_02217440: ; 0x02217440 + push {r4, r5, lr} + sub sp, #4 + ldr r5, [sp, #0x14] + ldr r4, [sp, #0x10] + strb r5, [r4] + str r4, [sp] + bl FUN_0209A7D0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + + thumb_func_start MOD13_02217458 +MOD13_02217458: ; 0x02217458 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r5, [sp, #0x18] + mov r4, #0 + ldr r2, [r1] + ldr r0, [r1, #4] + str r2, [sp] + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, _022174A0 ; =0x01FF6210 + mul r0, r1 + mov r1, #0x40 + bl _s32_div_f + asr r1, r0, #0x1f + add r6, r4, r0 + adc r4, r1 + ldr r0, [r5, #4] + ldr r1, _022174A0 ; =0x01FF6210 + mul r0, r1 + mov r1, #0x40 + bl _s32_div_f + asr r1, r0, #0x1f + add r2, r6, r0 + adc r4, r1 + add r0, sp, #0 + mov r1, #1 + add r3, r4, #0 + bl FUN_0209A0AC + add sp, #8 + pop {r4, r5, r6} + pop {r3} + bx r3 + nop +_022174A0: .word 0x01FF6210 + + thumb_func_start MOD13_022174A4 +MOD13_022174A4: ; 0x022174A4 + push {r4, r5, lr} + sub sp, #4 + ldr r4, [sp, #0x14] + ldr r5, [r4] + ldr r4, [sp, #0x10] + strb r5, [r4] + str r4, [sp] + bl FUN_0209A880 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_022174C0 +MOD13_022174C0: ; 0x022174C0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + ldr r3, _022174C8 ; =0x020CE34C + bx r3 + .align 2, 0 +_022174C8: .word 0x020CE34C + + thumb_func_start MOD13_022174CC +MOD13_022174CC: ; 0x022174CC + add r3, r0, #0 + add r0, r1, #0 + add r1, r3, #0 + ldr r3, _022174D8 ; =0x020CE3E0 + bx r3 + nop +_022174D8: .word 0x020CE3E0 + + thumb_func_start MOD13_022174DC +MOD13_022174DC: ; 0x022174DC + push {r4} + sub sp, #4 + mov r4, #0 + b _022174E8 +_022174E4: + add r0, r0, #1 + add r1, r1, #1 +_022174E8: + add r3, r2, #0 + sub r2, r2, #1 + cmp r3, #0 + ble _022174FA + ldrb r4, [r0] + ldrb r3, [r1] + sub r4, r4, r3 + cmp r4, #0 + beq _022174E4 +_022174FA: + add r0, r4, #0 + add sp, #4 + pop {r4} + bx lr + .align 2, 0 + + thumb_func_start MOD13_02217504 +MOD13_02217504: ; 0x02217504 + push {lr} + sub sp, #4 + bl THUNK_FUN_02099BC8 + cmp r0, #0 + bge _0221751A + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r3} + bx r3 +_0221751A: + bl MOD13_02219C60 + cmp r0, #0 + beq _02217526 + mov r0, #1 + b _02217528 +_02217526: + mov r0, #0 +_02217528: + neg r0, r0 + add sp, #4 + pop {r3} + bx r3 + + thumb_func_start MOD13_02217530 +MOD13_02217530: ; 0x02217530 + push {r4, r5, lr} + sub sp, #4 + add r5, r1, #0 + add r4, r2, #0 + bl MOD13_022173E8 + ldr r1, _0221758C ; =0x0223F7C8 + str r0, [r1, #0x10] + add r0, r5, #0 + bl MOD13_022173E8 + ldr r1, _0221758C ; =0x0223F7C8 + str r0, [r1, #0x14] + add r0, r4, #0 + bl MOD13_022173E8 + ldr r1, _0221758C ; =0x0223F7C8 + str r0, [r1, #0x18] + add r0, r1, #0 + bl FUN_0209A2C0 + cmp r0, #0 + bge _0221756A + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_0221756A: + ldr r5, _02217590 ; =0x021C8F04 + ldr r0, [r5] + cmp r0, #0 + bne _02217580 + mov r4, #0x64 +_02217574: + add r0, r4, #0 + bl OS_Sleep + ldr r0, [r5] + cmp r0, #0 + beq _02217574 +_02217580: + mov r0, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + nop +_0221758C: .word 0x0223F7C8 +_02217590: .word 0x021C8F04 + + thumb_func_start MOD13_02217594 +MOD13_02217594: ; 0x02217594 + push {lr} + sub sp, #4 + add r0, r1, #0 + ldr r1, _022175A8 ; =0x0224190C + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + nop +_022175A8: .word 0x0224190C + + thumb_func_start MOD13_022175AC +MOD13_022175AC: ; 0x022175AC + push {lr} + sub sp, #4 + cmp r1, #0 + ble _022175C2 + add r0, r1, #0 + ldr r1, _022175CC ; =0x02241900 + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 +_022175C2: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 + nop +_022175CC: .word 0x02241900 + + thumb_func_start MOD13_022175D0 +MOD13_022175D0: ; 0x022175D0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r0, r6, #0 + mov r1, #2 + bl _s32_div_f + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, r7 + add r2, r7, #0 + bl MOD13_022174CC + add r0, r4, r7 + add r1, r5, #0 + add r2, r7, #0 + bl MOD13_022174CC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_022174CC + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221760C +MOD13_0221760C: ; 0x0221760C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, r2, #0 + mov r1, #2 + bl _s32_div_f + mov r6, #0 + cmp r0, #0 + ble _02217630 +_02217620: + add r3, r0, r6 + ldrb r2, [r4, r3] + ldrsb r1, [r5, r6] + eor r2, r1 + strb r2, [r4, r3] + add r6, r6, #1 + cmp r6, r0 + blt _02217620 +_02217630: + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217638 +MOD13_02217638: ; 0x02217638 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + str r3, [sp] + ldr r4, [sp, #0x18] + add r0, r2, #0 + mov r1, #2 + bl _s32_div_f + add r7, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl _s32_div_f + add r2, r1, #0 + mov r1, #0 + cmp r7, #0 + ble _0221767A + add r6, r1, #0 +_02217660: + strb r1, [r5, r1] + ldrsb r0, [r5, r1] + ldr r3, [sp] + ldrsb r3, [r3, r2] + add r2, r2, #1 + eor r0, r3 + strb r0, [r5, r1] + cmp r2, r4 + blt _02217674 + add r2, r6, #0 +_02217674: + add r1, r1, #1 + cmp r1, r7 + blt _02217660 +_0221767A: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217684 +MOD13_02217684: ; 0x02217684 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + str r2, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + mov r1, #2 + bl _s32_div_f + bl MOD13_022198B4 + add r6, r0, #0 + cmp r6, #0 + bne _022176AE + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022176AE: + add r0, r5, #0 + bl MOD13_022198B4 + str r0, [sp, #0xc] + cmp r0, #0 + bne _022176CC + add r0, r6, #0 + bl MOD13_022198A0 + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022176CC: + mov r4, #0 +_022176CE: + ldr r0, [sp, #8] + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + ldr r3, [sp, #4] + bl MOD13_02217638 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD13_0221760C + add r0, r7, #0 + add r1, r5, #0 + ldr r2, [sp, #0xc] + bl MOD13_022175D0 + add r4, r4, #1 + cmp r4, #2 + blt _022176CE + add r0, r6, #0 + bl MOD13_022198A0 + ldr r0, [sp, #0xc] + bl MOD13_022198A0 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217710 +MOD13_02217710: ; 0x02217710 + push {r4, r5, r6, r7} + mov r6, #0 + add r4, r6, #0 + ldr r2, _02217744 ; =0xEDB88320 + mov r3, #1 +_0221771A: + add r7, r6, #0 + add r5, r4, #0 +_0221771E: + add r0, r7, #0 + and r0, r3 + cmp r0, #0 + beq _0221772C + lsr r7, r7, #1 + eor r7, r2 + b _0221772E +_0221772C: + lsr r7, r7, #1 +_0221772E: + add r5, r5, #1 + cmp r5, #8 + blt _0221771E + stmia r1!, {r7} + add r6, r6, #1 + ldr r0, _02217748 ; =0x00000100 + cmp r6, r0 + blt _0221771A + pop {r4, r5, r6, r7} + bx lr + nop +_02217744: .word 0xEDB88320 +_02217748: .word 0x00000100 + + thumb_func_start MOD13_0221774C +MOD13_0221774C: ; 0x0221774C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + add r4, r2, #0 + ldr r6, [sp, #0x18] + cmp r3, #0 + bne _02217764 + add r0, r3, #0 + add r1, r6, #0 + bl MOD13_02217710 +_02217764: + mov r1, #0 + cmp r4, #0 + ble _02217782 + mov r2, #0xff +_0221776C: + lsr r0, r5, #8 + ldrb r3, [r7, r1] + eor r5, r3 + and r5, r2 + lsl r3, r5, #2 + ldr r3, [r6, r3] + add r5, r0, #0 + eor r5, r3 + add r1, r1, #1 + cmp r1, r4 + blt _0221776C +_02217782: + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221778C +MOD13_0221778C: ; 0x0221778C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r2, r1, #0 + ldr r0, _022177B4 ; =0x02240E60 + str r0, [sp] + mov r3, #0 + mvn r0, r3 + add r1, r4, #0 + bl MOD13_0221774C + mov r1, #0 + mvn r1, r1 + eor r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add sp, #8 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_022177B4: .word 0x02240E60 + + thumb_func_start MOD13_022177B8 +MOD13_022177B8: ; 0x022177B8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + ldr r4, [r5, #8] + ldr r0, [r5, #0xc] + str r0, [sp] + ldr r0, [r5] + add r0, r0, #1 + ldr r1, [sp] + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r6, r0, #0x18 + ldrb r7, [r4, r6] + ldr r0, [r5, #4] + add r0, r7, r0 + ldr r1, [sp] + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r1, r0, #0x18 + ldrb r0, [r4, r1] + str r6, [r5] + str r1, [r5, #4] + strb r7, [r4, r1] + strb r0, [r4, r6] + add r0, r7, r0 + ldr r1, [r5, #0xc] + bl _u32_div_f + ldrb r0, [r4, r1] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217800 +MOD13_02217800: ; 0x02217800 + push {r4, r5, r6, r7, lr} + sub sp, #4 + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + mov r4, #0 + cmp r7, #0 + bls _02217828 +_02217812: + ldr r0, [sp] + bl MOD13_022177B8 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldrb r0, [r6, r4] + eor r1, r0 + strb r1, [r5, r4] + add r4, r4, #1 + cmp r4, r7 + blo _02217812 +_02217828: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_02217830 +MOD13_02217830: ; 0x02217830 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r5, [r0, #8] + mov r0, #0 + ldr r1, [sp] + str r0, [r1, #4] + ldr r2, [r1, #4] + str r2, [r1] + lsl r2, r3, #0 + str r2, [r1, #0xc] + lsl r1, r3, #0 + cmp r1, #0 + bls _0221785C +_02217852: + strb r0, [r5, r0] + add r0, r0, #1 + ldr r1, [sp, #0xc] + cmp r0, r1 + blo _02217852 +_0221785C: + mov r1, #0 + add r6, r1, #0 + add r4, r1, #0 + ldr r0, [sp, #0xc] + cmp r0, #0 + bls _02217894 + str r1, [sp, #0x10] +_0221786A: + ldrb r7, [r5, r4] + ldr r0, [sp, #4] + ldrb r0, [r0, r6] + add r0, r1, r0 + add r0, r7, r0 + ldr r1, [sp] + ldr r1, [r1, #0xc] + bl _u32_div_f + ldrb r0, [r5, r1] + strb r7, [r5, r1] + strb r0, [r5, r4] + add r6, r6, #1 + ldr r0, [sp, #8] + cmp r6, r0 + blo _0221788C + ldr r6, [sp, #0x10] +_0221788C: + add r4, r4, #1 + ldr r0, [sp, #0xc] + cmp r4, r0 + blo _0221786A +_02217894: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221789C +MOD13_0221789C: ; 0x0221789C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + add r0, r4, #0 + bl MOD13_022198B4 + str r0, [sp, #8] + cmp r0, #0 + bne _022178C6 + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022178C6: + ldr r0, _02217928 ; =0x02240B7C + ldr r1, [sp, #0x28] + mov r2, #2 + bl MOD13_022174CC + ldr r0, _0221792C ; =0x02240B7E + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + bl MOD13_022174CC + add r0, sp, #0 + ldr r1, _02217928 ; =0x02240B7C + ldr r2, [sp, #0x30] + add r2, r2, #2 + add r3, r4, #0 + bl MOD13_02217830 + add r0, sp, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD13_02217800 + add r0, r5, #0 + add r1, r4, #0 + bl MOD13_0221778C + cmp r0, r6 + beq _02217918 + mov r0, #0x12 + bl MOD13_02218BF4 + ldr r0, [sp, #8] + bl MOD13_022198A0 + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217918: + ldr r0, [sp, #8] + bl MOD13_022198A0 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02217928: .word 0x02240B7C +_0221792C: .word 0x02240B7E + + thumb_func_start MOD13_02217930 +MOD13_02217930: ; 0x02217930 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + add r4, r3, #0 + add r1, r5, #0 + bl MOD13_0221778C + strb r0, [r4] + add r0, r5, #0 + bl MOD13_022198B4 + str r0, [sp, #0xc] + cmp r0, #0 + bne _0221795C + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221795C: + bl MOD13_022172F0 + add r1, sp, #0 + strh r0, [r1] + ldr r0, [sp, #0x28] + add r1, sp, #0 + mov r2, #2 + bl MOD13_022174CC + ldr r0, _022179AC ; =0x02240B7C + ldr r1, [sp, #0x28] + mov r2, #2 + bl MOD13_022174CC + ldr r0, _022179B0 ; =0x02240B7E + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + bl MOD13_022174CC + add r0, sp, #4 + ldr r1, _022179AC ; =0x02240B7C + ldr r2, [sp, #0x30] + add r2, r2, #2 + add r3, r5, #0 + bl MOD13_02217830 + add r0, sp, #4 + add r1, r7, #0 + add r2, r6, #0 + add r3, r5, #0 + bl MOD13_02217800 + ldr r0, [sp, #0xc] + bl MOD13_022198A0 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_022179AC: .word 0x02240B7C +_022179B0: .word 0x02240B7E + + thumb_func_start MOD13_022179B4 +MOD13_022179B4: ; 0x022179B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + add r0, sp, #8 + mov r1, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #8 + strb r1, [r0, #1] + ldr r0, _02217A14 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #8 + strh r0, [r1, #2] + ldr r0, _02217A18 ; =0x02240B60 + ldr r0, [r0, #0x10] + bl MOD13_022173E8 + str r0, [sp, #0xc] + cmp r4, #0xff + beq _022179F2 + ldr r1, _02217A18 ; =0x02240B60 + mov r0, #0x18 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _022179F8 +_022179F2: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0xc] +_022179F8: + add r0, sp, #8 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD13_02217440 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02217A14: .word 0x00005790 +_02217A18: .word 0x02240B60 + + thumb_func_start MOD13_02217A1C +MOD13_02217A1C: ; 0x02217A1C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + mov r0, #1 + bl MOD13_022173D0 + strh r0, [r5] + mov r0, #0 + strh r0, [r5, #2] + strh r0, [r5, #4] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #6] + mov r0, #0 + strh r0, [r5, #8] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #0xa] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #0xc] + add r1, sp, #8 + mov r0, #0x10 + ldrsb r0, [r1, r0] + strb r0, [r5, #0xe] + mov r0, #0x14 + ldrsb r0, [r1, r0] + strb r0, [r5, #0xf] + add r5, #0x10 + add r0, r5, #0 + ldr r1, [sp, #0x20] + mov r2, #8 + bl MOD13_022174CC + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217A7C +MOD13_02217A7C: ; 0x02217A7C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r4, r3, #0 + cmp r0, #1 + bne _02217AC0 + mov r1, #1 + ldr r0, [sp, #0x18] + strh r1, [r0] + add r0, r5, #2 + str r0, [sp] + ldr r0, _02217AD4 ; =0x02240B4C + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + add r0, r2, #0 + add r1, r5, #4 + mov r2, #0 + ldrsh r2, [r4, r2] + ldr r3, [sp, #0x1c] + bl MOD13_02217930 + ldrh r0, [r4] + bl MOD13_022173D0 + strh r0, [r5] + mov r0, #0 + ldrsh r0, [r4, r0] + add r0, r0, #4 + strh r0, [r4] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_02217AC0: + add r0, r5, #0 + add r1, r2, #0 + mov r2, #0 + ldrsh r2, [r4, r2] + bl MOD13_022174CC + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 +_02217AD4: .word 0x02240B4C + + thumb_func_start MOD13_02217AD8 +MOD13_02217AD8: ; 0x02217AD8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + mov r6, #0 + ldr r1, _02217B60 ; =0x02240B60 + mov r0, #0x19 + ldrsb r0, [r1, r0] + strb r0, [r5] + mov r0, #1 + strb r0, [r5, #1] + ldr r0, [r1, #4] + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, r5, #6 + ldr r1, [r1] + add r2, r4, #0 + bl MOD13_022174CC + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #2] + add r0, r4, #6 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, r0, #1 + mov r1, #2 + bl _s32_div_f + lsl r0, r0, #0x11 + asr r7, r0, #0x10 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #4] + add r0, r6, r7 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + add r4, r5, r7 + mov r0, #0x60 + strb r0, [r5, r7] + mov r0, #0 + strb r0, [r4, #1] + bl MOD13_022173D0 + strh r0, [r4, #4] + mov r0, #0xe + bl MOD13_022173E8 + str r0, [sp] + add r0, r4, #6 + add r1, sp, #0 + mov r2, #4 + bl MOD13_022174CC + mov r0, #4 + bl MOD13_022173D0 + strh r0, [r4, #2] + add r6, #0xa + lsl r0, r6, #0x10 + asr r0, r0, #0x10 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02217B60: .word 0x02240B60 + + thumb_func_start MOD13_02217B64 +MOD13_02217B64: ; 0x02217B64 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r1, #0 + add r6, r2, #0 + ldr r0, _02217BC4 ; =0x02240B48 + ldr r4, [r0] + add r0, r4, #0 + mov r1, #0 + ldr r2, _02217BC8 ; =0x000005DC + bl MOD13_022174C0 + add r0, sp, #0xc + add r5, #0x10 + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174CC + ldr r0, _02217BCC ; =0x0223F820 + bl MOD13_0221736C + add r3, r0, #0 + add r0, sp, #0xc + mov r1, #8 + ldr r2, _02217BCC ; =0x0223F820 + bl MOD13_02217684 + mov r2, #0 + str r2, [sp] + mov r0, #0x11 + str r0, [sp, #4] + add r0, sp, #0xc + str r0, [sp, #8] + add r0, r4, #0 + ldr r1, _02217BD0 ; =0x00003000 + add r3, r2, #0 + bl MOD13_02217A1C + add r0, r4, #0 + mov r1, #0x18 + mov r2, #0 + add r3, r6, #0 + bl MOD13_022179B4 + mov r0, #0 + add sp, #0x18 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_02217BC4: .word 0x02240B48 +_02217BC8: .word 0x000005DC +_02217BCC: .word 0x0223F820 +_02217BD0: .word 0x00003000 + + thumb_func_start MOD13_02217BD4 +MOD13_02217BD4: ; 0x02217BD4 + push {r4, r5, r6, lr} + sub sp, #0x28 + add r5, r1, #0 + add r6, r2, #0 + mov r1, #0 + add r0, sp, #0xc + strb r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + ldr r0, _02217CB0 ; =0x02240B48 + ldr r4, [r0] + add r0, sp, #0x1c + mov r2, #8 + bl MOD13_022174C0 + add r0, r4, #0 + mov r1, #0 + ldr r2, _02217CB4 ; =0x000005DC + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0xc + strb r1, [r0, #0x10] + mov r1, #0 + strb r1, [r0, #0x11] + mov r0, #4 + bl MOD13_022173D0 + add r1, sp, #0xc + strh r0, [r1, #0x12] + ldr r0, _02217CB8 ; =0x02240B60 + ldr r0, [r0, #8] + str r0, [sp, #0x20] + bl MOD13_022173E8 + str r0, [sp, #0x20] + mov r1, #8 + add r0, sp, #0xc + strh r1, [r0, #2] + add r0, sp, #0x10 + str r0, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + ldr r0, _02217CBC ; =0x02240B34 + ldr r0, [r0] + add r1, r4, #0 + add r1, #0x18 + add r2, sp, #0x1c + add r3, sp, #0xc + add r3, #2 + bl MOD13_02217A7C + add r0, sp, #0x10 + add r0, #2 + add r5, #8 + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174CC + add r0, sp, #0x10 + add r0, #2 + mov r1, #8 + ldr r2, _02217CC0 ; =0x0223F820 + mov r3, #6 + bl MOD13_02217684 + cmp r0, #0 + beq _02217C6E + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #0x28 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217C6E: + add r3, sp, #0xc + mov r0, #0 + ldrsb r0, [r3, r0] + str r0, [sp] + mov r0, #0x11 + str r0, [sp, #4] + add r0, sp, #0x10 + add r0, #2 + str r0, [sp, #8] + add r0, r4, #0 + ldr r1, _02217CC4 ; =0x00002000 + mov r2, #2 + ldrsh r2, [r3, r2] + mov r5, #4 + ldrsh r3, [r3, r5] + bl MOD13_02217A1C + add r2, sp, #0xc + mov r1, #2 + ldrsh r0, [r2, r1] + add r0, #0x18 + strh r0, [r2, #2] + add r0, r4, #0 + ldrsh r1, [r2, r1] + mov r2, #0 + add r3, r6, #0 + bl MOD13_022179B4 + mov r0, #0 + add sp, #0x28 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_02217CB0: .word 0x02240B48 +_02217CB4: .word 0x000005DC +_02217CB8: .word 0x02240B60 +_02217CBC: .word 0x02240B34 +_02217CC0: .word 0x0223F820 +_02217CC4: .word 0x00002000 + + thumb_func_start MOD13_02217CC8 +MOD13_02217CC8: ; 0x02217CC8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r1, #0 + str r2, [sp, #0xc] + mov r1, #0 + add r0, sp, #0x10 + strb r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + ldr r0, _02217E08 ; =0x02240B48 + ldr r5, [r0] + add r0, r5, #0 + ldr r2, _02217E0C ; =0x000005DC + bl MOD13_022174C0 + ldr r0, _02217E10 ; =0x00000210 + bl MOD13_022198B4 + add r4, r0, #0 + cmp r4, #0 + bne _02217D04 + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217D04: + mov r1, #0 + ldr r2, _02217E10 ; =0x00000210 + bl MOD13_022174C0 + add r6, r5, #0 + add r6, #0x18 + ldr r0, _02217E14 ; =0x02240B4C + add r1, r7, #0 + mov r2, #8 + bl MOD13_022174CC + add r0, sp, #0x14 + add r0, #2 + ldr r1, _02217E14 ; =0x02240B4C + mov r2, #8 + bl MOD13_022174CC + add r0, r4, #4 + bl MOD13_02217AD8 + add r1, sp, #0x10 + strh r0, [r1, #2] + mov r0, #2 + ldrsh r0, [r1, r0] + cmp r0, #0 + bge _02217D54 + mov r0, #3 + bl MOD13_02218BF4 + cmp r4, #0 + beq _02217D48 + add r0, r4, #0 + bl MOD13_022198A0 +_02217D48: + mov r0, #0 + mvn r0, r0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217D54: + mov r0, #0 + strb r0, [r4] + ldrh r0, [r1, #2] + bl MOD13_022173D0 + strh r0, [r4, #2] + add r1, sp, #0x10 + mov r0, #2 + ldrsh r0, [r1, r0] + add r0, r0, #4 + strh r0, [r1, #2] + add r0, sp, #0x14 + str r0, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + mov r0, #0 + add r1, r6, #0 + add r2, r4, #0 + add r3, sp, #0x10 + add r3, #2 + bl MOD13_02217A7C + add r1, sp, #0x10 + mov r0, #4 + ldrsh r2, [r1, r0] + mov r0, #0x10 + orr r2, r0 + strh r2, [r1, #4] + add r0, sp, #0x14 + add r0, #2 + mov r1, #8 + ldr r2, _02217E18 ; =0x0223F820 + mov r3, #6 + bl MOD13_02217684 + cmp r0, #0 + beq _02217DBA + mov r0, #2 + bl MOD13_02218BF4 + cmp r4, #0 + beq _02217DAE + add r0, r4, #0 + bl MOD13_022198A0 +_02217DAE: + mov r0, #0 + mvn r0, r0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217DBA: + add r3, sp, #0x10 + mov r0, #0 + ldrsb r0, [r3, r0] + str r0, [sp] + mov r0, #0x11 + str r0, [sp, #4] + add r0, sp, #0x14 + add r0, #2 + str r0, [sp, #8] + add r0, r5, #0 + ldr r1, _02217E1C ; =0x00001000 + mov r2, #2 + ldrsh r2, [r3, r2] + mov r6, #4 + ldrsh r3, [r3, r6] + bl MOD13_02217A1C + add r2, sp, #0x10 + mov r1, #2 + ldrsh r0, [r2, r1] + add r0, #0x18 + strh r0, [r2, #2] + add r0, r5, #0 + ldrsh r1, [r2, r1] + mov r2, #0xff + ldr r3, [sp, #0xc] + bl MOD13_022179B4 + cmp r4, #0 + beq _02217DFC + add r0, r4, #0 + bl MOD13_022198A0 +_02217DFC: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02217E08: .word 0x02240B48 +_02217E0C: .word 0x000005DC +_02217E10: .word 0x00000210 +_02217E14: .word 0x02240B4C +_02217E18: .word 0x0223F820 +_02217E1C: .word 0x00001000 + + thumb_func_start MOD13_02217E20 +MOD13_02217E20: ; 0x02217E20 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + cmp r0, #0 + beq _02217E36 + cmp r0, #1 + beq _02217E4C + cmp r0, #2 + beq _02217E62 + b _02217E78 +_02217E36: + mov r0, #2 + bl MOD13_02218870 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_02217CC8 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217E4C: + mov r0, #3 + bl MOD13_02218870 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_02217BD4 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217E62: + mov r0, #5 + bl MOD13_02218870 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_02217B64 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217E78: + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217E84 +MOD13_02217E84: ; 0x02217E84 + mov r2, #0 + mov r1, #0x10 + and r0, r1 + cmp r0, #0 + beq _02217E90 + mov r2, #1 +_02217E90: + add r0, r2, #0 + bx lr + + thumb_func_start MOD13_02217E94 +MOD13_02217E94: ; 0x02217E94 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp, #4] + mov r5, #0 + cmp r6, #0 + bgt _02217EB2 + mov r0, #1 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217EB2: + ldr r1, _02217FA0 ; =0x0223F7B8 + add r7, r1, r0 +_02217EB6: + add r2, r4, #0 + ldrb r1, [r4] + ldrb r0, [r7] + cmp r1, r0 + beq _02217EDC + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r0, r0, #4 + add r4, r4, r0 + sub r6, r6, r0 + cmp r6, #0 + bgt _02217EB6 + mov r0, #3 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217EDC: + add r4, r4, #4 + ldrh r0, [r2, #2] + bl MOD13_02217380 + add r7, r0, #0 + ldr r0, _02217FA4 ; =0x00000350 + ldr r1, [sp] + mul r1, r0 + ldr r0, [sp, #4] + add r6, r0, r1 + ldr r0, [sp, #0x28] + ldr r1, [sp] + add r1, r1, #3 + lsl r1, r1, #7 + add r0, r0, r1 + str r0, [sp, #8] + mov r0, #2 + mvn r0, r0 + str r0, [sp, #0xc] +_02217F02: + ldrb r0, [r4] + cmp r0, #0xa + bhi _02217F76 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02217F16: ; jump table + .short _02217F76 - _02217F16 + 1 ; case 0 + .short _02217F76 - _02217F16 + 1 ; case 1 + .short _02217F76 - _02217F16 + 1 ; case 2 + .short _02217F2C - _02217F16 + 1 ; case 3 + .short _02217F3C - _02217F16 + 1 ; case 4 + .short _02217F4C - _02217F16 + 1 ; case 5 + .short _02217F5C - _02217F16 + 1 ; case 6 + .short _02217F76 - _02217F16 + 1 ; case 7 + .short _02217F76 - _02217F16 + 1 ; case 8 + .short _02217F76 - _02217F16 + 1 ; case 9 + .short _02217F6C - _02217F16 + 1 ; case 10 +_02217F2C: + add r0, r4, #0 + add r1, r6, #0 + add r1, #8 + bl MOD13_022180CC + mov r1, #1 + orr r5, r1 + b _02217F78 +_02217F3C: + add r0, r4, #0 + ldr r1, _02217FA8 ; =0x00000138 + add r1, r6, r1 + bl MOD13_022180CC + mov r1, #2 + orr r5, r1 + b _02217F78 +_02217F4C: + add r0, r4, #0 + ldr r1, _02217FAC ; =0x00000268 + add r1, r6, r1 + bl MOD13_02217FFC + mov r1, #4 + orr r5, r1 + b _02217F78 +_02217F5C: + add r0, r4, #0 + ldr r1, _02217FB0 ; =0x000002D8 + add r1, r6, r1 + bl MOD13_02217FFC + mov r1, #8 + orr r5, r1 + b _02217F78 +_02217F6C: + add r0, r4, #0 + ldr r1, [sp, #8] + bl MOD13_02217FB8 + b _02217F78 +_02217F76: + ldr r0, [sp, #0xc] +_02217F78: + cmp r0, #0 + bne _02217F96 + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r0, r0, #4 + add r4, r4, r0 + sub r7, r7, r0 + cmp r7, #0 + bgt _02217F02 + ldr r0, _02217FB4 ; =0x02240B60 + ldr r1, [r0, #0xc] + orr r1, r5 + str r1, [r0, #0xc] + mov r0, #0 +_02217F96: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02217FA0: .word 0x0223F7B8 +_02217FA4: .word 0x00000350 +_02217FA8: .word 0x00000138 +_02217FAC: .word 0x00000268 +_02217FB0: .word 0x000002D8 +_02217FB4: .word 0x02240B60 + + thumb_func_start MOD13_02217FB8 +MOD13_02217FB8: ; 0x02217FB8 + push {r4, r5, lr} + sub sp, #4 + add r5, r1, #0 + add r4, r0, #6 + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r2, r0, #0 + cmp r2, #0 + bgt _02217FD8 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02217FD8: + ldrb r0, [r4] + cmp r0, #0x70 + beq _02217FEA + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02217FEA: + add r0, r5, #0 + add r1, r4, #6 + bl MOD13_022174CC + mov r0, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + + thumb_func_start MOD13_02217FFC +MOD13_02217FFC: ; 0x02217FFC + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r6, r1, #0 + add r5, r7, #6 +_02218006: + ldrh r0, [r5, #2] + bl MOD13_02217380 + add r4, r0, #0 + ldrb r0, [r5] + cmp r0, #0x35 + bgt _0221801E + cmp r0, #0x35 + bge _0221803E + cmp r0, #0x30 + beq _0221802E + b _0221804E +_0221801E: + cmp r0, #0x40 + bgt _02218028 + cmp r0, #0x40 + beq _0221802E + b _0221804E +_02218028: + cmp r0, #0x45 + beq _0221803E + b _0221804E +_0221802E: + cmp r4, #0x40 + bls _0221804E + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221803E: + cmp r4, #0x21 + bls _0221804E + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221804E: + cmp r0, #0x35 + bgt _0221805C + cmp r0, #0x35 + bge _0221807C + cmp r0, #0x30 + beq _0221806C + b _022180A4 +_0221805C: + cmp r0, #0x40 + bgt _02218066 + cmp r0, #0x40 + beq _0221806C + b _022180A4 +_02218066: + cmp r0, #0x45 + beq _0221807C + b _022180A4 +_0221806C: + add r0, r6, #0 + add r0, #0x30 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _022180B0 +_0221807C: + cmp r4, #0 + beq _02218096 + sub r0, r4, #1 + add r0, r5, r0 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _02218096 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218096: + add r0, r6, #0 + add r0, #8 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + b _022180B0 +_022180A4: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022180B0: + ldrh r0, [r5, #4] + cmp r0, #0 + beq _022180C0 + bl MOD13_02217380 + add r1, r7, #6 + add r5, r1, r0 + b _02218006 +_022180C0: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_022180CC +MOD13_022180CC: ; 0x022180CC + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r6, r1, #0 + add r5, r7, #6 +_022180D6: + ldrh r0, [r5, #2] + bl MOD13_02217380 + add r4, r0, #0 + ldrb r0, [r5] + cmp r0, #0x21 + bgt _02218114 + cmp r0, #0x21 + bge _02218138 + cmp r0, #0x15 + bgt _0221810E + add r1, r0, #0 + sub r1, #0x10 + cmp r1, #0 + blt _02218158 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_02218102: ; jump table + .short _02218128 - _02218102 + 1 ; case 0 + .short _02218128 - _02218102 + 1 ; case 1 + .short _02218128 - _02218102 + 1 ; case 2 + .short _02218128 - _02218102 + 1 ; case 3 + .short _02218158 - _02218102 + 1 ; case 4 + .short _02218148 - _02218102 + 1 ; case 5 +_0221810E: + cmp r0, #0x20 + beq _02218138 + b _02218158 +_02218114: + cmp r0, #0x23 + bgt _02218122 + cmp r0, #0x23 + bge _02218138 + cmp r0, #0x22 + beq _02218138 + b _02218158 +_02218122: + cmp r0, #0x25 + beq _02218148 + b _02218158 +_02218128: + cmp r4, #5 + bls _02218158 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218138: + cmp r4, #0xd + bls _02218158 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218148: + cmp r4, #0x21 + bls _02218158 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218158: + cmp r0, #0x21 + bgt _0221818C + cmp r0, #0x21 + bge _022181B0 + cmp r0, #0x15 + bgt _02218186 + add r1, r0, #0 + sub r1, #0x10 + cmp r1, #0 + blt _02218208 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_0221817A: ; jump table + .short _022181A0 - _0221817A + 1 ; case 0 + .short _022181B0 - _0221817A + 1 ; case 1 + .short _022181C0 - _0221817A + 1 ; case 2 + .short _022181D0 - _0221817A + 1 ; case 3 + .short _02218208 - _0221817A + 1 ; case 4 + .short _022181E0 - _0221817A + 1 ; case 5 +_02218186: + cmp r0, #0x20 + beq _022181A0 + b _02218208 +_0221818C: + cmp r0, #0x23 + bgt _0221819A + cmp r0, #0x23 + bge _022181D0 + cmp r0, #0x22 + beq _022181C0 + b _02218208 +_0221819A: + cmp r0, #0x25 + beq _022181E0 + b _02218208 +_022181A0: + add r0, r6, #0 + add r0, #0x30 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181B0: + add r0, r6, #0 + add r0, #0x70 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181C0: + add r0, r6, #0 + add r0, #0xb0 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181D0: + add r0, r6, #0 + add r0, #0xf0 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181E0: + cmp r4, #0 + beq _022181FA + sub r0, r4, #1 + add r0, r5, r0 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _022181FA + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022181FA: + add r0, r6, #0 + add r0, #8 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + b _02218214 +_02218208: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218214: + ldrh r0, [r5, #4] + cmp r0, #0 + beq _02218224 + bl MOD13_02217380 + add r1, r7, #6 + add r5, r1, r0 + b _022180D6 +_02218224: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02218230 +MOD13_02218230: ; 0x02218230 + push {r4, r5} + mov r5, #0 + sub r2, r1, #1 + add r3, r0, r2 + add r4, r5, #0 + cmp r1, #0 + ble _0221824C +_0221823E: + lsl r2, r5, #8 + ldrb r0, [r3] + sub r3, r3, #1 + add r5, r2, r0 + add r4, r4, #1 + cmp r4, r1 + blt _0221823E +_0221824C: + add r0, r5, #0 + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD13_02218254 +MOD13_02218254: ; 0x02218254 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r0, r5, #0 + mov r1, #0 + ldr r2, _02218320 ; =0x00000104 + bl MOD13_022174C0 + add r4, r6, #0 + ldr r7, _02218324 ; =0x02240B60 +_0221826A: + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r2, r0, #0 + cmp r2, #0 + bgt _02218282 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218282: + ldrb r0, [r4] + cmp r0, #6 + bhi _022182FC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02218296: ; jump table + .short _022182A4 - _02218296 + 1 ; case 0 + .short _022182AE - _02218296 + 1 ; case 1 + .short _022182BA - _02218296 + 1 ; case 2 + .short _022182C6 - _02218296 + 1 ; case 3 + .short _022182C6 - _02218296 + 1 ; case 4 + .short _022182DC - _02218296 + 1 ; case 5 + .short _022182EC - _02218296 + 1 ; case 6 +_022182A4: + add r0, r5, #0 + add r1, r4, #6 + bl MOD13_022174CC + b _02218308 +_022182AE: + add r0, r5, #0 + add r0, #0x80 + add r1, r4, #6 + bl MOD13_022174CC + b _02218308 +_022182BA: + ldr r0, _02218328 ; =0x00000100 + add r0, r5, r0 + add r1, r4, #6 + bl MOD13_022174CC + b _02218308 +_022182C6: + ldrb r0, [r4, #6] + bl MOD13_02217380 + cmp r0, #0 + bgt _02218308 + mov r0, #1 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022182DC: + add r0, r4, #6 + add r1, r2, #0 + bl MOD13_02218230 + bl MOD13_02217398 + str r0, [r7, #0x10] + b _02218308 +_022182EC: + add r0, r4, #6 + add r1, r2, #0 + bl MOD13_02218230 + bl MOD13_02217398 + str r0, [r7, #0x14] + b _02218308 +_022182FC: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218308: + ldrh r0, [r4, #4] + cmp r0, #0 + beq _02218316 + bl MOD13_02217380 + add r4, r6, r0 + b _0221826A +_02218316: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02218320: .word 0x00000104 +_02218324: .word 0x02240B60 +_02218328: .word 0x00000100 + + thumb_func_start MOD13_0221832C +MOD13_0221832C: ; 0x0221832C + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r4, #0 + ldr r0, _0221837C ; =0x0223F820 + bl MOD13_0221736C + add r3, r0, #0 + add r0, r5, #0 + mov r1, #8 + ldr r2, _0221837C ; =0x0223F820 + bl MOD13_02217684 + add r0, r6, #0 + add r1, r5, #0 + mov r2, #6 + bl MOD13_022174DC + cmp r0, #0 + beq _0221835A + lsl r0, r4, #0 + mvn r4, r0 + b _02218372 +_0221835A: + ldrh r0, [r6, #6] + bl MOD13_02217380 + add r6, r0, #0 + ldrh r0, [r5, #6] + bl MOD13_02217380 + add r1, r6, #1 + cmp r1, r0 + beq _02218372 + mov r0, #1 + mvn r4, r0 +_02218372: + add r0, r4, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 + nop +_0221837C: .word 0x0223F820 + + thumb_func_start MOD13_02218380 +MOD13_02218380: ; 0x02218380 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r4, #0 + add r6, r4, #0 + ldr r3, _022183C0 ; =0x02240B4C +_0221838A: + ldrb r2, [r3] + cmp r2, #0 + beq _02218394 + mov r5, #1 + b _0221839C +_02218394: + add r3, r3, #1 + add r6, r6, #1 + cmp r6, #6 + blt _0221838A +_0221839C: + cmp r5, #0 + beq _022183B0 + ldr r0, _022183C0 ; =0x02240B4C + mov r2, #6 + bl MOD13_022174DC + cmp r0, #0 + beq _022183B8 + mov r4, #1 + b _022183B8 +_022183B0: + ldr r1, _022183C4 ; =0x00001000 + cmp r0, r1 + beq _022183B8 + mov r4, #2 +_022183B8: + add r0, r4, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_022183C0: .word 0x02240B4C +_022183C4: .word 0x00001000 + + thumb_func_start MOD13_022183C8 +MOD13_022183C8: ; 0x022183C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x18 + add r0, sp, #0xc + add r1, r5, #0 + add r1, #0x10 + mov r2, #8 + bl MOD13_022174CC + ldr r0, _022184CC ; =0x0223F820 + bl MOD13_0221736C + add r3, r0, #0 + add r0, sp, #0xc + mov r1, #8 + ldr r2, _022184CC ; =0x0223F820 + bl MOD13_02217684 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0221840A + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0x63 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221840A: + ldrh r0, [r5, #6] + bl MOD13_02217380 + add r1, sp, #0xc + bl MOD13_02218380 + cmp r0, #0 + bne _022184C4 + ldrh r0, [r5, #6] + bl MOD13_02217380 + ldr r1, _022184D0 ; =0x00001000 + cmp r0, r1 + bne _02218430 + ldr r0, _022184D4 ; =0x02240B4C + add r1, sp, #0xc + mov r2, #8 + bl MOD13_022174CC +_02218430: + ldrh r0, [r5, #0xc] + bl MOD13_02217380 + mov r1, #0xf + and r0, r1 + cmp r0, #0 + bne _02218448 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218448: + ldrh r0, [r4] + bl MOD13_02217380 + add r6, r0, #0 + bl MOD13_022198B4 + add r7, r0, #0 + cmp r7, #0 + bne _0221846A + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0x64 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221846A: + add r0, r4, #2 + str r0, [sp] + ldr r0, _022184D4 ; =0x02240B4C + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + add r0, r4, #4 + add r1, r7, #0 + add r2, r6, #0 + ldrb r3, [r5, #0xe] + bl MOD13_0221789C + cmp r0, #0 + bge _022184A8 + add r0, r7, #0 + bl MOD13_022198A0 + bl MOD13_02218BE8 + cmp r0, #2 + bne _0221849E + mov r0, #0x64 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221849E: + mov r0, #0xc8 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022184A8: + add r0, r4, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD13_022174CC + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #0xa] + add r0, r7, #0 + bl MOD13_022198A0 + mov r0, #0 +_022184C4: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_022184CC: .word 0x0223F820 +_022184D0: .word 0x00001000 +_022184D4: .word 0x02240B4C + + thumb_func_start MOD13_022184D8 +MOD13_022184D8: ; 0x022184D8 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r2, #0 + cmp r6, #2 + beq _022184EE + ldr r1, [r5] + add r1, r1, #1 + str r1, [r5] + pop {r4, r5, r6} + pop {r3} + bx r3 +_022184EE: + add r4, r1, #0 + add r4, #0x24 + add r3, #0x10 + add r0, r3, #0 + add r1, #0xc + add r1, #0x10 + bl MOD13_0221832C + cmp r0, #0 + bge _02218510 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02218510: + ldrb r0, [r4] + cmp r0, #7 + beq _02218524 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02218524: + ldrh r0, [r4, #2] + bl MOD13_02217380 + cmp r0, #0 + bne _0221853C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221853C: + ldr r0, [r4, #4] + bl MOD13_02217398 + cmp r0, #0 + bne _0221854E + mov r0, #0x64 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221854E: + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0221856C + mov r0, #0x14 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221856C: + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #2 + mvn r1, r1 + cmp r0, r1 + bne _0221858A + mov r0, #0x15 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221858A: + mov r0, #0x18 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221859C +MOD13_0221859C: ; 0x0221859C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r2, #0 + cmp r6, #1 + beq _022185B6 + ldr r1, [r5] + add r1, r1, #1 + str r1, [r5] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022185B6: + add r7, r1, #0 + add r7, #0xc + add r4, r1, #0 + add r4, #0x24 + add r3, #8 + add r0, r3, #0 + add r1, r7, #0 + add r1, #0x10 + bl MOD13_0221832C + cmp r0, #0 + bge _022185DE + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022185DE: + ldrh r0, [r4, #2] + bl MOD13_02217380 + cmp r0, #0 + bne _022185F8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022185F8: + ldrb r0, [r4] + cmp r0, #7 + bne _0221863C + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _02218614 + mov r0, #0x14 + bl MOD13_02218BF4 + b _02218630 +_02218614: + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #2 + mvn r1, r1 + cmp r0, r1 + bne _0221862A + mov r0, #0x15 + bl MOD13_02218BF4 + b _02218630 +_0221862A: + mov r0, #0x18 + bl MOD13_02218BF4 +_02218630: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221863C: + ldr r0, _02218694 ; =0x02241260 + mov r1, #0 + ldr r2, _02218698 ; =0x000006A0 + bl MOD13_022174C0 + ldrh r0, [r7, #0xa] + bl MOD13_02217380 + add r2, r0, #0 + ldr r0, _0221869C ; =0x02240BE0 + str r0, [sp] + mov r0, #0 + add r1, r4, #0 + ldr r3, _02218694 ; =0x02241260 + bl MOD13_02217E94 + cmp r0, #0 + bge _02218670 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218670: + ldr r0, _022186A0 ; =0x02240B60 + ldr r1, [r0, #0xc] + ldr r0, [r0, #8] + and r1, r0 + cmp r1, #0 + bne _02218686 + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218686: + mov r0, #0 + str r0, [r5] + mov r0, #2 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02218694: .word 0x02241260 +_02218698: .word 0x000006A0 +_0221869C: .word 0x02240BE0 +_022186A0: .word 0x02240B60 + + thumb_func_start MOD13_022186A4 +MOD13_022186A4: ; 0x022186A4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r2, #0 + cmp r6, #0 + beq _022186BE + ldr r1, [r5] + add r1, r1, #1 + str r1, [r5] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022186BE: + add r7, r1, #0 + add r7, #0xc + add r4, r1, #0 + add r4, #0x24 + add r0, r3, #0 + add r1, r7, #0 + add r1, #0x10 + bl MOD13_0221832C + cmp r0, #0 + bge _022186E4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022186E4: + ldrh r0, [r4, #2] + bl MOD13_02217380 + cmp r0, #0 + bne _022186FE + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022186FE: + ldrb r0, [r4] + cmp r0, #7 + bne _02218744 + add r5, r4, #4 + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0221871C + mov r0, #0x14 + bl MOD13_02218BF4 + b _02218738 +_0221871C: + ldr r0, [r5] + bl MOD13_02217398 + mov r1, #2 + mvn r1, r1 + cmp r0, r1 + bne _02218732 + mov r0, #0x15 + bl MOD13_02218BF4 + b _02218738 +_02218732: + mov r0, #0x18 + bl MOD13_02218BF4 +_02218738: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218744: + cmp r0, #1 + beq _02218758 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218758: + add r0, r4, #4 + ldr r1, _022187AC ; =0x02240BE0 + bl MOD13_02218254 + cmp r0, #0 + bge _0221878E + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0221877E + mov r0, #0x16 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221877E: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221878E: + ldrh r0, [r7, #0xc] + bl MOD13_02217380 + bl MOD13_02217E84 + ldr r1, _022187B0 ; =0x02240B34 + str r0, [r1] + mov r0, #0 + str r0, [r5] + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_022187AC: .word 0x02240BE0 +_022187B0: .word 0x02240B34 + + thumb_func_start MOD13_022187B4 +MOD13_022187B4: ; 0x022187B4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + str r3, [sp] + add r7, r6, #0 + add r7, #0xc + ldrh r0, [r6, #0xc] + bl MOD13_02217380 + cmp r0, #1 + bhs _022187DE + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022187DE: + ldrb r0, [r7, #0xf] + cmp r0, #0x11 + beq _022187F4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022187F4: + add r0, r6, #0 + add r0, #0xc + bl MOD13_022183C8 + cmp r0, #0 + ble _02218810 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218810: + ldrh r0, [r7, #6] + bl MOD13_02217380 + ldr r1, _02218864 ; =0x00001010 + cmp r0, r1 + beq _0221882A + ldr r1, _02218868 ; =0x00002010 + cmp r0, r1 + beq _0221883A + ldr r1, _0221886C ; =0x00003010 + cmp r0, r1 + beq _0221884A + b _02218858 +_0221882A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + ldr r3, [sp] + bl MOD13_022186A4 + add r5, r0, #0 + b _02218858 +_0221883A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + ldr r3, [sp] + bl MOD13_0221859C + add r5, r0, #0 + b _02218858 +_0221884A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + ldr r3, [sp] + bl MOD13_022184D8 + add r5, r0, #0 +_02218858: + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02218864: .word 0x00001010 +_02218868: .word 0x00002010 +_0221886C: .word 0x00003010 + + thumb_func_start MOD13_02218870 +MOD13_02218870: ; 0x02218870 + push {lr} + sub sp, #4 + mov r3, #0 + mvn r1, r3 + cmp r0, r1 + bne _02218888 + ldr r1, _022188A4 ; =0x0223F7C4 + str r0, [r1] + add r0, r3, #0 + add sp, #4 + pop {r3} + bx r3 +_02218888: + ldr r1, _022188A4 ; =0x0223F7C4 + ldr r2, [r1] + cmp r2, r0 + beq _0221889C + str r0, [r1] + bl MOD13_022198C8 + add sp, #4 + pop {r3} + bx r3 +_0221889C: + add r0, r3, #0 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_022188A4: .word 0x0223F7C4 + + thumb_func_start MOD13_022188A8 +MOD13_022188A8: ; 0x022188A8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + mov r4, #0 + cmp r6, #0 + ble _022188D8 +_022188B8: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #6 + bl MOD13_022174CC + bl MOD13_022172F0 + strh r0, [r5, #6] + ldrh r0, [r5, #6] + bl MOD13_022173D0 + strh r0, [r5, #6] + add r5, #8 + add r4, r4, #1 + cmp r4, r6 + blt _022188B8 +_022188D8: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_022188E0 +MOD13_022188E0: ; 0x022188E0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02218924 ; =0x0223F828 + bl MOD13_0221736C + str r0, [r4] + add r0, r4, #4 + ldr r1, _02218924 ; =0x0223F828 + ldr r2, [r4] + bl MOD13_022174CC + mov r0, #1 + str r0, [r4, #0x24] + ldr r0, _02218928 ; =0x0223F820 + bl MOD13_0221736C + str r0, [r4, #0x28] + ldr r2, [r4, #0x28] + cmp r2, #0xd + bls _02218912 + mov r0, #0 + mvn r0, r0 + pop {r4} + pop {r3} + bx r3 +_02218912: + add r4, #0x2c + add r0, r4, #0 + ldr r1, _02218928 ; =0x0223F820 + bl MOD13_022174CC + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_02218924: .word 0x0223F828 +_02218928: .word 0x0223F820 + + thumb_func_start MOD13_0221892C +MOD13_0221892C: ; 0x0221892C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r4, #0 + str r4, [sp, #4] + ldr r0, [r5] + str r0, [sp] + cmp r0, #0 + bne _02218948 + mov r0, #5 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218948: + cmp r0, #0x40 + bls _02218950 + mov r0, #0x40 + str r0, [sp] +_02218950: + mov r7, #0 + ldr r0, [sp] + cmp r0, #0 + ble _02218994 + add r6, r5, #0 + add r6, #8 +_0221895C: + ldr r1, [r5, #0x54] + mov r0, #1 + and r1, r0 + cmp r1, #0 + beq _02218988 + ldr r0, _022189B0 ; =0x0223F828 + bl MOD13_0221736C + ldr r1, [r5, #4] + cmp r1, r0 + bne _02218988 + ldr r0, _022189B0 ; =0x0223F828 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r6, #0 + ldr r1, _022189B0 ; =0x0223F828 + bl MOD13_022174DC + cmp r0, #0 + bne _02218988 + add r4, r4, #1 +_02218988: + add r5, #0x54 + add r6, #0x54 + add r7, r7, #1 + ldr r0, [sp] + cmp r7, r0 + blt _0221895C +_02218994: + cmp r4, #1 + ble _0221899C + mov r0, #4 + str r0, [sp, #4] +_0221899C: + cmp r4, #0 + bne _022189A4 + mov r0, #5 + str r0, [sp, #4] +_022189A4: + ldr r0, [sp, #4] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_022189B0: .word 0x0223F828 + + thumb_func_start MOD13_022189B4 +MOD13_022189B4: ; 0x022189B4 + mov r3, #0 + cmp r1, #0 + ble _022189D2 +_022189BA: + ldrb r2, [r0] + add r0, r0, #1 + cmp r2, #0x20 + blo _022189C6 + cmp r2, #0x7f + bls _022189CC +_022189C6: + mov r0, #0 + mvn r0, r0 + bx lr +_022189CC: + add r3, r3, #1 + cmp r3, r1 + blt _022189BA +_022189D2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD13_022189D8 +MOD13_022189D8: ; 0x022189D8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + ldr r0, _02218BC4 ; =0x00000117 + add r5, r7, r0 + ldr r4, _02218BC8 ; =0x02241268 + ldr r6, _02218BCC ; =0x02241398 + ldr r0, _02218BD0 ; =0x022414C8 + str r0, [sp] + ldr r0, _02218BD4 ; =0x02241538 + str r0, [sp, #4] + cmp r5, #0 + bne _022189FE + mov r0, #0 + mvn r0, r0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022189FE: + ldr r0, _02218BD8 ; =0x02240B60 + ldr r1, [r0, #8] + ldr r0, [r0, #0xc] + and r1, r0 + strh r1, [r7] + add r0, r5, #0 + mov r1, #0 + ldr r2, _02218BDC ; =0x00000154 + bl MOD13_022174C0 + ldrh r1, [r7] + mov r0, #1 + and r1, r0 + cmp r1, #0 + beq _02218A7E + add r0, r5, #0 + add r1, r4, #0 + add r1, #0x30 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r5, #6 + add r1, r4, #0 + add r1, #0x70 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0xc + add r1, r4, #0 + add r1, #0xb0 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x12 + add r1, r4, #0 + add r1, #0xf0 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r4, #0 + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + add r0, r4, #0 + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + beq _02218A68 + b _02218BAE +_02218A68: + add r0, r4, #0 + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x18 + add r4, #8 + add r1, r4, #0 + bl MOD13_022174CC +_02218A7E: + ldrh r1, [r7] + mov r0, #2 + and r1, r0 + cmp r1, #0 + beq _02218AEC + add r0, r5, #0 + add r0, #0x39 + add r1, r6, #0 + add r1, #0x30 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x47 + add r1, r6, #0 + add r1, #0x70 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x55 + add r1, r6, #0 + add r1, #0xb0 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x63 + add r1, r6, #0 + add r1, #0xf0 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r6, #0 + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + add r0, r6, #0 + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + add r0, r6, #0 + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x71 + add r6, #8 + add r1, r6, #0 + bl MOD13_022174CC +_02218AEC: + ldrh r1, [r7] + mov r0, #4 + and r1, r0 + cmp r1, #0 + beq _02218B46 + ldr r0, [sp] + add r0, #0x30 + ldr r1, [sp] + ldr r1, [r1, #4] + sub r1, r1, #1 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + add r0, r5, #0 + add r0, #0x92 + ldr r1, [sp] + add r1, #0x30 + ldr r2, [sp] + ldr r2, [r2, #4] + bl MOD13_022174CC + ldr r0, [sp] + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + ldr r0, [sp] + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + ldr r0, [sp] + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0xd2 + ldr r1, [sp] + add r1, #8 + str r1, [sp] + bl MOD13_022174CC +_02218B46: + ldrh r1, [r7] + mov r0, #8 + and r1, r0 + cmp r1, #0 + beq _02218BA0 + ldr r0, [sp, #4] + add r0, #0x30 + ldr r1, [sp, #4] + ldr r1, [r1, #4] + sub r1, r1, #1 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + add r0, r5, #0 + add r0, #0xf3 + ldr r1, [sp, #4] + add r1, #0x30 + ldr r2, [sp, #4] + ldr r2, [r2, #4] + bl MOD13_022174CC + ldr r0, [sp, #4] + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + ldr r0, [sp, #4] + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + ldr r0, [sp, #4] + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + ldr r0, _02218BE0 ; =0x00000133 + add r0, r5, r0 + ldr r1, [sp, #4] + add r1, #8 + str r1, [sp, #4] + bl MOD13_022174CC +_02218BA0: + mov r0, #0 + ldr r1, _02218BE4 ; =0x00000116 + strb r0, [r7, r1] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218BAE: + add r0, r5, #0 + mov r1, #0 + ldr r2, _02218BDC ; =0x00000154 + bl MOD13_022174C0 + mov r0, #0 + mvn r0, r0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02218BC4: .word 0x00000117 +_02218BC8: .word 0x02241268 +_02218BCC: .word 0x02241398 +_02218BD0: .word 0x022414C8 +_02218BD4: .word 0x02241538 +_02218BD8: .word 0x02240B60 +_02218BDC: .word 0x00000154 +_02218BE0: .word 0x00000133 +_02218BE4: .word 0x00000116 + + thumb_func_start MOD13_02218BE8 +MOD13_02218BE8: ; 0x02218BE8 + ldr r0, _02218BF0 ; =0x02240B44 + ldr r0, [r0] + bx lr + nop +_02218BF0: .word 0x02240B44 + + thumb_func_start MOD13_02218BF4 +MOD13_02218BF4: ; 0x02218BF4 + ldr r1, _02218BFC ; =0x02240B44 + str r0, [r1] + bx lr + nop +_02218BFC: .word 0x02240B44 + + thumb_func_start MOD13_02218C00 +MOD13_02218C00: ; 0x02218C00 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02218C44 ; =0x02240B4C + mov r1, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #1 + ldr r0, _02218C48 ; =0x02240B44 + str r1, [r0] + ldr r0, _02218C4C ; =0x02240B60 + mov r1, #0 + mov r2, #0x1c + bl MOD13_022174C0 + add r0, r4, #6 + ldr r1, _02218C4C ; =0x02240B60 + str r0, [r1] + ldrh r0, [r4, #4] + str r0, [r1, #4] + ldrh r2, [r4] + mov r0, #0xf + and r2, r0 + str r2, [r1, #8] + ldrb r0, [r4, #2] + strb r0, [r1, #0x19] + mov r2, #0 + str r2, [r1, #0xc] + ldr r0, _02218C50 ; =0xC0A80B01 + str r0, [r1, #0x10] + strb r2, [r1, #0x18] + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_02218C44: .word 0x02240B4C +_02218C48: .word 0x02240B44 +_02218C4C: .word 0x02240B60 +_02218C50: .word 0xC0A80B01 + + thumb_func_start MOD13_02218C54 +MOD13_02218C54: ; 0x02218C54 + push {lr} + sub sp, #4 + ldr r0, _02218C84 ; =0x02240B40 + ldr r0, [r0] + cmp r0, #0 + beq _02218C6A + bl MOD13_022198A0 + mov r1, #0 + ldr r0, _02218C84 ; =0x02240B40 + str r1, [r0] +_02218C6A: + ldr r0, _02218C88 ; =0x02240B38 + ldr r0, [r0] + cmp r0, #0 + beq _02218C7C + bl MOD13_022198A0 + mov r1, #0 + ldr r0, _02218C88 ; =0x02240B38 + str r1, [r0] +_02218C7C: + add sp, #4 + pop {r3} + bx r3 + nop +_02218C84: .word 0x02240B40 +_02218C88: .word 0x02240B38 + + thumb_func_start MOD13_02218C8C +MOD13_02218C8C: ; 0x02218C8C + add r3, r0, #0 + and r3, r1 + mvn r2, r1 + bic r0, r1 + add r1, r0, #1 + add r0, r3, #0 + orr r0, r1 + add r1, r3, #0 + orr r1, r2 + cmp r0, r1 + blo _02218CA8 + mov r1, #1 + add r0, r3, #0 + orr r0, r1 +_02218CA8: + bx lr + .align 2, 0 + + thumb_func_start MOD13_02218CAC +MOD13_02218CAC: ; 0x02218CAC + push {r4, r5, r6, r7, lr} + sub sp, #0xcc + str r0, [sp, #8] + ldr r1, _02219044 ; =0x0223F7C0 + ldrh r2, [r1] + add r0, sp, #0x30 + strh r2, [r0] + ldrh r1, [r1, #2] + strh r1, [r0, #2] + add r1, sp, #0x34 + mov r0, #0 + str r0, [sp, #0x14] + strh r0, [r1] + strh r0, [r1, #2] + mov r0, #1 + str r0, [sp, #0x38] + ldr r0, [sp, #0x14] + str r0, [sp, #0x3c] + str r0, [sp, #0x1c] + add r0, sp, #0x64 + ldr r1, [sp, #0x14] + mov r2, #0x18 + bl MOD13_022174C0 + ldr r1, _02219048 ; =0x00000106 + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1] + mov r0, #0 + ldrsh r2, [r1, r0] + mvn r0, r0 + cmp r2, r0 + bne _02218CF4 + mov r0, #0xa + strh r0, [r1] +_02218CF4: + ldr r1, _0221904C ; =0x0000010A + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1, #4] + mov r0, #4 + ldrsh r2, [r1, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02218D0E + mov r0, #0xa + strh r0, [r1, #4] +_02218D0E: + ldr r1, _02219050 ; =0x00000108 + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1, #2] + mov r0, #2 + ldrsh r2, [r1, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02218D28 + mov r0, #0x64 + strh r0, [r1, #2] +_02218D28: + ldr r1, _02219054 ; =0x0000010C + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1, #6] + mov r0, #6 + ldrsh r2, [r1, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02218D42 + mov r0, #0x64 + strh r0, [r1, #6] +_02218D42: + ldr r1, _02219058 ; =0x0000010E + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + str r0, [sp, #0x10] + mov r0, #0 + mvn r1, r0 + ldr r0, [sp, #0x10] + cmp r0, r1 + bne _02218D58 + ldr r0, _0221905C ; =0x000007D0 + str r0, [sp, #0x10] +_02218D58: + ldr r0, [sp, #8] + bl MOD13_02218C00 + ldr r0, _02219060 ; =0x02240B60 + ldr r1, [r0, #8] + mov r0, #1 + and r1, r0 + cmp r1, #1 + beq _02218D88 + mov r0, #0x13 + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218D88: + mov r4, #0 + add r0, r4, #0 + bl MOD13_02218870 + mov r1, #2 + add r0, sp, #0x30 + ldrsh r7, [r0, r1] + lsl r6, r4, #0 + ldr r5, _02219068 ; =0x02240B38 +_02218D9A: + ldr r0, [r5] + cmp r0, #0 + beq _02218DA6 + bl MOD13_022198A0 + str r6, [r5] +_02218DA6: + add r0, r5, #0 + bl MOD13_02219AD0 + mvn r1, r6 + cmp r0, r1 + bne _02218DCA + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218DCA: + ldr r0, [r5] + bl MOD13_0221892C + cmp r0, #4 + bne _02218DEC + mov r2, #2 + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218DEC: + cmp r0, #0 + beq _02218E1E + add r0, sp, #0x30 + ldrsh r0, [r0, r6] + cmp r4, r0 + blt _02218E10 + mov r2, #1 + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218E10: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _02218D9A +_02218E1E: + mov r0, #1 + bl MOD13_02218870 + add r0, sp, #0x7c + mov r1, #0 + mov r2, #0x3c + bl MOD13_022174C0 + add r0, sp, #0x7c + bl MOD13_022188E0 + cmp r0, #0 + beq _02218E50 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218E50: + mov r0, #0x58 + bl MOD13_022198B4 + ldr r1, _0221906C ; =0x02240B40 + str r0, [r1] + cmp r0, #0 + bne _02218E76 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218E76: + mov r1, #0 + mov r2, #0x58 + bl MOD13_022174C0 + mov r4, #0 + add r0, sp, #0x30 + ldrsh r0, [r0, r4] + cmp r0, #0 + ble _02218EDA + add r6, r4, #0 + add r5, r4, #0 +_02218E8C: + add r0, sp, #0x7c + ldr r1, _0221906C ; =0x02240B40 + ldr r1, [r1] + bl MOD13_022198EC + mvn r1, r5 + cmp r0, r1 + bne _02218EB4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218EB4: + cmp r0, #0 + bne _02218EC6 + cmp r0, #0 + bne _02218EDA + ldr r0, _0221906C ; =0x02240B40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + beq _02218EDA +_02218EC6: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, sp, #0x30 + ldrsh r0, [r0, r6] + cmp r4, r0 + blt _02218E8C +_02218EDA: + add r1, sp, #0x30 + mov r0, #0 + ldrsh r0, [r1, r0] + cmp r4, r0 + bne _02218EFC + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218EFC: + ldr r0, _02219070 ; =0xC0A80B65 + mov r1, #0xff + mvn r1, r1 + add r2, r0, #0 + bl MOD13_02217530 + cmp r0, #0 + beq _02218F2A + mov r0, #0xc + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218F2A: + bl MOD13_02218C54 + mov r0, #3 + add r1, sp, #0x64 + ldr r3, _02219074 ; =0x00000110 + ldr r2, [sp, #8] + add r2, r2, r3 + bl MOD13_022188A8 + mov r0, #2 + add r1, r0, #0 + mov r2, #0 + bl MOD13_02217434 + ldr r1, _02219078 ; =0x0223F7BC + str r0, [r1] + cmp r0, #0 + bge _02218F66 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218F66: + mov r1, #4 + str r1, [sp] + ldr r1, _0221907C ; =0x0000FFFF + mov r2, #1 + add r3, sp, #0x38 + bl MOD13_0221743C + cmp r0, #0 + bge _02218F96 + mov r0, #0xb + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218F96: + add r0, sp, #0x5c + mov r1, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0x5c + strb r1, [r0, #1] + ldr r0, _02219070 ; =0xC0A80B65 + bl MOD13_022173E8 + str r0, [sp, #0x60] + ldr r0, _02219080 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #0x30 + strh r0, [r1, #0x2e] + ldr r0, _02219078 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x5c + mov r2, #8 + bl MOD13_02217428 + cmp r0, #0 + bge _02218FE0 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218FE0: + mov r5, #0 + ldr r6, _02219068 ; =0x02240B38 + mvn r0, r5 + str r0, [sp, #0x28] +_02218FE8: + ldr r0, _02219084 ; =0x02240B48 + ldr r0, [r0] + str r0, [sp, #0x20] + add r0, sp, #0xb8 + add r1, r5, #0 + mov r2, #0x14 + bl MOD13_022174C0 + ldr r0, _02219070 ; =0xC0A80B65 + str r0, [sp, #0xc8] + ldr r0, _02219088 ; =0xC0A80B01 + str r0, [sp, #0xb8] + ldr r0, [sp, #0x10] + ldr r1, _0221908C ; =0x000003E8 + bl _s32_div_f + str r0, [sp, #0x24] + ldr r0, [sp, #0x10] + ldr r1, _0221908C ; =0x000003E8 + bl _s32_div_f + str r1, [sp, #0xc] + ldr r0, _0221908C ; =0x000003E8 + mul r1, r0 + str r1, [sp, #0xc] +_0221901A: + ldr r0, [sp, #0x14] + cmp r0, #1 + beq _02219022 + b _0221930A +_02219022: + ldr r1, _02219060 ; =0x02240B60 + mov r0, #0x18 + ldrsb r0, [r1, r0] + cmp r0, #1 + bne _0221902E + b _0221930A +_0221902E: + ldr r0, _02219078 ; =0x0223F7BC + ldr r0, [r0] + mvn r1, r5 + cmp r0, r1 + beq _0221903C + bl MOD13_02217420 +_0221903C: + ldr r1, [sp, #0x28] + ldr r0, _02219078 ; =0x0223F7BC + b _02219090 + nop +_02219044: .word 0x0223F7C0 +_02219048: .word 0x00000106 +_0221904C: .word 0x0000010A +_02219050: .word 0x00000108 +_02219054: .word 0x0000010C +_02219058: .word 0x0000010E +_0221905C: .word 0x000007D0 +_02219060: .word 0x02240B60 +_02219064: .word 0x00000116 +_02219068: .word 0x02240B38 +_0221906C: .word 0x02240B40 +_02219070: .word 0xC0A80B65 +_02219074: .word 0x00000110 +_02219078: .word 0x0223F7BC +_0221907C: .word 0x0000FFFF +_02219080: .word 0x00005790 +_02219084: .word 0x02240B48 +_02219088: .word 0xC0A80B01 +_0221908C: .word 0x000003E8 +_02219090: + str r1, [r0] + bl MOD13_02217504 + cmp r0, #0 + beq _022190B2 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022190B2: + mov r0, #0x58 + bl MOD13_022198B4 + str r0, [r6] + cmp r0, #0 + bne _022190D6 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022190D6: + ldr r0, [r6] + cmp r0, #0 + beq _022190E2 + bl MOD13_022198A0 + str r5, [r6] +_022190E2: + add r0, r6, #0 + bl MOD13_02219AD0 + str r0, [sp, #0x2c] + mvn r1, r5 + cmp r0, r1 + bne _02219108 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219108: + ldr r0, [r6] + bl MOD13_0221892C + cmp r0, #4 + bne _0221912A + mov r2, #2 + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221912A: + cmp r0, #0 + beq _0221915C + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _0221914E + mov r2, #1 + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221914E: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _022190D6 +_0221915C: + mvn r1, r5 + ldr r0, [sp, #0x2c] + cmp r0, r1 + bne _0221917C + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221917C: + mov r0, #0x58 + bl MOD13_022198B4 + ldr r1, _02219418 ; =0x02240B40 + str r0, [r1] + cmp r0, #0 + bne _022191A2 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022191A2: + add r1, r5, #0 + mov r2, #0x58 + bl MOD13_022174C0 + add r4, r5, #0 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r0, #0 + ble _02219202 +_022191B4: + add r0, sp, #0x7c + ldr r1, _02219418 ; =0x02240B40 + ldr r1, [r1] + bl MOD13_022198EC + mvn r1, r5 + cmp r0, r1 + bne _022191DC + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022191DC: + cmp r0, #0 + bne _022191EE + cmp r0, #0 + bne _02219202 + ldr r0, _02219418 ; =0x02240B40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + beq _02219202 +_022191EE: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _022191B4 +_02219202: + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + bne _02219222 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219222: + ldr r0, _0221941C ; =0x02240B60 + ldr r0, [r0, #0x10] + ldr r1, _0221941C ; =0x02240B60 + ldr r1, [r1, #0x14] + bl MOD13_02218C8C + str r0, [sp, #0x1c] + ldr r1, _0221941C ; =0x02240B60 + ldr r1, [r1, #0x14] + lsl r2, r0, #0 + bl MOD13_02217530 + cmp r0, #0 + beq _0221925C + mov r0, #0xc + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221925C: + mov r1, #1 + ldr r0, _0221941C ; =0x02240B60 + strb r1, [r0, #0x18] + bl MOD13_02218C54 + mov r0, #2 + lsl r1, r0, #0 + add r2, r5, #0 + bl MOD13_02217434 + ldr r1, _02219420 ; =0x0223F7BC + str r0, [r1] + cmp r0, #0 + bge _02219290 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219290: + mov r1, #4 + str r1, [sp] + ldr r1, _02219424 ; =0x0000FFFF + mov r2, #1 + add r3, sp, #0x38 + bl MOD13_0221743C + cmp r0, #0 + bge _022192C0 + mov r0, #0xb + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022192C0: + add r0, sp, #0x5c + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0x5c + strb r1, [r0, #1] + ldr r0, [sp, #0x1c] + bl MOD13_022173E8 + str r0, [sp, #0x60] + ldr r0, _02219428 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #0x30 + strh r0, [r1, #0x2e] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x5c + mov r2, #8 + bl MOD13_02217428 + cmp r0, #0 + bge _0221930A + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221930A: + ldr r0, [sp, #0x14] + add r1, sp, #0xb8 + add r2, sp, #0x64 + ldr r3, _02219420 ; =0x0223F7BC + ldr r3, [r3] + bl MOD13_02217E20 + mvn r1, r5 + cmp r0, r1 + bne _02219340 + ldr r1, _0221942C ; =0x00001000 + ldr r0, [sp, #0x14] + add r0, r0, r1 + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219340: + ldr r0, [sp, #0x20] + add r1, r5, #0 + ldr r2, _02219430 ; =0x000005F8 + bl MOD13_022174C0 + add r0, sp, #0x4c + bl MOD13_022172E4 + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x4c + bl MOD13_022172DC + ldr r0, [sp, #0x24] + str r0, [sp, #0x54] + ldr r0, [sp, #0xc] + str r0, [sp, #0x58] + add r0, sp, #0x54 + str r0, [sp] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + add r0, r0, #1 + add r1, sp, #0x4c + add r2, r5, #0 + add r3, r5, #0 + bl MOD13_02217458 + cmp r0, #0 + bgt _022193BA + ldr r0, [sp, #0x3c] + add r2, r0, #1 + str r2, [sp, #0x3c] + add r1, sp, #0x30 + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r2, r0 + ble _022193B0 + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02219398 + mov r0, #0xf + bl MOD13_02218BF4 + b _022193AA +_02219398: + cmp r0, #1 + bne _022193A4 + mov r0, #0x10 + bl MOD13_02218BF4 + b _022193AA +_022193A4: + mov r0, #0x11 + bl MOD13_02218BF4 +_022193AA: + mov r0, #0 + mvn r4, r0 + b _022196C6 +_022193B0: + mov r0, #6 + ldrsh r0, [r1, r0] + bl MOD13_022198E4 + b _0221901A +_022193BA: + mov r0, #8 + str r0, [sp, #0x48] + add r0, sp, #0x40 + str r0, [sp] + add r0, sp, #0x48 + str r0, [sp, #4] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + ldr r1, [sp, #0x20] + add r1, #0xc + ldr r2, _02219434 ; =0x000005DC + add r3, r5, #0 + bl MOD13_022174A4 + add r2, r0, #0 + ldr r0, _02219420 ; =0x0223F7BC + ldr r1, [r0] + ldr r0, [sp, #0x20] + str r1, [r0] + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bl MOD13_02217380 + ldr r1, [sp, #0x20] + str r0, [r1, #4] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + str r0, [sp] + ldr r0, [sp, #0x14] + add r2, sp, #0x3c + add r3, sp, #0x64 + bl MOD13_022187B4 + str r0, [sp, #0x18] + cmp r0, #0x64 + bne _02219406 + mov r4, #0 + b _022196C6 +_02219406: + mvn r1, r5 + cmp r0, r1 + bne _02219438 + mov r0, #0 + mvn r4, r0 + b _022196C6 + nop +_02219414: .word 0x00000116 +_02219418: .word 0x02240B40 +_0221941C: .word 0x02240B60 +_02219420: .word 0x0223F7BC +_02219424: .word 0x0000FFFF +_02219428: .word 0x00005790 +_0221942C: .word 0x00001000 +_02219430: .word 0x000005F8 +_02219434: .word 0x000005DC +_02219438: + ldr r1, [sp, #0x14] + cmp r1, r0 + bne _02219440 + b _02219688 +_02219440: + cmp r0, #2 + beq _02219446 + b _02219682 +_02219446: + ldr r0, _02219780 ; =0x0223F7BC + ldr r0, [r0] + mvn r1, r5 + cmp r0, r1 + beq _02219454 + bl MOD13_02217420 +_02219454: + ldr r1, [sp, #0x28] + ldr r0, _02219780 ; =0x0223F7BC + str r1, [r0] + bl MOD13_02217504 + cmp r0, #0 + beq _0221947A + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221947A: + add r4, r5, #0 + mov r0, #4 + bl MOD13_02218870 +_02219482: + ldr r0, [r6] + cmp r0, #0 + beq _0221948E + bl MOD13_022198A0 + str r5, [r6] +_0221948E: + add r0, r6, #0 + bl MOD13_02219AD0 + mvn r1, r5 + cmp r0, r1 + bne _022194B2 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022194B2: + ldr r0, [r6] + bl MOD13_0221892C + cmp r0, #4 + bne _022194D4 + mov r2, #2 + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022194D4: + cmp r0, #0 + beq _02219506 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _022194F8 + mov r2, #1 + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022194F8: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _02219482 +_02219506: + mov r0, #0x58 + bl MOD13_022198B4 + ldr r1, _02219788 ; =0x02240B40 + str r0, [r1] + cmp r0, #0 + bne _0221952C + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221952C: + add r1, r5, #0 + mov r2, #0x58 + bl MOD13_022174C0 + add r4, r5, #0 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r0, #0 + ble _0221958C +_0221953E: + add r0, sp, #0x7c + ldr r1, _02219788 ; =0x02240B40 + ldr r1, [r1] + bl MOD13_022198EC + mvn r1, r5 + cmp r0, r1 + bne _02219566 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219566: + cmp r0, #0 + bne _02219578 + cmp r0, #0 + bne _0221958C + ldr r0, _02219788 ; =0x02240B40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + beq _0221958C +_02219578: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _0221953E +_0221958C: + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + bne _022195AC + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022195AC: + ldr r0, [sp, #0x1c] + ldr r1, _0221978C ; =0x02240B60 + ldr r1, [r1, #0x14] + lsl r2, r0, #0 + bl MOD13_02217530 + cmp r0, #0 + beq _022195DA + mov r0, #0xc + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022195DA: + bl MOD13_02218C54 + mov r0, #2 + lsl r1, r0, #0 + add r2, r5, #0 + bl MOD13_02217434 + ldr r1, _02219780 ; =0x0223F7BC + str r0, [r1] + cmp r0, #0 + bge _02219608 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219608: + mov r1, #4 + str r1, [sp] + ldr r1, _02219790 ; =0x0000FFFF + mov r2, #1 + add r3, sp, #0x38 + bl MOD13_0221743C + cmp r0, #0 + bge _02219638 + mov r0, #0xb + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219638: + add r0, sp, #0x5c + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0x5c + strb r1, [r0, #1] + ldr r0, [sp, #0x1c] + bl MOD13_022173E8 + str r0, [sp, #0x60] + ldr r0, _02219794 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #0x30 + strh r0, [r1, #0x2e] + ldr r0, _02219780 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x5c + mov r2, #8 + bl MOD13_02217428 + cmp r0, #0 + bge _02219682 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219682: + ldr r0, [sp, #0x18] + str r0, [sp, #0x14] + b _02218FE8 +_02219688: + str r0, [sp, #0x14] + ldr r2, [sp, #0x3c] + add r1, sp, #0x30 + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r2, r0 + ble _022196BC + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _022196A4 + mov r0, #0xf + bl MOD13_02218BF4 + b _022196B6 +_022196A4: + cmp r0, #1 + bne _022196B0 + mov r0, #0x10 + bl MOD13_02218BF4 + b _022196B6 +_022196B0: + mov r0, #0x11 + bl MOD13_02218BF4 +_022196B6: + mov r0, #0 + mvn r4, r0 + b _022196C6 +_022196BC: + mov r0, #6 + ldrsh r0, [r1, r0] + bl MOD13_022198E4 + b _02218FE8 +_022196C6: + ldr r0, _02219780 ; =0x0223F7BC + ldr r0, [r0] + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _022196D6 + bl MOD13_02217420 +_022196D6: + mov r0, #0 + mvn r1, r0 + ldr r0, _02219780 ; =0x0223F7BC + str r1, [r0] + bl MOD13_02217504 + cmp r0, #0 + beq _022196FE + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022196FE: + cmp r4, #0 + beq _02219754 + bl MOD13_02218BE8 + sub r0, #0xf + cmp r0, #6 + bhi _0221973C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221971A: ; jump table + .short _02219728 - _0221971A + 1 ; case 0 + .short _0221972C - _0221971A + 1 ; case 1 + .short _02219730 - _0221971A + 1 ; case 2 + .short _0221973C - _0221971A + 1 ; case 3 + .short _0221973C - _0221971A + 1 ; case 4 + .short _02219734 - _0221971A + 1 ; case 5 + .short _02219738 - _0221971A + 1 ; case 6 +_02219728: + mov r2, #3 + b _0221973E +_0221972C: + mov r2, #4 + b _0221973E +_02219730: + mov r2, #5 + b _0221973E +_02219734: + mov r2, #7 + b _0221973E +_02219738: + mov r2, #8 + b _0221973E +_0221973C: + mov r2, #0xf +_0221973E: + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219754: + ldr r0, [sp, #8] + bl MOD13_022189D8 + cmp r0, #0 + beq _02219776 + mov r2, #6 + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219776: + mov r0, #0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02219780: .word 0x0223F7BC +_02219784: .word 0x00000116 +_02219788: .word 0x02240B40 +_0221978C: .word 0x02240B60 +_02219790: .word 0x0000FFFF +_02219794: .word 0x00005790 + + thumb_func_start MOD13_02219798 +MOD13_02219798: ; 0x02219798 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02219870 ; =0x00000106 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _022197E6 + mov r0, #0 + mvn r2, r0 + cmp r1, r2 + blt _022197E6 + ldr r1, _02219874 ; =0x00000108 + ldrsh r1, [r4, r1] + cmp r1, r2 + blt _022197E6 + ldr r1, _02219878 ; =0x0000010A + ldrsh r1, [r4, r1] + cmp r1, #0 + beq _022197E6 + cmp r1, r2 + blt _022197E6 + ldr r1, _0221987C ; =0x0000010C + ldrsh r1, [r4, r1] + cmp r1, r2 + blt _022197E6 + ldr r1, _02219880 ; =0x0000010E + ldrsh r1, [r4, r1] + cmp r1, r2 + blt _022197E6 + ldrh r2, [r4, #4] + cmp r2, #0 + beq _022197E6 + ldr r1, _02219884 ; =0x00000100 + cmp r2, r1 + bhi _022197E6 + sub r1, r2, #1 + add r1, r4, r1 + ldrb r1, [r1, #6] + cmp r1, #0 + beq _022197EA +_022197E6: + mov r0, #0 + mvn r0, r0 +_022197EA: + ldr r1, _02219888 ; =0x02241900 + ldr r1, [r1] + cmp r1, #0 + beq _022197FA + ldr r1, _0221988C ; =0x0224190C + ldr r1, [r1] + cmp r1, #0 + bne _022197FE +_022197FA: + mov r0, #0 + mvn r0, r0 +_022197FE: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0221981A + mov r1, #0xf + ldr r0, _02219890 ; =0x00000116 + strb r1, [r4, r0] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + pop {r4} + pop {r3} + bx r3 +_0221981A: + ldr r0, _02219894 ; =0x000005F8 + bl MOD13_022198B4 + ldr r1, _02219898 ; =0x02240B48 + str r0, [r1] + cmp r0, #0 + bne _0221983C + mov r1, #0xf + ldr r0, _02219890 ; =0x00000116 + strb r1, [r4, r0] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + pop {r4} + pop {r3} + bx r3 +_0221983C: + mov r0, #0 + mvn r0, r0 + bl MOD13_02218870 + add r0, r4, #0 + bl MOD13_02218CAC + add r4, r0, #0 + ldr r0, _02219898 ; =0x02240B48 + ldr r0, [r0] + bl MOD13_022198A0 + bl MOD13_02218C54 + ldr r0, _0221989C ; =0x0223F7BC + ldr r0, [r0] + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02219868 + bl MOD13_02217420 +_02219868: + add r0, r4, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_02219870: .word 0x00000106 +_02219874: .word 0x00000108 +_02219878: .word 0x0000010A +_0221987C: .word 0x0000010C +_02219880: .word 0x0000010E +_02219884: .word 0x00000100 +_02219888: .word 0x02241900 +_0221988C: .word 0x0224190C +_02219890: .word 0x00000116 +_02219894: .word 0x000005F8 +_02219898: .word 0x02240B48 +_0221989C: .word 0x0223F7BC + + thumb_func_start MOD13_022198A0 +MOD13_022198A0: ; 0x022198A0 + push {lr} + sub sp, #4 + ldr r1, _022198B0 ; =0x0224190C + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_022198B0: .word 0x0224190C + + thumb_func_start MOD13_022198B4 +MOD13_022198B4: ; 0x022198B4 + push {lr} + sub sp, #4 + ldr r1, _022198C4 ; =0x02241900 + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_022198C4: .word 0x02241900 + + thumb_func_start MOD13_022198C8 +MOD13_022198C8: ; 0x022198C8 + push {lr} + sub sp, #4 + ldr r1, _022198E0 ; =0x02241904 + ldr r1, [r1] + cmp r1, #0 + beq _022198D6 + blx r1 +_022198D6: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 + nop +_022198E0: .word 0x02241904 + + thumb_func_start MOD13_022198E4 +MOD13_022198E4: ; 0x022198E4 + ldr r3, _022198E8 ; =0x020CAFC0 + bx r3 + .align 2, 0 +_022198E8: .word 0x020CAFC0 + + thumb_func_start MOD13_022198EC +MOD13_022198EC: ; 0x022198EC + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + str r0, [sp, #4] + str r1, [sp, #8] + mov r4, #1 + mov r0, #0 + str r0, [sp, #0x14] + mvn r0, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0221990A + ldr r6, _02219AA8 ; =0x00080000 + b _02219910 +_0221990A: + cmp r0, #1 + bne _02219910 + ldr r6, _02219AAC ; =0x000C0000 +_02219910: + ldr r0, _02219AB0 ; =0x02241940 + mov r1, #0 + mov r2, #0x60 + bl MI_CpuFill8 + ldr r0, [sp, #4] + ldr r0, [r0, #0x28] + cmp r0, #5 + bne _0221992A + mov r1, #1 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0] + b _0221994E +_0221992A: + cmp r0, #0xd + bne _02219936 + mov r1, #2 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0] + b _0221994E +_02219936: + cmp r0, #0x10 + bne _02219942 + mov r1, #3 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0] + b _0221994E +_02219942: + mov r0, #0 + mvn r0, r0 + add sp, #0x4c + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221994E: + mov r1, #0 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0, #1] + ldr r0, [sp, #4] + add r0, #0x2c + ldr r1, _02219AB4 ; =0x02241942 + ldr r2, [sp, #4] + ldr r2, [r2, #0x28] + bl MI_CpuCopy8 + bl FUN_020A84D8 + mov r0, #0 + ldr r1, [sp, #4] + add r1, r1, #4 + ldr r2, [sp, #4] + ldr r2, [r2] + ldr r3, _02219AB8 ; =0x0030BFFE + bl MOD13_0221A1E8 + cmp r0, #0 + bne _0221997C + b _02219A8A +_0221997C: + mov r0, #0 + str r0, [sp, #0x10] + add r0, sp, #0x1c + bl OS_CreateAlarm + mov r0, #0x12 + str r0, [sp] + add r0, sp, #0x1c + ldr r1, _02219ABC ; =0x003FEC42 + mov r2, #0 + ldr r3, _02219AC0 ; =MOD13_02219E48 + bl OS_SetAlarm + ldr r0, _02219AC4 ; =0x00030000 + orr r6, r0 + ldr r7, _02219AC8 ; =0x022419A0 + mov r5, #0 +_0221999E: + ldr r0, _02219ACC ; =0x02241920 + add r1, sp, #0x18 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp, #0x18] + cmp r0, #0x13 + bhi _02219A6A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_022199BC: ; jump table + .short _02219A6A - _022199BC + 1 ; case 0 + .short _02219A6A - _022199BC + 1 ; case 1 + .short _02219A6A - _022199BC + 1 ; case 2 + .short _02219A6A - _022199BC + 1 ; case 3 + .short _02219A6C - _022199BC + 1 ; case 4 + .short _022199EE - _022199BC + 1 ; case 5 + .short _02219A6A - _022199BC + 1 ; case 6 + .short _02219A6A - _022199BC + 1 ; case 7 + .short _02219A6C - _022199BC + 1 ; case 8 + .short _02219A6A - _022199BC + 1 ; case 9 + .short _02219A2A - _022199BC + 1 ; case 10 + .short _02219A6A - _022199BC + 1 ; case 11 + .short _02219A44 - _022199BC + 1 ; case 12 + .short _02219A4A - _022199BC + 1 ; case 13 + .short _02219A6A - _022199BC + 1 ; case 14 + .short _02219A6A - _022199BC + 1 ; case 15 + .short _02219A6A - _022199BC + 1 ; case 16 + .short _02219A6A - _022199BC + 1 ; case 17 + .short _022199E4 - _022199BC + 1 ; case 18 + .short _02219A6C - _022199BC + 1 ; case 19 +_022199E4: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02219A6C + add r4, r5, #0 + b _02219A6C +_022199EE: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02219A6C + add r0, sp, #0x1c + bl OS_CancelAlarm + add r0, r7, #0 + mov r1, #1 + bl MOD13_0221A2FC + cmp r0, #1 + beq _02219A0A + add r4, r5, #0 + b _02219A6C +_02219A0A: + ldr r0, [sp, #4] + add r1, r7, #0 + bl MOD13_02219E80 + add r0, r7, #0 + ldr r1, _02219AB0 ; =0x02241940 + add r2, r6, #0 + bl MOD13_0221A04C + cmp r0, #0 + bne _02219A24 + add r4, r5, #0 + b _02219A6C +_02219A24: + mov r0, #1 + str r0, [sp, #0x14] + b _02219A6C +_02219A2A: + ldr r0, [sp, #4] + add r1, r7, #0 + bl MOD13_02219E80 + add r0, r7, #0 + ldr r1, _02219AB0 ; =0x02241940 + add r2, r6, #0 + bl MOD13_0221A04C + cmp r0, #0 + bne _02219A6C + add r4, r5, #0 + b _02219A6C +_02219A44: + str r5, [sp, #0xc] + add r4, r5, #0 + b _02219A6C +_02219A4A: + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #3 + bge _02219A66 + add r0, r7, #0 + ldr r1, _02219AB0 ; =0x02241940 + add r2, r6, #0 + bl MOD13_0221A04C + cmp r0, #0 + bne _02219A6C + add r4, r5, #0 + b _02219A6C +_02219A66: + add r4, r5, #0 + b _02219A6C +_02219A6A: + add r4, r5, #0 +_02219A6C: + cmp r4, #0 + bne _0221999E + add r0, sp, #0x1c + bl OS_CancelAlarm + ldr r5, _02219ACC ; =0x02241920 + add r4, sp, #0x18 + mov r6, #0 +_02219A7C: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl OS_ReceiveMessage + cmp r0, #1 + beq _02219A7C +_02219A8A: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _02219A94 + mov r2, #1 + b _02219A96 +_02219A94: + mov r2, #0 +_02219A96: + ldr r0, [sp, #8] + ldr r1, _02219AC8 ; =0x022419A0 + bl MOD13_02219E70 + ldr r0, [sp, #0xc] + add sp, #0x4c + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02219AA8: .word 0x00080000 +_02219AAC: .word 0x000C0000 +_02219AB0: .word 0x02241940 +_02219AB4: .word 0x02241942 +_02219AB8: .word 0x0030BFFE +_02219ABC: .word 0x003FEC42 +_02219AC0: .word MOD13_02219E48 +_02219AC4: .word 0x00030000 +_02219AC8: .word 0x022419A0 +_02219ACC: .word 0x02241920 + + thumb_func_start MOD13_02219AD0 +MOD13_02219AD0: ; 0x02219AD0 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #4] + mov r6, #0 + mvn r0, r6 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r7, r6, #0 + add r5, r6, #0 + ldr r0, _02219C44 ; =0x02241900 + ldr r1, [r0] + cmp r1, #0 + beq _02219AF4 + ldr r0, _02219C48 ; =0x0224190C + ldr r0, [r0] + cmp r0, #0 + bne _02219B00 +_02219AF4: + mov r0, #0 + mvn r0, r0 + add sp, #0x44 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219B00: + ldr r0, _02219C4C ; =0x00003000 + blx r1 + add r4, r0, #0 + cmp r4, #0 + bne _02219B16 + lsl r0, r6, #0 + mvn r0, r0 + add sp, #0x44 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219B16: + str r4, [sp, #0x10] + lsl r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + ldr r3, _02219C50 ; =0x0030BFFE + bl MOD13_0221A1E8 + cmp r0, #0 + bne _02219B2A + b _02219C30 +_02219B2A: + add r0, sp, #0x18 + bl OS_CreateAlarm + mov r0, #0x13 + str r0, [sp] + add r0, sp, #0x18 + ldr r1, _02219C54 ; =0x003FEC42 + lsl r2, r6, #0 + ldr r3, _02219C58 ; =MOD13_02219E48 + bl OS_SetAlarm +_02219B40: + ldr r0, _02219C5C ; =0x02241920 + add r1, sp, #0x14 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp, #0x14] + cmp r0, #0x13 + bhi _02219C16 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02219B5E: ; jump table + .short _02219C16 - _02219B5E + 1 ; case 0 + .short _02219C16 - _02219B5E + 1 ; case 1 + .short _02219C16 - _02219B5E + 1 ; case 2 + .short _02219C16 - _02219B5E + 1 ; case 3 + .short _02219BCC - _02219B5E + 1 ; case 4 + .short _02219BA4 - _02219B5E + 1 ; case 5 + .short _02219C16 - _02219B5E + 1 ; case 6 + .short _02219C16 - _02219B5E + 1 ; case 7 + .short _02219BCC - _02219B5E + 1 ; case 8 + .short _02219C16 - _02219B5E + 1 ; case 9 + .short _02219BC6 - _02219B5E + 1 ; case 10 + .short _02219C16 - _02219B5E + 1 ; case 11 + .short _02219C16 - _02219B5E + 1 ; case 12 + .short _02219C16 - _02219B5E + 1 ; case 13 + .short _02219C16 - _02219B5E + 1 ; case 14 + .short _02219C16 - _02219B5E + 1 ; case 15 + .short _02219C16 - _02219B5E + 1 ; case 16 + .short _02219C16 - _02219B5E + 1 ; case 17 + .short _02219BCC - _02219B5E + 1 ; case 18 + .short _02219B86 - _02219B5E + 1 ; case 19 +_02219B86: + cmp r6, #0 + bne _02219BCC + cmp r5, #0 + beq _02219B98 + add r0, r4, #0 + mov r1, #0x40 + bl MOD13_0221A2FC + add r7, r0, #0 +_02219B98: + bl MOD13_0221A1A4 + cmp r0, #0 + beq _02219C16 + mov r6, #1 + b _02219BCC +_02219BA4: + cmp r6, #0 + bne _02219BCC + cmp r5, #8 + bge _02219BB0 + add r5, r5, #1 + b _02219BCC +_02219BB0: + add r0, r4, #0 + mov r1, #0x40 + bl MOD13_0221A2FC + add r7, r0, #0 + bl MOD13_0221A1A4 + cmp r0, #0 + beq _02219C16 + mov r6, #1 + b _02219BCC +_02219BC6: + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #8] +_02219BCC: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _02219B40 + cmp r7, #0 + beq _02219BEA + sub r0, r7, #1 + mov r1, #0x54 + mul r0, r1 + add r0, #0x58 + ldr r1, _02219C44 ; =0x02241900 + ldr r1, [r1] + blx r1 + cmp r0, #0 + bne _02219BF6 + b _02219C16 +_02219BEA: + mov r0, #0x58 + ldr r1, _02219C44 ; =0x02241900 + ldr r1, [r1] + blx r1 + cmp r0, #0 + beq _02219C16 +_02219BF6: + ldr r1, [sp, #4] + str r0, [r1] + str r7, [r0] + mov r6, #0 + cmp r7, #0 + ble _02219C16 + add r5, r0, #4 +_02219C04: + add r0, r4, #0 + add r1, r5, #0 + bl MOD13_02219EB4 + add r4, #0xc0 + add r5, #0x54 + add r6, r6, #1 + cmp r6, r7 + blt _02219C04 +_02219C16: + add r0, sp, #0x18 + bl OS_CancelAlarm + ldr r5, _02219C5C ; =0x02241920 + add r4, sp, #0x14 + mov r6, #0 +_02219C22: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl OS_ReceiveMessage + cmp r0, #1 + beq _02219C22 +_02219C30: + ldr r0, [sp, #0x10] + ldr r1, _02219C48 ; =0x0224190C + ldr r1, [r1] + blx r1 + ldr r0, [sp, #8] + add sp, #0x44 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02219C44: .word 0x02241900 +_02219C48: .word 0x0224190C +_02219C4C: .word 0x00003000 +_02219C50: .word 0x0030BFFE +_02219C54: .word 0x003FEC42 +_02219C58: .word MOD13_02219E48 +_02219C5C: .word 0x02241920 + + thumb_func_start MOD13_02219C60 +MOD13_02219C60: ; 0x02219C60 + push {r4, r5, r6, r7, lr} + sub sp, #4 + mov r0, #0 + mvn r4, r0 + bl MOD13_0221A164 + cmp r0, #0 + beq _02219C8C + mov r5, #0 + ldr r6, _02219C98 ; =0x02241920 + add r7, sp, #0 +_02219C76: + add r0, r6, #0 + add r1, r7, #0 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp] + cmp r0, #0xe + bne _02219C88 + add r4, r5, #0 +_02219C88: + cmp r5, #0 + bne _02219C76 +_02219C8C: + add r0, r4, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02219C98: .word 0x02241920 + + thumb_func_start MOD13_02219C9C +MOD13_02219C9C: ; 0x02219C9C + push {r4, r5, lr} + sub sp, #4 + mov r4, #1 + mov r0, #0 + mvn r5, r0 + ldr r0, _02219D48 ; =0x0224190C + ldr r0, [r0] + cmp r0, #0 + bne _02219CB8 + add r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02219CB8: + bl MOD13_0221A0FC + cmp r0, #0 + bne _02219CCC + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02219CCC: + ldr r0, _02219D4C ; =0x02241920 + add r1, sp, #0 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp] + cmp r0, #0x14 + bhi _02219D24 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02219CEA: ; jump table + .short _02219D24 - _02219CEA + 1 ; case 0 + .short _02219D24 - _02219CEA + 1 ; case 1 + .short _02219D24 - _02219CEA + 1 ; case 2 + .short _02219D24 - _02219CEA + 1 ; case 3 + .short _02219D26 - _02219CEA + 1 ; case 4 + .short _02219D26 - _02219CEA + 1 ; case 5 + .short _02219D24 - _02219CEA + 1 ; case 6 + .short _02219D24 - _02219CEA + 1 ; case 7 + .short _02219D24 - _02219CEA + 1 ; case 8 + .short _02219D24 - _02219CEA + 1 ; case 9 + .short _02219D24 - _02219CEA + 1 ; case 10 + .short _02219D24 - _02219CEA + 1 ; case 11 + .short _02219D24 - _02219CEA + 1 ; case 12 + .short _02219D24 - _02219CEA + 1 ; case 13 + .short _02219D24 - _02219CEA + 1 ; case 14 + .short _02219D24 - _02219CEA + 1 ; case 15 + .short _02219D24 - _02219CEA + 1 ; case 16 + .short _02219D24 - _02219CEA + 1 ; case 17 + .short _02219D24 - _02219CEA + 1 ; case 18 + .short _02219D24 - _02219CEA + 1 ; case 19 + .short _02219D14 - _02219CEA + 1 ; case 20 +_02219D14: + mov r4, #0 + add r5, r4, #0 + ldr r0, _02219D50 ; =0x02241908 + ldr r0, [r0] + ldr r1, _02219D48 ; =0x0224190C + ldr r1, [r1] + blx r1 + b _02219D26 +_02219D24: + mov r4, #0 +_02219D26: + cmp r4, #0 + bne _02219CCC + bl OS_DisableInterrupts + mov r2, #0 + ldr r1, _02219D54 ; =0x02241900 + str r2, [r1] + ldr r1, _02219D48 ; =0x0224190C + str r2, [r1] + bl OS_RestoreInterrupts + add r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + nop +_02219D48: .word 0x0224190C +_02219D4C: .word 0x02241920 +_02219D50: .word 0x02241908 +_02219D54: .word 0x02241900 + + thumb_func_start MOD13_02219D58 +MOD13_02219D58: ; 0x02219D58 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #1 + ldr r0, _02219E2C ; =0x02241920 + ldr r1, _02219E30 ; =0x02241910 + mov r2, #4 + bl OS_InitMessageQueue + cmp r5, #0 + beq _02219D74 + cmp r6, #0 + bne _02219D80 +_02219D74: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219D80: + bl OS_DisableInterrupts + ldr r1, _02219E34 ; =0x02241900 + str r5, [r1] + ldr r1, _02219E38 ; =0x0224190C + str r6, [r1] + bl OS_RestoreInterrupts + ldr r0, _02219E3C ; =0x00005890 + ldr r1, _02219E34 ; =0x02241900 + ldr r1, [r1] + blx r1 + add r1, r0, #0 + ldr r0, _02219E40 ; =0x02241908 + str r1, [r0] + cmp r1, #0 + bne _02219DAE + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219DAE: + ldr r0, _02219E44 ; =MOD13_02219E5C + ldr r2, _02219E3C ; =0x00005890 + bl MOD13_02219F54 + cmp r0, #0 + bne _02219DBC + mov r4, #0 +_02219DBC: + cmp r4, #0 + beq _02219E14 + ldr r5, _02219E2C ; =0x02241920 + add r6, sp, #0 + mov r7, #1 +_02219DC6: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl OS_ReceiveMessage + ldr r0, [sp] + cmp r0, #0xf + bhi _02219E0E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02219DE4: ; jump table + .short _02219E0E - _02219DE4 + 1 ; case 0 + .short _02219E0E - _02219DE4 + 1 ; case 1 + .short _02219E0E - _02219DE4 + 1 ; case 2 + .short _02219E0E - _02219DE4 + 1 ; case 3 + .short _02219E10 - _02219DE4 + 1 ; case 4 + .short _02219E10 - _02219DE4 + 1 ; case 5 + .short _02219E04 - _02219DE4 + 1 ; case 6 + .short _02219E0E - _02219DE4 + 1 ; case 7 + .short _02219E0E - _02219DE4 + 1 ; case 8 + .short _02219E0E - _02219DE4 + 1 ; case 9 + .short _02219E0E - _02219DE4 + 1 ; case 10 + .short _02219E0E - _02219DE4 + 1 ; case 11 + .short _02219E0E - _02219DE4 + 1 ; case 12 + .short _02219E0E - _02219DE4 + 1 ; case 13 + .short _02219E0E - _02219DE4 + 1 ; case 14 + .short _02219E0E - _02219DE4 + 1 ; case 15 +_02219E04: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219E0E: + mov r4, #0 +_02219E10: + cmp r4, #0 + bne _02219DC6 +_02219E14: + ldr r0, _02219E40 ; =0x02241908 + ldr r0, [r0] + ldr r1, _02219E38 ; =0x0224190C + ldr r1, [r1] + blx r1 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02219E2C: .word 0x02241920 +_02219E30: .word 0x02241910 +_02219E34: .word 0x02241900 +_02219E38: .word 0x0224190C +_02219E3C: .word 0x00005890 +_02219E40: .word 0x02241908 +_02219E44: .word MOD13_02219E5C + + thumb_func_start MOD13_02219E48 +MOD13_02219E48: ; 0x02219E48 + add r1, r0, #0 + ldr r0, _02219E54 ; =0x02241920 + mov r2, #0 + ldr r3, _02219E58 ; =0x020CBDC4 + bx r3 + nop +_02219E54: .word 0x02241920 +_02219E58: .word 0x020CBDC4 + + thumb_func_start MOD13_02219E5C +MOD13_02219E5C: ; 0x02219E5C + add r1, r0, #0 + ldr r0, _02219E68 ; =0x02241920 + mov r2, #0 + ldr r3, _02219E6C ; =0x020CBDC4 + bx r3 + nop +_02219E68: .word 0x02241920 +_02219E6C: .word 0x020CBDC4 + + thumb_func_start MOD13_02219E70 +MOD13_02219E70: ; 0x02219E70 + add r3, r0, #0 + str r2, [r3] + add r0, r1, #0 + add r1, r3, #4 + ldr r3, _02219E7C ; =MOD13_02219EB4 + bx r3 + .align 2, 0 +_02219E7C: .word MOD13_02219EB4 + + thumb_func_start MOD13_02219E80 +MOD13_02219E80: ; 0x02219E80 + push {r4, r5, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r0, sp, #0 + strh r1, [r0] + ldrh r0, [r0] + add r1, r4, #0 + add r1, #0xc + mov r2, #0x20 + bl MIi_CpuClear16 + ldr r0, [r5] + strh r0, [r4, #0xa] + add r0, r5, #4 + add r1, r4, #0 + add r1, #0xc + ldrh r2, [r4, #0xa] + bl MI_CpuCopy8 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02219EB4 +MOD13_02219EB4: ; 0x02219EB4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + ldrh r0, [r5, #0xa] + str r0, [r4] + add r0, r5, #0 + add r0, #0xc + add r1, r4, #4 + mov r2, #0x20 + bl MIi_CpuCopy16 + ldrh r0, [r5, #0x36] + str r0, [r4, #0x24] + add r0, r5, #4 + add r1, r4, #0 + add r1, #0x30 + mov r2, #6 + bl MIi_CpuCopy16 + mov r2, #0 + add r3, r2, #0 + ldr r1, _02219F50 ; =0x0223F834 +_02219EE2: + ldrh r6, [r5, #0x30] + ldrh r0, [r1] + and r6, r0 + cmp r6, #0 + beq _02219F10 + add r0, r4, r2 + ldrb r7, [r1, #2] + add r6, r0, #0 + add r6, #0x3c + strb r7, [r6] + ldrh r7, [r5, #0x2e] + ldrh r6, [r1] + and r7, r6 + cmp r7, #0 + beq _02219F0E + add r6, r0, #0 + add r6, #0x3c + ldrb r7, [r6] + mov r6, #0x80 + orr r7, r6 + add r0, #0x3c + strb r7, [r0] +_02219F0E: + add r2, r2, #1 +_02219F10: + add r1, r1, #4 + add r3, r3, #1 + cmp r3, #0xc + blt _02219EE2 + str r2, [r4, #0x38] + ldrh r0, [r5, #0x32] + str r0, [r4, #0x4c] + ldrh r1, [r5, #0x2c] + mov r0, #3 + and r1, r0 + cmp r1, #1 + bne _02219F34 + mov r0, #1 + str r0, [r4, #0x50] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219F34: + cmp r1, #2 + bne _02219F44 + mov r0, #2 + str r0, [r4, #0x50] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219F44: + mov r0, #0 + str r0, [r4, #0x50] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02219F50: .word 0x0223F834 + + thumb_func_start MOD13_02219F54 +MOD13_02219F54: ; 0x02219F54 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A028 ; =0x02241A84 + str r5, [r0] + add r2, r5, #0 + add r2, #0x53 + mov r0, #3 + bic r2, r0 + ldr r0, _0221A02C ; =0x02241A68 + str r2, [r0] + add r1, r2, #0 + add r1, #0x2f + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221A030 ; =0x02241A60 + str r1, [r3] + ldr r3, _0221A034 ; =0x0000231F + add r1, r1, r3 + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221A038 ; =0x02241A80 + str r1, [r3] + add r1, #0xdf + mov r3, #0x1f + bic r1, r3 + str r1, [r2, #4] + ldr r1, [r0] + add r3, r5, r7 + ldr r2, [r1, #4] + sub r2, r3, r2 + str r2, [r1, #8] + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0xc] + ldr r1, [r0] + mov r0, #3 + str r0, [r1] + ldr r0, _0221A03C ; =0x02241A7C + str r6, [r0] + ldr r0, _0221A040 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #0 + bne _02219FDA + ldr r0, _0221A030 ; =0x02241A60 + ldr r0, [r0] + ldr r1, _0221A044 ; =0x00002300 + bl FUN_020A7E80 + cmp r0, #0 + beq _02219FD4 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219FD4: + mov r1, #1 + ldr r0, _0221A040 ; =0x02241A78 + str r1, [r0] +_02219FDA: + ldr r0, _0221A040 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #1 + bne _0221A016 + ldr r0, _0221A02C ; =0x02241A68 + ldr r0, [r0] + ldr r1, _0221A048 ; =MOD13_0221A3CC + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221A000 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A000: + mov r1, #4 + ldr r0, _0221A040 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A016: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221A028: .word 0x02241A84 +_0221A02C: .word 0x02241A68 +_0221A030: .word 0x02241A60 +_0221A034: .word 0x0000231F +_0221A038: .word 0x02241A80 +_0221A03C: .word 0x02241A7C +_0221A040: .word 0x02241A78 +_0221A044: .word 0x00002300 +_0221A048: .word MOD13_0221A3CC + + thumb_func_start MOD13_0221A04C +MOD13_0221A04C: ; 0x0221A04C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A0EC ; =0x02241A6C + str r6, [r0] + cmp r5, #0 + beq _0221A072 + add r0, r5, #0 + ldr r1, _0221A0F0 ; =0x02241A84 + ldr r1, [r1] + mov r2, #0x50 + bl MI_CpuCopy8 + b _0221A07E +_0221A072: + ldr r0, _0221A0F0 ; =0x02241A84 + ldr r0, [r0] + mov r1, #0 + mov r2, #0x50 + bl MI_CpuFill8 +_0221A07E: + add r0, r7, #0 + ldr r1, _0221A0F4 ; =0x02241A80 + ldr r1, [r1] + mov r2, #0xc0 + bl MIi_CpuCopy32 + bl MOD13_0221A348 + cmp r0, #1 + bne _0221A0A8 + mov r1, #8 + ldr r0, _0221A0F8 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A0A8: + ldr r0, _0221A0F8 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #3 + bne _0221A0DA + ldr r0, _0221A0F4 ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A0F0 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A0EC ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221A0DA + mov r1, #8 + ldr r0, _0221A0F8 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A0DA: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221A0EC: .word 0x02241A6C +_0221A0F0: .word 0x02241A84 +_0221A0F4: .word 0x02241A80 +_0221A0F8: .word 0x02241A78 + + thumb_func_start MOD13_0221A0FC +MOD13_0221A0FC: ; 0x0221A0FC + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A160 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #3 + bne _0221A136 + bl FUN_020A7AC8 + cmp r0, #3 + beq _0221A122 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 +_0221A122: + mov r1, #2 + ldr r0, _0221A160 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A136: + bl MOD13_0221A348 + cmp r0, #1 + bne _0221A152 + mov r1, #2 + ldr r0, _0221A160 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A152: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221A160: .word 0x02241A78 + + thumb_func_start MOD13_0221A164 +MOD13_0221A164: ; 0x0221A164 + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A1A0 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #7 + bne _0221A190 + bl FUN_020A7488 + cmp r0, #3 + bne _0221A190 + mov r1, #4 + ldr r0, _0221A1A0 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A190: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + nop +_0221A1A0: .word 0x02241A78 + + thumb_func_start MOD13_0221A1A4 +MOD13_0221A1A4: ; 0x0221A1A4 + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A1E4 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #5 + bne _0221A1D6 + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A1D6 + mov r1, #4 + ldr r0, _0221A1E4 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A1D6: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221A1E4: .word 0x02241A78 + + thumb_func_start MOD13_0221A1E8 +MOD13_0221A1E8: ; 0x0221A1E8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl OS_DisableInterrupts + add r7, r0, #0 + ldr r1, _0221A2DC ; =0x02241A64 + ldr r0, [sp] + str r0, [r1] + cmp r5, #0 + beq _0221A21E + mov r2, #0 + ldr r1, _0221A2E0 ; =0x02241A88 +_0221A208: + ldrb r0, [r5] + add r5, r5, #1 + strb r0, [r1] + add r1, r1, #1 + add r2, r2, #1 + cmp r2, #6 + blt _0221A208 + ldr r1, _0221A2E0 ; =0x02241A88 + ldr r0, _0221A2E4 ; =0x02241A70 + str r1, [r0] + b _0221A22E +_0221A21E: + ldr r0, _0221A2E0 ; =0x02241A88 + mov r1, #0xff + mov r2, #6 + bl MI_CpuFill8 + ldr r1, _0221A2E8 ; =0x020FF590 + ldr r0, _0221A2E4 ; =0x02241A70 + str r1, [r0] +_0221A22E: + cmp r4, #0 + beq _0221A26C + cmp r6, #0 + ble _0221A26C + cmp r6, #0x20 + bgt _0221A26C + mov r1, #0 + cmp r6, #0 + ble _0221A250 + ldr r2, _0221A2EC ; =0x02241A90 +_0221A242: + ldrb r0, [r4] + add r4, r4, #1 + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, r6 + blt _0221A242 +_0221A250: + cmp r1, #0x20 + bge _0221A264 + ldr r0, _0221A2EC ; =0x02241A90 + add r2, r0, r1 + mov r0, #0 +_0221A25A: + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, #0x20 + blt _0221A25A +_0221A264: + ldr r1, _0221A2EC ; =0x02241A90 + ldr r0, _0221A2F0 ; =0x02241A74 + str r1, [r0] + b _0221A27C +_0221A26C: + ldr r0, _0221A2EC ; =0x02241A90 + mov r1, #0xff + mov r2, #0x20 + bl MI_CpuFill8 + ldr r1, _0221A2F4 ; =0x020FF598 + ldr r0, _0221A2F0 ; =0x02241A74 + str r1, [r0] +_0221A27C: + ldr r0, _0221A2F8 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #3 + bne _0221A2AE + ldr r0, _0221A2E4 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A2F0 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A2DC ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A2CC + mov r1, #6 + ldr r0, _0221A2F8 ; =0x02241A78 + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A2AE: + bl MOD13_0221A348 + cmp r0, #1 + bne _0221A2CC + mov r1, #6 + ldr r0, _0221A2F8 ; =0x02241A78 + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A2CC: + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221A2DC: .word 0x02241A64 +_0221A2E0: .word 0x02241A88 +_0221A2E4: .word 0x02241A70 +_0221A2E8: .word 0x020FF590 +_0221A2EC: .word 0x02241A90 +_0221A2F0: .word 0x02241A74 +_0221A2F4: .word 0x020FF598 +_0221A2F8: .word 0x02241A78 + + thumb_func_start MOD13_0221A2FC +MOD13_0221A2FC: ; 0x0221A2FC + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + mov r0, #1 + bl FUN_020A83D0 + bl FUN_020A846C + add r6, r0, #0 + cmp r6, #0 + ble _0221A336 + mov r4, #0 + cmp r6, #0 + ble _0221A336 +_0221A31A: + cmp r4, r7 + bge _0221A336 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_020A8358 + add r1, r5, #0 + mov r2, #0xc0 + bl MIi_CpuCopy32 + add r4, r4, #1 + add r5, #0xc0 + cmp r4, r6 + blt _0221A31A +_0221A336: + mov r0, #0 + bl FUN_020A83D0 + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221A348 +MOD13_0221A348: ; 0x0221A348 + push {lr} + sub sp, #4 + ldr r0, _0221A3C0 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #8 + bhi _0221A3B0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221A362: ; jump table + .short _0221A3B0 - _0221A362 + 1 ; case 0 + .short _0221A39A - _0221A362 + 1 ; case 1 + .short _0221A3B0 - _0221A362 + 1 ; case 2 + .short _0221A3B0 - _0221A362 + 1 ; case 3 + .short _0221A3B0 - _0221A362 + 1 ; case 4 + .short _0221A374 - _0221A362 + 1 ; case 5 + .short _0221A3B0 - _0221A362 + 1 ; case 6 + .short _0221A38A - _0221A362 + 1 ; case 7 + .short _0221A3B0 - _0221A362 + 1 ; case 8 +_0221A374: + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_020A7A90 + cmp r0, #3 + beq _0221A3B8 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A38A: + bl FUN_020A7488 + cmp r0, #3 + beq _0221A3B8 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A39A: + ldr r0, _0221A3C4 ; =0x02241A68 + ldr r0, [r0] + ldr r1, _0221A3C8 ; =MOD13_0221A3CC + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221A3B8 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A3B0: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A3B8: + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221A3C0: .word 0x02241A78 +_0221A3C4: .word 0x02241A68 +_0221A3C8: .word MOD13_0221A3CC + + thumb_func_start MOD13_0221A3CC +MOD13_0221A3CC: ; 0x0221A3CC + push {lr} + sub sp, #4 + cmp r0, #0 + bne _0221A3D6 + b _0221A750 +_0221A3D6: + mov r1, #0 + ldrsh r2, [r0, r1] + cmp r2, #7 + bls _0221A3E0 + b _0221A742 +_0221A3E0: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #8] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add r2, pc + bx r2 +_0221A3EE: ; jump table + .short _0221A742 - _0221A3EE + 1 ; case 0 + .short _0221A3FE - _0221A3EE + 1 ; case 1 + .short _0221A6E4 - _0221A3EE + 1 ; case 2 + .short _0221A4AE - _0221A3EE + 1 ; case 3 + .short _0221A536 - _0221A3EE + 1 ; case 4 + .short _0221A4F2 - _0221A3EE + 1 ; case 5 + .short _0221A610 - _0221A3EE + 1 ; case 6 + .short _0221A728 - _0221A3EE + 1 ; case 7 +_0221A3FE: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A494 + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #4 + bne _0221A426 + mov r2, #3 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A41C + b _0221A750 +_0221A41C: + mov r0, #6 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A426: + cmp r2, #6 + bne _0221A45C + ldr r0, _0221A760 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A764 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A768 ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A440 + b _0221A750 +_0221A440: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A450 + b _0221A750 +_0221A450: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A45C: + cmp r2, #8 + beq _0221A462 + b _0221A750 +_0221A462: + ldr r0, _0221A76C ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A770 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A774 ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221A478 + b _0221A750 +_0221A478: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A488 + b _0221A750 +_0221A488: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A494: + mov r3, #1 + ldr r0, _0221A758 ; =0x02241A78 + str r3, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r3, [r0] + cmp r3, #0 + bne _0221A4A4 + b _0221A750 +_0221A4A4: + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221A4AE: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A4D8 + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #6 + beq _0221A4C0 + b _0221A750 +_0221A4C0: + mov r2, #5 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A4CE + b _0221A750 +_0221A4CE: + mov r0, #8 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A4D8: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A4E8 + b _0221A750 +_0221A4E8: + mov r0, #9 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A4F2: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A51C + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #8 + beq _0221A504 + b _0221A750 +_0221A504: + mov r2, #7 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A512 + b _0221A750 +_0221A512: + mov r0, #0xc + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A51C: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A52C + b _0221A750 +_0221A52C: + mov r0, #0xd + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A536: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A5F6 + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #4 + bne _0221A55E + mov r2, #3 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A554 + b _0221A750 +_0221A554: + mov r0, #0xa + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A55E: + cmp r2, #6 + bne _0221A594 + ldr r0, _0221A760 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A764 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A768 ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A578 + b _0221A750 +_0221A578: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A588 + b _0221A750 +_0221A588: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A594: + cmp r2, #2 + bne _0221A5BE + bl FUN_020A7AC8 + cmp r0, #3 + bne _0221A5A2 + b _0221A750 +_0221A5A2: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A5B2 + b _0221A750 +_0221A5B2: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A5BE: + cmp r2, #8 + beq _0221A5C4 + b _0221A750 +_0221A5C4: + ldr r0, _0221A76C ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A770 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A774 ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221A5DA + b _0221A750 +_0221A5DA: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A5EA + b _0221A750 +_0221A5EA: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A5F6: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A606 + b _0221A750 +_0221A606: + mov r0, #0xb + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A610: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A6CC + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #4 + bne _0221A638 + mov r2, #3 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A62E + b _0221A750 +_0221A62E: + mov r0, #0xe + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A638: + cmp r2, #6 + bne _0221A66A + ldr r0, _0221A760 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A764 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A768 ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + beq _0221A750 + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A66A: + cmp r2, #2 + bne _0221A690 + bl FUN_020A7AC8 + cmp r0, #3 + beq _0221A750 + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A690: + cmp r2, #8 + bne _0221A6C2 + ldr r0, _0221A76C ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A770 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A774 ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + beq _0221A750 + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A6C2: + mov r1, #3 + str r1, [r0] + add sp, #4 + pop {r3} + bx r3 +_0221A6CC: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #0xf + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A6E4: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A710 + ldr r0, _0221A758 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #2 + bne _0221A750 + bl FUN_020A7E0C + mov r1, #0 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #0x14 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A710: + mov r3, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r3, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r3, [r0] + cmp r3, #0 + beq _0221A750 + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221A728: + ldr r0, _0221A758 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #5 + bne _0221A750 + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #5 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A742: + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #1 + mov r1, #0 + blx r2 +_0221A750: + add sp, #4 + pop {r3} + bx r3 + nop +_0221A758: .word 0x02241A78 +_0221A75C: .word 0x02241A7C +_0221A760: .word 0x02241A70 +_0221A764: .word 0x02241A74 +_0221A768: .word 0x02241A64 +_0221A76C: .word 0x02241A80 +_0221A770: .word 0x02241A84 +_0221A774: .word 0x02241A6C + + thumb_func_start MOD13_0221A778 +MOD13_0221A778: ; 0x0221A778 + push {lr} + sub sp, #0xc + add r0, sp, #0 + bl MOD13_0221A7AC + add r0, sp, #0 + ldr r1, _0221A790 ; =0x02241B2C + ldr r1, [r1] + blx r1 + add sp, #0xc + pop {r3} + bx r3 + .align 2, 0 +_0221A790: .word 0x02241B2C + + thumb_func_start MOD13_0221A794 +MOD13_0221A794: ; 0x0221A794 + push {lr} + sub sp, #4 + ldr r1, _0221A7A8 ; =0x02241CA8 + mov r2, #0xe8 + bl memcpy + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221A7A8: .word 0x02241CA8 + + thumb_func_start MOD13_0221A7AC +MOD13_0221A7AC: ; 0x0221A7AC + push {r4, lr} + add r4, r0, #0 + ldr r0, _0221A7E0 ; =0x02241AE8 + ldr r0, [r0] + str r0, [r4] + ldr r0, _0221A7E4 ; =0x0223F870 + ldr r1, [r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _0221A7C6 + str r0, [r4, #4] + b _0221A7D2 +_0221A7C6: + bl MOD13_0221AA90 + ldr r1, _0221A7E4 ; =0x0223F870 + ldr r1, [r1] + sub r0, r1, r0 + str r0, [r4, #4] +_0221A7D2: + ldr r0, _0221A7E8 ; =0x02241B28 + ldr r0, [r0] + str r0, [r4, #8] + mov r0, #1 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221A7E0: .word 0x02241AE8 +_0221A7E4: .word 0x0223F870 +_0221A7E8: .word 0x02241B28 + + thumb_func_start MOD13_0221A7EC +MOD13_0221A7EC: ; 0x0221A7EC + push {r4, r5, r6, lr} + ldr r0, _0221A884 ; =0x02241B14 + ldr r0, [r0] + cmp r0, #0 + beq _0221A862 + ldr r4, _0221A888 ; =0x02241AE8 + ldr r6, [r4] + mov r1, #1 + ldr r0, _0221A88C ; =0x02241AC0 + str r1, [r0] + mov r5, #0x64 + b _0221A80A +_0221A804: + add r0, r5, #0 + bl OS_Sleep +_0221A80A: + ldr r0, [r4] + cmp r0, #1 + blt _0221A814 + cmp r0, #5 + ble _0221A804 +_0221A814: + ldr r0, _0221A890 ; =0x000001F4 + bl OS_Sleep + ldr r0, _0221A894 ; =0x02241BE8 + bl OS_IsThreadTerminated + cmp r0, #0 + bne _0221A83C + ldr r4, _0221A894 ; =0x02241BE8 +_0221A826: + add r0, r4, #0 + bl OS_WakeupThreadDirect + add r0, r4, #0 + bl OS_JoinThread + add r0, r4, #0 + bl OS_IsThreadTerminated + cmp r0, #0 + beq _0221A826 +_0221A83C: + ldr r0, _0221A898 ; =0x02241AE0 + ldr r0, [r0] + cmp r0, #0 + beq _0221A850 + ldr r1, _0221A89C ; =0x02241ABC + ldr r1, [r1] + blx r1 + mov r1, #0 + ldr r0, _0221A898 ; =0x02241AE0 + str r1, [r0] +_0221A850: + mov r1, #0 + ldr r0, _0221A884 ; =0x02241B14 + str r1, [r0] + ldr r0, _0221A888 ; =0x02241AE8 + ldr r0, [r0] + cmp r6, r0 + beq _0221A862 + bl MOD13_0221A778 +_0221A862: + ldr r0, _0221A8A0 ; =0x02241B24 + ldr r0, [r0] + cmp r0, #0 + ble _0221A87A + bl MOD13_0221DAF4 + mov r2, #0 + ldr r1, _0221A8A0 ; =0x02241B24 + str r2, [r1] + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221A87A: + mov r0, #9 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221A884: .word 0x02241B14 +_0221A888: .word 0x02241AE8 +_0221A88C: .word 0x02241AC0 +_0221A890: .word 0x000001F4 +_0221A894: .word 0x02241BE8 +_0221A898: .word 0x02241AE0 +_0221A89C: .word 0x02241ABC +_0221A8A0: .word 0x02241B24 + + thumb_func_start MOD13_0221A8A4 +MOD13_0221A8A4: ; 0x0221A8A4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _0221A998 ; =0x02241AE8 + ldr r0, [r0] + cmp r0, #1 + blt _0221A8C2 + cmp r0, #5 + bgt _0221A8C2 + mov r0, #9 + mvn r0, r0 + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A8C2: + ldr r0, _0221A99C ; =0x0223F874 + str r1, [r0] + mov r5, #7 + ldr r0, _0221A998 ; =0x02241AE8 + str r5, [r0] + ldr r0, _0221A9A0 ; =0x02241B2C + str r2, [r0] + ldr r0, _0221A9A4 ; =0x02241AB4 + str r3, [r0] + ldr r2, [sp, #0x18] + ldr r0, _0221A9A8 ; =0x02241ABC + str r2, [r0] + ldr r2, [sp, #0x1c] + ldr r0, _0221A9AC ; =0x0223F86C + str r2, [r0] + add r0, r1, #0 + bl MOD13_0221DB54 + mov r2, #1 + ldr r1, _0221A9B0 ; =0x02241B24 + str r2, [r1] + cmp r0, #0 + bge _0221A8FC + ldr r1, _0221A9B4 ; =0x02241B28 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A8FC: + ldr r0, _0221A9AC ; =0x0223F86C + ldr r0, [r0] + ldr r1, _0221A9A4 ; =0x02241AB4 + ldr r1, [r1] + blx r1 + ldr r1, _0221A9B8 ; =0x02241AE0 + str r0, [r1] + cmp r0, #0 + bne _0221A91E + mov r0, #0 + mvn r0, r0 + ldr r1, _0221A9B4 ; =0x02241B28 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A91E: + bl OS_IsThreadAvailable + cmp r0, #1 + beq _0221A936 + mov r0, #8 + mvn r0, r0 + ldr r1, _0221A9B4 ; =0x02241B28 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A936: + ldr r0, _0221A9AC ; =0x0223F86C + ldr r3, [r0] + str r3, [sp] + str r4, [sp, #4] + ldr r0, _0221A9BC ; =0x02241BE8 + ldr r1, _0221A9C0 ; =MOD13_0221C618 + mov r2, #0 + ldr r4, _0221A9B8 ; =0x02241AE0 + ldr r5, [r4] + mov r4, #7 + bic r3, r4 + add r3, r5, r3 + bl OS_CreateThread + mov r1, #1 + ldr r0, _0221A998 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221AA90 + ldr r1, _0221A9C4 ; =0x0000EA60 + add r1, r0, r1 + ldr r0, _0221A9C8 ; =0x0223F870 + str r1, [r0] + mov r0, #0 + ldr r1, _0221A9CC ; =0x02241AC0 + str r0, [r1] + ldr r5, _0221A9D0 ; =0x02241CA8 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 +_0221A972: + stmia r5!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + sub r4, r4, #1 + cmp r4, #0 + bne _0221A972 + stmia r5!, {r0, r1} + bl MOD13_0221A778 + ldr r0, _0221A9BC ; =0x02241BE8 + bl OS_WakeupThreadDirect + mov r0, #1 + ldr r1, _0221A9D4 ; =0x02241B14 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 + nop +_0221A998: .word 0x02241AE8 +_0221A99C: .word 0x0223F874 +_0221A9A0: .word 0x02241B2C +_0221A9A4: .word 0x02241AB4 +_0221A9A8: .word 0x02241ABC +_0221A9AC: .word 0x0223F86C +_0221A9B0: .word 0x02241B24 +_0221A9B4: .word 0x02241B28 +_0221A9B8: .word 0x02241AE0 +_0221A9BC: .word 0x02241BE8 +_0221A9C0: .word MOD13_0221C618 +_0221A9C4: .word 0x0000EA60 +_0221A9C8: .word 0x0223F870 +_0221A9CC: .word 0x02241AC0 +_0221A9D0: .word 0x02241CA8 +_0221A9D4: .word 0x02241B14 + + thumb_func_start MOD13_0221A9D8 +MOD13_0221A9D8: ; 0x0221A9D8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + str r0, [sp] + add r6, r1, #0 + lsl r5, r0, #0 + mov r4, #0 + add r7, r4, #0 +_0221A9E6: + add r0, r5, #0 + ldrsb r1, [r6, r7] + add r6, r6, #1 + bl MOD13_0221AA14 + add r1, r5, r0 + add r5, r1, #0 + cmp r4, #5 + bge _0221A9FE + add r5, r1, #1 + mov r0, #0x3a + strb r0, [r1] +_0221A9FE: + add r4, r4, #1 + cmp r4, #6 + blt _0221A9E6 + mov r0, #0 + strb r0, [r5] + ldr r0, [sp] + sub r0, r5, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221AA14 +MOD13_0221AA14: ; 0x0221AA14 + push {r4, r5} + add r2, r0, #0 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + mov r1, #0xf0 + add r3, r4, #0 + and r3, r1 + asr r3, r3, #4 + mov r5, #0 + mov r1, #0xf + and r4, r1 +_0221AA2A: + cmp r3, #9 + bgt _0221AA36 + add r3, #0x30 + strb r3, [r2] + add r2, r2, #1 + b _0221AA3C +_0221AA36: + add r3, #0x37 + strb r3, [r2] + add r2, r2, #1 +_0221AA3C: + add r3, r4, #0 + add r5, r5, #1 + cmp r5, #2 + blt _0221AA2A + mov r1, #0 + strb r1, [r2] + sub r0, r2, r0 + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AA50 +MOD13_0221AA50: ; 0x0221AA50 + push {lr} + sub sp, #4 + ldr r1, _0221AA60 ; =0x02241ABC + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221AA60: .word 0x02241ABC + + thumb_func_start MOD13_0221AA64 +MOD13_0221AA64: ; 0x0221AA64 + push {r4, r5, lr} + sub sp, #4 + add r4, r0, #0 + mul r4, r1 + add r0, r4, #0 + ldr r1, _0221AA8C ; =0x02241AB4 + ldr r1, [r1] + blx r1 + add r5, r0, #0 + cmp r5, #0 + beq _0221AA82 + mov r1, #0 + add r2, r4, #0 + bl Call_FillMemWithValue +_0221AA82: + add r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 +_0221AA8C: .word 0x02241AB4 + + thumb_func_start MOD13_0221AA90 +MOD13_0221AA90: ; 0x0221AA90 + push {lr} + sub sp, #4 + bl OS_GetTick + lsr r2, r0, #0x1a + lsl r1, r1, #6 + orr r1, r2 + lsl r0, r0, #6 + ldr r2, _0221AAB0 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + add sp, #4 + pop {r3} + bx r3 + nop +_0221AAB0: .word 0x000082EA + + thumb_func_start MOD13_0221AAB4 +MOD13_0221AAB4: ; 0x0221AAB4 + push {r4, r5, r6, lr} + sub sp, #0x58 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r0, sp, #0 + bl MOD13_0221B4AC + add r0, sp, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_0221B42C + add r0, r5, #0 + add r1, sp, #0 + bl MOD13_0221B3D0 + add sp, #0x58 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221AAE0 +MOD13_0221AAE0: ; 0x0221AAE0 + mov r3, #0 + cmp r2, #0 + bls _0221AAF4 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 +_0221AAEA: + strb r1, [r0] + add r0, r0, #1 + add r3, r3, #1 + cmp r3, r2 + blo _0221AAEA +_0221AAF4: + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AAF8 +MOD13_0221AAF8: ; 0x0221AAF8 + push {r4} + sub sp, #4 + mov r4, #0 + cmp r2, #0 + bls _0221AB0C +_0221AB02: + ldrb r3, [r1, r4] + strb r3, [r0, r4] + add r4, r4, #1 + cmp r4, r2 + blo _0221AB02 +_0221AB0C: + add sp, #4 + pop {r4} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AB14 +MOD13_0221AB14: ; 0x0221AB14 + push {r4, r5, r6, r7} + mov r6, #0 + cmp r2, #0 + bls _0221AB3E +_0221AB1C: + add r3, r6, #3 + ldrb r3, [r1, r3] + lsl r5, r3, #0x18 + add r3, r6, #2 + ldrb r3, [r1, r3] + lsl r4, r3, #0x10 + ldrb r3, [r1, r6] + add r7, r6, #1 + ldrb r7, [r1, r7] + lsl r7, r7, #8 + orr r3, r7 + orr r4, r3 + orr r5, r4 + stmia r0!, {r5} + add r6, r6, #4 + cmp r6, r2 + blo _0221AB1C +_0221AB3E: + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AB44 +MOD13_0221AB44: ; 0x0221AB44 + push {r4, r5} + mov r3, #0 + cmp r2, #0 + bls _0221AB70 +_0221AB4C: + ldr r4, [r1] + strb r4, [r0, r3] + ldr r4, [r1] + lsr r5, r4, #8 + add r4, r3, #1 + strb r5, [r0, r4] + ldr r4, [r1] + lsr r5, r4, #0x10 + add r4, r3, #2 + strb r5, [r0, r4] + ldr r4, [r1] + lsr r5, r4, #0x18 + add r4, r3, #3 + strb r5, [r0, r4] + add r1, r1, #4 + add r3, r3, #4 + cmp r3, r2 + blo _0221AB4C +_0221AB70: + pop {r4, r5} + bx lr + + thumb_func_start MOD13_0221AB74 +MOD13_0221AB74: ; 0x0221AB74 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + add r5, r0, #0 + ldr r0, [r5] + str r0, [sp] + ldr r4, [r5, #4] + ldr r6, [r5, #8] + ldr r7, [r5, #0xc] + add r0, sp, #0x40 + mov r2, #0x40 + bl MOD13_0221AB14 + ldr r0, [sp, #0x40] + str r0, [sp, #4] + add r1, r4, #0 + and r1, r6 + mvn r0, r4 + and r0, r7 + orr r1, r0 + ldr r0, [sp, #4] + add r1, r0, r1 + ldr r0, _0221AF8C ; =0x28955B88 + sub r1, r1, r0 + ldr r0, [sp] + add r0, r0, r1 + lsl r1, r0, #7 + lsr r0, r0, #0x19 + orr r1, r0 + add r0, r1, r4 + ldr r1, [sp, #0x44] + str r1, [sp, #8] + add r1, r0, #0 + and r1, r4 + mvn r2, r0 + and r2, r6 + orr r1, r2 + ldr r2, [sp, #8] + add r2, r2, r1 + ldr r1, _0221AF90 ; =0x173848AA + sub r1, r2, r1 + add r1, r7, r1 + lsl r2, r1, #0xc + lsr r1, r1, #0x14 + orr r2, r1 + add r3, r2, r0 + ldr r1, [sp, #0x48] + str r1, [sp, #0xc] + add r1, r3, #0 + and r1, r0 + mvn r2, r3 + and r2, r4 + orr r1, r2 + ldr r2, [sp, #0xc] + add r2, r2, r1 + ldr r1, _0221AF94 ; =0x242070DB + add r1, r2, r1 + add r1, r6, r1 + lsl r2, r1, #0x11 + lsr r1, r1, #0xf + orr r2, r1 + add r2, r2, r3 + ldr r1, [sp, #0x4c] + str r1, [sp, #0x10] + add r1, r2, #0 + and r1, r3 + mvn r6, r2 + and r6, r0 + orr r1, r6 + ldr r6, [sp, #0x10] + add r6, r6, r1 + ldr r1, _0221AF98 ; =0x3E423112 + sub r1, r6, r1 + add r1, r4, r1 + lsl r4, r1, #0x16 + lsr r1, r1, #0xa + orr r4, r1 + add r1, r4, r2 + ldr r4, [sp, #0x50] + str r4, [sp, #0x14] + add r4, r1, #0 + and r4, r2 + mvn r6, r1 + and r6, r3 + orr r4, r6 + ldr r6, [sp, #0x14] + add r6, r6, r4 + ldr r4, _0221AF9C ; =0x0A83F051 + sub r4, r6, r4 + add r0, r0, r4 + lsl r4, r0, #7 + lsr r0, r0, #0x19 + orr r4, r0 + add r4, r4, r1 + ldr r0, [sp, #0x54] + str r0, [sp, #0x18] + add r0, r4, #0 + and r0, r1 + mvn r6, r4 + and r6, r2 + orr r0, r6 + ldr r6, [sp, #0x18] + add r6, r6, r0 + ldr r0, _0221AFA0 ; =0x4787C62A + add r0, r6, r0 + add r0, r3, r0 + lsl r3, r0, #0xc + lsr r0, r0, #0x14 + orr r3, r0 + add r3, r3, r4 + ldr r0, [sp, #0x58] + str r0, [sp, #0x1c] + add r0, r3, #0 + and r0, r4 + mvn r6, r3 + and r6, r1 + orr r0, r6 + ldr r6, [sp, #0x1c] + add r6, r6, r0 + ldr r0, _0221AFA4 ; =0x57CFB9ED + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0x11 + lsr r0, r0, #0xf + orr r2, r0 + add r0, r2, r3 + ldr r2, [sp, #0x5c] + str r2, [sp, #0x20] + add r2, r0, #0 + and r2, r3 + mvn r6, r0 + and r6, r4 + orr r2, r6 + ldr r6, [sp, #0x20] + add r6, r6, r2 + ldr r2, _0221AFA8 ; =0x02B96AFF + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x16 + lsr r1, r1, #0xa + orr r2, r1 + add r6, r2, r0 + ldr r1, [sp, #0x60] + str r1, [sp, #0x24] + add r1, r6, #0 + and r1, r0 + mvn r2, r6 + and r2, r3 + orr r1, r2 + ldr r2, [sp, #0x24] + add r2, r2, r1 + ldr r1, _0221AFAC ; =0x698098D8 + add r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #7 + lsr r1, r1, #0x19 + orr r2, r1 + add r2, r2, r6 + ldr r1, [sp, #0x64] + str r1, [sp, #0x28] + add r1, r2, #0 + and r1, r6 + mvn r4, r2 + and r4, r0 + orr r1, r4 + ldr r4, [sp, #0x28] + add r4, r4, r1 + ldr r1, _0221AFB0 ; =0x74BB0851 + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xc + lsr r1, r1, #0x14 + orr r3, r1 + add r1, r3, r2 + ldr r3, [sp, #0x68] + str r3, [sp, #0x2c] + add r3, r1, #0 + and r3, r2 + mvn r4, r1 + and r4, r6 + orr r3, r4 + ldr r4, [sp, #0x2c] + add r4, r4, r3 + ldr r3, _0221AFB4 ; =0x0000A44F + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x11 + lsr r0, r0, #0xf + orr r3, r0 + add r4, r3, r1 + ldr r0, [sp, #0x6c] + str r0, [sp, #0x30] + add r0, r4, #0 + and r0, r1 + mvn r3, r4 + and r3, r2 + orr r0, r3 + ldr r3, [sp, #0x30] + add r3, r3, r0 + ldr r0, _0221AFB8 ; =0x76A32842 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x16 + lsr r0, r0, #0xa + orr r3, r0 + add r3, r3, r4 + ldr r0, [sp, #0x70] + str r0, [sp, #0x34] + add r0, r3, #0 + and r0, r4 + mvn r6, r3 + and r6, r1 + orr r0, r6 + ldr r6, [sp, #0x34] + add r6, r6, r0 + ldr r0, _0221AFBC ; =0x6B901122 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #7 + lsr r0, r0, #0x19 + orr r2, r0 + add r0, r2, r3 + ldr r2, [sp, #0x74] + str r2, [sp, #0x38] + add r2, r0, #0 + and r2, r3 + mvn r6, r0 + and r6, r4 + orr r2, r6 + ldr r6, [sp, #0x38] + add r6, r6, r2 + ldr r2, _0221AFC0 ; =0x02678E6D + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0xc + lsr r1, r1, #0x14 + orr r2, r1 + add r6, r2, r0 + mvn r2, r6 + ldr r7, [sp, #0x78] + add r1, r6, #0 + and r1, r0 + and r2, r3 + orr r1, r2 + add r2, r7, r1 + ldr r1, _0221AFC4 ; =0x5986BC72 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0x11 + lsr r1, r1, #0xf + orr r2, r1 + add r2, r2, r6 + mvn r4, r2 + ldr r1, [sp, #0x7c] + str r1, [sp, #0x3c] + add r1, r2, #0 + and r1, r6 + and r4, r0 + orr r1, r4 + ldr r4, [sp, #0x3c] + add r4, r4, r1 + ldr r1, _0221AFC8 ; =0x49B40821 + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0x16 + lsr r1, r1, #0xa + orr r3, r1 + add r1, r3, r2 + add r3, r1, #0 + and r3, r6 + add r4, r2, #0 + bic r4, r6 + orr r3, r4 + ldr r4, [sp, #8] + add r4, r4, r3 + ldr r3, _0221AFCC ; =0x09E1DA9E + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #5 + lsr r0, r0, #0x1b + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + and r0, r2 + add r3, r1, #0 + bic r3, r2 + orr r0, r3 + ldr r3, [sp, #0x1c] + add r3, r3, r0 + ldr r0, _0221AFD0 ; =0x3FBF4CC0 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #9 + lsr r0, r0, #0x17 + orr r3, r0 + add r3, r3, r4 + add r0, r3, #0 + and r0, r1 + add r6, r4, #0 + bic r6, r1 + orr r0, r6 + ldr r6, [sp, #0x30] + add r6, r6, r0 + ldr r0, _0221AFD4 ; =0x265E5A51 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0xe + lsr r0, r0, #0x12 + orr r2, r0 + add r0, r2, r3 + add r2, r0, #0 + and r2, r4 + add r6, r3, #0 + bic r6, r4 + orr r2, r6 + ldr r6, [sp, #4] + add r6, r6, r2 + ldr r2, _0221AFD8 ; =0x16493856 + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x14 + lsr r1, r1, #0xc + orr r2, r1 + add r6, r2, r0 + add r1, r6, #0 + and r1, r3 + add r2, r0, #0 + bic r2, r3 + orr r1, r2 + ldr r2, [sp, #0x18] + add r2, r2, r1 + ldr r1, _0221AFDC ; =0x29D0EFA3 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #5 + lsr r1, r1, #0x1b + orr r2, r1 + add r2, r2, r6 + add r1, r2, #0 + and r1, r0 + add r4, r6, #0 + bic r4, r0 + orr r1, r4 + ldr r4, [sp, #0x2c] + add r4, r4, r1 + ldr r1, _0221AFE0 ; =0x02441453 + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #9 + lsr r1, r1, #0x17 + orr r3, r1 + add r1, r3, r2 + add r3, r1, #0 + and r3, r6 + add r4, r2, #0 + bic r4, r6 + orr r3, r4 + ldr r4, [sp, #0x3c] + add r4, r4, r3 + ldr r3, _0221AFE4 ; =0x275E197F + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0xe + lsr r0, r0, #0x12 + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + and r0, r2 + add r3, r1, #0 + bic r3, r2 + orr r0, r3 + ldr r3, [sp, #0x14] + add r3, r3, r0 + ldr r0, _0221AFE8 ; =0x182C0438 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x14 + lsr r0, r0, #0xc + orr r3, r0 + add r3, r3, r4 + add r0, r3, #0 + and r0, r1 + add r6, r4, #0 + bic r6, r1 + orr r0, r6 + ldr r6, [sp, #0x28] + add r6, r6, r0 + ldr r0, _0221AFEC ; =0x21E1CDE6 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #5 + lsr r0, r0, #0x1b + orr r2, r0 + add r0, r2, r3 + add r6, r0, #0 + and r6, r4 + add r2, r3, #0 + bic r2, r4 + orr r6, r2 + add r6, r7, r6 + ldr r2, _0221AFF0 ; =0x3CC8F82A + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #9 + lsr r1, r1, #0x17 + orr r2, r1 + add r6, r2, r0 + add r1, r6, #0 + and r1, r3 + add r2, r0, #0 + bic r2, r3 + orr r1, r2 + ldr r2, [sp, #0x10] + add r2, r2, r1 + ldr r1, _0221AFF4 ; =0x0B2AF279 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0xe + lsr r1, r1, #0x12 + orr r2, r1 + add r2, r2, r6 + add r1, r2, #0 + and r1, r0 + add r4, r6, #0 + bic r4, r0 + orr r1, r4 + ldr r4, [sp, #0x24] + add r4, r4, r1 + ldr r1, _0221AFF8 ; =0x455A14ED + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0x14 + lsr r1, r1, #0xc + orr r3, r1 + add r1, r3, r2 + add r3, r1, #0 + and r3, r6 + add r4, r2, #0 + bic r4, r6 + orr r3, r4 + ldr r4, [sp, #0x38] + add r4, r4, r3 + ldr r3, _0221AFFC ; =0x561C16FB + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #5 + lsr r0, r0, #0x1b + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + and r0, r2 + add r3, r1, #0 + bic r3, r2 + orr r0, r3 + ldr r3, [sp, #0xc] + add r3, r3, r0 + ldr r0, _0221B000 ; =0x03105C08 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #9 + lsr r0, r0, #0x17 + orr r3, r0 + add r3, r3, r4 + add r0, r3, #0 + and r0, r1 + add r6, r4, #0 + bic r6, r1 + orr r0, r6 + ldr r6, [sp, #0x20] + add r6, r6, r0 + ldr r0, _0221B004 ; =0x676F02D9 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0xe + lsr r0, r0, #0x12 + orr r2, r0 + add r0, r2, r3 + add r2, r0, #0 + and r2, r4 + add r6, r3, #0 + bic r6, r4 + orr r2, r6 + ldr r6, [sp, #0x34] + add r6, r6, r2 + ldr r2, _0221B008 ; =0x72D5B376 + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x14 + lsr r1, r1, #0xc + orr r2, r1 + add r6, r2, r0 + add r2, r6, #0 + eor r2, r0 + add r1, r3, #0 + eor r1, r2 + ldr r2, [sp, #0x18] + add r2, r2, r1 + ldr r1, _0221B00C ; =0x0005C6BE + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #4 + lsr r1, r1, #0x1c + orr r2, r1 + add r2, r2, r6 + add r4, r2, #0 + eor r4, r6 + add r1, r0, #0 + eor r1, r4 + ldr r4, [sp, #0x24] + add r4, r4, r1 + ldr r1, _0221B010 ; =0x788E097F + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xb + lsr r1, r1, #0x15 + orr r3, r1 + add r1, r3, r2 + add r4, r1, #0 + eor r4, r2 + add r3, r6, #0 + eor r3, r4 + ldr r4, [sp, #0x30] + add r4, r4, r3 + ldr r3, _0221B014 ; =0x6D9D6122 + b _0221B018 + .align 2, 0 +_0221AF8C: .word 0x28955B88 +_0221AF90: .word 0x173848AA +_0221AF94: .word 0x242070DB +_0221AF98: .word 0x3E423112 +_0221AF9C: .word 0x0A83F051 +_0221AFA0: .word 0x4787C62A +_0221AFA4: .word 0x57CFB9ED +_0221AFA8: .word 0x02B96AFF +_0221AFAC: .word 0x698098D8 +_0221AFB0: .word 0x74BB0851 +_0221AFB4: .word 0x0000A44F +_0221AFB8: .word 0x76A32842 +_0221AFBC: .word 0x6B901122 +_0221AFC0: .word 0x02678E6D +_0221AFC4: .word 0x5986BC72 +_0221AFC8: .word 0x49B40821 +_0221AFCC: .word 0x09E1DA9E +_0221AFD0: .word 0x3FBF4CC0 +_0221AFD4: .word 0x265E5A51 +_0221AFD8: .word 0x16493856 +_0221AFDC: .word 0x29D0EFA3 +_0221AFE0: .word 0x02441453 +_0221AFE4: .word 0x275E197F +_0221AFE8: .word 0x182C0438 +_0221AFEC: .word 0x21E1CDE6 +_0221AFF0: .word 0x3CC8F82A +_0221AFF4: .word 0x0B2AF279 +_0221AFF8: .word 0x455A14ED +_0221AFFC: .word 0x561C16FB +_0221B000: .word 0x03105C08 +_0221B004: .word 0x676F02D9 +_0221B008: .word 0x72D5B376 +_0221B00C: .word 0x0005C6BE +_0221B010: .word 0x788E097F +_0221B014: .word 0x6D9D6122 +_0221B018: + add r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x10 + lsr r0, r0, #0x10 + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + eor r0, r1 + add r3, r2, #0 + eor r3, r0 + add r3, r7, r3 + ldr r0, _0221B35C ; =0x021AC7F4 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x17 + lsr r0, r0, #9 + orr r3, r0 + add r3, r3, r4 + add r6, r3, #0 + eor r6, r4 + add r0, r1, #0 + eor r0, r6 + ldr r6, [sp, #8] + add r6, r6, r0 + ldr r0, _0221B360 ; =0x5B4115BC + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #4 + lsr r0, r0, #0x1c + orr r2, r0 + add r0, r2, r3 + add r6, r0, #0 + eor r6, r3 + add r2, r4, #0 + eor r2, r6 + ldr r6, [sp, #0x14] + add r6, r6, r2 + ldr r2, _0221B364 ; =0x4BDECFA9 + add r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0xb + lsr r1, r1, #0x15 + orr r2, r1 + add r6, r2, r0 + add r2, r6, #0 + eor r2, r0 + add r1, r3, #0 + eor r1, r2 + ldr r2, [sp, #0x20] + add r2, r2, r1 + ldr r1, _0221B368 ; =0x0944B4A0 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0x10 + lsr r1, r1, #0x10 + orr r2, r1 + add r2, r2, r6 + add r4, r2, #0 + eor r4, r6 + add r1, r0, #0 + eor r1, r4 + ldr r4, [sp, #0x2c] + add r4, r4, r1 + ldr r1, _0221B36C ; =0x41404390 + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0x17 + lsr r1, r1, #9 + orr r3, r1 + add r1, r3, r2 + add r4, r1, #0 + eor r4, r2 + add r3, r6, #0 + eor r3, r4 + ldr r4, [sp, #0x38] + add r4, r4, r3 + ldr r3, _0221B370 ; =0x289B7EC6 + add r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #4 + lsr r0, r0, #0x1c + orr r3, r0 + add r4, r3, r1 + add r3, r4, #0 + eor r3, r1 + add r0, r2, #0 + eor r0, r3 + ldr r3, [sp, #4] + add r3, r3, r0 + ldr r0, _0221B374 ; =0x155ED806 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0xb + lsr r0, r0, #0x15 + orr r3, r0 + add r3, r3, r4 + add r6, r3, #0 + eor r6, r4 + add r0, r1, #0 + eor r0, r6 + ldr r6, [sp, #0x10] + add r6, r6, r0 + ldr r0, _0221B378 ; =0x2B10CF7B + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0x10 + lsr r0, r0, #0x10 + orr r2, r0 + add r0, r2, r3 + add r6, r0, #0 + eor r6, r3 + add r2, r4, #0 + eor r2, r6 + ldr r6, [sp, #0x1c] + add r6, r6, r2 + ldr r2, _0221B37C ; =0x04881D05 + add r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x17 + lsr r1, r1, #9 + orr r2, r1 + add r6, r2, r0 + add r2, r6, #0 + eor r2, r0 + add r1, r3, #0 + eor r1, r2 + ldr r2, [sp, #0x28] + add r2, r2, r1 + ldr r1, _0221B380 ; =0x262B2FC7 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #4 + lsr r1, r1, #0x1c + orr r2, r1 + add r2, r2, r6 + add r4, r2, #0 + eor r4, r6 + add r1, r0, #0 + eor r1, r4 + ldr r4, [sp, #0x34] + add r4, r4, r1 + ldr r1, _0221B384 ; =0x1924661B + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xb + lsr r1, r1, #0x15 + orr r3, r1 + add r1, r3, r2 + add r4, r1, #0 + eor r4, r2 + add r3, r6, #0 + eor r3, r4 + ldr r4, [sp, #0x3c] + add r4, r4, r3 + ldr r3, _0221B388 ; =0x1FA27CF8 + add r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x10 + lsr r0, r0, #0x10 + orr r3, r0 + add r4, r3, r1 + add r3, r4, #0 + eor r3, r1 + add r0, r2, #0 + eor r0, r3 + ldr r3, [sp, #0xc] + add r3, r3, r0 + ldr r0, _0221B38C ; =0x3B53A99B + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x17 + lsr r0, r0, #9 + orr r3, r0 + add r3, r3, r4 + mvn r6, r1 + add r0, r3, #0 + orr r0, r6 + add r6, r4, #0 + eor r6, r0 + ldr r0, [sp, #4] + add r6, r0, r6 + ldr r0, _0221B390 ; =0x0BD6DDBC + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #6 + lsr r0, r0, #0x1a + orr r2, r0 + add r0, r2, r3 + mvn r6, r4 + add r2, r0, #0 + orr r2, r6 + add r6, r3, #0 + eor r6, r2 + ldr r2, [sp, #0x20] + add r6, r2, r6 + ldr r2, _0221B394 ; =0x432AFF97 + add r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0xa + lsr r1, r1, #0x16 + orr r2, r1 + add r1, r2, r0 + mvn r2, r3 + add r6, r1, #0 + orr r6, r2 + add r2, r0, #0 + eor r2, r6 + add r6, r7, r2 + ldr r2, _0221B398 ; =0x546BDC59 + sub r2, r6, r2 + add r2, r4, r2 + lsl r4, r2, #0xf + lsr r2, r2, #0x11 + orr r4, r2 + add r2, r4, r1 + mvn r6, r0 + add r4, r2, #0 + orr r4, r6 + add r6, r1, #0 + eor r6, r4 + ldr r4, [sp, #0x18] + add r6, r4, r6 + ldr r4, _0221B39C ; =0x036C5FC7 + sub r4, r6, r4 + add r3, r3, r4 + lsl r4, r3, #0x15 + lsr r3, r3, #0xb + orr r4, r3 + add r4, r4, r2 + mvn r6, r1 + add r3, r4, #0 + orr r3, r6 + add r6, r2, #0 + eor r6, r3 + ldr r3, [sp, #0x34] + add r6, r3, r6 + ldr r3, _0221B3A0 ; =0x655B59C3 + add r3, r6, r3 + add r0, r0, r3 + lsl r3, r0, #6 + lsr r0, r0, #0x1a + orr r3, r0 + add r3, r3, r4 + mvn r6, r2 + add r0, r3, #0 + orr r0, r6 + add r6, r4, #0 + eor r6, r0 + ldr r0, [sp, #0x10] + add r6, r0, r6 + ldr r0, _0221B3A4 ; =0x70F3336E + sub r0, r6, r0 + add r0, r1, r0 + lsl r1, r0, #0xa + lsr r0, r0, #0x16 + orr r1, r0 + add r0, r1, r3 + mvn r6, r4 + add r1, r0, #0 + orr r1, r6 + add r6, r3, #0 + eor r6, r1 + ldr r1, [sp, #0x2c] + add r6, r1, r6 + ldr r1, _0221B3A8 ; =0x00100B83 + sub r1, r6, r1 + add r1, r2, r1 + lsl r2, r1, #0xf + lsr r1, r1, #0x11 + orr r2, r1 + add r6, r2, r0 + mvn r2, r3 + add r1, r6, #0 + orr r1, r2 + add r2, r0, #0 + eor r2, r1 + ldr r1, [sp, #8] + add r2, r1, r2 + ldr r1, _0221B3AC ; =0x7A7BA22F + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0x15 + lsr r1, r1, #0xb + orr r2, r1 + add r2, r2, r6 + mvn r4, r0 + add r1, r2, #0 + orr r1, r4 + add r4, r6, #0 + eor r4, r1 + ldr r1, [sp, #0x24] + add r4, r1, r4 + ldr r1, _0221B3B0 ; =0x6FA87E4F + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #6 + lsr r1, r1, #0x1a + orr r3, r1 + add r1, r3, r2 + mvn r4, r6 + add r3, r1, #0 + orr r3, r4 + add r4, r2, #0 + eor r4, r3 + ldr r3, [sp, #0x3c] + add r4, r3, r4 + ldr r3, _0221B3B4 ; =0x01D31920 + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0xa + lsr r0, r0, #0x16 + orr r3, r0 + add r4, r3, r1 + mvn r3, r2 + add r0, r4, #0 + orr r0, r3 + add r3, r1, #0 + eor r3, r0 + ldr r0, [sp, #0x1c] + add r3, r0, r3 + ldr r0, _0221B3B8 ; =0x5CFEBCEC + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0xf + lsr r0, r0, #0x11 + orr r3, r0 + add r3, r3, r4 + mvn r6, r1 + add r0, r3, #0 + orr r0, r6 + add r6, r4, #0 + eor r6, r0 + ldr r0, [sp, #0x38] + add r6, r0, r6 + ldr r0, _0221B3BC ; =0x4E0811A1 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0x15 + lsr r0, r0, #0xb + orr r2, r0 + add r0, r2, r3 + mvn r6, r4 + add r2, r0, #0 + orr r2, r6 + add r6, r3, #0 + eor r6, r2 + ldr r2, [sp, #0x14] + add r6, r2, r6 + ldr r2, _0221B3C0 ; =0x08AC817E + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #6 + lsr r1, r1, #0x1a + orr r2, r1 + add r6, r2, r0 + mvn r2, r3 + add r1, r6, #0 + orr r1, r2 + add r2, r0, #0 + eor r2, r1 + ldr r1, [sp, #0x30] + add r2, r1, r2 + ldr r1, _0221B3C4 ; =0x42C50DCB + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0xa + lsr r1, r1, #0x16 + orr r2, r1 + add r2, r2, r6 + mvn r4, r0 + add r1, r2, #0 + orr r1, r4 + add r4, r6, #0 + eor r4, r1 + ldr r1, [sp, #0xc] + add r4, r1, r4 + ldr r1, _0221B3C8 ; =0x2AD7D2BB + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xf + lsr r1, r1, #0x11 + orr r3, r1 + add r1, r3, r2 + mvn r4, r6 + add r3, r1, #0 + orr r3, r4 + add r4, r2, #0 + eor r4, r3 + ldr r3, [sp, #0x28] + add r4, r3, r4 + ldr r3, _0221B3CC ; =0x14792C6F + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x15 + lsr r0, r0, #0xb + orr r3, r0 + add r0, r3, r1 + ldr r3, [r5] + add r3, r3, r6 + str r3, [r5] + ldr r3, [r5, #4] + add r0, r3, r0 + str r0, [r5, #4] + ldr r0, [r5, #8] + add r0, r0, r1 + str r0, [r5, #8] + ldr r0, [r5, #0xc] + add r0, r0, r2 + str r0, [r5, #0xc] + add r0, sp, #0x40 + mov r1, #0 + mov r2, #0x40 + bl MOD13_0221AAE0 + add sp, #0x84 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221B35C: .word 0x021AC7F4 +_0221B360: .word 0x5B4115BC +_0221B364: .word 0x4BDECFA9 +_0221B368: .word 0x0944B4A0 +_0221B36C: .word 0x41404390 +_0221B370: .word 0x289B7EC6 +_0221B374: .word 0x155ED806 +_0221B378: .word 0x2B10CF7B +_0221B37C: .word 0x04881D05 +_0221B380: .word 0x262B2FC7 +_0221B384: .word 0x1924661B +_0221B388: .word 0x1FA27CF8 +_0221B38C: .word 0x3B53A99B +_0221B390: .word 0x0BD6DDBC +_0221B394: .word 0x432AFF97 +_0221B398: .word 0x546BDC59 +_0221B39C: .word 0x036C5FC7 +_0221B3A0: .word 0x655B59C3 +_0221B3A4: .word 0x70F3336E +_0221B3A8: .word 0x00100B83 +_0221B3AC: .word 0x7A7BA22F +_0221B3B0: .word 0x6FA87E4F +_0221B3B4: .word 0x01D31920 +_0221B3B8: .word 0x5CFEBCEC +_0221B3BC: .word 0x4E0811A1 +_0221B3C0: .word 0x08AC817E +_0221B3C4: .word 0x42C50DCB +_0221B3C8: .word 0x2AD7D2BB +_0221B3CC: .word 0x14792C6F + + thumb_func_start MOD13_0221B3D0 +MOD13_0221B3D0: ; 0x0221B3D0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + add r1, #0x10 + mov r2, #8 + bl MOD13_0221AB44 + ldr r0, [r4, #0x10] + lsr r1, r0, #3 + mov r0, #0x3f + and r1, r0 + cmp r1, #0x38 + bhs _0221B3F4 + mov r0, #0x38 + sub r2, r0, r1 + b _0221B3F8 +_0221B3F4: + mov r0, #0x78 + sub r2, r0, r1 +_0221B3F8: + add r0, r4, #0 + ldr r1, _0221B428 ; =0x0223F894 + bl MOD13_0221B42C + add r0, r4, #0 + add r1, sp, #0 + mov r2, #8 + bl MOD13_0221B42C + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x10 + bl MOD13_0221AB44 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x58 + bl MOD13_0221AAE0 + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 + nop +_0221B428: .word 0x0223F894 + + thumb_func_start MOD13_0221B42C +MOD13_0221B42C: ; 0x0221B42C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + ldr r3, [r5, #0x10] + lsr r0, r3, #3 + mov r1, #0x3f + and r0, r1 + lsl r2, r6, #3 + add r1, r3, r2 + str r1, [r5, #0x10] + ldr r1, [r5, #0x10] + cmp r1, r2 + bhs _0221B450 + ldr r1, [r5, #0x14] + add r1, r1, #1 + str r1, [r5, #0x14] +_0221B450: + ldr r2, [r5, #0x14] + lsr r1, r6, #0x1d + add r1, r2, r1 + str r1, [r5, #0x14] + mov r1, #0x40 + sub r4, r1, r0 + cmp r6, r4 + blo _0221B496 + add r1, r5, #0 + add r1, #0x18 + add r0, r1, r0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD13_0221AAF8 + add r0, r5, #0 + add r1, r5, #0 + add r1, #0x18 + bl MOD13_0221AB74 + add r0, r4, #0 + add r0, #0x3f + cmp r0, r6 + bhs _0221B492 +_0221B480: + add r0, r5, #0 + add r1, r7, r4 + bl MOD13_0221AB74 + add r4, #0x40 + add r0, r4, #0 + add r0, #0x3f + cmp r0, r6 + blo _0221B480 +_0221B492: + mov r0, #0 + b _0221B498 +_0221B496: + mov r4, #0 +_0221B498: + add r5, #0x18 + add r0, r5, r0 + add r1, r7, r4 + sub r2, r6, r4 + bl MOD13_0221AAF8 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221B4AC +MOD13_0221B4AC: ; 0x0221B4AC + mov r1, #0 + str r1, [r0, #0x14] + ldr r1, [r0, #0x14] + str r1, [r0, #0x10] + ldr r1, _0221B4C8 ; =0x67452301 + str r1, [r0] + ldr r1, _0221B4CC ; =0xEFCDAB89 + str r1, [r0, #4] + ldr r1, _0221B4D0 ; =0x98BADCFE + str r1, [r0, #8] + ldr r1, _0221B4D4 ; =0x10325476 + str r1, [r0, #0xc] + bx lr + nop +_0221B4C8: .word 0x67452301 +_0221B4CC: .word 0xEFCDAB89 +_0221B4D0: .word 0x98BADCFE +_0221B4D4: .word 0x10325476 + + thumb_func_start MOD13_0221B4D8 +MOD13_0221B4D8: ; 0x0221B4D8 + push {r4, r5, r6, r7} + sub sp, #0x60 + add r4, r1, #0 + add r1, r2, #0 + str r3, [sp] + ldr r2, [r0] + str r2, [sp, #4] + ldrb r5, [r1, #3] + ldrb r2, [r1, #2] + lsl r3, r2, #8 + ldrb r2, [r1] + lsl r2, r2, #0x18 + ldrb r6, [r1, #1] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #4] + eor r2, r5 + str r2, [sp, #4] + ldr r2, [r0, #4] + str r2, [sp, #8] + ldrb r5, [r1, #7] + ldrb r2, [r1, #6] + lsl r3, r2, #8 + ldrb r2, [r1, #4] + lsl r2, r2, #0x18 + ldrb r6, [r1, #5] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #8] + eor r2, r5 + str r2, [sp, #8] + ldr r2, [r0, #8] + str r2, [sp, #0x2c] + ldrb r5, [r1, #0xb] + ldrb r2, [r1, #0xa] + lsl r3, r2, #8 + ldrb r2, [r1, #8] + lsl r2, r2, #0x18 + ldrb r6, [r1, #9] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #0x2c] + eor r2, r5 + str r2, [sp, #0x2c] + ldr r6, [r0, #0xc] + ldrb r5, [r1, #0xf] + ldrb r2, [r1, #0xe] + lsl r3, r2, #8 + ldrb r2, [r1, #0xc] + lsl r2, r2, #0x18 + ldrb r1, [r1, #0xd] + lsl r1, r1, #0x10 + eor r2, r1 + eor r3, r2 + eor r5, r3 + eor r6, r5 + asr r1, r4, #1 + str r1, [sp, #0xc] + mov r2, #0xff +_0221B55A: + ldr r1, [r0, #0x10] + str r1, [sp, #0x10] + ldr r1, [sp, #8] + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E0 ; =0x0223C86C + ldr r5, [r1, r3] + ldr r1, [sp, #0x2c] + lsr r1, r1, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E4 ; =0x0223C46C + ldr r4, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r7, [r1, r3] + lsr r1, r6, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8EC ; =0x0223E86C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x10] + eor r1, r5 + str r1, [sp, #0x10] + ldr r1, [r0, #0x14] + str r1, [sp, #0x14] + ldr r1, [sp, #0x2c] + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E0 ; =0x0223C86C + ldr r5, [r1, r3] + lsr r1, r6, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E4 ; =0x0223C46C + ldr r4, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r7, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8EC ; =0x0223E86C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x14] + eor r1, r5 + str r1, [sp, #0x14] + ldr r5, [r0, #0x18] + add r1, r6, #0 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E0 ; =0x0223C86C + ldr r4, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E4 ; =0x0223C46C + ldr r1, [r1, r3] + str r1, [sp, #0x18] + ldr r1, [sp, #0x2c] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r7, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8EC ; =0x0223E86C + ldr r1, [r1, r3] + eor r7, r1 + ldr r1, [sp, #0x18] + eor r1, r7 + str r1, [sp, #0x18] + eor r4, r1 + eor r5, r4 + ldr r1, [r0, #0x1c] + ldr r3, [sp, #4] + and r3, r2 + str r3, [sp, #4] + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r3, [r3, r4] + str r3, [sp, #0x30] + ldr r3, [sp, #8] + lsr r3, r3, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r7, [r3, r4] + lsr r3, r6, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r6, [r3, r4] + ldr r3, [sp, #0x2c] + lsr r3, r3, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r6, r3 + eor r7, r6 + ldr r3, [sp, #0x30] + eor r3, r7 + str r3, [sp, #0x30] + eor r1, r3 + add r0, #0x20 + ldr r3, [sp, #0xc] + sub r3, r3, #1 + str r3, [sp, #0xc] + cmp r3, #0 + beq _0221B746 + ldr r3, [r0] + str r3, [sp, #4] + ldr r3, [sp, #0x14] + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r6, [r3, r4] + lsr r3, r5, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + str r3, [sp, #0x34] + ldr r3, [sp, #0x10] + lsr r3, r3, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r7, [r3, r4] + lsr r3, r1, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r7, r3 + ldr r3, [sp, #0x34] + eor r3, r7 + str r3, [sp, #0x34] + eor r6, r3 + ldr r3, [sp, #4] + eor r3, r6 + str r3, [sp, #4] + ldr r3, [r0, #4] + str r3, [sp, #8] + add r3, r5, #0 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r6, [r3, r4] + lsr r3, r1, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + str r3, [sp, #0x38] + ldr r3, [sp, #0x14] + lsr r3, r3, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r7, [r3, r4] + ldr r3, [sp, #0x10] + lsr r3, r3, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r7, r3 + ldr r3, [sp, #0x38] + eor r3, r7 + str r3, [sp, #0x38] + eor r6, r3 + ldr r3, [sp, #8] + eor r3, r6 + str r3, [sp, #8] + ldr r3, [r0, #8] + str r3, [sp, #0x2c] + add r3, r1, #0 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r6, [r3, r4] + ldr r3, [sp, #0x10] + lsr r3, r3, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + str r3, [sp, #0x1c] + lsr r3, r5, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r7, [r3, r4] + ldr r3, [sp, #0x14] + lsr r3, r3, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r7, r3 + ldr r3, [sp, #0x1c] + eor r3, r7 + str r3, [sp, #0x1c] + eor r6, r3 + ldr r3, [sp, #0x2c] + eor r3, r6 + str r3, [sp, #0x2c] + ldr r6, [r0, #0xc] + ldr r3, [sp, #0x10] + and r3, r2 + str r3, [sp, #0x10] + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r7, [r3, r4] + ldr r3, [sp, #0x14] + lsr r3, r3, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + lsr r1, r1, #0x18 + lsl r4, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r1, [r1, r4] + lsr r4, r5, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221B8EC ; =0x0223E86C + ldr r4, [r4, r5] + eor r1, r4 + eor r3, r1 + eor r7, r3 + eor r6, r7 + b _0221B55A +_0221B746: + ldr r3, [r0] + ldr r4, [sp, #0x14] + mov r2, #0xff + and r4, r2 + lsl r4, r4, #2 + ldr r2, _0221B8F0 ; =0x0223CC6C + ldr r6, [r2, r4] + str r6, [sp, #0x20] + mov r4, #0xff + and r6, r4 + str r6, [sp, #0x20] + lsr r6, r5, #8 + and r6, r4 + lsl r4, r6, #2 + ldr r7, [r2, r4] + ldr r4, _0221B8F4 ; =0x0000FF00 + and r7, r4 + ldr r4, [sp, #0x10] + lsr r4, r4, #0x18 + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x54] + ldr r6, _0221B8F8 ; =0xFF000000 + and r4, r6 + str r4, [sp, #0x54] + lsr r4, r1, #0x10 + str r4, [sp, #0x40] + mov r6, #0xff + and r4, r6 + str r4, [sp, #0x40] + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x3c] + ldr r4, _0221B8FC ; =0x00FF0000 + ldr r6, [sp, #0x3c] + and r6, r4 + str r6, [sp, #0x3c] + ldr r4, [sp, #0x54] + eor r4, r6 + str r4, [sp, #0x54] + eor r7, r4 + ldr r4, [sp, #0x20] + eor r4, r7 + str r4, [sp, #0x20] + eor r3, r4 + lsr r6, r3, #0x18 + ldr r4, [sp] + strb r6, [r4] + lsr r6, r3, #0x10 + strb r6, [r4, #1] + lsr r6, r3, #8 + strb r6, [r4, #2] + strb r3, [r4, #3] + ldr r3, [r0, #4] + add r6, r5, #0 + mov r4, #0xff + and r6, r4 + lsl r4, r6, #2 + ldr r6, [r2, r4] + str r6, [sp, #0x24] + mov r4, #0xff + and r6, r4 + str r6, [sp, #0x24] + lsr r6, r1, #8 + and r6, r4 + lsl r4, r6, #2 + ldr r7, [r2, r4] + ldr r4, _0221B8F4 ; =0x0000FF00 + and r7, r4 + ldr r4, [sp, #0x14] + lsr r4, r4, #0x18 + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x58] + ldr r6, _0221B8F8 ; =0xFF000000 + and r4, r6 + str r4, [sp, #0x58] + ldr r4, [sp, #0x10] + lsr r4, r4, #0x10 + str r4, [sp, #0x48] + mov r6, #0xff + and r4, r6 + str r4, [sp, #0x48] + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x44] + ldr r4, _0221B8FC ; =0x00FF0000 + ldr r6, [sp, #0x44] + and r6, r4 + str r6, [sp, #0x44] + ldr r4, [sp, #0x58] + eor r4, r6 + str r4, [sp, #0x58] + eor r7, r4 + ldr r4, [sp, #0x24] + eor r4, r7 + str r4, [sp, #0x24] + eor r3, r4 + lsr r6, r3, #0x18 + ldr r4, [sp] + strb r6, [r4, #4] + lsr r6, r3, #0x10 + strb r6, [r4, #5] + lsr r6, r3, #8 + strb r6, [r4, #6] + strb r3, [r4, #7] + ldr r3, [r0, #8] + add r6, r1, #0 + mov r4, #0xff + and r6, r4 + lsl r4, r6, #2 + ldr r6, [r2, r4] + str r6, [sp, #0x28] + mov r4, #0xff + and r6, r4 + str r6, [sp, #0x28] + ldr r4, [sp, #0x10] + lsr r6, r4, #8 + mov r4, #0xff + and r6, r4 + lsl r4, r6, #2 + ldr r7, [r2, r4] + ldr r4, _0221B8F4 ; =0x0000FF00 + and r7, r4 + lsr r4, r5, #0x18 + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x5c] + ldr r6, _0221B8F8 ; =0xFF000000 + and r4, r6 + str r4, [sp, #0x5c] + ldr r4, [sp, #0x14] + lsr r4, r4, #0x10 + str r4, [sp, #0x50] + mov r6, #0xff + and r4, r6 + str r4, [sp, #0x50] + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x4c] + ldr r4, _0221B8FC ; =0x00FF0000 + ldr r6, [sp, #0x4c] + and r6, r4 + str r6, [sp, #0x4c] + ldr r4, [sp, #0x5c] + eor r4, r6 + str r4, [sp, #0x5c] + eor r7, r4 + ldr r4, [sp, #0x28] + eor r4, r7 + str r4, [sp, #0x28] + eor r3, r4 + lsr r6, r3, #0x18 + ldr r4, [sp] + strb r6, [r4, #8] + lsr r6, r3, #0x10 + strb r6, [r4, #9] + lsr r6, r3, #8 + strb r6, [r4, #0xa] + strb r3, [r4, #0xb] + ldr r6, [r0, #0xc] + ldr r3, [sp, #0x10] + mov r0, #0xff + and r3, r0 + str r3, [sp, #0x10] + lsl r0, r3, #2 + ldr r4, [r2, r0] + mov r0, #0xff + and r4, r0 + ldr r0, [sp, #0x14] + lsr r3, r0, #8 + mov r0, #0xff + and r3, r0 + lsl r0, r3, #2 + ldr r3, [r2, r0] + ldr r0, _0221B8F4 ; =0x0000FF00 + and r3, r0 + lsr r0, r1, #0x18 + lsl r0, r0, #2 + ldr r0, [r2, r0] + ldr r1, _0221B8F8 ; =0xFF000000 + and r0, r1 + lsr r5, r5, #0x10 + mov r1, #0xff + and r5, r1 + lsl r1, r5, #2 + ldr r2, [r2, r1] + ldr r1, _0221B8FC ; =0x00FF0000 + and r2, r1 + eor r0, r2 + eor r3, r0 + eor r4, r3 + eor r6, r4 + lsr r1, r6, #0x18 + ldr r0, [sp] + strb r1, [r0, #0xc] + lsr r1, r6, #0x10 + strb r1, [r0, #0xd] + lsr r1, r6, #8 + strb r1, [r0, #0xe] + strb r6, [r0, #0xf] + add sp, #0x60 + pop {r4, r5, r6, r7} + bx lr + nop +_0221B8E0: .word 0x0223C86C +_0221B8E4: .word 0x0223C46C +_0221B8E8: .word 0x0223E46C +_0221B8EC: .word 0x0223E86C +_0221B8F0: .word 0x0223CC6C +_0221B8F4: .word 0x0000FF00 +_0221B8F8: .word 0xFF000000 +_0221B8FC: .word 0x00FF0000 + + thumb_func_start MOD13_0221B900 +MOD13_0221B900: ; 0x0221B900 + push {r4, r5, r6, r7} + sub sp, #0x60 + add r4, r1, #0 + add r1, r2, #0 + str r3, [sp] + ldr r2, [r0] + str r2, [sp, #4] + ldrb r5, [r1, #3] + ldrb r2, [r1, #2] + lsl r3, r2, #8 + ldrb r2, [r1] + lsl r2, r2, #0x18 + ldrb r6, [r1, #1] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #4] + eor r2, r5 + str r2, [sp, #4] + ldr r2, [r0, #4] + str r2, [sp, #8] + ldrb r5, [r1, #7] + ldrb r2, [r1, #6] + lsl r3, r2, #8 + ldrb r2, [r1, #4] + lsl r2, r2, #0x18 + ldrb r6, [r1, #5] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #8] + eor r2, r5 + str r2, [sp, #8] + ldr r2, [r0, #8] + str r2, [sp, #0x2c] + ldrb r5, [r1, #0xb] + ldrb r2, [r1, #0xa] + lsl r3, r2, #8 + ldrb r2, [r1, #8] + lsl r2, r2, #0x18 + ldrb r6, [r1, #9] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #0x2c] + eor r2, r5 + str r2, [sp, #0x2c] + ldr r6, [r0, #0xc] + ldrb r5, [r1, #0xf] + ldrb r2, [r1, #0xe] + lsl r3, r2, #8 + ldrb r2, [r1, #0xc] + lsl r2, r2, #0x18 + ldrb r1, [r1, #0xd] + lsl r1, r1, #0x10 + eor r2, r1 + eor r3, r2 + eor r5, r3 + eor r6, r5 + asr r1, r4, #1 + str r1, [sp, #0xc] + mov r2, #0xff +_0221B982: + ldr r1, [r0, #0x10] + str r1, [sp, #0x10] + add r1, r6, #0 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD00 ; =0x0223DC6C + ldr r5, [r1, r3] + ldr r1, [sp, #0x2c] + lsr r1, r1, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD04 ; =0x0223D86C + ldr r4, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221BD08 ; =0x0223D06C + ldr r7, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD0C ; =0x0223D46C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x10] + eor r1, r5 + str r1, [sp, #0x10] + ldr r1, [r0, #0x14] + str r1, [sp, #0x14] + ldr r1, [sp, #4] + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD00 ; =0x0223DC6C + ldr r5, [r1, r3] + lsr r1, r6, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD04 ; =0x0223D86C + ldr r4, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221BD08 ; =0x0223D06C + ldr r7, [r1, r3] + ldr r1, [sp, #0x2c] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD0C ; =0x0223D46C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x14] + eor r1, r5 + str r1, [sp, #0x14] + ldr r3, [r0, #0x18] + ldr r1, [sp, #8] + and r1, r2 + lsl r4, r1, #2 + ldr r1, _0221BD00 ; =0x0223DC6C + ldr r1, [r1, r4] + ldr r4, [sp, #4] + lsr r4, r4, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r7, [r4, r5] + ldr r4, [sp, #0x2c] + lsr r4, r4, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r4, [r4, r5] + str r4, [sp, #0x18] + lsr r4, r6, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r5, [r4, r5] + ldr r4, [sp, #0x18] + eor r4, r5 + str r4, [sp, #0x18] + eor r7, r4 + eor r1, r7 + eor r3, r1 + ldr r1, [r0, #0x1c] + ldr r4, [sp, #0x2c] + and r4, r2 + str r4, [sp, #0x2c] + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r4, [r4, r5] + str r4, [sp, #0x30] + ldr r4, [sp, #8] + lsr r4, r4, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r7, [r4, r5] + lsr r4, r6, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r6, [r4, r5] + ldr r4, [sp, #4] + lsr r4, r4, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r4, [r4, r5] + eor r6, r4 + eor r7, r6 + ldr r4, [sp, #0x30] + eor r4, r7 + str r4, [sp, #0x30] + eor r1, r4 + add r0, #0x20 + ldr r4, [sp, #0xc] + sub r4, r4, #1 + str r4, [sp, #0xc] + cmp r4, #0 + beq _0221BB6A + ldr r4, [r0] + str r4, [sp, #4] + add r4, r1, #0 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r6, [r4, r5] + lsr r4, r3, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r4, [r4, r5] + str r4, [sp, #0x34] + ldr r4, [sp, #0x10] + lsr r4, r4, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r7, [r4, r5] + ldr r4, [sp, #0x14] + lsr r4, r4, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r4, [r4, r5] + eor r7, r4 + ldr r4, [sp, #0x34] + eor r4, r7 + str r4, [sp, #0x34] + eor r6, r4 + ldr r4, [sp, #4] + eor r4, r6 + str r4, [sp, #4] + ldr r4, [r0, #4] + str r4, [sp, #8] + ldr r4, [sp, #0x10] + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r6, [r4, r5] + lsr r4, r1, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r4, [r4, r5] + str r4, [sp, #0x38] + ldr r4, [sp, #0x14] + lsr r4, r4, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r7, [r4, r5] + lsr r4, r3, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r4, [r4, r5] + eor r7, r4 + ldr r4, [sp, #0x38] + eor r4, r7 + str r4, [sp, #0x38] + eor r6, r4 + ldr r4, [sp, #8] + eor r4, r6 + str r4, [sp, #8] + ldr r4, [r0, #8] + str r4, [sp, #0x2c] + ldr r4, [sp, #0x14] + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r4, [r4, r5] + ldr r5, [sp, #0x10] + lsr r5, r5, #8 + and r5, r2 + lsl r6, r5, #2 + ldr r5, _0221BD04 ; =0x0223D86C + ldr r7, [r5, r6] + lsr r5, r3, #0x18 + lsl r6, r5, #2 + ldr r5, _0221BD08 ; =0x0223D06C + ldr r5, [r5, r6] + str r5, [sp, #0x1c] + lsr r5, r1, #0x10 + and r5, r2 + lsl r6, r5, #2 + ldr r5, _0221BD0C ; =0x0223D46C + ldr r6, [r5, r6] + ldr r5, [sp, #0x1c] + eor r5, r6 + str r5, [sp, #0x1c] + eor r7, r5 + eor r4, r7 + ldr r5, [sp, #0x2c] + eor r5, r4 + str r5, [sp, #0x2c] + ldr r6, [r0, #0xc] + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221BD00 ; =0x0223DC6C + ldr r3, [r3, r4] + ldr r4, [sp, #0x14] + lsr r4, r4, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r7, [r4, r5] + lsr r1, r1, #0x18 + lsl r4, r1, #2 + ldr r1, _0221BD08 ; =0x0223D06C + ldr r5, [r1, r4] + ldr r1, [sp, #0x10] + lsr r1, r1, #0x10 + and r1, r2 + lsl r4, r1, #2 + ldr r1, _0221BD0C ; =0x0223D46C + ldr r1, [r1, r4] + eor r5, r1 + eor r7, r5 + eor r3, r7 + eor r6, r3 + b _0221B982 +_0221BB6A: + ldr r4, [r0] + add r5, r1, #0 + mov r2, #0xff + and r5, r2 + lsl r5, r5, #2 + ldr r2, _0221BD10 ; =0x0223E06C + ldr r6, [r2, r5] + str r6, [sp, #0x20] + mov r5, #0xff + and r6, r5 + str r6, [sp, #0x20] + lsr r6, r3, #8 + and r6, r5 + lsl r5, r6, #2 + ldr r7, [r2, r5] + ldr r5, _0221BD14 ; =0x0000FF00 + and r7, r5 + ldr r5, [sp, #0x10] + lsr r5, r5, #0x18 + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x54] + ldr r6, _0221BD18 ; =0xFF000000 + and r5, r6 + str r5, [sp, #0x54] + ldr r5, [sp, #0x14] + lsr r5, r5, #0x10 + str r5, [sp, #0x40] + mov r6, #0xff + and r5, r6 + str r5, [sp, #0x40] + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x3c] + ldr r5, _0221BD1C ; =0x00FF0000 + ldr r6, [sp, #0x3c] + and r6, r5 + str r6, [sp, #0x3c] + ldr r5, [sp, #0x54] + eor r5, r6 + str r5, [sp, #0x54] + eor r7, r5 + ldr r5, [sp, #0x20] + eor r5, r7 + str r5, [sp, #0x20] + eor r4, r5 + lsr r6, r4, #0x18 + ldr r5, [sp] + strb r6, [r5] + lsr r6, r4, #0x10 + strb r6, [r5, #1] + lsr r6, r4, #8 + strb r6, [r5, #2] + strb r4, [r5, #3] + ldr r4, [r0, #4] + ldr r6, [sp, #0x10] + mov r5, #0xff + and r6, r5 + lsl r5, r6, #2 + ldr r6, [r2, r5] + str r6, [sp, #0x24] + mov r5, #0xff + and r6, r5 + str r6, [sp, #0x24] + lsr r6, r1, #8 + and r6, r5 + lsl r5, r6, #2 + ldr r7, [r2, r5] + ldr r5, _0221BD14 ; =0x0000FF00 + and r7, r5 + ldr r5, [sp, #0x14] + lsr r5, r5, #0x18 + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x58] + ldr r6, _0221BD18 ; =0xFF000000 + and r5, r6 + str r5, [sp, #0x58] + lsr r5, r3, #0x10 + str r5, [sp, #0x48] + mov r6, #0xff + and r5, r6 + str r5, [sp, #0x48] + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x44] + ldr r5, _0221BD1C ; =0x00FF0000 + ldr r6, [sp, #0x44] + and r6, r5 + str r6, [sp, #0x44] + ldr r5, [sp, #0x58] + eor r5, r6 + str r5, [sp, #0x58] + eor r7, r5 + ldr r5, [sp, #0x24] + eor r5, r7 + str r5, [sp, #0x24] + eor r4, r5 + lsr r6, r4, #0x18 + ldr r5, [sp] + strb r6, [r5, #4] + lsr r6, r4, #0x10 + strb r6, [r5, #5] + lsr r6, r4, #8 + strb r6, [r5, #6] + strb r4, [r5, #7] + ldr r4, [r0, #8] + ldr r6, [sp, #0x14] + mov r5, #0xff + and r6, r5 + lsl r5, r6, #2 + ldr r6, [r2, r5] + str r6, [sp, #0x28] + mov r5, #0xff + and r6, r5 + str r6, [sp, #0x28] + ldr r5, [sp, #0x10] + lsr r6, r5, #8 + mov r5, #0xff + and r6, r5 + lsl r5, r6, #2 + ldr r7, [r2, r5] + ldr r5, _0221BD14 ; =0x0000FF00 + and r7, r5 + lsr r5, r3, #0x18 + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x5c] + ldr r6, _0221BD18 ; =0xFF000000 + and r5, r6 + str r5, [sp, #0x5c] + lsr r5, r1, #0x10 + str r5, [sp, #0x50] + mov r6, #0xff + and r5, r6 + str r5, [sp, #0x50] + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x4c] + ldr r5, _0221BD1C ; =0x00FF0000 + ldr r6, [sp, #0x4c] + and r6, r5 + str r6, [sp, #0x4c] + ldr r5, [sp, #0x5c] + eor r5, r6 + str r5, [sp, #0x5c] + eor r7, r5 + ldr r5, [sp, #0x28] + eor r5, r7 + str r5, [sp, #0x28] + eor r4, r5 + lsr r6, r4, #0x18 + ldr r5, [sp] + strb r6, [r5, #8] + lsr r6, r4, #0x10 + strb r6, [r5, #9] + lsr r6, r4, #8 + strb r6, [r5, #0xa] + strb r4, [r5, #0xb] + ldr r5, [r0, #0xc] + mov r0, #0xff + and r3, r0 + lsl r0, r3, #2 + ldr r4, [r2, r0] + mov r0, #0xff + and r4, r0 + ldr r0, [sp, #0x14] + lsr r3, r0, #8 + mov r0, #0xff + and r3, r0 + lsl r0, r3, #2 + ldr r3, [r2, r0] + ldr r0, _0221BD14 ; =0x0000FF00 + and r3, r0 + lsr r0, r1, #0x18 + lsl r0, r0, #2 + ldr r0, [r2, r0] + ldr r1, _0221BD18 ; =0xFF000000 + and r0, r1 + ldr r1, [sp, #0x10] + lsr r6, r1, #0x10 + mov r1, #0xff + and r6, r1 + lsl r1, r6, #2 + ldr r2, [r2, r1] + ldr r1, _0221BD1C ; =0x00FF0000 + and r2, r1 + eor r0, r2 + eor r3, r0 + eor r4, r3 + eor r5, r4 + lsr r1, r5, #0x18 + ldr r0, [sp] + strb r1, [r0, #0xc] + lsr r1, r5, #0x10 + strb r1, [r0, #0xd] + lsr r1, r5, #8 + strb r1, [r0, #0xe] + strb r5, [r0, #0xf] + add sp, #0x60 + pop {r4, r5, r6, r7} + bx lr + nop +_0221BD00: .word 0x0223DC6C +_0221BD04: .word 0x0223D86C +_0221BD08: .word 0x0223D06C +_0221BD0C: .word 0x0223D46C +_0221BD10: .word 0x0223E06C +_0221BD14: .word 0x0000FF00 +_0221BD18: .word 0xFF000000 +_0221BD1C: .word 0x00FF0000 + + thumb_func_start MOD13_0221BD20 +MOD13_0221BD20: ; 0x0221BD20 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD13_0221BEE4 + str r0, [sp] + mov r6, #0 + lsl r5, r0, #2 + cmp r5, #0 + ble _0221BD84 + str r4, [sp, #4] + lsl r0, r5, #2 + add r3, r4, r0 +_0221BD3A: + ldr r0, [sp, #4] + ldr r2, [r0] + ldr r1, [r3] + str r1, [r0] + str r2, [r3] + add r0, r6, #1 + lsl r2, r0, #2 + ldr r1, [r4, r2] + add r0, r5, #1 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r0, [r4, r2] + str r1, [r4, r7] + add r0, r6, #2 + lsl r2, r0, #2 + ldr r1, [r4, r2] + add r0, r5, #2 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r0, [r4, r2] + str r1, [r4, r7] + add r0, r6, #3 + lsl r2, r0, #2 + ldr r1, [r4, r2] + add r0, r5, #3 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r0, [r4, r2] + str r1, [r4, r7] + ldr r0, [sp, #4] + add r0, #0x10 + str r0, [sp, #4] + add r6, r6, #4 + sub r3, #0x10 + sub r5, r5, #4 + cmp r6, r5 + blt _0221BD3A +_0221BD84: + mov r0, #1 + str r0, [sp, #8] + ldr r0, [sp] + cmp r0, #1 + bgt _0221BD90 + b _0221BEC4 +_0221BD90: + ldr r2, _0221BED0 ; =0x0223E06C + mov r0, #0xff +_0221BD94: + add r4, #0x10 + ldr r5, [r4] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4] + ldr r5, [r4, #4] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4, #4] + ldr r5, [r4, #8] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4, #8] + ldr r5, [r4, #0xc] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4, #0xc] + ldr r1, [sp, #8] + add r3, r1, #1 + str r3, [sp, #8] + ldr r1, [sp] + cmp r3, r1 + bge _0221BEC4 + b _0221BD94 +_0221BEC4: + ldr r0, [sp] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221BED0: .word 0x0223E06C +_0221BED4: .word 0x0223C86C +_0221BED8: .word 0x0223C46C +_0221BEDC: .word 0x0223E46C +_0221BEE0: .word 0x0223E86C + + thumb_func_start MOD13_0221BEE4 +MOD13_0221BEE4: ; 0x0221BEE4 + push {r4, r5, r6, r7} + sub sp, #0x20 + add r3, r1, #0 + add r1, r2, #0 + mov r2, #0 + str r2, [sp] + ldrb r5, [r3, #3] + ldrb r2, [r3, #2] + lsl r4, r2, #8 + ldrb r2, [r3] + lsl r2, r2, #0x18 + ldrb r6, [r3, #1] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0] + ldrb r5, [r3, #7] + ldrb r2, [r3, #6] + lsl r4, r2, #8 + ldrb r2, [r3, #4] + lsl r2, r2, #0x18 + ldrb r6, [r3, #5] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #4] + ldrb r5, [r3, #0xb] + ldrb r2, [r3, #0xa] + lsl r4, r2, #8 + ldrb r2, [r3, #8] + lsl r2, r2, #0x18 + ldrb r6, [r3, #9] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #8] + ldrb r5, [r3, #0xf] + ldrb r2, [r3, #0xe] + lsl r4, r2, #8 + ldrb r2, [r3, #0xc] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0xd] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0xc] + cmp r1, #0x80 + bne _0221BFD0 + ldr r6, _0221C1B4 ; =0x0223C444 +_0221BF4E: + ldr r5, [r0, #0xc] + ldr r1, [r6] + str r1, [sp, #0xc] + lsr r1, r5, #0x18 + lsl r2, r1, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r4, [r1, r2] + mov r1, #0xff + and r4, r1 + add r2, r5, #0 + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r7, [r1, r2] + ldr r1, _0221C1BC ; =0x0000FF00 + and r7, r1 + ldr r3, [r0] + lsr r2, r5, #0x10 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C0 ; =0xFF000000 + and r2, r1 + eor r3, r2 + lsr r2, r5, #8 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r7, r3 + eor r4, r7 + ldr r1, [sp, #0xc] + eor r1, r4 + str r1, [sp, #0xc] + str r1, [r0, #0x10] + ldr r2, [r0, #4] + ldr r1, [r0, #0x10] + eor r2, r1 + str r2, [r0, #0x14] + ldr r2, [r0, #8] + ldr r1, [r0, #0x14] + eor r2, r1 + str r2, [r0, #0x18] + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x18] + eor r2, r1 + str r2, [r0, #0x1c] + add r6, r6, #4 + ldr r1, [sp] + add r1, r1, #1 + str r1, [sp] + cmp r1, #0xa + blt _0221BFCC + mov r0, #0xa + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr +_0221BFCC: + add r0, #0x10 + b _0221BF4E +_0221BFD0: + ldrb r5, [r3, #0x13] + ldrb r2, [r3, #0x12] + lsl r4, r2, #8 + ldrb r2, [r3, #0x10] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0x11] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x10] + ldrb r5, [r3, #0x17] + ldrb r2, [r3, #0x16] + lsl r4, r2, #8 + ldrb r2, [r3, #0x14] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0x15] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x14] + cmp r1, #0xc0 + bne _0221C094 + ldr r6, _0221C1B4 ; =0x0223C444 +_0221C002: + ldr r5, [r0, #0x14] + ldr r1, [r6] + str r1, [sp, #0x10] + lsr r1, r5, #0x18 + lsl r2, r1, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r4, [r1, r2] + mov r1, #0xff + and r4, r1 + add r2, r5, #0 + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r7, [r1, r2] + ldr r1, _0221C1BC ; =0x0000FF00 + and r7, r1 + ldr r3, [r0] + lsr r2, r5, #0x10 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C0 ; =0xFF000000 + and r2, r1 + eor r3, r2 + lsr r2, r5, #8 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r7, r3 + eor r4, r7 + ldr r1, [sp, #0x10] + eor r1, r4 + str r1, [sp, #0x10] + str r1, [r0, #0x18] + ldr r2, [r0, #4] + ldr r1, [r0, #0x18] + eor r2, r1 + str r2, [r0, #0x1c] + ldr r2, [r0, #8] + ldr r1, [r0, #0x1c] + eor r2, r1 + str r2, [r0, #0x20] + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x20] + eor r2, r1 + str r2, [r0, #0x24] + add r6, r6, #4 + ldr r1, [sp] + add r1, r1, #1 + str r1, [sp] + cmp r1, #8 + blt _0221C080 + mov r0, #0xc + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr +_0221C080: + ldr r2, [r0, #0x10] + ldr r1, [r0, #0x24] + eor r2, r1 + str r2, [r0, #0x28] + ldr r2, [r0, #0x14] + ldr r1, [r0, #0x28] + eor r2, r1 + str r2, [r0, #0x2c] + add r0, #0x18 + b _0221C002 +_0221C094: + ldrb r5, [r3, #0x1b] + ldrb r2, [r3, #0x1a] + lsl r4, r2, #8 + ldrb r2, [r3, #0x18] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0x19] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x18] + ldrb r5, [r3, #0x1f] + ldrb r2, [r3, #0x1e] + lsl r4, r2, #8 + ldrb r2, [r3, #0x1c] + lsl r2, r2, #0x18 + ldrb r3, [r3, #0x1d] + lsl r3, r3, #0x10 + eor r2, r3 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x1c] + ldr r2, _0221C1C8 ; =0x00000100 + cmp r1, r2 + bne _0221C1AC + ldr r1, _0221C1B4 ; =0x0223C444 + str r1, [sp, #4] + ldr r7, _0221C1B8 ; =0x0223E06C +_0221C0CC: + ldr r6, [r0, #0x1c] + ldr r1, [sp, #4] + ldr r1, [r1] + str r1, [sp, #8] + lsr r1, r6, #0x18 + lsl r1, r1, #2 + ldr r5, [r7, r1] + mov r1, #0xff + and r5, r1 + add r2, r6, #0 + and r2, r1 + lsl r1, r2, #2 + ldr r4, [r7, r1] + ldr r1, _0221C1BC ; =0x0000FF00 + and r4, r1 + ldr r3, [r0] + lsr r2, r6, #0x10 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r1, [r7, r1] + str r1, [sp, #0x14] + ldr r2, _0221C1C0 ; =0xFF000000 + and r1, r2 + str r1, [sp, #0x14] + eor r3, r1 + lsr r2, r6, #8 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r2, [r7, r1] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r4, r3 + eor r5, r4 + ldr r1, [sp, #8] + eor r1, r5 + str r1, [sp, #8] + str r1, [r0, #0x20] + ldr r2, [r0, #4] + ldr r1, [r0, #0x20] + eor r2, r1 + str r2, [r0, #0x24] + ldr r2, [r0, #8] + ldr r1, [r0, #0x24] + eor r2, r1 + str r2, [r0, #0x28] + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x28] + eor r2, r1 + str r2, [r0, #0x2c] + ldr r1, [sp, #4] + add r1, r1, #4 + str r1, [sp, #4] + ldr r1, [sp] + add r1, r1, #1 + str r1, [sp] + cmp r1, #7 + blt _0221C14C + mov r0, #0xe + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr +_0221C14C: + ldr r6, [r0, #0x2c] + add r2, r6, #0 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r5, [r7, r1] + mov r1, #0xff + and r5, r1 + lsr r2, r6, #8 + and r2, r1 + lsl r1, r2, #2 + ldr r4, [r7, r1] + ldr r1, _0221C1BC ; =0x0000FF00 + and r4, r1 + ldr r3, [r0, #0x10] + lsr r1, r6, #0x18 + lsl r1, r1, #2 + ldr r1, [r7, r1] + str r1, [sp, #0x18] + ldr r2, _0221C1C0 ; =0xFF000000 + and r1, r2 + str r1, [sp, #0x18] + eor r3, r1 + lsr r2, r6, #0x10 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r2, [r7, r1] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r4, r3 + eor r5, r4 + str r5, [r0, #0x30] + ldr r2, [r0, #0x14] + ldr r1, [r0, #0x30] + eor r2, r1 + str r2, [r0, #0x34] + ldr r2, [r0, #0x18] + ldr r1, [r0, #0x34] + eor r2, r1 + str r2, [r0, #0x38] + ldr r2, [r0, #0x1c] + ldr r1, [r0, #0x38] + eor r2, r1 + str r2, [r0, #0x3c] + add r0, #0x20 + b _0221C0CC +_0221C1AC: + ldr r0, [sp] + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_0221C1B4: .word 0x0223C444 +_0221C1B8: .word 0x0223E06C +_0221C1BC: .word 0x0000FF00 +_0221C1C0: .word 0xFF000000 +_0221C1C4: .word 0x00FF0000 +_0221C1C8: .word 0x00000100 + + thumb_func_start MOD13_0221C1CC +MOD13_0221C1CC: ; 0x0221C1CC + push {r4} + sub sp, #4 + ldrb r4, [r0] + ldrb r3, [r1] + eor r4, r3 + strb r4, [r2] + ldrb r4, [r0, #1] + ldrb r3, [r1, #1] + eor r4, r3 + strb r4, [r2, #1] + ldrb r4, [r0, #2] + ldrb r3, [r1, #2] + eor r4, r3 + strb r4, [r2, #2] + ldrb r4, [r0, #3] + ldrb r3, [r1, #3] + eor r4, r3 + strb r4, [r2, #3] + ldrb r4, [r0, #4] + ldrb r3, [r1, #4] + eor r4, r3 + strb r4, [r2, #4] + ldrb r4, [r0, #5] + ldrb r3, [r1, #5] + eor r4, r3 + strb r4, [r2, #5] + ldrb r4, [r0, #6] + ldrb r3, [r1, #6] + eor r4, r3 + strb r4, [r2, #6] + ldrb r3, [r0, #7] + ldrb r0, [r1, #7] + eor r3, r0 + strb r3, [r2, #7] + add sp, #4 + pop {r4} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221C218 +MOD13_0221C218: ; 0x0221C218 + push {r4, r5, r6, r7, lr} + sub sp, #0x1b4 + str r0, [sp] + add r5, r1, #0 + add r4, r2, #0 + mov r0, #1 + str r0, [sp, #0x1c] + ldr r0, _0221C3FC ; =0xA6A6A6A6 + str r0, [sp, #0x58] + str r0, [sp, #0x5c] + mov r0, #7 + add r1, r4, #0 + and r1, r0 + cmp r1, #0 + bne _0221C240 + ldr r2, [sp, #0x1c8] + add r1, r2, #0 + and r1, r0 + cmp r1, #0 + beq _0221C24A +_0221C240: + mov r0, #0 + add sp, #0x1b4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C24A: + sub r0, r4, #1 + lsr r0, r0, #3 + str r0, [sp, #0x14] + cmp r0, #2 + bge _0221C25E + mov r0, #0 + add sp, #0x1b4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C25E: + add r0, sp, #0x70 + add r1, r3, #0 + lsl r2, r2, #3 + bl MOD13_0221BD20 + str r0, [sp, #0x18] + add r3, sp, #0x60 + add r2, r5, #0 + mov r1, #8 +_0221C270: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r3] + add r3, r3, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C270 + ldr r0, [sp] + add r5, #8 + add r1, r5, #0 + sub r2, r4, #1 + bl memcpy + mov r0, #5 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + asr r0, r0, #0x1f + str r0, [sp, #0x24] +_0221C294: + ldr r0, [sp, #0x14] + str r0, [sp, #0xc] + cmp r0, #0 + bgt _0221C29E + b _0221C3D4 +_0221C29E: + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x10] + asr r3, r2, #0x1f + bl _ll_mul + str r0, [sp, #0x28] + str r1, [sp, #8] +_0221C2AC: + ldr r0, [sp, #0xc] + asr r1, r0, #0x1f + lsl r2, r0, #0 + ldr r0, [sp, #0x28] + add r6, r2, r0 + ldr r0, [sp, #8] + adc r1, r0 + add r2, r1, #0 + ldr r0, _0221C400 ; =0xFF000000 + and r2, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x30] + add r2, r1, #0 + ldr r0, _0221C404 ; =0x00FF0000 + and r2, r0 + lsr r0, r2, #8 + str r0, [sp, #0x48] + add r2, r1, #0 + ldr r0, _0221C408 ; =0x0000FF00 + and r2, r0 + add r3, r6, #0 + mov r0, #0 + and r3, r0 + lsl r0, r2, #8 + lsr r5, r3, #0x18 + orr r5, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x34] + add r0, r1, #0 + mov r2, #0xff + and r0, r2 + add r3, r6, #0 + mov r2, #0 + and r3, r2 + lsl r2, r0, #0x18 + lsr r4, r3, #8 + orr r4, r2 + lsr r0, r0, #8 + str r0, [sp, #0x38] + add r3, r1, #0 + mov r0, #0 + and r3, r0 + add r0, r6, #0 + ldr r2, _0221C400 ; =0xFF000000 + and r0, r2 + lsr r2, r0, #0x18 + lsl r3, r3, #8 + orr r3, r2 + lsl r0, r0, #8 + str r0, [sp, #0x4c] + mov r0, #0 + and r1, r0 + add r0, r6, #0 + ldr r2, _0221C404 ; =0x00FF0000 + and r0, r2 + lsr r2, r0, #8 + str r2, [sp, #0x44] + lsl r2, r1, #0x18 + ldr r1, [sp, #0x44] + orr r2, r1 + lsl r7, r0, #0x18 + add r1, r6, #0 + str r1, [sp, #0x40] + mov r0, #0xff + and r1, r0 + str r1, [sp, #0x40] + lsl r0, r1, #0x18 + str r0, [sp, #0x3c] + ldr r0, _0221C408 ; =0x0000FF00 + and r6, r0 + lsl r1, r6, #8 + ldr r0, [sp, #0x3c] + orr r0, r1 + str r0, [sp, #0x3c] + mov r0, #0 + lsl r1, r0, #0 + orr r0, r1 + ldr r1, [sp, #0x3c] + orr r2, r1 + orr r7, r0 + orr r3, r2 + ldr r0, [sp, #0x4c] + orr r0, r7 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x38] + orr r0, r3 + str r0, [sp, #0x38] + ldr r0, [sp, #0x4c] + orr r4, r0 + ldr r1, [sp, #0x34] + ldr r0, [sp, #0x38] + orr r1, r0 + str r1, [sp, #0x34] + orr r5, r4 + mov r1, #0 + ldr r0, [sp, #0x34] + orr r1, r0 + ldr r0, [sp, #0x48] + orr r0, r5 + str r0, [sp, #0x48] + mov r2, #0 + orr r2, r1 + ldr r1, [sp, #0x30] + orr r1, r0 + str r1, [sp, #0x30] + str r1, [sp, #0x50] + str r2, [sp, #0x54] + add r0, sp, #0x60 + add r1, sp, #0x50 + lsl r2, r0, #0 + bl MOD13_0221C1CC + ldr r0, [sp, #0xc] + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, [sp] + add r4, r0, r1 + add r3, r4, #0 + add r2, sp, #0x68 + mov r1, #8 +_0221C39C: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C39C + add r0, sp, #0x70 + ldr r1, [sp, #0x18] + add r2, sp, #0x60 + lsl r3, r2, #0 + bl MOD13_0221B4D8 + add r2, sp, #0x68 + mov r1, #8 +_0221C3BA: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C3BA + ldr r0, [sp, #0xc] + sub r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0 + ble _0221C3D4 + b _0221C2AC +_0221C3D4: + ldr r0, [sp, #0x10] + sub r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #0 + blt _0221C3E0 + b _0221C294 +_0221C3E0: + add r0, sp, #0x58 + add r1, sp, #0x60 + mov r2, #8 + bl memcmp + cmp r0, #0 + beq _0221C3F2 + mov r0, #0 + str r0, [sp, #0x1c] +_0221C3F2: + ldr r0, [sp, #0x1c] + add sp, #0x1b4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221C3FC: .word 0xA6A6A6A6 +_0221C400: .word 0xFF000000 +_0221C404: .word 0x00FF0000 +_0221C408: .word 0x0000FF00 + + thumb_func_start MOD13_0221C40C +MOD13_0221C40C: ; 0x0221C40C + push {r4, r5, r6, r7, lr} + sub sp, #0x1d4 + str r0, [sp] + add r5, r1, #0 + add r4, r2, #0 + ldr r0, _0221C608 ; =0xA6A6A6A6 + str r0, [sp, #0x78] + str r0, [sp, #0x7c] + mov r0, #7 + add r1, r4, #0 + and r1, r0 + cmp r1, #0 + bne _0221C430 + ldr r2, [sp, #0x1e8] + add r1, r2, #0 + and r1, r0 + cmp r1, #0 + beq _0221C43A +_0221C430: + mov r0, #0 + add sp, #0x1d4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C43A: + lsr r0, r4, #3 + str r0, [sp, #0x14] + cmp r0, #2 + bge _0221C44C + mov r0, #0 + add sp, #0x1d4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C44C: + add r0, sp, #0x90 + add r1, r3, #0 + lsl r2, r2, #3 + bl MOD13_0221BEE4 + str r0, [sp, #0x18] + ldr r0, [sp] + add r0, #8 + add r1, r5, #0 + add r2, r4, #0 + bl memcpy + add r3, sp, #0x80 + add r2, sp, #0x78 + mov r1, #8 +_0221C46A: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r3] + add r3, r3, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C46A + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + asr r0, r0, #0x1f + str r0, [sp, #0x20] + ldr r0, [sp, #0x10] + str r0, [sp, #0x34] + str r0, [sp, #0x38] + str r0, [sp, #0x64] + str r0, [sp, #0x60] + str r0, [sp, #0x5c] + str r0, [sp, #0x58] + str r0, [sp, #0x48] + str r0, [sp, #0x50] +_0221C494: + mov r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r0, #1 + bge _0221C4A0 + b _0221C5DA +_0221C4A0: + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x10] + asr r3, r2, #0x1f + bl _ll_mul + str r0, [sp, #0x24] + str r1, [sp, #8] +_0221C4AE: + ldr r0, [sp, #0xc] + lsl r1, r0, #3 + ldr r0, [sp] + add r3, r0, r1 + str r3, [sp, #0x2c] + add r2, sp, #0x88 + mov r1, #8 +_0221C4BC: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C4BC + add r0, sp, #0x90 + ldr r1, [sp, #0x18] + add r2, sp, #0x80 + lsl r3, r2, #0 + bl MOD13_0221B900 + ldr r0, [sp, #0xc] + asr r1, r0, #0x1f + lsl r2, r0, #0 + ldr r0, [sp, #0x24] + add r6, r2, r0 + ldr r0, [sp, #8] + adc r1, r0 + add r2, r1, #0 + ldr r0, _0221C60C ; =0xFF000000 + and r2, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x30] + add r2, r1, #0 + ldr r0, _0221C610 ; =0x00FF0000 + and r2, r0 + lsr r0, r2, #8 + str r0, [sp, #0x68] + add r2, r1, #0 + ldr r0, _0221C614 ; =0x0000FF00 + and r2, r0 + add r3, r6, #0 + ldr r0, [sp, #0x64] + and r3, r0 + lsl r0, r2, #8 + lsr r5, r3, #0x18 + orr r5, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x3c] + add r0, r1, #0 + mov r2, #0xff + and r0, r2 + add r3, r6, #0 + ldr r2, [sp, #0x60] + and r3, r2 + lsl r2, r0, #0x18 + lsr r4, r3, #8 + orr r4, r2 + lsr r0, r0, #8 + str r0, [sp, #0x40] + add r3, r1, #0 + ldr r0, [sp, #0x5c] + and r3, r0 + add r0, r6, #0 + ldr r2, _0221C60C ; =0xFF000000 + and r0, r2 + lsr r2, r0, #0x18 + lsl r3, r3, #8 + orr r3, r2 + lsl r0, r0, #8 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r6, #0 + ldr r2, _0221C610 ; =0x00FF0000 + and r0, r2 + lsr r2, r0, #8 + str r2, [sp, #0x54] + lsl r2, r1, #0x18 + ldr r1, [sp, #0x54] + orr r2, r1 + lsl r7, r0, #0x18 + add r1, r6, #0 + str r1, [sp, #0x4c] + mov r0, #0xff + and r1, r0 + str r1, [sp, #0x4c] + lsl r0, r1, #0x18 + str r0, [sp, #0x44] + ldr r0, _0221C614 ; =0x0000FF00 + and r6, r0 + lsl r1, r6, #8 + ldr r0, [sp, #0x44] + orr r0, r1 + str r0, [sp, #0x44] + ldr r0, [sp, #0x48] + ldr r1, [sp, #0x50] + orr r0, r1 + ldr r1, [sp, #0x44] + orr r2, r1 + orr r7, r0 + orr r3, r2 + ldr r0, [sp, #0x6c] + orr r0, r7 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x40] + orr r0, r3 + str r0, [sp, #0x40] + ldr r0, [sp, #0x6c] + orr r4, r0 + ldr r1, [sp, #0x3c] + ldr r0, [sp, #0x40] + orr r1, r0 + str r1, [sp, #0x3c] + orr r5, r4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + orr r1, r0 + ldr r0, [sp, #0x68] + orr r0, r5 + str r0, [sp, #0x68] + ldr r2, [sp, #0x34] + orr r2, r1 + ldr r1, [sp, #0x30] + orr r1, r0 + str r1, [sp, #0x30] + str r1, [sp, #0x70] + str r2, [sp, #0x74] + add r0, sp, #0x80 + add r1, sp, #0x70 + lsl r2, r0, #0 + bl MOD13_0221C1CC + add r3, sp, #0x88 + mov r2, #8 +_0221C5BA: + ldrb r1, [r3] + add r3, r3, #1 + ldr r0, [sp, #0x2c] + strb r1, [r0] + add r0, r0, #1 + str r0, [sp, #0x2c] + sub r2, r2, #1 + cmp r2, #0 + bne _0221C5BA + ldr r0, [sp, #0xc] + add r1, r0, #1 + str r1, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0221C5DA + b _0221C4AE +_0221C5DA: + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #6 + bge _0221C5E6 + b _0221C494 +_0221C5E6: + add r3, sp, #0x80 + mov r2, #8 +_0221C5EA: + ldrb r1, [r3] + add r3, r3, #1 + ldr r0, [sp] + strb r1, [r0] + add r0, r0, #1 + str r0, [sp] + sub r2, r2, #1 + cmp r2, #0 + bne _0221C5EA + mov r0, #1 + add sp, #0x1d4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221C608: .word 0xA6A6A6A6 +_0221C60C: .word 0xFF000000 +_0221C610: .word 0x00FF0000 +_0221C614: .word 0x0000FF00 + + thumb_func_start MOD13_0221C618 +MOD13_0221C618: ; 0x0221C618 + push {r4, lr} + bl MOD13_0221C658 + add r4, r0, #0 + ldr r0, _0221C64C ; =0x02241B28 + str r4, [r0] + bl MOD13_0221D938 + cmp r4, #1 + bne _0221C634 + mov r1, #6 + ldr r0, _0221C650 ; =0x02241AE8 + str r1, [r0] + b _0221C63A +_0221C634: + mov r1, #7 + ldr r0, _0221C650 ; =0x02241AE8 + str r1, [r0] +_0221C63A: + mov r0, #0 + mvn r1, r0 + ldr r0, _0221C654 ; =0x0223F870 + str r1, [r0] + bl MOD13_0221A778 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221C64C: .word 0x02241B28 +_0221C650: .word 0x02241AE8 +_0221C654: .word 0x0223F870 + + thumb_func_start MOD13_0221C658 +MOD13_0221C658: ; 0x0221C658 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + mov r4, #0 + mov r0, #4 + mvn r0, r0 + str r0, [sp, #4] + str r4, [sp, #0x40] + str r4, [sp, #8] + str r4, [sp, #0xc] + ldr r6, _0221C9E0 ; =0x02241ACC + mov r0, #1 + str r0, [r6] + str r4, [sp, #0x10] + str r4, [sp, #0x18] + str r4, [sp, #0x2c] + str r4, [sp, #0x34] + mvn r0, r0 + str r0, [sp, #0x14] + str r4, [sp, #0x38] + str r4, [sp, #0x24] + mvn r0, r4 + str r0, [sp, #0x28] + mov r0, #3 + mvn r0, r0 + str r0, [sp, #0x20] + mov r0, #2 + mvn r0, r0 + str r0, [sp, #0x1c] + str r4, [sp, #0x3c] + b _0221CA3C +_0221C694: + ldr r0, _0221C9E4 ; =0x000001F4 + bl OS_Sleep + ldr r0, [r6] + cmp r0, #0xa + bls _0221C6A2 + b _0221CA3C +_0221C6A2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221C6B0: ; jump table + .short _0221CA3C - _0221C6B0 + 1 ; case 0 + .short _0221C6C6 - _0221C6B0 + 1 ; case 1 + .short _0221C6E6 - _0221C6B0 + 1 ; case 2 + .short _0221C6FC - _0221C6B0 + 1 ; case 3 + .short _0221C74C - _0221C6B0 + 1 ; case 4 + .short _0221C7B6 - _0221C6B0 + 1 ; case 5 + .short _0221C7D8 - _0221C6B0 + 1 ; case 6 + .short _0221C880 - _0221C6B0 + 1 ; case 7 + .short _0221C8DE - _0221C6B0 + 1 ; case 8 + .short _0221C960 - _0221C6B0 + 1 ; case 9 + .short _0221C9BA - _0221C6B0 + 1 ; case 10 +_0221C6C6: + bl MOD13_0221D478 + str r0, [sp, #4] + cmp r0, #1 + beq _0221C6D6 + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C6D6: + mov r1, #3 + ldr r0, _0221C9E8 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221A778 + mov r0, #2 + str r0, [r6] + b _0221CA3C +_0221C6E6: + bl MOD13_0221D9A0 + str r0, [sp, #4] + cmp r0, #1 + beq _0221C6F6 + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C6F6: + mov r0, #3 + str r0, [r6] + b _0221CA3C +_0221C6FC: + mov r0, #2 + lsl r1, r0, #0 + ldr r2, [sp, #0x10] + bl FUN_0209A9D0 + add r4, r0, #0 + cmp r4, #0 + bge _0221C716 + ldr r0, [sp, #0x14] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C716: + ldr r2, [sp, #0x18] + add r1, sp, #0x44 + str r2, [r1] + str r2, [r1, #4] + mov r2, #8 + add r1, sp, #0x44 + strb r2, [r1] + mov r2, #2 + strb r2, [r1, #1] + ldr r2, _0221C9EC ; =0x000001E6 + strh r2, [r1, #2] + ldr r1, [sp, #0x18] + str r1, [sp, #0x48] + add r1, sp, #0x44 + bl FUN_0209A9A4 + str r0, [sp, #4] + cmp r0, #0 + bge _0221C746 + ldr r0, [sp, #0x14] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C746: + mov r0, #4 + str r0, [r6] + b _0221CA3C +_0221C74C: + bl MOD13_0221AA90 + ldr r1, _0221C9F0 ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221C768 + add r0, r4, #0 + bl thunk_FUN_0209996c + ldr r0, [sp, #0x1c] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C768: + mov r1, #8 + add r0, sp, #0x44 + strb r1, [r0, #8] + ldr r0, _0221C9F4 ; =0x02241B5C + add r1, sp, #0x4c + bl MOD13_0221CEA4 + add r0, sp, #0x4c + str r0, [sp] + add r0, r4, #0 + ldr r1, _0221C9F8 ; =0x022427E4 + ldr r2, _0221C9FC ; =0x00000800 + mov r3, #4 + bl FUN_0209A880 + cmp r0, #0 + bgt _0221C78C + b _0221CA3C +_0221C78C: + ldr r0, _0221C9F8 ; =0x022427E4 + ldr r1, _0221CA00 ; =0x02241B00 + bl MOD13_0221D0D4 + cmp r0, #0 + bne _0221C79A + b _0221CA3C +_0221C79A: + bl MOD13_0221AA90 + ldr r1, _0221CA04 ; =0x00007530 + add r1, r0, r1 + ldr r0, _0221C9F0 ; =0x0223F870 + str r1, [r0] + mov r0, #5 + str r0, [r6] + mov r1, #4 + ldr r0, _0221C9E8 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221A778 + b _0221CA3C +_0221C7B6: + ldr r0, _0221C9F8 ; =0x022427E4 + bl MOD13_0221CFD0 + add r3, r0, #0 + ldr r0, _0221CA08 ; =0x02241AC4 + str r3, [r0] + add r0, r4, #0 + add r1, sp, #0x4c + ldr r2, _0221C9F8 ; =0x022427E4 + bl MOD13_0221D408 + bl MOD13_0221AA90 + str r0, [sp, #0x40] + mov r0, #6 + str r0, [r6] + b _0221CA3C +_0221C7D8: + bl MOD13_0221AA90 + ldr r1, _0221C9F0 ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221C7F4 + add r0, r4, #0 + bl thunk_FUN_0209996c + ldr r0, [sp, #0x20] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C7F4: + add r0, sp, #0x4c + str r0, [sp] + add r0, r4, #0 + ldr r1, _0221C9F8 ; =0x022427E4 + ldr r2, _0221C9FC ; =0x00000800 + mov r3, #4 + bl FUN_0209A880 + cmp r0, #0 + ble _0221C86A + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #3 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221C9F4 ; =0x02241B5C + bl MOD13_0221D074 + cmp r0, #0 + beq _0221C86A + ldr r0, _0221CA0C ; =0x02241FE4 + add r1, sp, #0x54 + add r2, sp, #0x58 + bl MOD13_0221D30C + add r5, r0, #0 + ldr r1, [sp, #0x54] + ldr r0, _0221CA10 ; =0x00000101 + cmp r1, r0 + beq _0221C82E + b _0221CA3C +_0221C82E: + bl MOD13_0221AA90 + str r0, [sp, #0x5c] + ldr r2, _0221CA14 ; =0x02241B84 + mov r1, #8 +_0221C838: + ldrb r0, [r5] + add r5, r5, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C838 + ldr r0, _0221CA18 ; =0x02241B8C + add r1, sp, #0x5c + mov r2, #4 + bl MOD13_0221AAB4 + ldr r0, [sp, #0x24] + str r0, [sp, #8] + mov r0, #7 + str r0, [r6] + mov r1, #5 + ldr r0, _0221C9E8 ; =0x02241AE8 + str r1, [r0] + ldr r1, [sp, #0x28] + ldr r0, _0221C9F0 ; =0x0223F870 + str r1, [r0] + bl MOD13_0221A778 + b _0221CA3C +_0221C86A: + bl MOD13_0221AA90 + ldr r2, _0221CA1C ; =0x000003E8 + ldr r1, [sp, #0x40] + add r1, r1, r2 + cmp r0, r1 + bhs _0221C87A + b _0221CA3C +_0221C87A: + mov r0, #5 + str r0, [r6] + b _0221CA3C +_0221C880: + ldr r0, _0221CA0C ; =0x02241FE4 + ldr r1, _0221CA20 ; =0x00000102 + ldr r2, _0221CA18 ; =0x02241B8C + mov r3, #8 + bl MOD13_0221D1B4 + ldr r1, _0221CA24 ; =0x02241AE4 + str r0, [r1] + ldr r0, _0221C9F4 ; =0x02241B5C + str r0, [sp] + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #4 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221CA24 ; =0x02241AE4 + ldr r3, [r3] + bl MOD13_0221D248 + add r3, r0, #0 + ldr r0, _0221CA08 ; =0x02241AC4 + str r3, [r0] + add r0, r4, #0 + add r1, sp, #0x4c + ldr r2, _0221C9F8 ; =0x022427E4 + bl MOD13_0221D408 + bl MOD13_0221AA90 + str r0, [sp, #0x40] + ldr r7, _0221CA28 ; =0x02241D90 + ldr r0, [sp, #0x2c] + lsl r1, r0, #0 + lsl r2, r0, #0 + lsl r3, r0, #0 + mov r5, #0x12 + str r5, [sp, #0x30] +_0221C8C6: + stmia r7!, {r0, r1, r2, r3} + stmia r7!, {r0, r1, r2, r3} + ldr r5, [sp, #0x30] + sub r5, r5, #1 + str r5, [sp, #0x30] + cmp r5, #0 + bne _0221C8C6 + stmia r7!, {r0, r1, r2, r3} + str r0, [r7] + mov r0, #8 + str r0, [r6] + b _0221CA3C +_0221C8DE: + add r0, sp, #0x4c + str r0, [sp] + add r0, r4, #0 + ldr r1, _0221C9F8 ; =0x022427E4 + ldr r2, _0221C9FC ; =0x00000800 + mov r3, #4 + bl FUN_0209A880 + cmp r0, #0 + ble _0221C932 + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #5 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221CA14 ; =0x02241B84 + bl MOD13_0221D074 + ldr r1, _0221CA24 ; =0x02241AE4 + str r0, [r1] + cmp r0, #0 + beq _0221C932 + ldr r0, _0221CA0C ; =0x02241FE4 + bl MOD13_0221CCD8 + cmp r0, #0 + beq _0221C932 + ldr r1, _0221CA2C ; =0x02241E90 + ldr r0, [sp, #0x3c] + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0221C922 + mov r1, #1 + ldr r0, _0221CA30 ; =0x02241AB0 + strb r1, [r0] + b _0221C928 +_0221C922: + ldr r1, [sp, #0x34] + ldr r0, _0221CA30 ; =0x02241AB0 + strb r1, [r0] +_0221C928: + ldr r0, [sp, #0x38] + str r0, [sp, #8] + mov r0, #9 + str r0, [r6] + b _0221CA3C +_0221C932: + bl MOD13_0221AA90 + ldr r2, _0221CA1C ; =0x000003E8 + ldr r1, [sp, #0x40] + add r1, r1, r2 + cmp r0, r1 + blo _0221CA3C + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #0xa + blt _0221C95A + add r0, r4, #0 + bl thunk_FUN_0209996c + ldr r0, [sp, #0x14] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C95A: + mov r0, #7 + str r0, [r6] + b _0221CA3C +_0221C960: + ldr r0, _0221CA0C ; =0x02241FE4 + ldr r1, _0221CA34 ; =0x00000301 + ldr r2, _0221CA30 ; =0x02241AB0 + mov r3, #1 + bl MOD13_0221D1B4 + ldr r1, _0221CA24 ; =0x02241AE4 + str r0, [r1] + ldr r0, _0221CA14 ; =0x02241B84 + str r0, [sp] + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #6 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221CA24 ; =0x02241AE4 + ldr r3, [r3] + bl MOD13_0221D248 + ldr r1, _0221CA08 ; =0x02241AC4 + str r0, [r1] + bl MOD13_0221DD40 + cmp r0, #7 + beq _0221C9A0 + bl MOD13_0221AA90 + ldr r1, _0221CA1C ; =0x000003E8 + add r0, r0, r1 + str r0, [sp, #0x40] + mov r0, #0xa + str r0, [sp, #8] + str r0, [r6] + b _0221CA3C +_0221C9A0: + add r0, r4, #0 + add r1, sp, #0x4c + ldr r2, _0221C9F8 ; =0x022427E4 + ldr r3, _0221CA08 ; =0x02241AC4 + ldr r3, [r3] + bl MOD13_0221D408 + bl MOD13_0221AA90 + str r0, [sp, #0x40] + mov r0, #0xa + str r0, [r6] + b _0221CA3C +_0221C9BA: + bl MOD13_0221AA90 + ldr r2, _0221CA1C ; =0x000003E8 + ldr r1, [sp, #0x40] + add r1, r1, r2 + cmp r0, r1 + blo _0221CA3C + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #0xa + blt _0221CA38 + mov r0, #1 + str r0, [sp, #0xc] + bl MOD13_0221CA74 + str r0, [sp, #4] + b _0221CA3C + nop +_0221C9E0: .word 0x02241ACC +_0221C9E4: .word 0x000001F4 +_0221C9E8: .word 0x02241AE8 +_0221C9EC: .word 0x000001E6 +_0221C9F0: .word 0x0223F870 +_0221C9F4: .word 0x02241B5C +_0221C9F8: .word 0x022427E4 +_0221C9FC: .word 0x00000800 +_0221CA00: .word 0x02241B00 +_0221CA04: .word 0x00007530 +_0221CA08: .word 0x02241AC4 +_0221CA0C: .word 0x02241FE4 +_0221CA10: .word 0x00000101 +_0221CA14: .word 0x02241B84 +_0221CA18: .word 0x02241B8C +_0221CA1C: .word 0x000003E8 +_0221CA20: .word 0x00000102 +_0221CA24: .word 0x02241AE4 +_0221CA28: .word 0x02241D90 +_0221CA2C: .word 0x02241E90 +_0221CA30: .word 0x02241AB0 +_0221CA34: .word 0x00000301 +_0221CA38: + mov r0, #9 + str r0, [r6] +_0221CA3C: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221CA4C + ldr r0, _0221CA70 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + bne _0221CA4C + b _0221C694 +_0221CA4C: + cmp r4, #0 + beq _0221CA56 + add r0, r4, #0 + bl thunk_FUN_0209996c +_0221CA56: + ldr r0, _0221CA70 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221CA64 + mov r0, #7 + mvn r0, r0 + str r0, [sp, #4] +_0221CA64: + ldr r0, [sp, #4] + add sp, #0x64 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221CA70: .word 0x02241AC0 + + thumb_func_start MOD13_0221CA74 +MOD13_0221CA74: ; 0x0221CA74 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r0, #1 + str r0, [sp] + ldr r0, _0221CBF0 ; =0x02241CA8 + ldr r1, _0221CBF4 ; =0x02241E90 + bl strcpy + ldr r1, _0221CBF4 ; =0x02241E90 + ldr r0, [r1, #0x2c] + cmp r0, #3 + bls _0221CA8E + b _0221CBE0 +_0221CA8E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221CA9C: ; jump table + .short _0221CAA4 - _0221CA9C + 1 ; case 0 + .short _0221CAAC - _0221CA9C + 1 ; case 1 + .short _0221CBB0 - _0221CA9C + 1 ; case 2 + .short _0221CBC8 - _0221CA9C + 1 ; case 3 +_0221CAA4: + mov r1, #0 + ldr r0, _0221CBF0 ; =0x02241CA8 + str r1, [r0, #0x20] + b _0221CBE6 +_0221CAAC: + ldr r0, [r1, #0x30] + cmp r0, #0 + bne _0221CABA + mov r0, #6 + mvn r0, r0 + str r0, [sp] + b _0221CBE6 +_0221CABA: + ldr r6, _0221CBF0 ; =0x02241CA8 + str r0, [r6, #0x24] + mov r0, #0 + str r0, [sp, #4] + add r5, sp, #0x10 + ldr r7, _0221CBF8 ; =0x02241EF4 + ldr r4, _0221CBFC ; =0x02241CD0 + mov r0, #6 + mvn r0, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + str r0, [sp, #8] +_0221CAD2: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x20 + bl memcpy + ldr r1, [sp, #8] + add r0, sp, #0x30 + strb r1, [r0] + add r0, r5, #0 + bl strlen + cmp r0, #0x10 + bhi _0221CB0E + cmp r0, #0xa + blo _0221CAFE + cmp r0, #0xa + beq _0221CB38 + cmp r0, #0xd + beq _0221CB48 + cmp r0, #0x10 + beq _0221CB72 + b _0221CB9C +_0221CAFE: + cmp r0, #0 + bhi _0221CB08 + cmp r0, #0 + beq _0221CBA0 + b _0221CB9C +_0221CB08: + cmp r0, #5 + beq _0221CB1E + b _0221CB9C +_0221CB0E: + cmp r0, #0x1a + bhi _0221CB18 + cmp r0, #0x1a + beq _0221CB62 + b _0221CB9C +_0221CB18: + cmp r0, #0x20 + beq _0221CB8C + b _0221CB9C +_0221CB1E: + mov r0, #1 + str r0, [r6, #0x20] + ldrb r0, [r5] + strb r0, [r4] + ldrb r0, [r5, #1] + strb r0, [r4, #1] + ldrb r0, [r5, #2] + strb r0, [r4, #2] + ldrb r0, [r5, #3] + strb r0, [r4, #3] + ldrb r0, [r5, #4] + strb r0, [r4, #4] + b _0221CBA0 +_0221CB38: + mov r0, #1 + str r0, [r6, #0x20] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0xa + bl MOD13_0221CC08 + b _0221CBA0 +_0221CB48: + mov r0, #2 + str r0, [r6, #0x20] + add r3, r5, #0 + add r2, r4, #0 + mov r1, #0xd +_0221CB52: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221CB52 + b _0221CBA0 +_0221CB62: + mov r0, #2 + str r0, [r6, #0x20] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x1a + bl MOD13_0221CC08 + b _0221CBA0 +_0221CB72: + mov r0, #3 + str r0, [r6, #0x20] + add r3, r5, #0 + add r2, r4, #0 + mov r1, #0x10 +_0221CB7C: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221CB7C + b _0221CBA0 +_0221CB8C: + mov r0, #3 + str r0, [r6, #0x20] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x20 + bl MOD13_0221CC08 + b _0221CBA0 +_0221CB9C: + ldr r0, [sp, #0xc] + str r0, [sp] +_0221CBA0: + add r7, #0x28 + add r4, #0x20 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _0221CAD2 + b _0221CBE6 +_0221CBB0: + mov r1, #4 + ldr r0, _0221CBF0 ; =0x02241CA8 + str r1, [r0, #0x20] + ldr r4, _0221CC00 ; =0x02241D50 + ldr r3, _0221CC04 ; =0x02241F8C + mov r2, #8 +_0221CBBC: + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + cmp r2, #0 + bne _0221CBBC + b _0221CBE6 +_0221CBC8: + mov r1, #5 + ldr r0, _0221CBF0 ; =0x02241CA8 + str r1, [r0, #0x20] + ldr r4, _0221CC00 ; =0x02241D50 + ldr r3, _0221CC04 ; =0x02241F8C + mov r2, #8 +_0221CBD4: + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + cmp r2, #0 + bne _0221CBD4 + b _0221CBE6 +_0221CBE0: + mov r0, #6 + mvn r0, r0 + str r0, [sp] +_0221CBE6: + ldr r0, [sp] + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221CBF0: .word 0x02241CA8 +_0221CBF4: .word 0x02241E90 +_0221CBF8: .word 0x02241EF4 +_0221CBFC: .word 0x02241CD0 +_0221CC00: .word 0x02241D50 +_0221CC04: .word 0x02241F8C + + thumb_func_start MOD13_0221CC08 +MOD13_0221CC08: ; 0x0221CC08 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + add r7, r1, #0 + str r2, [sp] + mov r4, #0 + add r5, r4, #0 + lsl r0, r2, #0 + cmp r0, #0 + ble _0221CCCE + str r4, [sp, #4] +_0221CC1E: + ldrsb r0, [r7, r5] + cmp r0, #0x63 + bgt _0221CC7A + cmp r0, #0x63 + bge _0221CC94 + cmp r0, #0x61 + bgt _0221CC74 + cmp r0, #0x61 + bge _0221CC94 + add r1, r0, #0 + sub r1, #0x30 + cmp r1, #0x16 + bhi _0221CCA0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_0221CC46: ; jump table + .short _0221CC8E - _0221CC46 + 1 ; case 0 + .short _0221CC8E - _0221CC46 + 1 ; case 1 + .short _0221CC8E - _0221CC46 + 1 ; case 2 + .short _0221CC8E - _0221CC46 + 1 ; case 3 + .short _0221CC8E - _0221CC46 + 1 ; case 4 + .short _0221CC8E - _0221CC46 + 1 ; case 5 + .short _0221CC8E - _0221CC46 + 1 ; case 6 + .short _0221CC8E - _0221CC46 + 1 ; case 7 + .short _0221CC8E - _0221CC46 + 1 ; case 8 + .short _0221CC8E - _0221CC46 + 1 ; case 9 + .short _0221CCA0 - _0221CC46 + 1 ; case 10 + .short _0221CCA0 - _0221CC46 + 1 ; case 11 + .short _0221CCA0 - _0221CC46 + 1 ; case 12 + .short _0221CCA0 - _0221CC46 + 1 ; case 13 + .short _0221CCA0 - _0221CC46 + 1 ; case 14 + .short _0221CCA0 - _0221CC46 + 1 ; case 15 + .short _0221CCA0 - _0221CC46 + 1 ; case 16 + .short _0221CC9A - _0221CC46 + 1 ; case 17 + .short _0221CC9A - _0221CC46 + 1 ; case 18 + .short _0221CC9A - _0221CC46 + 1 ; case 19 + .short _0221CC9A - _0221CC46 + 1 ; case 20 + .short _0221CC9A - _0221CC46 + 1 ; case 21 + .short _0221CC9A - _0221CC46 + 1 ; case 22 +_0221CC74: + cmp r0, #0x62 + beq _0221CC94 + b _0221CCA0 +_0221CC7A: + cmp r0, #0x65 + bgt _0221CC88 + cmp r0, #0x65 + bge _0221CC94 + cmp r0, #0x64 + beq _0221CC94 + b _0221CCA0 +_0221CC88: + cmp r0, #0x66 + beq _0221CC94 + b _0221CCA0 +_0221CC8E: + sub r0, #0x30 + add r4, r4, r0 + b _0221CCAA +_0221CC94: + sub r0, #0x57 + add r4, r4, r0 + b _0221CCAA +_0221CC9A: + sub r0, #0x37 + add r4, r4, r0 + b _0221CCAA +_0221CCA0: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221CCAA: + add r0, r5, #0 + mov r1, #2 + bl _s32_div_f + cmp r1, #0 + bne _0221CCBA + lsl r4, r4, #4 + b _0221CCC6 +_0221CCBA: + add r0, r5, #0 + mov r1, #2 + bl _s32_div_f + strb r4, [r6, r0] + ldr r4, [sp, #4] +_0221CCC6: + add r5, r5, #1 + ldr r0, [sp] + cmp r5, r0 + blt _0221CC1E +_0221CCCE: + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221CCD8 +MOD13_0221CCD8: ; 0x0221CCD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r1, r0, #0 + add r1, #8 + str r1, [sp, #8] + mov r2, #0 + str r2, [sp, #4] + ldrh r2, [r0] + asr r3, r2, #8 + mov r0, #0xff + and r3, r0 + lsl r2, r2, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r2, r0 + orr r3, r2 + lsl r0, r3, #0x10 + lsr r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp] + add r0, sp, #8 + ldr r1, [sp] + add r2, sp, #0xc + add r3, sp, #0x10 + bl MOD13_0221D344 + add r5, r0, #0 + cmp r5, #0 + bne _0221CD12 + b _0221CE76 +_0221CD12: + mov r7, #0 +_0221CD14: + ldr r0, [sp, #0xc] + ldr r1, _0221CE84 ; =0x00000201 + sub r1, r0, r1 + cmp r1, #9 + bls _0221CD20 + b _0221CE62 +_0221CD20: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_0221CD2E: ; jump table + .short _0221CD42 - _0221CD2E + 1 ; case 0 + .short _0221CD60 - _0221CD2E + 1 ; case 1 + .short _0221CD7A - _0221CD2E + 1 ; case 2 + .short _0221CDA0 - _0221CD2E + 1 ; case 3 + .short _0221CDC6 - _0221CD2E + 1 ; case 4 + .short _0221CDE0 - _0221CD2E + 1 ; case 5 + .short _0221CDE0 - _0221CD2E + 1 ; case 6 + .short _0221CDE0 - _0221CD2E + 1 ; case 7 + .short _0221CDE0 - _0221CD2E + 1 ; case 8 + .short _0221CE40 - _0221CD2E + 1 ; case 9 +_0221CD42: + ldr r2, _0221CE88 ; =0x02241E90 + add r0, r7, #0 + add r1, r7, #0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0221CE88 ; =0x02241E90 + add r1, r5, #0 + ldr r2, [sp, #0x10] + bl memcpy + mov r0, #1 + str r0, [sp, #4] + b _0221CE62 +_0221CD60: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r1, r0, #0x10 + ldr r0, _0221CE88 ; =0x02241E90 + str r1, [r0, #0x2c] + b _0221CE62 +_0221CD7A: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r1, r0, #0x10 + add r3, r7, #0 + ldr r2, _0221CE8C ; =0x02241D90 +_0221CD92: + ldr r0, _0221CE90 ; =0x0000015C + str r1, [r2, r0] + add r2, #0x28 + add r3, r3, #1 + cmp r3, #4 + blt _0221CD92 + b _0221CE62 +_0221CDA0: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r2, r0, #0x10 + add r1, r7, #0 + ldr r3, _0221CE8C ; =0x02241D90 +_0221CDB8: + ldr r0, _0221CE94 ; =0x00000160 + str r2, [r3, r0] + add r3, #0x28 + add r1, r1, #1 + cmp r1, #4 + blt _0221CDB8 + b _0221CE62 +_0221CDC6: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r1, r0, #0x10 + ldr r0, _0221CE88 ; =0x02241E90 + str r1, [r0, #0x30] + b _0221CE62 +_0221CDE0: + ldr r1, _0221CE98 ; =0x00000206 + sub r1, r0, r1 + mov r0, #0x28 + mul r1, r0 + ldr r0, _0221CE9C ; =0x02241EF4 + add r0, r0, r1 + add r1, r7, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + ldr r0, _0221CE88 ; =0x02241E90 + ldr r0, [r0, #0x5c] + cmp r0, #1 + bne _0221CE28 + ldr r1, [sp, #0xc] + ldr r0, _0221CE98 ; =0x00000206 + sub r1, r1, r0 + mov r0, #0x28 + mul r1, r0 + ldr r0, _0221CE9C ; =0x02241EF4 + add r4, r0, r1 + add r6, r7, #0 + ldr r0, [sp, #0x10] + cmp r0, #0 + ble _0221CE62 +_0221CE12: + add r0, r4, #0 + ldrsb r1, [r5, r7] + add r5, r5, #1 + bl MOD13_0221AA14 + add r4, r4, r0 + add r6, r6, #1 + ldr r0, [sp, #0x10] + cmp r6, r0 + blt _0221CE12 + b _0221CE62 +_0221CE28: + ldr r1, [sp, #0xc] + ldr r0, _0221CE98 ; =0x00000206 + sub r1, r1, r0 + mov r0, #0x28 + mul r1, r0 + ldr r0, _0221CE9C ; =0x02241EF4 + add r0, r0, r1 + add r1, r5, #0 + ldr r2, [sp, #0x10] + bl memcpy + b _0221CE62 +_0221CE40: + ldr r2, _0221CEA0 ; =0x02241F8C + add r0, r7, #0 + add r1, r7, #0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0221CEA0 ; =0x02241F8C + add r1, r5, #0 + ldr r2, [sp, #0x10] + bl memcpy +_0221CE62: + add r0, sp, #8 + ldr r1, [sp] + add r2, sp, #0xc + add r3, sp, #0x10 + bl MOD13_0221D344 + add r5, r0, #0 + cmp r5, #0 + beq _0221CE76 + b _0221CD14 +_0221CE76: + ldr r0, [sp, #4] + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221CE80: .word 0x0000FF00 +_0221CE84: .word 0x00000201 +_0221CE88: .word 0x02241E90 +_0221CE8C: .word 0x02241D90 +_0221CE90: .word 0x0000015C +_0221CE94: .word 0x00000160 +_0221CE98: .word 0x00000206 +_0221CE9C: .word 0x02241EF4 +_0221CEA0: .word 0x02241F8C + + thumb_func_start MOD13_0221CEA4 +MOD13_0221CEA4: ; 0x0221CEA4 + push {r4, lr} + sub sp, #0x50 + add r4, r0, #0 + add r2, r4, #0 + add r2, #0xc + ldr r1, _0221CFB0 ; =0x0223F92C + ldrb r0, [r1] + strb r0, [r4, #0xc] + ldrb r0, [r1, #1] + strb r0, [r2, #1] + ldrb r0, [r1, #2] + strb r0, [r2, #2] + ldrb r0, [r1, #3] + strb r0, [r2, #3] + add r1, sp, #0 + ldr r0, _0221CFB4 ; =0x02241B3C + ldrb r2, [r0] + strb r2, [r1] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] + add r1, sp, #0 + ldrb r2, [r1] + mov r0, #0xfd + and r2, r0 + strb r2, [r1] + add r0, sp, #4 + add r0, #2 + bl MOD13_0221CFC0 + ldr r0, _0221CFB8 ; =0x02241B34 + add r1, sp, #4 + add r1, #2 + ldrb r2, [r1] + strb r2, [r0] + ldrb r2, [r1, #1] + strb r2, [r0, #1] + ldrb r2, [r1, #2] + strb r2, [r0, #2] + ldrb r2, [r1, #3] + strb r2, [r0, #3] + ldrb r2, [r1, #4] + strb r2, [r0, #4] + ldrb r2, [r1, #5] + strb r2, [r0, #5] + add r0, sp, #0 + mov r2, #6 + bl memcmp + cmp r0, #0 + bgt _0221CF52 + add r1, sp, #4 + add r1, #2 + ldrb r0, [r1] + strb r0, [r4] + ldrb r0, [r1, #1] + strb r0, [r4, #1] + ldrb r0, [r1, #2] + strb r0, [r4, #2] + ldrb r0, [r1, #3] + strb r0, [r4, #3] + ldrb r0, [r1, #4] + strb r0, [r4, #4] + ldrb r0, [r1, #5] + strb r0, [r4, #5] + add r1, r4, #6 + add r0, sp, #0 + ldrb r2, [r0] + strb r2, [r4, #6] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] + b _0221CF8A +_0221CF52: + add r1, sp, #0 + ldrb r0, [r1] + strb r0, [r4] + ldrb r0, [r1, #1] + strb r0, [r4, #1] + ldrb r0, [r1, #2] + strb r0, [r4, #2] + ldrb r0, [r1, #3] + strb r0, [r4, #3] + ldrb r0, [r1, #4] + strb r0, [r4, #4] + ldrb r0, [r1, #5] + strb r0, [r4, #5] + add r1, r4, #6 + add r0, sp, #4 + add r0, #2 + ldrb r2, [r0] + strb r2, [r4, #6] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] +_0221CF8A: + ldr r0, _0221CFBC ; =0x0223F868 + ldr r0, [r0] + cmp r0, #0 + beq _0221CFA4 + add r0, sp, #0xc + add r1, sp, #4 + add r1, #2 + bl MOD13_0221A9D8 + add r0, sp, #0x2c + add r1, sp, #0 + bl MOD13_0221A9D8 +_0221CFA4: + mov r0, #1 + add sp, #0x50 + pop {r4} + pop {r3} + bx r3 + nop +_0221CFB0: .word 0x0223F92C +_0221CFB4: .word 0x02241B3C +_0221CFB8: .word 0x02241B34 +_0221CFBC: .word 0x0223F868 + + thumb_func_start MOD13_0221CFC0 +MOD13_0221CFC0: ; 0x0221CFC0 + push {lr} + sub sp, #4 + bl OS_GetMacAddress + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + + thumb_func_start MOD13_0221CFD0 +MOD13_0221CFD0: ; 0x0221CFD0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r1, _0221D05C ; =0x00000100 + add r0, sp, #4 + strh r1, [r0] + ldr r3, _0221D060 ; =0x0223F880 + add r2, sp, #4 + add r2, #2 + mov r1, #7 +_0221CFE4: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221CFE4 + ldr r0, _0221D064 ; =0x0223F864 + ldr r0, [r0] + mov r1, #1 + add r2, sp, #4 + mov r3, #2 + bl MOD13_0221D1E0 + mov r1, #2 + add r2, sp, #4 + add r3, r1, #0 + bl MOD13_0221D1E0 + ldr r1, _0221D068 ; =0x02241B00 + ldr r1, [r1] + cmp r1, #0 + beq _0221D01C + mov r1, #5 + add r2, sp, #4 + mov r3, #2 + bl MOD13_0221D1E0 +_0221D01C: + mov r1, #3 + add r2, sp, #4 + add r2, #2 + mov r3, #7 + bl MOD13_0221D1E0 + add r3, r0, #0 + ldr r1, _0221D068 ; =0x02241B00 + ldr r1, [r1] + cmp r1, #0 + beq _0221D03E + mov r1, #4 + ldr r2, _0221D06C ; =0x02241B34 + mov r3, #6 + bl MOD13_0221D1E0 + add r3, r0, #0 +_0221D03E: + mov r0, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #2 + ldr r2, _0221D070 ; =0x02241FE4 + ldr r4, _0221D064 ; =0x0223F864 + ldr r4, [r4] + sub r3, r3, r4 + add r3, #8 + bl MOD13_0221D248 + add sp, #0x10 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221D05C: .word 0x00000100 +_0221D060: .word 0x0223F880 +_0221D064: .word 0x0223F864 +_0221D068: .word 0x02241B00 +_0221D06C: .word 0x02241B34 +_0221D070: .word 0x02241FE4 + + thumb_func_start MOD13_0221D074 +MOD13_0221D074: ; 0x0221D074 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r2, #0 + add r4, r3, #0 + add r1, sp, #4 + add r2, sp, #8 + bl MOD13_0221D398 + add r1, r0, #0 + cmp r1, #0 + bne _0221D096 + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221D096: + ldr r0, [sp, #4] + cmp r0, r5 + beq _0221D0A6 + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221D0A6: + cmp r4, #0 + beq _0221D0C0 + mov r0, #0x10 + str r0, [sp] + add r0, r6, #0 + ldr r2, [sp, #8] + add r3, r4, #0 + bl MOD13_0221C218 + ldr r0, [sp, #8] + sub r0, #8 + str r0, [sp, #8] + b _0221D0C8 +_0221D0C0: + add r0, r6, #0 + ldr r2, [sp, #8] + bl memcpy +_0221D0C8: + ldr r0, [sp, #8] + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221D0D4 +MOD13_0221D0D4: ; 0x0221D0D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r1, [sp] + add r1, sp, #0xc + add r2, sp, #0x10 + bl MOD13_0221D398 + str r0, [sp, #0x1c] + mov r7, #0 + str r7, [sp, #4] + str r7, [sp, #8] + cmp r0, #0 + bne _0221D0F8 + add r0, r7, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D0F8: + ldr r1, [sp, #0xc] + cmp r1, #1 + beq _0221D108 + add r0, r7, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D108: + ldr r1, [sp, #0x10] + add r6, r0, r1 + add r0, #8 + str r0, [sp, #0x1c] + add r0, sp, #0x1c + add r1, r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x18 + bl MOD13_0221D344 + cmp r0, #0 + beq _0221D17C + mov r4, #0xff + ldr r5, _0221D1B0 ; =0x0000FF00 +_0221D124: + ldr r1, [sp, #0x14] + cmp r1, #1 + beq _0221D134 + cmp r1, #2 + beq _0221D146 + cmp r1, #5 + beq _0221D15A + b _0221D16C +_0221D134: + ldrh r0, [r0] + asr r1, r0, #8 + and r1, r4 + lsl r0, r0, #8 + and r0, r5 + orr r1, r0 + lsl r0, r1, #0x10 + lsr r7, r0, #0x10 + b _0221D16C +_0221D146: + ldrh r0, [r0] + asr r1, r0, #8 + and r1, r4 + lsl r0, r0, #8 + and r0, r5 + orr r1, r0 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + b _0221D16C +_0221D15A: + ldrh r0, [r0] + asr r1, r0, #8 + and r1, r4 + lsl r0, r0, #8 + and r0, r5 + orr r1, r0 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] +_0221D16C: + add r0, sp, #0x1c + add r1, r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x18 + bl MOD13_0221D344 + cmp r0, #0 + bne _0221D124 +_0221D17C: + cmp r7, #1 + bne _0221D186 + ldr r0, [sp, #4] + cmp r0, #1 + beq _0221D190 +_0221D186: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D190: + ldr r0, [sp, #8] + cmp r0, #1 + blt _0221D19E + mov r1, #1 + ldr r0, [sp] + str r1, [r0] + b _0221D1A4 +_0221D19E: + mov r1, #0 + ldr r0, [sp] + str r1, [r0] +_0221D1A4: + mov r0, #1 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D1B0: .word 0x0000FF00 + + thumb_func_start MOD13_0221D1B4 +MOD13_0221D1B4: ; 0x0221D1B4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + add r0, r4, #0 + add r0, #8 + bl MOD13_0221D1E0 + sub r0, r0, r4 + add r1, r0, #0 + sub r1, #8 + strh r1, [r4] + pop {r4} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221D1E0 +MOD13_0221D1E0: ; 0x0221D1E0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r2, #0 + add r4, r3, #0 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + strb r0, [r5, #3] + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + asr r2, r0, #8 + mov r3, #0xff + and r2, r3 + lsl r1, r0, #8 + ldr r0, _0221D244 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + strh r2, [r5] + add r2, r4, #0 + add r2, #0xb + mov r1, #7 + bic r2, r1 + sub r6, r2, #4 + lsl r1, r4, #0x10 + lsr r2, r1, #0x10 + asr r1, r2, #8 + and r1, r3 + lsl r2, r2, #8 + and r2, r0 + orr r1, r2 + strh r1, [r5, #2] + add r5, r5, #4 + add r0, r5, #0 + mov r1, #0 + add r2, r6, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl memcpy + add r0, r5, r6 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D244: .word 0x0000FF00 + + thumb_func_start MOD13_0221D248 +MOD13_0221D248: ; 0x0221D248 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + str r1, [sp, #4] + add r1, r2, #0 + add r7, r3, #0 + add r5, r6, #0 + mov r4, #0 + strb r4, [r1] + strb r4, [r1, #1] + strb r4, [r1, #2] + strb r4, [r1, #3] + strb r4, [r1, #4] + strb r4, [r1, #5] + strb r4, [r1, #6] + strb r4, [r1, #7] + add r0, r7, #0 + sub r0, #8 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + asr r2, r3, #8 + mov r0, #0xff + and r2, r0 + lsl r3, r3, #8 + ldr r0, _0221D308 ; =0x0000FF00 + and r3, r0 + orr r2, r3 + strh r2, [r1] + ldr r3, [sp, #0x20] + cmp r3, #0 + beq _0221D296 + mov r0, #0x10 + str r0, [sp] + add r0, r6, #6 + add r2, r7, #0 + bl MOD13_0221C40C + add r7, #8 + b _0221D29E +_0221D296: + add r0, r6, #6 + add r2, r7, #0 + bl memcpy +_0221D29E: + mov r0, #0 + strb r0, [r6] + strb r0, [r6, #1] + strb r0, [r6, #2] + strb r0, [r6, #3] + strb r0, [r6, #4] + strb r0, [r6, #5] + ldr r0, [sp, #4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r3, r0, #8 + mov r1, #0xff + and r3, r1 + lsl r0, r0, #8 + ldr r2, _0221D308 ; =0x0000FF00 + and r0, r2 + orr r3, r0 + strh r3, [r6] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + asr r3, r0, #8 + and r3, r1 + lsl r0, r0, #8 + and r0, r2 + orr r3, r0 + strh r3, [r6, #2] + add r0, r5, #6 + add r5, r0, r7 + add r1, r6, #0 + cmp r6, r5 + bhs _0221D2E6 +_0221D2DC: + ldrb r0, [r1] + add r4, r4, r0 + add r1, r1, #1 + cmp r1, r5 + blo _0221D2DC +_0221D2E6: + lsl r0, r4, #0x10 + lsr r1, r0, #0x10 + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221D308 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + strh r2, [r5] + add r0, r5, #2 + sub r0, r0, r6 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D308: .word 0x0000FF00 + + thumb_func_start MOD13_0221D30C +MOD13_0221D30C: ; 0x0221D30C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r3, r2, #0 + add r2, r0, #0 + add r2, #8 + str r2, [sp] + ldrh r6, [r0] + add r0, sp, #0 + asr r1, r6, #8 + mov r5, #0xff + and r1, r5 + lsl r6, r6, #8 + ldr r5, _0221D340 ; =0x0000FF00 + and r6, r5 + orr r1, r6 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r1, r2, r1 + add r2, r4, #0 + bl MOD13_0221D344 + add sp, #8 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221D340: .word 0x0000FF00 + + thumb_func_start MOD13_0221D344 +MOD13_0221D344: ; 0x0221D344 + push {r4, r5, r6, r7} + add r5, r0, #0 + add r4, r2, #0 + add r2, r3, #0 + ldr r0, [r5] + cmp r0, r1 + blo _0221D358 + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_0221D358: + ldrh r1, [r0] + asr r7, r1, #8 + mov r3, #0xff + and r7, r3 + lsl r1, r1, #8 + ldr r6, _0221D394 ; =0x0000FF00 + and r1, r6 + orr r7, r1 + lsl r1, r7, #0x10 + lsr r1, r1, #0x10 + str r1, [r4] + ldrh r1, [r0, #2] + asr r4, r1, #8 + and r4, r3 + lsl r1, r1, #8 + and r1, r6 + orr r4, r1 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + str r1, [r2] + add r0, r0, #4 + ldr r2, [r2] + add r2, #0xb + mov r1, #7 + bic r2, r1 + sub r1, r2, #4 + add r1, r0, r1 + str r1, [r5] + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_0221D394: .word 0x0000FF00 + + thumb_func_start MOD13_0221D398 +MOD13_0221D398: ; 0x0221D398 + push {r4, r5, r6, r7} + mov r3, #0 + ldrh r4, [r0] + asr r7, r4, #8 + mov r5, #0xff + and r7, r5 + lsl r4, r4, #8 + ldr r6, _0221D404 ; =0x0000FF00 + and r4, r6 + orr r7, r4 + lsl r4, r7, #0x10 + lsr r4, r4, #0x10 + str r4, [r1] + ldrh r1, [r0, #2] + asr r4, r1, #8 + and r4, r5 + lsl r1, r1, #8 + and r1, r6 + orr r4, r1 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + str r1, [r2] + add r4, r0, #6 + ldr r1, [r2] + add r4, r4, r1 + add r2, r0, #0 + cmp r0, r4 + bhs _0221D3DA +_0221D3D0: + ldrb r1, [r2] + add r3, r3, r1 + add r2, r2, #1 + cmp r2, r4 + blo _0221D3D0 +_0221D3DA: + ldrh r2, [r4] + lsl r1, r3, #0x10 + lsr r4, r1, #0x10 + asr r3, r2, #8 + mov r1, #0xff + and r3, r1 + lsl r2, r2, #8 + ldr r1, _0221D404 ; =0x0000FF00 + and r2, r1 + orr r3, r2 + lsl r1, r3, #0x10 + lsr r1, r1, #0x10 + cmp r4, r1 + beq _0221D3FC + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_0221D3FC: + add r0, r0, #6 + pop {r4, r5, r6, r7} + bx lr + nop +_0221D404: .word 0x0000FF00 + + thumb_func_start MOD13_0221D408 +MOD13_0221D408: ; 0x0221D408 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, _0221D410 ; =MOD13_0221D414 + bx r3 + .align 2, 0 +_0221D410: .word MOD13_0221D414 + + thumb_func_start MOD13_0221D414 +MOD13_0221D414: ; 0x0221D414 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + mov r0, #8 + add r1, sp, #4 + strb r0, [r1] + mov r0, #2 + strb r0, [r1, #1] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #8] + ldr r0, _0221D454 ; =0x000001E6 + strh r0, [r1, #2] + bl FUN_02099C78 + add r1, sp, #0xc + bl FUN_0209A174 + str r4, [sp] + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0xc + add r3, r6, #0 + bl MOD13_0221D458 + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 + nop +_0221D454: .word 0x000001E6 + + thumb_func_start MOD13_0221D458 +MOD13_0221D458: ; 0x0221D458 + push {lr} + sub sp, #4 + str r1, [sp] + add r1, r3, #0 + ldr r2, [sp, #8] + mov r3, #0 + bl FUN_0209A7D0 + cmp r0, #0 + bge _0221D470 + mov r0, #3 + mvn r0, r0 +_0221D470: + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221D478 +MOD13_0221D478: ; 0x0221D478 + push {r4, r5, r6, r7, lr} + sub sp, #0x9c + mov r0, #0 + str r0, [sp, #0x18] + mvn r4, r0 + str r0, [sp, #0x48] + ldr r0, _0221D738 ; =0x02241B20 + ldr r0, [r0] + str r0, [sp, #0x10] + mov r1, #0x30 + mul r0, r1 + str r0, [sp, #0x10] + add r0, #0x34 + str r0, [sp, #0x10] + mov r0, #1 + ldr r1, [sp, #0x10] + bl MOD13_0221AA64 + str r0, [sp, #0x14] + cmp r0, #0 + bne _0221D4A4 + b _0221D718 +_0221D4A4: + mov r0, #1 + ldr r1, [sp, #0x10] + bl MOD13_0221AA64 + str r0, [sp, #0x18] + cmp r0, #0 + bne _0221D4B4 + b _0221D718 +_0221D4B4: + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #0x44] + str r0, [sp, #0x3c] + str r0, [sp, #0x38] + add r6, sp, #0x6c + str r0, [sp, #0x34] + lsl r7, r0, #0 + str r0, [sp, #0x28] + str r0, [sp, #0x2c] + str r0, [sp, #0x30] + str r0, [sp, #0x40] + b _0221D6E0 +_0221D4CE: + bl MOD13_0221AA90 + ldr r1, _0221D73C ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221D4DC + b _0221D6F0 +_0221D4DC: + ldr r0, [sp, #0x28] + lsl r1, r0, #0 + lsl r2, r0, #0 + ldr r3, _0221D740 ; =0x0030BFFE + bl MOD13_0221DF9C + cmp r0, #0 + bne _0221D4F2 + mov r0, #1 + mvn r4, r0 + b _0221D718 +_0221D4F2: + add r0, r6, #0 + bl OS_CreateAlarm + mov r0, #0x13 + str r0, [sp] + add r0, r6, #0 + ldr r1, _0221D744 ; =0x000FFB10 + ldr r2, [sp, #0x2c] + ldr r3, _0221D748 ; =MOD13_0221DC1C + bl OS_SetAlarm + mov r5, #1 + ldr r4, [sp, #0x30] +_0221D50C: + mov r0, #0xa + bl OS_Sleep + bl MOD13_0221AA90 + ldr r1, _0221D73C ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + bhs _0221D5A8 + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + bne _0221D5A8 + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221D5A4 +_0221D52E: + cmp r0, #0x13 + bhi _0221D59A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221D540: ; jump table + .short _0221D59A - _0221D540 + 1 ; case 0 + .short _0221D59A - _0221D540 + 1 ; case 1 + .short _0221D59A - _0221D540 + 1 ; case 2 + .short _0221D59A - _0221D540 + 1 ; case 3 + .short _0221D59C - _0221D540 + 1 ; case 4 + .short _0221D56C - _0221D540 + 1 ; case 5 + .short _0221D59A - _0221D540 + 1 ; case 6 + .short _0221D59A - _0221D540 + 1 ; case 7 + .short _0221D59C - _0221D540 + 1 ; case 8 + .short _0221D59A - _0221D540 + 1 ; case 9 + .short _0221D596 - _0221D540 + 1 ; case 10 + .short _0221D59A - _0221D540 + 1 ; case 11 + .short _0221D59A - _0221D540 + 1 ; case 12 + .short _0221D59A - _0221D540 + 1 ; case 13 + .short _0221D59A - _0221D540 + 1 ; case 14 + .short _0221D59A - _0221D540 + 1 ; case 15 + .short _0221D59A - _0221D540 + 1 ; case 16 + .short _0221D59A - _0221D540 + 1 ; case 17 + .short _0221D59C - _0221D540 + 1 ; case 18 + .short _0221D568 - _0221D540 + 1 ; case 19 +_0221D568: + add r5, r7, #0 + b _0221D59C +_0221D56C: + ldr r0, _0221D750 ; =0x02241B0C + ldr r0, [r0] + ldr r1, _0221D738 ; =0x02241B20 + ldr r1, [r1] + bl MOD13_0221E0A8 + cmp r0, r4 + ble _0221D59C + add r4, r0, #0 + add r0, r6, #0 + bl OS_CancelAlarm + mov r0, #0x13 + str r0, [sp] + add r0, r6, #0 + ldr r1, _0221D744 ; =0x000FFB10 + ldr r2, [sp, #0x34] + ldr r3, _0221D748 ; =MOD13_0221DC1C + bl OS_SetAlarm + b _0221D59C +_0221D596: + ldr r5, [sp, #0x38] + b _0221D59C +_0221D59A: + ldr r5, [sp, #0x3c] +_0221D59C: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221D52E +_0221D5A4: + cmp r5, #0 + bne _0221D50C +_0221D5A8: + add r0, r6, #0 + bl OS_CancelAlarm +_0221D5AE: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221D5AE + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221D5C0 + b _0221D6F0 +_0221D5C0: + ldr r0, [sp, #0x40] + str r0, [sp, #0xc] + ldr r0, _0221D738 ; =0x02241B20 + ldr r0, [r0] + cmp r4, r0 + blt _0221D5D2 + mov r0, #5 + mvn r4, r0 + b _0221D718 +_0221D5D2: + ldr r0, [sp, #0x40] + str r0, [sp, #8] + ldr r0, _0221D750 ; =0x02241B0C + ldr r0, [r0] + str r0, [sp, #0x1c] + cmp r4, #0 + ble _0221D66A + ldr r0, [sp, #0x14] + str r0, [sp, #0x20] + add r0, #8 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + str r0, [sp, #0x24] + lsl r5, r0, #0 + add r5, #0x2c +_0221D5F0: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + add r1, #0xc + mov r2, #0x20 + bl memcpy + ldr r0, [sp, #0x1c] + ldrh r1, [r0, #0xa] + ldr r0, [sp, #0x24] + str r1, [r0, #4] + ldr r0, [sp, #0x1c] + ldrh r1, [r0, #0xa] + ldr r0, [sp, #0x24] + add r1, r0, r1 + ldr r0, [sp, #0x44] + strb r0, [r1, #8] + ldr r0, [sp, #0x1c] + ldrh r1, [r0, #0x2c] + mov r0, #0x10 + and r1, r0 + cmp r1, #0 + beq _0221D620 + mov r1, #1 + b _0221D622 +_0221D620: + ldr r1, [sp, #0x44] +_0221D622: + ldr r0, [sp, #0x24] + strh r1, [r0, #0x32] + ldr r0, [sp, #0x1c] + add r0, r0, #4 + ldr r1, [sp, #0x1c] + ldrb r1, [r1, #4] + strb r1, [r5] + ldrb r1, [r0, #1] + strb r1, [r5, #1] + ldrb r1, [r0, #2] + strb r1, [r5, #2] + ldrb r1, [r0, #3] + strb r1, [r5, #3] + ldrb r1, [r0, #4] + strb r1, [r5, #4] + ldrb r0, [r0, #5] + strb r0, [r5, #5] + ldr r0, [sp, #0x20] + add r0, #0x30 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r0, #0x30 + str r0, [sp, #0x24] + add r5, #0x30 + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + add r0, #0xc0 + str r0, [sp, #0x1c] + ldr r0, [sp, #8] + cmp r0, r4 + blt _0221D5F0 +_0221D66A: + ldr r0, [sp, #0x14] + str r4, [r0] + ldr r0, _0221D754 ; =0x02241AE8 + ldr r0, [r0] + cmp r0, #1 + beq _0221D6C6 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + add r2, sp, #0x48 + bl MOD13_0221D764 + cmp r0, #0 + beq _0221D6C6 + ldr r3, [sp, #0x48] + ldr r0, [sp, #0x14] + add r2, r0, #4 + mov r0, #0x30 + add r1, r3, #0 + mul r1, r0 + add r4, r2, r1 + ldr r0, _0221D758 ; =0x02241AC8 + str r3, [r0] + ldr r0, _0221D75C ; =0x02241BC4 + add r1, r4, #4 + bl strcpy + ldr r1, _0221D760 ; =0x02241B3C + add r0, r4, #0 + add r0, #0x28 + add r4, #0x28 + ldrb r2, [r4] + strb r2, [r1] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] + add r0, sp, #0x4c + bl MOD13_0221A9D8 + b _0221D6F0 +_0221D6C6: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + bl memcpy + mov r1, #2 + ldr r0, _0221D754 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221A778 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0221D6E0: + ldr r0, [sp, #4] + cmp r0, #0x1e + bge _0221D6F0 + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + bne _0221D6F0 + b _0221D4CE +_0221D6F0: + ldr r0, [sp, #4] + cmp r0, #0x1e + bge _0221D702 + bl MOD13_0221AA90 + ldr r1, _0221D73C ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + bls _0221D708 +_0221D702: + mov r0, #2 + mvn r4, r0 + b _0221D718 +_0221D708: + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221D716 + mov r0, #7 + mvn r4, r0 + b _0221D718 +_0221D716: + mov r4, #1 +_0221D718: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0221D722 + bl MOD13_0221AA50 +_0221D722: + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _0221D72C + bl MOD13_0221AA50 +_0221D72C: + add r0, r4, #0 + add sp, #0x9c + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D738: .word 0x02241B20 +_0221D73C: .word 0x0223F870 +_0221D740: .word 0x0030BFFE +_0221D744: .word 0x000FFB10 +_0221D748: .word MOD13_0221DC1C +_0221D74C: .word 0x02241AC0 +_0221D750: .word 0x02241B0C +_0221D754: .word 0x02241AE8 +_0221D758: .word 0x02241AC8 +_0221D75C: .word 0x02241BC4 +_0221D760: .word 0x02241B3C + + thumb_func_start MOD13_0221D764 +MOD13_0221D764: ; 0x0221D764 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp] + add r5, r0, #4 + lsl r0, r1, #0 + add r4, r0, #4 + ldr r0, [sp, #0xc] + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #0 + bls _0221D832 + ldr r0, [sp, #0xc] + str r0, [sp, #0x28] + str r0, [sp, #0x24] +_0221D78E: + add r2, sp, #0x30 + mov r1, #0x22 +_0221D792: + ldr r0, [sp, #0x24] + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221D792 + add r0, sp, #0x30 + add r1, r5, #4 + mov r2, #0x20 + bl memcpy + ldr r2, [r5] + ldr r1, [sp, #0x28] + add r0, sp, #0x30 + strb r1, [r0, r2] + lsl r7, r1, #0 + ldr r0, [sp, #4] + ldr r0, [r0] + str r0, [sp, #0x1c] + cmp r0, #0 + bls _0221D816 + ldr r6, [r5] +_0221D7BE: + cmp r6, #0 + beq _0221D816 + cmp r6, #0x20 + bhi _0221D816 + cmp r6, #1 + bne _0221D7D4 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0221D816 + cmp r0, #0x20 + beq _0221D816 +_0221D7D4: + add r0, sp, #0x30 + bl strlen + add r2, r0, #0 + add r0, sp, #0x30 + add r1, r4, #4 + bl memcmp + cmp r0, #0 + bne _0221D80C + add r0, r5, #0 + add r0, #0x28 + add r1, r4, #0 + add r1, #0x28 + mov r2, #4 + bl memcmp + cmp r0, #0 + bne _0221D80C + ldrh r1, [r5, #0x2e] + ldrh r0, [r4, #0x2e] + cmp r1, r0 + beq _0221D80C + cmp r1, #0 + bne _0221D80C + mov r0, #1 + str r0, [sp, #0xc] + b _0221D816 +_0221D80C: + add r4, #0x30 + add r7, r7, #1 + ldr r0, [sp, #0x1c] + cmp r7, r0 + blo _0221D7BE +_0221D816: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221D832 + add r5, #0x30 + ldr r0, [sp, #4] + add r4, r0, #4 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r1, [r0] + ldr r0, [sp, #0x20] + cmp r0, r1 + blo _0221D78E +_0221D832: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221D91A + add r2, sp, #0x50 + add r2, #2 + mov r1, #0x22 + mov r0, #0 +_0221D840: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221D840 + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [sp] + add r5, r0, #4 + ldr r0, [sp, #4] + add r4, r0, #4 + ldr r6, [sp, #0x14] + ldr r0, [r0] + cmp r0, #0 + bls _0221D8A0 + add r7, sp, #0x50 + add r7, #2 +_0221D864: + add r0, r7, #0 + add r1, r4, #4 + mov r2, #0x20 + bl memcpy + ldr r1, [r4] + ldr r0, [sp, #0x14] + strb r0, [r7, r1] + ldr r0, _0221D934 ; =0x0223F878 + bl strlen + add r2, r0, #0 + add r0, r7, #0 + ldr r1, _0221D934 ; =0x0223F878 + bl memcmp + cmp r0, #0 + bne _0221D894 + ldrh r0, [r4, #0x2e] + cmp r0, #0 + bne _0221D894 + mov r0, #1 + str r0, [sp, #0x18] + b _0221D8A0 +_0221D894: + add r4, #0x30 + add r6, r6, #1 + ldr r0, [sp, #4] + ldr r0, [r0] + cmp r6, r0 + blo _0221D864 +_0221D8A0: + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #0 + bls _0221D90A + ldr r7, _0221D934 ; =0x0223F878 + add r4, sp, #0x50 + add r4, #2 + ldr r0, [sp, #0x20] + str r0, [sp, #0x2c] +_0221D8B6: + add r0, r4, #0 + add r1, r5, #4 + mov r2, #0x20 + bl memcpy + ldr r1, [r5] + ldr r0, [sp, #0x2c] + strb r0, [r4, r1] + add r0, r4, #0 + bl strlen + add r6, r0, #0 + add r0, r7, #0 + bl strlen + cmp r6, r0 + bne _0221D8F8 + add r0, r7, #0 + bl strlen + add r2, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl memcmp + cmp r0, #0 + bne _0221D8F8 + ldrh r0, [r5, #0x2e] + cmp r0, #0 + bne _0221D8F8 + mov r0, #1 + str r0, [sp, #0x14] + b _0221D90A +_0221D8F8: + add r5, #0x30 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r1, [r0] + ldr r0, [sp, #0x20] + cmp r0, r1 + blo _0221D8B6 +_0221D90A: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0221D91A + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _0221D91A + mov r0, #1 + str r0, [sp, #0xc] +_0221D91A: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _0221D92A + ldr r1, [sp, #0x20] + ldr r0, [sp, #8] + str r1, [r0] + mov r0, #1 + str r0, [sp, #0x10] +_0221D92A: + ldr r0, [sp, #0x10] + add sp, #0x74 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221D934: .word 0x0223F878 + + thumb_func_start MOD13_0221D938 +MOD13_0221D938: ; 0x0221D938 + push {r4, r5, r6, lr} + mov r5, #1 + ldr r0, _0221D998 ; =0x02241AD0 + ldr r0, [r0] + cmp r0, #0 + beq _0221D982 + bl MOD13_0221DF5C + cmp r0, #0 + beq _0221D97C + mov r4, #0 + mov r6, #0xa +_0221D950: + add r0, r6, #0 + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221D978 +_0221D95E: + cmp r0, #4 + beq _0221D970 + cmp r0, #5 + beq _0221D970 + cmp r0, #0xe + bne _0221D96E + add r5, r4, #0 + b _0221D970 +_0221D96E: + add r5, r4, #0 +_0221D970: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221D95E +_0221D978: + cmp r5, #0 + bne _0221D950 +_0221D97C: + mov r1, #0 + ldr r0, _0221D998 ; =0x02241AD0 + str r1, [r0] +_0221D982: + ldr r0, _0221D99C ; =0x02241AD4 + ldr r1, [r0] + cmp r1, #0 + beq _0221D992 + mov r1, #0 + str r1, [r0] + bl THUNK_FUN_02099BC8 +_0221D992: + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221D998: .word 0x02241AD0 +_0221D99C: .word 0x02241AD4 + + thumb_func_start MOD13_0221D9A0 +MOD13_0221D9A0: ; 0x0221D9A0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r5, #1 + mvn r6, r5 + ldr r0, _0221DACC ; =0x02241B0C + ldr r2, [r0] + ldr r0, _0221DAD0 ; =0x02241AC8 + ldr r1, [r0] + mov r0, #0xc0 + mul r1, r0 + add r7, r2, r1 + cmp r7, #0 + bne _0221D9C4 + mov r0, #0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D9C4: + add r0, r7, #0 + mov r1, #0 + ldr r2, _0221DAD4 ; =0x00030000 + bl MOD13_0221DE44 + cmp r0, #0 + bne _0221D9DE + lsl r0, r5, #0 + mvn r0, r0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D9DE: + add r0, sp, #8 + bl OS_CreateAlarm + mov r0, #0x12 + str r0, [sp] + add r0, sp, #8 + ldr r1, _0221DAD8 ; =0x003FEC42 + mov r2, #0 + ldr r3, _0221DADC ; =MOD13_0221DC1C + bl OS_SetAlarm + mov r4, #0 + mov r0, #7 + mvn r0, r0 + str r0, [sp, #4] +_0221D9FC: + bl MOD13_0221AA90 + ldr r1, _0221DAE0 ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221DA0E + mov r0, #2 + mvn r6, r0 + b _0221DA94 +_0221DA0E: + ldr r0, _0221DAE4 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221DA1C + mov r0, #7 + mvn r6, r0 + b _0221DA94 +_0221DA1C: + mov r0, #0xa + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221DA90 +_0221DA2A: + cmp r0, #0xc + bgt _0221DA44 + cmp r0, #0xc + bge _0221DA5A + cmp r0, #5 + bgt _0221DA86 + cmp r0, #4 + blt _0221DA86 + cmp r0, #4 + beq _0221DA88 + cmp r0, #5 + beq _0221DA88 + b _0221DA86 +_0221DA44: + cmp r0, #0x13 + bgt _0221DA86 + cmp r0, #0xd + blt _0221DA86 + cmp r0, #0xd + beq _0221DA60 + cmp r0, #0x12 + beq _0221DA88 + cmp r0, #0x13 + beq _0221DA88 + b _0221DA86 +_0221DA5A: + add r5, r4, #0 + mov r6, #1 + b _0221DA88 +_0221DA60: + ldr r0, _0221DAE4 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221DA6E + add r5, r4, #0 + ldr r6, [sp, #4] + b _0221DA88 +_0221DA6E: + add r0, r7, #0 + add r1, r4, #0 + ldr r2, _0221DAD4 ; =0x00030000 + bl MOD13_0221DE44 + cmp r0, #0 + bne _0221DA88 + add r0, r6, #0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DA86: + add r5, r4, #0 +_0221DA88: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DA2A +_0221DA90: + cmp r5, #0 + bne _0221D9FC +_0221DA94: + add r0, sp, #8 + bl OS_CancelAlarm +_0221DA9A: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DA9A + cmp r6, #0 + ble _0221DAC2 + mov r1, #1 + ldr r0, _0221DAE8 ; =0x02241AD0 + str r1, [r0] + ldr r0, _0221DAEC ; =0x0223F8D4 + bl FUN_0209A2C0 + cmp r0, #0 + bge _0221DABC + mov r0, #1 + mvn r6, r0 + b _0221DAC2 +_0221DABC: + mov r1, #1 + ldr r0, _0221DAF0 ; =0x02241AD4 + str r1, [r0] +_0221DAC2: + add r0, r6, #0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221DACC: .word 0x02241B0C +_0221DAD0: .word 0x02241AC8 +_0221DAD4: .word 0x00030000 +_0221DAD8: .word 0x003FEC42 +_0221DADC: .word MOD13_0221DC1C +_0221DAE0: .word 0x0223F870 +_0221DAE4: .word 0x02241AC0 +_0221DAE8: .word 0x02241AD0 +_0221DAEC: .word 0x0223F8D4 +_0221DAF0: .word 0x02241AD4 + + thumb_func_start MOD13_0221DAF4 +MOD13_0221DAF4: ; 0x0221DAF4 + push {r4, r5, r6, lr} + mov r5, #1 + bl MOD13_0221DEF4 + cmp r0, #0 + beq _0221DB30 + mov r4, #0 + mov r6, #0xa +_0221DB04: + add r0, r6, #0 + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221DB2C +_0221DB12: + cmp r0, #4 + beq _0221DB24 + cmp r0, #5 + beq _0221DB24 + cmp r0, #0x14 + bne _0221DB22 + add r5, r4, #0 + b _0221DB24 +_0221DB22: + add r5, r4, #0 +_0221DB24: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DB12 +_0221DB2C: + cmp r5, #0 + bne _0221DB04 +_0221DB30: + ldr r0, _0221DB4C ; =0x02241B04 + ldr r0, [r0] + cmp r0, #0 + beq _0221DB44 + ldr r1, _0221DB50 ; =0x02241ABC + ldr r1, [r1] + blx r1 + mov r1, #0 + ldr r0, _0221DB4C ; =0x02241B04 + str r1, [r0] +_0221DB44: + mov r0, #1 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221DB4C: .word 0x02241B04 +_0221DB50: .word 0x02241ABC + + thumb_func_start MOD13_0221DB54 +MOD13_0221DB54: ; 0x0221DB54 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + mov r5, #1 + ldr r0, _0221DBFC ; =0x02241B20 + str r6, [r0] + bl MOD13_0221DCA4 + mov r0, #0xd0 + add r7, r6, #0 + mul r7, r0 + ldr r0, _0221DC00 ; =0x000024D0 + add r1, r7, r0 + mov r0, #0xc0 + mul r6, r0 + add r0, r1, r6 + ldr r1, _0221DC04 ; =0x02241AB4 + ldr r1, [r1] + blx r1 + ldr r1, _0221DC08 ; =0x02241B04 + str r0, [r1] + cmp r0, #0 + bne _0221DB8E + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DB8E: + mov r3, #0x1f + add r1, r0, r3 + bic r1, r3 + ldr r0, _0221DC0C ; =0x02241AF0 + str r1, [r0] + ldr r0, _0221DC10 ; =0x00002490 + add r2, r7, r0 + add r0, r1, r2 + add r6, r0, r3 + bic r6, r3 + ldr r0, _0221DC14 ; =0x02241B0C + str r6, [r0] + ldr r0, _0221DC18 ; =MOD13_0221DC28 + bl MOD13_0221DD4C + cmp r0, #0 + bne _0221DBBC + lsl r0, r5, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DBBC: + mov r0, #0xa + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221DBEE + mov r7, #0 + mov r1, #1 + mvn r6, r1 +_0221DBD0: + cmp r0, #4 + beq _0221DBE6 + cmp r0, #5 + beq _0221DBE6 + cmp r0, #6 + bne _0221DBE2 + add r5, r7, #0 + mov r4, #1 + b _0221DBE6 +_0221DBE2: + add r5, r7, #0 + add r4, r6, #0 +_0221DBE6: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DBD0 +_0221DBEE: + cmp r5, #0 + bne _0221DBBC + add r0, r4, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221DBFC: .word 0x02241B20 +_0221DC00: .word 0x000024D0 +_0221DC04: .word 0x02241AB4 +_0221DC08: .word 0x02241B04 +_0221DC0C: .word 0x02241AF0 +_0221DC10: .word 0x00002490 +_0221DC14: .word 0x02241B0C +_0221DC18: .word MOD13_0221DC28 + + thumb_func_start MOD13_0221DC1C +MOD13_0221DC1C: ; 0x0221DC1C + mov r1, #0 + ldr r3, _0221DC24 ; =MOD13_0221DC28 + bx r3 + nop +_0221DC24: .word MOD13_0221DC28 + + thumb_func_start MOD13_0221DC28 +MOD13_0221DC28: ; 0x0221DC28 + push {r4} + sub sp, #4 + ldr r1, _0221DC58 ; =0x02241B1C + ldr r2, [r1] + ldr r1, _0221DC5C ; =0x02241B18 + ldr r3, [r1] + add r4, r3, #1 + cmp r4, r2 + beq _0221DC50 + add r2, r2, #3 + cmp r3, r2 + beq _0221DC50 + lsl r3, r3, #2 + ldr r2, _0221DC60 ; =0x02241B4C + str r0, [r2, r3] + str r4, [r1] + cmp r4, #4 + blt _0221DC50 + mov r0, #0 + str r0, [r1] +_0221DC50: + add sp, #4 + pop {r4} + bx lr + nop +_0221DC58: .word 0x02241B1C +_0221DC5C: .word 0x02241B18 +_0221DC60: .word 0x02241B4C + + thumb_func_start MOD13_0221DC64 +MOD13_0221DC64: ; 0x0221DC64 + push {r4, lr} + bl OS_DisableInterrupts + ldr r3, _0221DC98 ; =0x02241B1C + ldr r1, [r3] + ldr r2, _0221DC9C ; =0x02241B18 + ldr r2, [r2] + cmp r2, r1 + bne _0221DC7A + mov r4, #0 + b _0221DC8C +_0221DC7A: + lsl r4, r1, #2 + ldr r2, _0221DCA0 ; =0x02241B4C + ldr r4, [r2, r4] + add r1, r1, #1 + str r1, [r3] + cmp r1, #4 + blt _0221DC8C + mov r1, #0 + str r1, [r3] +_0221DC8C: + bl OS_RestoreInterrupts + add r0, r4, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221DC98: .word 0x02241B1C +_0221DC9C: .word 0x02241B18 +_0221DCA0: .word 0x02241B4C + + thumb_func_start MOD13_0221DCA4 +MOD13_0221DCA4: ; 0x0221DCA4 + push {lr} + sub sp, #4 + bl OS_DisableInterrupts + mov r3, #0 + ldr r1, _0221DCCC ; =0x02241B18 + str r3, [r1] + ldr r1, _0221DCD0 ; =0x02241B1C + str r3, [r1] + ldr r2, _0221DCD4 ; =0x02241B4C + add r1, r3, #0 +_0221DCBA: + stmia r2!, {r1} + add r3, r3, #1 + cmp r3, #4 + blt _0221DCBA + bl OS_RestoreInterrupts + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221DCCC: .word 0x02241B18 +_0221DCD0: .word 0x02241B1C +_0221DCD4: .word 0x02241B4C + + thumb_func_start MOD13_0221DCD8 +MOD13_0221DCD8: ; 0x0221DCD8 + push {r4, lr} + add r4, r1, #0 + cmp r4, #0 + beq _0221DCF8 + cmp r2, #0 + ble _0221DCF8 + ldr r0, _0221DD00 ; =0x02241B6C + bl OS_LockMutex + add r0, r4, #0 + ldr r1, _0221DD04 ; =0x02241ABC + ldr r1, [r1] + blx r1 + ldr r0, _0221DD00 ; =0x02241B6C + bl OS_UnlockMutex +_0221DCF8: + pop {r4} + pop {r3} + bx r3 + nop +_0221DD00: .word 0x02241B6C +_0221DD04: .word 0x02241ABC + + thumb_func_start MOD13_0221DD08 +MOD13_0221DD08: ; 0x0221DD08 + push {r4, lr} + add r4, r1, #0 + cmp r4, #0 + ble _0221DD2E + ldr r0, _0221DD38 ; =0x02241B6C + bl OS_LockMutex + add r0, r4, #0 + ldr r1, _0221DD3C ; =0x02241AB4 + ldr r1, [r1] + blx r1 + add r4, r0, #0 + ldr r0, _0221DD38 ; =0x02241B6C + bl OS_UnlockMutex + add r0, r4, #0 + pop {r4} + pop {r3} + bx r3 +_0221DD2E: + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + nop +_0221DD38: .word 0x02241B6C +_0221DD3C: .word 0x02241AB4 + + thumb_func_start MOD13_0221DD40 +MOD13_0221DD40: ; 0x0221DD40 + ldr r0, _0221DD48 ; =0x02241ADC + ldr r0, [r0] + bx lr + nop +_0221DD48: .word 0x02241ADC + + thumb_func_start MOD13_0221DD4C +MOD13_0221DD4C: ; 0x0221DD4C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DE20 ; =0x02241AD8 + str r5, [r0] + add r2, r5, #0 + add r2, #0x63 + mov r0, #3 + bic r2, r0 + ldr r0, _0221DE24 ; =0x02241AB8 + str r2, [r0] + add r1, r2, #0 + add r1, #0x2f + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221DE28 ; =0x02241AEC + str r1, [r3] + ldr r3, _0221DE2C ; =0x0000231F + add r1, r1, r3 + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221DE30 ; =0x02241AFC + str r1, [r3] + add r1, #0xdf + mov r3, #0x1f + bic r1, r3 + str r1, [r2, #4] + ldr r1, [r0] + add r3, r5, r7 + ldr r2, [r1, #4] + sub r2, r3, r2 + str r2, [r1, #8] + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0xc] + ldr r1, [r0] + mov r0, #3 + str r0, [r1] + ldr r0, _0221DE34 ; =0x02241B30 + str r6, [r0] + ldr r0, _0221DE38 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #0 + bne _0221DDD2 + ldr r0, _0221DE28 ; =0x02241AEC + ldr r0, [r0] + ldr r1, _0221DE3C ; =0x00002300 + bl FUN_020A7E80 + cmp r0, #0 + beq _0221DDCC + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DDCC: + mov r1, #1 + ldr r0, _0221DE38 ; =0x02241ADC + str r1, [r0] +_0221DDD2: + ldr r0, _0221DE38 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #1 + bne _0221DE0E + ldr r0, _0221DE24 ; =0x02241AB8 + ldr r0, [r0] + ldr r1, _0221DE40 ; =MOD13_0221E178 + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221DDF8 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DDF8: + mov r1, #4 + ldr r0, _0221DE38 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DE0E: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221DE20: .word 0x02241AD8 +_0221DE24: .word 0x02241AB8 +_0221DE28: .word 0x02241AEC +_0221DE2C: .word 0x0000231F +_0221DE30: .word 0x02241AFC +_0221DE34: .word 0x02241B30 +_0221DE38: .word 0x02241ADC +_0221DE3C: .word 0x00002300 +_0221DE40: .word MOD13_0221E178 + + thumb_func_start MOD13_0221DE44 +MOD13_0221DE44: ; 0x0221DE44 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DEE4 ; =0x02241B08 + str r6, [r0] + cmp r5, #0 + beq _0221DE6A + add r0, r5, #0 + ldr r1, _0221DEE8 ; =0x02241AD8 + ldr r1, [r1] + mov r2, #0x60 + bl MI_CpuCopy8 + b _0221DE76 +_0221DE6A: + ldr r0, _0221DEE8 ; =0x02241AD8 + ldr r0, [r0] + mov r1, #0 + mov r2, #0x60 + bl MI_CpuFill8 +_0221DE76: + add r0, r7, #0 + ldr r1, _0221DEEC ; =0x02241AFC + ldr r1, [r1] + mov r2, #0xc0 + bl MIi_CpuCopy32 + bl MOD13_0221E0F4 + cmp r0, #1 + bne _0221DEA0 + mov r1, #8 + ldr r0, _0221DEF0 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DEA0: + ldr r0, _0221DEF0 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #3 + bne _0221DED2 + ldr r0, _0221DEEC ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221DEE8 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221DEE4 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221DED2 + mov r1, #8 + ldr r0, _0221DEF0 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DED2: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221DEE4: .word 0x02241B08 +_0221DEE8: .word 0x02241AD8 +_0221DEEC: .word 0x02241AFC +_0221DEF0: .word 0x02241ADC + + thumb_func_start MOD13_0221DEF4 +MOD13_0221DEF4: ; 0x0221DEF4 + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DF58 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #3 + bne _0221DF2E + bl FUN_020A7AC8 + cmp r0, #3 + beq _0221DF1A + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 +_0221DF1A: + mov r1, #2 + ldr r0, _0221DF58 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221DF2E: + bl MOD13_0221E0F4 + cmp r0, #1 + bne _0221DF4A + mov r1, #2 + ldr r0, _0221DF58 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221DF4A: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221DF58: .word 0x02241ADC + + thumb_func_start MOD13_0221DF5C +MOD13_0221DF5C: ; 0x0221DF5C + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DF98 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #7 + bne _0221DF88 + bl FUN_020A7488 + cmp r0, #3 + bne _0221DF88 + mov r1, #4 + ldr r0, _0221DF98 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221DF88: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + nop +_0221DF98: .word 0x02241ADC + + thumb_func_start MOD13_0221DF9C +MOD13_0221DF9C: ; 0x0221DF9C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl OS_DisableInterrupts + add r7, r0, #0 + ldr r1, _0221E088 ; =0x02241B10 + ldr r0, [sp] + str r0, [r1] + ldr r0, _0221E08C ; =0x02241B44 + ldr r1, _0221E090 ; =0x02241AF4 + str r0, [r1] + cmp r5, #0 + beq _0221DFD0 + mov r2, #0 +_0221DFC0: + ldrb r1, [r5] + add r5, r5, #1 + strb r1, [r0] + add r0, r0, #1 + add r2, r2, #1 + cmp r2, #6 + blt _0221DFC0 + b _0221DFDE +_0221DFD0: + mov r1, #0xff + mov r2, #6 + bl MI_CpuFill8 + ldr r1, _0221E094 ; =0x020FF590 + ldr r0, _0221E090 ; =0x02241AF4 + str r1, [r0] +_0221DFDE: + ldr r2, _0221E098 ; =0x02241BA4 + ldr r0, _0221E09C ; =0x02241AF8 + str r2, [r0] + cmp r4, #0 + beq _0221E01A + cmp r6, #0 + ble _0221E01A + cmp r6, #0x20 + bge _0221E01A + mov r1, #0 + cmp r6, #0 + ble _0221E004 +_0221DFF6: + ldrb r0, [r4] + add r4, r4, #1 + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, r6 + blt _0221DFF6 +_0221E004: + cmp r1, #0x20 + bge _0221E02A + ldr r0, _0221E098 ; =0x02241BA4 + add r2, r0, r1 + mov r0, #0 +_0221E00E: + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, #0x20 + blt _0221E00E + b _0221E02A +_0221E01A: + ldr r0, _0221E098 ; =0x02241BA4 + mov r1, #0xff + mov r2, #0x20 + bl MI_CpuFill8 + ldr r1, _0221E0A0 ; =0x020FF598 + ldr r0, _0221E09C ; =0x02241AF8 + str r1, [r0] +_0221E02A: + ldr r0, _0221E0A4 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #3 + bne _0221E05A + ldr r0, _0221E08C ; =0x02241B44 + ldr r1, _0221E09C ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E088 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E078 + mov r1, #6 + ldr r0, _0221E0A4 ; =0x02241ADC + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221E05A: + bl MOD13_0221E0F4 + cmp r0, #1 + bne _0221E078 + mov r1, #6 + ldr r0, _0221E0A4 ; =0x02241ADC + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221E078: + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221E088: .word 0x02241B10 +_0221E08C: .word 0x02241B44 +_0221E090: .word 0x02241AF4 +_0221E094: .word 0x020FF590 +_0221E098: .word 0x02241BA4 +_0221E09C: .word 0x02241AF8 +_0221E0A0: .word 0x020FF598 +_0221E0A4: .word 0x02241ADC + + thumb_func_start MOD13_0221E0A8 +MOD13_0221E0A8: ; 0x0221E0A8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + mov r0, #1 + bl FUN_020A83D0 + bl FUN_020A846C + add r6, r0, #0 + cmp r6, #0 + ble _0221E0E2 + mov r4, #0 + cmp r6, #0 + ble _0221E0E2 +_0221E0C6: + cmp r4, r7 + bge _0221E0E2 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_020A8358 + add r1, r5, #0 + mov r2, #0xc0 + bl MIi_CpuCopy32 + add r4, r4, #1 + add r5, #0xc0 + cmp r4, r6 + blt _0221E0C6 +_0221E0E2: + mov r0, #0 + bl FUN_020A83D0 + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221E0F4 +MOD13_0221E0F4: ; 0x0221E0F4 + push {lr} + sub sp, #4 + ldr r0, _0221E16C ; =0x02241ADC + ldr r0, [r0] + cmp r0, #8 + bhi _0221E15C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221E10E: ; jump table + .short _0221E15C - _0221E10E + 1 ; case 0 + .short _0221E146 - _0221E10E + 1 ; case 1 + .short _0221E15C - _0221E10E + 1 ; case 2 + .short _0221E15C - _0221E10E + 1 ; case 3 + .short _0221E15C - _0221E10E + 1 ; case 4 + .short _0221E120 - _0221E10E + 1 ; case 5 + .short _0221E15C - _0221E10E + 1 ; case 6 + .short _0221E136 - _0221E10E + 1 ; case 7 + .short _0221E15C - _0221E10E + 1 ; case 8 +_0221E120: + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_020A7A90 + cmp r0, #3 + beq _0221E164 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E136: + bl FUN_020A7488 + cmp r0, #3 + beq _0221E164 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E146: + ldr r0, _0221E170 ; =0x02241AB8 + ldr r0, [r0] + ldr r1, _0221E174 ; =MOD13_0221E178 + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221E164 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E15C: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E164: + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221E16C: .word 0x02241ADC +_0221E170: .word 0x02241AB8 +_0221E174: .word MOD13_0221E178 + + thumb_func_start MOD13_0221E178 +MOD13_0221E178: ; 0x0221E178 + push {lr} + sub sp, #4 + cmp r0, #0 + bne _0221E182 + b _0221E556 +_0221E182: + mov r1, #0 + ldrsh r2, [r0, r1] + cmp r2, #9 + bls _0221E18C + b _0221E548 +_0221E18C: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #8] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add r2, pc + bx r2 +_0221E19A: ; jump table + .short _0221E548 - _0221E19A + 1 ; case 0 + .short _0221E1AE - _0221E19A + 1 ; case 1 + .short _0221E4A0 - _0221E19A + 1 ; case 2 + .short _0221E25E - _0221E19A + 1 ; case 3 + .short _0221E2E6 - _0221E19A + 1 ; case 4 + .short _0221E2A2 - _0221E19A + 1 ; case 5 + .short _0221E3C0 - _0221E19A + 1 ; case 6 + .short _0221E4E4 - _0221E19A + 1 ; case 7 + .short _0221E4FE - _0221E19A + 1 ; case 8 + .short _0221E510 - _0221E19A + 1 ; case 9 +_0221E1AE: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E244 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #4 + bne _0221E1D6 + mov r2, #3 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E1CC + b _0221E556 +_0221E1CC: + mov r0, #6 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E1D6: + cmp r2, #6 + bne _0221E20C + ldr r0, _0221E520 ; =0x02241AF4 + ldr r0, [r0] + ldr r1, _0221E524 ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E528 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E1F0 + b _0221E556 +_0221E1F0: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E200 + b _0221E556 +_0221E200: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E20C: + cmp r2, #8 + beq _0221E212 + b _0221E556 +_0221E212: + ldr r0, _0221E52C ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221E530 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221E534 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221E228 + b _0221E556 +_0221E228: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E238 + b _0221E556 +_0221E238: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E244: + mov r3, #1 + ldr r0, _0221E518 ; =0x02241ADC + str r3, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r3, [r0] + cmp r3, #0 + bne _0221E254 + b _0221E556 +_0221E254: + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221E25E: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E288 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #6 + beq _0221E270 + b _0221E556 +_0221E270: + mov r2, #5 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E27E + b _0221E556 +_0221E27E: + mov r0, #8 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E288: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E298 + b _0221E556 +_0221E298: + mov r0, #9 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E2A2: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E2CC + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #8 + beq _0221E2B4 + b _0221E556 +_0221E2B4: + mov r2, #7 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E2C2 + b _0221E556 +_0221E2C2: + mov r0, #0xc + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E2CC: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E2DC + b _0221E556 +_0221E2DC: + mov r0, #0xd + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E2E6: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E3A6 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #4 + bne _0221E30E + mov r2, #3 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E304 + b _0221E556 +_0221E304: + mov r0, #0xa + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E30E: + cmp r2, #6 + bne _0221E344 + ldr r0, _0221E520 ; =0x02241AF4 + ldr r0, [r0] + ldr r1, _0221E524 ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E528 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E328 + b _0221E556 +_0221E328: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E338 + b _0221E556 +_0221E338: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E344: + cmp r2, #2 + bne _0221E36E + bl FUN_020A7AC8 + cmp r0, #3 + bne _0221E352 + b _0221E556 +_0221E352: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E362 + b _0221E556 +_0221E362: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E36E: + cmp r2, #8 + beq _0221E374 + b _0221E556 +_0221E374: + ldr r0, _0221E52C ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221E530 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221E534 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221E38A + b _0221E556 +_0221E38A: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E39A + b _0221E556 +_0221E39A: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E3A6: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E3B6 + b _0221E556 +_0221E3B6: + mov r0, #0xb + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E3C0: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E488 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #4 + bne _0221E3E8 + mov r2, #3 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E3DE + b _0221E556 +_0221E3DE: + mov r0, #0xe + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E3E8: + cmp r2, #6 + bne _0221E41E + ldr r0, _0221E520 ; =0x02241AF4 + ldr r0, [r0] + ldr r1, _0221E524 ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E528 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E402 + b _0221E556 +_0221E402: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E412 + b _0221E556 +_0221E412: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E41E: + cmp r2, #2 + bne _0221E448 + bl FUN_020A7AC8 + cmp r0, #3 + bne _0221E42C + b _0221E556 +_0221E42C: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E43C + b _0221E556 +_0221E43C: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E448: + cmp r2, #8 + bne _0221E47A + ldr r0, _0221E52C ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221E530 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221E534 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + beq _0221E556 + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E47A: + cmp r2, #7 + bne _0221E556 + mov r1, #3 + str r1, [r0] + add sp, #4 + pop {r3} + bx r3 +_0221E488: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #0xf + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E4A0: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E4CC + ldr r0, _0221E518 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #2 + bne _0221E556 + bl FUN_020A7E0C + mov r1, #0 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #0x14 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E4CC: + mov r3, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r3, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r3, [r0] + cmp r3, #0 + beq _0221E556 + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221E4E4: + ldr r0, _0221E518 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #5 + bne _0221E556 + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #5 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E4FE: + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #4 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E510: + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + b _0221E538 + .align 2, 0 +_0221E518: .word 0x02241ADC +_0221E51C: .word 0x02241B30 +_0221E520: .word 0x02241AF4 +_0221E524: .word 0x02241AF8 +_0221E528: .word 0x02241B10 +_0221E52C: .word 0x02241AFC +_0221E530: .word 0x02241AD8 +_0221E534: .word 0x02241B08 +_0221E538: + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #3 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E548: + ldr r0, _0221E55C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #1 + mov r1, #0 + blx r2 +_0221E556: + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221E55C: .word 0x02241B30 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s new file mode 100644 index 00000000..42e1c73b --- /dev/null +++ b/arm9/modules/14/asm/module_14.s @@ -0,0 +1,30403 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD14_021D74E0 +MOD14_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #9 + lsl r2, r2, #0xe + bl FUN_0201681C + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + mov r1, #0x87 + add r0, r5, #0 + lsl r1, r1, #2 + mov r2, #9 + bl FUN_02006268 + add r4, r0, #0 + beq _021D7544 + add r0, r5, #0 + bl FUN_0200628C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021DB220 + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r2, r4, #0 + bl MOD14_021DC76C + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD14_021D762C + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, _021D7548 ; =MOD14_021D7680 + add r0, r4, #0 + bl MOD14_021D7610 +_021D7544: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7548: .word MOD14_021D7680 + + thumb_func_start MOD14_021D754C +MOD14_021D754C: ; 0x021D754C + push {r4, lr} + bl FUN_02006278 + mov r1, #0x6b + add r4, r0, #0 + lsl r1, r1, #2 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D7568 + add r1, #8 + add r1, r4, r1 + blx r2 + mov r0, #0 + pop {r4, pc} +_021D7568: + sub r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D75AA + ldr r0, _021D75B4 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #2 + lsl r0, r0, #0xa + tst r0, r2 + beq _021D759E + sub r1, #0x98 + ldr r0, [r4, r1] + bl MOD14_021DCBC0 + cmp r0, #1 + bne _021D759E + add r0, r4, #0 + bl MOD14_021DC394 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2b + bl MOD14_021DCB2C + mov r0, #0 + pop {r4, pc} +_021D759E: + mov r1, #0x6a + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + blx r1 + pop {r4, pc} +_021D75AA: + bl ErrorHandling + mov r0, #1 + pop {r4, pc} + nop +_021D75B4: .word 0x021C48B8 + + thumb_func_start MOD14_021D75B8 +MOD14_021D75B8: ; 0x021D75B8 + push {r4, lr} + bl FUN_02006278 + mov r1, #0x49 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x95 + bl FUN_0206BAE4 + cmp r0, #0 + bne _021D75DE + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02029EF8 + bl FUN_02029F08 +_021D75DE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCA38 + add r0, r4, #0 + bl MOD14_021DB398 + mov r0, #9 + bl FUN_020168D0 + mov r0, #0xa + bl FUN_020168D0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021D7600 +MOD14_021D7600: ; 0x021D7600 + mov r2, #0x6a + lsl r2, r2, #2 + str r1, [r0, r2] + mov r1, #0 + add r2, #8 + str r1, [r0, r2] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021D7610 +MOD14_021D7610: ; 0x021D7610 + mov r2, #0x6b + lsl r2, r2, #2 + str r1, [r0, r2] + mov r1, #0 + add r2, #8 + str r1, [r0, r2] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021D7620 +MOD14_021D7620: ; 0x021D7620 + mov r1, #0x6b + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021D762C +MOD14_021D762C: ; 0x021D762C + push {r3, lr} + bl MOD14_021DC3CC + cmp r0, #4 + bhi _021D764C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7642: ; jump table + .short _021D764C - _021D7642 - 2 ; case 0 + .short _021D7650 - _021D7642 - 2 ; case 1 + .short _021D7654 - _021D7642 - 2 ; case 2 + .short _021D765C - _021D7642 - 2 ; case 3 + .short _021D7658 - _021D7642 - 2 ; case 4 +_021D764C: + ldr r0, _021D7660 ; =MOD14_021D7750 + pop {r3, pc} +_021D7650: + ldr r0, _021D7664 ; =MOD14_021D79D0 + pop {r3, pc} +_021D7654: + ldr r0, _021D7668 ; =MOD14_021D7D20 + pop {r3, pc} +_021D7658: + ldr r0, _021D766C ; =MOD14_021D7F0C + pop {r3, pc} +_021D765C: + ldr r0, _021D7670 ; =MOD14_021D8118 + pop {r3, pc} + .align 2, 0 +_021D7660: .word MOD14_021D7750 +_021D7664: .word MOD14_021D79D0 +_021D7668: .word MOD14_021D7D20 +_021D766C: .word MOD14_021D7F0C +_021D7670: .word MOD14_021D8118 + + thumb_func_start MOD14_021D7674 +MOD14_021D7674: ; 0x021D7674 + mov r1, #0x46 + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r2, #1 + str r2, [r0, #8] + bx lr + + thumb_func_start MOD14_021D7680 +MOD14_021D7680: ; 0x021D7680 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D7696 + cmp r0, #1 + beq _021D76AA + cmp r0, #2 + beq _021D76CE + pop {r3, r4, r5, pc} +_021D7696: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D76AA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D76E4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D76CE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D76E4 + add r0, r5, #0 + bl MOD14_021D7620 +_021D76E4: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021D76E8 +MOD14_021D76E8: ; 0x021D76E8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D76FE + cmp r0, #1 + beq _021D7712 + cmp r0, #2 + beq _021D7736 + pop {r3, r4, r5, pc} +_021D76FE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D7712: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D774C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D7736: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D774C + add r0, r5, #0 + bl MOD14_021D7620 +_021D774C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021D7750 +MOD14_021D7750: ; 0x021D7750 + push {r4, lr} + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D776C + cmp r2, #1 + bne _021D7764 + b _021D793E +_021D7764: + cmp r2, #2 + bne _021D776A + b _021D795C +_021D776A: + b _021D7970 +_021D776C: + ldr r1, _021D7974 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #1 + tst r1, r2 + beq _021D779C + bl MOD14_021DC408 + cmp r0, #0 + beq _021D779C + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7792 + ldr r1, _021D7978 ; =MOD14_021D8804 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D7792: + ldr r1, _021D797C ; =MOD14_021D8A68 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D779C: + ldr r0, _021D7974 ; =0x021C48B8 + mov r2, #2 + ldr r1, [r0, #0x48] + tst r1, r2 + beq _021D77B0 + ldr r1, _021D7980 ; =MOD14_021D86BC + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D77B0: + ldr r0, [r0, #0x44] + lsl r1, r2, #8 + tst r1, r0 + beq _021D77C8 + add r0, r4, #0 + bl MOD14_021DC2A4 + ldr r1, _021D7984 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D77C8: + add r2, #0xfe + add r1, r0, #0 + tst r1, r2 + beq _021D77E0 + add r0, r4, #0 + bl MOD14_021DC278 + ldr r1, _021D7984 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D77E0: + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7818 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D780C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D780C: + mov r0, #0x1b + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021D7970 +_021D7818: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D783A + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7862 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D783C + cmp r0, #1 + beq _021D7846 +_021D783A: + b _021D792E +_021D783C: + ldr r1, _021D7988 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D792E +_021D7846: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D785A + ldr r1, _021D798C ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D792E +_021D785A: + ldr r0, _021D7990 ; =0x000005F3 + bl FUN_020054C8 + b _021D792E +_021D7862: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7876 + cmp r0, #1 + beq _021D78C4 + cmp r0, #2 + beq _021D7912 + b _021D792E +_021D7876: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D78BC + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D78BC + ldr r0, _021D7994 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7930 +_021D78BC: + ldr r0, _021D7990 ; =0x000005F3 + bl FUN_020054C8 + b _021D792E +_021D78C4: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D790A + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D790A + ldr r0, _021D7994 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7930 +_021D790A: + ldr r0, _021D7990 ; =0x000005F3 + bl FUN_020054C8 + b _021D792E +_021D7912: + ldr r0, _021D7994 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7930 +_021D792E: + mov r0, #0 +_021D7930: + cmp r0, #0 + beq _021D7970 + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7970 +_021D793E: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7970 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 + b _021D7970 +_021D795C: + sub r1, #0x9c + ldr r0, [r4, r1] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D7970 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D7970: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D7974: .word 0x021C48B8 +_021D7978: .word MOD14_021D8804 +_021D797C: .word MOD14_021D8A68 +_021D7980: .word MOD14_021D86BC +_021D7984: .word MOD14_021DABE8 +_021D7988: .word MOD14_021DAC80 +_021D798C: .word MOD14_021DAF78 +_021D7990: .word 0x000005F3 +_021D7994: .word 0x000005DD + + thumb_func_start MOD14_021D7998 +MOD14_021D7998: ; 0x021D7998 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D79B6 + mov r0, #0x1e + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D79B6: + add r0, r5, #0 + mov r1, #0xa1 + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D79CC + mov r0, #0x1d + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D79CC: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D79D0 +MOD14_021D79D0: ; 0x021D79D0 + push {r3, r4, lr} + sub sp, #4 + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #6 + bhi _021D7A20 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D79EC: ; jump table + .short _021D79FA - _021D79EC - 2 ; case 0 + .short _021D7BD4 - _021D79EC - 2 ; case 1 + .short _021D7BEE - _021D79EC - 2 ; case 2 + .short _021D7C58 - _021D79EC - 2 ; case 3 + .short _021D7C98 - _021D79EC - 2 ; case 4 + .short _021D7CB6 - _021D79EC - 2 ; case 5 + .short _021D7CE4 - _021D79EC - 2 ; case 6 +_021D79FA: + ldr r1, _021D7D00 ; =0x021C48B8 + mov r2, #1 + ldr r1, [r1, #0x48] + tst r2, r1 + beq _021D7A40 + bl MOD14_021DC3E8 + cmp r0, #6 + bne _021D7A16 + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7A16: + add r0, r4, #0 + bl MOD14_021DC408 + cmp r0, #0 + bne _021D7A22 +_021D7A20: + b _021D7CF8 +_021D7A22: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7A36 + ldr r1, _021D7D04 ; =MOD14_021D8804 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7CF8 +_021D7A36: + ldr r1, _021D7D08 ; =MOD14_021D8A68 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7CF8 +_021D7A40: + mov r2, #2 + tst r2, r1 + bne _021D7A6A + mov r2, #0x10 + tst r1, r2 + beq _021D7A56 + bl MOD14_021DC3E8 + mov r1, #1 + tst r0, r1 + bne _021D7A6A +_021D7A56: + ldr r0, _021D7D00 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021D7A74 + add r0, r4, #0 + bl MOD14_021DC3E8 + cmp r0, #6 + bne _021D7A74 +_021D7A6A: + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7A74: + ldr r0, _021D7D00 ; =0x021C48B8 + add r1, r4, #0 + ldr r0, [r0, #0x44] + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7AAE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7AA4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7AA4: + mov r0, #0x1b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7AAE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D7AD0 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7AF8 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7AD2 + cmp r0, #1 + beq _021D7ADC +_021D7AD0: + b _021D7BC4 +_021D7AD2: + ldr r1, _021D7D0C ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7BC4 +_021D7ADC: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7AF0 + ldr r1, _021D7D10 ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7BC4 +_021D7AF0: + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + b _021D7BC4 +_021D7AF8: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7B0C + cmp r0, #1 + beq _021D7B5A + cmp r0, #2 + beq _021D7BA8 + b _021D7BC4 +_021D7B0C: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D7B52 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7B52 + ldr r0, _021D7D18 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7BC6 +_021D7B52: + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + b _021D7BC4 +_021D7B5A: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D7BA0 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7BA0 + ldr r0, _021D7D18 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7BC6 +_021D7BA0: + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + b _021D7BC4 +_021D7BA8: + ldr r0, _021D7D18 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7BC6 +_021D7BC4: + mov r0, #0 +_021D7BC6: + cmp r0, #0 + beq _021D7BE2 + mov r0, #0x1b + mov r1, #6 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7BD4: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021D7BE4 +_021D7BE2: + b _021D7CF8 +_021D7BE4: + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7BEE: + bl MOD14_021DC3C4 + cmp r0, #0 + bne _021D7C08 + ldr r1, _021D7D1C ; =MOD14_021D86BC + add r0, r4, #0 + bl MOD14_021D7610 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C08: + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D7C42 + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021D7998 + cmp r0, #0 + beq _021D7C42 + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #5 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C42: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #3 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C58: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x24 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7CF8 + add r0, r4, #0 + bl MOD14_021DB910 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7C8E + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7C8E: + mov r0, #0x1b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C98: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7CF8 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 + b _021D7CF8 +_021D7CB6: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7CF8 + ldr r0, _021D7D00 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D7CF8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7CE4: + sub r1, #0x9c + ldr r0, [r4, r1] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D7CF8 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D7CF8: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021D7D00: .word 0x021C48B8 +_021D7D04: .word MOD14_021D8804 +_021D7D08: .word MOD14_021D8A68 +_021D7D0C: .word MOD14_021DAC80 +_021D7D10: .word MOD14_021DAF78 +_021D7D14: .word 0x000005F3 +_021D7D18: .word 0x000005DD +_021D7D1C: .word MOD14_021D86BC + + thumb_func_start MOD14_021D7D20 +MOD14_021D7D20: ; 0x021D7D20 + push {r3, r4, r5, lr} + mov r3, #0x1b + add r4, r0, #0 + lsl r3, r3, #4 + ldr r1, [r4, r3] + cmp r1, #0 + beq _021D7D36 + cmp r1, #1 + bne _021D7D34 + b _021D7ECC +_021D7D34: + b _021D7EE8 +_021D7D36: + ldr r5, _021D7EEC ; =0x021C48B8 + add r2, r3, #0 + ldr r1, [r5, #0x44] + add r2, #0x70 + tst r2, r1 + beq _021D7D50 + bl MOD14_021DC2A4 + ldr r1, _021D7EF0 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7D50: + sub r3, #0xa0 + add r2, r1, #0 + tst r2, r3 + beq _021D7D66 + bl MOD14_021DC278 + ldr r1, _021D7EF0 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7D66: + ldr r3, [r5, #0x48] + mov r2, #1 + tst r2, r3 + beq _021D7D76 + ldr r1, _021D7EF4 ; =MOD14_021D8D70 + bl MOD14_021D7610 + b _021D7EE8 +_021D7D76: + mov r2, #2 + tst r2, r3 + beq _021D7D84 + ldr r1, _021D7EF8 ; =MOD14_021D86BC + bl MOD14_021D7610 + b _021D7EE8 +_021D7D84: + add r0, r1, #0 + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7DBC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7DB2 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7DB2: + mov r0, #0x1b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7EE8 +_021D7DBC: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D7DDE + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7E06 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7DE0 + cmp r0, #1 + beq _021D7DEA +_021D7DDE: + b _021D7EE8 +_021D7DE0: + ldr r1, _021D7EFC ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7DEA: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7DFE + ldr r1, _021D7F00 ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7DFE: + ldr r0, _021D7F04 ; =0x000005F3 + bl FUN_020054C8 + b _021D7EE8 +_021D7E06: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7E1A + cmp r0, #1 + beq _021D7E66 + cmp r0, #2 + beq _021D7EB2 + b _021D7EE8 +_021D7E1A: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D7E5E + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7E5E + ldr r0, _021D7F08 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D7EE8 +_021D7E5E: + ldr r0, _021D7F04 ; =0x000005F3 + bl FUN_020054C8 + b _021D7EE8 +_021D7E66: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D7EAA + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7EAA + ldr r0, _021D7F08 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D7EE8 +_021D7EAA: + ldr r0, _021D7F04 ; =0x000005F3 + bl FUN_020054C8 + b _021D7EE8 +_021D7EB2: + ldr r0, _021D7F08 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + b _021D7EE8 +_021D7ECC: + sub r3, #0x9c + ldr r0, [r4, r3] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7EE8 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 +_021D7EE8: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7EEC: .word 0x021C48B8 +_021D7EF0: .word MOD14_021DABE8 +_021D7EF4: .word MOD14_021D8D70 +_021D7EF8: .word MOD14_021D86BC +_021D7EFC: .word MOD14_021DAC80 +_021D7F00: .word MOD14_021DAF78 +_021D7F04: .word 0x000005F3 +_021D7F08: .word 0x000005DD + + thumb_func_start MOD14_021D7F0C +MOD14_021D7F0C: ; 0x021D7F0C + push {r3, r4, r5, lr} + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D7F28 + cmp r2, #1 + bne _021D7F20 + b _021D80BE +_021D7F20: + cmp r2, #2 + bne _021D7F26 + b _021D80D6 +_021D7F26: + b _021D80F2 +_021D7F28: + ldr r3, _021D80F8 ; =0x021C48B8 + mov r1, #1 + ldr r5, [r3, #0x48] + tst r1, r5 + beq _021D7F3A + ldr r1, _021D80FC ; =MOD14_021D854C + bl MOD14_021D7610 + b _021D80F2 +_021D7F3A: + mov r2, #2 + add r1, r5, #0 + tst r1, r2 + beq _021D7F4A + ldr r1, _021D8100 ; =MOD14_021D86BC + bl MOD14_021D7610 + b _021D80F2 +_021D7F4A: + ldr r3, [r3, #0x44] + lsl r1, r2, #8 + tst r1, r3 + beq _021D7F60 + bl MOD14_021DC2A4 + ldr r1, _021D8104 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7F60: + add r2, #0xfe + add r1, r3, #0 + tst r1, r2 + beq _021D7F76 + bl MOD14_021DC278 + ldr r1, _021D8104 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7F76: + add r0, r3, #0 + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7FAE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7FA4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7FA4: + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D80F2 +_021D7FAE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D7FD0 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7FF8 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7FD2 + cmp r0, #1 + beq _021D7FDC +_021D7FD0: + b _021D80F2 +_021D7FD2: + ldr r1, _021D8108 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7FDC: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7FF0 + ldr r1, _021D810C ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7FF0: + ldr r0, _021D8110 ; =0x000005F3 + bl FUN_020054C8 + b _021D80F2 +_021D7FF8: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D800C + cmp r0, #1 + beq _021D8058 + cmp r0, #2 + beq _021D80A4 + b _021D80F2 +_021D800C: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D8050 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D8050 + ldr r0, _021D8114 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D80F2 +_021D8050: + ldr r0, _021D8110 ; =0x000005F3 + bl FUN_020054C8 + b _021D80F2 +_021D8058: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D809C + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D809C + ldr r0, _021D8114 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D80F2 +_021D809C: + ldr r0, _021D8110 ; =0x000005F3 + bl FUN_020054C8 + b _021D80F2 +_021D80A4: + ldr r0, _021D8114 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + b _021D80F2 +_021D80BE: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D80F2 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D80F2 +_021D80D6: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D80F2 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 +_021D80F2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D80F8: .word 0x021C48B8 +_021D80FC: .word MOD14_021D854C +_021D8100: .word MOD14_021D86BC +_021D8104: .word MOD14_021DABE8 +_021D8108: .word MOD14_021DAC80 +_021D810C: .word MOD14_021DAF78 +_021D8110: .word 0x000005F3 +_021D8114: .word 0x000005DD + + thumb_func_start MOD14_021D8118 +MOD14_021D8118: ; 0x021D8118 + push {r3, r4, r5, lr} + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #5 + bhi _021D8220 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D8132: ; jump table + .short _021D813E - _021D8132 - 2 ; case 0 + .short _021D830E - _021D8132 - 2 ; case 1 + .short _021D8332 - _021D8132 - 2 ; case 2 + .short _021D8372 - _021D8132 - 2 ; case 3 + .short _021D838A - _021D8132 - 2 ; case 4 + .short _021D83A8 - _021D8132 - 2 ; case 5 +_021D813E: + ldr r3, _021D83C8 ; =0x021C48B8 + mov r1, #1 + ldr r5, [r3, #0x48] + tst r1, r5 + beq _021D818A + bl MOD14_021DC3C4 + cmp r0, #1 + beq _021D8166 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x22 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D8166: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x12 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #5 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D818A: + mov r2, #2 + add r1, r5, #0 + tst r1, r2 + beq _021D819A + ldr r1, _021D83D0 ; =MOD14_021D86BC + bl MOD14_021D7610 + b _021D83C4 +_021D819A: + ldr r3, [r3, #0x44] + lsl r1, r2, #8 + tst r1, r3 + beq _021D81B0 + bl MOD14_021DC2A4 + ldr r1, _021D83D4 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D81B0: + add r2, #0xfe + add r1, r3, #0 + tst r1, r2 + beq _021D81C6 + bl MOD14_021DC278 + ldr r1, _021D83D4 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D81C6: + add r0, r3, #0 + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D81FE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D81F4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D81F4: + mov r0, #0x1b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D81FE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D8220 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D8248 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D8222 + cmp r0, #1 + beq _021D822C +_021D8220: + b _021D83C4 +_021D8222: + ldr r1, _021D83D8 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D822C: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D8240 + ldr r1, _021D83DC ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D8240: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + b _021D83C4 +_021D8248: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D825C + cmp r0, #1 + beq _021D82A8 + cmp r0, #2 + beq _021D82F4 + b _021D83C4 +_021D825C: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D82A0 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D82A0 + ldr r0, _021D83E0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D83C4 +_021D82A0: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + b _021D83C4 +_021D82A8: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D82EC + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D82EC + ldr r0, _021D83E0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D83C4 +_021D82EC: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + b _021D83C4 +_021D82F4: + ldr r0, _021D83E0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + b _021D83C4 +_021D830E: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x22 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D8332: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x23 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + add r0, r4, #0 + bl MOD14_021DB8D0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D8368 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D8368: + mov r0, #0x1b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D8372: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D838A: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 + b _021D83C4 +_021D83A8: + ldr r0, _021D83C8 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #3 + tst r0, r2 + beq _021D83C4 + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D83C4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D83C8: .word 0x021C48B8 +_021D83CC: .word 0x000005F3 +_021D83D0: .word MOD14_021D86BC +_021D83D4: .word MOD14_021DABE8 +_021D83D8: .word MOD14_021DAC80 +_021D83DC: .word MOD14_021DAF78 +_021D83E0: .word 0x000005DD + + thumb_func_start MOD14_021D83E4 +MOD14_021D83E4: ; 0x021D83E4 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D8428 + mov r0, #0x4b + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + str r1, [r4, r0] + ldrb r0, [r4, #0x1f] + cmp r0, #0 + beq _021D8402 + mov r0, #0 + b _021D8404 +_021D8402: + mov r0, #2 +_021D8404: + ldr r1, _021D8500 ; =0x0000013D + mov r2, #1 + strb r0, [r4, r1] + add r0, r1, #2 + strb r2, [r4, r0] + mov r2, #0 + add r0, r1, #3 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #7 + strh r2, [r4, r0] + add r0, r1, #0 + add r0, #0x67 + ldr r0, [r4, r0] + sub r1, #0xd + str r0, [r4, r1] + b _021D84AA +_021D8428: + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021D8476 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B330 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r2, #0 + bl FUN_0206B5E4 + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #2 + add r0, #0x11 + strb r2, [r4, r0] + mov r0, #0x1e + add r1, #0x13 + strb r0, [r4, r1] + add r0, r4, #0 + bl MOD14_021DC3E0 + mov r1, #5 + lsl r1, r1, #6 + strb r0, [r4, r1] + mov r2, #0 + sub r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #4 + strh r2, [r4, r0] + b _021D84AA +_021D8476: + mov r1, #0x49 + lsl r1, r1, #2 + add r0, r1, #0 + ldr r2, [r4, r1] + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + mov r2, #1 + add r0, #0x19 + strb r2, [r4, r0] + ldr r0, [r4, r1] + bl FUN_0206B9AC + ldr r1, _021D8504 ; =0x0000013F + strb r0, [r4, r1] + add r0, r4, #0 + bl MOD14_021DC3E8 + mov r1, #5 + lsl r1, r1, #6 + strb r0, [r4, r1] + mov r2, #0 + sub r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #4 + strh r2, [r4, r0] +_021D84AA: + mov r0, #0x55 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #0x38 + ldr r0, [r4, r0] + bl FUN_0206BB28 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x2c + ldr r0, [r4, r1] + bl FUN_02079C70 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x3c + ldr r0, [r4, r1] + bl FUN_0202A918 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x20 + add r0, r4, r1 + ldr r1, _021D8508 ; =0x021E626C + bl FUN_0207B000 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020238F4 + add r1, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_0207C2A4 + pop {r4, pc} + nop +_021D8500: .word 0x0000013D +_021D8504: .word 0x0000013F +_021D8508: .word 0x021E626C + + thumb_func_start MOD14_021D850C +MOD14_021D850C: ; 0x021D850C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1b + lsl r0, r0, #4 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D8520 + cmp r1, #1 + beq _021D8536 + b _021D8546 +_021D8520: + sub r0, #0x9c + ldr r0, [r4, r0] + mov r1, #0x33 + bl MOD14_021DCB2C + mov r0, #0x1b + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021D8546 +_021D8536: + sub r0, #0x9c + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8546 + mov r0, #1 + pop {r4, pc} +_021D8546: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021D854C +MOD14_021D854C: ; 0x021D854C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bls _021D855A + b _021D86A6 +_021D855A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8566: ; jump table + .short _021D8574 - _021D8566 - 2 ; case 0 + .short _021D85CC - _021D8566 - 2 ; case 1 + .short _021D8604 - _021D8566 - 2 ; case 2 + .short _021D86A6 - _021D8566 - 2 ; case 3 + .short _021D8660 - _021D8566 - 2 ; case 4 + .short _021D8674 - _021D8566 - 2 ; case 5 + .short _021D8690 - _021D8566 - 2 ; case 6 +_021D8574: + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021D8590 + add r0, r4, #0 + bl MOD14_021DC538 + cmp r0, #0 + beq _021D8590 + ldr r1, _021D86A8 ; =MOD14_021DA7C4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8590: + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D85BA + ldr r0, _021D86AC ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x11 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D85BA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x22 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D85CC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x22 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D86A6 + ldr r0, _021D86B0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xb + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8604: + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021D8624 + bge _021D8650 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021D86A6 + sub r1, r2, #1 + cmp r0, r1 + blt _021D86A6 + beq _021D862A + cmp r0, r2 + beq _021D8638 + pop {r3, r4, r5, pc} +_021D8624: + cmp r0, #0x37 + beq _021D8638 + pop {r3, r4, r5, pc} +_021D862A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8638: + ldr r0, _021D86B0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8650: + ldr r1, _021D86B4 ; =MOD14_021D850C + add r0, r4, #0 + bl MOD14_021D7600 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8660: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D86A6 + mov r0, #5 + str r0, [r5] +_021D8674: + ldr r0, _021D86B8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D86A6 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8690: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D86A6 + add r0, r4, #0 + bl MOD14_021D7620 +_021D86A6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D86A8: .word MOD14_021DA7C4 +_021D86AC: .word 0x000005F3 +_021D86B0: .word 0x000005DD +_021D86B4: .word MOD14_021D850C +_021D86B8: .word 0x021C48B8 + + thumb_func_start MOD14_021D86BC +MOD14_021D86BC: ; 0x021D86BC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bls _021D86CA + b _021D87EC +_021D86CA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D86D6: ; jump table + .short _021D86E2 - _021D86D6 - 2 ; case 0 + .short _021D87EC - _021D86D6 - 2 ; case 1 + .short _021D87A6 - _021D86D6 - 2 ; case 2 + .short _021D87BA - _021D86D6 - 2 ; case 3 + .short _021D87D6 - _021D86D6 - 2 ; case 4 + .short _021D8750 - _021D86D6 - 2 ; case 5 +_021D86E2: + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D870A + ldr r0, _021D87F0 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x11 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D870A: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021D8728 + add r0, r4, #0 + bl MOD14_021DC538 + cmp r0, #0 + beq _021D8728 + ldr r1, _021D87F4 ; =MOD14_021DA7C4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8728: + ldr r0, _021D87F8 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xc + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8750: + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021D8770 + bge _021D8794 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021D87EC + sub r1, r2, #1 + cmp r0, r1 + blt _021D87EC + beq _021D8776 + cmp r0, r2 + beq _021D8784 + pop {r3, r4, r5, pc} +_021D8770: + cmp r0, #0x37 + beq _021D8784 + pop {r3, r4, r5, pc} +_021D8776: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8784: + ldr r1, _021D87FC ; =MOD14_021D850C + add r0, r4, #0 + bl MOD14_021D7600 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8794: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D87A6: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D87EC + mov r0, #3 + str r0, [r5] +_021D87BA: + ldr r0, _021D8800 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D87EC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D87D6: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D87EC + add r0, r4, #0 + bl MOD14_021D7620 +_021D87EC: + pop {r3, r4, r5, pc} + nop +_021D87F0: .word 0x000005F3 +_021D87F4: .word MOD14_021DA7C4 +_021D87F8: .word 0x000005DD +_021D87FC: .word MOD14_021D850C +_021D8800: .word 0x021C48B8 + + thumb_func_start MOD14_021D8804 +MOD14_021D8804: ; 0x021D8804 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bhi _021D88F6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D881C: ; jump table + .short _021D8828 - _021D881C - 2 ; case 0 + .short _021D887C - _021D881C - 2 ; case 1 + .short _021D8890 - _021D881C - 2 ; case 2 + .short _021D88EA - _021D881C - 2 ; case 3 + .short _021D8A08 - _021D881C - 2 ; case 4 + .short _021D8A20 - _021D881C - 2 ; case 5 +_021D8828: + bl MOD14_021DC458 + add r2, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DBA44 + add r0, r4, #0 + bl MOD14_021E5DC4 + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #0 + beq _021D8864 + add r0, r4, #0 + bl MOD14_021E6220 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8864: + ldr r0, _021D8A38 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D887C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D88F6 + mov r0, #2 + str r0, [r5] +_021D8890: + add r0, r4, #0 + bl MOD14_021E6160 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0 + ldr r2, [r4, r1] + mvn r0, r0 + cmp r2, r0 + bgt _021D88BA + sub r3, r0, #2 + cmp r2, r3 + blt _021D88E4 + beq _021D88F6 + sub r3, r0, #1 + cmp r2, r3 + beq _021D88C0 + cmp r2, r0 + beq _021D88CC + b _021D88E4 +_021D88BA: + cmp r2, #0x2b + beq _021D88CC + b _021D88E4 +_021D88C0: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D88CC: + ldr r0, _021D8A38 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D88E4: + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D88EA: + mov r1, #0x6e + lsl r1, r1, #2 + ldr r2, [r4, r1] + sub r2, #0x22 + cmp r2, #0x13 + bls _021D88F8 +_021D88F6: + b _021D8A34 +_021D88F8: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D8904: ; jump table + .short _021D892C - _021D8904 - 2 ; case 0 + .short _021D895E - _021D8904 - 2 ; case 1 + .short _021D8972 - _021D8904 - 2 ; case 2 + .short _021D89A6 - _021D8904 - 2 ; case 3 + .short _021D8986 - _021D8904 - 2 ; case 4 + .short _021D898E - _021D8904 - 2 ; case 5 + .short _021D89AE - _021D8904 - 2 ; case 6 + .short _021D8996 - _021D8904 - 2 ; case 7 + .short _021D899E - _021D8904 - 2 ; case 8 + .short _021D8A34 - _021D8904 - 2 ; case 9 + .short _021D8A34 - _021D8904 - 2 ; case 10 + .short _021D8A34 - _021D8904 - 2 ; case 11 + .short _021D8A34 - _021D8904 - 2 ; case 12 + .short _021D8A34 - _021D8904 - 2 ; case 13 + .short _021D8A34 - _021D8904 - 2 ; case 14 + .short _021D8A34 - _021D8904 - 2 ; case 15 + .short _021D8A34 - _021D8904 - 2 ; case 16 + .short _021D8A34 - _021D8904 - 2 ; case 17 + .short _021D89CA - _021D8904 - 2 ; case 18 + .short _021D89CA - _021D8904 - 2 ; case 19 +_021D892C: + bl MOD14_021DC3CC + cmp r0, #0 + bne _021D8948 + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #1 + bne _021D8948 + ldr r1, _021D8A3C ; =MOD14_021D9230 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8948: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8A40 ; =MOD14_021D94BC + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D895E: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8A44 ; =MOD14_021D95B4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8972: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8A48 ; =MOD14_021D96B0 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8986: + ldr r1, _021D8A4C ; =MOD14_021D9770 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D898E: + ldr r1, _021D8A50 ; =MOD14_021D9934 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8996: + ldr r1, _021D8A54 ; =MOD14_021D9138 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D899E: + ldr r1, _021D8A58 ; =MOD14_021D9C98 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89A6: + ldr r1, _021D8A5C ; =MOD14_021DA2C8 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89AE: + bl MOD14_021DC430 + cmp r0, #0 + bne _021D89C0 + ldr r1, _021D8A60 ; =MOD14_021DA3E4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89C0: + ldr r1, _021D8A64 ; =MOD14_021DA5F0 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89CA: + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x30 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + ldr r0, _021D8A38 ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8A08: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8A34 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8A20: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8A34 + add r0, r4, #0 + bl MOD14_021D7620 +_021D8A34: + pop {r3, r4, r5, pc} + nop +_021D8A38: .word 0x000005DD +_021D8A3C: .word MOD14_021D9230 +_021D8A40: .word MOD14_021D94BC +_021D8A44: .word MOD14_021D95B4 +_021D8A48: .word MOD14_021D96B0 +_021D8A4C: .word MOD14_021D9770 +_021D8A50: .word MOD14_021D9934 +_021D8A54: .word MOD14_021D9138 +_021D8A58: .word MOD14_021D9C98 +_021D8A5C: .word MOD14_021DA2C8 +_021D8A60: .word MOD14_021DA3E4 +_021D8A64: .word MOD14_021DA5F0 + + thumb_func_start MOD14_021D8A68 +MOD14_021D8A68: ; 0x021D8A68 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #7 + bls _021D8A76 + b _021D8D54 +_021D8A76: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8A82: ; jump table + .short _021D8A92 - _021D8A82 - 2 ; case 0 + .short _021D8B3C - _021D8A82 - 2 ; case 1 + .short _021D8B50 - _021D8A82 - 2 ; case 2 + .short _021D8BB0 - _021D8A82 - 2 ; case 3 + .short _021D8CE0 - _021D8A82 - 2 ; case 4 + .short _021D8CF8 - _021D8A82 - 2 ; case 5 + .short _021D8D24 - _021D8A82 - 2 ; case 6 + .short _021D8D3A - _021D8A82 - 2 ; case 7 +_021D8A92: + bl MOD14_021DC538 + add r2, r0, #0 + beq _021D8AB0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x19 + bl MOD14_021DBA44 + b _021D8AD8 +_021D8AB0: + add r0, r4, #0 + bl MOD14_021DC430 + add r2, r0, #0 + beq _021D8AD0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x19 + bl MOD14_021DBA44 + b _021D8AD8 +_021D8AD0: + add r0, r4, #0 + mov r1, #0x1c + bl MOD14_021DBA44 +_021D8AD8: + add r0, r4, #0 + bl MOD14_021E5F04 + add r0, r4, #0 + bl MOD14_021DC584 + cmp r0, #0 + beq _021D8B08 + ldr r0, _021D8D58 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x22 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8B08: + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #0 + beq _021D8B24 + add r0, r4, #0 + bl MOD14_021E6220 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8B24: + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8B3C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8BBC + mov r0, #2 + str r0, [r5] +_021D8B50: + add r0, r4, #0 + bl MOD14_021E6160 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0 + ldr r2, [r4, r1] + mvn r0, r0 + cmp r2, r0 + bgt _021D8B7A + sub r3, r0, #2 + cmp r2, r3 + blt _021D8BA4 + beq _021D8BBC + sub r3, r0, #1 + cmp r2, r3 + beq _021D8B80 + cmp r2, r0 + beq _021D8B8C + b _021D8BA4 +_021D8B7A: + cmp r2, #0x33 + beq _021D8B8C + b _021D8BA4 +_021D8B80: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8B8C: + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8BA4: + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8BB0: + mov r1, #0x6e + lsl r1, r1, #2 + ldr r1, [r4, r1] + sub r1, #0x2e + cmp r1, #4 + bls _021D8BBE +_021D8BBC: + b _021D8D54 +_021D8BBE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8BCA: ; jump table + .short _021D8BD4 - _021D8BCA - 2 ; case 0 + .short _021D8C12 - _021D8BCA - 2 ; case 1 + .short _021D8C74 - _021D8BCA - 2 ; case 2 + .short _021D8C7C - _021D8BCA - 2 ; case 3 + .short _021D8CD8 - _021D8BCA - 2 ; case 4 +_021D8BD4: + bl MOD14_021DC538 + cmp r0, #0 + beq _021D8C08 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DC31C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x14 + bl MOD14_021DCB2C + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8C08: + ldr r1, _021D8D60 ; =MOD14_021DA3E4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8C12: + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D8C42 + ldr r0, _021D8D58 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8C42: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DC2E4 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x13 + bl MOD14_021DCB2C + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8C74: + ldr r1, _021D8D64 ; =MOD14_021DA9D0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8C7C: + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D8CAC + ldr r0, _021D8D58 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8CAC: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DC334 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x15 + bl MOD14_021DCB2C + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8CD8: + ldr r1, _021D8D68 ; =MOD14_021DA7C4 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8CE0: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8D54 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8CF8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8D54 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x16 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8D24: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8D54 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8D3A: + ldr r0, _021D8D6C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D8D54 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] +_021D8D54: + pop {r3, r4, r5, pc} + nop +_021D8D58: .word 0x000005F3 +_021D8D5C: .word 0x000005DD +_021D8D60: .word MOD14_021DA3E4 +_021D8D64: .word MOD14_021DA9D0 +_021D8D68: .word MOD14_021DA7C4 +_021D8D6C: .word 0x021C48B8 + + thumb_func_start MOD14_021D8D70 +MOD14_021D8D70: ; 0x021D8D70 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #7 + bls _021D8D7E + b _021D8EB0 +_021D8D7E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8D8A: ; jump table + .short _021D8D9A - _021D8D8A - 2 ; case 0 + .short _021D8DDE - _021D8D8A - 2 ; case 1 + .short _021D8DF2 - _021D8D8A - 2 ; case 2 + .short _021D8E42 - _021D8D8A - 2 ; case 3 + .short _021D8E82 - _021D8D8A - 2 ; case 4 + .short _021D8EB0 - _021D8D8A - 2 ; case 5 + .short _021D8EB0 - _021D8D8A - 2 ; case 6 + .short _021D8E9A - _021D8D8A - 2 ; case 7 +_021D8D9A: + mov r1, #7 + bl MOD14_021DBA44 + add r0, r4, #0 + bl MOD14_021E5F84 + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #0 + ldr r0, _021D8EB4 ; =0x000005DD + beq _021D8DC8 + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021E6220 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8DC8: + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8DDE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8EB0 + mov r0, #2 + str r0, [r5] +_021D8DF2: + add r0, r4, #0 + bl MOD14_021E6160 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + add r0, r0, #3 + cmp r0, #6 + bhi _021D8E3C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8E12: ; jump table + .short _021D8EB0 - _021D8E12 - 2 ; case 0 + .short _021D8E20 - _021D8E12 - 2 ; case 1 + .short _021D8E2C - _021D8E12 - 2 ; case 2 + .short _021D8E3C - _021D8E12 - 2 ; case 3 + .short _021D8E3C - _021D8E12 - 2 ; case 4 + .short _021D8E3C - _021D8E12 - 2 ; case 5 + .short _021D8E2C - _021D8E12 - 2 ; case 6 +_021D8E20: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8E2C: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8E3C: + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8E42: + mov r1, #0x6e + lsl r1, r1, #2 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D8E56 + cmp r2, #1 + beq _021D8E6A + cmp r2, #2 + beq _021D8E7A + pop {r3, r4, r5, pc} +_021D8E56: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8EB8 ; =MOD14_021D8EC4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8E6A: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8E7A: + ldr r1, _021D8EBC ; =MOD14_021DA1D4 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8E82: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8EB0 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8E9A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8EB0 + ldr r1, _021D8EC0 ; =MOD14_021D8F6C + add r0, r4, #0 + bl MOD14_021D7610 +_021D8EB0: + pop {r3, r4, r5, pc} + nop +_021D8EB4: .word 0x000005DD +_021D8EB8: .word MOD14_021D8EC4 +_021D8EBC: .word MOD14_021DA1D4 +_021D8EC0: .word MOD14_021D8F6C + + thumb_func_start MOD14_021D8EC4 +MOD14_021D8EC4: ; 0x021D8EC4 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D8EDA + cmp r1, #1 + beq _021D8EEE + cmp r1, #2 + beq _021D8F52 + pop {r4, r5, r6, pc} +_021D8EDA: + bl MOD14_021DC424 + add r1, r0, #0 + add r0, r5, #0 + mov r2, #8 + bl MOD14_021DAA7C + mov r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D8EEE: + bl MOD14_021DAAA8 + cmp r0, #0 + beq _021D8F66 + ldr r0, _021D8F68 ; =0x000001C1 + ldrsb r6, [r5, r0] + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _021D8F0C + add r0, r5, #0 + bl MOD14_021DC424 + cmp r6, r0 + bne _021D8F12 +_021D8F0C: + mov r0, #2 + str r0, [r4] + b _021D8F38 +_021D8F12: + add r0, r5, #0 + add r1, r6, #0 + bl MOD14_021DC2C4 + mov r1, #0x12 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #0xa1 + ldrsb r1, [r5, r1] + bl FUN_0206B428 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] +_021D8F38: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + pop {r4, r5, r6, pc} +_021D8F52: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8F66 + add r0, r5, #0 + bl MOD14_021D7620 +_021D8F66: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8F68: .word 0x000001C1 + + thumb_func_start MOD14_021D8F6C +MOD14_021D8F6C: ; 0x021D8F6C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #8 + bhi _021D8FD8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8F84: ; jump table + .short _021D8F96 - _021D8F84 - 2 ; case 0 + .short _021D8FA2 - _021D8F84 - 2 ; case 1 + .short _021D8FC8 - _021D8F84 - 2 ; case 2 + .short _021D8FDE - _021D8F84 - 2 ; case 3 + .short _021D9062 - _021D8F84 - 2 ; case 4 + .short _021D9076 - _021D8F84 - 2 ; case 5 + .short _021D90FC - _021D8F84 - 2 ; case 6 + .short _021D910E - _021D8F84 - 2 ; case 7 + .short _021D9122 - _021D8F84 - 2 ; case 8 +_021D8F96: + mov r0, #0x6e + mov r1, #4 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + str r0, [r5] +_021D8FA2: + add r0, r4, #0 + mov r1, #9 + bl MOD14_021DBA44 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021E5FC8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8FC8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021D8FDA +_021D8FD8: + b _021D9136 +_021D8FDA: + mov r0, #3 + str r0, [r5] +_021D8FDE: + add r0, r4, #0 + bl MOD14_021E6160 + add r0, r0, #3 + cmp r0, #0xc + bhi _021D901E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8FF6: ; jump table + .short _021D9136 - _021D8FF6 - 2 ; case 0 + .short _021D9010 - _021D8FF6 - 2 ; case 1 + .short _021D901E - _021D8FF6 - 2 ; case 2 + .short _021D901E - _021D8FF6 - 2 ; case 3 + .short _021D901E - _021D8FF6 - 2 ; case 4 + .short _021D901E - _021D8FF6 - 2 ; case 5 + .short _021D901E - _021D8FF6 - 2 ; case 6 + .short _021D9030 - _021D8FF6 - 2 ; case 7 + .short _021D9030 - _021D8FF6 - 2 ; case 8 + .short _021D9030 - _021D8FF6 - 2 ; case 9 + .short _021D9030 - _021D8FF6 - 2 ; case 10 + .short _021D9030 - _021D8FF6 - 2 ; case 11 + .short _021D9030 - _021D8FF6 - 2 ; case 12 +_021D9010: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D901E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9030: + add r0, r4, #0 + bl MOD14_021E6210 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #0xa + bl MOD14_021DBA44 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021E6038 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9062: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9136 + mov r0, #5 + str r0, [r5] +_021D9076: + add r0, r4, #0 + bl MOD14_021E6160 + add r0, r0, #3 + cmp r0, #6 + bhi _021D90B0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D908E: ; jump table + .short _021D9136 - _021D908E - 2 ; case 0 + .short _021D909C - _021D908E - 2 ; case 1 + .short _021D90AA - _021D908E - 2 ; case 2 + .short _021D90B0 - _021D908E - 2 ; case 3 + .short _021D90B0 - _021D908E - 2 ; case 4 + .short _021D90B0 - _021D908E - 2 ; case 5 + .short _021D90AA - _021D908E - 2 ; case 6 +_021D909C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D90AA: + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D90B0: + add r0, r4, #0 + bl MOD14_021E6210 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r2, [r4, r1] + cmp r2, #0xa + blt _021D90F2 + cmp r2, #0x21 + bgt _021D90F2 + sub r1, #0x98 + ldr r0, [r4, r1] + mov r1, #0 + mvn r1, r1 + sub r2, #0xa + bl FUN_0206B458 + mov r1, #0x12 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021DB59C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D90F2: + bl ErrorHandling + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D90FC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x21 + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D910E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9136 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9122: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9136 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9136: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D9138 +MOD14_021D9138: ; 0x021D9138 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D914E + cmp r1, #1 + beq _021D916C + cmp r1, #2 + beq _021D921A + pop {r3, r4, r5, pc} +_021D914E: + bl MOD14_021E60B4 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D916C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D922E + add r0, r5, #0 + bl MOD14_021E6160 + mov r2, #2 + add r1, r0, #0 + mvn r2, r2 + cmp r1, r2 + bhi _021D919C + bhs _021D922E + cmp r1, #0x2d + bhi _021D91FC + cmp r1, #0x2c + blo _021D91FC + beq _021D91CC + cmp r1, #0x2d + beq _021D91BA + b _021D91FC +_021D919C: + add r0, r2, #1 + cmp r1, r0 + blo _021D91FC + beq _021D91AC + add r0, r2, #2 + cmp r1, r0 + beq _021D91BA + b _021D91FC +_021D91AC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D91BA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D91CC: + add r0, r5, #0 + bl MOD14_021DC1AC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #7 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x27 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D91FC: + cmp r1, #0x38 + blo _021D922E + cmp r1, #0x3d + bhi _021D922E + add r0, r5, #0 + sub r1, #0x38 + bl MOD14_021E6118 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1d + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D921A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D922E + add r0, r5, #0 + bl MOD14_021D7620 +_021D922E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D9230 +MOD14_021D9230: ; 0x021D9230 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #4 + bls _021D923E + b _021D9454 +_021D923E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D924A: ; jump table + .short _021D9254 - _021D924A - 2 ; case 0 + .short _021D9284 - _021D924A - 2 ; case 1 + .short _021D9326 - _021D924A - 2 ; case 2 + .short _021D942C - _021D924A - 2 ; case 3 + .short _021D9440 - _021D924A - 2 ; case 4 +_021D9254: + ldr r1, _021D9458 ; =0x021C48B8 + ldr r2, [r1, #0x44] + mov r1, #1 + tst r1, r2 + beq _021D927C + add r1, r4, #0 + bl MOD14_021DBBD0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2c + bl MOD14_021DCB2C + ldr r0, _021D945C ; =0x000005DC + bl FUN_020054C8 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D927C: + ldr r1, _021D9460 ; =MOD14_021D94BC + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D9284: + ldr r1, _021D9458 ; =0x021C48B8 + ldr r2, [r1, #0x44] + mov r1, #1 + tst r1, r2 + beq _021D92E8 + add r0, r2, #0 + add r1, r4, #0 + bl MOD14_021DB790 + cmp r0, #1 + beq _021D92B6 + cmp r0, #2 + bne _021D9342 + ldr r1, _021D9458 ; =0x021C48B8 + mov r0, #0xf0 + ldr r2, [r1, #0x44] + ldr r1, [r1, #0x48] + and r2, r0 + and r0, r1 + cmp r2, r0 + bne _021D9342 + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D92B6: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBBEC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2e + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D92E8: + bl MOD14_021DC4DC + cmp r0, #0 + beq _021D9306 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2d + bl MOD14_021DCB2C + ldr r1, _021D9460 ; =MOD14_021D94BC + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D9306: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBAE0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2f + bl MOD14_021DCB2C + ldr r0, _021D9468 ; =0x000005EB + bl FUN_020054C8 + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9326: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9342 + ldr r0, _021D9458 ; =0x021C48B8 + add r1, r4, #0 + ldr r0, [r0, #0x44] + bl MOD14_021DB790 + cmp r0, #4 + bls _021D9344 +_021D9342: + b _021D9454 +_021D9344: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9350: ; jump table + .short _021D93E2 - _021D9350 - 2 ; case 0 + .short _021D9372 - _021D9350 - 2 ; case 1 + .short _021D935A - _021D9350 - 2 ; case 2 + .short _021D9396 - _021D9350 - 2 ; case 3 + .short _021D93BC - _021D9350 - 2 ; case 4 +_021D935A: + ldr r1, _021D9458 ; =0x021C48B8 + mov r0, #0xf0 + ldr r2, [r1, #0x44] + ldr r1, [r1, #0x48] + and r2, r0 + and r0, r1 + cmp r2, r0 + bne _021D9454 + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D9372: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + mov r1, #6 + tst r0, r1 + bne _021D9454 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D9396: + add r0, r4, #0 + bl MOD14_021DC2A4 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B428 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D93BC: + add r0, r4, #0 + bl MOD14_021DC278 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B428 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D93E2: + ldr r0, _021D9458 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _021D941E + add r0, r4, #0 + bl MOD14_021D9470 + cmp r0, #0 + beq _021D9416 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBCA0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl MOD14_021DCB2C + ldr r0, _021D946C ; =0x000005EA + bl FUN_020054C8 + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9416: + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D941E: + mov r0, #2 + tst r0, r1 + beq _021D9454 + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D942C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9454 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9440: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9454 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9454: + pop {r3, r4, r5, pc} + nop +_021D9458: .word 0x021C48B8 +_021D945C: .word 0x000005DC +_021D9460: .word MOD14_021D94BC +_021D9464: .word 0x000005F3 +_021D9468: .word 0x000005EB +_021D946C: .word 0x000005EA + + thumb_func_start MOD14_021D9470 +MOD14_021D9470: ; 0x021D9470 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r5, #0x14 + str r0, [sp] + bl MOD14_021DC4F8 + add r7, r0, #0 + ldrb r0, [r5, #8] + mov r4, #0 + ldrb r6, [r5, #9] + cmp r0, #0 + ble _021D94B6 +_021D9488: + add r3, r5, r4 + mov r2, #0xc + ldrsb r2, [r3, r2] + ldr r0, [sp] + mov r1, #0 + sub r2, r2, r6 + ldr r0, [r0] + mvn r1, r1 + add r2, r7, r2 + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021D94AE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D94AE: + ldrb r0, [r5, #8] + add r4, r4, #1 + cmp r4, r0 + blt _021D9488 +_021D94B6: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021D94BC +MOD14_021D94BC: ; 0x021D94BC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #3 + bhi _021D95A4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D94D4: ; jump table + .short _021D94DC - _021D94D4 - 2 ; case 0 + .short _021D954E - _021D94D4 - 2 ; case 1 + .short _021D9574 - _021D94D4 - 2 ; case 2 + .short _021D9590 - _021D94D4 - 2 ; case 3 +_021D94DC: + bl MOD14_021DC3CC + cmp r0, #1 + bne _021D952E + add r0, r4, #0 + bl MOD14_021D9B84 + cmp r0, #0 + bne _021D950E + ldr r0, _021D95A8 ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBA5C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D950E: + ldr r0, _021D95AC ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D952E: + ldr r0, _021D95A8 ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBA5C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D954E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D95A4 + add r0, r4, #0 + bl MOD14_021DB934 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x25 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9574: + ldr r0, _021D95B0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D95A4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9590: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D95A4 + add r0, r4, #0 + bl MOD14_021D7620 +_021D95A4: + pop {r3, r4, r5, pc} + nop +_021D95A8: .word 0x000005EB +_021D95AC: .word 0x000005F3 +_021D95B0: .word 0x021C48B8 + + thumb_func_start MOD14_021D95B4 +MOD14_021D95B4: ; 0x021D95B4 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D95CA + cmp r1, #1 + beq _021D9616 + cmp r1, #2 + beq _021D9648 + pop {r4, r5, r6, pc} +_021D95CA: + add r1, r5, #0 + bl MOD14_021DBC00 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xa + bl MOD14_021DCB2C + ldr r0, _021D9664 ; =0x000005EA + bl FUN_020054C8 + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #1 + bne _021D9610 + add r0, r5, #0 + bl MOD14_021DC3E8 + add r6, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + sub r0, r0, #1 + cmp r6, r0 + beq _021D9610 + mov r0, #1 + str r0, [r4] + add r0, r5, #0 + bl MOD14_021DB934 + pop {r4, r5, r6, pc} +_021D9610: + mov r0, #2 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D9616: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9662 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x26 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D9648: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9662 + add r0, r5, #0 + bl MOD14_021D7674 + add r0, r5, #0 + bl MOD14_021D7620 +_021D9662: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D9664: .word 0x000005EA + + thumb_func_start MOD14_021D9668 +MOD14_021D9668: ; 0x021D9668 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD14_021D9B84 + cmp r0, #0 + beq _021D96AC + add r0, r5, #0 + mov r1, #0xac + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D968C + mov r0, #6 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D968C: + add r0, r5, #0 + bl MOD14_021DC3F8 + cmp r0, #0 + beq _021D96AC + add r0, r5, #0 + mov r1, #0xa2 + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + bne _021D96AC + mov r0, #6 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D96AC: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D96B0 +MOD14_021D96B0: ; 0x021D96B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D96C6 + cmp r1, #1 + beq _021D971C + cmp r1, #2 + beq _021D9748 + pop {r3, r4, r5, pc} +_021D96C6: + add r1, sp, #0 + bl MOD14_021D9668 + cmp r0, #0 + beq _021D96F0 + ldr r0, _021D9764 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r5, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D96F0: + add r0, r5, #0 + add r1, r5, #0 + bl MOD14_021DBD34 + ldr r0, _021D9768 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xb + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D971C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9762 + ldr r0, _021D976C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9762 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D9748: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9762 + add r0, r5, #0 + bl MOD14_021D7674 + add r0, r5, #0 + bl MOD14_021D7620 +_021D9762: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9764: .word 0x000005F3 +_021D9768: .word 0x000005DC +_021D976C: .word 0x021C48B8 + + thumb_func_start MOD14_021D9770 +MOD14_021D9770: ; 0x021D9770 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #8 + bls _021D977E + b _021D9928 +_021D977E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D978A: ; jump table + .short _021D979C - _021D978A - 2 ; case 0 + .short _021D9818 - _021D978A - 2 ; case 1 + .short _021D983A - _021D978A - 2 ; case 2 + .short _021D9862 - _021D978A - 2 ; case 3 + .short _021D9892 - _021D978A - 2 ; case 4 + .short _021D98B4 - _021D978A - 2 ; case 5 + .short _021D9928 - _021D978A - 2 ; case 6 + .short _021D98E8 - _021D978A - 2 ; case 7 + .short _021D9914 - _021D978A - 2 ; case 8 +_021D979C: + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206B9AC + cmp r0, #6 + beq _021D97F2 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D97D2 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D97D2: + ldr r0, _021D992C ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBA5C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D97F2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + add r0, r4, #0 + mov r1, #5 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9818: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D983A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + bl MOD14_021DB8D0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9862: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBC00 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9892: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D98B4: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + bl MOD14_021DB910 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D98E8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + ldr r0, _021D9930 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9928 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9914: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9928: + pop {r3, r4, r5, pc} + nop +_021D992C: .word 0x000005EB +_021D9930: .word 0x021C48B8 + + thumb_func_start MOD14_021D9934 +MOD14_021D9934: ; 0x021D9934 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bhi _021D99F8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D994C: ; jump table + .short _021D995A - _021D994C - 2 ; case 0 + .short _021D99F0 - _021D994C - 2 ; case 1 + .short _021D9AB2 - _021D994C - 2 ; case 2 + .short _021D9AD8 - _021D994C - 2 ; case 3 + .short _021D9B04 - _021D994C - 2 ; case 4 + .short _021D9B32 - _021D994C - 2 ; case 5 + .short _021D9B60 - _021D994C - 2 ; case 6 +_021D995A: + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D9998 + add r0, r4, #0 + bl MOD14_021D9B84 + cmp r0, #1 + bne _021D9998 + ldr r0, _021D9B78 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9998: + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021D7998 + cmp r0, #0 + beq _021D99D0 + ldr r0, _021D9B78 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D99D0: + mov r1, #0x11 + lsl r1, r1, #4 + ldrh r1, [r4, r1] + add r0, r4, #0 + mov r2, #0x13 + bl MOD14_021DAA7C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D99F0: + bl MOD14_021DAAA8 + cmp r0, #0 + bne _021D99FA +_021D99F8: + b _021D9B74 +_021D99FA: + ldr r0, _021D9B7C ; =0x000001C1 + mov r1, #0 + ldrsb r2, [r4, r0] + mvn r1, r1 + cmp r2, r1 + bne _021D9A22 + sub r0, #0xad + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9A22: + sub r0, #0xb1 + strh r2, [r4, r0] + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + ldr r1, _021D9B7C ; =0x000001C1 + bne _021D9A62 + ldrsb r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021DBDD8 + cmp r0, #0 + beq _021D9A92 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9A62: + ldrsb r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021DBE00 + cmp r0, #0 + beq _021D9A92 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9A92: + ldr r0, _021D9B78 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xd + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9AB2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + ldr r0, _021D9B80 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9B74 + add r0, r4, #0 + bl MOD14_021DAA98 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9AD8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + ldr r0, _021D9B80 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9B74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9B04: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xc + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9B32: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9B60: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9B74 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9B74: + pop {r3, r4, r5, pc} + nop +_021D9B78: .word 0x000005F3 +_021D9B7C: .word 0x000001C1 +_021D9B80: .word 0x021C48B8 + + thumb_func_start MOD14_021D9B84 +MOD14_021D9B84: ; 0x021D9B84 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [sp] + ldr r0, [r0, r1] + bl FUN_0206B9AC + mov r6, #0 + add r5, r6, #0 + str r0, [sp, #4] + cmp r0, #0 + ble _021D9BEC +_021D9B9E: + mov r0, #0x49 + ldr r1, [sp] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r6, #0 + bl FUN_0206B9B0 + add r4, r0, #0 + bl FUN_020669D4 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _021D9BD2 + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021D9BD2 + add r5, r5, #1 +_021D9BD2: + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02066A20 + cmp r5, #2 + blt _021D9BE4 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9BE4: + ldr r0, [sp, #4] + add r6, r6, #1 + cmp r6, r0 + blt _021D9B9E +_021D9BEC: + ldr r0, [sp] + mov r1, #0xac + mov r2, #0 + bl MOD14_021DC5D0 + cmp r0, #0 + beq _021D9C00 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9C00: + ldr r0, [sp] + mov r1, #0xa2 + mov r2, #0 + bl MOD14_021DC5D0 + cmp r0, #0 + beq _021D9C14 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9C14: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021D9C1C +MOD14_021D9C1C: ; 0x021D9C1C + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0xac + mov r2, #0 + add r5, r0, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D9C36 + mov r0, #0x1f + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C36: + add r0, r5, #0 + bl MOD14_021DC430 + add r0, r5, #0 + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D9C56 + mov r0, #0x1e + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C56: + add r0, r5, #0 + mov r1, #0xa1 + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D9C6C + mov r0, #0x1d + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C6C: + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D9C92 + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #1 + bne _021D9C92 + add r0, r5, #0 + bl MOD14_021D9B84 + cmp r0, #0 + beq _021D9C92 + mov r0, #6 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C92: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021D9C98 +MOD14_021D9C98: ; 0x021D9C98 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #9 + bhi _021D9D44 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D9CB0: ; jump table + .short _021D9CC4 - _021D9CB0 - 2 ; case 0 + .short _021D9D1C - _021D9CB0 - 2 ; case 1 + .short _021D9D86 - _021D9CB0 - 2 ; case 2 + .short _021D9E0A - _021D9CB0 - 2 ; case 3 + .short _021D9E96 - _021D9CB0 - 2 ; case 4 + .short _021D9E62 - _021D9CB0 - 2 ; case 5 + .short _021D9EC8 - _021D9CB0 - 2 ; case 6 + .short _021D9EF2 - _021D9CB0 - 2 ; case 7 + .short _021D9F36 - _021D9CB0 - 2 ; case 8 + .short _021D9F62 - _021D9CB0 - 2 ; case 9 +_021D9CC4: + add r1, sp, #0 + bl MOD14_021D9C1C + cmp r0, #0 + beq _021D9CF0 + add r0, r4, #0 + mov r1, #2 + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9CF0: + ldr r0, _021D9F78 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9D1C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9D44 + add r0, r4, #0 + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021D9D4E + bge _021D9D74 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021D9D44 + sub r1, r2, #1 + cmp r0, r1 + bge _021D9D46 +_021D9D44: + b _021D9F76 +_021D9D46: + beq _021D9D54 + cmp r0, r2 + beq _021D9D62 + pop {r3, r4, r5, pc} +_021D9D4E: + cmp r0, #0x37 + beq _021D9D62 + pop {r3, r4, r5, pc} +_021D9D54: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D9D62: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #9 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9D74: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9D86: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9E70 + add r0, r4, #0 + bl MOD14_021DC458 + add r2, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + bl MOD14_021D9F80 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D9DD0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xe + bl MOD14_021DCB2C + mov r0, #0x6e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + b _021D9E04 +_021D9DD0: + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021D9DF0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xf + bl MOD14_021DCB2C + mov r0, #0x6e + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + b _021D9E04 +_021D9DF0: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x10 + bl MOD14_021DCB2C + mov r0, #0x6e + mov r1, #2 + lsl r0, r0, #2 + str r1, [r4, r0] +_021D9E04: + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9E0A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9E70 + add r0, r4, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + beq _021D9E48 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D9E34 + add r0, r4, #0 + bl MOD14_021DBE34 + b _021D9E3A +_021D9E34: + add r0, r4, #0 + bl MOD14_021DBE4C +_021D9E3A: + add r0, r4, #0 + mov r1, #3 + bl MOD14_021DBA44 + mov r0, #5 + str r0, [r5] + b _021D9E54 +_021D9E48: + add r0, r4, #0 + mov r1, #0x20 + bl MOD14_021DBA44 + mov r0, #4 + str r0, [r5] +_021D9E54: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D9E62: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + bne _021D9E72 +_021D9E70: + b _021D9F76 +_021D9E72: + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + add r0, r4, #0 + mov r1, #4 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9E96: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + add r0, r4, #0 + mov r1, #0x21 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9EC8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9EF2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + add r0, r4, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + beq _021D9F24 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #2 + bne _021D9F1E + sub r0, #0xa4 + ldr r0, [r4, r0] + mov r1, #0x25 + bl MOD14_021DCB2C +_021D9F1E: + add r0, r4, #0 + bl MOD14_021D7674 +_021D9F24: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #9 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9F36: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9F76 + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #9 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9F62: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9F76: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9F78: .word 0x000005F3 +_021D9F7C: .word 0x021C48B8 + + thumb_func_start MOD14_021D9F80 +MOD14_021D9F80: ; 0x021D9F80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [sp] + add r7, r0, r1 + ldr r0, [r0, #0x4c] + mov r4, #0 + ldr r5, _021DA010 ; =0x021E6224 + str r0, [r7, #0x10] + str r4, [sp, #4] +_021D9F96: + ldrh r1, [r5] + ldr r0, [r7, #0x10] + add r6, r7, r4 + bl MOD14_021DA168 + strb r0, [r6, #4] + ldrb r0, [r6, #4] + cmp r0, #0 + beq _021D9FAE + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_021D9FAE: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #3 + blo _021D9F96 + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D9FC6 + mov r0, #1 + strb r0, [r7] + add sp, #8 + strb r0, [r7, #1] + pop {r3, r4, r5, r6, r7, pc} +_021D9FC6: + mov r0, #0 + strb r0, [r7] + strb r0, [r7, #1] + strb r0, [r7, #2] + strb r0, [r7, #3] + mov r1, #0x12 + ldr r0, [sp] + lsl r1, r1, #4 + ldr r0, [r0, r1] + add r1, r1, #4 + str r0, [r7, #0x14] + ldr r0, [sp] + ldr r0, [r0, r1] + str r0, [r7, #0x18] + ldr r0, [sp] + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D9FF0 + mov r0, #1 + b _021D9FF2 +_021D9FF0: + mov r0, #0 +_021D9FF2: + mov r1, #0 + str r0, [r7, #0x1c] + add r0, r7, #0 + add r2, r1, #0 +_021D9FFA: + add r1, r1, #1 + strh r2, [r0, #8] + add r0, r0, #2 + cmp r1, #3 + blo _021D9FFA + ldr r0, _021DA014 ; =MOD14_021DA018 + add r1, r7, #0 + bl FUN_0200CA44 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DA010: .word 0x021E6224 +_021DA014: .word MOD14_021DA018 + + thumb_func_start MOD14_021DA018 +MOD14_021DA018: ; 0x021DA018 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + ldrb r0, [r1, #2] + str r1, [sp, #4] + cmp r0, #0x12 + bhs _021DA0AE + add r0, r1, #0 + ldrb r0, [r0, #3] + str r0, [sp, #0xc] + str r0, [sp, #0x14] + add r0, #0xf + str r0, [sp, #0x14] + cmp r0, #0x1e + ble _021DA03A + mov r0, #0x1e + str r0, [sp, #0x14] +_021DA03A: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r1, r0 + bge _021DA08C +_021DA042: + ldr r1, [sp, #4] + ldr r0, [sp, #4] + ldrb r1, [r1, #2] + ldr r0, [r0, #0x14] + ldr r2, [sp, #0xc] + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + add r7, r0, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DA080 + ldr r4, _021DA164 ; =0x021E6224 + ldr r5, [sp, #4] + mov r6, #0 +_021DA064: + ldrh r1, [r4] + add r0, r7, #0 + bl MOD14_021DA168 + cmp r0, #0 + beq _021DA076 + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] +_021DA076: + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #3 + blo _021DA064 +_021DA080: + ldr r0, [sp, #0xc] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + blt _021DA042 +_021DA08C: + ldr r0, [sp, #0x14] + cmp r0, #0x1e + bne _021DA0A4 + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #3] + ldrb r0, [r0, #2] + add r1, r0, #1 + ldr r0, [sp, #4] + add sp, #0x18 + strb r1, [r0, #2] + pop {r3, r4, r5, r6, r7, pc} +_021DA0A4: + add r1, r0, #0 + ldr r0, [sp, #4] + add sp, #0x18 + strb r1, [r0, #3] + pop {r3, r4, r5, r6, r7, pc} +_021DA0AE: + add r0, r1, #0 + ldr r0, [r0, #0x18] + bl FUN_0206B9AC + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + cmp r0, #0 + ble _021DA0FC +_021DA0C2: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [r0, #0x18] + bl FUN_0206B9B0 + ldr r4, _021DA164 ; =0x021E6224 + ldr r5, [sp, #4] + add r7, r0, #0 + mov r6, #0 +_021DA0D4: + ldrh r1, [r4] + add r0, r7, #0 + bl MOD14_021DA168 + cmp r0, #0 + beq _021DA0E6 + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] +_021DA0E6: + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #3 + blo _021DA0D4 + ldr r0, [sp, #8] + add r1, r0, #1 + ldr r0, [sp, #0x10] + str r1, [sp, #8] + cmp r1, r0 + blt _021DA0C2 +_021DA0FC: + ldr r0, [sp, #4] + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _021DA128 + ldr r4, _021DA164 ; =0x021E6224 + ldr r5, [sp, #4] + mov r6, #0 +_021DA10A: + ldr r0, [sp, #4] + ldrh r1, [r4] + ldr r0, [r0, #0x10] + bl MOD14_021DA168 + cmp r0, #0 + beq _021DA11E + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] +_021DA11E: + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #3 + blo _021DA10A +_021DA128: + ldr r0, [sp, #4] + mov r1, #1 + strb r1, [r0, #1] + mov r2, #0 + add r1, r0, #0 +_021DA132: + ldrh r0, [r1, #8] + cmp r0, #1 + bne _021DA14A + ldr r0, [sp, #4] + add r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #1 + bne _021DA14A + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #1] + b _021DA152 +_021DA14A: + add r2, r2, #1 + add r1, r1, #2 + cmp r2, #3 + blo _021DA132 +_021DA152: + ldr r0, [sp, #4] + mov r1, #1 + strb r1, [r0] + ldr r0, [sp] + bl FUN_0200CAB4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DA164: .word 0x021E6224 + + thumb_func_start MOD14_021DA168 +MOD14_021DA168: ; 0x021DA168 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0 + add r5, r0, #0 + str r1, [sp, #4] + bl FUN_02066A6C + str r0, [sp] + add r0, r5, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _021DA1A8 + mov r4, #0 + add r7, r4, #0 +_021DA18C: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x36 + add r2, r7, #0 + bl FUN_020672BC + cmp r6, r0 + bne _021DA1A2 + mov r0, #1 + str r0, [sp, #4] + b _021DA1A8 +_021DA1A2: + add r4, r4, #1 + cmp r4, #4 + blt _021DA18C +_021DA1A8: + ldr r1, [sp] + add r0, r5, #0 + bl FUN_02066A94 + ldr r0, [sp, #4] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DA1B8 +MOD14_021DA1B8: ; 0x021DA1B8 + mov r1, #0x57 + lsl r1, r1, #2 + ldrb r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DA1C0 +MOD14_021DA1C0: ; 0x021DA1C0 + mov r1, #0x57 + lsl r1, r1, #2 + add r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + beq _021DA1D0 + ldrb r0, [r1, #1] + bx lr +_021DA1D0: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021DA1D4 +MOD14_021DA1D4: ; 0x021DA1D4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021DA1EA + cmp r0, #1 + beq _021DA1FE + cmp r0, #2 + beq _021DA256 + pop {r3, r4, r5, pc} +_021DA1EA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA1FE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA2BC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCA38 + mov r0, #0xa + bl FUN_020168D0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B330 + mov r2, #0x12 + lsl r2, r2, #4 + add r1, r0, #0 + ldr r0, [r4, r2] + add r2, #8 + ldr r2, [r4, r2] + ldr r2, [r2, #0x18] + bl FUN_0206B484 + mov r1, #0x4a + lsl r1, r1, #2 + ldr r0, _021DA2C0 ; =0x020FA5FC + ldr r1, [r4, r1] + mov r2, #9 + bl FUN_02006234 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA256: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006290 + cmp r0, #0 + beq _021DA2BC + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B330 + add r5, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006260 + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + mov r2, #0x12 + lsl r2, r2, #4 + ldr r0, [r4, r2] + add r2, #8 + ldr r2, [r4, r2] + add r1, r5, #0 + ldr r2, [r2, #0x18] + bl FUN_0206B4B4 + mov r0, #0x12 + lsl r0, r0, #4 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0x40 + bl MOD14_021DB580 + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r2, r4, #0 + bl MOD14_021DC76C + ldr r1, _021DA2C4 ; =MOD14_021D76E8 + add r0, r4, #0 + bl MOD14_021D7610 +_021DA2BC: + pop {r3, r4, r5, pc} + nop +_021DA2C0: .word 0x020FA5FC +_021DA2C4: .word MOD14_021D76E8 + + thumb_func_start MOD14_021DA2C8 +MOD14_021DA2C8: ; 0x021DA2C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021DA2DE + cmp r0, #1 + beq _021DA2F2 + cmp r0, #2 + beq _021DA334 + pop {r3, r4, r5, pc} +_021DA2DE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DA2F2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA390 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCA38 + mov r0, #0xa + bl FUN_020168D0 + add r0, r5, #0 + bl MOD14_021D83E4 + mov r1, #0x4b + lsl r1, r1, #2 + ldr r0, _021DA394 ; =0x020FA6E8 + add r1, r5, r1 + mov r2, #9 + bl FUN_02006234 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DA334: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02006290 + cmp r0, #0 + beq _021DA390 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0206B330 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02006260 + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DA374 + add r0, r5, #0 + add r1, r5, #0 + bl MOD14_021DA39C +_021DA374: + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r5, r0 + add r1, r5, #0 + add r2, r5, #0 + bl MOD14_021DC76C + ldr r1, _021DA398 ; =MOD14_021D76E8 + add r0, r5, #0 + bl MOD14_021D7610 + add r0, r5, #0 + bl MOD14_021D7674 +_021DA390: + pop {r3, r4, r5, pc} + nop +_021DA394: .word 0x020FA6E8 +_021DA398: .word MOD14_021D76E8 + + thumb_func_start MOD14_021DA39C +MOD14_021DA39C: ; 0x021DA39C + push {r3, r4, r5, lr} + add r4, r0, #0 + add r4, #8 + ldrb r0, [r4, #4] + add r5, r1, #0 + cmp r0, #0 + beq _021DA3B0 + cmp r0, #1 + beq _021DA3D2 + pop {r3, r4, r5, pc} +_021DA3B0: + mov r0, #5 + lsl r0, r0, #6 + ldrb r0, [r5, r0] + mov r1, #6 + strb r0, [r4, #7] + mov r0, #7 + ldrsb r0, [r4, r0] + bl _s32_div_f + strb r1, [r4, #5] + mov r0, #7 + ldrsb r0, [r4, r0] + mov r1, #6 + bl _s32_div_f + strb r0, [r4, #6] + b _021DA3DA +_021DA3D2: + mov r0, #5 + lsl r0, r0, #6 + ldrb r0, [r5, r0] + strb r0, [r4, #8] +_021DA3DA: + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DA3E4 +MOD14_021DA3E4: ; 0x021DA3E4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #6 + bhi _021DA496 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA3FC: ; jump table + .short _021DA40A - _021DA3FC - 2 ; case 0 + .short _021DA41E - _021DA3FC - 2 ; case 1 + .short _021DA488 - _021DA3FC - 2 ; case 2 + .short _021DA522 - _021DA3FC - 2 ; case 3 + .short _021DA546 - _021DA3FC - 2 ; case 4 + .short _021DA58E - _021DA3FC - 2 ; case 5 + .short _021DA5C2 - _021DA3FC - 2 ; case 6 +_021DA40A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA41E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA496 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCA38 + mov r0, #0xa + bl FUN_020168D0 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + ldr r1, _021DA5D8 ; =0x021E6264 + mov r2, #9 + bl FUN_0206EFEC + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + sub r1, #0xf8 + ldr r1, [r4, r1] + mov r2, #1 + mov r3, #0 + bl FUN_0206E314 + ldr r0, _021DA5DC ; =0x0000004B + mov r1, #2 + bl HandleLoadOverlay + mov r1, #0x85 + lsl r1, r1, #2 + ldr r0, _021DA5E0 ; =0x021EC68C + ldr r1, [r4, r1] + mov r2, #9 + bl FUN_02006234 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA488: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006290 + cmp r0, #0 + bne _021DA498 +_021DA496: + b _021DA5D6 +_021DA498: + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206E37C + ldr r1, _021DA5E4 ; =0x021E6A00 + str r0, [r1, #8] + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006260 + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021DA5DC ; =0x0000004B + bl UnloadOverlayByID + ldr r0, _021DA5E4 ; =0x021E6A00 + ldr r6, [r0, #8] + cmp r6, #0 + beq _021DA4F4 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + lsl r1, r6, #0x10 + lsr r1, r1, #0x10 + mov r2, #1 + mov r3, #9 + bl FUN_0206EDD4 + ldr r1, _021DA5E4 ; =0x021E6A00 + add r0, r4, #0 + ldr r1, [r1, #8] + add r2, r4, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD14_021DC1E8 + add r0, r4, #0 + bl MOD14_021D7674 +_021DA4F4: + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r2, r4, #0 + bl MOD14_021DC76C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA522: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA5D6 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA546: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA5D6 + ldr r0, _021DA5E4 ; =0x021E6A00 + ldr r2, [r0, #8] + cmp r2, #0 + bne _021DA566 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r4, r5, r6, pc} +_021DA566: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x10 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA58E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA5D6 + ldr r0, _021DA5E8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021DA5D6 + ldr r0, _021DA5EC ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA5C2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA5D6 + add r0, r4, #0 + bl MOD14_021D7620 +_021DA5D6: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DA5D8: .word 0x021E6264 +_021DA5DC: .word 0x0000004B +_021DA5E0: .word 0x021EC68C +_021DA5E4: .word 0x021E6A00 +_021DA5E8: .word 0x021C48B8 +_021DA5EC: .word 0x000005DD + + thumb_func_start MOD14_021DA5F0 +MOD14_021DA5F0: ; 0x021DA5F0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bhi _021DA6A2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA608: ; jump table + .short _021DA614 - _021DA608 - 2 ; case 0 + .short _021DA67A - _021DA608 - 2 ; case 1 + .short _021DA6E4 - _021DA608 - 2 ; case 2 + .short _021DA744 - _021DA608 - 2 ; case 3 + .short _021DA76C - _021DA608 - 2 ; case 4 + .short _021DA79E - _021DA608 - 2 ; case 5 +_021DA614: + bl MOD14_021DC430 + ldr r1, _021DA7B4 ; =0x021E6A00 + str r0, [r1, #4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021DA648 + ldr r0, _021DA7B8 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA648: + mov r0, #0x67 + ldr r2, _021DA7B4 ; =0x021E6A00 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [r2, #4] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E5D98 + add r0, r4, #0 + mov r1, #0x17 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA67A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA6A2 + add r0, r4, #0 + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021DA6AC + bge _021DA6D2 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021DA6A2 + sub r1, r2, #1 + cmp r0, r1 + bge _021DA6A4 +_021DA6A2: + b _021DA7B2 +_021DA6A4: + beq _021DA6B2 + cmp r0, r2 + beq _021DA6C0 + pop {r3, r4, r5, pc} +_021DA6AC: + cmp r0, #0x37 + beq _021DA6C0 + pop {r3, r4, r5, pc} +_021DA6B2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021DA6C0: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA6D2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA6E4: + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + ldr r1, _021DA7B4 ; =0x021E6A00 + mov r2, #1 + ldr r1, [r1, #4] + mov r3, #9 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206ED38 + cmp r0, #0 + beq _021DA72A + add r0, r4, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD14_021DC1E8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x16 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA72A: + add r0, r4, #0 + mov r1, #0xe + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA744: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA7B2 + add r0, r4, #0 + mov r1, #0xf + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA76C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA7B2 + ldr r0, _021DA7BC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021DA7B2 + ldr r0, _021DA7C0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA79E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA7B2 + add r0, r4, #0 + bl MOD14_021D7620 +_021DA7B2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA7B4: .word 0x021E6A00 +_021DA7B8: .word 0x000005F3 +_021DA7BC: .word 0x021C48B8 +_021DA7C0: .word 0x000005DD + + thumb_func_start MOD14_021DA7C4 +MOD14_021DA7C4: ; 0x021DA7C4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bhi _021DA878 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA7DC: ; jump table + .short _021DA7EA - _021DA7DC - 2 ; case 0 + .short _021DA850 - _021DA7DC - 2 ; case 1 + .short _021DA8BA - _021DA7DC - 2 ; case 2 + .short _021DA922 - _021DA7DC - 2 ; case 3 + .short _021DA950 - _021DA7DC - 2 ; case 4 + .short _021DA978 - _021DA7DC - 2 ; case 5 + .short _021DA9AA - _021DA7DC - 2 ; case 6 +_021DA7EA: + bl MOD14_021DC544 + ldr r1, _021DA9C0 ; =0x021E6A00 + str r0, [r1] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021DA81E + ldr r0, _021DA9C4 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA81E: + mov r0, #0x67 + ldr r2, _021DA9C0 ; =0x021E6A00 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x1a + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA850: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA878 + add r0, r4, #0 + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021DA882 + bge _021DA8A8 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021DA878 + sub r1, r2, #1 + cmp r0, r1 + bge _021DA87A +_021DA878: + b _021DA9BE +_021DA87A: + beq _021DA888 + cmp r0, r2 + beq _021DA896 + pop {r3, r4, r5, pc} +_021DA882: + cmp r0, #0x37 + beq _021DA896 + pop {r3, r4, r5, pc} +_021DA888: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021DA896: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA8A8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA8BA: + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + ldr r1, _021DA9C0 ; =0x021E6A00 + mov r2, #1 + ldr r1, [r1] + mov r3, #9 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206ED38 + cmp r0, #0 + beq _021DA908 + add r0, r4, #0 + bl MOD14_021DC538 + cmp r0, #0 + beq _021DA8EC + add r0, r4, #0 + bl MOD14_021DC310 + mov r0, #4 + b _021DA8F8 +_021DA8EC: + add r0, r4, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD14_021DC1E8 + mov r0, #3 +_021DA8F8: + str r0, [r5] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x17 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021DA908: + add r0, r4, #0 + mov r1, #0xe + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA922: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x17 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA9BE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x16 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA950: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA9BE + add r0, r4, #0 + mov r1, #0x1b + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA978: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA9BE + ldr r0, _021DA9C8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021DA9BE + ldr r0, _021DA9CC ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA9AA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA9BE + add r0, r4, #0 + bl MOD14_021D7620 +_021DA9BE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA9C0: .word 0x021E6A00 +_021DA9C4: .word 0x000005F3 +_021DA9C8: .word 0x021C48B8 +_021DA9CC: .word 0x000005DD + + thumb_func_start MOD14_021DA9D0 +MOD14_021DA9D0: ; 0x021DA9D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _021DAA74 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA9E8: ; jump table + .short _021DA9F2 - _021DA9E8 - 2 ; case 0 + .short _021DAA06 - _021DA9E8 - 2 ; case 1 + .short _021DAA2A - _021DA9E8 - 2 ; case 2 + .short _021DAA42 - _021DA9E8 - 2 ; case 3 + .short _021DAA5E - _021DA9E8 - 2 ; case 4 +_021DA9F2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA06: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAA74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x11 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA2A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x11 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAA74 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA42: + ldr r0, _021DAA78 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r1, r0 + beq _021DAA74 + add r0, #0x21 + ldr r0, [r5, r0] + mov r1, #0x12 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA5E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x12 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAA74 + add r0, r5, #0 + bl MOD14_021D7620 +_021DAA74: + pop {r3, r4, r5, pc} + nop +_021DAA78: .word 0x021C48B8 + + thumb_func_start MOD14_021DAA7C +MOD14_021DAA7C: ; 0x021DAA7C + push {r4, r5} + mov r3, #0x6f + lsl r3, r3, #2 + mov r5, #0 + str r5, [r0, r3] + add r4, r3, #5 + strb r1, [r0, r4] + add r1, r3, #6 + strh r2, [r0, r1] + add r1, r3, #4 + strb r5, [r0, r1] + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DAA98 +MOD14_021DAA98: ; 0x021DAA98 + mov r1, #0x6f + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + mov r2, #1 + add r1, r1, #4 + strb r2, [r0, r1] + bx lr + + thumb_func_start MOD14_021DAAA8 +MOD14_021DAAA8: ; 0x021DAAA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6f + lsl r0, r0, #2 + add r4, r5, r0 + ldr r1, [r4] + cmp r1, #3 + bls _021DAABA + b _021DABDC +_021DAABA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DAAC6: ; jump table + .short _021DAACE - _021DAAC6 - 2 ; case 0 + .short _021DAB04 - _021DAAC6 - 2 ; case 1 + .short _021DAB2C - _021DAAC6 - 2 ; case 2 + .short _021DAB3E - _021DAAC6 - 2 ; case 3 +_021DAACE: + ldrb r0, [r4, #4] + cmp r0, #1 + bne _021DAADA + mov r0, #1 + str r0, [r4] + b _021DABDC +_021DAADA: + mov r0, #5 + ldrsb r1, [r4, r0] + sub r0, r0, #6 + cmp r1, r0 + bne _021DAAE8 + mov r0, #0 + strb r0, [r4, #5] +_021DAAE8: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r5, #0 + bl MOD14_021DC2DC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1e + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r4] + b _021DABDC +_021DAB04: + sub r0, #0xa8 + ldr r0, [r5, r0] + mov r1, #0x1e + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DABDC + ldrh r1, [r4, #6] + add r0, r5, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + b _021DABDC +_021DAB2C: + sub r0, #0xa8 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DABDC + mov r0, #3 + str r0, [r4] +_021DAB3E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1f + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DABDC + ldr r0, _021DABE0 ; =0x021C48B8 + mov r1, #0x22 + ldr r0, [r0, #0x48] + lsl r1, r1, #4 + add r2, r0, #0 + tst r2, r1 + beq _021DAB86 + mov r0, #5 + ldrsb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, #5] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _021DAB6E + mov r0, #0x11 + strb r0, [r4, #5] +_021DAB6E: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r5, #0 + bl MOD14_021DC2DC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1f + bl MOD14_021DCB2C + b _021DABDC +_021DAB86: + lsr r1, r1, #1 + tst r1, r0 + beq _021DABB6 + mov r0, #5 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #5] + ldrsb r0, [r4, r0] + cmp r0, #0x12 + blt _021DAB9E + mov r0, #0 + strb r0, [r4, #5] +_021DAB9E: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r5, #0 + bl MOD14_021DC2DC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1f + bl MOD14_021DCB2C + b _021DABDC +_021DABB6: + mov r1, #1 + tst r1, r0 + beq _021DABC6 + ldr r0, _021DABE4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DABC6: + mov r1, #2 + tst r0, r1 + beq _021DABDC + ldr r0, _021DABE4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0 + mvn r0, r0 + strb r0, [r4, #5] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DABDC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DABE0: .word 0x021C48B8 +_021DABE4: .word 0x000005DD + + thumb_func_start MOD14_021DABE8 +MOD14_021DABE8: ; 0x021DABE8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021DABFE + cmp r1, #1 + beq _021DAC28 + cmp r1, #2 + beq _021DAC68 + pop {r3, r4, r5, pc} +_021DABFE: + bl MOD14_021DC424 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0206B428 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAC28: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAC7E + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DAC60 + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DAC60 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAC60: + add r0, r5, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021DAC68: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAC7E + add r0, r5, #0 + bl MOD14_021D7620 +_021DAC7E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DAC80 +MOD14_021DAC80: ; 0x021DAC80 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #5 + bhi _021DAD02 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAC98: ; jump table + .short _021DACA4 - _021DAC98 - 2 ; case 0 + .short _021DACF2 - _021DAC98 - 2 ; case 1 + .short _021DAEA2 - _021DAC98 - 2 ; case 2 + .short _021DAEF8 - _021DAC98 - 2 ; case 3 + .short _021DAF34 - _021DAC98 - 2 ; case 4 + .short _021DAF4A - _021DAC98 - 2 ; case 5 +_021DACA4: + ldr r0, _021DAF60 ; =0x000005E4 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021DC350 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021DC358 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #0x58 + str r0, [sp] + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0xc0 + mov r3, #0x38 + bl MOD14_021DC5F8 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + str r1, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DACF2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021DAD04 +_021DAD02: + b _021DAF5E +_021DAD04: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021DAD34 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #1 + bne _021DAD34 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021DAD2C + ldr r1, _021DAF64 ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, r6, r7, pc} +_021DAD2C: + ldr r0, _021DAF68 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} +_021DAD34: + ldr r0, _021DAF6C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r0, r1 + beq _021DAD6C + ldr r0, _021DAF70 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC350 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021DC358 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAD6C: + mov r1, #0x81 + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #0 + beq _021DADE4 + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021DADE4 + sub r0, r1, #4 + ldr r0, [r4, r0] + add r2, r0, #1 + sub r0, r1, #4 + str r2, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x14 + bls _021DADE4 + add r0, r4, #0 + bl MOD14_021DC474 + add r6, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DC2C4 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, r6, #0 + bl FUN_0206B428 + add r0, r4, #0 + bl MOD14_021DB934 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DADC6 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #8 + bl MOD14_021DCB2C +_021DADC6: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB2C + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, r0, #4 + str r1, [r4, r0] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DADE4: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #1 + beq _021DADFC + cmp r0, #2 + beq _021DAE1C + cmp r0, #3 + beq _021DAE76 + pop {r3, r4, r5, r6, r7, pc} +_021DADFC: + add r0, r4, #0 + bl MOD14_021DC474 + mov r1, #0x7f + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #0 + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r1, #0xc + str r2, [r4, r1] + pop {r3, r4, r5, r6, r7, pc} +_021DAE1C: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC708 + add r6, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r6, r0 + bne _021DAE34 + b _021DAF5E +_021DAE34: + sub r7, r6, r0 + add r0, r4, #0 + bl MOD14_021DC474 + add r1, r7, r0 + bpl _021DAE44 + add r1, #0x12 + b _021DAE4A +_021DAE44: + cmp r1, #0x12 + blt _021DAE4A + sub r1, #0x12 +_021DAE4A: + mov r0, #0x83 + lsl r0, r0, #2 + str r6, [r4, r0] + add r0, r4, #0 + bl MOD14_021DC358 + add r0, r4, #0 + add r1, r7, #0 + bl MOD14_021DC368 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB2C + ldr r0, _021DAF74 ; =0x000005DC + bl FUN_020054C8 + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAE76: + add r0, r4, #0 + bl MOD14_021DC424 + add r5, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r5, r0 + beq _021DAE8C + mov r1, #1 + b _021DAE8E +_021DAE8C: + mov r1, #0 +_021DAE8E: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DAEA2: + mov r0, #0x82 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + bne _021DAEE2 + sub r0, #0x40 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #3 + bne _021DAEE2 + add r0, r4, #0 + bl MOD14_021DC424 + add r6, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r6, r0 + beq _021DAECE + mov r1, #1 + b _021DAED0 +_021DAECE: + mov r1, #0 +_021DAED0: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_021DAEE2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAF5E + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAEF8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAF5E + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DAF2E + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021DAF2E + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAF2E: + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAF34: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAF5E + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAF4A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DAF5E + add r0, r4, #0 + bl MOD14_021D7620 +_021DAF5E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DAF60: .word 0x000005E4 +_021DAF64: .word MOD14_021DAF78 +_021DAF68: .word 0x000005F3 +_021DAF6C: .word 0x021C48B8 +_021DAF70: .word 0x000005DD +_021DAF74: .word 0x000005DC + + thumb_func_start MOD14_021DAF78 +MOD14_021DAF78: ; 0x021DAF78 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + add r4, r0, #0 + ldr r0, [r6] + cmp r0, #3 + bhi _021DAFFC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAF92: ; jump table + .short _021DAF9A - _021DAF92 - 2 ; case 0 + .short _021DAFEC - _021DAF92 - 2 ; case 1 + .short _021DB144 - _021DAF92 - 2 ; case 2 + .short _021DB19C - _021DAF92 - 2 ; case 3 +_021DAF9A: + ldr r0, _021DB1B4 ; =0x000005E4 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #2 + bl MOD14_021DC350 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC360 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC358 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #0x58 + str r0, [sp] + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0xff + mov r2, #0xc0 + mov r3, #0x38 + bl MOD14_021DC5F8 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + add sp, #8 + str r1, [r6] + pop {r3, r4, r5, r6, r7, pc} +_021DAFEC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021DAFFE +_021DAFFC: + b _021DB1B0 +_021DAFFE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021DB01E + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021DB01E + ldr r1, _021DB1B8 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DB01E: + ldr r0, _021DB1BC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r0, r1 + beq _021DB046 + ldr r0, _021DB1C0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC350 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r6] +_021DB046: + add r0, r4, #0 + bl MOD14_021DB1C8 + cmp r0, #0 + beq _021DB072 + ldr r0, _021DB1C0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x27 + bl MOD14_021DCB2C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DB072: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #1 + beq _021DB08C + cmp r0, #2 + beq _021DB0AE + cmp r0, #3 + beq _021DB116 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DB08C: + add r0, r4, #0 + bl MOD14_021DC474 + mov r1, #0x7f + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #0 + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r1, #0xc + add sp, #8 + str r2, [r4, r1] + pop {r3, r4, r5, r6, r7, pc} +_021DB0AE: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC708 + add r7, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r7, r0 + beq _021DB1B0 + sub r0, r7, r0 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021DC474 + ldr r1, [sp, #4] + add r5, r1, r0 + bpl _021DB0D8 + add r5, #8 + b _021DB0DE +_021DB0D8: + cmp r5, #8 + blt _021DB0DE + sub r5, #8 +_021DB0DE: + mov r0, #0x83 + lsl r0, r0, #2 + str r7, [r4, r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD14_021DC358 + add r0, r4, #0 + add r1, r5, #0 + bl MOD14_021DC360 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD14_021DC368 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB2C + ldr r0, _021DB1C4 ; =0x000005DC + bl FUN_020054C8 + mov r0, #2 + add sp, #8 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} +_021DB116: + add r0, r4, #0 + bl MOD14_021DC424 + add r5, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r5, r0 + beq _021DB12C + mov r1, #1 + b _021DB12E +_021DB12C: + mov r1, #0 +_021DB12E: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + add sp, #8 + str r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DB144: + mov r0, #0x82 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + bne _021DB184 + sub r0, #0x40 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #3 + bne _021DB184 + add r0, r4, #0 + bl MOD14_021DC424 + add r5, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r5, r0 + beq _021DB170 + mov r1, #1 + b _021DB172 +_021DB170: + mov r1, #0 +_021DB172: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_021DB184: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DB1B0 + mov r0, #1 + add sp, #8 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} +_021DB19C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DB1B0 + add r0, r4, #0 + bl MOD14_021D7620 +_021DB1B0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB1B4: .word 0x000005E4 +_021DB1B8: .word MOD14_021DAC80 +_021DB1BC: .word 0x021C48B8 +_021DB1C0: .word 0x000005DD +_021DB1C4: .word 0x000005DC + + thumb_func_start MOD14_021DB1C8 +MOD14_021DB1C8: ; 0x021DB1C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x62 + mov r1, #8 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #8 + ldr r0, [r4, r0] + bl FUN_02022144 + mov r0, #0x62 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #8 + beq _021DB1EA + mov r0, #1 + pop {r4, pc} +_021DB1EA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB1F0 +MOD14_021DB1F0: ; 0x021DB1F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x62 + add r4, r2, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #8 + bne _021DB21E + cmp r1, #0 + bne _021DB21E + add r0, r4, #0 + bl MOD14_021DC47C + add r1, r0, r5 + cmp r1, #8 + blo _021DB212 + sub r1, #8 +_021DB212: + add r0, r4, #0 + bl MOD14_021DC370 + mov r0, #0x62 + lsl r0, r0, #2 + str r5, [r4, r0] +_021DB21E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB220 +MOD14_021DB220: ; 0x021DB220 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + bl FUN_02022510 + mov r1, #0x12 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r2, [r4] + sub r0, r1, #4 + str r2, [r5, r0] + ldr r0, [r4] + bl FUN_0206BB1C + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4] + bl LoadPlayerDataAddress + mov r1, #0x69 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x8c + str r4, [r5, r1] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xf + mov r3, #9 + str r0, [r4, #8] + bl FUN_0200A86C + mov r2, #0x63 + lsl r2, r2, #2 + str r0, [r5, r2] + mov r0, #1 + mov r1, #0x1a + sub r2, #0x22 + mov r3, #9 + bl FUN_0200A86C + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xbe + mov r3, #9 + bl FUN_0200A86C + mov r2, #0x65 + lsl r2, r2, #2 + str r0, [r5, r2] + mov r0, #0 + mov r1, #0x1a + add r2, #0x94 + mov r3, #9 + bl FUN_0200A86C + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #9 + bl FUN_0200AA80 + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + bl FUN_020669BC + add r1, r0, #0 + mov r0, #9 + bl FUN_02016998 + mov r1, #0x1a + lsl r1, r1, #4 + str r0, [r5, r1] + sub r0, r1, #4 + ldr r0, [r5, r0] + cmp r0, #0 + bne _021DB2C8 + bl ErrorHandling +_021DB2C8: + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + str r0, [sp] + mov r0, #9 + mov r2, #0 + mov r3, #8 + bl FUN_02077A84 + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4, #4] + cmp r0, #4 + beq _021DB2FA + mov r0, #9 + str r0, [sp] + ldr r0, _021DB384 ; =0x021E622A + ldr r2, _021DB388 ; =MOD14_021DB9F4 + mov r1, #3 + add r3, r5, #0 + bl FUN_020220C4 + b _021DB30A +_021DB2FA: + mov r0, #9 + str r0, [sp] + ldr r0, _021DB38C ; =0x021E6236 + ldr r2, _021DB388 ; =MOD14_021DB9F4 + mov r1, #4 + add r3, r5, #0 + bl FUN_020220C4 +_021DB30A: + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #9 + str r0, [sp] + ldr r0, _021DB390 ; =0x021E6246 + ldr r2, _021DB394 ; =MOD14_021DB1F0 + mov r1, #7 + add r3, r5, #0 + bl FUN_020220C4 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #0 + sub r0, #0x60 + ldr r0, [r5, r0] + mov r2, #0 + str r0, [r5] + add r0, r1, #0 + sub r0, #0x5c + ldr r0, [r5, r0] + str r0, [r5, #4] + add r0, r1, #0 + sub r0, #0x70 + strh r2, [r5, r0] + sub r1, #0x6e + strh r2, [r5, r1] + add r0, r5, #0 + ldr r1, [r4, #4] + add r0, #0x48 + bl MOD14_021DB424 + add r0, r5, #0 + add r0, #0x4c + bl MOD14_021DB4C8 + mov r0, #0x12 + lsl r0, r0, #4 + add r1, r5, #0 + ldr r0, [r5, r0] + add r1, #0x40 + bl MOD14_021DB49C + add r0, r5, #0 + add r0, #0xa4 + bl MOD14_021DB524 + add r0, r5, #0 + bl MOD14_021DB430 + add r0, r5, #0 + add r0, #0x14 + bl MOD14_021DB470 + add r5, #0x9c + add r0, r5, #0 + bl MOD14_021DB574 + pop {r3, r4, r5, pc} + nop +_021DB384: .word 0x021E622A +_021DB388: .word MOD14_021DB9F4 +_021DB38C: .word 0x021E6236 +_021DB390: .word 0x021E6246 +_021DB394: .word MOD14_021DB1F0 + + thumb_func_start MOD14_021DB398 +MOD14_021DB398: ; 0x021DB398 + push {r4, lr} + add r4, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0202212C + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202212C + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021DB3BE + bl FUN_02016A18 +_021DB3BE: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200AB18 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02077AC4 + add r0, r4, #0 + add r0, #0x4c + bl MOD14_021DB500 + add r0, r4, #0 + add r0, #0x14 + bl MOD14_021DB490 + add r0, r4, #0 + add r0, #0x40 + bl MOD14_021DB4BC + add r0, r4, #0 + add r0, #0xa4 + bl MOD14_021DB558 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB424 +MOD14_021DB424: ; 0x021DB424 + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + strh r1, [r0, #2] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DB430 +MOD14_021DB430: ; 0x021DB430 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0 + add r4, r5, #0 + add r2, r1, #0 + add r4, #8 + bl MOD14_021DBA4C + mov r2, #0 + add r0, r5, #0 + strb r2, [r4, #8] + mov r1, #1 + strb r1, [r4, #9] + add r0, #0x48 + ldrb r0, [r0] + cmp r0, #0 + beq _021DB458 + cmp r0, #4 + beq _021DB45C + b _021DB462 +_021DB458: + strb r1, [r4, #4] + b _021DB464 +_021DB45C: + mov r0, #2 + strb r0, [r4, #4] + b _021DB464 +_021DB462: + strb r2, [r4, #4] +_021DB464: + mov r0, #1 + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB470 +MOD14_021DB470: ; 0x021DB470 + push {r4, lr} + add r4, r0, #0 + bl FUN_020690C8 + add r2, r0, #0 + mov r1, #0x1e + mov r0, #9 + mul r1, r2 + bl FUN_02016998 + str r0, [r4] + mov r0, #0 + strb r0, [r4, #8] + strb r0, [r4, #0xb] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB490 +MOD14_021DB490: ; 0x021DB490 + ldr r3, _021DB498 ; =0x02016A19 + ldr r0, [r0] + bx r3 + nop +_021DB498: .word 0x02016A19 + + thumb_func_start MOD14_021DB49C +MOD14_021DB49C: ; 0x021DB49C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206B330 + strb r0, [r4] + mov r0, #0x14 + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021DB580 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB4BC +MOD14_021DB4BC: ; 0x021DB4BC + ldr r3, _021DB4C4 ; =0x02021A21 + ldr r0, [r0, #4] + bx r3 + nop +_021DB4C4: .word 0x02021A21 + + thumb_func_start MOD14_021DB4C8 +MOD14_021DB4C8: ; 0x021DB4C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x14] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x18] + mov r0, #0x12 + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x1c] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x20] + mov r0, #0x10 + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x24] + pop {r4, pc} + + thumb_func_start MOD14_021DB500 +MOD14_021DB500: ; 0x021DB500 + push {r4, lr} + add r4, r0, #0 + 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, #0x24] + bl FUN_02021A20 + pop {r4, pc} + + thumb_func_start MOD14_021DB524 +MOD14_021DB524: ; 0x021DB524 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + strb r4, [r6] + strb r4, [r6, #1] + str r4, [r6, #4] + add r5, r6, #0 + add r7, r4, #0 +_021DB534: + add r0, r6, r4 + strb r7, [r0, #2] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r5, #0x30] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r5, #0x34] + add r4, r4, #1 + add r5, #0x30 + cmp r4, #2 + blt _021DB534 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB558 +MOD14_021DB558: ; 0x021DB558 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021DB55E: + ldr r0, [r5, #0x30] + bl FUN_02021A20 + ldr r0, [r5, #0x34] + bl FUN_02021A20 + add r4, r4, #1 + add r5, #0x30 + cmp r4, #2 + blt _021DB55E + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB574 +MOD14_021DB574: ; 0x021DB574 + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #2] + strb r1, [r0, #1] + strh r1, [r0, #4] + bx lr + + thumb_func_start MOD14_021DB580 +MOD14_021DB580: ; 0x021DB580 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + bl FUN_0206B43C + strb r0, [r4, #1] + ldrb r1, [r4] + ldr r2, [r4, #4] + add r0, r5, #0 + bl FUN_0206B484 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB59C +MOD14_021DB59C: ; 0x021DB59C + push {r4, lr} + add r2, r0, #0 + add r4, r2, #0 + add r2, #0x40 + add r0, r1, #0 + ldrb r1, [r2] + add r4, #0x40 + bl FUN_0206B43C + strb r0, [r4, #1] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB5B4 +MOD14_021DB5B4: ; 0x021DB5B4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r4, #0 + tst r2, r1 + beq _021DB5D0 + add r0, r5, #0 + sub r1, #0x21 + add r2, r4, #0 + bl MOD14_021DB61C + add r4, r0, #0 + b _021DB60C +_021DB5D0: + mov r1, #0x10 + tst r1, r0 + beq _021DB5E4 + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + bl MOD14_021DB61C + add r4, r0, #0 + b _021DB60C +_021DB5E4: + mov r2, #0x40 + add r1, r0, #0 + tst r1, r2 + beq _021DB5FA + add r0, r5, #0 + add r1, r4, #0 + sub r2, #0x41 + bl MOD14_021DB61C + add r4, r0, #0 + b _021DB60C +_021DB5FA: + mov r1, #0x80 + tst r0, r1 + beq _021DB60C + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021DB61C + add r4, r0, #0 +_021DB60C: + cmp r4, #1 + bne _021DB616 + add r0, r5, #0 + bl MOD14_021DB934 +_021DB616: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB61C +MOD14_021DB61C: ; 0x021DB61C + push {r4, lr} + add r3, r0, #0 + add r3, #8 + ldrb r4, [r3, #4] + cmp r4, #4 + bhi _021DB66A + add r4, r4, r4 + add r4, pc + ldrh r4, [r4, #6] + lsl r4, r4, #0x10 + asr r4, r4, #0x10 + add pc, r4 +_021DB634: ; jump table + .short _021DB63E - _021DB634 - 2 ; case 0 + .short _021DB720 - _021DB634 - 2 ; case 1 + .short _021DB69E - _021DB634 - 2 ; case 2 + .short _021DB6F4 - _021DB634 - 2 ; case 3 + .short _021DB6C8 - _021DB634 - 2 ; case 4 +_021DB63E: + cmp r1, #0 + beq _021DB666 + mov r2, #5 + ldrsb r4, [r3, r2] + add r1, r4, r1 + strb r1, [r3, #5] + ldrsb r1, [r3, r2] + cmp r1, #0 + bge _021DB654 + add r1, r2, #0 + b _021DB65A +_021DB654: + cmp r1, #6 + blt _021DB65A + mov r1, #0 +_021DB65A: + mov r2, #6 + ldrsb r2, [r3, r2] + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB666: + cmp r2, #0 + bne _021DB66C +_021DB66A: + b _021DB78A +_021DB66C: + mov r1, #6 + ldrsb r1, [r3, r1] + add r2, r1, r2 + bpl _021DB67C + mov r1, #2 + mov r2, #0 + strb r1, [r3, #4] + b _021DB692 +_021DB67C: + cmp r2, #4 + ble _021DB692 + mov r1, #5 + ldrsb r1, [r3, r1] + mov r2, #4 + cmp r1, #5 + bne _021DB68E + add r1, r2, #0 + b _021DB690 +_021DB68E: + mov r1, #3 +_021DB690: + strb r1, [r3, #4] +_021DB692: + mov r1, #5 + ldrsb r1, [r3, r1] + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB69E: + cmp r2, #0 + ble _021DB6B2 + mov r2, #0 + strb r2, [r3, #4] + mov r1, #5 + ldrsb r1, [r3, r1] + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB6B2: + bge _021DB78A + mov r0, #5 + ldrsb r0, [r3, r0] + cmp r0, #5 + bne _021DB6C0 + mov r0, #4 + b _021DB6C2 +_021DB6C0: + mov r0, #3 +_021DB6C2: + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB6C8: + cmp r2, #0 + bge _021DB6DE + mov r1, #0 + strb r1, [r3, #4] + mov r1, #5 + ldrsb r1, [r3, r1] + mov r2, #4 + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB6DE: + ble _021DB6E8 + mov r0, #2 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB6E8: + cmp r1, #0 + beq _021DB78A + mov r0, #3 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB6F4: + cmp r2, #0 + bge _021DB70A + mov r1, #0 + strb r1, [r3, #4] + mov r1, #5 + ldrsb r1, [r3, r1] + mov r2, #4 + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB70A: + ble _021DB714 + mov r0, #2 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB714: + cmp r1, #0 + beq _021DB78A + mov r0, #4 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB720: + mov r4, #8 + ldrsb r0, [r3, r4] + cmp r2, #0 + bge _021DB742 + cmp r0, #6 + bne _021DB732 + mov r1, #5 + strb r1, [r3, #8] + b _021DB77E +_021DB732: + sub r1, r0, #2 + strb r1, [r3, #8] + ldrsb r1, [r3, r4] + cmp r1, #0 + bge _021DB77E + mov r1, #6 + strb r1, [r3, #8] + b _021DB77E +_021DB742: + ble _021DB75E + cmp r0, #6 + bne _021DB74E + mov r1, #0 + strb r1, [r3, #8] + b _021DB77E +_021DB74E: + add r1, r0, #2 + strb r1, [r3, #8] + ldrsb r1, [r3, r4] + cmp r1, #6 + blt _021DB77E + mov r1, #6 + strb r1, [r3, #8] + b _021DB77E +_021DB75E: + cmp r1, #0 + bge _021DB76E + mov r1, #1 + tst r1, r0 + beq _021DB77E + sub r1, r0, #1 + strb r1, [r3, #8] + b _021DB77E +_021DB76E: + ble _021DB77E + cmp r0, #6 + beq _021DB77E + mov r1, #1 + tst r1, r0 + bne _021DB77E + add r1, r0, #1 + strb r1, [r3, #8] +_021DB77E: + mov r1, #8 + ldrsb r1, [r3, r1] + cmp r0, r1 + beq _021DB78A + mov r0, #1 + pop {r4, pc} +_021DB78A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB790 +MOD14_021DB790: ; 0x021DB790 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r4, #0 + tst r2, r1 + beq _021DB7AC + add r0, r5, #0 + sub r1, #0x21 + add r2, r4, #0 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7AC: + mov r1, #0x10 + tst r1, r0 + beq _021DB7C0 + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7C0: + mov r2, #0x40 + add r1, r0, #0 + tst r1, r2 + beq _021DB7D6 + add r0, r5, #0 + add r1, r4, #0 + sub r2, #0x41 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7D6: + mov r2, #0x80 + add r1, r0, #0 + tst r1, r2 + beq _021DB7EC + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7EC: + lsl r1, r2, #2 + tst r1, r0 + beq _021DB7F6 + mov r4, #3 + b _021DB7FE +_021DB7F6: + add r2, #0x80 + tst r0, r2 + beq _021DB7FE + mov r4, #4 +_021DB7FE: + cmp r4, #1 + bne _021DB808 + add r0, r5, #0 + bl MOD14_021DB934 +_021DB808: + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB80C +MOD14_021DB80C: ; 0x021DB80C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r4, r7, #0 + add r4, #8 + ldrb r3, [r4, #4] + add r6, r7, #0 + add r6, #0x14 + cmp r3, #0 + bne _021DB8C6 + cmp r1, #0 + beq _021DB874 + mov r2, #5 + ldrsb r2, [r4, r2] + add r5, r2, r1 + bl MOD14_021DC3F4 + mov r1, #0xc + tst r0, r1 + beq _021DB858 + ldrb r0, [r6, #4] + ldrb r3, [r6, #6] + add r2, r5, #0 + add r1, r5, #0 + cmp r3, r0 + bls _021DB844 + sub r0, r3, r0 + sub r1, r5, r0 + b _021DB848 +_021DB844: + sub r0, r0, r3 + add r2, r5, r0 +_021DB848: + cmp r1, #0 + bge _021DB850 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_021DB850: + cmp r2, #6 + blt _021DB864 + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_021DB858: + cmp r5, #0 + blt _021DB860 + cmp r5, #6 + blt _021DB864 +_021DB860: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021DB864: + mov r2, #6 + ldrsb r2, [r4, r2] + add r0, r7, #0 + add r1, r5, #0 + bl MOD14_021DBA4C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB874: + cmp r2, #0 + beq _021DB8C6 + mov r1, #6 + ldrsb r1, [r4, r1] + add r5, r1, r2 + bl MOD14_021DC3F4 + mov r1, #0xc + tst r0, r1 + beq _021DB8AA + ldrb r0, [r6, #5] + ldrb r3, [r6, #7] + add r2, r5, #0 + add r1, r5, #0 + cmp r3, r0 + bls _021DB89A + sub r0, r3, r0 + sub r1, r5, r0 + b _021DB89E +_021DB89A: + sub r0, r0, r3 + add r2, r5, r0 +_021DB89E: + cmp r1, #0 + blt _021DB8A6 + cmp r2, #5 + blt _021DB8B6 +_021DB8A6: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021DB8AA: + cmp r5, #0 + blt _021DB8B2 + cmp r5, #5 + blt _021DB8B6 +_021DB8B2: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021DB8B6: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r7, #0 + add r2, r5, #0 + bl MOD14_021DBA4C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB8C6: + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB8D0 +MOD14_021DB8D0: ; 0x021DB8D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #8 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021DB8FA + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + strb r0, [r4, #8] + mov r0, #8 + ldrsb r0, [r4, r0] + cmp r0, #6 + blt _021DB8FE + mov r0, #5 + strb r0, [r4, #8] + b _021DB8FE +_021DB8FA: + mov r0, #0 + strb r0, [r4, #8] +_021DB8FE: + ldrb r0, [r4, #4] + strb r0, [r4, #9] + mov r0, #1 + strb r0, [r4, #4] + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB910 +MOD14_021DB910: ; 0x021DB910 + push {r4, lr} + add r4, r0, #0 + add r3, r4, #0 + add r3, #8 + mov r1, #0 + strb r1, [r3, #4] + mov r2, #9 + ldrsb r2, [r3, r2] + cmp r2, #0 + beq _021DB92A + add r2, r1, #0 + bl MOD14_021DBA4C +_021DB92A: + add r0, r4, #0 + bl MOD14_021DB934 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB934 +MOD14_021DB934: ; 0x021DB934 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #8 + mov r1, #0 + strb r1, [r4, #0xa] + ldrb r0, [r4, #4] + cmp r0, #4 + bhi _021DB994 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DB952: ; jump table + .short _021DB95C - _021DB952 - 2 ; case 0 + .short _021DB96C - _021DB952 - 2 ; case 1 + .short _021DB994 - _021DB952 - 2 ; case 2 + .short _021DB994 - _021DB952 - 2 ; case 3 + .short _021DB994 - _021DB952 - 2 ; case 4 +_021DB95C: + mov r2, #7 + ldrsb r2, [r4, r2] + ldr r0, [r5] + sub r1, r1, #1 + bl FUN_0206B5E4 + str r0, [r4] + b _021DB998 +_021DB96C: + mov r0, #8 + ldrsb r6, [r4, r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + cmp r6, r0 + bge _021DB98E + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_0206B9B0 + str r0, [r4] + b _021DB998 +_021DB98E: + mov r0, #0 + str r0, [r4] + b _021DB998 +_021DB994: + mov r0, #0 + str r0, [r4] +_021DB998: + ldr r0, [r4] + cmp r0, #0 + beq _021DB9C4 + mov r1, #0xab + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DB9C4 + mov r0, #1 + strb r0, [r4, #0xa] + add r0, r5, #0 + bl MOD14_021DC3F4 + mov r1, #6 + tst r0, r1 + bne _021DB9C4 + ldr r1, [r4] + add r0, r5, #0 + add r2, r5, #0 + bl MOD14_021DBE88 +_021DB9C4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB9C8 +MOD14_021DB9C8: ; 0x021DB9C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x61 + ldr r1, _021DB9F0 ; =0x0000FFFF + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #8 + ldr r0, [r4, r0] + bl FUN_02022144 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r1, [r4, r0] + ldr r0, _021DB9F0 ; =0x0000FFFF + cmp r1, r0 + beq _021DB9EC + mov r0, #1 + pop {r4, pc} +_021DB9EC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DB9F0: .word 0x0000FFFF + + thumb_func_start MOD14_021DB9F4 +MOD14_021DB9F4: ; 0x021DB9F4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + cmp r5, #0 + bne _021DBA0E + mov r0, #0x61 + lsl r0, r0, #2 + ldr r2, [r4, r0] + ldr r1, _021DBA40 ; =0x0000FFFF + cmp r2, r1 + bne _021DBA0E + str r6, [r4, r0] +_021DBA0E: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021DBA3C + cmp r6, #2 + bne _021DBA3C + cmp r5, #0 + beq _021DBA2A + cmp r5, #1 + beq _021DBA34 + cmp r5, #3 + beq _021DBA34 + pop {r4, r5, r6, pc} +_021DBA2A: + add r0, r4, #0 + mov r1, #1 + bl MOD14_021DC1A0 + pop {r4, r5, r6, pc} +_021DBA34: + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC1A0 +_021DBA3C: + pop {r4, r5, r6, pc} + nop +_021DBA40: .word 0x0000FFFF + + thumb_func_start MOD14_021DBA44 +MOD14_021DBA44: ; 0x021DBA44 + mov r2, #0x43 + lsl r2, r2, #2 + str r1, [r0, r2] + bx lr + + thumb_func_start MOD14_021DBA4C +MOD14_021DBA4C: ; 0x021DBA4C + add r0, #8 + mov r3, #6 + strb r1, [r0, #5] + mul r3, r2 + strb r2, [r0, #6] + add r1, r1, r3 + strb r1, [r0, #7] + bx lr + + thumb_func_start MOD14_021DBA5C +MOD14_021DBA5C: ; 0x021DBA5C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + add r4, r6, #0 + add r5, r6, #0 + add r0, r6, #0 + add r4, #0x14 + add r5, #8 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBA98 + bl FUN_020690C8 + add r2, r0, #0 + ldr r0, [r5] + ldr r1, [r4] + bl MIi_CpuCopy32 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r5, r2] + ldr r0, [r7, r0] + mvn r1, r1 + bl FUN_0206B2FC + mov r0, #0 + b _021DBAB6 +_021DBA98: + bl FUN_020690C4 + add r2, r0, #0 + ldr r0, [r5] + ldr r1, [r4] + bl MIi_CpuCopy32 + mov r0, #0x49 + mov r1, #8 + lsl r0, r0, #2 + ldrsb r1, [r5, r1] + ldr r0, [r7, r0] + bl FUN_0206B938 + mov r0, #1 +_021DBAB6: + strb r0, [r4, #0xb] + ldr r1, [r4] + add r0, r6, #0 + bl MOD14_021DC1A8 + mov r0, #5 + ldrsb r0, [r5, r0] + strb r0, [r4, #6] + ldrb r0, [r4, #6] + strb r0, [r4, #4] + mov r0, #6 + ldrsb r0, [r5, r0] + strb r0, [r4, #7] + ldrb r0, [r4, #7] + strb r0, [r4, #5] + mov r0, #2 + strb r0, [r6, #0x13] + mov r0, #0 + strb r0, [r6, #0x12] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBAE0 +MOD14_021DBAE0: ; 0x021DBAE0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r6, r1, #0 + add r7, r0, #0 + add r6, #0x14 + mov r0, #1 + strb r0, [r6, #0xa] + add r0, r1, #0 + str r1, [sp, #4] + bl MOD14_021DC3E0 + str r0, [sp, #0x14] + bl FUN_020690C8 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + add r1, sp, #0x30 + ldr r5, [r0, #0x14] + add r0, sp, #0x24 + str r0, [sp] + ldr r0, [sp, #4] + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD14_021DC4A4 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + str r0, [sp, #0x18] + cmp r0, r1 + bhi _021DBBA6 + mov r1, #6 + mul r1, r0 + str r1, [sp, #8] +_021DBB26: + ldr r1, [sp, #0x30] + ldr r0, [sp, #8] + str r1, [sp, #0x1c] + add r4, r1, r0 + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1c] + cmp r0, r1 + bhi _021DBB94 +_021DBB36: + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r7, r0] + mvn r1, r1 + add r2, r4, #0 + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + str r0, [sp, #0x20] + bl FUN_020672BC + cmp r0, #0 + beq _021DBB86 + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x10] + add r1, r5, #0 + bl MIi_CpuCopy32 + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r7, r0] + mvn r1, r1 + add r2, r4, #0 + bl FUN_0206B2FC + ldr r0, [sp, #0x10] + add r5, r5, r0 + ldr r0, [sp, #0xc] + add r1, r6, r0 + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + strb r4, [r1, #0xc] + cmp r4, r0 + bne _021DBB86 + mov r0, #0 + strb r0, [r6, #0xa] +_021DBB86: + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x2c] + add r0, r0, #1 + add r4, r4, #1 + str r0, [sp, #0x1c] + cmp r0, r1 + bls _021DBB36 +_021DBB94: + ldr r0, [sp, #8] + ldr r1, [sp, #0x24] + add r0, r0, #6 + str r0, [sp, #8] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, r1 + bls _021DBB26 +_021DBBA6: + ldr r0, [sp, #0xc] + strb r0, [r6, #8] + ldr r1, [sp, #0x28] + mov r0, #6 + ldr r2, [sp, #0x30] + mul r0, r1 + add r0, r2, r0 + strb r0, [r6, #9] + ldr r0, [sp, #4] + ldrb r0, [r0, #0x12] + cmp r0, #0 + beq _021DBBC2 + mov r1, #4 + b _021DBBC4 +_021DBBC2: + mov r1, #8 +_021DBBC4: + ldr r0, [sp, #4] + strb r1, [r0, #0x13] + mov r1, #0 + strb r1, [r0, #0x12] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DBBD0 +MOD14_021DBBD0: ; 0x021DBBD0 + add r2, r1, #0 + add r1, #8 + mov r0, #5 + ldrsb r0, [r1, r0] + add r2, #0x14 + strb r0, [r2, #6] + ldrb r0, [r2, #6] + strb r0, [r2, #4] + mov r0, #6 + ldrsb r0, [r1, r0] + strb r0, [r2, #7] + ldrb r0, [r2, #7] + strb r0, [r2, #5] + bx lr + + thumb_func_start MOD14_021DBBEC +MOD14_021DBBEC: ; 0x021DBBEC + add r2, r1, #0 + add r1, #8 + mov r0, #5 + ldrsb r0, [r1, r0] + add r2, #0x14 + strb r0, [r2, #6] + mov r0, #6 + ldrsb r0, [r1, r0] + strb r0, [r2, #7] + bx lr + + thumb_func_start MOD14_021DBC00 +MOD14_021DBC00: ; 0x021DBC00 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + add r4, r7, #0 + add r6, r7, #0 + add r0, r7, #0 + add r4, #0x14 + add r6, #8 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBC42 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r6, r2] + ldr r0, [r5, r0] + ldr r3, [r4] + mvn r1, r1 + bl FUN_0206B2B0 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r6, r2] + ldr r0, [r5, r0] + mvn r1, r1 + bl FUN_0206B5E4 + add r1, r0, #0 + b _021DBC8A +_021DBC42: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _021DBC56 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4] + bl FUN_0206B900 + b _021DBC70 +_021DBC56: + mov r1, #0x1a + lsl r1, r1, #4 + ldr r0, [r4] + ldr r1, [r5, r1] + bl FUN_02069A64 + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0x7c + ldr r1, [r5, r1] + bl FUN_0206B900 +_021DBC70: + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + add r1, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + sub r1, r1, #1 + bl FUN_0206B9B0 + add r1, r0, #0 +_021DBC8A: + add r0, r7, #0 + bl MOD14_021DC1A8 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #1 + strb r0, [r7, #0x13] + strb r0, [r7, #0x12] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBCA0 +MOD14_021DBCA0: ; 0x021DBCA0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + add r7, r0, #0 + add r6, #0x14 + add r0, r1, #0 + str r1, [sp] + bl MOD14_021DC4F8 + str r0, [sp, #8] + ldrb r0, [r6, #9] + str r0, [sp, #0xc] + bl FUN_020690C8 + str r0, [sp, #4] + ldr r0, [sp] + mov r5, #0 + ldr r4, [r0, #0x14] + ldrb r0, [r6, #8] + cmp r0, #0 + ble _021DBCF4 +_021DBCCA: + add r3, r6, r5 + mov r2, #0xc + ldrsb r3, [r3, r2] + ldr r2, [sp, #0xc] + mov r0, #0x12 + lsl r0, r0, #4 + sub r3, r3, r2 + ldr r2, [sp, #8] + mov r1, #0 + add r2, r2, r3 + ldr r0, [r7, r0] + mvn r1, r1 + add r3, r4, #0 + bl FUN_0206B2B0 + ldr r0, [sp, #4] + add r5, r5, #1 + add r4, r4, r0 + ldrb r0, [r6, #8] + cmp r5, r0 + blt _021DBCCA +_021DBCF4: + ldr r0, [sp] + bl MOD14_021DC3E0 + add r2, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r7, r0] + mvn r1, r1 + bl FUN_0206B5E4 + add r1, r0, #0 + ldr r0, [sp] + bl MOD14_021DC1A8 + add r0, r7, #0 + bl MOD14_021DB934 + mov r1, #0 + ldr r0, [sp] + strb r1, [r6, #8] + ldrb r0, [r0, #0x13] + cmp r0, #4 + bne _021DBD26 + mov r1, #1 +_021DBD26: + ldr r0, [sp] + strb r1, [r0, #0x12] + mov r1, #1 + strb r1, [r0, #0x13] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBD34 +MOD14_021DBD34: ; 0x021DBD34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + str r1, [sp] + add r5, r0, #0 + add r4, #0x14 + bl FUN_020690C4 + add r6, r0, #0 + ldr r0, [sp] + add r2, r6, #0 + ldr r7, [r0, #0x14] + str r0, [sp, #4] + add r0, #8 + str r0, [sp, #4] + add r0, r7, #0 + add r1, r7, r6 + bl MIi_CpuCopy32 + ldr r0, [sp] + ldr r1, [sp] + ldr r0, [r0, #8] + ldr r1, [r1, #0x14] + add r2, r6, #0 + bl MIi_CpuCopy32 + ldr r0, [sp] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBD8E + ldr r2, [sp, #4] + mov r0, #0x12 + mov r3, #7 + lsl r0, r0, #4 + ldrsb r2, [r2, r3] + mov r1, #0 + ldr r0, [r5, r0] + mvn r1, r1 + add r3, r7, r6 + bl FUN_0206B2B0 + mov r0, #0 + strb r0, [r4, #0xb] + b _021DBDC8 +_021DBD8E: + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _021DBDA2 + mov r1, #0x1a + lsl r1, r1, #4 + ldr r1, [r5, r1] + add r0, r7, r6 + bl FUN_02069A64 + b _021DBDB0 +_021DBDA2: + mov r1, #0x1a + lsl r1, r1, #4 + ldr r1, [r5, r1] + add r0, r7, r6 + add r2, r6, #0 + bl MIi_CpuCopy32 +_021DBDB0: + mov r3, #0x49 + lsl r3, r3, #2 + ldr r0, [r5, r3] + ldr r1, [sp, #4] + mov r2, #8 + ldrsb r1, [r1, r2] + add r3, #0x7c + ldr r2, [r5, r3] + bl FUN_0206B9DC + mov r0, #1 + strb r0, [r4, #0xb] +_021DBDC8: + ldr r0, [sp] + ldr r1, [r4] + add r2, r5, #0 + bl MOD14_021DBE88 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBDD8 +MOD14_021DBDD8: ; 0x021DBDD8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, [r4, #0x14] + bl FUN_0206B244 + cmp r0, #0 + beq _021DBDFA + mov r0, #1 + strb r0, [r4, #0x13] + add r0, r4, #0 + bl MOD14_021DB934 + mov r0, #1 + pop {r4, pc} +_021DBDFA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBE00 +MOD14_021DBE00: ; 0x021DBE00 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + add r4, r5, #0 + ldr r0, [r5, r0] + ldr r2, [r5, #8] + add r4, #8 + bl FUN_0206B244 + cmp r0, #0 + beq _021DBE30 + mov r0, #0x49 + mov r1, #8 + lsl r0, r0, #2 + ldrsb r1, [r4, r1] + ldr r0, [r5, r0] + bl FUN_0206B938 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DBE30: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DBE34 +MOD14_021DBE34: ; 0x021DBE34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_020669A0 + mov r0, #1 + strb r0, [r4, #0x13] + add r0, r4, #0 + bl MOD14_021DB934 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBE4C +MOD14_021DBE4C: ; 0x021DBE4C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #8 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBE70 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r4, r2] + ldr r0, [r5, r0] + mvn r1, r1 + bl FUN_0206B2FC + b _021DBE7E +_021DBE70: + mov r0, #0x49 + mov r1, #8 + lsl r0, r0, #2 + ldrsb r1, [r4, r1] + ldr r0, [r5, r0] + bl FUN_0206B938 +_021DBE7E: + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBE88 +MOD14_021DBE88: ; 0x021DBE88 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD14_021DBEAC + add r0, r5, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021DBEA8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD14_021DBFF4 +_021DBEA8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBEAC +MOD14_021DBEAC: ; 0x021DBEAC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r4, r7, #0 + add r0, r5, #0 + add r6, r2, #0 + add r4, #0x4c + bl FUN_02066A6C + str r0, [sp] + str r5, [r7, #0x4c] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #4] + add r0, r5, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #6] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0206BB28 + ldrh r1, [r4, #4] + bl FUN_0206BB48 + strh r0, [r4, #8] + add r0, r5, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xf] + ldrh r0, [r4, #4] + mov r1, #9 + bl FUN_0206851C + add r7, r0, #0 + add r0, r5, #0 + mov r1, #8 + mov r2, #0 + bl FUN_020672BC + add r2, r0, #0 + ldrh r1, [r4, #4] + add r0, r7, #0 + bl FUN_02068824 + strb r0, [r4, #0xa] + add r0, r5, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xb] + add r0, r5, #0 + mov r1, #0xb0 + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #0xb1 + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021DBF68 + add r0, r5, #0 + mov r1, #0xaf + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DBF68 + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + bl FUN_020672BC + add r2, r0, #0 + ldrh r1, [r4, #4] + add r0, r7, #0 + bl FUN_02068A44 + strb r0, [r4, #0xe] + b _021DBF6C +_021DBF68: + mov r0, #0xff + strb r0, [r4, #0xe] +_021DBF6C: + ldr r2, [r4, #0x14] + add r0, r5, #0 + mov r1, #0x76 + bl FUN_020672BC + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021DBF8C + mov r0, #0x19 + lsl r0, r0, #4 + ldrh r1, [r4, #4] + ldr r0, [r6, r0] + ldr r2, [r4, #0x18] + bl FUN_0200A8E0 + b _021DBF9A +_021DBF8C: + ldr r0, [r4, #0x18] + ldr r1, [r4, #0x14] + bl FUN_02021A74 + ldr r0, [r4, #0x14] + bl FUN_02021A4C +_021DBF9A: + ldrh r1, [r4, #6] + cmp r1, #0 + beq _021DBFAA + ldr r0, [r4, #0x1c] + mov r2, #9 + bl FUN_0206E768 + b _021DBFB8 +_021DBFAA: + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200A8E0 +_021DBFB8: + add r0, r5, #0 + bl FUN_0206885C + add r1, r0, #0 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x20] + bl FUN_0200A8E0 + add r0, r5, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020672BC + add r1, r0, #0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x24] + bl FUN_0200A8E0 + add r0, r7, #0 + bl FUN_02068640 + ldr r1, [sp] + add r0, r5, #0 + bl FUN_02066A94 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DBFF4 +MOD14_021DBFF4: ; 0x021DBFF4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0xa4 + add r5, r2, #0 + ldrb r2, [r0] + str r1, [sp] + mov r0, #0x30 + add r6, r7, #0 + add r1, r7, #0 + mul r0, r2 + add r1, #0xac + ldr r2, [sp] + add r6, #0x4c + add r4, r1, r0 + str r2, [r1, r0] + ldrh r0, [r6, #4] + strh r0, [r4, #4] + ldrb r0, [r6, #0xf] + strb r0, [r4, #6] + ldrb r0, [r6, #0xa] + strh r0, [r4, #8] + ldrb r0, [r4, #6] + cmp r0, #0 + ldr r0, [r4, #0x28] + beq _021DC02E + ldr r1, [r6, #0x18] + bl FUN_02021A74 + b _021DC034 +_021DC02E: + ldr r1, [r6, #0x14] + bl FUN_02021A74 +_021DC034: + ldr r0, [r4, #0x2c] + ldr r1, [r6, #0x20] + bl FUN_02021A74 + mov r1, #0x1a + lsl r1, r1, #4 + ldr r0, [sp] + ldr r1, [r5, r1] + bl FUN_02069A64 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_020669D4 + add r6, r0, #0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xa] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa4 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xc] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xe] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa7 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x10] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa8 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x12] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x14] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x16] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x18] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1a] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1c] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1e] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x36 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x20] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x37 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x22] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x38 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x24] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x39 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x26] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + strb r0, [r4, #7] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_02066A20 + add r0, r7, #0 + add r0, #0xa4 + ldrb r0, [r0] + mov r1, #1 + add r0, r7, r0 + add r0, #0xa6 + strb r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DC170 +MOD14_021DC170: ; 0x021DC170 + add r1, r0, #0 + add r1, #0xa4 + ldrb r2, [r1] + mov r1, #1 + add r0, #0xa4 + eor r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021DC180 +MOD14_021DC180: ; 0x021DC180 + add r1, r0, #0 + add r1, #0xa5 + ldrb r1, [r1] + add r2, r1, #1 + add r1, r0, #0 + add r1, #0xa5 + strb r2, [r1] + add r1, r0, #0 + add r1, #0xa5 + ldrb r1, [r1] + cmp r1, #3 + blo _021DC19E + mov r1, #0 + add r0, #0xa5 + strb r1, [r0] +_021DC19E: + bx lr + + thumb_func_start MOD14_021DC1A0 +MOD14_021DC1A0: ; 0x021DC1A0 + add r0, #0xa8 + str r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC1A8 +MOD14_021DC1A8: ; 0x021DC1A8 + str r1, [r0, #0x4c] + bx lr + + thumb_func_start MOD14_021DC1AC +MOD14_021DC1AC: ; 0x021DC1AC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r0, #0x96 + ldrb r1, [r0] + add r2, r4, #0 + add r0, sp, #0 + add r2, #0x4c + strb r1, [r0] + strb r1, [r2, #0xb] + ldr r0, [r4, #0x4c] + mov r1, #0xb + add r2, sp, #0 + bl FUN_02067960 + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC1E2 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DC1E2 + bl FUN_02022830 +_021DC1E2: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DC1E8 +MOD14_021DC1E8: ; 0x021DC1E8 + push {r0, r1, r2, r3} + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r0, sp, #0x18 + add r4, r5, #0 + ldrh r1, [r0, #4] + add r4, #0x4c + add r6, r2, #0 + strh r1, [r4, #6] + cmp r1, #0 + beq _021DC20A + ldr r0, [r4, #0x1c] + mov r2, #9 + bl FUN_0206E768 + b _021DC218 +_021DC20A: + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200A8E0 +_021DC218: + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC24A + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DC24A + add r0, r5, #0 + bl MOD14_021DC3E0 + add r2, r0, #0 + add r0, sp, #0x1c + str r0, [sp] + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r6, r0] + mvn r1, r1 + mov r3, #6 + bl FUN_0206B598 + b _021DC254 +_021DC24A: + ldr r0, [r4] + mov r1, #6 + add r2, sp, #0x1c + bl FUN_02067960 +_021DC254: + ldr r0, [r4] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + ldr r1, _021DC274 ; =0x000001ED + cmp r0, r1 + bne _021DC26A + ldr r0, [r4] + bl FUN_02069ECC +_021DC26A: + add sp, #4 + pop {r3, r4, r5, r6} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 +_021DC274: .word 0x000001ED + + thumb_func_start MOD14_021DC278 +MOD14_021DC278: ; 0x021DC278 + add r2, r0, #0 + add r2, #0x40 + ldrb r2, [r2] + add r1, r0, #0 + add r1, #0x40 + add r3, r2, #1 + add r2, r0, #0 + add r2, #0x40 + strb r3, [r2] + add r2, r0, #0 + add r2, #0x40 + ldrb r2, [r2] + cmp r2, #0x12 + blo _021DC298 + mov r2, #0 + strb r2, [r1] +_021DC298: + ldr r3, _021DC2A0 ; =MOD14_021DB580 + ldr r0, [r0] + bx r3 + nop +_021DC2A0: .word MOD14_021DB580 + + thumb_func_start MOD14_021DC2A4 +MOD14_021DC2A4: ; 0x021DC2A4 + add r2, r0, #0 + add r2, #0x40 + ldrb r2, [r2] + add r1, r0, #0 + add r1, #0x40 + cmp r2, #0 + beq _021DC2B6 + sub r2, r2, #1 + b _021DC2B8 +_021DC2B6: + mov r2, #0x11 +_021DC2B8: + ldr r3, _021DC2C0 ; =MOD14_021DB580 + strb r2, [r1] + ldr r0, [r0] + bx r3 + .align 2, 0 +_021DC2C0: .word MOD14_021DB580 + + thumb_func_start MOD14_021DC2C4 +MOD14_021DC2C4: ; 0x021DC2C4 + add r3, r0, #0 + add r2, r0, #0 + add r2, #0x40 + strb r1, [r2] + add r3, #0x40 + add r1, r3, #0 + ldr r3, _021DC2D8 ; =MOD14_021DB580 + ldr r0, [r0] + bx r3 + nop +_021DC2D8: .word MOD14_021DB580 + + thumb_func_start MOD14_021DC2DC +MOD14_021DC2DC: ; 0x021DC2DC + add r0, #0x98 + str r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC2E4 +MOD14_021DC2E4: ; 0x021DC2E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r2, r5, #0 + add r2, #0x4c + add r4, r1, #0 + ldrh r1, [r2, #6] + ldr r0, _021DC30C ; =0x00000112 + strh r1, [r5, r0] + add r0, #0x7a + ldr r0, [r4, r0] + ldr r2, [r2, #0x1c] + mov r1, #0x14 + bl FUN_0200A8E0 + add r0, r5, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD14_021DC1E8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DC30C: .word 0x00000112 + + thumb_func_start MOD14_021DC310 +MOD14_021DC310: ; 0x021DC310 + ldr r1, _021DC318 ; =0x00000112 + mov r2, #0 + strh r2, [r0, r1] + bx lr + .align 2, 0 +_021DC318: .word 0x00000112 + + thumb_func_start MOD14_021DC31C +MOD14_021DC31C: ; 0x021DC31C + push {r4, lr} + ldr r3, _021DC330 ; =0x00000112 + add r2, r1, #0 + ldrh r1, [r0, r3] + mov r4, #0 + strh r4, [r0, r3] + bl MOD14_021DC1E8 + pop {r4, pc} + nop +_021DC330: .word 0x00000112 + + thumb_func_start MOD14_021DC334 +MOD14_021DC334: ; 0x021DC334 + push {r4, lr} + add r3, r0, #0 + add r3, #0x52 + ldr r4, _021DC34C ; =0x00000112 + add r2, r1, #0 + ldrh r1, [r0, r4] + ldrh r3, [r3] + strh r3, [r0, r4] + bl MOD14_021DC1E8 + pop {r4, pc} + nop +_021DC34C: .word 0x00000112 + + thumb_func_start MOD14_021DC350 +MOD14_021DC350: ; 0x021DC350 + add r0, #0x9c + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC358 +MOD14_021DC358: ; 0x021DC358 + add r0, #0x9e + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC360 +MOD14_021DC360: ; 0x021DC360 + add r0, #0x9d + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC368 +MOD14_021DC368: ; 0x021DC368 + add r0, #0xa0 + strh r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC370 +MOD14_021DC370: ; 0x021DC370 + cmp r1, #0 + bne _021DC37C + mov r1, #0 + add r0, #0x4a + strh r1, [r0] + bx lr +_021DC37C: + add r2, r0, #0 + add r2, #0x4a + ldrh r3, [r2] + mov r2, #1 + sub r1, r1, #1 + lsl r2, r1 + add r1, r3, #0 + eor r1, r2 + add r0, #0x4a + strh r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC394 +MOD14_021DC394: ; 0x021DC394 + add r1, r0, #0 + add r1, #0x49 + ldrb r2, [r1] + mov r1, #1 + add r0, #0x49 + eor r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021DC3A4 +MOD14_021DC3A4: ; 0x021DC3A4 + mov r1, #0x63 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DC3AC +MOD14_021DC3AC: ; 0x021DC3AC + mov r1, #0x67 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DC3B4 +MOD14_021DC3B4: ; 0x021DC3B4 + mov r1, #0x69 + lsl r1, r1, #2 + ldr r3, _021DC3C0 ; =0x02025085 + ldr r0, [r0, r1] + bx r3 + nop +_021DC3C0: .word 0x02025085 + + thumb_func_start MOD14_021DC3C4 +MOD14_021DC3C4: ; 0x021DC3C4 + add r0, #0x48 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3CC +MOD14_021DC3CC: ; 0x021DC3CC + ldrb r0, [r0, #0xc] + bx lr + + thumb_func_start MOD14_021DC3D0 +MOD14_021DC3D0: ; 0x021DC3D0 + mov r1, #0xd + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3D8 +MOD14_021DC3D8: ; 0x021DC3D8 + mov r1, #0xe + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3E0 +MOD14_021DC3E0: ; 0x021DC3E0 + mov r1, #0xf + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3E8 +MOD14_021DC3E8: ; 0x021DC3E8 + mov r1, #0x10 + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3F0 +MOD14_021DC3F0: ; 0x021DC3F0 + ldrb r0, [r0, #0x12] + bx lr + + thumb_func_start MOD14_021DC3F4 +MOD14_021DC3F4: ; 0x021DC3F4 + ldrb r0, [r0, #0x13] + bx lr + + thumb_func_start MOD14_021DC3F8 +MOD14_021DC3F8: ; 0x021DC3F8 + ldrb r1, [r0, #0x13] + cmp r1, #0 + beq _021DC402 + ldrb r0, [r0, #0x1f] + bx lr +_021DC402: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC408 +MOD14_021DC408: ; 0x021DC408 + ldrb r1, [r0, #0x13] + cmp r1, #2 + beq _021DC412 + cmp r1, #4 + bne _021DC416 +_021DC412: + mov r0, #1 + bx lr +_021DC416: + ldrb r0, [r0, #0x12] + cmp r0, #0 + beq _021DC420 + mov r0, #1 + bx lr +_021DC420: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021DC424 +MOD14_021DC424: ; 0x021DC424 + add r0, #0x40 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC42C +MOD14_021DC42C: ; 0x021DC42C + add r0, #0x4c + bx lr + + thumb_func_start MOD14_021DC430 +MOD14_021DC430: ; 0x021DC430 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC408 + cmp r0, #0 + beq _021DC442 + add r4, #0x52 + ldrh r0, [r4] + pop {r4, pc} +_021DC442: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DC448 +MOD14_021DC448: ; 0x021DC448 + add r0, #0x40 + bx lr + + thumb_func_start MOD14_021DC44C +MOD14_021DC44C: ; 0x021DC44C + ldr r0, [r0] + bx lr + + thumb_func_start MOD14_021DC450 +MOD14_021DC450: ; 0x021DC450 + mov r1, #0x43 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DC458 +MOD14_021DC458: ; 0x021DC458 + ldr r0, [r0, #0x4c] + bx lr + + thumb_func_start MOD14_021DC45C +MOD14_021DC45C: ; 0x021DC45C + add r0, #0x57 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC464 +MOD14_021DC464: ; 0x021DC464 + add r0, #0x98 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC46C +MOD14_021DC46C: ; 0x021DC46C + mov r1, #0xa0 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC474 +MOD14_021DC474: ; 0x021DC474 + add r0, #0x9e + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC47C +MOD14_021DC47C: ; 0x021DC47C + add r0, #0x9d + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC484 +MOD14_021DC484: ; 0x021DC484 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021DC496 + add r4, #0x4a + ldrh r0, [r4] + pop {r4, pc} +_021DC496: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DC49C +MOD14_021DC49C: ; 0x021DC49C + add r0, #0x49 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC4A4 +MOD14_021DC4A4: ; 0x021DC4A4 + push {r3, r4, r5, r6} + add r0, #0x14 + ldrb r6, [r0, #6] + ldrb r5, [r0, #4] + ldr r4, [sp, #0x10] + cmp r5, r6 + bhi _021DC4B8 + str r5, [r1] + ldrb r1, [r0, #6] + b _021DC4BC +_021DC4B8: + str r6, [r1] + ldrb r1, [r0, #4] +_021DC4BC: + str r1, [r2] + ldrb r2, [r0, #7] + ldrb r1, [r0, #5] + cmp r1, r2 + bhi _021DC4D0 + str r1, [r3] + ldrb r0, [r0, #7] + str r0, [r4] + pop {r3, r4, r5, r6} + bx lr +_021DC4D0: + str r2, [r3] + ldrb r0, [r0, #5] + str r0, [r4] + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC4DC +MOD14_021DC4DC: ; 0x021DC4DC + add r0, #0x14 + ldrb r2, [r0, #4] + ldrb r1, [r0, #6] + cmp r2, r1 + bne _021DC4F2 + ldrb r1, [r0, #5] + ldrb r0, [r0, #7] + cmp r1, r0 + bne _021DC4F2 + mov r0, #1 + bx lr +_021DC4F2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC4F8 +MOD14_021DC4F8: ; 0x021DC4F8 + push {r3, r4} + add r1, r0, #0 + add r1, #0x14 + mov r2, #0xd + mov r3, #0xe + ldrsb r2, [r0, r2] + ldrsb r0, [r0, r3] + ldrb r4, [r1, #4] + ldrb r3, [r1, #6] + cmp r3, r4 + bls _021DC512 + sub r3, r3, r4 + sub r2, r2, r3 +_021DC512: + ldrb r3, [r1, #5] + ldrb r1, [r1, #7] + cmp r1, r3 + bls _021DC51E + sub r1, r1, r3 + sub r0, r0, r1 +_021DC51E: + mov r1, #6 + mul r1, r0 + add r0, r2, r1 + pop {r3, r4} + bx lr + + thumb_func_start MOD14_021DC528 +MOD14_021DC528: ; 0x021DC528 + add r0, #0x14 + add r2, r0, r1 + mov r1, #0xc + ldrsb r1, [r2, r1] + ldrb r0, [r0, #9] + sub r0, r1, r0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC538 +MOD14_021DC538: ; 0x021DC538 + ldr r1, _021DC540 ; =0x00000112 + ldrh r0, [r0, r1] + bx lr + nop +_021DC540: .word 0x00000112 + + thumb_func_start MOD14_021DC544 +MOD14_021DC544: ; 0x021DC544 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC538 + cmp r0, #0 + bne _021DC556 + add r0, r4, #0 + bl MOD14_021DC430 +_021DC556: + pop {r4, pc} + + thumb_func_start MOD14_021DC558 +MOD14_021DC558: ; 0x021DC558 + add r0, #0xa4 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC560 +MOD14_021DC560: ; 0x021DC560 + add r0, #0xa5 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC568 +MOD14_021DC568: ; 0x021DC568 + mov r2, #0x30 + add r0, #0xac + mul r2, r1 + add r0, r0, r2 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC574 +MOD14_021DC574: ; 0x021DC574 + add r0, r0, r1 + add r0, #0xa6 + ldrb r0, [r0] + bx lr + + thumb_func_start MOD14_021DC57C +MOD14_021DC57C: ; 0x021DC57C + add r0, #0xa8 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC584 +MOD14_021DC584: ; 0x021DC584 + add r0, #0x5b + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC58C +MOD14_021DC58C: ; 0x021DC58C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DC5B2 + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC5C4 + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020672BC + pop {r4, r5, r6, pc} +_021DC5B2: + ldrb r0, [r5, #0x1f] + cmp r0, #0 + bne _021DC5C4 + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020672BC + pop {r4, r5, r6, pc} +_021DC5C4: + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020671BC + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DC5D0 +MOD14_021DC5D0: ; 0x021DC5D0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC5EC + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020672BC + pop {r4, r5, r6, pc} +_021DC5EC: + ldr r0, [r5, #8] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020671BC + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DC5F8 +MOD14_021DC5F8: ; 0x021DC5F8 + push {r3, r4, r5, r6} + ldr r4, _021DC660 ; =MOD14_021DC6C0 + add r6, r0, #0 + str r4, [r0, #0x30] + mov r4, #0 + str r4, [r0, #0x1c] + str r1, [r0, #0xc] + str r2, [r0, #0x10] + str r1, [r0, #0x14] + str r2, [r0, #0x18] + str r1, [r0, #4] + add r4, r0, #0 + str r2, [r0, #8] + lsl r2, r2, #0x18 + mov r5, #0xfe + add r4, #0x28 + strb r5, [r4] + lsl r4, r1, #0x18 + lsr r4, r4, #0x18 + add r6, #0x29 + strb r4, [r6] + add r6, r0, #0 + lsr r2, r2, #0x18 + add r6, #0x2a + strb r2, [r6] + add r6, r0, #0 + add r6, #0x2b + strb r3, [r6] + add r3, r0, #0 + add r3, #0x2c + strb r5, [r3] + add r3, r0, #0 + add r3, #0x2d + strb r4, [r3] + add r3, r0, #0 + add r3, #0x2e + strb r2, [r3] + add r2, r0, #0 + add r2, #0x2f + ldr r3, [sp, #0x10] + cmp r1, #0x80 + strb r3, [r2] + bge _021DC656 + mov r1, #1 + str r1, [r0, #0x24] + pop {r3, r4, r5, r6} + bx lr +_021DC656: + sub r5, #0xff + str r5, [r0, #0x24] + pop {r3, r4, r5, r6} + bx lr + nop +_021DC660: .word MOD14_021DC6C0 + + thumb_func_start MOD14_021DC664 +MOD14_021DC664: ; 0x021DC664 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r0, #0x2c + bl FUN_02020A40 + cmp r0, #1 + bne _021DC6A4 + add r0, r5, #0 + add r0, #0x28 + bl FUN_02020A40 + cmp r0, #0 + bne _021DC6A4 + ldr r0, [r5, #0x1c] + mov r4, #1 + cmp r0, #0 + bne _021DC68C + add r6, r4, #0 + b _021DC68E +_021DC68C: + mov r6, #0 +_021DC68E: + add r0, sp, #4 + add r1, sp, #0 + bl FUN_02020AB0 + cmp r0, #0 + beq _021DC6A8 + ldr r0, [sp, #4] + str r0, [r5, #0x14] + ldr r0, [sp] + str r0, [r5, #0x18] + b _021DC6A8 +_021DC6A4: + mov r4, #0 + add r6, r4, #0 +_021DC6A8: + str r4, [r5, #0x1c] + ldr r3, [r5, #0x30] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + blx r3 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DC6B8 +MOD14_021DC6B8: ; 0x021DC6B8 + mov r2, #0 + str r2, [r0] + str r1, [r0, #0x30] + bx lr + + thumb_func_start MOD14_021DC6C0 +MOD14_021DC6C0: ; 0x021DC6C0 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _021DC6E8 + cmp r2, #0 + beq _021DC6E8 + ldr r1, [r4, #0x14] + str r1, [r4, #4] + ldr r2, [r4, #0x18] + str r2, [r4, #8] + ldr r1, [r4, #4] + bl MOD14_021DC720 + strh r0, [r4, #0x20] + ldr r1, _021DC6EC ; =MOD14_021DC6F0 + add r0, r4, #0 + bl MOD14_021DC6B8 + mov r0, #1 + pop {r4, pc} +_021DC6E8: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DC6EC: .word MOD14_021DC6F0 + + thumb_func_start MOD14_021DC6F0 +MOD14_021DC6F0: ; 0x021DC6F0 + push {r3, lr} + cmp r1, #0 + bne _021DC700 + ldr r1, _021DC704 ; =MOD14_021DC6C0 + bl MOD14_021DC6B8 + mov r0, #3 + pop {r3, pc} +_021DC700: + mov r0, #2 + pop {r3, pc} + .align 2, 0 +_021DC704: .word MOD14_021DC6C0 + + thumb_func_start MOD14_021DC708 +MOD14_021DC708: ; 0x021DC708 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x14] + ldr r2, [r4, #0x18] + bl MOD14_021DC720 + add r2, r0, #0 + ldrh r1, [r4, #0x20] + add r0, r4, #0 + bl MOD14_021DC738 + pop {r4, pc} + + thumb_func_start MOD14_021DC720 +MOD14_021DC720: ; 0x021DC720 + add r3, r0, #0 + ldr r0, [r3, #0x10] + sub r0, r2, r0 + ldr r2, [r3, #0xc] + ldr r3, _021DC734 ; =0x020C5668 + sub r1, r1, r2 + lsl r0, r0, #0xc + lsl r1, r1, #0xc + bx r3 + nop +_021DC734: .word 0x020C5668 + + thumb_func_start MOD14_021DC738 +MOD14_021DC738: ; 0x021DC738 + push {r4, r5} + sub r2, r2, r1 + bpl _021DC746 + mov r4, #0 + mvn r4, r4 + mul r2, r4 + b _021DC748 +_021DC746: + mov r4, #1 +_021DC748: + ldr r5, _021DC768 ; =0x021E6278 + mov r3, #0 +_021DC74C: + ldrh r1, [r5] + cmp r2, r1 + blt _021DC75A + add r3, r3, #1 + add r5, r5, #2 + cmp r3, #2 + blo _021DC74C +_021DC75A: + ldr r1, [r0, #0x24] + add r0, r3, #0 + mul r0, r4 + mul r0, r1 + pop {r4, r5} + bx lr + nop +_021DC768: .word 0x021E6278 + + thumb_func_start MOD14_021DC76C +MOD14_021DC76C: ; 0x021DC76C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r7, r0, #0 + ldr r1, _021DC9C8 ; =0x0000B3B4 + mov r0, #0xa + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _021DC79A + mov r0, #0x16 + lsl r0, r0, #4 + str r5, [r4, r0] + mov r0, #0xa + bl FUN_02016B94 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _021DC79C +_021DC79A: + b _021DC9C2 +_021DC79C: + mov r0, #0 + add r1, r0, #0 + mov r5, #1 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r3, _021DC9CC ; =0xFFFFE0FF + and r0, r3 + str r0, [r1] + ldr r0, _021DC9D0 ; =0x04001000 + ldr r2, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _021DC9D4 ; =0xFFCFFFEF + and r3, r2 + ldr r2, _021DC9D8 ; =0x00100010 + orr r2, r3 + str r2, [r1] + ldr r2, [r0] + ldr r1, _021DC9D4 ; =0xFFCFFFEF + and r2, r1 + mov r1, #0x10 + orr r1, r2 + str r1, [r0] + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r2, #0x80 + str r2, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r1, #0xa + str r1, [sp, #0x10] + add r1, r2, #0 + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x80 + add r1, #0x1c + mov r2, #0xa + bl FUN_02008C9C + str r0, [r4, #0x18] + add r0, r4, #0 + mov r2, #6 + add r0, #0x1c + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r0, #0x51 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_020B19DC + mov r0, #0xa + str r0, [sp] + mov r0, #0x51 + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x1a + add r2, r5, #0 + mov r3, #0 + bl FUN_02006A8C + mov r0, #0 + mov r1, #0xa + bl FUN_02002C84 + mov r0, #0xa + bl FUN_02006D98 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r1, #0 + add r2, r4, #0 + add r0, r1, #0 +_021DC854: + add r1, r1, #1 + str r0, [r2, #8] + add r2, r2, #4 + cmp r1, #4 + blo _021DC854 + bl MOD14_021DDEE8 + mov r2, #0x59 + lsl r2, r2, #2 + str r4, [r7] + add r0, r4, r2 + sub r2, r2, #4 + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + add r1, r4, #0 + bl MOD14_021E078C + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + mov r0, #0x43 + ldr r2, [r4, r3] + sub r3, r3, #4 + lsl r0, r0, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021DDF70 + mov r2, #0x16 + and r5, r0 + ldr r0, _021DC9DC ; =0x00005DC0 + lsl r2, r2, #4 + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021DF07C + mov r2, #0x16 + and r5, r0 + ldr r0, _021DC9E0 ; =0x00006558 + lsl r2, r2, #4 + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E0C7C + and r5, r0 + add r0, r6, #0 + bl MOD14_021DC3A4 + ldr r1, [r4, #0x18] + mov r3, #0x16 + str r1, [sp] + str r0, [sp, #4] + lsl r3, r3, #4 + ldr r0, _021DC9E4 ; =0x000065A0 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E0D90 + and r5, r0 + add r0, r6, #0 + bl MOD14_021DC3A4 + add r7, r0, #0 + add r0, r6, #0 + bl MOD14_021DC3AC + str r0, [sp, #0x14] + add r0, r6, #0 + bl MOD14_021DC3B4 + ldr r1, [r4, #0x18] + mov r3, #0x16 + str r1, [sp] + ldr r1, [sp, #0x14] + str r7, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + lsl r3, r3, #4 + ldr r0, _021DC9E8 ; =0x000065F4 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E1750 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9EC ; =0x0000662C + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E1D38 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9F0 ; =0x0000B22C + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E2A38 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9F4 ; =0x0000B3A4 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E33C8 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9F8 ; =0x0000B3A8 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E4828 + and r5, r0 + add r0, r6, #0 + bl MOD14_021DC3A4 + ldr r1, [r4, #0x18] + mov r3, #0x16 + str r1, [sp] + str r0, [sp, #4] + lsl r3, r3, #4 + ldr r0, _021DC9FC ; =0x0000B3AC + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E5044 + and r5, r0 + ldr r0, _021DCA00 ; =0x0000B3B0 + add r1, r4, #0 + str r6, [r4, r0] + ldr r0, _021DCA04 ; =MOD14_021DCA0C + mov r2, #2 + bl FUN_0200CA44 + str r0, [r4] + ldr r0, _021DCA08 ; =MOD14_021DCBFC + add r1, r4, #0 + mov r2, #1 + bl MOD14_021DDD40 + str r0, [r4, #4] + add sp, #0x18 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DC9C2: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC9C8: .word 0x0000B3B4 +_021DC9CC: .word 0xFFFFE0FF +_021DC9D0: .word 0x04001000 +_021DC9D4: .word 0xFFCFFFEF +_021DC9D8: .word 0x00100010 +_021DC9DC: .word 0x00005DC0 +_021DC9E0: .word 0x00006558 +_021DC9E4: .word 0x000065A0 +_021DC9E8: .word 0x000065F4 +_021DC9EC: .word 0x0000662C +_021DC9F0: .word 0x0000B22C +_021DC9F4: .word 0x0000B3A4 +_021DC9F8: .word 0x0000B3A8 +_021DC9FC: .word 0x0000B3AC +_021DCA00: .word 0x0000B3B0 +_021DCA04: .word MOD14_021DCA0C +_021DCA08: .word MOD14_021DCBFC + + thumb_func_start MOD14_021DCA0C +MOD14_021DCA0C: ; 0x021DCA0C + push {r4, lr} + add r4, r1, #0 + bl MOD14_021DDEF4 + bl G3X_ResetMtxStack + bl G3X_ResetMtxStack_2 + bl FUN_020B02C8 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02006ED4 + ldr r0, _021DCA34 ; =0x04000540 + mov r1, #0 + str r1, [r0] + pop {r4, pc} + nop +_021DCA34: .word 0x04000540 + + thumb_func_start MOD14_021DCA38 +MOD14_021DCA38: ; 0x021DCA38 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, [r4] + bl FUN_0200CAB4 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, _021DCB08 ; =0x0000B3AC + ldr r0, [r4, r0] + bl MOD14_021E50EC + ldr r0, _021DCB0C ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4880 + ldr r0, _021DCB10 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E34C0 + ldr r0, _021DCB14 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2AC8 + ldr r0, _021DCB18 ; =0x0000662C + add r0, r4, r0 + bl MOD14_021E1F20 + ldr r0, _021DCB1C ; =0x000065F4 + add r0, r4, r0 + bl MOD14_021E17C4 + ldr r0, _021DCB20 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E0E44 + ldr r0, _021DCB24 ; =0x00006558 + add r0, r4, r0 + bl MOD14_021E0D3C + ldr r0, _021DCB28 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF3A8 + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DDFEC + mov r0, #0x59 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021E089C + ldr r0, [r4, #0x18] + bl FUN_0201FD58 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl FUN_020178A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020178A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020178A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_020178A0 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020072E8 + mov r0, #0 + bl FUN_02002CC0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_02009FA0 + pop {r4, pc} + .align 2, 0 +_021DCB08: .word 0x0000B3AC +_021DCB0C: .word 0x0000B3A8 +_021DCB10: .word 0x0000B3A4 +_021DCB14: .word 0x0000B22C +_021DCB18: .word 0x0000662C +_021DCB1C: .word 0x000065F4 +_021DCB20: .word 0x000065A0 +_021DCB24: .word 0x00006558 +_021DCB28: .word 0x00005DC0 + + thumb_func_start MOD14_021DCB2C +MOD14_021DCB2C: ; 0x021DCB2C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + cmp r6, #0x34 + bhs _021DCB88 + mov r4, #0 + add r1, r5, #0 +_021DCB3A: + ldr r0, [r1, #8] + cmp r0, #0 + bne _021DCB7E + ldr r0, _021DCB90 ; =0x021E63D0 + lsl r7, r6, #3 + ldr r0, [r0, r7] + str r0, [sp] + ldr r1, [sp] + mov r0, #0xa + add r1, #0x14 + bl FUN_02016998 + add r1, r0, #0 + beq _021DCB78 + str r6, [r1] + strh r4, [r1, #4] + mov r0, #0 + strh r0, [r1, #6] + ldr r0, [sp] + str r5, [r1, #0xc] + add r0, r1, r0 + str r0, [r1, #0x10] + ldr r0, _021DCB94 ; =0x021E63CC + mov r2, #1 + ldr r0, [r0, r7] + bl FUN_0200CA44 + lsl r1, r4, #2 + add r1, r5, r1 + str r0, [r1, #8] + pop {r3, r4, r5, r6, r7, pc} +_021DCB78: + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_021DCB7E: + add r4, r4, #1 + add r1, r1, #4 + cmp r4, #4 + blo _021DCB3A + pop {r3, r4, r5, r6, r7, pc} +_021DCB88: + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} + nop +_021DCB90: .word 0x021E63D0 +_021DCB94: .word 0x021E63CC + + thumb_func_start MOD14_021DCB98 +MOD14_021DCB98: ; 0x021DCB98 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021DCBA0: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021DCBB4 + bl FUN_0201B6C8 + ldr r0, [r0] + cmp r0, r6 + bne _021DCBB4 + mov r0, #0 + pop {r4, r5, r6, pc} +_021DCBB4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021DCBA0 + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DCBC0 +MOD14_021DCBC0: ; 0x021DCBC0 + mov r2, #0 +_021DCBC2: + ldr r1, [r0, #8] + cmp r1, #0 + beq _021DCBCC + mov r0, #0 + bx lr +_021DCBCC: + add r2, r2, #1 + add r0, r0, #4 + cmp r2, #4 + blt _021DCBC2 + mov r0, #1 + bx lr + + thumb_func_start MOD14_021DCBD8 +MOD14_021DCBD8: ; 0x021DCBD8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrh r0, [r5, #4] + ldr r4, [r5, #0xc] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #8] + bl FUN_0200CAB4 + ldrh r0, [r5, #4] + mov r1, #0 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #8] + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DCBFC +MOD14_021DCBFC: ; 0x021DCBFC + push {r4, lr} + ldr r0, _021DCC20 ; =0x000065A0 + add r4, r1, #0 + add r0, r4, r0 + bl MOD14_021E0EE4 + ldr r0, [r4, #0x18] + bl FUN_0201FDEC + bl FUN_02009F80 + ldr r3, _021DCC24 ; =0x027E0000 + ldr r1, _021DCC28 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_021DCC20: .word 0x000065A0 +_021DCC24: .word 0x027E0000 +_021DCC28: .word 0x00003FF8 + + thumb_func_start MOD14_021DCC2C +MOD14_021DCC2C: ; 0x021DCC2C + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r6, [r4, r0] + ldrh r0, [r5, #6] + cmp r0, #0 + beq _021DCC44 + cmp r0, #1 + beq _021DCC7E + pop {r4, r5, r6, pc} +_021DCC44: + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DDA38 + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DDB50 + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DDCF0 + add r0, r6, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DCC76 + ldr r0, _021DCC9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E0EF4 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r4, r5, r6, pc} +_021DCC76: + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} +_021DCC7E: + ldr r0, _021DCC9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E0F28 + cmp r0, #0 + beq _021DCC98 + ldr r0, _021DCC9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E13F0 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DCC98: + pop {r4, r5, r6, pc} + nop +_021DCC9C: .word 0x000065A0 + + thumb_func_start MOD14_021DCCA0 +MOD14_021DCCA0: ; 0x021DCCA0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DCCB4 + cmp r0, #1 + beq _021DCCEA + add sp, #0xc + pop {r3, r4, pc} +_021DCCB4: + ldr r0, _021DCCFC ; =0x0000060D + bl FUN_020054C8 + mov r0, #0xa + str r0, [sp] + ldr r0, _021DCD00 ; =0x04000050 + mov r1, #0 + mov r2, #0x3f + mov r3, #6 + bl G2x_SetBlendAlpha_ + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DCCEA: + bl FUN_0200E308 + cmp r0, #0 + beq _021DCCF8 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCCF8: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021DCCFC: .word 0x0000060D +_021DCD00: .word 0x04000050 + + thumb_func_start MOD14_021DCD04 +MOD14_021DCD04: ; 0x021DCD04 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DCD18 + cmp r0, #1 + beq _021DCD48 + add sp, #0xc + pop {r3, r4, pc} +_021DCD18: + mov r0, #0xa + str r0, [sp] + ldr r0, _021DCD5C ; =0x04000050 + mov r1, #0 + mov r2, #0x3f + mov r3, #6 + bl G2x_SetBlendAlpha_ + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DCD48: + bl FUN_0200E308 + cmp r0, #0 + beq _021DCD56 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCD56: + add sp, #0xc + pop {r3, r4, pc} + nop +_021DCD5C: .word 0x04000050 + + thumb_func_start MOD14_021DCD60 +MOD14_021DCD60: ; 0x021DCD60 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DCD74 + cmp r0, #1 + beq _021DCD96 + add sp, #0xc + pop {r3, r4, pc} +_021DCD74: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DCD96: + bl FUN_0200E308 + cmp r0, #0 + beq _021DCDA4 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCDA4: + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD14_021DCDA8 +MOD14_021DCDA8: ; 0x021DCDA8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r0, #0x16 + ldr r5, [r4, #0xc] + lsl r0, r0, #4 + ldr r6, [r5, r0] + ldrh r0, [r4, #6] + cmp r0, #4 + bhi _021DCE5E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DCDC6: ; jump table + .short _021DCDD0 - _021DCDC6 - 2 ; case 0 + .short _021DCDDE - _021DCDC6 - 2 ; case 1 + .short _021DCDF0 - _021DCDC6 - 2 ; case 2 + .short _021DCE30 - _021DCDC6 - 2 ; case 3 + .short _021DCE4C - _021DCDC6 - 2 ; case 4 +_021DCDD0: + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4DF8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCDDE: + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4E24 + cmp r0, #0 + beq _021DCE5E + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCDF0: + mov r0, #0x43 + add r1, r6, #0 + lsl r0, r0, #4 + add r1, #0x40 + ldrb r0, [r5, r0] + ldrb r1, [r1] + bl MOD14_021DDD1C + add r7, r0, #0 + mov r0, #0x43 + lsl r0, r0, #4 + add r1, r6, #0 + add r0, r5, r0 + add r1, #0x40 + add r2, r7, #0 + mov r3, #1 + bl MOD14_021DE0C4 + mov r0, #0x43 + lsl r0, r0, #4 + add r6, #0x40 + add r0, r5, r0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD14_021DE2E8 + ldr r0, _021DCE64 ; =0x000005DC + bl FUN_020054C8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCE30: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r5, r0 + bl MOD14_021DE394 + cmp r0, #0 + beq _021DCE5E + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4BE0 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCE4C: + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4C40 + cmp r0, #0 + beq _021DCE5E + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCE5E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DCE60: .word 0x0000B3A8 +_021DCE64: .word 0x000005DC + + thumb_func_start MOD14_021DCE68 +MOD14_021DCE68: ; 0x021DCE68 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DCE7A + cmp r0, #1 + beq _021DCE98 + pop {r3, r4, r5, pc} +_021DCE7A: + ldr r0, _021DCEB8 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _021DCEBC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF484 + ldr r0, _021DCEC0 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4BE0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DCE98: + ldr r0, _021DCEBC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF59C + cmp r0, #0 + beq _021DCEB6 + ldr r0, _021DCEC0 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4C40 + cmp r0, #0 + beq _021DCEB6 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DCEB6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DCEB8: .word 0x000005DC +_021DCEBC: .word 0x00005DC0 +_021DCEC0: .word 0x0000B3A8 + + thumb_func_start MOD14_021DCEC4 +MOD14_021DCEC4: ; 0x021DCEC4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3C4 + cmp r0, #4 + ldrh r0, [r5, #6] + beq _021DCF08 + cmp r0, #0 + beq _021DCEE4 + cmp r0, #1 + beq _021DCEF4 + pop {r3, r4, r5, pc} +_021DCEE4: + ldr r0, _021DCF38 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1450 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DCEF4: + ldr r0, _021DCF38 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1674 + cmp r0, #0 + beq _021DCF34 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} +_021DCF08: + cmp r0, #0 + beq _021DCF12 + cmp r0, #1 + beq _021DCF22 + pop {r3, r4, r5, pc} +_021DCF12: + ldr r0, _021DCF3C ; =0x0000B3AC + ldr r0, [r4, r0] + bl MOD14_021E526C + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DCF22: + ldr r0, _021DCF3C ; =0x0000B3AC + ldr r0, [r4, r0] + bl MOD14_021E52BC + cmp r0, #0 + beq _021DCF34 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DCF34: + pop {r3, r4, r5, pc} + nop +_021DCF38: .word 0x000065A0 +_021DCF3C: .word 0x0000B3AC + + thumb_func_start MOD14_021DCF40 +MOD14_021DCF40: ; 0x021DCF40 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r6, [r4, r0] + add r0, r6, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021DCF60 + ldr r0, _021DCF94 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DFF8C + b _021DCF84 +_021DCF60: + add r0, r6, #0 + bl MOD14_021DC3CC + cmp r0, #0 + beq _021DCF70 + cmp r0, #1 + beq _021DCF7C + b _021DCF84 +_021DCF70: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEF4C + b _021DCF84 +_021DCF7C: + ldr r0, _021DCF98 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E3054 +_021DCF84: + ldr r0, _021DCF9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1678 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DCF94: .word 0x00005DC0 +_021DCF98: .word 0x0000B22C +_021DCF9C: .word 0x000065A0 + + thumb_func_start MOD14_021DCFA0 +MOD14_021DCFA0: ; 0x021DCFA0 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DCFB8 ; =0x000065A0 + add r0, r1, r0 + bl MOD14_021E14D0 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DCFB8: .word 0x000065A0 + + thumb_func_start MOD14_021DCFBC +MOD14_021DCFBC: ; 0x021DCFBC + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DCFCE + cmp r0, #1 + beq _021DCFDE + pop {r4, pc} +_021DCFCE: + ldr r0, _021DCFF4 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF758 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DCFDE: + ldr r0, _021DCFF4 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF7A0 + cmp r0, #0 + beq _021DCFF0 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCFF0: + pop {r4, pc} + nop +_021DCFF4: .word 0x00005DC0 + + thumb_func_start MOD14_021DCFF8 +MOD14_021DCFF8: ; 0x021DCFF8 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD00A + cmp r0, #1 + beq _021DD01A + pop {r4, pc} +_021DD00A: + ldr r0, _021DD030 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF890 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD01A: + ldr r0, _021DD030 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF8C4 + cmp r0, #0 + beq _021DD02C + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD02C: + pop {r4, pc} + nop +_021DD030: .word 0x00005DC0 + + thumb_func_start MOD14_021DD034 +MOD14_021DD034: ; 0x021DD034 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD046 + cmp r0, #1 + beq _021DD056 + pop {r4, pc} +_021DD046: + ldr r0, _021DD06C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF9DC + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD056: + ldr r0, _021DD06C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFA58 + cmp r0, #0 + beq _021DD068 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD068: + pop {r4, pc} + nop +_021DD06C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD070 +MOD14_021DD070: ; 0x021DD070 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD082 + cmp r0, #1 + beq _021DD092 + pop {r4, pc} +_021DD082: + ldr r0, _021DD09C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFE28 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD092: + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD09C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD0A0 +MOD14_021DD0A0: ; 0x021DD0A0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD0B6 + cmp r0, #1 + beq _021DD0C6 + cmp r0, #2 + beq _021DD0D6 + pop {r4, pc} +_021DD0B6: + ldr r0, _021DD0EC ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2F08 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD0C6: + ldr r0, _021DD0EC ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2C7C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD0D6: + ldr r0, _021DD0EC ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2DA4 + cmp r0, #0 + beq _021DD0E8 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD0E8: + pop {r4, pc} + nop +_021DD0EC: .word 0x0000B22C + + thumb_func_start MOD14_021DD0F0 +MOD14_021DD0F0: ; 0x021DD0F0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD102 + cmp r0, #1 + beq _021DD112 + pop {r4, pc} +_021DD102: + ldr r0, _021DD128 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFE60 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD112: + ldr r0, _021DD128 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFE84 + cmp r0, #0 + beq _021DD124 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD124: + pop {r4, pc} + nop +_021DD128: .word 0x00005DC0 + + thumb_func_start MOD14_021DD12C +MOD14_021DD12C: ; 0x021DD12C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r1, [r5, #6] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r4, [r5, #0xc] + cmp r1, #0 + ldr r0, [r4, r0] + beq _021DD144 + cmp r1, #1 + beq _021DD15C + pop {r3, r4, r5, pc} +_021DD144: + bl MOD14_021DC3E0 + add r1, r0, #0 + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEDD0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD15C: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEE08 + cmp r0, #0 + beq _021DD170 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD170: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DD174 +MOD14_021DD174: ; 0x021DD174 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r1, [r5, #6] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r4, [r5, #0xc] + cmp r1, #0 + ldr r0, [r4, r0] + beq _021DD18C + cmp r1, #1 + beq _021DD1A2 + pop {r3, r4, r5, pc} +_021DD18C: + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021DD1B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2F44 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD1A2: + ldr r0, _021DD1B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2F68 + cmp r0, #0 + beq _021DD1B4 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD1B4: + pop {r3, r4, r5, pc} + nop +_021DD1B8: .word 0x0000B22C + + thumb_func_start MOD14_021DD1BC +MOD14_021DD1BC: ; 0x021DD1BC + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD1CE + cmp r0, #1 + beq _021DD1DE + pop {r4, pc} +_021DD1CE: + ldr r0, _021DD1F4 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E26E4 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD1DE: + ldr r0, _021DD1F4 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E27AC + cmp r0, #0 + beq _021DD1F0 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD1F0: + pop {r4, pc} + nop +_021DD1F4: .word 0x0000662C + + thumb_func_start MOD14_021DD1F8 +MOD14_021DD1F8: ; 0x021DD1F8 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD20A + cmp r0, #1 + beq _021DD21A + pop {r4, pc} +_021DD20A: + ldr r0, _021DD230 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E283C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD21A: + ldr r0, _021DD230 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E2884 + cmp r0, #0 + beq _021DD22C + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD22C: + pop {r4, pc} + nop +_021DD230: .word 0x0000662C + + thumb_func_start MOD14_021DD234 +MOD14_021DD234: ; 0x021DD234 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD246 + cmp r0, #1 + beq _021DD256 + pop {r3, r4, r5, pc} +_021DD246: + ldr r0, _021DD274 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0050 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD256: + ldr r0, _021DD274 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0080 + cmp r0, #0 + beq _021DD270 + ldr r0, _021DD278 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1704 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD270: + pop {r3, r4, r5, pc} + nop +_021DD274: .word 0x00005DC0 +_021DD278: .word 0x000065A0 + + thumb_func_start MOD14_021DD27C +MOD14_021DD27C: ; 0x021DD27C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD28E + cmp r0, #1 + beq _021DD29E + pop {r3, r4, r5, pc} +_021DD28E: + ldr r0, _021DD2BC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E00F0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD29E: + ldr r0, _021DD2BC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0120 + cmp r0, #0 + beq _021DD2B8 + ldr r0, _021DD2C0 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1704 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD2B8: + pop {r3, r4, r5, pc} + nop +_021DD2BC: .word 0x00005DC0 +_021DD2C0: .word 0x000065A0 + + thumb_func_start MOD14_021DD2C4 +MOD14_021DD2C4: ; 0x021DD2C4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD2D6 + cmp r0, #1 + beq _021DD2E6 + pop {r3, r4, r5, pc} +_021DD2D6: + ldr r0, _021DD304 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0190 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD2E6: + ldr r0, _021DD304 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E01BC + cmp r0, #0 + beq _021DD300 + ldr r0, _021DD308 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1704 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD300: + pop {r3, r4, r5, pc} + nop +_021DD304: .word 0x00005DC0 +_021DD308: .word 0x000065A0 + + thumb_func_start MOD14_021DD30C +MOD14_021DD30C: ; 0x021DD30C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r0, #0x16 + ldr r4, [r7, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + add r0, r5, #0 + bl MOD14_021DC430 + add r6, r0, #0 + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021DD336 + ldr r0, _021DD374 ; =0x00005DC0 + add r1, r6, #0 + add r0, r4, r0 + bl MOD14_021DFFD8 + b _021DD36C +_021DD336: + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + beq _021DD358 + cmp r0, #1 + bne _021DD36C + add r0, r5, #0 + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021DD378 ; =0x0000B22C + add r2, r6, #0 + add r0, r4, r0 + bl MOD14_021E3024 + b _021DD36C +_021DD358: + add r0, r5, #0 + bl MOD14_021DC3E0 + add r1, r0, #0 + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + add r2, r6, #0 + bl MOD14_021DEEF8 +_021DD36C: + add r0, r7, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD374: .word 0x00005DC0 +_021DD378: .word 0x0000B22C + + thumb_func_start MOD14_021DD37C +MOD14_021DD37C: ; 0x021DD37C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD38E + cmp r0, #1 + beq _021DD3A6 + pop {r3, r4, r5, pc} +_021DD38E: + ldr r0, _021DD3C4 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E022C + ldr r0, _021DD3C8 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4F58 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD3A6: + ldr r0, _021DD3C8 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4FA0 + cmp r0, #0 + beq _021DD3C0 + ldr r0, _021DD3C4 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0244 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD3C0: + pop {r3, r4, r5, pc} + nop +_021DD3C4: .word 0x00005DC0 +_021DD3C8: .word 0x0000B3A8 + + thumb_func_start MOD14_021DD3CC +MOD14_021DD3CC: ; 0x021DD3CC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC450 + add r1, r0, #0 + ldr r0, _021DD3F0 ; =0x000065F4 + add r0, r4, r0 + bl MOD14_021E189C + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + nop +_021DD3F0: .word 0x000065F4 + + thumb_func_start MOD14_021DD3F4 +MOD14_021DD3F4: ; 0x021DD3F4 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x16 + ldr r4, [r6, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + add r0, r5, #0 + bl MOD14_021DC450 + add r1, r0, #0 + ldr r0, _021DD424 ; =0x000065F4 + add r0, r4, r0 + bl MOD14_021E189C + ldr r0, _021DD424 ; =0x000065F4 + add r5, #0x74 + add r0, r4, r0 + add r1, r5, #0 + bl MOD14_021E19D0 + add r0, r6, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD424: .word 0x000065F4 + + thumb_func_start MOD14_021DD428 +MOD14_021DD428: ; 0x021DD428 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD440 ; =0x000065F4 + add r0, r1, r0 + bl MOD14_021E1B44 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD440: .word 0x000065F4 + + thumb_func_start MOD14_021DD444 +MOD14_021DD444: ; 0x021DD444 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD45C ; =0x000065F4 + add r0, r1, r0 + bl MOD14_021E1B78 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD45C: .word 0x000065F4 + + thumb_func_start MOD14_021DD460 +MOD14_021DD460: ; 0x021DD460 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x16 + ldr r4, [r6, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + ldr r0, _021DD488 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _021DD48C ; =0x000065F4 + add r5, #0x74 + add r0, r4, r0 + add r1, r5, #0 + bl MOD14_021E1B9C + add r0, r6, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + nop +_021DD488: .word 0x000005DC +_021DD48C: .word 0x000065F4 + + thumb_func_start MOD14_021DD490 +MOD14_021DD490: ; 0x021DD490 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x16 + ldr r4, [r6, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + ldr r0, _021DD4B8 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _021DD4BC ; =0x000065F4 + add r5, #0x74 + add r0, r4, r0 + add r1, r5, #0 + bl MOD14_021E1BE4 + add r0, r6, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + nop +_021DD4B8: .word 0x000005DD +_021DD4BC: .word 0x000065F4 + + thumb_func_start MOD14_021DD4C0 +MOD14_021DD4C0: ; 0x021DD4C0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD4D2 + cmp r0, #1 + beq _021DD4E2 + pop {r4, pc} +_021DD4D2: + ldr r0, _021DD4F8 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1F98 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD4E2: + ldr r0, _021DD4F8 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1FB8 + cmp r0, #0 + beq _021DD4F4 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD4F4: + pop {r4, pc} + nop +_021DD4F8: .word 0x0000662C + + thumb_func_start MOD14_021DD4FC +MOD14_021DD4FC: ; 0x021DD4FC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD50E + cmp r0, #1 + beq _021DD524 + pop {r3, r4, r5, pc} +_021DD50E: + ldr r0, _021DD52C ; =0x000005DD + bl FUN_020054C8 + ldr r0, _021DD530 ; =0x0000662C + add r0, r4, r0 + bl MOD14_021E1FC0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD524: + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD52C: .word 0x000005DD +_021DD530: .word 0x0000662C + + thumb_func_start MOD14_021DD534 +MOD14_021DD534: ; 0x021DD534 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD546 + cmp r0, #1 + beq _021DD556 + pop {r4, pc} +_021DD546: + ldr r0, _021DD56C ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1FE4 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD556: + ldr r0, _021DD56C ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1FF0 + cmp r0, #0 + beq _021DD568 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD568: + pop {r4, pc} + nop +_021DD56C: .word 0x0000662C + + thumb_func_start MOD14_021DD570 +MOD14_021DD570: ; 0x021DD570 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD582 + cmp r0, #1 + beq _021DD594 + pop {r4, pc} +_021DD582: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DE8C8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD594: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DE8E8 + cmp r0, #0 + beq _021DD5A8 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD5A8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DD5AC +MOD14_021DD5AC: ; 0x021DD5AC + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r0, #0x16 + ldr r5, [r4, #0xc] + lsl r0, r0, #4 + ldr r6, [r5, r0] + ldrh r0, [r4, #6] + cmp r0, #3 + bhi _021DD65E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DD5CA: ; jump table + .short _021DD5D2 - _021DD5CA - 2 ; case 0 + .short _021DD5E8 - _021DD5CA - 2 ; case 1 + .short _021DD626 - _021DD5CA - 2 ; case 2 + .short _021DD64C - _021DD5CA - 2 ; case 3 +_021DD5D2: + ldr r0, _021DD660 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFBB8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_021DD5E8: + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFC2C + cmp r0, #0 + beq _021DD65E + add r0, r6, #0 + bl MOD14_021DC3CC + cmp r0, #3 + beq _021DD604 + cmp r0, #4 + beq _021DD610 + b _021DD61A +_021DD604: + ldr r0, _021DD668 ; =0x00006558 + mov r1, #1 + add r0, r5, r0 + bl MOD14_021E0D60 + b _021DD61A +_021DD610: + ldr r0, _021DD668 ; =0x00006558 + mov r1, #2 + add r0, r5, r0 + bl MOD14_021E0D60 +_021DD61A: + mov r0, #0 + strh r0, [r4, #8] + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_021DD626: + ldrh r0, [r4, #8] + add r0, r0, #1 + strh r0, [r4, #8] + ldrh r0, [r4, #8] + cmp r0, #6 + blo _021DD65E + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFD24 + ldr r0, _021DD668 ; =0x00006558 + mov r1, #0 + add r0, r5, r0 + bl MOD14_021E0D60 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_021DD64C: + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFD80 + cmp r0, #0 + beq _021DD65E + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD65E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD660: .word 0x000005DD +_021DD664: .word 0x00005DC0 +_021DD668: .word 0x00006558 + + thumb_func_start MOD14_021DD66C +MOD14_021DD66C: ; 0x021DD66C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD67E + cmp r0, #1 + beq _021DD69C + pop {r3, r4, r5, pc} +_021DD67E: + ldr r0, _021DD6B0 ; =0x00000633 + bl FUN_020054C8 + ldr r0, _021DD6B4 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DFF1C + ldr r0, _021DD6B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2B10 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD69C: + ldr r0, _021DD6B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2B40 + cmp r0, #0 + beq _021DD6AE + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD6AE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD6B0: .word 0x00000633 +_021DD6B4: .word 0x00005DC0 +_021DD6B8: .word 0x0000B22C + + thumb_func_start MOD14_021DD6BC +MOD14_021DD6BC: ; 0x021DD6BC + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r5, [r4, #0xc] + cmp r0, #3 + bhi _021DD72C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DD6D4: ; jump table + .short _021DD6DC - _021DD6D4 - 2 ; case 0 + .short _021DD6EA - _021DD6D4 - 2 ; case 1 + .short _021DD6FC - _021DD6D4 - 2 ; case 2 + .short _021DD712 - _021DD6D4 - 2 ; case 3 +_021DD6DC: + ldr r0, _021DD730 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4DF8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DD6EA: + ldr r0, _021DD730 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4E24 + cmp r0, #0 + beq _021DD72C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DD6FC: + ldr r0, _021DD734 ; =0x00000634 + bl FUN_020054C8 + ldr r0, _021DD738 ; =0x0000B22C + add r0, r5, r0 + bl MOD14_021E2BB0 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, r5, pc} +_021DD712: + ldr r0, _021DD738 ; =0x0000B22C + add r0, r5, r0 + bl MOD14_021E2BD0 + cmp r0, #0 + beq _021DD72C + ldr r0, _021DD73C ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFF54 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD72C: + pop {r3, r4, r5, pc} + nop +_021DD730: .word 0x0000B3A8 +_021DD734: .word 0x00000634 +_021DD738: .word 0x0000B22C +_021DD73C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD740 +MOD14_021DD740: ; 0x021DD740 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD752 + cmp r0, #1 + beq _021DD762 + pop {r4, pc} +_021DD752: + ldr r0, _021DD778 ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2C7C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD762: + ldr r0, _021DD778 ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2DA4 + cmp r0, #0 + beq _021DD774 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD774: + pop {r4, pc} + nop +_021DD778: .word 0x0000B22C + + thumb_func_start MOD14_021DD77C +MOD14_021DD77C: ; 0x021DD77C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r1, [r5, #6] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r4, [r5, #0xc] + cmp r1, #0 + ldr r0, [r4, r0] + beq _021DD794 + cmp r1, #1 + beq _021DD7B4 + pop {r3, r4, r5, pc} +_021DD794: + bl MOD14_021DC3CC + cmp r0, #1 + bne _021DD7AC + ldr r0, _021DD7C8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2DB4 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD7AC: + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} +_021DD7B4: + ldr r0, _021DD7C8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2E50 + cmp r0, #0 + beq _021DD7C6 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD7C6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD7C8: .word 0x0000B22C + + thumb_func_start MOD14_021DD7CC +MOD14_021DD7CC: ; 0x021DD7CC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x43 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEEA8 + ldr r0, _021DD7F4 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2FE8 + ldr r0, _021DD7F8 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DFFB4 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD7F4: .word 0x0000B22C +_021DD7F8: .word 0x00005DC0 + + thumb_func_start MOD14_021DD7FC +MOD14_021DD7FC: ; 0x021DD7FC + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r6, [r4, r0] + ldrh r0, [r5, #6] + cmp r0, #0 + beq _021DD818 + cmp r0, #1 + beq _021DD828 + cmp r0, #2 + beq _021DD854 + pop {r4, r5, r6, pc} +_021DD818: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E37B8 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r4, r5, r6, pc} +_021DD828: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E389C + cmp r0, #0 + beq _021DD866 + add r6, #0x9c + ldrb r0, [r6] + cmp r0, #0 + bne _021DD844 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} +_021DD844: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E3B54 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r4, r5, r6, pc} +_021DD854: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E3B80 + cmp r0, #0 + beq _021DD866 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD866: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD868: .word 0x0000B3A4 + + thumb_func_start MOD14_021DD86C +MOD14_021DD86C: ; 0x021DD86C + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD87E + cmp r0, #1 + beq _021DD88E + pop {r4, pc} +_021DD87E: + ldr r0, _021DD8A4 ; =0x0000B3A4 + ldr r0, [r1, r0] + bl MOD14_021E3BA8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD88E: + ldr r0, _021DD8A4 ; =0x0000B3A4 + ldr r0, [r1, r0] + bl MOD14_021E3C60 + cmp r0, #0 + beq _021DD8A0 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD8A0: + pop {r4, pc} + nop +_021DD8A4: .word 0x0000B3A4 + + thumb_func_start MOD14_021DD8A8 +MOD14_021DD8A8: ; 0x021DD8A8 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD8C0 ; =0x0000B3A4 + ldr r0, [r1, r0] + bl MOD14_021E4734 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD8C0: .word 0x0000B3A4 + + thumb_func_start MOD14_021DD8C4 +MOD14_021DD8C4: ; 0x021DD8C4 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD8DC ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021E0008 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD8DC: .word 0x00005DC0 + + thumb_func_start MOD14_021DD8E0 +MOD14_021DD8E0: ; 0x021DD8E0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r5, #0xc] + ldr r0, _021DD900 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E002C + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEF94 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD900: .word 0x00005DC0 + + thumb_func_start MOD14_021DD904 +MOD14_021DD904: ; 0x021DD904 + push {r4, lr} + add r4, r1, #0 + mov r0, #0x43 + ldr r1, [r4, #0xc] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DF03C + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + + thumb_func_start MOD14_021DD91C +MOD14_021DD91C: ; 0x021DD91C + push {r4, lr} + add r4, r1, #0 + mov r0, #0x43 + ldr r1, [r4, #0xc] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DEF94 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + + thumb_func_start MOD14_021DD934 +MOD14_021DD934: ; 0x021DD934 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD946 + cmp r0, #1 + beq _021DD956 + pop {r4, pc} +_021DD946: + ldr r0, _021DD96C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF758 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD956: + ldr r0, _021DD96C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF7A0 + cmp r0, #0 + beq _021DD968 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD968: + pop {r4, pc} + nop +_021DD96C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD970 +MOD14_021DD970: ; 0x021DD970 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD988 ; =0x0000B3AC + ldr r0, [r1, r0] + mov r1, #0 + bl MOD14_021E5214 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + .align 2, 0 +_021DD988: .word 0x0000B3AC + + thumb_func_start MOD14_021DD98C +MOD14_021DD98C: ; 0x021DD98C + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD9A4 ; =0x0000B3AC + ldr r0, [r1, r0] + mov r1, #1 + bl MOD14_021E5214 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + .align 2, 0 +_021DD9A4: .word 0x0000B3AC + + thumb_func_start MOD14_021DD9A8 +MOD14_021DD9A8: ; 0x021DD9A8 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD9BA + cmp r0, #1 + beq _021DD9CA + pop {r4, pc} +_021DD9BA: + ldr r0, _021DD9E0 ; =0x0000B3AC + ldr r0, [r1, r0] + bl MOD14_021E52C0 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD9CA: + ldr r0, _021DD9E0 ; =0x0000B3AC + ldr r0, [r1, r0] + bl MOD14_021E52E0 + cmp r0, #0 + beq _021DD9DC + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD9DC: + pop {r4, pc} + nop +_021DD9E0: .word 0x0000B3AC + + thumb_func_start MOD14_021DD9E4 +MOD14_021DD9E4: ; 0x021DD9E4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DD9F8 + cmp r0, #1 + beq _021DDA20 + add sp, #0xc + pop {r3, r4, pc} +_021DD9F8: + ldr r0, _021DDA34 ; =0x0000060E + bl FUN_020054C8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DDA20: + bl FUN_0200E308 + cmp r0, #0 + beq _021DDA2E + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DDA2E: + add sp, #0xc + pop {r3, r4, pc} + nop +_021DDA34: .word 0x0000060E + + thumb_func_start MOD14_021DDA38 +MOD14_021DDA38: ; 0x021DDA38 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DDB20 ; =0x021E63A4 + add r4, r1, #0 + bl FUN_0201E66C + ldr r2, _021DDB24 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + mov r0, #1 + mov r1, #0 + add r2, r0, #0 + bl GX_SetGraphicsMode + ldr r0, _021DDB28 ; =0x021E627C + bl FUN_02016BBC + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB2C ; =0x021E6350 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB30 ; =0x021E6334 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB34 ; =0x021E62FC + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DDADA + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB38 ; =0x021E6318 + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB3C ; =0x021E62E0 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB40 ; =0x021E62C4 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB44 ; =0x021E62A8 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + b _021DDB1A +_021DDADA: + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB38 ; =0x021E6318 + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB48 ; =0x021E6388 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB4C ; =0x021E628C + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB44 ; =0x021E62A8 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 +_021DDB1A: + bl MOD14_021DDC78 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDB20: .word 0x021E63A4 +_021DDB24: .word 0x04000304 +_021DDB28: .word 0x021E627C +_021DDB2C: .word 0x021E6350 +_021DDB30: .word 0x021E6334 +_021DDB34: .word 0x021E62FC +_021DDB38: .word 0x021E6318 +_021DDB3C: .word 0x021E62E0 +_021DDB40: .word 0x021E62C4 +_021DDB44: .word 0x021E62A8 +_021DDB48: .word 0x021E6388 +_021DDB4C: .word 0x021E628C + + thumb_func_start MOD14_021DDB50 +MOD14_021DDB50: ; 0x021DDB50 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + mov r2, #0x57 + add r4, r1, #0 + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + lsl r2, r2, #2 + ldr r2, [r5, r2] + mov r0, #0x12 + mov r1, #4 + bl FUN_0200687C + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + mov r2, #0x57 + str r1, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + lsl r2, r2, #2 + ldr r2, [r5, r2] + mov r0, #0x12 + mov r3, #2 + bl FUN_0200687C + mov r0, #0xe0 + str r0, [sp] + mov r0, #0xa + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #5 + add r3, r2, #0 + bl FUN_02006930 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DDBF2 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + mov r2, #0x57 + str r0, [sp, #0xc] + lsl r2, r2, #2 + ldr r2, [r5, r2] + mov r0, #0x12 + mov r3, #2 + bl FUN_020068C8 +_021DDBF2: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r5, r0 + bl MOD14_021DE014 + mov r0, #0x43 + lsl r0, r0, #4 + add r1, r4, #0 + add r0, r5, r0 + add r1, #0x40 + mov r2, #0 + mov r3, #1 + bl MOD14_021DE0C4 + ldr r0, _021DDC60 ; =0x000065A0 + add r0, r5, r0 + bl MOD14_021E0F40 + ldr r0, _021DDC64 ; =0x000065F4 + add r0, r5, r0 + bl MOD14_021E1818 + ldr r0, _021DDC68 ; =0x0000662C + add r0, r5, r0 + bl MOD14_021E1EEC + ldr r0, _021DDC6C ; =0x0000B3A4 + ldr r0, [r5, r0] + bl MOD14_021E355C + ldr r0, _021DDC70 ; =0x0000B3AC + ldr r0, [r5, r0] + bl MOD14_021E5128 + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #1 + bne _021DDC48 + ldr r0, _021DDC74 ; =0x0000B22C + add r0, r5, r0 + bl MOD14_021E2AE8 +_021DDC48: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + bl GX_DispOn + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDC60: .word 0x000065A0 +_021DDC64: .word 0x000065F4 +_021DDC68: .word 0x0000662C +_021DDC6C: .word 0x0000B3A4 +_021DDC70: .word 0x0000B3AC +_021DDC74: .word 0x0000B22C + + thumb_func_start MOD14_021DDC78 +MOD14_021DDC78: ; 0x021DDC78 + push {r3, lr} + bl FUN_020BB7F4 + bl G3X_InitMtxStack + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r0, _021DDCDC ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + add r0, #0x58 + ldrh r1, [r0] + ldr r2, _021DDCE0 ; =0xFFFFCFFD + and r1, r2 + strh r1, [r0] + ldrh r3, [r0] + add r1, r2, #2 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _021DDCE4 ; =0x0000CFFB + and r1, r3 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021DDCE8 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _021DDCEC ; =0xBFFF0000 + str r0, [r1, #0x40] + pop {r3, pc} + .align 2, 0 +_021DDCDC: .word 0x04000008 +_021DDCE0: .word 0xFFFFCFFD +_021DDCE4: .word 0x0000CFFB +_021DDCE8: .word 0x04000540 +_021DDCEC: .word 0xBFFF0000 + + thumb_func_start MOD14_021DDCF0 +MOD14_021DDCF0: ; 0x021DDCF0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DDD10 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF144 + ldr r0, _021DDD14 ; =0x00006558 + add r0, r4, r0 + bl MOD14_021E0CCC + ldr r0, _021DDD18 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E49C4 + pop {r4, pc} + nop +_021DDD10: .word 0x00005DC0 +_021DDD14: .word 0x00006558 +_021DDD18: .word 0x0000B3A8 + + thumb_func_start MOD14_021DDD1C +MOD14_021DDD1C: ; 0x021DDD1C + cmp r1, r0 + bls _021DDD2A + mov r2, #0x12 + sub r3, r1, r0 + sub r1, r2, r1 + add r0, r0, r1 + b _021DDD32 +_021DDD2A: + mov r2, #0x12 + sub r2, r2, r0 + add r3, r1, r2 + sub r0, r0, r1 +_021DDD32: + cmp r3, r0 + blt _021DDD3C + mov r0, #0 + mvn r0, r0 + bx lr +_021DDD3C: + mov r0, #1 + bx lr + + thumb_func_start MOD14_021DDD40 +MOD14_021DDD40: ; 0x021DDD40 + ldr r3, _021DDD44 ; =0x0200CA61 + bx r3 + .align 2, 0 +_021DDD44: .word 0x0200CA61 + + thumb_func_start MOD14_021DDD48 +MOD14_021DDD48: ; 0x021DDD48 + mov r1, #0x51 + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + + thumb_func_start MOD14_021DDD50 +MOD14_021DDD50: ; 0x021DDD50 + mov r1, #0x59 + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + + thumb_func_start MOD14_021DDD58 +MOD14_021DDD58: ; 0x021DDD58 + mov r1, #0x43 + lsl r1, r1, #4 + add r0, r0, r1 + bx lr + + thumb_func_start MOD14_021DDD60 +MOD14_021DDD60: ; 0x021DDD60 + ldr r1, _021DDD68 ; =0x0000B22C + add r0, r0, r1 + bx lr + nop +_021DDD68: .word 0x0000B22C + + thumb_func_start MOD14_021DDD6C +MOD14_021DDD6C: ; 0x021DDD6C + ldr r1, _021DDD74 ; =0x00005DC0 + add r0, r0, r1 + bx lr + nop +_021DDD74: .word 0x00005DC0 + + thumb_func_start MOD14_021DDD78 +MOD14_021DDD78: ; 0x021DDD78 + ldr r1, _021DDD80 ; =0x0000B3A8 + ldr r0, [r0, r1] + bx lr + nop +_021DDD80: .word 0x0000B3A8 + + thumb_func_start MOD14_021DDD84 +MOD14_021DDD84: ; 0x021DDD84 + ldr r1, _021DDD8C ; =0x0000662C + add r0, r0, r1 + bx lr + nop +_021DDD8C: .word 0x0000662C + + thumb_func_start MOD14_021DDD90 +MOD14_021DDD90: ; 0x021DDD90 + mov r1, #0x56 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DDD98 +MOD14_021DDD98: ; 0x021DDD98 + push {r3, lr} + mov r1, #0x16 + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DDDAC + mov r0, #0 + pop {r3, pc} +_021DDDAC: + mov r0, #0x2b + mvn r0, r0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD14_021DDDB4 +MOD14_021DDDB4: ; 0x021DDDB4 + str r1, [r0] + str r2, [r0, #8] + ldr r1, [sp] + str r3, [r0, #0xc] + str r1, [r0, #0x10] + add r1, r0, #0 + ldr r2, [sp, #4] + add r1, #0x20 + strb r2, [r1] + mov r1, #0 + str r1, [r0, #4] + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DDDD4 +MOD14_021DDDD4: ; 0x021DDDD4 + push {r3, r4, r5, lr} + sub sp, #0x20 + str r0, [sp] + lsl r0, r2, #0xc + str r0, [sp, #8] + lsl r0, r3, #0xc + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + str r1, [sp, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x34] + str r0, [sp, #0x18] + mov r0, #0xa + str r0, [sp, #0x1c] + bl OS_DisableInterrupts + add r4, r0, #0 + add r0, sp, #0 + bl FUN_0201FF84 + add r5, r0, #0 + add r0, r4, #0 + bl OS_RestoreInterrupts + cmp r5, #0 + beq _021DDE1E + add r0, r5, #0 + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_021DDE1E: + add r0, r5, #0 + add sp, #0x20 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DDE24 +MOD14_021DDE24: ; 0x021DDE24 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl OS_DisableInterrupts + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02020310 + add r0, r6, #0 + bl OS_RestoreInterrupts + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DDE40 +MOD14_021DDE40: ; 0x021DDE40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + lsl r1, r3, #0x1b + lsr r1, r1, #0x13 + mov ip, r1 + asr r1, r3, #5 + lsl r1, r1, #0x1b + lsr r1, r1, #0x13 + mov lr, r1 + asr r1, r3, #0xa + lsl r1, r1, #0x1b + lsr r1, r1, #0x13 + str r1, [sp, #4] + add r7, r0, #0 + str r2, [sp] + add r1, r2, #0 + sub r2, r2, #1 + ldr r0, [sp, #0x20] + str r2, [sp] + cmp r1, #0 + beq _021DDED6 +_021DDE6C: + ldrh r1, [r7] + add r7, r7, #2 + lsl r2, r1, #0x1b + lsr r4, r2, #0x13 + asr r2, r1, #5 + asr r1, r1, #0xa + lsl r2, r2, #0x1b + lsl r1, r1, #0x1b + lsr r3, r2, #0x13 + lsr r2, r1, #0x13 + mov r1, ip + sub r5, r1, r4 + asr r1, r5, #3 + lsr r1, r1, #0x1c + add r1, r5, r1 + asr r1, r1, #4 + mul r1, r0 + add r5, r4, r1 + mov r1, lr + sub r1, r1, r3 + asr r4, r1, #3 + lsr r4, r4, #0x1c + add r4, r1, r4 + asr r1, r4, #4 + mul r1, r0 + add r3, r3, r1 + ldr r1, [sp, #4] + sub r1, r1, r2 + asr r4, r1, #3 + lsr r4, r4, #0x1c + add r4, r1, r4 + asr r1, r4, #4 + mul r1, r0 + add r4, r2, r1 + asr r2, r5, #8 + mov r1, #0x1f + and r1, r2 + asr r2, r3, #8 + asr r3, r4, #8 + lsl r3, r3, #0x1b + lsl r2, r2, #0x1b + lsr r3, r3, #0x11 + lsr r2, r2, #0x16 + orr r2, r3 + orr r1, r2 + strh r1, [r6] + ldr r1, [sp] + add r6, r6, #2 + add r2, r1, #0 + sub r2, r2, #1 + str r2, [sp] + cmp r1, #0 + bne _021DDE6C +_021DDED6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DDEDC +MOD14_021DDEDC: ; 0x021DDEDC + ldr r1, _021DDEE4 ; =0x0000B3B0 + ldr r0, [r0, r1] + bx lr + nop +_021DDEE4: .word 0x0000B3B0 + + thumb_func_start MOD14_021DDEE8 +MOD14_021DDEE8: ; 0x021DDEE8 + ldr r0, _021DDEF0 ; =0x021E6A0C + mov r1, #0 + str r1, [r0] + bx lr + .align 2, 0 +_021DDEF0: .word 0x021E6A0C + + thumb_func_start MOD14_021DDEF4 +MOD14_021DDEF4: ; 0x021DDEF4 + push {r4, r5, r6, lr} + ldr r6, _021DDF28 ; =0x021E6A0C + ldr r0, [r6] + cmp r0, #0 + beq _021DDF26 + mov r4, #0 + cmp r0, #0 + bls _021DDF20 + ldr r5, _021DDF2C ; =0x021E6A10 +_021DDF06: + ldr r0, [r5, #8] + bl FUN_02016A18 + ldr r1, [r5] + cmp r1, #0 + beq _021DDF16 + ldr r0, [r5, #4] + blx r1 +_021DDF16: + ldr r0, [r6] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blo _021DDF06 +_021DDF20: + ldr r0, _021DDF28 ; =0x021E6A0C + mov r1, #0 + str r1, [r0] +_021DDF26: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DDF28: .word 0x021E6A0C +_021DDF2C: .word 0x021E6A10 + + thumb_func_start MOD14_021DDF30 +MOD14_021DDF30: ; 0x021DDF30 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021DDF60 ; =0x021E6A0C + add r4, r1, #0 + ldr r0, [r0] + add r6, r2, #0 + cmp r0, #0x20 + blo _021DDF44 + bl ErrorHandling +_021DDF44: + ldr r2, _021DDF60 ; =0x021E6A0C + mov r1, #0xc + ldr r0, [r2] + ldr r3, _021DDF64 ; =0x021E6A18 + mul r1, r0 + str r5, [r3, r1] + ldr r3, _021DDF68 ; =0x021E6A10 + add r0, r0, #1 + str r4, [r3, r1] + ldr r3, _021DDF6C ; =0x021E6A14 + str r0, [r2] + str r6, [r3, r1] + pop {r4, r5, r6, pc} + nop +_021DDF60: .word 0x021E6A0C +_021DDF64: .word 0x021E6A18 +_021DDF68: .word 0x021E6A10 +_021DDF6C: .word 0x021E6A14 + + thumb_func_start MOD14_021DDF70 +MOD14_021DDF70: ; 0x021DDF70 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r0, #0x40 + ldrb r0, [r0] + add r4, r1, #0 + add r7, r3, #0 + strb r0, [r5] + mov r0, #0xb + strb r0, [r5, #1] + mov r0, #0 + strb r0, [r5, #2] + add r0, r4, #0 + bl MOD14_021DDD98 + ldr r1, _021DDFE0 ; =0x0000585C + str r0, [r5, r1] + ldr r2, [r5, r1] + add r0, r1, #0 + add r2, #0x48 + sub r0, #8 + str r2, [r5, r0] + mov r0, #0x11 + ldr r2, [r5, r1] + lsl r0, r0, #4 + add r2, r2, r0 + sub r0, r1, #4 + str r2, [r5, r0] + add r0, r4, #0 + bl MOD14_021DDD50 + ldr r1, _021DDFE4 ; =0x00005980 + mov r2, #0x1e + str r0, [r5, r1] + ldr r0, [r5, r1] + add r1, r5, #0 + add r1, #0xa8 + bl MOD14_021E08E4 + ldr r0, _021DDFE4 ; =0x00005980 + mov r1, #0x1b + lsl r1, r1, #6 + ldr r0, [r5, r0] + add r1, r5, r1 + mov r2, #0x1e + bl MOD14_021E08E4 + ldr r1, _021DDFE8 ; =0x00005984 + str r7, [r5, r1] + add r0, r1, #4 + str r6, [r5, r0] + add r1, #8 + str r4, [r5, r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DDFE0: .word 0x0000585C +_021DDFE4: .word 0x00005980 +_021DDFE8: .word 0x00005984 + + thumb_func_start MOD14_021DDFEC +MOD14_021DDFEC: ; 0x021DDFEC + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DE010 ; =0x00005980 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0xa8 + mov r2, #0x1e + bl MOD14_021E0908 + ldr r0, _021DE010 ; =0x00005980 + mov r1, #0x1b + lsl r1, r1, #6 + ldr r0, [r4, r0] + add r1, r4, r1 + mov r2, #0x1e + bl MOD14_021E0908 + pop {r4, pc} + .align 2, 0 +_021DE010: .word 0x00005980 + + thumb_func_start MOD14_021DE014 +MOD14_021DE014: ; 0x021DE014 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _021DE060 ; =0x00005984 + mov r1, #3 + ldr r0, [r4, r0] + bl FUN_02017B48 + ldr r1, _021DE064 ; =0x0000585C + str r0, [r4, #0xc] + ldr r1, [r4, r1] + mov r2, #0 + sub r1, r0, r1 + add r3, r1, #0 + ldr r0, _021DE068 ; =0x000001FF + mov r1, #3 + and r3, r0 + ldr r0, _021DE060 ; =0x00005984 + str r3, [r4, #0xc] + ldr r0, [r4, r0] + bl FUN_020179E0 + mov r3, #0 + str r3, [sp] + mov r0, #0x40 + str r0, [sp, #4] + mov r0, #0x20 + str r0, [sp, #8] + mov r0, #9 + str r0, [sp, #0xc] + ldr r0, _021DE060 ; =0x00005984 + mov r1, #3 + ldr r0, [r4, r0] + mov r2, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021DE060: .word 0x00005984 +_021DE064: .word 0x0000585C +_021DE068: .word 0x000001FF + + thumb_func_start MOD14_021DE06C +MOD14_021DE06C: ; 0x021DE06C + push {r4, r5, r6, r7} + ldr r5, [sp, #0x10] + cmp r1, #0 + beq _021DE0A2 + ldrb r6, [r0, #2] + mov r4, #1 + add r7, r6, #0 + mov r6, #0x69 + eor r7, r4 + lsl r6, r6, #2 + mul r6, r7 + str r6, [r2] + mov r2, #0x17 + mul r2, r1 + ldrb r6, [r0, #1] + mov r1, #0x3f + add r2, r6, r2 + and r1, r2 + str r1, [r3] + ldrb r0, [r0, #2] + eor r0, r4 + lsl r1, r0, #1 + ldr r0, _021DE0C0 ; =0x021E656C + ldrh r0, [r0, r1] + str r0, [r5] + pop {r4, r5, r6, r7} + bx lr +_021DE0A2: + ldrb r4, [r0, #2] + mov r1, #0x69 + lsl r1, r1, #2 + mul r1, r4 + str r1, [r2] + ldrb r1, [r0, #1] + str r1, [r3] + ldrb r0, [r0, #2] + lsl r1, r0, #1 + ldr r0, _021DE0C0 ; =0x021E656C + ldrh r0, [r0, r1] + str r0, [r5] + pop {r4, r5, r6, r7} + bx lr + nop +_021DE0C0: .word 0x021E656C + + thumb_func_start MOD14_021DE0C4 +MOD14_021DE0C4: ; 0x021DE0C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + add r6, r2, #0 + add r1, sp, #8 + add r7, r3, #0 + str r1, [sp] + add r1, r6, #0 + add r2, sp, #0x10 + add r3, sp, #0xc + add r5, r0, #0 + bl MOD14_021DE06C + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + add r3, r7, #0 + bl MOD14_021DE138 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021DE1D0 + ldr r0, [sp, #8] + add r1, r4, #0 + str r0, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r5, #0 + bl MOD14_021DE278 + cmp r7, #0 + beq _021DE12C + cmp r6, #0 + bne _021DE12C + ldrb r3, [r5, #2] + mov r0, #0xb8 + mul r0, r6 + str r0, [sp] + ldr r0, _021DE130 ; =0x00000618 + add r1, r5, #0 + add r1, #0xa8 + mul r0, r3 + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, _021DE134 ; =0x00005980 + ldrb r2, [r4] + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD14_021DEB34 +_021DE12C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE130: .word 0x00000618 +_021DE134: .word 0x00005980 + + thumb_func_start MOD14_021DE138 +MOD14_021DE138: ; 0x021DE138 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + ldrb r2, [r1, #1] + add r7, r0, #0 + add r5, r3, #0 + lsl r1, r2, #1 + add r2, r2, r1 + ldr r1, _021DE1C4 ; =0x021E65AE + mov r0, #0x12 + ldrb r1, [r1, r2] + add r2, sp, #8 + mov r3, #0xa + bl FUN_02006C08 + str r0, [sp, #4] + cmp r0, #0 + beq _021DE1C0 + cmp r5, #0 + beq _021DE176 + ldr r0, [sp, #8] + mov r1, #0x20 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [sp, #8] + lsl r1, r4, #5 + ldr r0, [r0, #0xc] + mov r2, #0x20 + bl GX_LoadBGPltt +_021DE176: + ldr r0, _021DE1C8 ; =0x00005860 + mov r6, #0 + add r4, r6, #0 + add r5, r7, r0 +_021DE17E: + str r4, [sp] + ldr r0, [sp, #8] + ldr r3, _021DE1CC ; =0x00007FFF + ldr r0, [r0, #0xc] + add r1, r5, #0 + mov r2, #0x10 + bl MOD14_021DDE40 + add r6, r6, #1 + add r4, r4, #2 + add r5, #0x20 + cmp r6, #8 + blt _021DE17E + mov r2, #0x10 + str r2, [sp] + ldr r1, _021DE1C8 ; =0x00005860 + ldr r0, [sp, #8] + add r3, r7, r1 + lsl r1, r6, #5 + add r1, r3, r1 + ldr r0, [r0, #0xc] + ldr r3, _021DE1CC ; =0x00007FFF + bl MOD14_021DDE40 + ldr r0, _021DE1C8 ; =0x00005860 + mov r1, #0x12 + add r0, r7, r0 + lsl r1, r1, #4 + bl DC_FlushRange + ldr r0, [sp, #4] + bl FUN_02016A18 +_021DE1C0: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE1C4: .word 0x021E65AE +_021DE1C8: .word 0x00005860 +_021DE1CC: .word 0x00007FFF + + thumb_func_start MOD14_021DE1D0 +MOD14_021DE1D0: ; 0x021DE1D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r2, #0 + mov r2, #1 + add r5, r1, #0 + str r2, [sp] + ldrb r3, [r5, #1] + add r6, r0, #0 + mov r0, #0x12 + lsl r1, r3, #1 + add r3, r3, r1 + ldr r1, _021DE26C ; =0x021E65AD + ldrb r1, [r1, r3] + mov r3, #0xa + bl FUN_02006C98 + str r0, [sp, #0x10] + cmp r0, #0 + beq _021DE268 + add r1, sp, #0x14 + bl FUN_020B0030 + cmp r0, #0 + beq _021DE262 + mov r0, #0xa + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + beq _021DE250 + ldr r0, _021DE270 ; =0x00005984 + ldr r0, [r6, r0] + str r0, [r4] + mov r0, #0x15 + strb r0, [r4, #7] + mov r0, #4 + strb r0, [r4, #8] + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x14] + str r0, [r4, #0xc] + mov r0, #0 + ldr r1, [r5, #4] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0xd + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DE274 ; =0x00020100 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #4] + lsr r5, r3, #1 + mov r3, #0x54 + add r0, r4, #0 + sub r3, r3, r5 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02016A18 +_021DE250: + ldr r3, [sp, #0x14] + ldr r0, _021DE270 ; =0x00005984 + str r7, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r6, r0] + ldr r3, [r3, #0x10] + mov r1, #3 + bl FUN_02017E14 +_021DE262: + ldr r0, [sp, #0x10] + bl FUN_02016A18 +_021DE268: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE26C: .word 0x021E65AD +_021DE270: .word 0x00005984 +_021DE274: .word 0x00020100 + + thumb_func_start MOD14_021DE278 +MOD14_021DE278: ; 0x021DE278 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + mov r2, #1 + str r2, [sp] + add r6, r3, #0 + ldrb r3, [r1, #1] + add r5, r0, #0 + mov r0, #0x12 + lsl r1, r3, #1 + add r3, r3, r1 + ldr r1, _021DE2E0 ; =0x021E65AC + ldrb r1, [r1, r3] + mov r3, #0xa + bl FUN_02006C98 + str r0, [sp, #4] + cmp r0, #0 + beq _021DE2DC + add r1, sp, #8 + bl FUN_020B0180 + ldr r0, _021DE2E4 ; =0x00005984 + mov r1, #3 + ldr r0, [r5, r0] + bl FUN_0201886C + add r7, r0, #0 + beq _021DE2C2 + ldr r1, [sp, #0x20] + add r2, r4, #0 + str r1, [sp] + ldr r1, [sp, #8] + add r3, r6, #0 + add r1, #0xc + bl MOD14_021DECD4 +_021DE2C2: + ldr r0, [sp, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [sp] + ldr r0, _021DE2E4 ; =0x00005984 + mov r3, #1 + ldr r0, [r5, r0] + mov r1, #3 + add r2, r7, #0 + lsl r3, r3, #0xc + bl FUN_02017CE8 +_021DE2DC: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE2E0: .word 0x021E65AC +_021DE2E4: .word 0x00005984 + + thumb_func_start MOD14_021DE2E8 +MOD14_021DE2E8: ; 0x021DE2E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021DE384 ; =0x00005984 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #3 + add r6, r2, #0 + bl FUN_02017B48 + lsl r0, r0, #0x17 + lsr r1, r0, #0xb + mov r0, #0xb8 + add r7, r6, #0 + mul r7, r0 + lsl r0, r7, #0xc + str r1, [r5, #8] + add r1, r1, r0 + str r1, [r5, #0x14] + ldr r0, [r5, #8] + sub r0, r1, r0 + mov r1, #0x1e + bl _s32_div_f + str r0, [r5, #0x10] + ldr r0, [r5, #0x14] + asr r1, r0, #0xc + ldr r0, _021DE388 ; =0x000001FF + and r0, r1 + str r0, [r5, #0x14] + mov r0, #0x1e + str r0, [r5, #4] + ldrb r0, [r5, #2] + strb r0, [r5, #3] + mov r0, #0x17 + ldrb r1, [r5, #1] + mul r0, r6 + add r0, r1, r0 + strb r0, [r5, #1] + ldrb r1, [r5, #1] + mov r0, #0x3f + and r0, r1 + strb r0, [r5, #1] + ldrb r1, [r5, #2] + mov r0, #1 + eor r0, r1 + strb r0, [r5, #2] + ldrb r1, [r4] + add r0, r5, #0 + bl MOD14_021DE6B4 + ldr r1, [r5, #0x10] + add r0, r5, #0 + add r2, r7, #0 + bl MOD14_021DE48C + ldrb r0, [r4] + mov r1, #1 + mov r2, #0 + str r0, [r5, #0x30] + ldrb r0, [r5, #2] + str r0, [r5, #0x34] + add r0, r5, #0 + add r0, #0x98 + str r1, [r0] + add r0, r5, #0 + add r0, #0x9c + str r2, [r0] + ldr r0, _021DE38C ; =MOD14_021DE39C + add r1, r5, #0 + bl FUN_0200CA44 + ldr r0, _021DE390 ; =MOD14_021DE3E4 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021DDD40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE384: .word 0x00005984 +_021DE388: .word 0x000001FF +_021DE38C: .word MOD14_021DE39C +_021DE390: .word MOD14_021DE3E4 + + thumb_func_start MOD14_021DE394 +MOD14_021DE394: ; 0x021DE394 + add r0, #0x9c + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DE39C +MOD14_021DE39C: ; 0x021DE39C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021DE3C2 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #2 + bne _021DE3DC + ldr r1, [r4, #0x10] + add r0, r4, #0 + bl MOD14_021DE514 + mov r0, #0 + add r4, #0x98 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DE3C2: + ldr r0, [r4, #0x14] + str r0, [r4, #0xc] + ldr r0, _021DE3E0 ; =0x00005988 + ldr r0, [r4, r0] + bl MOD14_021DC424 + strb r0, [r4] + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #1 + add r4, #0x9c + str r0, [r4] +_021DE3DC: + pop {r3, r4, r5, pc} + nop +_021DE3E0: .word 0x00005988 + + thumb_func_start MOD14_021DE3E4 +MOD14_021DE3E4: ; 0x021DE3E4 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrb r3, [r5, #3] + add r6, r0, #0 + mov r0, #1 + add r4, r3, #0 + eor r4, r0 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021DE45C + add r0, r5, #0 + add r0, #0x98 + ldr r2, [r0] + cmp r2, #2 + bhs _021DE47E + ldr r6, _021DE480 ; =0x00000618 + add r1, #0xa8 + mul r6, r3 + add r0, r5, #0 + add r1, r1, r6 + bl MOD14_021DEBCC + ldr r1, _021DE480 ; =0x00000618 + add r2, r5, #0 + add r2, #0xa8 + mul r1, r4 + add r1, r2, r1 + add r2, r5, #0 + add r2, #0x98 + ldr r2, [r2] + add r0, r5, #0 + bl MOD14_021DEC24 + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + mov r2, #0 + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x98 + str r1, [r0] + ldr r0, [r5, #8] + asr r1, r0, #0xc + ldr r0, _021DE484 ; =0x000001FF + and r0, r1 + str r0, [r5, #0xc] + ldr r1, [r5, #8] + ldr r0, [r5, #0x10] + add r0, r1, r0 + str r0, [r5, #8] + ldr r0, _021DE488 ; =0x00005984 + ldr r3, [r5, #0xc] + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_020179E0 + ldr r0, [r5, #4] + sub r0, r0, #1 + str r0, [r5, #4] + pop {r4, r5, r6, pc} +_021DE45C: + ldr r0, _021DE488 ; =0x00005984 + ldr r3, [r5, #0x14] + ldr r0, [r5, r0] + mov r1, #3 + mov r2, #0 + bl FUN_020179E0 + ldr r1, _021DE480 ; =0x00000618 + add r0, r5, #0 + add r5, #0xa8 + mul r1, r4 + add r1, r5, r1 + bl MOD14_021DEC7C + add r0, r6, #0 + bl FUN_0200CAB4 +_021DE47E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DE480: .word 0x00000618 +_021DE484: .word 0x000001FF +_021DE488: .word 0x00005984 + + thumb_func_start MOD14_021DE48C +MOD14_021DE48C: ; 0x021DE48C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r7, #0 + str r0, [sp, #8] + add r0, #0xa8 + str r1, [sp] + str r2, [sp, #4] + add r6, r7, #0 + add r4, r5, #0 + str r0, [sp, #8] +_021DE4A2: + ldr r0, _021DE504 ; =0x0000585C + ldr r0, [r5, r0] + add r0, #0x70 + add r0, r0, r6 + lsl r1, r0, #0xc + ldr r0, [sp] + str r1, [r4, #0x68] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + ldr r0, _021DE504 ; =0x0000585C + ldr r0, [r5, r0] + add r0, #0x70 + add r1, r0, r6 + ldr r0, [sp, #4] + add r0, r0, r1 + lsl r1, r0, #0xc + ldr r0, [sp] + str r1, [r4, #0x38] + sub r0, r1, r0 + str r0, [r4, #0x50] + asr r2, r0, #0xc + ldr r0, _021DE508 ; =0x00005854 + ldr r0, [r5, r0] + cmp r2, r0 + ble _021DE4F6 + ldr r0, _021DE50C ; =0x00005858 + ldr r0, [r5, r0] + cmp r2, r0 + bge _021DE4F6 + ldrb r3, [r5, #3] + mov r1, #1 + add r0, r5, #0 + eor r1, r3 + ldr r3, _021DE510 ; =0x00000618 + mul r3, r1 + ldr r1, [sp, #8] + add r1, r1, r3 + add r3, r7, #0 + bl MOD14_021DE5B4 +_021DE4F6: + add r7, r7, #1 + add r6, #0x18 + add r4, r4, #4 + cmp r7, #6 + blt _021DE4A2 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE504: .word 0x0000585C +_021DE508: .word 0x00005854 +_021DE50C: .word 0x00005858 +_021DE510: .word 0x00000618 + + thumb_func_start MOD14_021DE514 +MOD14_021DE514: ; 0x021DE514 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r6, r1, #0 + ldrb r1, [r5, #3] + str r0, [sp] + add r0, #0xa8 + str r0, [sp] + ldr r0, _021DE5A8 ; =0x00000618 + add r2, r1, #0 + mul r2, r0 + str r2, [sp, #4] + mov r2, #1 + eor r1, r2 + mul r0, r1 + mov r7, #0 + add r4, r5, #0 + str r0, [sp, #8] +_021DE538: + add r0, r4, #0 + add r0, #0x80 + ldr r1, _021DE5AC ; =0x00005854 + ldr r0, [r0] + ldr r1, [r5, r1] + asr r0, r0, #0xc + cmp r0, r1 + ble _021DE550 + ldr r1, _021DE5B0 ; =0x00005858 + ldr r1, [r5, r1] + cmp r0, r1 + blt _021DE55E +_021DE550: + ldr r2, [sp] + ldr r1, [sp, #4] + add r0, r5, #0 + add r1, r2, r1 + add r2, r7, #0 + bl MOD14_021DE68C +_021DE55E: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + sub r0, r0, r6 + str r0, [r4, #0x68] + sub r1, r0, r6 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + ldr r0, [r4, #0x50] + sub r0, r0, r6 + str r0, [r4, #0x38] + sub r0, r0, r6 + str r0, [r4, #0x50] + asr r2, r0, #0xc + ldr r0, _021DE5AC ; =0x00005854 + ldr r0, [r5, r0] + cmp r2, r0 + ble _021DE59A + ldr r0, _021DE5B0 ; =0x00005858 + ldr r0, [r5, r0] + cmp r2, r0 + bge _021DE59A + ldr r3, [sp] + ldr r1, [sp, #8] + add r0, r5, #0 + add r1, r3, r1 + add r3, r7, #0 + bl MOD14_021DE5B4 +_021DE59A: + add r7, r7, #1 + add r4, r4, #4 + cmp r7, #6 + blt _021DE538 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021DE5A8: .word 0x00000618 +_021DE5AC: .word 0x00005854 +_021DE5B0: .word 0x00005858 + + thumb_func_start MOD14_021DE5B4 +MOD14_021DE5B4: ; 0x021DE5B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r1, #0 + ldr r1, _021DE678 ; =0x00005988 + str r0, [sp, #0x1c] + ldr r0, [r0, r1] + str r2, [sp, #0x20] + add r4, r3, #0 + bl MOD14_021DC44C + str r0, [sp, #0x30] + ldr r0, [sp, #0x1c] + mov r7, #0x28 + ldr r1, [r0, #0x34] + mov r0, #0x1e + add r2, r1, #0 + lsl r0, r0, #4 + mul r2, r0 + add r2, #0x58 + lsl r0, r4, #4 + add r0, r2, r0 + str r0, [sp, #0x28] + mov r0, #0x34 + mul r0, r4 + add r5, r5, r0 + mov r0, #0 + str r0, [sp, #0x2c] + ldr r1, _021DE67C ; =0x00000CD8 + ldr r0, [sp, #0x1c] + add r1, r0, r1 + lsl r0, r7, #4 + mul r0, r4 + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + lsl r1, r4, #1 + add r6, r0, r1 +_021DE5FE: + ldr r0, [r5] + cmp r0, #0 + bne _021DE64E + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x30] + ldr r1, [r1, #0x30] + add r2, r4, #0 + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + str r0, [sp, #0x34] + bl FUN_020672BC + cmp r0, #0 + beq _021DE64E + add r0, r4, #0 + bl MOD14_021DEB24 + ldr r1, [sp, #0x24] + ldr r2, _021DE680 ; =0x00005814 + str r1, [sp] + ldr r1, [sp, #0x20] + ldr r3, _021DE684 ; =0x000057D8 + str r1, [sp, #4] + str r7, [sp, #8] + mov r1, #2 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x14] + str r5, [sp, #0x18] + ldr r0, _021DE688 ; =0x00005980 + ldrh r2, [r6, r2] + ldr r0, [r1, r0] + ldrh r3, [r6, r3] + ldr r1, [sp, #0x34] + bl MOD14_021E0A60 +_021DE64E: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + add r0, #0x60 + str r0, [sp, #0x28] + mov r0, #0x4e + lsl r0, r0, #2 + add r5, r5, r0 + mov r0, #0xf + lsl r0, r0, #8 + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x2c] + add r6, #0xc + add r0, r0, #1 + add r4, r4, #6 + add r7, #0x18 + str r0, [sp, #0x2c] + cmp r0, #5 + blt _021DE5FE + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE678: .word 0x00005988 +_021DE67C: .word 0x00000CD8 +_021DE680: .word 0x00005814 +_021DE684: .word 0x000057D8 +_021DE688: .word 0x00005980 + + thumb_func_start MOD14_021DE68C +MOD14_021DE68C: ; 0x021DE68C + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x34 + mov r4, #0 + mov r7, #0x4e + add r5, r1, #0 + mul r0, r2 + add r5, r5, r0 + add r6, r4, #0 + lsl r7, r7, #2 +_021DE69E: + ldr r0, [r5] + cmp r0, #0 + beq _021DE6AA + bl FUN_0201FFC8 + str r6, [r5] +_021DE6AA: + add r4, r4, #1 + add r5, r5, r7 + cmp r4, #5 + blt _021DE69E + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DE6B4 +MOD14_021DE6B4: ; 0x021DE6B4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r1, [sp, #4] + ldr r1, _021DE71C ; =0x00005988 + str r0, [sp] + ldr r0, [r0, r1] + bl MOD14_021DC44C + ldr r4, [sp] + str r0, [sp, #8] + ldr r1, _021DE720 ; =0x00000CD8 + add r0, r4, #0 + mov r6, #0 + add r5, r0, r1 +_021DE6D0: + ldr r0, [sp, #8] + ldr r1, [sp, #4] + add r2, r6, #0 + bl FUN_0206B5E4 + mov r1, #5 + mov r2, #0 + add r7, r0, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DE70A + ldr r1, _021DE724 ; =0x00005814 + strh r0, [r4, r1] + add r0, r7, #0 + bl FUN_0206B688 + ldr r1, _021DE728 ; =0x000057D8 + mov r3, #0xa + strh r0, [r4, r1] + ldr r2, _021DE728 ; =0x000057D8 + ldr r1, [sp] + ldr r0, _021DE72C ; =0x00005980 + ldrh r2, [r4, r2] + ldr r0, [r1, r0] + add r1, r5, #0 + lsl r3, r3, #6 + bl MOD14_021E0BAC +_021DE70A: + mov r0, #0xa + lsl r0, r0, #6 + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, r0 + cmp r6, #0x1e + blo _021DE6D0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE71C: .word 0x00005988 +_021DE720: .word 0x00000CD8 +_021DE724: .word 0x00005814 +_021DE728: .word 0x000057D8 +_021DE72C: .word 0x00005980 + + thumb_func_start MOD14_021DE730 +MOD14_021DE730: ; 0x021DE730 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r1, #0 + add r0, #0xa3 + strb r1, [r0] + mov r0, #0xa + mov r1, #0x10 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021DE782 + str r5, [r4] + strh r6, [r4, #4] + ldr r0, [sp] + strh r7, [r4, #6] + str r0, [r4, #0xc] + mov r0, #2 + strh r0, [r4, #0xa] + cmp r7, r6 + ble _021DE762 + mov r0, #1 + b _021DE764 +_021DE762: + sub r0, r0, #3 +_021DE764: + strh r0, [r4, #8] + ldr r0, _021DE784 ; =MOD14_021DE788 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DE77C + mov r0, #1 + add r5, #0xa3 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DE77C: + add r0, r4, #0 + bl FUN_02016A18 +_021DE782: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE784: .word MOD14_021DE788 + + thumb_func_start MOD14_021DE788 +MOD14_021DE788: ; 0x021DE788 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + beq _021DE79C + sub r0, r0, #1 + strh r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_021DE79C: + mov r2, #4 + mov r1, #6 + ldrsh r0, [r4, r2] + ldrsh r1, [r4, r1] + cmp r0, r1 + beq _021DE7CA + mov r1, #8 + ldrsh r1, [r4, r1] + add r0, r0, r1 + strh r0, [r4, #4] + ldr r1, [r4] + ldr r0, _021DE7DC ; =0x00005860 + add r1, r1, r0 + ldrsh r0, [r4, r2] + mov r2, #0x20 + lsl r0, r0, #5 + add r0, r1, r0 + ldr r1, [r4, #0xc] + bl GX_LoadBGPltt + mov r0, #2 + strh r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_021DE7CA: + ldr r1, _021DE7E0 ; =MOD14_021DE7E4 + ldr r2, [r4] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DE7DC: .word 0x00005860 +_021DE7E0: .word MOD14_021DE7E4 + + thumb_func_start MOD14_021DE7E4 +MOD14_021DE7E4: ; 0x021DE7E4 + mov r1, #0 + add r0, #0xa3 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021DE7EC +MOD14_021DE7EC: ; 0x021DE7EC + push {r3, r4, lr} + sub sp, #4 + ldr r3, _021DE878 ; =0x021E6B90 + add r4, r1, #0 + ldr r1, [r3, #0xc] + cmp r1, #0 + beq _021DE806 + cmp r1, #1 + beq _021DE83C + cmp r1, #2 + beq _021DE868 + add sp, #4 + pop {r3, r4, pc} +_021DE806: + ldr r0, _021DE87C ; =0x021E6B94 + ldr r2, _021DE880 ; =0x021E6B98 + str r0, [sp] + ldr r3, _021DE884 ; =0x021E6B90 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DE06C + ldr r0, _021DE888 ; =0x00005988 + ldr r0, [r4, r0] + bl MOD14_021DC448 + ldr r2, _021DE878 ; =0x021E6B90 + add r1, r0, #0 + ldr r0, _021DE88C ; =0x021E69E0 + ldr r2, [r2, #4] + str r1, [r0] + add r0, r4, #0 + mov r3, #0 + bl MOD14_021DE138 + ldr r0, _021DE878 ; =0x021E6B90 + add sp, #4 + ldr r1, [r0, #0xc] + add r1, r1, #1 + str r1, [r0, #0xc] + pop {r3, r4, pc} +_021DE83C: + ldr r0, [r3, #4] + ldr r1, _021DE88C ; =0x021E69E0 + str r0, [sp] + ldr r2, [r3] + ldr r1, [r1] + ldr r3, [r3, #8] + add r0, r4, #0 + bl MOD14_021DE278 + ldr r1, _021DE88C ; =0x021E69E0 + ldr r2, _021DE878 ; =0x021E6B90 + ldr r1, [r1] + ldr r2, [r2, #8] + add r0, r4, #0 + bl MOD14_021DE1D0 + ldr r0, _021DE878 ; =0x021E6B90 + add sp, #4 + ldr r1, [r0, #0xc] + add r1, r1, #1 + str r1, [r0, #0xc] + pop {r3, r4, pc} +_021DE868: + mov r1, #0 + add r4, #0xa3 + strb r1, [r4] + str r1, [r3, #0xc] + bl FUN_0200CAB4 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021DE878: .word 0x021E6B90 +_021DE87C: .word 0x021E6B94 +_021DE880: .word 0x021E6B98 +_021DE884: .word 0x021E6B90 +_021DE888: .word 0x00005988 +_021DE88C: .word 0x021E69E0 + + thumb_func_start MOD14_021DE890 +MOD14_021DE890: ; 0x021DE890 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DE8C0 ; =MOD14_021DE7EC + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA98 + cmp r0, #0 + beq _021DE8A6 + mov r1, #1 + b _021DE8A8 +_021DE8A6: + mov r1, #0 +_021DE8A8: + add r0, r4, #0 + add r0, #0xa3 + add r4, #0xa3 + strb r1, [r0] + ldrb r0, [r4] + cmp r0, #0 + beq _021DE8BC + ldr r0, _021DE8C4 ; =0x021E6B90 + mov r1, #0 + str r1, [r0, #0xc] +_021DE8BC: + pop {r4, pc} + nop +_021DE8C0: .word MOD14_021DE7EC +_021DE8C4: .word 0x021E6B90 + + thumb_func_start MOD14_021DE8C8 +MOD14_021DE8C8: ; 0x021DE8C8 + push {r4, lr} + add r2, r0, #0 + mov r1, #0 + add r2, #0xa2 + strb r1, [r2] + ldrb r3, [r0, #2] + mov r2, #8 + lsl r4, r3, #1 + ldr r3, _021DE8E4 ; =0x021E656C + ldrh r3, [r3, r4] + lsl r3, r3, #5 + bl MOD14_021DE730 + pop {r4, pc} + .align 2, 0 +_021DE8E4: .word 0x021E656C + + thumb_func_start MOD14_021DE8E8 +MOD14_021DE8E8: ; 0x021DE8E8 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0xa2 + ldrb r1, [r1] + cmp r1, #4 + bhi _021DE976 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DE902: ; jump table + .short _021DE90C - _021DE902 - 2 ; case 0 + .short _021DE922 - _021DE902 - 2 ; case 1 + .short _021DE934 - _021DE902 - 2 ; case 2 + .short _021DE94A - _021DE902 - 2 ; case 3 + .short _021DE96A - _021DE902 - 2 ; case 4 +_021DE90C: + add r0, #0xa3 + ldrb r0, [r0] + cmp r0, #0 + bne _021DE976 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE922: + bl MOD14_021DE890 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE934: + add r0, #0xa3 + ldrb r0, [r0] + cmp r0, #0 + bne _021DE976 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE94A: + ldrb r3, [r4, #2] + mov r1, #8 + mov r2, #0 + lsl r5, r3, #1 + ldr r3, _021DE97C ; =0x021E656C + ldrh r3, [r3, r5] + lsl r3, r3, #5 + bl MOD14_021DE730 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE96A: + add r4, #0xa3 + ldrb r0, [r4] + cmp r0, #0 + bne _021DE976 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DE976: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021DE97C: .word 0x021E656C + + thumb_func_start MOD14_021DE980 +MOD14_021DE980: ; 0x021DE980 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r2, #0 + add r4, r1, #0 + mov r0, #0x34 + mul r4, r0 + add r0, r5, #0 + ldrb r2, [r5, #2] + ldr r1, _021DE9CC ; =0x00000618 + add r0, #0xa8 + mul r1, r2 + add r0, r0, r1 + add r6, r3, #0 + add r0, r0, r4 + add r1, r6, #0 + mov r2, #1 + bl MOD14_021E0930 + ldr r0, _021DE9D0 ; =0x00005980 + add r1, r6, #0 + ldr r0, [r5, r0] + add r2, r7, #0 + bl MOD14_021E0BBC + ldr r0, _021DE9D0 ; =0x00005980 + add r3, r5, #0 + ldrb r2, [r5, #2] + ldr r1, _021DE9CC ; =0x00000618 + add r3, #0xa8 + mul r1, r2 + add r1, r3, r1 + ldr r0, [r5, r0] + add r1, r1, r4 + mov r2, #1 + bl MOD14_021E08E4 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE9CC: .word 0x00000618 +_021DE9D0: .word 0x00005980 + + thumb_func_start MOD14_021DE9D4 +MOD14_021DE9D4: ; 0x021DE9D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldrb r0, [r6, #2] + add r7, r1, #0 + add r3, r6, #0 + str r0, [sp] + ldr r1, _021DEA30 ; =0x00000618 + ldr r0, [sp] + add r3, #0xa8 + mul r1, r0 + mov r0, #0x34 + add r4, r7, #0 + mul r4, r0 + add r5, r3, r1 + add r0, r2, #0 + add r1, r5, r4 + mov r2, #1 + bl MOD14_021E0930 + ldr r0, _021DEA34 ; =0x00005980 + add r1, r5, r4 + ldr r0, [r6, r0] + mov r2, #0 + bl MOD14_021E0C5C + mov r2, #0x1e + ldr r0, _021DEA34 ; =0x00005980 + ldr r3, [sp] + lsl r2, r2, #4 + mul r2, r3 + ldr r0, [r6, r0] + add r2, #0x58 + lsl r3, r7, #4 + add r1, r5, r4 + add r2, r2, r3 + bl MOD14_021E0BBC + add r0, r7, #0 + bl MOD14_021DEB24 + add r1, r0, #0 + ldr r0, [r5, r4] + bl MOD14_021DDE24 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEA30: .word 0x00000618 +_021DEA34: .word 0x00005980 + + thumb_func_start MOD14_021DEA38 +MOD14_021DEA38: ; 0x021DEA38 + ldrb r2, [r0, #2] + add r3, r0, #0 + ldr r0, _021DEA4C ; =0x00000618 + add r3, #0xa8 + mul r0, r2 + add r2, r3, r0 + mov r0, #0x34 + mul r0, r1 + add r0, r2, r0 + bx lr + .align 2, 0 +_021DEA4C: .word 0x00000618 + + thumb_func_start MOD14_021DEA50 +MOD14_021DEA50: ; 0x021DEA50 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, _021DEB14 ; =0x00005988 + ldr r0, [r5, r0] + ldr r0, [r0] + bl FUN_0206B330 + mov r4, #0 + str r0, [sp, #0x1c] + add r0, r5, #0 + str r0, [sp, #0x28] + add r0, #0xa8 + add r7, r4, #0 + str r4, [sp, #0x2c] + str r0, [sp, #0x28] +_021DEA70: + ldr r0, _021DEB14 ; =0x00005988 + ldr r1, [sp, #0x1c] + ldr r0, [r5, r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + str r0, [sp, #0x20] + bl FUN_020672BC + cmp r0, #0 + beq _021DEB02 + ldrb r1, [r5, #2] + ldr r0, _021DEB18 ; =0x00000618 + mul r0, r1 + str r0, [sp, #0x18] + add r0, r5, r0 + add r0, r7, r0 + str r1, [sp, #0x14] + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + bne _021DEB02 + add r0, r4, #0 + bl MOD14_021DEB24 + str r0, [sp, #0x24] + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + str r1, [sp, #0x10] + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + mov ip, r0 + mov r0, #2 + str r0, [sp] + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x10] + str r0, [sp, #4] + ldr r1, [sp, #0x14] + mov r0, #0x1e + add r2, r1, #0 + lsl r0, r0, #4 + mul r2, r0 + ldr r0, [sp, #0x2c] + add r2, #0x58 + add r0, r2, r0 + str r0, [sp, #8] + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x18] + ldr r2, _021DEB1C ; =0x0000585C + add r0, r1, r0 + add r0, r0, r7 + str r0, [sp, #0xc] + ldr r6, [r5, r2] + mov r2, #0x18 + ldr r0, _021DEB20 ; =0x00005980 + mul r2, r3 + add r6, #0x70 + add r2, r6, r2 + mov r6, ip + mov r3, #0x18 + mul r3, r6 + ldr r0, [r5, r0] + ldr r1, [sp, #0x20] + add r3, #0x28 + bl MOD14_021E0940 +_021DEB02: + ldr r0, [sp, #0x2c] + add r4, r4, #1 + add r0, #0x10 + add r7, #0x34 + str r0, [sp, #0x2c] + cmp r4, #0x1e + blt _021DEA70 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DEB14: .word 0x00005988 +_021DEB18: .word 0x00000618 +_021DEB1C: .word 0x0000585C +_021DEB20: .word 0x00005980 + + thumb_func_start MOD14_021DEB24 +MOD14_021DEB24: ; 0x021DEB24 + lsl r1, r0, #1 + ldr r0, _021DEB30 ; =0x021E6570 + ldrh r0, [r0, r1] + add r0, #0xb + bx lr + nop +_021DEB30: .word 0x021E6570 + + thumb_func_start MOD14_021DEB34 +MOD14_021DEB34: ; 0x021DEB34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r0, [sp, #0x10] + mov r0, #0x1e + lsl r0, r0, #4 + add r6, r3, #0 + mul r6, r0 + mov r0, #0x28 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x48] + mov r4, #0 + ldr r7, [sp, #0x4c] + str r1, [sp, #0x14] + str r2, [sp, #0x18] + add r6, #0x58 + str r4, [sp, #0x24] + str r0, [sp, #0x20] +_021DEB56: + mov r0, #0 + str r0, [sp, #0x28] + add r5, r0, #0 +_021DEB5C: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r0, [r0, #0x40] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0206B5E4 + mov r1, #5 + mov r2, #0 + str r0, [sp, #0x2c] + bl FUN_020672BC + cmp r0, #0 + beq _021DEBA0 + add r0, r4, #0 + bl MOD14_021DEB24 + mov r1, #2 + str r1, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + ldr r3, [sp, #0x10] + ldr r2, _021DEBC8 ; =0x0000585C + str r7, [sp, #0xc] + ldr r2, [r3, r2] + ldr r0, [sp, #0x14] + add r2, #0x70 + add r3, r2, r5 + ldr r2, [sp, #0x20] + ldr r1, [sp, #0x2c] + add r2, r2, r3 + ldr r3, [sp, #0x1c] + bl MOD14_021E0940 +_021DEBA0: + ldr r0, [sp, #0x28] + add r7, #0x34 + add r0, r0, #1 + add r4, r4, #1 + add r6, #0x10 + add r5, #0x18 + str r0, [sp, #0x28] + cmp r0, #6 + blo _021DEB5C + ldr r0, [sp, #0x1c] + add r0, #0x18 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #5 + blo _021DEB56 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEBC8: .word 0x0000585C + + thumb_func_start MOD14_021DEBCC +MOD14_021DEBCC: ; 0x021DEBCC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x18 + mul r0, r2 + add r5, r1, #0 + str r0, [sp, #8] +_021DEBDE: + ldr r1, [sp] + ldr r0, [sp, #8] + mov r7, #0 + add r4, r1, r0 +_021DEBE6: + ldr r0, [r5] + cmp r0, #0 + beq _021DEC0A + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0xc + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x68] + str r0, [sp, #0xc] + ldr r0, [r5] + bl FUN_02020044 +_021DEC0A: + add r7, r7, #1 + add r5, #0x34 + add r4, r4, #4 + cmp r7, #6 + blt _021DEBE6 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021DEBDE + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DEC24 +MOD14_021DEC24: ; 0x021DEC24 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x18 + mul r0, r2 + add r5, r1, #0 + str r0, [sp, #8] +_021DEC36: + ldr r1, [sp] + ldr r0, [sp, #8] + mov r7, #0 + add r4, r1, r0 +_021DEC3E: + ldr r0, [r5] + cmp r0, #0 + beq _021DEC62 + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0xc + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x38] + str r0, [sp, #0xc] + ldr r0, [r5] + bl FUN_02020044 +_021DEC62: + add r7, r7, #1 + add r5, #0x34 + add r4, r4, #4 + cmp r7, #6 + blt _021DEC3E + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021DEC36 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DEC7C +MOD14_021DEC7C: ; 0x021DEC7C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #0x10] + mov r0, #0x28 + add r5, r1, #0 + str r0, [sp] +_021DEC8E: + ldr r0, [sp] + mov r6, #0 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r4, r6, #0 +_021DEC98: + ldr r0, _021DECD0 ; =0x0000585C + ldr r0, [r7, r0] + add r0, #0x70 + add r0, r0, r4 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [r5] + cmp r0, #0 + beq _021DECB0 + add r1, sp, #8 + bl FUN_02020044 +_021DECB0: + add r6, r6, #1 + add r5, #0x34 + add r4, #0x18 + cmp r6, #6 + blt _021DEC98 + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021DEC8E + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DECD0: .word 0x0000585C + + thumb_func_start MOD14_021DECD4 +MOD14_021DECD4: ; 0x021DECD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + add r0, r2, #0 + add r7, r3, #0 + str r1, [sp, #4] + str r2, [sp, #8] + cmp r0, #0x20 + blo _021DECF0 + mov r1, #2 + ldr r0, [sp] + lsl r1, r1, #0xa + add r0, r0, r1 + str r0, [sp] +_021DECF0: + mov r0, #0 + mov ip, r0 + ldr r0, [sp, #0x28] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + orr r0, r7 + mov lr, r0 +_021DECFE: + ldr r0, [sp, #8] + mov r2, #0 + lsl r0, r0, #0x1b + lsr r1, r0, #0x1a + ldr r0, [sp] + add r4, r2, #0 + add r3, r0, r1 + mov r0, ip + lsl r1, r0, #1 + ldr r0, [sp, #4] + add r6, r0, r1 +_021DED14: + lsl r0, r4, #1 + ldrh r1, [r6, r0] + mov r0, #3 + lsl r0, r0, #0xa + add r5, r1, #0 + and r5, r0 + ldr r0, _021DEDCC ; =0x000003FF + add r2, r2, #1 + and r0, r1 + add r0, r0, r7 + add r1, r5, #0 + orr r1, r0 + ldr r0, [sp, #0xc] + add r4, #0x15 + orr r0, r1 + strh r0, [r3] + add r3, #0x40 + cmp r2, #0x14 + blo _021DED14 + mov r1, lr + lsl r1, r1, #0x10 + mov r0, #0 + lsr r1, r1, #0x10 +_021DED42: + add r0, r0, #1 + strh r1, [r3] + add r3, #0x40 + cmp r0, #4 + blo _021DED42 + ldr r0, [sp, #8] + add r1, r0, #1 + mov r0, #0x3f + and r0, r1 + str r0, [sp, #8] + bne _021DED62 + mov r1, #2 + ldr r0, [sp] + lsl r1, r1, #0xa + sub r0, r0, r1 + str r0, [sp] +_021DED62: + ldr r0, [sp, #8] + cmp r0, #0x20 + bne _021DED72 + mov r1, #2 + ldr r0, [sp] + lsl r1, r1, #0xa + add r0, r0, r1 + str r0, [sp] +_021DED72: + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #0x15 + blo _021DECFE + mov r1, lr + mov r3, #2 + mov r0, #0 + lsl r1, r1, #0x10 + lsl r3, r3, #0xa + lsr r5, r1, #0x10 + add r7, r0, #0 + mov r4, #0x3f + add r2, r3, #0 +_021DED8E: + ldr r1, [sp, #8] + lsl r1, r1, #0x1b + lsr r6, r1, #0x1a + ldr r1, [sp] + add r1, r1, r6 + add r6, r7, #0 +_021DED9A: + add r6, r6, #1 + strh r5, [r1] + add r1, #0x40 + cmp r6, #0x18 + blo _021DED9A + ldr r1, [sp, #8] + add r1, r1, #1 + and r1, r4 + str r1, [sp, #8] + bne _021DEDB4 + ldr r1, [sp] + sub r1, r1, r3 + str r1, [sp] +_021DEDB4: + ldr r1, [sp, #8] + cmp r1, #0x20 + bne _021DEDC0 + ldr r1, [sp] + add r1, r1, r2 + str r1, [sp] +_021DEDC0: + add r0, r0, #1 + cmp r0, #2 + blo _021DED8E + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEDCC: .word 0x000003FF + + thumb_func_start MOD14_021DEDD0 +MOD14_021DEDD0: ; 0x021DEDD0 + push {r4, lr} + add r2, r0, #0 + add r0, #0xa0 + strh r1, [r0] + add r0, r2, #0 + mov r3, #0 + add r0, #0xa4 + strb r3, [r0] + ldr r0, _021DEE00 ; =0x00005980 + add r4, r2, #0 + ldrb r3, [r2, #2] + ldr r0, [r2, r0] + ldr r2, _021DEE04 ; =0x00000618 + add r4, #0xa8 + mul r2, r3 + add r3, r4, r2 + mov r2, #0x34 + mul r2, r1 + add r1, r3, r2 + mov r2, #1 + bl MOD14_021E0C20 + pop {r4, pc} + nop +_021DEE00: .word 0x00005980 +_021DEE04: .word 0x00000618 + + thumb_func_start MOD14_021DEE08 +MOD14_021DEE08: ; 0x021DEE08 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r1, [r5, #2] + ldr r0, _021DEE9C ; =0x00000618 + add r2, r5, #0 + add r2, #0xa8 + mul r0, r1 + add r4, r2, r0 + add r0, r5, #0 + add r0, #0xa0 + ldrh r1, [r0] + mov r0, #0x34 + add r6, r1, #0 + mul r6, r0 + add r0, r5, #0 + add r0, #0xa4 + ldrb r0, [r0] + cmp r0, #0 + beq _021DEE34 + cmp r0, #1 + beq _021DEE86 + b _021DEE98 +_021DEE34: + ldr r0, _021DEEA0 ; =0x00005980 + add r1, r4, r6 + ldr r0, [r5, r0] + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DEE98 + ldr r0, _021DEEA4 ; =0x0000598C + ldr r0, [r5, r0] + bl MOD14_021DDEDC + add r7, r0, #0 + bl MOD14_021DA1B8 + cmp r0, #0 + beq _021DEE98 + add r0, r7, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + ldr r0, _021DEEA0 ; =0x00005980 + beq _021DEE6E + ldr r0, [r5, r0] + add r1, r4, r6 + mov r2, #1 + bl MOD14_021E0908 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DEE6E: + ldr r0, [r5, r0] + add r1, r4, r6 + mov r2, #2 + bl MOD14_021E0C20 + add r0, r5, #0 + add r0, #0xa4 + ldrb r0, [r0] + add r5, #0xa4 + add r0, r0, #1 + strb r0, [r5] + b _021DEE98 +_021DEE86: + ldr r0, _021DEEA0 ; =0x00005980 + add r1, r4, r6 + ldr r0, [r5, r0] + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DEE98 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DEE98: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DEE9C: .word 0x00000618 +_021DEEA0: .word 0x00005980 +_021DEEA4: .word 0x0000598C + + thumb_func_start MOD14_021DEEA8 +MOD14_021DEEA8: ; 0x021DEEA8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021DEEEC ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC484 + mov r6, #0 + add r7, r5, #0 + str r0, [sp] + add r4, r6, #0 + add r7, #0xa8 +_021DEEBE: + ldrb r2, [r5, #2] + ldr r0, _021DEEF0 ; =0x00000618 + add r1, r2, #0 + mul r1, r0 + add r0, r5, r1 + add r0, r4, r0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DEEE0 + ldr r0, _021DEEF4 ; =0x00005980 + add r1, r7, r1 + ldr r0, [r5, r0] + ldr r2, [sp] + add r1, r1, r4 + bl MOD14_021E0B54 +_021DEEE0: + add r6, r6, #1 + add r4, #0x34 + cmp r6, #0x1e + blt _021DEEBE + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEEEC: .word 0x00005988 +_021DEEF0: .word 0x00000618 +_021DEEF4: .word 0x00005980 + + thumb_func_start MOD14_021DEEF8 +MOD14_021DEEF8: ; 0x021DEEF8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x34 + mul r4, r0 + add r3, r5, #0 + ldrb r1, [r5, #2] + ldr r0, _021DEF40 ; =0x00000618 + add r3, #0xa8 + mul r0, r1 + add r1, r3, r0 + ldr r0, [r1, r4] + cmp r0, #0 + beq _021DEF3E + ldr r0, _021DEF44 ; =0x00005980 + add r1, r1, r4 + ldr r0, [r5, r0] + bl MOD14_021E0BA8 + ldr r0, _021DEF48 ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, _021DEF44 ; =0x00005980 + add r1, r5, #0 + ldr r0, [r5, r0] + ldrb r5, [r5, #2] + ldr r3, _021DEF40 ; =0x00000618 + add r1, #0xa8 + mul r3, r5 + add r1, r1, r3 + add r1, r1, r4 + bl MOD14_021E0B54 +_021DEF3E: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DEF40: .word 0x00000618 +_021DEF44: .word 0x00005980 +_021DEF48: .word 0x00005988 + + thumb_func_start MOD14_021DEF4C +MOD14_021DEF4C: ; 0x021DEF4C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DEF88 ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC3E0 + add r4, r0, #0 + ldr r0, _021DEF88 ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC45C + add r2, r0, #0 + add r3, r5, #0 + ldrb r1, [r5, #2] + ldr r0, _021DEF8C ; =0x00000618 + add r3, #0xa8 + mul r0, r1 + add r3, r3, r0 + mov r0, #0x34 + add r1, r4, #0 + mul r1, r0 + ldr r0, [r3, r1] + cmp r0, #0 + beq _021DEF86 + ldr r0, _021DEF90 ; =0x00005980 + add r1, r3, r1 + ldr r0, [r5, r0] + bl MOD14_021E0BA4 +_021DEF86: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DEF88: .word 0x00005988 +_021DEF8C: .word 0x00000618 +_021DEF90: .word 0x00005980 + + thumb_func_start MOD14_021DEF94 +MOD14_021DEF94: ; 0x021DEF94 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + add r0, sp, #0xc + str r0, [sp] + ldr r0, _021DF030 ; =0x00005988 + add r1, sp, #0x18 + ldr r0, [r4, r0] + add r2, sp, #0x14 + add r3, sp, #0x10 + bl MOD14_021DC4A4 + mov r5, #0 + str r5, [sp, #4] +_021DEFB0: + add r0, r4, #0 + str r0, [sp, #8] + add r0, #0xa8 + mov r7, #0 + str r0, [sp, #8] +_021DEFBA: + ldrb r2, [r4, #2] + ldr r0, _021DF034 ; =0x00000618 + add r1, r2, #0 + mul r1, r0 + add r0, r4, r1 + add r0, r5, r0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DF018 + ldr r6, [sp, #0x18] + ldr r2, [sp, #0x14] + sub r3, r7, r6 + sub r2, r2, r6 + ldr r0, [sp, #0x10] + cmp r3, r2 + bhi _021DEFE0 + mov r6, #1 + b _021DEFE2 +_021DEFE0: + mov r6, #0 +_021DEFE2: + ldr r2, [sp, #4] + sub r3, r2, r0 + ldr r2, [sp, #0xc] + sub r0, r2, r0 + cmp r3, r0 + bhi _021DEFF2 + mov r0, #1 + b _021DEFF4 +_021DEFF2: + mov r0, #0 +_021DEFF4: + tst r0, r6 + ldr r0, _021DF038 ; =0x00005980 + beq _021DF00A + ldr r2, [sp, #8] + ldr r0, [r4, r0] + add r1, r2, r1 + add r1, r1, r5 + mov r2, #1 + bl MOD14_021E0C5C + b _021DF018 +_021DF00A: + ldr r2, [sp, #8] + ldr r0, [r4, r0] + add r1, r2, r1 + add r1, r1, r5 + mov r2, #0 + bl MOD14_021E0C5C +_021DF018: + add r7, r7, #1 + add r5, #0x34 + cmp r7, #6 + blo _021DEFBA + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blo _021DEFB0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021DF030: .word 0x00005988 +_021DF034: .word 0x00000618 +_021DF038: .word 0x00005980 + + thumb_func_start MOD14_021DF03C +MOD14_021DF03C: ; 0x021DF03C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r7, r5, #0 + add r4, r6, #0 + add r7, #0xa8 +_021DF048: + ldrb r2, [r5, #2] + ldr r0, _021DF074 ; =0x00000618 + add r1, r2, #0 + mul r1, r0 + add r0, r5, r1 + add r0, r4, r0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DF06A + ldr r0, _021DF078 ; =0x00005980 + add r1, r7, r1 + ldr r0, [r5, r0] + add r1, r1, r4 + mov r2, #0 + bl MOD14_021E0C5C +_021DF06A: + add r6, r6, #1 + add r4, #0x34 + cmp r6, #0x1e + blt _021DF048 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DF074: .word 0x00000618 +_021DF078: .word 0x00005980 + + thumb_func_start MOD14_021DF07C +MOD14_021DF07C: ; 0x021DF07C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _021DF128 ; =0x00000794 + add r6, r1, #0 + str r6, [r5, r0] + add r4, r2, #0 + sub r0, r0, #4 + str r4, [r5, r0] + add r0, r6, #0 + str r3, [r5] + bl MOD14_021DDD58 + ldr r1, _021DF12C ; =0x00000758 + str r0, [r5, r1] + add r0, r6, #0 + bl MOD14_021DDD60 + ldr r1, _021DF130 ; =0x0000075C + str r0, [r5, r1] + add r0, r6, #0 + bl MOD14_021DDD50 + str r0, [r5, #0x48] + add r0, r4, #0 + bl MOD14_021DC3CC + ldr r1, _021DF134 ; =0x00000785 + strb r0, [r5, r1] + add r0, r4, #0 + bl MOD14_021DC3D0 + ldr r1, _021DF138 ; =0x00000789 + strb r0, [r5, r1] + add r0, r4, #0 + bl MOD14_021DC3D8 + ldr r1, _021DF13C ; =0x0000078A + strb r0, [r5, r1] + add r0, r4, #0 + bl MOD14_021DC3E8 + ldr r1, _021DF140 ; =0x0000078B + add r3, r5, #0 + strb r0, [r5, r1] + mov r2, #0 + str r2, [r5, #4] + str r2, [r5, #8] + str r2, [r5, #0xc] + add r0, r1, #0 + str r2, [r5, #0x10] + sub r0, #0x37 + str r2, [r5, r0] + add r0, r1, #3 + mov r2, #1 + strb r2, [r5, r0] + mov r0, #0xa + str r0, [sp] + mov r0, #0x12 + mov r1, #0xd + add r3, #0x1c + bl FUN_02006C30 + str r0, [r5, #0x14] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0xe + mov r2, #1 + add r3, #0x20 + bl FUN_02006C5C + str r0, [r5, #0x18] + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021DF11C + ldr r0, [r5, #0x18] + cmp r0, #0 + bne _021DF122 +_021DF11C: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021DF122: + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DF128: .word 0x00000794 +_021DF12C: .word 0x00000758 +_021DF130: .word 0x0000075C +_021DF134: .word 0x00000785 +_021DF138: .word 0x00000789 +_021DF13C: .word 0x0000078A +_021DF140: .word 0x0000078B + + thumb_func_start MOD14_021DF144 +MOD14_021DF144: ; 0x021DF144 + push {r4, r5, r6, lr} + sub sp, #0x38 + add r4, r0, #0 + add r0, #0x24 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x24 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0xc + bl FUN_02006AE4 + ldr r0, _021DF310 ; =0x00000785 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _021DF178 + mov r5, #1 + b _021DF17A +_021DF178: + mov r5, #2 +_021DF17A: + ldr r0, _021DF314 ; =0x00000794 + ldr r0, [r4, r0] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #0x20] + add r1, r4, #0 + str r0, [sp] + str r5, [sp, #4] + ldr r3, [r4, #0x1c] + add r0, sp, #0x14 + add r1, #0x24 + bl MOD14_021DDDB4 + ldr r2, _021DF318 ; =0x00000764 + add r3, r4, #0 + add r1, r2, #4 + add r0, r4, r2 + add r2, #0x21 + add r1, r4, r1 + add r2, r4, r2 + bl MOD14_021E0264 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r3, _021DF318 ; =0x00000764 + ldr r0, [r4] + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r1, sp, #0x14 + bl MOD14_021DDDD4 + str r0, [r4, #4] + mov r0, #0x2a + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r3, _021DF318 ; =0x00000764 + ldr r0, [r4] + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r1, sp, #0x14 + add r3, #0x18 + bl MOD14_021DDDD4 + str r0, [r4, #8] + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3CC + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3C4 + add r6, r0, #0 + cmp r6, #4 + beq _021DF1FC + mov r2, #0x6c + mov r5, #0xec + b _021DF200 +_021DF1FC: + mov r2, #0x40 + mov r5, #0xc0 +_021DF200: + mov r1, #2 + add r0, sp, #0x34 + strb r1, [r0] + mov r0, #0x2b + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + mov r3, #0x14 + bl MOD14_021DDDD4 + str r0, [r4, #0xc] + mov r0, #0x2b + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + add r2, r5, #0 + mov r3, #0x14 + bl MOD14_021DDDD4 + str r0, [r4, #0x10] + ldr r0, [r4, #8] + mov r1, #5 + bl FUN_02020130 + ldr r0, [r4, #8] + mov r1, #2 + bl FUN_02020238 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3CC + add r5, r0, #0 + cmp r5, #2 + ldr r0, [r4, #0xc] + beq _021DF262 + mov r1, #6 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #7 + bl FUN_02020130 + b _021DF270 +_021DF262: + mov r1, #8 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #9 + bl FUN_02020130 +_021DF270: + cmp r5, #0 + beq _021DF27C + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_020200A0 +_021DF27C: + cmp r6, #3 + beq _021DF2C0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3F4 + cmp r0, #1 + ldr r0, [r4, #4] + bne _021DF2A6 + mov r1, #0 + bl FUN_02020130 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + mov r2, #0x1e + bl MOD14_021E08E4 + mov r1, #0 + b _021DF2B4 +_021DF2A6: + mov r1, #2 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021DF324 + mov r1, #1 +_021DF2B4: + ldr r0, _021DF31C ; =0x0000078C + strb r1, [r4, r0] + ldr r0, _021DF320 ; =0x0000078D + mov r1, #0 + strb r1, [r4, r0] + b _021DF2F8 +_021DF2C0: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC538 + cmp r0, #0 + ldr r0, [r4, #4] + bne _021DF2DA + mov r1, #0 + bl FUN_02020130 + mov r1, #0 + b _021DF2E2 +_021DF2DA: + mov r1, #2 + bl FUN_02020130 + mov r1, #1 +_021DF2E2: + ldr r0, _021DF320 ; =0x0000078D + mov r2, #0x1e + strb r1, [r4, r0] + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + bl MOD14_021E08E4 + ldr r0, _021DF31C ; =0x0000078C + mov r1, #0 + strb r1, [r4, r0] +_021DF2F8: + ldr r0, _021DF314 ; =0x00000794 + ldr r0, [r4, r0] + bl MOD14_021DDD78 + mov r1, #0x76 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD14_021E0008 + add sp, #0x38 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DF310: .word 0x00000785 +_021DF314: .word 0x00000794 +_021DF318: .word 0x00000764 +_021DF31C: .word 0x0000078C +_021DF320: .word 0x0000078D + + thumb_func_start MOD14_021DF324 +MOD14_021DF324: ; 0x021DF324 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r5, #0 + str r0, [r2] + ldr r0, [r5, #0x48] + add r1, #0x4c + mov r2, #1 + bl MOD14_021E08E4 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC458 + add r4, r0, #0 + ldr r0, [r5, #4] + bl FUN_02020240 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _021DF398 ; =0x000004D8 + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x4c + str r0, [sp, #0xc] + ldr r3, [sp, #0x14] + ldr r2, [sp, #0x10] + asr r3, r3, #0xc + ldr r0, [r5, #0x48] + asr r2, r2, #0xc + add r3, r3, #4 + bl MOD14_021E0940 + ldr r1, _021DF39C ; =0x00000664 + mov r0, #0 + str r0, [r5, r1] + add r0, r1, #4 + ldr r2, _021DF3A0 ; =0xFFFFC000 + add r1, #0xf0 + str r2, [r5, r0] + mov r2, #1 + ldr r0, _021DF3A4 ; =0x0000078C + str r2, [r5, r1] + strb r2, [r5, r0] + add sp, #0x1c + pop {r4, r5, pc} + nop +_021DF398: .word 0x000004D8 +_021DF39C: .word 0x00000664 +_021DF3A0: .word 0xFFFFC000 +_021DF3A4: .word 0x0000078C + + thumb_func_start MOD14_021DF3A8 +MOD14_021DF3A8: ; 0x021DF3A8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DF3BA + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x14] +_021DF3BA: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021DF3C8 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x18] +_021DF3C8: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021DF3D6 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #4] +_021DF3D6: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DF3E4 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #8] +_021DF3E4: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021DF3F2 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #0xc] +_021DF3F2: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DF400 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #0x10] +_021DF400: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DF404 +MOD14_021DF404: ; 0x021DF404 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0 + add r5, r1, #0 + str r0, [r2] + str r0, [r5] + ldr r0, _021DF47C ; =0x00000785 + ldrb r1, [r4, r0] + cmp r1, #4 + bhi _021DF478 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DF424: ; jump table + .short _021DF42E - _021DF424 - 2 ; case 0 + .short _021DF478 - _021DF424 - 2 ; case 1 + .short _021DF458 - _021DF424 - 2 ; case 2 + .short _021DF46C - _021DF424 - 2 ; case 3 + .short _021DF46C - _021DF424 - 2 ; case 4 +_021DF42E: + add r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021DF478 + add r0, #0xb + ldr r0, [r4, r0] + bl MOD14_021DC3D0 + ldr r1, _021DF480 ; =0x00000789 + ldrsb r1, [r4, r1] + cmp r1, #0 + bne _021DF44A + cmp r0, #5 + beq _021DF452 +_021DF44A: + cmp r1, #5 + bne _021DF478 + cmp r0, #0 + bne _021DF478 +_021DF452: + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DF458: + add r0, r0, #1 + ldrb r0, [r4, r0] + add r0, #0xfd + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _021DF478 + mov r0, #1 + str r0, [r2] + pop {r3, r4, r5, pc} +_021DF46C: + add r0, r0, #1 + ldrb r0, [r4, r0] + cmp r0, #2 + bne _021DF478 + mov r0, #1 + str r0, [r2] +_021DF478: + pop {r3, r4, r5, pc} + nop +_021DF47C: .word 0x00000785 +_021DF480: .word 0x00000789 + + thumb_func_start MOD14_021DF484 +MOD14_021DF484: ; 0x021DF484 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r2, _021DF584 ; =0x0000076C + add r5, r0, #0 + add r1, r2, #4 + add r0, r5, r2 + add r2, #0x1a + add r1, r5, r1 + add r2, r5, r2 + add r3, r5, #0 + bl MOD14_021E0264 + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD14_021DF404 + ldr r0, _021DF588 ; =0x00000786 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _021DF4B6 + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_020200A0 +_021DF4B6: + ldr r1, _021DF58C ; =0x00000764 + ldr r0, [r5, r1] + lsl r2, r0, #0xc + add r0, r1, #0 + add r0, #0x10 + str r2, [r5, r0] + add r0, r1, #4 + ldr r0, [r5, r0] + lsl r2, r0, #0xc + add r0, r1, #0 + add r0, #0x14 + str r2, [r5, r0] + add r0, r1, #0 + add r0, #8 + ldr r6, [r5, r0] + add r0, r1, #0 + add r0, #0xc + ldr r2, [r5, r0] + ldr r7, [sp, #4] + lsl r4, r6, #0xc + lsl r0, r2, #0xc + cmp r7, #0 + bne _021DF4EC + add r1, #0x10 + ldr r1, [r5, r1] + sub r1, r4, r1 + b _021DF514 +_021DF4EC: + add r3, r1, #0 + add r3, #0x10 + ldr r3, [r5, r3] + cmp r4, r3 + ble _021DF506 + mov r3, #0x11 + ldr r1, [r5, r1] + lsl r3, r3, #4 + sub r3, r3, r6 + sub r1, #0x46 + add r1, r3, r1 + neg r1, r1 + b _021DF512 +_021DF506: + ldr r3, [r5, r1] + mov r1, #0x11 + lsl r1, r1, #4 + sub r1, r1, r3 + sub r6, #0x46 + add r1, r1, r6 +_021DF512: + lsl r1, r1, #0xc +_021DF514: + ldr r3, [sp] + cmp r3, #0 + bne _021DF522 + ldr r2, _021DF590 ; =0x00000778 + ldr r2, [r5, r2] + sub r4, r0, r2 + b _021DF548 +_021DF522: + ldr r4, _021DF590 ; =0x00000778 + ldr r6, [r5, r4] + cmp r0, r6 + ble _021DF53A + mov r0, #0xd0 + sub r4, #0x10 + sub r2, r0, r2 + ldr r0, [r5, r4] + add r0, #0x18 + add r0, r2, r0 + neg r4, r0 + b _021DF546 +_021DF53A: + sub r4, #0x10 + ldr r4, [r5, r4] + mov r0, #0xd0 + sub r0, r0, r4 + add r2, #0x18 + add r4, r0, r2 +_021DF546: + lsl r4, r4, #0xc +_021DF548: + cmp r7, #0 + bne _021DF550 + cmp r3, #0 + beq _021DF554 +_021DF550: + mov r6, #0xc + b _021DF556 +_021DF554: + mov r6, #6 +_021DF556: + add r0, r1, #0 + add r1, r6, #0 + bl _s32_div_f + ldr r1, _021DF594 ; =0x0000077C + str r0, [r5, r1] + add r0, r4, #0 + add r1, r6, #0 + bl _s32_div_f + mov r1, #0x1e + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #7 + strb r6, [r5, r0] + ldr r0, _021DF598 ; =MOD14_021DF5B0 + add r1, r5, #0 + mov r2, #0 + bl MOD14_021DDD40 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DF584: .word 0x0000076C +_021DF588: .word 0x00000786 +_021DF58C: .word 0x00000764 +_021DF590: .word 0x00000778 +_021DF594: .word 0x0000077C +_021DF598: .word MOD14_021DF5B0 + + thumb_func_start MOD14_021DF59C +MOD14_021DF59C: ; 0x021DF59C + ldr r1, _021DF5AC ; =0x00000787 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021DF5A8 + mov r0, #1 + bx lr +_021DF5A8: + mov r0, #0 + bx lr + .align 2, 0 +_021DF5AC: .word 0x00000787 + + thumb_func_start MOD14_021DF5B0 +MOD14_021DF5B0: ; 0x021DF5B0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + ldr r0, _021DF72C ; =0x00000787 + str r1, [sp, #8] + ldrb r2, [r4, r0] + cmp r2, #0 + beq _021DF68A + add r1, r0, #0 + sub r1, #0x13 + ldr r2, [r4, r1] + add r1, r0, #0 + sub r1, #0xb + ldr r1, [r4, r1] + add r2, r2, r1 + add r1, r0, #0 + sub r1, #0x13 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #0xb + ldr r1, [r4, r1] + cmp r1, #0 + ble _021DF5F8 + add r1, r0, #0 + sub r1, #0x13 + ldr r2, [r4, r1] + mov r1, #0x11 + lsl r1, r1, #0x10 + cmp r2, r1 + ble _021DF5F8 + ldr r1, _021DF730 ; =0x00156000 + sub r0, #0x13 + sub r1, r1, r2 + str r1, [r4, r0] +_021DF5F8: + ldr r1, _021DF734 ; =0x0000077C + ldr r0, [r4, r1] + cmp r0, #0 + bge _021DF61A + add r0, r1, #0 + sub r0, #8 + ldr r2, [r4, r0] + mov r0, #0x46 + lsl r0, r0, #0xc + cmp r2, r0 + bge _021DF61A + sub r2, r0, r2 + mov r0, #0x11 + lsl r0, r0, #0x10 + sub r0, r0, r2 + sub r1, #8 + str r0, [r4, r1] +_021DF61A: + ldr r1, _021DF738 ; =0x00000778 + add r0, r1, #0 + add r0, #8 + ldr r2, [r4, r1] + ldr r0, [r4, r0] + add r0, r2, r0 + str r0, [r4, r1] + add r0, r1, #0 + add r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + ble _021DF644 + mov r0, #0xd + ldr r2, [r4, r1] + lsl r0, r0, #0x10 + cmp r2, r0 + ble _021DF644 + mov r0, #0x2e + lsl r0, r0, #0xe + sub r0, r0, r2 + str r0, [r4, r1] +_021DF644: + mov r1, #0x1e + lsl r1, r1, #6 + ldr r0, [r4, r1] + cmp r0, #0 + bge _021DF666 + add r0, r1, #0 + sub r0, #8 + ldr r2, [r4, r0] + ldr r0, _021DF73C ; =0xFFFE8000 + cmp r2, r0 + bge _021DF666 + sub r2, r0, r2 + mov r0, #0xd + lsl r0, r0, #0x10 + sub r0, r0, r2 + sub r1, #8 + str r0, [r4, r1] +_021DF666: + ldr r0, _021DF740 ; =0x00000774 + ldr r1, [r4, r0] + add r0, r0, #4 + str r1, [sp] + ldr r0, [r4, r0] + add r1, sp, #0 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF72C ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r4, r5, pc} +_021DF68A: + add r2, r0, #0 + sub r2, #0x1b + ldr r2, [r4, r2] + sub r0, #0x17 + lsl r2, r2, #0xc + str r2, [sp] + ldr r0, [r4, r0] + lsl r0, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021E0320 + ldr r0, _021DF744 ; =0x0000076C + add r1, r0, #0 + ldr r2, [r4, r0] + sub r1, #8 + str r2, [r4, r1] + add r1, r0, #4 + ldr r2, [r4, r1] + sub r1, r0, #4 + str r2, [r4, r1] + add r1, r0, #0 + add r1, #0x1a + ldrb r2, [r4, r1] + add r1, r0, #0 + add r1, #0x19 + strb r2, [r4, r1] + add r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021DC3D0 + ldr r1, _021DF748 ; =0x00000789 + strb r0, [r4, r1] + add r0, r1, #7 + ldr r0, [r4, r0] + bl MOD14_021DC3D8 + ldr r1, _021DF74C ; =0x0000078A + strb r0, [r4, r1] + add r0, r1, #6 + ldr r0, [r4, r0] + bl MOD14_021DC3E8 + ldr r1, _021DF750 ; =0x0000078B + strb r0, [r4, r1] + sub r0, r1, #5 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DF6F8 + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_020200A0 +_021DF6F8: + ldr r0, _021DF754 ; =0x00000786 + ldrb r0, [r4, r0] + cmp r0, #2 + ldr r0, [r4, #0xc] + beq _021DF712 + mov r1, #6 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #7 + bl FUN_02020130 + b _021DF720 +_021DF712: + mov r1, #8 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #9 + bl FUN_02020130 +_021DF720: + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r4, r5, pc} + nop +_021DF72C: .word 0x00000787 +_021DF730: .word 0x00156000 +_021DF734: .word 0x0000077C +_021DF738: .word 0x00000778 +_021DF73C: .word 0xFFFE8000 +_021DF740: .word 0x00000774 +_021DF744: .word 0x0000076C +_021DF748: .word 0x00000789 +_021DF74C: .word 0x0000078A +_021DF750: .word 0x0000078B +_021DF754: .word 0x00000786 + + thumb_func_start MOD14_021DF758 +MOD14_021DF758: ; 0x021DF758 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r1, #2 + mov r0, #0x1e + lsl r1, r1, #0xc + lsl r0, r0, #6 + str r1, [r4, r0] + add r1, r0, #0 + sub r1, #0x18 + ldr r2, [r4, r1] + add r1, r0, #0 + add r2, #0xc + sub r1, #0x10 + str r2, [r4, r1] + add r1, r0, #7 + mov r2, #6 + strb r2, [r4, r1] + mov r1, #0 + add r0, r0, #4 + strb r1, [r4, r0] + add r0, r4, #0 + bl MOD14_021E03CC + ldr r0, _021DF79C ; =MOD14_021DF7B4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + pop {r4, pc} + nop +_021DF79C: .word MOD14_021DF7B4 + + thumb_func_start MOD14_021DF7A0 +MOD14_021DF7A0: ; 0x021DF7A0 + ldr r1, _021DF7B0 ; =0x00000784 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _021DF7AC + mov r0, #1 + bx lr +_021DF7AC: + mov r0, #0 + bx lr + .align 2, 0 +_021DF7B0: .word 0x00000784 + + thumb_func_start MOD14_021DF7B4 +MOD14_021DF7B4: ; 0x021DF7B4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + 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] + ldr r1, _021DF888 ; =0x00000784 + str r0, [r3] + ldrb r0, [r4, r1] + cmp r0, #0 + beq _021DF7E0 + cmp r0, #1 + beq _021DF83C + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DF7E0: + add r0, r1, #0 + mov r3, #0 + add r0, #0xa + strb r3, [r4, r0] + add r0, r1, #3 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DF80E + sub r0, r1, #4 + ldr r3, [sp, #4] + ldr r0, [r4, r0] + add r1, r2, #0 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF88C ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF80E: + sub r1, #0x14 + ldr r0, [r4, r1] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021E0554 + ldr r0, _021DF88C ; =0x00000787 + mov r1, #6 + strb r1, [r4, r0] + sub r1, r0, #3 + ldrb r1, [r4, r1] + sub r0, r0, #3 + add r1, r1, #1 + strb r1, [r4, r0] +_021DF83C: + ldr r0, _021DF88C ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DF862 + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021E0320 + ldr r0, _021DF88C ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF862: + sub r0, #0x1f + ldr r0, [r4, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF888 ; =0x00000784 + mov r1, #0xff + strb r1, [r4, r0] + mov r1, #1 + add r0, #0xa + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DF888: .word 0x00000784 +_021DF88C: .word 0x00000787 + + thumb_func_start MOD14_021DF890 +MOD14_021DF890: ; 0x021DF890 + add r1, r0, #0 + mov r2, #2 + mov r0, #0x1e + lsl r2, r2, #0xc + lsl r0, r0, #6 + str r2, [r1, r0] + add r2, r0, #0 + sub r2, #0x18 + ldr r3, [r1, r2] + add r2, r0, #0 + add r3, #0xc + sub r2, #0x10 + str r3, [r1, r2] + add r2, r0, #7 + mov r3, #6 + strb r3, [r1, r2] + ldr r3, _021DF8BC ; =MOD14_021DDD40 + mov r2, #0 + add r0, r0, #4 + strb r2, [r1, r0] + ldr r0, _021DF8C0 ; =MOD14_021DF8F8 + bx r3 + .align 2, 0 +_021DF8BC: .word MOD14_021DDD40 +_021DF8C0: .word MOD14_021DF8F8 + + thumb_func_start MOD14_021DF8C4 +MOD14_021DF8C4: ; 0x021DF8C4 + push {r4, lr} + ldr r1, _021DF8F0 ; =0x00000784 + add r4, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0xff + bne _021DF8EC + bl MOD14_021E0588 + ldr r2, _021DF8F4 ; =0x00000754 + add r1, r4, #0 + ldr r0, [r4, #0x48] + ldr r2, [r4, r2] + add r1, #0x4c + bl MOD14_021E08E4 + ldr r0, _021DF8F4 ; =0x00000754 + mov r1, #0 + str r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_021DF8EC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DF8F0: .word 0x00000784 +_021DF8F4: .word 0x00000754 + + thumb_func_start MOD14_021DF8F8 +MOD14_021DF8F8: ; 0x021DF8F8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + 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] + ldr r1, _021DF9D4 ; =0x00000784 + str r0, [r3] + ldrb r0, [r4, r1] + cmp r0, #0 + beq _021DF924 + cmp r0, #1 + beq _021DF980 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DF924: + add r0, r1, #0 + mov r3, #0 + add r0, #0xa + strb r3, [r4, r0] + add r0, r1, #3 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DF952 + sub r0, r1, #4 + ldr r3, [sp, #4] + ldr r0, [r4, r0] + add r1, r2, #0 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF9D8 ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF952: + sub r1, #0x14 + ldr r0, [r4, r1] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021E0714 + ldr r0, _021DF9D8 ; =0x00000787 + mov r1, #6 + strb r1, [r4, r0] + sub r1, r0, #3 + ldrb r1, [r4, r1] + sub r0, r0, #3 + add r1, r1, #1 + strb r1, [r4, r0] +_021DF980: + ldr r0, _021DF9D8 ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DF9A6 + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021E0320 + ldr r0, _021DF9D8 ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF9A6: + sub r0, #0x1f + ldr r0, [r4, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, _021DF9D4 ; =0x00000784 + mov r1, #0xff + strb r1, [r4, r0] + mov r1, #1 + add r0, #0xa + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DF9D4: .word 0x00000784 +_021DF9D8: .word 0x00000787 + + thumb_func_start MOD14_021DF9DC +MOD14_021DF9DC: ; 0x021DF9DC + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02020130 + ldr r0, _021DFA50 ; =0x00000788 + mov r1, #0 + strb r1, [r5, r0] + add r0, r5, #0 + bl MOD14_021E0740 + add r4, r0, #0 + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r4, #0 + bl FUN_0202032C + str r0, [sp] + ldr r1, [r5, #0x4c] + ldr r2, [sp, #0x14] + add r0, r5, #0 + mov r3, #1 + bl MOD14_021DFA7C + ldr r0, [r5, #0x4c] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r5, #0x4c] + bl FUN_0202032C + str r0, [sp] + mov r3, #0 + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mvn r3, r3 + bl MOD14_021DFA7C + ldr r0, _021DFA54 ; =0x00000784 + mov r1, #0 + strb r1, [r5, r0] + add sp, #0x1c + pop {r4, r5, pc} + nop +_021DFA50: .word 0x00000788 +_021DFA54: .word 0x00000784 + + thumb_func_start MOD14_021DFA58 +MOD14_021DFA58: ; 0x021DFA58 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DFB08 + cmp r0, #0 + beq _021DFA76 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021E062C + mov r0, #1 + pop {r4, pc} +_021DFA76: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DFA7C +MOD14_021DFA7C: ; 0x021DFA7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0xa + mov r1, #0x2c + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021DFAFC + add r0, r6, #0 + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #0xc + str r0, [r2] + str r6, [r4] + strh r1, [r4, #4] + mov r0, #6 + strh r0, [r4, #6] + ldr r0, [sp, #0x28] + str r0, [r4, #8] + ldr r0, [sp, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #4] + str r0, [r4, #0x14] + str r7, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [sp] + add r2, r0, #0 + mul r2, r1 + str r2, [r4, #0x24] + ldr r2, [r4, #0x10] + ldr r0, [r4, #0xc] + sub r0, r2, r0 + bl _s32_div_f + str r0, [r4, #0x1c] + mov r0, #0xf + lsl r0, r0, #0xc + str r0, [r4, #0x20] + ldr r0, _021DFB00 ; =MOD14_021DFB28 + add r1, r4, #0 + mov r2, #0 + str r5, [r4, #0x28] + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DFAF6 + ldr r0, _021DFB04 ; =0x00000788 + mov r1, #1 + add sp, #0x10 + strb r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DFAF6: + add r0, r4, #0 + bl FUN_02016A18 +_021DFAFC: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DFB00: .word MOD14_021DFB28 +_021DFB04: .word 0x00000788 + + thumb_func_start MOD14_021DFB08 +MOD14_021DFB08: ; 0x021DFB08 + ldr r1, _021DFB18 ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021DFB14 + mov r0, #1 + bx lr +_021DFB14: + mov r0, #0 + bx lr + .align 2, 0 +_021DFB18: .word 0x00000788 + + thumb_func_start MOD14_021DFB1C +MOD14_021DFB1C: ; 0x021DFB1C + ldr r1, _021DFB24 ; =0x00000788 + mov r2, #0 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_021DFB24: .word 0x00000788 + + thumb_func_start MOD14_021DFB28 +MOD14_021DFB28: ; 0x021DFB28 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + 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] + str r0, [r3] + ldrh r0, [r4, #4] + cmp r0, #0 + beq _021DFB90 + sub r0, r0, #1 + strh r0, [r4, #4] + ldrh r1, [r4, #4] + ldrh r0, [r4, #6] + cmp r1, r0 + bne _021DFB5E + ldr r0, [r4] + ldr r1, [r4, #8] + bl MOD14_021DDE24 +_021DFB5E: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [r4, #0xc] + str r0, [sp, #4] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x20] + add r0, r1, r0 + str r0, [r4, #0x18] + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B93C + ldr r1, [r4, #0x24] + add r2, r1, #0 + mul r2, r0 + ldr r0, [r4, #0x14] + add r1, sp, #0 + add r0, r0, r2 + str r0, [sp] + ldr r0, [r4] + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DFB90: + ldr r0, [r4, #0x14] + add r1, r2, #0 + str r0, [sp] + ldr r0, [r4, #0x10] + str r0, [sp, #4] + ldr r0, [r4] + bl FUN_02020044 + ldr r1, _021DFBB4 ; =MOD14_021DFB1C + ldr r2, [r4, #0x28] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DFBB4: .word MOD14_021DFB1C + + thumb_func_start MOD14_021DFBB8 +MOD14_021DFBB8: ; 0x021DFBB8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _021DFC1C ; =0x0000078C + ldrb r1, [r4, r0] + cmp r1, #0 + bne _021DFBD6 + add r0, r0, #1 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFBD6 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_02020130 +_021DFBD6: + ldr r0, [r4, #4] + 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] + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD14_021E0320 + ldr r0, _021DFC20 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + add r0, r0, #3 + strb r2, [r4, r0] + ldr r0, _021DFC24 ; =MOD14_021DFC40 + add r1, r4, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DFC18 + ldr r0, _021DFC28 ; =0x00000788 + mov r1, #1 + strb r1, [r4, r0] +_021DFC18: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021DFC1C: .word 0x0000078C +_021DFC20: .word 0x00000784 +_021DFC24: .word MOD14_021DFC40 +_021DFC28: .word 0x00000788 + + thumb_func_start MOD14_021DFC2C +MOD14_021DFC2C: ; 0x021DFC2C + ldr r1, _021DFC3C ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021DFC38 + mov r0, #1 + bx lr +_021DFC38: + mov r0, #0 + bx lr + .align 2, 0 +_021DFC3C: .word 0x00000788 + + thumb_func_start MOD14_021DFC40 +MOD14_021DFC40: ; 0x021DFC40 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r4, r1, #0 + ldr r1, _021DFD18 ; =0x00000784 + add r5, r0, #0 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _021DFC58 + cmp r0, #1 + beq _021DFCBE + add sp, #0x18 + pop {r4, r5, r6, pc} +_021DFC58: + add r0, r1, #3 + ldrb r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #3 + strb r2, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #4 + blo _021DFD14 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #0x10] + mov r2, #3 + asr r0, r0, #0xc + add r1, r0, #6 + mov r0, #0x77 + lsl r0, r0, #4 + str r1, [r4, r0] + add r1, r0, #0 + lsl r2, r2, #0xc + add r1, #0x10 + str r2, [r4, r1] + add r1, r0, #0 + mov r2, #2 + add r1, #0x17 + strb r2, [r4, r1] + add r1, r0, #0 + add r1, #0x1c + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021DFCB2 + add r0, #0x1d + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFCB2 + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_02020130 +_021DFCB2: + ldr r0, _021DFD18 ; =0x00000784 + add sp, #0x18 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021DFCBE: + ldr r0, [r4, #4] + 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] + str r0, [r3] + ldr r0, _021DFD1C ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFCF8 + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD14_021E0320 + ldr r0, _021DFD1C ; =0x00000787 + add sp, #0x18 + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021DFCF8: + sub r0, #0x17 + ldr r0, [r4, r0] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DFD20 ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021DFD14: + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DFD18: .word 0x00000784 +_021DFD1C: .word 0x00000787 +_021DFD20: .word 0x00000788 + + thumb_func_start MOD14_021DFD24 +MOD14_021DFD24: ; 0x021DFD24 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #0x77 + str r0, [r2] + ldr r0, [sp, #4] + lsl r1, r1, #4 + asr r0, r0, #0xc + sub r0, r0, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _021DFD74 ; =0xFFFFF000 + add r0, #0x10 + str r2, [r4, r0] + add r0, r1, #0 + mov r2, #4 + add r0, #0x17 + strb r2, [r4, r0] + mov r2, #0 + add r1, #0x14 + strb r2, [r4, r1] + ldr r0, _021DFD78 ; =MOD14_021DFDBC + add r1, r4, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DFD70 + ldr r0, _021DFD7C ; =0x00000788 + mov r1, #1 + strb r1, [r4, r0] +_021DFD70: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021DFD74: .word 0xFFFFF000 +_021DFD78: .word MOD14_021DFDBC +_021DFD7C: .word 0x00000788 + + thumb_func_start MOD14_021DFD80 +MOD14_021DFD80: ; 0x021DFD80 + push {r4, lr} + ldr r1, _021DFDB8 ; =0x00000788 + add r4, r0, #0 + ldrb r0, [r4, r1] + cmp r0, #0 + bne _021DFDB2 + add r0, r1, #4 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFDAE + add r0, r1, #5 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFDAE + ldr r0, [r4, #4] + bl FUN_020201DC + cmp r0, #0 + beq _021DFDAE + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 +_021DFDAE: + mov r0, #1 + pop {r4, pc} +_021DFDB2: + mov r0, #0 + pop {r4, pc} + nop +_021DFDB8: .word 0x00000788 + + thumb_func_start MOD14_021DFDBC +MOD14_021DFDBC: ; 0x021DFDBC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + 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] + str r0, [r3] + ldr r0, _021DFE20 ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFDFE + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD14_021E0320 + ldr r0, _021DFE20 ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DFDFE: + sub r0, #0x17 + ldr r0, [r4, r0] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DFE24 ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021DFE20: .word 0x00000787 +_021DFE24: .word 0x00000788 + + thumb_func_start MOD14_021DFE28 +MOD14_021DFE28: ; 0x021DFE28 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC424 + mov r1, #0x79 + lsl r1, r1, #4 + mov r2, #0x11 + ldr r3, [r4, r1] + lsl r2, r2, #4 + ldrh r2, [r3, r2] + cmp r2, r0 + bne _021DFE4E + sub r1, #0x38 + ldr r0, [r4, r1] + bl MOD14_021DEA50 +_021DFE4E: + add r0, r4, #0 + bl MOD14_021E0720 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DFE60 +MOD14_021DFE60: ; 0x021DFE60 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + mov r2, #1 + bl MOD14_021E0C20 + ldr r0, _021DFE80 ; =0x00000784 + mov r1, #0 + strb r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021DFE80: .word 0x00000784 + + thumb_func_start MOD14_021DFE84 +MOD14_021DFE84: ; 0x021DFE84 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DFF14 ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDEDC + ldr r1, _021DFF18 ; =0x00000784 + add r4, r0, #0 + ldrb r1, [r5, r1] + cmp r1, #0 + beq _021DFEA4 + cmp r1, #1 + beq _021DFEBC + cmp r1, #2 + beq _021DFEF6 + b _021DFF10 +_021DFEA4: + add r1, r5, #0 + ldr r0, [r5, #0x48] + add r1, #0x4c + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DFF10 + ldr r0, _021DFF18 ; =0x00000784 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _021DFF10 +_021DFEBC: + bl MOD14_021DA1B8 + cmp r0, #0 + beq _021DFF10 + add r0, r4, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + beq _021DFEE0 + ldr r0, [r5, #4] + mov r1, #0 + bl FUN_02020130 + add r0, r5, #0 + bl MOD14_021E0720 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DFEE0: + add r1, r5, #0 + ldr r0, [r5, #0x48] + add r1, #0x4c + mov r2, #2 + bl MOD14_021E0C20 + ldr r0, _021DFF18 ; =0x00000784 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _021DFF10 +_021DFEF6: + add r1, r5, #0 + ldr r0, [r5, #0x48] + add r1, #0x4c + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DFF10 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02020130 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DFF10: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DFF14: .word 0x00000794 +_021DFF18: .word 0x00000784 + + thumb_func_start MOD14_021DFF1C +MOD14_021DFF1C: ; 0x021DFF1C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020238 + ldr r0, _021DFF4C ; =0x0000078C + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DFF38 + ldr r0, [r4, #0x4c] + mov r1, #1 + bl FUN_02020238 +_021DFF38: + ldr r0, _021DFF50 ; =0x0000078D + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFF4A + sub r0, #0x2d + ldr r0, [r4, r0] + mov r1, #1 + bl MOD14_021E501C +_021DFF4A: + pop {r4, pc} + .align 2, 0 +_021DFF4C: .word 0x0000078C +_021DFF50: .word 0x0000078D + + thumb_func_start MOD14_021DFF54 +MOD14_021DFF54: ; 0x021DFF54 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020238 + ldr r0, _021DFF84 ; =0x0000078C + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DFF70 + ldr r0, [r4, #0x4c] + mov r1, #2 + bl FUN_02020238 +_021DFF70: + ldr r0, _021DFF88 ; =0x0000078D + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFF82 + sub r0, #0x2d + ldr r0, [r4, r0] + mov r1, #2 + bl MOD14_021E501C +_021DFF82: + pop {r4, pc} + .align 2, 0 +_021DFF84: .word 0x0000078C +_021DFF88: .word 0x0000078D + + thumb_func_start MOD14_021DFF8C +MOD14_021DFF8C: ; 0x021DFF8C + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DFFB0 ; =0x0000078C + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFFAC + add r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC45C + add r2, r0, #0 + ldr r0, [r4, #0x48] + add r4, #0x4c + add r1, r4, #0 + bl MOD14_021E0BA4 +_021DFFAC: + pop {r4, pc} + nop +_021DFFB0: .word 0x0000078C + + thumb_func_start MOD14_021DFFB4 +MOD14_021DFFB4: ; 0x021DFFB4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _021DFFD4 + ldr r0, [r4, #0x48] + add r4, #0x4c + add r1, r4, #0 + bl MOD14_021E0B54 +_021DFFD4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DFFD8 +MOD14_021DFFD8: ; 0x021DFFD8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + add r2, r1, #0 + cmp r0, #0 + beq _021E0004 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + bl MOD14_021E0BA8 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, [r4, #0x48] + add r4, #0x4c + add r1, r4, #0 + bl MOD14_021E0B54 +_021E0004: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0008 +MOD14_021E0008: ; 0x021E0008 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC49C + cmp r0, #0 + ldr r0, [r4, #4] + beq _021E0024 + mov r1, #1 + bl FUN_02020248 + pop {r4, pc} +_021E0024: + mov r1, #0 + bl FUN_02020248 + pop {r4, pc} + + thumb_func_start MOD14_021E002C +MOD14_021E002C: ; 0x021E002C + ldr r3, _021E0034 ; =0x02020131 + ldr r0, [r0, #4] + mov r1, #1 + bx r3 + .align 2, 0 +_021E0034: .word 0x02020131 + + thumb_func_start MOD14_021E0038 +MOD14_021E0038: ; 0x021E0038 + push {r4, lr} + ldr r0, [r0, #4] + 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} + .align 2, 0 + + thumb_func_start MOD14_021E0050 +MOD14_021E0050: ; 0x021E0050 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0074 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + ldr r0, _021E0078 ; =MOD14_021E0094 + add r1, r4, #0 + bl FUN_0200CA44 + cmp r0, #0 + beq _021E0070 + ldr r0, _021E007C ; =0x0000078D + mov r1, #1 + strb r1, [r4, r0] + sub r0, r0, #5 + strb r1, [r4, r0] +_021E0070: + pop {r4, pc} + nop +_021E0074: .word 0x00000784 +_021E0078: .word MOD14_021E0094 +_021E007C: .word 0x0000078D + + thumb_func_start MOD14_021E0080 +MOD14_021E0080: ; 0x021E0080 + ldr r1, _021E0090 ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E008C + mov r0, #1 + bx lr +_021E008C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0090: .word 0x00000788 + + thumb_func_start MOD14_021E0094 +MOD14_021E0094: ; 0x021E0094 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E00E8 ; =0x00000784 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E00A8 + cmp r1, #1 + beq _021E00C4 + pop {r3, r4, r5, pc} +_021E00A8: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x76 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021E4D94 + ldr r0, _021E00E8 ; =0x00000784 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_021E00C4: + sub r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021E4DE8 + cmp r0, #0 + beq _021E00E4 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + ldr r0, _021E00EC ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021E00E4: + pop {r3, r4, r5, pc} + nop +_021E00E8: .word 0x00000784 +_021E00EC: .word 0x00000788 + + thumb_func_start MOD14_021E00F0 +MOD14_021E00F0: ; 0x021E00F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0114 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + ldr r0, _021E0118 ; =MOD14_021E0134 + add r1, r4, #0 + bl FUN_0200CA44 + cmp r0, #0 + beq _021E0112 + ldr r0, _021E011C ; =0x0000078D + mov r1, #0 + strb r1, [r4, r0] + mov r1, #1 + sub r0, r0, #5 + strb r1, [r4, r0] +_021E0112: + pop {r4, pc} + .align 2, 0 +_021E0114: .word 0x00000784 +_021E0118: .word MOD14_021E0134 +_021E011C: .word 0x0000078D + + thumb_func_start MOD14_021E0120 +MOD14_021E0120: ; 0x021E0120 + ldr r1, _021E0130 ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E012C + mov r0, #1 + bx lr +_021E012C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0130: .word 0x00000788 + + thumb_func_start MOD14_021E0134 +MOD14_021E0134: ; 0x021E0134 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E0188 ; =0x00000784 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E0148 + cmp r1, #1 + beq _021E0164 + pop {r3, r4, r5, pc} +_021E0148: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x76 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021E4E58 + ldr r0, _021E0188 ; =0x00000784 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_021E0164: + sub r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021E4EA4 + cmp r0, #0 + beq _021E0184 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, _021E018C ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021E0184: + pop {r3, r4, r5, pc} + nop +_021E0188: .word 0x00000784 +_021E018C: .word 0x00000788 + + thumb_func_start MOD14_021E0190 +MOD14_021E0190: ; 0x021E0190 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E01B0 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + ldr r0, _021E01B4 ; =MOD14_021E01D0 + add r1, r4, #0 + bl FUN_0200CA44 + cmp r0, #0 + beq _021E01AC + ldr r0, _021E01B8 ; =0x00000788 + mov r1, #1 + strb r1, [r4, r0] +_021E01AC: + pop {r4, pc} + nop +_021E01B0: .word 0x00000784 +_021E01B4: .word MOD14_021E01D0 +_021E01B8: .word 0x00000788 + + thumb_func_start MOD14_021E01BC +MOD14_021E01BC: ; 0x021E01BC + ldr r1, _021E01CC ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E01C8 + mov r0, #1 + bx lr +_021E01C8: + mov r0, #0 + bx lr + .align 2, 0 +_021E01CC: .word 0x00000788 + + thumb_func_start MOD14_021E01D0 +MOD14_021E01D0: ; 0x021E01D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E0224 ; =0x00000784 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E01E4 + cmp r1, #1 + beq _021E0200 + pop {r3, r4, r5, pc} +_021E01E4: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x76 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021E4EB4 + ldr r0, _021E0224 ; =0x00000784 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_021E0200: + sub r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021E4F48 + cmp r0, #0 + beq _021E0220 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + ldr r0, _021E0228 ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021E0220: + pop {r3, r4, r5, pc} + nop +_021E0224: .word 0x00000784 +_021E0228: .word 0x00000788 + + thumb_func_start MOD14_021E022C +MOD14_021E022C: ; 0x021E022C + push {r3, lr} + ldr r1, _021E0240 ; =0x0000078D + ldrb r1, [r0, r1] + cmp r1, #0 + beq _021E023E + ldr r0, [r0, #4] + mov r1, #1 + bl FUN_02020130 +_021E023E: + pop {r3, pc} + .align 2, 0 +_021E0240: .word 0x0000078D + + thumb_func_start MOD14_021E0244 +MOD14_021E0244: ; 0x021E0244 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0260 ; =0x0000078D + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021E025E + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, _021E0260 ; =0x0000078D + mov r1, #0 + strb r1, [r4, r0] +_021E025E: + pop {r4, pc} + .align 2, 0 +_021E0260: .word 0x0000078D + + thumb_func_start MOD14_021E0264 +MOD14_021E0264: ; 0x021E0264 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x79 + add r5, r3, #0 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r7, r2, #0 + add r4, r1, #0 + str r0, [sp] + bl MOD14_021DC3CC + strb r0, [r7] + ldrb r0, [r7] + cmp r0, #4 + bhi _021E0318 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E028E: ; jump table + .short _021E0298 - _021E028E - 2 ; case 0 + .short _021E02C2 - _021E028E - 2 ; case 1 + .short _021E02E4 - _021E028E - 2 ; case 2 + .short _021E02F6 - _021E028E - 2 ; case 3 + .short _021E0308 - _021E028E - 2 ; case 4 +_021E0298: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r5, r0, #0 + ldr r0, [sp] + bl MOD14_021DC3D0 + mov r1, #0x18 + add r5, #0x70 + mul r1, r0 + add r0, r5, r1 + str r0, [r6] + ldr r0, [sp] + bl MOD14_021DC3D8 + mov r1, #0x18 + mul r1, r0 + add r1, #0x18 + str r1, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E02C2: + ldr r0, [sp] + bl MOD14_021DC3E8 + add r7, r0, #0 + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD60 + add r1, r7, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD14_021E3170 + ldr r0, [r4] + sub r0, #0x10 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E02E4: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r0, #0xa8 + str r0, [r6] + mov r0, #8 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E02F6: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r0, #0x9f + str r0, [r6] + mov r0, #0xa0 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E0308: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r0, #0xeb + str r0, [r6] + mov r0, #0xa0 + str r0, [r4] +_021E0318: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E031C: .word 0x00000794 + + thumb_func_start MOD14_021E0320 +MOD14_021E0320: ; 0x021E0320 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r0, #0 + ldr r0, [r7, #4] + add r6, r1, #0 + bl FUN_02020044 + ldr r1, _021E03B4 ; =0x0000078C + ldrb r0, [r7, r1] + cmp r0, #0 + beq _021E0378 + mov r0, #0 + sub r1, #0x38 + str r0, [sp] + str r0, [sp, #0x18] + ldr r0, [r7, r1] + cmp r0, #0 + bls _021E0378 + add r4, r7, #0 + add r5, r7, #0 +_021E0348: + ldr r0, _021E03B8 ; =0x00000664 + ldr r1, [r6] + ldr r0, [r4, r0] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, _021E03BC ; =0x00000668 + ldr r1, [r6, #4] + ldr r0, [r4, r0] + sub r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + add r1, sp, #0x10 + bl FUN_02020044 + ldr r0, [sp] + add r4, #8 + add r0, r0, #1 + str r0, [sp] + ldr r0, _021E03C0 ; =0x00000754 + add r5, #0x34 + ldr r1, [r7, r0] + ldr r0, [sp] + cmp r0, r1 + blo _021E0348 +_021E0378: + ldr r0, _021E03C4 ; =0x0000078D + ldrb r1, [r7, r0] + cmp r1, #0 + beq _021E038A + sub r0, #0x2d + ldr r0, [r7, r0] + add r1, r6, #0 + bl MOD14_021E4FDC +_021E038A: + ldr r0, _021E03C8 ; =0x0000078E + ldrb r0, [r7, r0] + cmp r0, #0 + beq _021E03B0 + ldmia r6!, {r0, r1} + add r3, sp, #4 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + mov r0, #6 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r7, #8] + add r1, r2, #0 + bl FUN_02020044 +_021E03B0: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E03B4: .word 0x0000078C +_021E03B8: .word 0x00000664 +_021E03BC: .word 0x00000668 +_021E03C0: .word 0x00000754 +_021E03C4: .word 0x0000078D +_021E03C8: .word 0x0000078E + + thumb_func_start MOD14_021E03CC +MOD14_021E03CC: ; 0x021E03CC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r1, #0x79 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r0, r1] + bl MOD14_021DC3CC + cmp r0, #0 + beq _021E03E2 + b _021E0504 +_021E03E2: + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC4DC + cmp r0, #0 + beq _021E042A + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3E0 + add r1, r0, #0 + ldr r3, [sp, #4] + ldr r2, _021E053C ; =0x00000758 + ldr r0, [sp, #4] + add r3, #0x4c + ldr r0, [r0, r2] + ldr r2, _021E0540 ; =0x000004D8 + bl MOD14_021DE980 + ldr r0, [sp, #4] + ldr r2, _021E0544 ; =0x00000754 + mov r1, #1 + str r1, [r0, r2] + add r1, r2, #0 + mov r3, #0 + sub r1, #0xf0 + str r3, [r0, r1] + ldr r1, _021E0548 ; =0xFFFFC000 + sub r2, #0xec + str r1, [r0, r2] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E042A: + add r0, sp, #0x24 + str r0, [sp] + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + add r1, sp, #0x30 + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD14_021DC4A4 + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3D0 + str r0, [sp, #0x18] + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3D8 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + str r0, [sp, #0x1c] + cmp r0, r1 + bhi _021E04F8 + ldr r0, [sp, #4] + ldr r6, [sp, #4] + str r0, [sp, #0x10] + add r0, #0x4c + str r0, [sp, #0x10] + mov r7, #0x5f + ldr r0, [sp, #0x1c] + mov r1, #6 + mul r1, r0 + lsl r7, r7, #4 + str r1, [sp, #0xc] + add r5, r6, #0 +_021E0482: + ldr r4, [sp, #0x30] + ldr r0, [sp, #0x2c] + cmp r4, r0 + bhi _021E04E6 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + sub r1, r1, r0 + mov r0, #0x18 + add r2, r1, #0 + mul r2, r0 + sub r0, #0x1c + sub r0, r0, r2 + lsl r0, r0, #0xc + str r0, [sp, #8] +_021E049E: + ldr r1, [sp, #4] + ldr r0, _021E053C ; =0x00000758 + ldr r3, [sp, #0x10] + ldr r0, [r1, r0] + ldr r1, [sp, #0xc] + add r2, r7, #0 + add r1, r4, r1 + bl MOD14_021DE980 + ldr r0, [r6, #0x4c] + cmp r0, #0 + beq _021E04DE + ldr r0, [sp, #0x18] + add r7, #0x10 + sub r1, r4, r0 + mov r0, #6 + add r2, r1, #0 + lsl r0, r0, #0xe + mul r2, r0 + ldr r0, _021E054C ; =0x00000664 + ldr r1, [sp, #8] + str r2, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] + ldr r0, [sp, #0x10] + add r6, #0x34 + add r0, #0x34 + str r0, [sp, #0x10] + ldr r0, [sp, #0x20] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #0x20] +_021E04DE: + ldr r0, [sp, #0x2c] + add r4, r4, #1 + cmp r4, r0 + bls _021E049E +_021E04E6: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x24] + add r0, r0, #6 + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, r1 + bls _021E0482 +_021E04F8: + ldr r2, _021E0544 ; =0x00000754 + ldr r1, [sp, #0x20] + ldr r0, [sp, #4] + add sp, #0x34 + str r1, [r0, r2] + pop {r4, r5, r6, r7, pc} +_021E0504: + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r3, [sp, #4] + ldr r2, _021E0550 ; =0x0000075C + ldr r0, [sp, #4] + add r3, #0x4c + ldr r0, [r0, r2] + ldr r2, _021E0540 ; =0x000004D8 + bl MOD14_021E3084 + ldr r2, _021E0544 ; =0x00000754 + ldr r0, [sp, #4] + mov r1, #1 + str r1, [r0, r2] + add r1, r2, #0 + mov r3, #0 + sub r1, #0xf0 + str r3, [r0, r1] + ldr r1, _021E0548 ; =0xFFFFC000 + sub r2, #0xec + str r1, [r0, r2] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E053C: .word 0x00000758 +_021E0540: .word 0x000004D8 +_021E0544: .word 0x00000754 +_021E0548: .word 0xFFFFC000 +_021E054C: .word 0x00000664 +_021E0550: .word 0x0000075C + + thumb_func_start MOD14_021E0554 +MOD14_021E0554: ; 0x021E0554 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _021E0580 ; =0x00000754 + mov r4, #0 + ldr r0, [r6, r0] + cmp r0, #0 + bls _021E0578 + ldr r7, _021E0580 ; =0x00000754 + add r5, r6, #0 +_021E0566: + ldr r0, [r5, #0x4c] + mov r1, #2 + bl MOD14_021DDE24 + ldr r0, [r6, r7] + add r4, r4, #1 + add r5, #0x34 + cmp r4, r0 + blo _021E0566 +_021E0578: + ldr r0, _021E0584 ; =0x0000078C + mov r1, #1 + strb r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E0580: .word 0x00000754 +_021E0584: .word 0x0000078C + + thumb_func_start MOD14_021E0588 +MOD14_021E0588: ; 0x021E0588 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E0604 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC4DC + cmp r0, #0 + beq _021E05C2 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E0 + add r1, r0, #0 + ldr r0, _021E0620 ; =0x00000758 + ldr r0, [r5, r0] + add r5, #0x4c + add r2, r5, #0 + bl MOD14_021DE9D4 + pop {r3, r4, r5, r6, r7, pc} +_021E05C2: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC4F8 + add r7, r0, #0 + ldr r0, _021E0624 ; =0x00000754 + mov r4, #0 + ldr r0, [r5, r0] + cmp r0, #0 + bls _021E061C + add r6, r5, #0 + add r6, #0x4c +_021E05DC: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl MOD14_021DC528 + add r1, r0, #0 + ldr r0, _021E0620 ; =0x00000758 + add r1, r7, r1 + ldr r0, [r5, r0] + add r2, r6, #0 + bl MOD14_021DE9D4 + ldr r0, _021E0624 ; =0x00000754 + add r4, r4, #1 + ldr r0, [r5, r0] + add r6, #0x34 + cmp r4, r0 + blo _021E05DC + pop {r3, r4, r5, r6, r7, pc} +_021E0604: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021E0628 ; =0x0000075C + ldr r0, [r5, r0] + add r5, #0x4c + add r2, r5, #0 + bl MOD14_021E30C0 +_021E061C: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E0620: .word 0x00000758 +_021E0624: .word 0x00000754 +_021E0628: .word 0x0000075C + + thumb_func_start MOD14_021E062C +MOD14_021E062C: ; 0x021E062C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E06A2 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E0 + add r4, r0, #0 + ldr r0, _021E0708 ; =0x00000758 + add r1, r4, #0 + ldr r0, [r5, r0] + bl MOD14_021DEA38 + add r6, r0, #0 + add r1, r5, #0 + mov r2, #0x5f + ldr r0, [r5, #0x48] + add r1, #0x4c + lsl r2, r2, #4 + bl MOD14_021E0BBC + mov r2, #6 + ldr r0, [r5, #0x48] + add r1, r6, #0 + lsl r2, r2, #8 + bl MOD14_021E0BBC + bl OS_WaitVBlankIntr + ldr r0, _021E0708 ; =0x00000758 + add r3, r5, #0 + ldr r0, [r5, r0] + ldr r2, _021E070C ; =0x000004D8 + add r1, r4, #0 + add r3, #0x80 + bl MOD14_021DE980 + ldr r0, _021E0708 ; =0x00000758 + add r2, r5, #0 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, #0x4c + bl MOD14_021DE9D4 + add r0, r5, #0 + add r5, #0x4c + add r0, #0x80 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0930 + pop {r4, r5, r6, pc} +_021E06A2: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E8 + add r4, r0, #0 + ldr r0, _021E0710 ; =0x0000075C + add r1, r4, #0 + ldr r0, [r5, r0] + bl MOD14_021E3158 + add r6, r0, #0 + add r1, r5, #0 + mov r2, #0x5f + ldr r0, [r5, #0x48] + add r1, #0x4c + lsl r2, r2, #4 + bl MOD14_021E0BBC + mov r2, #6 + ldr r0, [r5, #0x48] + add r1, r6, #0 + lsl r2, r2, #8 + bl MOD14_021E0BBC + bl OS_WaitVBlankIntr + ldr r0, _021E0710 ; =0x0000075C + add r3, r5, #0 + ldr r0, [r5, r0] + ldr r2, _021E070C ; =0x000004D8 + add r1, r4, #0 + add r3, #0x80 + bl MOD14_021E3084 + ldr r0, _021E0710 ; =0x0000075C + add r2, r5, #0 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, #0x4c + bl MOD14_021E3114 + add r0, r5, #0 + add r5, #0x4c + add r0, #0x80 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0930 + pop {r4, r5, r6, pc} + nop +_021E0708: .word 0x00000758 +_021E070C: .word 0x000004D8 +_021E0710: .word 0x0000075C + + thumb_func_start MOD14_021E0714 +MOD14_021E0714: ; 0x021E0714 + ldr r1, _021E071C ; =0x0000078C + mov r2, #0 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_021E071C: .word 0x0000078C + + thumb_func_start MOD14_021E0720 +MOD14_021E0720: ; 0x021E0720 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + mov r2, #1 + bl MOD14_021E0908 + ldr r0, _021E073C ; =0x0000078C + mov r1, #0 + strb r1, [r4, r0] + sub r0, #0x38 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021E073C: .word 0x0000078C + + thumb_func_start MOD14_021E0740 +MOD14_021E0740: ; 0x021E0740 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E076A + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3E0 + add r1, r0, #0 + ldr r0, _021E0784 ; =0x00000758 + ldr r0, [r4, r0] + bl MOD14_021DEA38 + ldr r0, [r0] + pop {r4, pc} +_021E076A: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021E0788 ; =0x0000075C + ldr r0, [r4, r0] + bl MOD14_021E3158 + ldr r0, [r0] + pop {r4, pc} + nop +_021E0784: .word 0x00000758 +_021E0788: .word 0x0000075C + + thumb_func_start MOD14_021E078C +MOD14_021E078C: ; 0x021E078C + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r0, sp, #0x18 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp, #8] + bl FUN_020B19DC + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0xa + str r0, [sp] + add r0, sp, #0x18 + str r0, [sp, #4] + mov r0, #0x13 + mov r2, #1 + mov r3, #0x40 + bl FUN_02006A8C + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0x13 + add r2, sp, #0x14 + mov r3, #0xa + bl FUN_02006C08 + str r0, [sp, #0xc] + cmp r0, #0 + beq _021E0818 + add r0, sp, #0x18 + bl FUN_020B19DC + ldr r0, [sp, #0xc] + add r1, sp, #0x10 + bl FUN_020B00F0 + ldr r2, [sp, #0x14] + add r7, r0, #0 + ldr r0, [r2, #0xc] + mov r1, #8 + str r1, [sp] + ldr r2, [r2, #8] + ldr r3, _021E0898 ; =0x0000057F + add r1, r0, #0 + lsr r2, r2, #1 + bl MOD14_021DDE40 + cmp r7, #0 + beq _021E0806 + add r0, sp, #0x18 + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + mov r2, #0xc0 + mov r3, #1 + bl FUN_020B10E8 + b _021E0812 +_021E0806: + ldr r0, [sp, #0x14] + mov r1, #0xc0 + mov r2, #1 + add r3, sp, #0x18 + bl FUN_020B1240 +_021E0812: + ldr r0, [sp, #0xc] + bl FUN_02016A18 +_021E0818: + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x15 + mov r2, #1 + add r3, #0x10 + bl FUN_02006C30 + str r0, [r5, #8] + mov r0, #0xa + str r0, [sp] + mov r0, #0x12 + mov r1, #0x16 + mov r2, #1 + add r3, r5, #4 + bl FUN_02006C5C + str r0, [r5] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x17 + mov r2, #1 + add r3, #0x1c + bl FUN_02006C30 + str r0, [r5, #0x14] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x18 + mov r2, #1 + add r3, #0x20 + bl FUN_02006C5C + str r0, [r5, #0x18] + mov r0, #0x13 + mov r1, #0xa + bl FUN_02006670 + str r0, [r5, #0x48] + ldr r0, [r5, #8] + cmp r0, #0 + beq _021E0882 + ldr r0, [r5] + cmp r0, #0 + beq _021E0882 + ldr r0, [r5, #0x48] + cmp r0, #0 + bne _021E0888 +_021E0882: + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021E0888: + ldr r0, [sp, #8] + str r0, [r5, #0x24] + str r6, [r5, #0x40] + str r4, [r5, #0x44] + mov r0, #1 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021E0898: .word 0x0000057F + + thumb_func_start MOD14_021E089C +MOD14_021E089C: ; 0x021E089C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E08AE + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] +_021E08AE: + ldr r0, [r4] + cmp r0, #0 + beq _021E08BC + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] +_021E08BC: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021E08CA + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x14] +_021E08CA: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021E08D8 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x18] +_021E08D8: + ldr r0, [r4, #0x48] + cmp r0, #0 + beq _021E08E2 + bl FUN_020066F4 +_021E08E2: + pop {r4, pc} + + thumb_func_start MOD14_021E08E4 +MOD14_021E08E4: ; 0x021E08E4 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r0, r4, #0 + add r5, r1, #0 + sub r4, r4, #1 + cmp r0, #0 + beq _021E0906 + mov r6, #0 +_021E08F4: + add r0, r5, #4 + str r6, [r5] + bl FUN_020B1A24 + add r0, r4, #0 + add r5, #0x34 + sub r4, r4, #1 + cmp r0, #0 + bne _021E08F4 +_021E0906: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0908 +MOD14_021E0908: ; 0x021E0908 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r0, r4, #0 + add r5, r1, #0 + sub r4, r4, #1 + cmp r0, #0 + beq _021E092E + mov r6, #0 +_021E0918: + ldr r0, [r5] + cmp r0, #0 + beq _021E0924 + bl FUN_0201FFC8 + str r6, [r5] +_021E0924: + add r0, r4, #0 + add r5, #0x34 + sub r4, r4, #1 + cmp r0, #0 + bne _021E0918 +_021E092E: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0930 +MOD14_021E0930: ; 0x021E0930 + mov r3, #0x34 + mul r3, r2 + add r2, r3, #0 + ldr r3, _021E093C ; =0x020CE210 + bx r3 + nop +_021E093C: .word 0x020CE210 + + thumb_func_start MOD14_021E0940 +MOD14_021E0940: ; 0x021E0940 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r4, [sp, #0x64] + bl FUN_02066A6C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldr r0, [r5, #0x44] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r5, #4] + mov r1, #0 + str r0, [sp] + ldr r0, [sp, #0x58] + str r0, [sp, #4] + ldr r3, [r5, #0x10] + add r0, sp, #0x20 + bl MOD14_021DDDB4 + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x18] + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r6, #0 + bl FUN_0206B688 + str r0, [r4, #0x28] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x14] + add r1, r7, #0 + bl FUN_0206B7BC + strh r0, [r4, #0x2c] + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x30] + add r0, r6, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x2e] + add r0, r4, #4 + bl FUN_020B1A24 + add r0, r5, #0 + add r0, #0x4c + str r0, [sp] + mov r3, #0xa + ldr r0, [r5, #0x48] + ldr r1, [r4, #0x28] + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006814 + add r0, r5, #0 + add r0, #0x4c + add r1, sp, #0x1c + bl FUN_020B0088 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E0A5C ; =0x00300010 + add r3, r4, #4 + and r1, r0 + ldr r0, [sp, #0x1c] + str r1, [r0, #8] + lsr r1, r2, #0x11 + ldr r0, [sp, #0x1c] + mov r2, #1 + str r1, [r0, #0x10] + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x1c] + lsl r1, r1, #5 + bl FUN_020B1768 + add r0, r4, #4 + str r0, [sp, #0x20] + ldr r0, [sp, #0x5c] + ldr r2, [sp, #8] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r3, [sp, #0xc] + add r1, sp, #0x20 + bl MOD14_021DDDD4 + str r0, [r4] + cmp r0, #0 + bne _021E0A36 + bl ErrorHandling +_021E0A36: + ldrh r1, [r4, #0x2c] + ldr r0, [r4] + add r1, r1, #2 + bl FUN_02020248 + ldr r0, [r5, #0x40] + bl MOD14_021DC484 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E0B54 + ldr r1, [sp, #0x10] + add r0, r6, #0 + bl FUN_02066A94 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E0A5C: .word 0x00300010 + + thumb_func_start MOD14_021E0A60 +MOD14_021E0A60: ; 0x021E0A60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + str r2, [sp, #8] + add r7, r3, #0 + ldr r4, [sp, #0x70] + bl FUN_02066A6C + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + add r0, r6, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [r5, #0x44] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r5, #4] + mov r1, #0 + str r0, [sp] + ldr r0, [sp, #0x64] + str r0, [sp, #4] + ldr r3, [r5, #0x10] + add r0, sp, #0x1c + bl MOD14_021DDDB4 + str r7, [r4, #0x28] + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl FUN_0206B7BC + strh r0, [r4, #0x2c] + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x30] + add r0, r6, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x2e] + add r0, r4, #4 + bl FUN_020B1A24 + ldr r0, [sp, #0x58] + add r1, sp, #0x18 + bl FUN_020B0088 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E0B50 ; =0x00300010 + add r3, r4, #4 + and r1, r0 + ldr r0, [sp, #0x18] + str r1, [r0, #8] + lsr r1, r2, #0x11 + ldr r0, [sp, #0x18] + mov r2, #1 + str r1, [r0, #0x10] + ldr r1, [sp, #0x6c] + ldr r0, [sp, #0x18] + lsl r1, r1, #5 + bl FUN_020B1768 + add r0, r4, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x68] + ldr r2, [sp, #0x5c] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r3, [sp, #0x60] + add r1, sp, #0x1c + bl MOD14_021DDDD4 + str r0, [r4] + cmp r0, #0 + bne _021E0B28 + bl ErrorHandling +_021E0B28: + ldrh r1, [r4, #0x2c] + ldr r0, [r4] + add r1, r1, #2 + bl FUN_02020248 + ldr r0, [r5, #0x40] + bl MOD14_021DC484 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E0B54 + ldr r1, [sp, #0x14] + add r0, r6, #0 + bl FUN_02066A94 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E0B50: .word 0x00300010 + + thumb_func_start MOD14_021E0B54 +MOD14_021E0B54: ; 0x021E0B54 + push {r4, r5, r6, lr} + cmp r2, #0 + beq _021E0B9A + mov r3, #1 + add r0, r2, #0 + tst r0, r3 + beq _021E0B72 + ldrh r0, [r1, #0x30] + cmp r0, #0 + bne _021E0B72 + ldr r0, [r1] + add r1, r3, #0 + bl FUN_02020398 + pop {r4, r5, r6, pc} +_021E0B72: + mov r3, #0 + mov r4, #1 + mov r0, #2 +_021E0B78: + add r5, r0, #0 + lsl r5, r3 + tst r5, r2 + beq _021E0B94 + add r5, r4, #0 + ldrh r6, [r1, #0x2e] + lsl r5, r3 + tst r5, r6 + bne _021E0B94 + ldr r0, [r1] + add r1, r4, #0 + bl FUN_02020398 + pop {r4, r5, r6, pc} +_021E0B94: + add r3, r3, #1 + cmp r3, #6 + blt _021E0B78 +_021E0B9A: + ldr r0, [r1] + mov r1, #0 + bl FUN_02020398 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0BA4 +MOD14_021E0BA4: ; 0x021E0BA4 + strh r2, [r1, #0x2e] + bx lr + + thumb_func_start MOD14_021E0BA8 +MOD14_021E0BA8: ; 0x021E0BA8 + strh r2, [r1, #0x30] + bx lr + + thumb_func_start MOD14_021E0BAC +MOD14_021E0BAC: ; 0x021E0BAC + push {r3, lr} + str r1, [sp] + ldr r0, [r0, #0x48] + add r1, r2, #0 + mov r2, #0 + bl FUN_02006814 + pop {r3, pc} + + thumb_func_start MOD14_021E0BBC +MOD14_021E0BBC: ; 0x021E0BBC + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + cmp r0, #0 + beq _021E0C18 + add r0, r4, #4 + bl FUN_020B1A24 + add r0, r5, #0 + add r0, #0x4c + str r0, [sp] + mov r3, #0xa + ldr r0, [r5, #0x48] + ldr r1, [r4, #0x28] + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006814 + add r5, #0x4c + add r0, r5, #0 + add r1, sp, #4 + bl FUN_020B0088 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E0C1C ; =0x00300010 + add r3, r4, #4 + and r1, r0 + ldr r0, [sp, #4] + str r1, [r0, #8] + lsr r1, r2, #0x11 + ldr r0, [sp, #4] + mov r2, #1 + str r1, [r0, #0x10] + ldr r0, [sp, #4] + lsl r1, r6, #5 + bl FUN_020B1768 + ldr r0, [r4] + add r1, r4, #4 + bl FUN_02020334 +_021E0C18: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E0C1C: .word 0x00300010 + + thumb_func_start MOD14_021E0C20 +MOD14_021E0C20: ; 0x021E0C20 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + sub r0, r4, #1 + cmp r0, #1 + ldr r0, [r5] + bhi _021E0C36 + mov r1, #1 + bl FUN_020200EC + b _021E0C3C +_021E0C36: + mov r1, #0 + bl FUN_020200EC +_021E0C3C: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_02020130 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0C48 +MOD14_021E0C48: ; 0x021E0C48 + push {r3, lr} + ldr r0, [r1] + bl FUN_02020388 + cmp r0, #0 + bne _021E0C58 + mov r0, #1 + pop {r3, pc} +_021E0C58: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD14_021E0C5C +MOD14_021E0C5C: ; 0x021E0C5C + cmp r2, #0 + beq _021E0C64 + mov r2, #6 + b _021E0C66 +_021E0C64: + mov r2, #2 +_021E0C66: + ldr r0, [r1] + ldrh r1, [r1, #0x2c] + ldr r3, _021E0C70 ; =0x02020249 + add r1, r1, r2 + bx r3 + .align 2, 0 +_021E0C70: .word 0x02020249 + + thumb_func_start MOD14_021E0C74 +MOD14_021E0C74: ; 0x021E0C74 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start MOD14_021E0C78 +MOD14_021E0C78: ; 0x021E0C78 + ldr r0, [r0, #4] + bx lr + + thumb_func_start MOD14_021E0C7C +MOD14_021E0C7C: ; 0x021E0C7C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + str r1, [r4, #0x44] + str r3, [r4, #0x3c] + str r2, [r4, #0x40] + str r3, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r1, #0xa + add r3, r4, #0 + str r1, [sp] + mov r0, #0x12 + mov r2, #1 + add r3, #0x10 + bl FUN_02006C30 + str r0, [r4, #8] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0xb + mov r2, #1 + add r3, #0x14 + bl FUN_02006C5C + str r0, [r4, #0xc] + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E0CC0 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021E0CC6 +_021E0CC0: + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_021E0CC6: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD14_021E0CCC +MOD14_021E0CCC: ; 0x021E0CCC + push {r4, lr} + sub sp, #0x38 + add r4, r0, #0 + add r0, #0x18 + bl FUN_020B1A24 + mov r3, #0 + mov r0, #0x9d + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + lsl r0, r0, #8 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x18 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #9 + bl FUN_02006AE4 + ldr r0, [r4, #0x44] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #0x14] + add r1, r4, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r3, [r4, #0x10] + add r0, sp, #0x14 + add r1, #0x18 + bl MOD14_021DDDB4 + ldr r0, [r4, #0x44] + bl MOD14_021DDD98 + add r2, r0, #0 + mov r0, #0x2c + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + add r2, #0xb7 + mov r3, #0xb0 + bl MOD14_021DDDD4 + mov r1, #1 + str r0, [r4, #4] + bl FUN_02020248 + add sp, #0x38 + pop {r4, pc} + + thumb_func_start MOD14_021E0D3C +MOD14_021E0D3C: ; 0x021E0D3C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E0D4E + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] +_021E0D4E: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021E0D5C + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0xc] +_021E0D5C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0D60 +MOD14_021E0D60: ; 0x021E0D60 + push {r3, lr} + cmp r1, #0 + beq _021E0D70 + cmp r1, #1 + beq _021E0D7A + cmp r1, #2 + beq _021E0D84 + pop {r3, pc} +_021E0D70: + ldr r0, [r0, #4] + mov r1, #0 + bl FUN_02020130 + pop {r3, pc} +_021E0D7A: + ldr r0, [r0, #4] + mov r1, #1 + bl FUN_02020130 + pop {r3, pc} +_021E0D84: + ldr r0, [r0, #4] + mov r1, #2 + bl FUN_02020130 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0D90 +MOD14_021E0D90: ; 0x021E0D90 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r1, #0 + add r7, r3, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021E0DAC + mov r0, #0 + str r0, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E0DAC: + str r4, [r5, #0x14] + str r7, [r5, #8] + ldr r0, [sp, #0x18] + str r6, [r5, #0x10] + str r0, [r5, #0xc] + mov r0, #0 + str r0, [r5, #4] + str r0, [r5, #0x4c] + str r0, [r5, #0x24] + add r0, r4, #0 + bl MOD14_021DDD90 + str r0, [r5, #0x20] + mov r0, #9 + mov r1, #6 + mov r2, #0xf + mov r3, #0xa + bl FUN_0200B870 + str r0, [r5, #0x18] + mov r0, #1 + mov r1, #2 + mov r2, #0xf + mov r3, #0xa + bl FUN_0200B870 + str r0, [r5, #0x1c] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x10 + mov r2, #1 + add r3, #0x2c + bl FUN_02006C30 + str r0, [r5, #0x28] + mov r0, #0 + str r0, [r5, #0x30] + ldr r0, [sp, #0x1c] + mov r1, #0x15 + bl FUN_0200A914 + str r0, [r5, #0x44] + ldr r0, [sp, #0x1c] + mov r1, #0x16 + bl FUN_0200A914 + str r0, [r5, #0x48] + bl FUN_0206E12C + add r4, r0, #0 + bl FUN_0206E10C + add r1, r0, #0 + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r2, #1 + add r3, #0x38 + bl FUN_02006C30 + mov r1, #0 + str r0, [r5, #0x34] + add r2, r5, #0 + add r0, r1, #0 +_021E0E32: + add r1, r1, #1 + str r0, [r2, #0x3c] + add r2, r2, #4 + cmp r1, #2 + blt _021E0E32 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0E44 +MOD14_021E0E44: ; 0x021E0E44 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021E0EE2 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E0E72 + mov r6, #0 + add r4, r6, #0 +_021E0E58: + ldr r0, [r5, #4] + add r0, r0, r4 + bl FUN_02019178 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #4 + blt _021E0E58 + ldr r0, [r5, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #4] +_021E0E72: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021E0E7C + bl FUN_0200B990 +_021E0E7C: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E0E86 + bl FUN_0200B990 +_021E0E86: + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021E0E90 + bl FUN_02021A20 +_021E0E90: + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021E0E9A + bl FUN_02021A20 +_021E0E9A: + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _021E0EA8 + bl FUN_02007534 + mov r0, #0 + str r0, [r5, #0x24] +_021E0EA8: + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021E0EB2 + bl FUN_02016A18 +_021E0EB2: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E0EBC + bl FUN_0201FFC8 +_021E0EBC: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E0EC6 + bl FUN_02016A18 +_021E0EC6: + mov r6, #0 + add r4, r5, #0 +_021E0ECA: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021E0ED4 + bl FUN_0201FFC8 +_021E0ED4: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #2 + blt _021E0ECA + add r0, r5, #0 + bl MOD14_021E10F4 +_021E0EE2: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0EE4 +MOD14_021E0EE4: ; 0x021E0EE4 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + beq _021E0EF2 + ldr r0, [r0, #0x20] + bl FUN_020081C4 +_021E0EF2: + pop {r3, pc} + + thumb_func_start MOD14_021E0EF4 +MOD14_021E0EF4: ; 0x021E0EF4 + push {r4, lr} + sub sp, #0x20 + mov r2, #0 + str r2, [sp] + add r4, r0, #0 + str r2, [sp, #4] + add r0, sp, #0x10 + mov r1, #1 + add r3, r2, #0 + str r2, [sp, #8] + bl FUN_02068C00 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r4, #0x20] + add r1, sp, #0x10 + mov r2, #0x2c + mov r3, #0x54 + bl FUN_020073A0 + str r0, [r4, #0x24] + add sp, #0x20 + pop {r4, pc} + + thumb_func_start MOD14_021E0F28 +MOD14_021E0F28: ; 0x021E0F28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E0F3C + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] + pop {r4, pc} +_021E0F3C: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD14_021E0F40 +MOD14_021E0F40: ; 0x021E0F40 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021E0FA0 + mov r0, #0xa + mov r1, #4 + bl FUN_02018FF4 + str r0, [r5, #4] + cmp r0, #0 + beq _021E0F94 + mov r7, #0 + ldr r6, _021E0FA4 ; =0x021E65F4 + add r4, r7, #0 +_021E0F5E: + ldr r1, [r5, #4] + ldr r0, [r5, #8] + add r1, r1, r4 + add r2, r6, #0 + bl FUN_02019150 + cmp r7, #3 + ldr r0, [r5, #4] + beq _021E0F78 + add r0, r0, r4 + bl FUN_02019270 + b _021E0F82 +_021E0F78: + add r0, r0, r4 + mov r1, #0xc + mov r2, #2 + bl FUN_0201928C +_021E0F82: + add r7, r7, #1 + add r6, #8 + add r4, #0x10 + cmp r7, #4 + blt _021E0F5E + ldr r0, [r5, #8] + mov r1, #2 + bl FUN_02017CD0 +_021E0F94: + add r0, r5, #0 + bl MOD14_021E0FA8 + add r0, r5, #0 + bl MOD14_021E10B0 +_021E0FA0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E0FA4: .word 0x021E65F4 + + thumb_func_start MOD14_021E0FA8 +MOD14_021E0FA8: ; 0x021E0FA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x68 + add r5, r0, #0 + bl FUN_0206E12C + str r0, [sp, #0x1c] + mov r0, #2 + bl FUN_0206E0F0 + str r0, [sp, #0x18] + bl FUN_0206E108 + add r1, r0, #0 + mov r0, #0x60 + str r0, [sp] + mov r3, #0xa + str r3, [sp, #4] + ldr r0, [sp, #0x1c] + mov r2, #1 + lsl r3, r3, #5 + bl FUN_02006930 + mov r0, #0 + mov r6, #0x5e + str r0, [sp, #0x14] + lsl r6, r6, #4 + mov r7, #0x18 + add r4, r5, #0 +_021E0FE0: + add r0, sp, #0x44 + bl FUN_020B1A24 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + lsl r0, r6, #5 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x44 + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + mov r2, #1 + mov r3, #0 + bl FUN_02006B38 + ldr r0, [r5, #0x14] + bl MOD14_021DDD48 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r3, [r5, #0x38] + add r0, sp, #0x20 + add r1, sp, #0x44 + bl MOD14_021DDDB4 + mov r0, #0x2e + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0xc] + add r1, sp, #0x20 + add r2, r7, #0 + mov r3, #0xb0 + bl MOD14_021DDDD4 + str r0, [r4, #0x3c] + cmp r0, #0 + bne _021E103E + bl ErrorHandling +_021E103E: + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [sp, #0x14] + add r6, #8 + add r0, r0, #1 + add r7, #0x24 + add r4, r4, #4 + str r0, [sp, #0x14] + cmp r0, #2 + blo _021E0FE0 + add r0, sp, #0x44 + bl FUN_020B1A24 + mov r3, #0 + mov r0, #0xb9 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + lsl r0, r0, #8 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x44 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0xf + bl FUN_02006AE4 + ldr r0, [r5, #0x14] + bl MOD14_021DDD48 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r3, [r5, #0x2c] + add r0, sp, #0x20 + add r1, sp, #0x44 + bl MOD14_021DDDB4 + mov r0, #0x2f + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0xc] + add r1, sp, #0x20 + mov r2, #0x38 + mov r3, #0xb0 + bl MOD14_021DDDD4 + str r0, [r5, #0x30] + add sp, #0x68 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E10B0 +MOD14_021E10B0: ; 0x021E10B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x4c] + cmp r0, #0 + bne _021E10EE + mov r0, #0xa + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + beq _021E10EA + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _021E10D6 + mov r0, #4 + b _021E10D8 +_021E10D6: + mov r0, #0 +_021E10D8: + strh r0, [r4] + ldr r0, _021E10F0 ; =MOD14_021E115C + str r5, [r4, #8] + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + str r0, [r5, #0x4c] + pop {r3, r4, r5, pc} +_021E10EA: + bl ErrorHandling +_021E10EE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E10F0: .word MOD14_021E115C + + thumb_func_start MOD14_021E10F4 +MOD14_021E10F4: ; 0x021E10F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _021E1110 + bl FUN_0201B6C8 + bl FUN_02016A18 + ldr r0, [r4, #0x4c] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x4c] +_021E1110: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1114 +MOD14_021E1114: ; 0x021E1114 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x4c] + bl FUN_0201B6C8 + add r4, r0, #0 + beq _021E113C + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _021E1132 + mov r0, #4 + b _021E1134 +_021E1132: + mov r0, #0 +_021E1134: + strh r0, [r4] + add r0, r5, #0 + bl MOD14_021E1268 +_021E113C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1140 +MOD14_021E1140: ; 0x021E1140 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + bl FUN_0201B6C8 + cmp r0, #0 + beq _021E1158 + mov r1, #4 + strh r1, [r0] + add r0, r4, #0 + bl MOD14_021E1268 +_021E1158: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E115C +MOD14_021E115C: ; 0x021E115C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrh r0, [r4] + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021E1220 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1174: ; jump table + .short _021E117E - _021E1174 - 2 ; case 0 + .short _021E1190 - _021E1174 - 2 ; case 1 + .short _021E11B0 - _021E1174 - 2 ; case 2 + .short _021E11CE - _021E1174 - 2 ; case 3 + .short _021E1220 - _021E1174 - 2 ; case 4 +_021E117E: + ldr r0, [r5, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E1220 + mov r0, #0 + strh r0, [r4, #2] + mov r0, #1 + strh r0, [r4] +_021E1190: + ldr r0, [r5, #4] + ldrh r2, [r4, #2] + add r0, #0x30 + add r1, r5, #0 + mov r3, #0 + bl MOD14_021E12B8 + ldr r0, [r5, #4] + add r0, #0x30 + bl FUN_02019548 + mov r0, #0 + strh r0, [r4, #4] + mov r0, #2 + strh r0, [r4] + pop {r3, r4, r5, pc} +_021E11B0: + ldrh r0, [r4, #4] + add r0, r0, #1 + strh r0, [r4, #4] + ldrh r0, [r4, #4] + cmp r0, #0x50 + bls _021E1220 + add r0, r4, #0 + bl MOD14_021E1284 + mov r0, #0 + strh r0, [r4, #4] + strh r0, [r4, #6] + mov r0, #3 + strh r0, [r4] + pop {r3, r4, r5, pc} +_021E11CE: + ldrh r0, [r4, #6] + mov r1, #1 + lsl r1, r1, #0xe + add r0, r0, #4 + strh r0, [r4, #6] + add r0, r5, #0 + bl MOD14_021E1224 + ldr r0, [r5, #4] + mov r1, #0 + add r0, #0x30 + mov r2, #4 + add r3, r1, #0 + bl FUN_0201A8C8 + ldr r0, [r5, #4] + add r0, #0x30 + bl FUN_02019548 + ldrh r0, [r4, #6] + cmp r0, #0x10 + blo _021E1220 + ldrh r0, [r4, #2] + cmp r0, #1 + bne _021E1206 + add r0, r5, #0 + bl MOD14_021E1268 +_021E1206: + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + cmp r0, #4 + blo _021E1216 + mov r0, #0 + strh r0, [r4, #2] +_021E1216: + mov r0, #0 + strh r0, [r4, #6] + strh r0, [r4, #4] + mov r0, #2 + strh r0, [r4] +_021E1220: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1224 +MOD14_021E1224: ; 0x021E1224 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r7, r1, #0 + mov r4, #0 +_021E122E: + ldr r0, [r5, #0x3c] + 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] + ldr r0, [sp, #4] + sub r0, r0, r7 + str r0, [sp, #4] + ldr r0, [r5, #0x3c] + bl FUN_02020044 + cmp r4, #0 + bne _021E125A + ldr r0, [r5, #0x3c] + bl FUN_02020128 +_021E125A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E122E + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1268 +MOD14_021E1268: ; 0x021E1268 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E1270: + ldr r0, [r5, #0x3c] + add r1, r6, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E1270 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1284 +MOD14_021E1284: ; 0x021E1284 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + mov r1, #0 + ldr r4, [r0, #4] + add r4, #0x30 + add r0, r4, #0 + bl FUN_02019620 + ldrh r2, [r5, #2] + ldr r1, [r5, #8] + add r0, r4, #0 + mov r3, #0 + bl MOD14_021E12B8 + ldrh r0, [r5, #2] + add r2, r0, #1 + cmp r2, #4 + blo _021E12AC + mov r2, #0 +_021E12AC: + ldr r1, [r5, #8] + add r0, r4, #0 + mov r3, #1 + bl MOD14_021E12B8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E12B8 +MOD14_021E12B8: ; 0x021E12B8 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r1, #0 + lsl r5, r3, #4 + cmp r2, #3 + bls _021E12C6 + b _021E13E6 +_021E12C6: + add r1, r2, r2 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E12D2: ; jump table + .short _021E12DA - _021E12D2 - 2 ; case 0 + .short _021E12EC - _021E12D2 - 2 ; case 1 + .short _021E12E0 - _021E12D2 - 2 ; case 2 + .short _021E12E6 - _021E12D2 - 2 ; case 3 +_021E12DA: + ldr r1, [r4, #0x10] + ldr r2, [r1, #0x68] + b _021E13D2 +_021E12E0: + ldr r1, [r4, #0x10] + ldr r2, [r1, #0x6c] + b _021E13D2 +_021E12E6: + ldr r1, [r4, #0x10] + ldr r2, [r1, #0x70] + b _021E13D2 +_021E12EC: + bl FUN_0206E12C + ldr r0, [r4, #0x10] + add r0, #0x58 + ldrb r0, [r0] + bl FUN_0206E0F0 + bl FUN_0206E12C + add r6, r0, #0 + ldr r0, [r4, #0x10] + add r0, #0x58 + ldrb r0, [r0] + bl FUN_0206E0F0 + mov r2, #0 + add r1, r0, #0 + mov r3, #0x2f + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r6, #0 + lsl r3, r3, #0xa + bl FUN_02006A34 + ldr r0, [r4, #0x3c] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r5, #0xb0 + str r0, [r3] + lsl r0, r5, #0xc + str r0, [sp, #0x14] + ldr r0, [r4, #0x3c] + add r1, r2, #0 + bl FUN_02020044 + ldr r0, [r4, #0x10] + add r0, #0x58 + ldrb r0, [r0] + bl FUN_0206E114 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + add r1, #0xa + bl FUN_02020248 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_020200A0 + ldr r1, [r4, #0x10] + add r0, r1, #0 + add r0, #0x59 + add r1, #0x58 + ldrb r5, [r0] + ldrb r0, [r1] + cmp r0, r5 + beq _021E13C6 + bl FUN_0206E12C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0206E0F0 + mov r2, #0 + add r1, r0, #0 + mov r3, #0xbd + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r6, #0 + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #9 + ldr r1, [sp, #0x10] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x40] + add r1, sp, #0x10 + bl FUN_02020044 + ldr r0, [r4, #0x10] + add r0, #0x59 + ldrb r0, [r0] + bl FUN_0206E114 + add r1, r0, #0 + ldr r0, [r4, #0x40] + add r1, #0xa + bl FUN_02020248 + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_020200A0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} +_021E13C6: + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} +_021E13D2: + str r5, [sp] + mov r1, #0xff + str r1, [sp, #4] + ldr r1, _021E13EC ; =0x00090600 + str r1, [sp, #8] + mov r1, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_021E13E6: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_021E13EC: .word 0x00090600 + + thumb_func_start MOD14_021E13F0 +MOD14_021E13F0: ; 0x021E13F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E144E + ldr r0, [r4, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x10 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x20 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, [r4, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E1430 + add r0, r4, #0 + bl MOD14_021E153C +_021E1430: + ldr r0, [r4, #4] + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x10 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x20 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x30 + bl FUN_02019548 +_021E144E: + pop {r4, pc} + + thumb_func_start MOD14_021E1450 +MOD14_021E1450: ; 0x021E1450 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E14CC + ldr r0, [r4, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x10 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x20 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E148E + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] +_021E148E: + ldr r0, [r4, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E14A0 + add r0, r4, #0 + bl MOD14_021E153C + b _021E14A8 +_021E14A0: + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E16A0 +_021E14A8: + ldr r0, [r4, #4] + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x10 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x20 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x30 + bl FUN_02019548 + add r0, r4, #0 + bl MOD14_021E1114 +_021E14CC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E14D0 +MOD14_021E14D0: ; 0x021E14D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E153A + ldr r0, [r4, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x10 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x20 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E150E + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] +_021E150E: + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E16A0 + ldr r0, [r4, #4] + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x10 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x20 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x30 + bl FUN_02019548 + add r0, r4, #0 + bl MOD14_021E1140 +_021E153A: + pop {r4, pc} + + thumb_func_start MOD14_021E153C +MOD14_021E153C: ; 0x021E153C + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1660 ; =0x0009060F + mov r3, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x18] + bl FUN_0201BDE0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1664 ; =0x0001020F + mov r3, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x14] + add r0, #0x20 + bl FUN_0201BDE0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1664 ; =0x0001020F + mov r3, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x14] + add r0, #0x20 + bl FUN_0201BDE0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _021E15A2 + cmp r0, #1 + beq _021E15BE + b _021E15D8 +_021E15A2: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1668 ; =0x0007080F + mov r3, #0x46 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0x44] + add r0, #0x20 + bl FUN_0201BDE0 + b _021E15D8 +_021E15BE: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E166C ; =0x0003040F + mov r3, #0x46 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0x48] + add r0, #0x20 + bl FUN_0201BDE0 +_021E15D8: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021E1632 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1670 ; =0x00090600 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x1c] + add r0, #0x30 + bl FUN_0201BDE0 + ldrh r2, [r4, #8] + cmp r2, #0 + beq _021E1616 + mov r1, #2 + str r1, [sp] + ldr r0, [r5, #4] + mov r3, #3 + add r0, #0x10 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + bl FUN_0200BA78 +_021E1616: + mov r1, #1 + str r1, [sp] + ldr r0, [r5, #4] + mov r3, #3 + add r0, #0x20 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldrb r2, [r4, #0xa] + ldr r0, [r5, #0x1c] + bl FUN_0200BA78 +_021E1632: + ldr r1, [r4] + add r0, sp, #0x10 + mov r2, #2 + bl FUN_02068B70 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x20] + add r1, sp, #0x10 + mov r2, #0x2c + mov r3, #0x54 + bl FUN_020073A0 + str r0, [r5, #0x24] + ldrb r1, [r4, #0xb] + add r0, r5, #0 + bl MOD14_021E16A0 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E1660: .word 0x0009060F +_021E1664: .word 0x0001020F +_021E1668: .word 0x0007080F +_021E166C: .word 0x0003040F +_021E1670: .word 0x00090600 + + thumb_func_start MOD14_021E1674 +MOD14_021E1674: ; 0x021E1674 + mov r0, #1 + bx lr + + thumb_func_start MOD14_021E1678 +MOD14_021E1678: ; 0x021E1678 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E169C + ldr r0, [r4, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E169C + ldr r0, [r4, #0x10] + bl MOD14_021DC42C + add r1, r0, #0 + ldrb r1, [r1, #0xb] + add r0, r4, #0 + bl MOD14_021E16A0 +_021E169C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E16A0 +MOD14_021E16A0: ; 0x021E16A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + add r4, r1, #0 + ldr r0, [r0, #8] + mov r1, #2 + bl FUN_0201886C + mov ip, r0 + add r2, r0, #0 + mov r0, #1 + ldr r6, _021E1700 ; =0x000004C8 + mov r1, #0 + lsl r7, r0, #0xd +_021E16BC: + add r3, r0, #0 + lsl r3, r1 + tst r3, r4 + beq _021E16CE + add r3, r1, #0 + add r3, #0x98 + orr r3, r7 + strh r3, [r2, r6] + b _021E16DC +_021E16CE: + add r5, r1, #0 + mov r3, #2 + add r5, #0x84 + lsl r3, r3, #0xc + orr r5, r3 + ldr r3, _021E1700 ; =0x000004C8 + strh r5, [r2, r3] +_021E16DC: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #6 + blt _021E16BC + mov r2, #0x99 + lsl r2, r2, #2 + ldr r0, [sp, #4] + str r2, [sp] + lsl r3, r2, #1 + mov r2, ip + add r2, r2, r3 + ldr r0, [r0, #8] + mov r1, #2 + mov r3, #0xc + bl FUN_02017CE8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1700: .word 0x000004C8 + + thumb_func_start MOD14_021E1704 +MOD14_021E1704: ; 0x021E1704 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021E1748 + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + add r4, r0, #0 + ldr r0, [r5, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021E1742 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E174C ; =0x00090600 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x1c] + add r0, #0x30 + bl FUN_0201BDE0 +_021E1742: + add r0, r5, #0 + bl MOD14_021E1114 +_021E1748: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E174C: .word 0x00090600 + + thumb_func_start MOD14_021E1750 +MOD14_021E1750: ; 0x021E1750 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + str r1, [r4, #0xc] + str r3, [r4] + str r2, [r4, #8] + ldr r0, [sp, #0x18] + mov r1, #0x1a + str r0, [r4, #0x2c] + ldr r0, [sp, #0x1c] + mov r2, #0xe + str r0, [r4, #0x20] + ldr r0, [sp, #0x14] + mov r3, #0xa + str r0, [r4, #0x10] + mov r0, #0 + bl FUN_0200A86C + str r0, [r4, #0x14] + mov r0, #0x40 + mov r1, #0xa + bl FUN_020219F4 + str r0, [r4, #0x30] + mov r0, #0x40 + mov r1, #0xa + bl FUN_020219F4 + str r0, [r4, #0x34] + mov r0, #0 + strh r0, [r4, #0x1c] + strh r0, [r4, #0x1e] + str r0, [r4, #0x18] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x19 + mov r2, #1 + add r3, #0x28 + bl FUN_02006BB0 + str r0, [r4, #0x24] + cmp r0, #0 + beq _021E17B6 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021E17B6 + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _021E17BC +_021E17B6: + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_021E17BC: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E17C4 +MOD14_021E17C4: ; 0x021E17C4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021E1814 + mov r6, #0 + add r4, r6, #0 +_021E17D2: + ldr r0, [r5, #0x18] + add r0, r0, r4 + bl FUN_02019178 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #2 + blt _021E17D2 + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _021E17EC + bl FUN_02016A18 +_021E17EC: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E17F6 + bl FUN_0200A8B8 +_021E17F6: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E1800 + bl FUN_02021A20 +_021E1800: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E180A + bl FUN_02021A20 +_021E180A: + ldr r0, [r5, #0x18] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #0x18] +_021E1814: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1818 +MOD14_021E1818: ; 0x021E1818 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + mov r0, #0xa + mov r1, #2 + bl FUN_02018FF4 + str r0, [r6, #0x18] + cmp r0, #0 + beq _021E1848 + mov r7, #0 + ldr r4, _021E1894 ; =0x021E6614 + add r5, r7, #0 +_021E1832: + ldr r1, [r6, #0x18] + ldr r0, [r6] + add r1, r1, r5 + add r2, r4, #0 + bl FUN_02019150 + add r7, r7, #1 + add r4, #8 + add r5, #0x10 + cmp r7, #2 + blt _021E1832 +_021E1848: + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r6] + mov r0, #0x26 + mov r3, #1 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x26 + mov r1, #0x18 + mov r2, #0 + mov r3, #0xe0 + bl FUN_02006930 + ldr r0, [r6, #0x20] + ldr r2, _021E1898 ; =0x00000209 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + ldr r0, [r6] + mov r1, #1 + mov r3, #8 + bl FUN_0200CD68 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E1894: .word 0x021E6614 +_021E1898: .word 0x00000209 + + thumb_func_start MOD14_021E189C +MOD14_021E189C: ; 0x021E189C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r4, r1, #0 + bl FUN_02019270 + ldr r3, [r5, #0x18] + ldrb r0, [r3, #7] + str r0, [sp] + ldrb r0, [r3, #8] + str r0, [sp, #4] + ldrb r1, [r3, #4] + ldrb r2, [r3, #5] + ldrb r3, [r3, #6] + ldr r0, [r5] + bl MOD14_021E1908 + ldr r0, [r5, #0x18] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x30] + add r1, r4, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x2c] + ldr r1, [r5, #0x34] + ldr r2, [r5, #0x30] + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5, #0x18] + ldr r2, [r5, #0x34] + mov r1, #1 + bl FUN_0201BD84 + ldr r0, [r5, #0x18] + bl FUN_02019548 + ldr r0, [r5] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #1 + strh r0, [r5, #0x1c] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1908 +MOD14_021E1908: ; 0x021E1908 + push {r3, r4, r5, r6, r7, lr} + lsl r1, r1, #0x18 + add r7, r3, #0 + lsr r1, r1, #0x18 + add r6, r2, #0 + ldr r4, [sp, #0x18] + ldr r5, [sp, #0x1c] + bl FUN_0201886C + sub r1, r7, #1 + sub r2, r6, #2 + lsl r1, r1, #5 + add r1, r2, r1 + lsl r3, r1, #1 + ldr r2, _021E19AC ; =0x00008209 + add r1, r0, r3 + strh r2, [r0, r3] + add r0, r2, #1 + mov r2, #0 + strh r0, [r1, #2] + cmp r4, #0 + bls _021E1942 + ldr r0, _021E19B0 ; =0x0000820B + add r3, r1, #0 +_021E1938: + add r2, r2, #1 + strh r0, [r3, #4] + add r3, r3, #2 + cmp r2, r4 + blo _021E1938 +_021E1942: + lsl r0, r4, #1 + add r2, r1, r0 + ldr r3, _021E19B4 ; =0x0000820C + mov ip, r0 + strh r3, [r2, #4] + add r0, r3, #1 + strh r0, [r2, #6] + add r0, r3, #2 + strh r0, [r2, #8] + add r1, #0x40 + mov r3, #0 + cmp r5, #0 + bls _021E197E + mov r0, ip + add r2, r0, r1 + ldr r0, _021E19B8 ; =0x0000820F + add r7, r0, #1 +_021E1964: + strh r0, [r1] + strh r7, [r1, #2] + ldr r6, _021E19BC ; =0x00008212 + add r3, r3, #1 + strh r6, [r2, #4] + add r6, r6, #1 + strh r6, [r2, #6] + ldr r6, _021E19C0 ; =0x00008214 + add r1, #0x40 + strh r6, [r2, #8] + add r2, #0x40 + cmp r3, r5 + blo _021E1964 +_021E197E: + ldr r0, _021E19C4 ; =0x00008215 + mov r3, #0 + strh r0, [r1] + add r0, r0, #1 + strh r0, [r1, #2] + cmp r4, #0 + bls _021E199A + ldr r0, _021E19C8 ; =0x00008217 + add r2, r1, #0 +_021E1990: + add r3, r3, #1 + strh r0, [r2, #4] + add r2, r2, #2 + cmp r3, r4 + blo _021E1990 +_021E199A: + mov r0, ip + ldr r2, _021E19CC ; =0x00008218 + add r1, r1, r0 + strh r2, [r1, #4] + add r0, r2, #1 + strh r0, [r1, #6] + add r0, r2, #2 + strh r0, [r1, #8] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E19AC: .word 0x00008209 +_021E19B0: .word 0x0000820B +_021E19B4: .word 0x0000820C +_021E19B8: .word 0x0000820F +_021E19BC: .word 0x00008212 +_021E19C0: .word 0x00008214 +_021E19C4: .word 0x00008215 +_021E19C8: .word 0x00008217 +_021E19CC: .word 0x00008218 + + thumb_func_start MOD14_021E19D0 +MOD14_021E19D0: ; 0x021E19D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldrh r0, [r5, #0x1e] + str r1, [sp, #0x10] + cmp r0, #0 + beq _021E19E8 + ldr r1, [r5, #0x18] + ldr r0, [r5] + add r1, #0x10 + bl MOD14_021E1CA0 +_021E19E8: + ldr r0, [r5, #0x18] + mov r1, #0xf + str r0, [sp, #0x14] + add r0, #0x10 + str r0, [sp, #0x14] + bl FUN_02019620 + ldr r0, [sp, #0x10] + mov r6, #0 + add r0, #0x21 + ldrb r1, [r0] + mov r0, #8 + sub r0, r0, r1 + lsl r7, r0, #4 + cmp r1, #0 + bls _021E1A5C + ldr r4, [sp, #0x10] +_021E1A0A: + ldr r3, [r4] + cmp r3, #0x38 + blt _021E1A26 + cmp r3, #0x3d + bgt _021E1A26 + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, #0x22 + ldrb r2, [r2] + add r0, r5, #0 + sub r3, #0x38 + bl MOD14_021E1A8C + b _021E1A4C +_021E1A26: + add r3, #0x18 + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x30] + add r1, r3, #0 + bl FUN_0200A8E0 + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1A88 ; =0x000B0C0F + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + ldr r2, [r5, #0x30] + mov r3, #0xa + bl FUN_0201BDE0 +_021E1A4C: + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r0, #0x21 + ldrb r0, [r0] + add r7, #0x10 + add r4, r4, #4 + cmp r6, r0 + blo _021E1A0A +_021E1A5C: + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl MOD14_021E1B9C + ldr r1, [sp, #0x10] + add r0, r5, #0 + add r1, #0x21 + str r1, [sp, #0x10] + ldrb r1, [r1] + bl MOD14_021E1AD8 + ldr r0, [sp, #0x14] + bl FUN_02019548 + ldr r0, [r5] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #1 + strh r0, [r5, #0x1e] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1A88: .word 0x000B0C0F + + thumb_func_start MOD14_021E1A8C +MOD14_021E1A8C: ; 0x021E1A8C + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #1 + lsl r0, r3 + tst r0, r2 + beq _021E1A9E + mov r4, #0 + b _021E1AA0 +_021E1A9E: + mov r4, #8 +_021E1AA0: + mov r0, #0x30 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + lsl r0, r3, #4 + add r0, r0, #4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x10] + lsl r2, r3, #0x13 + str r0, [sp, #0x14] + mov r0, #0xff + str r0, [sp, #0x18] + add r0, r1, #0 + ldr r1, [r5, #0x28] + lsl r3, r4, #0x10 + ldr r1, [r1, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_02019684 + add sp, #0x1c + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1AD8 +MOD14_021E1AD8: ; 0x021E1AD8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp, #8] + add r5, r1, #0 + ldr r0, [r0] + mov r1, #1 + bl FUN_0201886C + mov r2, #8 + sub r2, r2, r5 + mov ip, r2 + add r0, #0xe6 + lsl r2, r2, #7 + add r2, r0, r2 + ldr r1, _021E1B40 ; =0x00000251 + mov r3, #0x18 + mov r0, ip + mul r3, r0 + add r4, r1, r3 + mov r6, #0 + lsl r7, r5, #1 + beq _021E1B24 + mov r0, #1 + lsl r0, r0, #0xe +_021E1B08: + mov r3, #0 + add r5, r2, #0 +_021E1B0C: + add r1, r4, #0 + orr r1, r0 + strh r1, [r5] + add r3, r3, #1 + add r4, r4, #1 + add r5, r5, #2 + cmp r3, #0xc + blo _021E1B0C + add r6, r6, #1 + add r2, #0x40 + cmp r6, r7 + blo _021E1B08 +_021E1B24: + mov r0, #0xc + str r0, [sp] + mov r3, ip + lsl r3, r3, #1 + ldr r0, [sp, #8] + str r7, [sp, #4] + ldr r0, [r0] + mov r1, #1 + mov r2, #0x13 + add r3, r3, #3 + bl MOD14_021E1C10 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E1B40: .word 0x00000251 + + thumb_func_start MOD14_021E1B44 +MOD14_021E1B44: ; 0x021E1B44 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #0x1c] + cmp r0, #0 + beq _021E1B5A + ldr r0, [r4] + ldr r1, [r4, #0x18] + bl MOD14_021E1CEC + mov r0, #0 + strh r0, [r4, #0x1c] +_021E1B5A: + ldrh r0, [r4, #0x1e] + cmp r0, #0 + beq _021E1B6E + ldr r1, [r4, #0x18] + ldr r0, [r4] + add r1, #0x10 + bl MOD14_021E1CA0 + mov r0, #0 + strh r0, [r4, #0x1e] +_021E1B6E: + ldr r0, [r4] + mov r1, #1 + bl FUN_02017CD0 + pop {r4, pc} + + thumb_func_start MOD14_021E1B78 +MOD14_021E1B78: ; 0x021E1B78 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #0x1e] + cmp r0, #0 + beq _021E1B90 + ldr r1, [r4, #0x18] + ldr r0, [r4] + add r1, #0x10 + bl MOD14_021E1CA0 + mov r0, #0 + strh r0, [r4, #0x1e] +_021E1B90: + ldr r0, [r4] + mov r1, #1 + bl FUN_02017CD0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1B9C +MOD14_021E1B9C: ; 0x021E1B9C + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + ldr r4, [r0, #0x18] + add r0, r6, #0 + add r0, #0x21 + ldrb r1, [r0] + mov r0, #8 + add r4, #0x10 + sub r0, r0, r1 + lsl r5, r0, #4 + mov r0, #0xa + str r0, [sp] + lsl r0, r1, #0x14 + lsr r0, r0, #0x10 + lsl r3, r5, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0xf + mov r2, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + add r6, #0x20 + ldrb r2, [r6] + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #4 + add r2, r5, r2 + bl FUN_02002218 + add r0, r4, #0 + bl FUN_02019548 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E1BE4 +MOD14_021E1BE4: ; 0x021E1BE4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r4, [r6, #0x18] + add r7, r1, #0 + add r4, #0x10 + mov r5, #0 +_021E1BF0: + add r2, r7, #0 + add r2, #0x22 + ldrb r2, [r2] + add r0, r6, #0 + add r1, r4, #0 + add r3, r5, #0 + bl MOD14_021E1A8C + add r5, r5, #1 + cmp r5, #6 + blt _021E1BF0 + add r0, r4, #0 + bl FUN_02019548 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1C10 +MOD14_021E1C10: ; 0x021E1C10 + push {r3, r4, r5, r6, r7, lr} + lsl r1, r1, #0x18 + add r7, r3, #0 + lsr r1, r1, #0x18 + add r6, r2, #0 + ldr r5, [sp, #0x18] + ldr r4, [sp, #0x1c] + bl FUN_0201886C + sub r1, r7, #1 + sub r2, r6, #1 + lsl r1, r1, #5 + add r1, r2, r1 + mov r2, #0x72 + lsl r3, r1, #1 + lsl r2, r2, #8 + strh r2, [r0, r3] + add r1, r0, r3 + mov r2, #0 + cmp r5, #0 + bls _021E1C48 + ldr r0, _021E1C8C ; =0x00007201 + add r3, r1, #0 +_021E1C3E: + add r2, r2, #1 + strh r0, [r3, #2] + add r3, r3, #2 + cmp r2, r5 + blo _021E1C3E +_021E1C48: + lsl r0, r5, #1 + add r2, r1, r0 + ldr r3, _021E1C90 ; =0x00007202 + add r1, #0x40 + mov r7, #0 + strh r3, [r2, #2] + cmp r4, #0 + bls _021E1C6C + ldr r2, _021E1C94 ; =0x00007205 + add r6, r0, r1 + add r3, r3, #1 +_021E1C5E: + strh r3, [r1] + strh r2, [r6, #2] + add r7, r7, #1 + add r6, #0x40 + add r1, #0x40 + cmp r7, r4 + blo _021E1C5E +_021E1C6C: + ldr r2, _021E1C98 ; =0x00007206 + mov r4, #0 + strh r2, [r1] + cmp r5, #0 + bls _021E1C84 + add r3, r1, #0 + add r2, r2, #1 +_021E1C7A: + add r4, r4, #1 + strh r2, [r3, #2] + add r3, r3, #2 + cmp r4, r5 + blo _021E1C7A +_021E1C84: + ldr r2, _021E1C9C ; =0x00007208 + add r0, r1, r0 + strh r2, [r0, #2] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1C8C: .word 0x00007201 +_021E1C90: .word 0x00007202 +_021E1C94: .word 0x00007205 +_021E1C98: .word 0x00007206 +_021E1C9C: .word 0x00007208 + + thumb_func_start MOD14_021E1CA0 +MOD14_021E1CA0: ; 0x021E1CA0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldrb r1, [r4, #4] + bl FUN_0201886C + ldrb r1, [r4, #5] + mov r5, #0 + sub r2, r1, #1 + ldrb r1, [r4, #6] + sub r1, r1, #1 + lsl r1, r1, #5 + add r1, r2, r1 + lsl r1, r1, #1 + add r2, r0, r1 + ldrb r0, [r4, #8] + add r0, r0, #2 + beq _021E1CEA + add r0, r5, #0 + add r1, r5, #0 +_021E1CC6: + ldrb r6, [r4, #7] + add r3, r1, #0 + add r6, r6, #2 + beq _021E1CDE + add r6, r2, #0 +_021E1CD0: + strh r0, [r6] + ldrb r7, [r4, #7] + add r3, r3, #1 + add r6, r6, #2 + add r7, r7, #2 + cmp r3, r7 + blo _021E1CD0 +_021E1CDE: + ldrb r3, [r4, #8] + add r5, r5, #1 + add r2, #0x40 + add r3, r3, #2 + cmp r5, r3 + blo _021E1CC6 +_021E1CEA: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E1CEC +MOD14_021E1CEC: ; 0x021E1CEC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldrb r1, [r4, #4] + bl FUN_0201886C + ldrb r1, [r4, #5] + mov r5, #0 + sub r2, r1, #2 + ldrb r1, [r4, #6] + sub r1, r1, #1 + lsl r1, r1, #5 + add r1, r2, r1 + lsl r1, r1, #1 + add r2, r0, r1 + ldrb r0, [r4, #8] + add r0, r0, #2 + beq _021E1D36 + add r0, r5, #0 + add r1, r5, #0 +_021E1D12: + ldrb r6, [r4, #7] + add r3, r1, #0 + add r6, r6, #5 + beq _021E1D2A + add r6, r2, #0 +_021E1D1C: + strh r0, [r6] + ldrb r7, [r4, #7] + add r3, r3, #1 + add r6, r6, #2 + add r7, r7, #5 + cmp r3, r7 + blo _021E1D1C +_021E1D2A: + ldrb r3, [r4, #8] + add r5, r5, #1 + add r2, #0x40 + add r3, r3, #2 + cmp r5, r3 + blo _021E1D12 +_021E1D36: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E1D38 +MOD14_021E1D38: ; 0x021E1D38 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + str r1, [r5] + str r3, [r5, #4] + str r2, [r5, #0xc] + ldr r0, [sp, #0x30] + mov r4, #1 + str r0, [r5, #8] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r2, r3, #0 + str r4, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + mov r0, #0x12 + mov r1, #4 + add r3, r4, #0 + bl FUN_0200687C + mov r0, #0x12 + mov r1, #0x1b + add r2, sp, #0x14 + mov r3, #0xa + bl FUN_02006C08 + add r4, r0, #0 + ldr r0, [sp, #0x14] + add r1, r5, #0 + ldr r0, [r0, #0xc] + add r1, #0xe4 + mov r2, #0x40 + bl MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0x12 + mov r1, #0x14 + add r2, sp, #0x14 + mov r3, #0xa + bl FUN_02006C08 + add r4, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r0, #0xc] + add r1, r5, r1 + mov r2, #0x20 + bl MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0x2a + mov r4, #1 + str r0, [sp, #0x10] + add r0, #0xe4 + lsl r1, r1, #4 + lsl r4, r4, #0x10 + mov r7, #7 + str r0, [sp, #0x10] + add r6, r0, r1 +_021E1DBC: + asr r0, r4, #0xc + str r0, [sp] + ldr r0, [sp, #0x10] + ldr r3, _021E1ED8 ; =0x00007FFF + add r1, r6, #0 + mov r2, #0x30 + bl MOD14_021DDE40 + ldr r0, _021E1EDC ; =0x00002492 + sub r7, r7, #1 + sub r4, r4, r0 + sub r6, #0x60 + cmp r7, #1 + bge _021E1DBC + add r0, r5, #0 + mov r1, #3 + add r0, #0xe4 + lsl r1, r1, #8 + bl DC_FlushRange + mov r0, #0xe1 + lsl r0, r0, #2 + mov r1, #0x1a + add r0, r5, r0 + lsl r1, r1, #4 + mov r2, #0x60 + bl GX_LoadOBJPltt + add r0, r5, #0 + mov r1, #0x1a + add r0, #0xe4 + lsl r1, r1, #4 + mov r2, #0x60 + bl GXS_LoadOBJPltt + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x11 + mov r2, #1 + add r3, #0x18 + bl FUN_02006BB0 + str r0, [r5, #0x14] + mov r0, #0xa + str r0, [sp] + mov r0, #0x12 + add r3, r5, #0 + add r1, r0, #0 + mov r2, #1 + add r3, #0x20 + bl FUN_02006C30 + str r0, [r5, #0x1c] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #2 + mov r2, #1 + add r3, #0x38 + bl FUN_02006BDC + str r0, [r5, #0x34] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #3 + mov r2, #1 + add r3, #0x30 + bl FUN_02006BDC + str r0, [r5, #0x2c] + mov r0, #2 + mov r1, #0xd + mov r2, #4 + mov r3, #0xa + bl FUN_0200B870 + str r0, [r5, #0x44] + mov r0, #0x7d + lsl r0, r0, #2 + mov r1, #0xa + bl FUN_020219F4 + ldr r1, _021E1EE0 ; =0x00004BFC + ldr r2, _021E1EE4 ; =0x00000157 + str r0, [r5, r1] + mov r0, #0 + str r0, [r5, #0x10] + ldr r0, [r5, #0x18] + mov r1, #0x20 + ldr r0, [r0, #0x14] + mov r3, #0xa + str r0, [r5, #0x3c] + add r0, r5, #0 + add r0, #0x40 + strh r1, [r0] + add r0, r5, #0 + add r0, #0x42 + strh r1, [r0] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + ldr r1, _021E1EE8 ; =0x00004BF8 + add r2, r5, #0 + str r0, [r5, r1] + mov r1, #0 + add r0, r1, #0 +_021E1E9C: + add r1, r1, #1 + str r0, [r2, #0x48] + add r2, r2, #4 + cmp r1, #0x12 + blt _021E1E9C + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021E1ECC + ldr r0, _021E1EE0 ; =0x00004BFC + ldr r0, [r5, r0] + cmp r0, #0 + bne _021E1ED2 +_021E1ECC: + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E1ED2: + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1ED8: .word 0x00007FFF +_021E1EDC: .word 0x00002492 +_021E1EE0: .word 0x00004BFC +_021E1EE4: .word 0x00000157 +_021E1EE8: .word 0x00004BF8 + + thumb_func_start MOD14_021E1EEC +MOD14_021E1EEC: ; 0x021E1EEC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0xa + mov r1, #3 + bl FUN_02018FF4 + str r0, [r7, #0x10] + cmp r0, #0 + beq _021E1F1A + mov r6, #0 + ldr r4, _021E1F1C ; =0x021E662C + add r5, r6, #0 +_021E1F04: + ldr r1, [r7, #0x10] + ldr r0, [r7, #4] + add r1, r1, r5 + add r2, r4, #0 + bl FUN_02019150 + add r6, r6, #1 + add r4, #8 + add r5, #0x10 + cmp r6, #3 + blo _021E1F04 +_021E1F1A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1F1C: .word 0x021E662C + + thumb_func_start MOD14_021E1F20 +MOD14_021E1F20: ; 0x021E1F20 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021E1F90 ; =0x00004BF8 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021E1F30 + bl FUN_0200A8B8 +_021E1F30: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E1F3A + bl FUN_02016A18 +_021E1F3A: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E1F44 + bl FUN_02016A18 +_021E1F44: + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021E1F4E + bl FUN_02016A18 +_021E1F4E: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E1F58 + bl FUN_02016A18 +_021E1F58: + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021E1F62 + bl FUN_0200B990 +_021E1F62: + ldr r0, _021E1F94 ; =0x00004BFC + ldr r0, [r5, r0] + cmp r0, #0 + beq _021E1F6E + bl FUN_02021A20 +_021E1F6E: + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _021E1F8E + mov r6, #0 + add r4, r6, #0 +_021E1F78: + ldr r0, [r5, #0x10] + add r0, r0, r4 + bl FUN_02019178 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #3 + blt _021E1F78 + ldr r0, [r5, #0x10] + bl FUN_02016A18 +_021E1F8E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E1F90: .word 0x00004BF8 +_021E1F94: .word 0x00004BFC + + thumb_func_start MOD14_021E1F98 +MOD14_021E1F98: ; 0x021E1F98 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl MOD14_021DC464 + add r1, r4, #0 + add r1, #0xe0 + str r0, [r1] + add r0, r4, #0 + bl MOD14_021E223C + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E247C + pop {r4, pc} + + thumb_func_start MOD14_021E1FB8 +MOD14_021E1FB8: ; 0x021E1FB8 + ldr r3, _021E1FBC ; =MOD14_021E24D8 + bx r3 + .align 2, 0 +_021E1FBC: .word MOD14_021E24D8 + + thumb_func_start MOD14_021E1FC0 +MOD14_021E1FC0: ; 0x021E1FC0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl MOD14_021DC464 + add r1, r4, #0 + add r1, #0xe0 + str r0, [r1] + add r0, r4, #0 + bl MOD14_021E2360 + add r0, r4, #0 + bl MOD14_021E2394 + add r0, r4, #0 + bl MOD14_021E240C + pop {r4, pc} + + thumb_func_start MOD14_021E1FE4 +MOD14_021E1FE4: ; 0x021E1FE4 + ldr r3, _021E1FEC ; =MOD14_021E247C + mov r1, #1 + bx r3 + nop +_021E1FEC: .word MOD14_021E247C + + thumb_func_start MOD14_021E1FF0 +MOD14_021E1FF0: ; 0x021E1FF0 + ldr r3, _021E1FF4 ; =MOD14_021E24D8 + bx r3 + .align 2, 0 +_021E1FF4: .word MOD14_021E24D8 + + thumb_func_start MOD14_021E1FF8 +MOD14_021E1FF8: ; 0x021E1FF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp, #8] + ldr r0, [r0, #0xc] + str r1, [sp, #0xc] + str r2, [sp, #0x10] + str r3, [sp, #0x14] + bl MOD14_021DC44C + ldr r1, [sp, #0xc] + str r0, [sp, #0x28] + bl FUN_0206B43C + add r0, #0xd0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xc + str r0, [sp] + ldr r0, [sp, #8] + str r1, [sp, #4] + add r0, #0x3c + mov r1, #9 + mov r2, #0xa + mov r3, #0xe + bl FUN_02018F4C + mov r4, #0 + mov r0, #0xc + str r4, [sp, #0x20] + str r0, [sp, #0x18] +_021E2034: + mov r0, #0 + str r0, [sp, #0x24] + ldr r0, [sp, #8] + mov r6, #0xa + str r0, [sp, #0x2c] + add r0, #0x3c + str r0, [sp, #0x2c] + ldr r0, [sp, #0x18] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x30] +_021E204A: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0xc] + add r2, r4, #0 + bl FUN_0206B5E4 + add r4, r4, #1 + add r5, r0, #0 + bl FUN_02066A6C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + add r7, r0, #0 + beq _021E20C8 + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _021E209A + add r0, r5, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, r7, #0 + mov r2, #0x1b + bl FUN_02068654 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + b _021E20AA +_021E209A: + ldr r0, _021E2174 ; =0x000001EA + cmp r7, r0 + beq _021E20A4 + mov r0, #8 + b _021E20A6 +_021E20A4: + mov r0, #1 +_021E20A6: + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 +_021E20AA: + ldr r0, _021E2178 ; =0x021E6644 + ldr r2, [sp, #0x30] + ldrb r0, [r0, r1] + mov r3, #2 + add r0, #0xe0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #2 + str r0, [sp] + str r1, [sp, #4] + lsl r1, r6, #0x10 + ldr r0, [sp, #0x2c] + lsr r1, r1, #0x10 + bl FUN_02018F4C +_021E20C8: + ldr r1, [sp, #0x1c] + add r0, r5, #0 + bl FUN_02066A94 + ldr r0, [sp, #0x24] + add r6, r6, #2 + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #6 + blo _021E204A + ldr r0, [sp, #0x18] + add r0, r0, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #5 + blo _021E2034 + ldr r0, [sp, #0x48] + cmp r0, #0 + beq _021E2132 + ldr r0, [sp, #0x14] + cmp r0, #1 + beq _021E20FE + cmp r0, #2 + beq _021E2110 + b _021E211E +_021E20FE: + mov r0, #1 + lsl r0, r0, #0x1a + ldr r1, [r0] + ldr r0, _021E217C ; =0x00300010 + and r1, r0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x18] + str r1, [r0, #8] + b _021E211E +_021E2110: + ldr r0, _021E2180 ; =0x04001000 + ldr r1, [r0] + ldr r0, _021E217C ; =0x00300010 + and r1, r0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x18] + str r1, [r0, #8] +_021E211E: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r0, [r0, #0x18] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x48] + lsl r1, r1, #5 + bl FUN_020B1768 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E2132: + ldr r0, [sp, #8] + ldr r1, [r0, #0x18] + ldr r0, [r1, #0x14] + ldr r1, [r1, #0x10] + bl DC_FlushRange + ldr r0, [sp, #0x14] + cmp r0, #1 + beq _021E214C + cmp r0, #2 + beq _021E2160 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E214C: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x18] + lsl r1, r1, #5 + ldr r0, [r2, #0x14] + ldr r2, [r2, #0x10] + bl GX_LoadOBJ + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E2160: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x18] + lsl r1, r1, #5 + ldr r0, [r2, #0x14] + ldr r2, [r2, #0x10] + bl GXS_LoadOBJ + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E2174: .word 0x000001EA +_021E2178: .word 0x021E6644 +_021E217C: .word 0x00300010 +_021E2180: .word 0x04001000 + + thumb_func_start MOD14_021E2184 +MOD14_021E2184: ; 0x021E2184 + ldr r0, [r0, #0x20] + bx lr + + thumb_func_start MOD14_021E2188 +MOD14_021E2188: ; 0x021E2188 + add r0, #0xe0 + ldr r0, [r0] + sub r0, r0, #3 + bpl _021E2192 + add r0, #0x12 +_021E2192: + bx lr + + thumb_func_start MOD14_021E2194 +MOD14_021E2194: ; 0x021E2194 + push {r3, r4} + mov r4, #0 + ldr r1, _021E21AC ; =0x00004BE4 + add r3, r4, #0 +_021E219C: + add r2, r0, r4 + add r4, r4, #1 + strb r3, [r2, r1] + cmp r4, #0x12 + blt _021E219C + pop {r3, r4} + bx lr + nop +_021E21AC: .word 0x00004BE4 + + thumb_func_start MOD14_021E21B0 +MOD14_021E21B0: ; 0x021E21B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + mov r2, #0xf9 + add r4, r1, #0 + lsl r2, r2, #2 + add r3, r5, r2 + lsl r1, r4, #0xa + ldr r0, [r0, #0x14] + add r1, r3, r1 + add r2, #0x1c + bl MIi_CpuCopy32 + mov r1, #0xf9 + lsl r1, r1, #2 + add r0, r5, r1 + add r1, #0x1c + bl DC_FlushRange + ldr r0, _021E21E0 ; =0x00004BE4 + mov r2, #1 + add r1, r5, r4 + strb r2, [r1, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_021E21E0: .word 0x00004BE4 + + thumb_func_start MOD14_021E21E4 +MOD14_021E21E4: ; 0x021E21E4 + push {r4, r5, r6, lr} + sub sp, #0x28 + add r5, r0, #0 + mov r0, #0x63 + lsl r1, r1, #5 + lsl r0, r0, #4 + add r6, r1, r0 + add r4, r2, #0 + ldr r0, _021E2238 ; =0x00004BE4 + add r1, r5, r4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _021E2214 + mov r2, #0xf9 + lsl r2, r2, #2 + add r1, r5, r2 + lsl r0, r4, #0xa + add r0, r1, r0 + lsl r1, r6, #5 + add r2, #0x1c + bl GX_LoadOBJ + add sp, #0x28 + pop {r4, r5, r6, pc} +_021E2214: + add r0, sp, #4 + bl FUN_020B1A24 + add r0, sp, #4 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD14_021E1FF8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E21B0 + add sp, #0x28 + pop {r4, r5, r6, pc} + nop +_021E2238: .word 0x00004BE4 + + thumb_func_start MOD14_021E223C +MOD14_021E223C: ; 0x021E223C + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + add r6, r0, #0 + bl MOD14_021E2194 + ldr r0, [r6] + bl MOD14_021DDD50 + add r4, r0, #0 + ldr r0, [r6] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #4] + mov r1, #0 + str r0, [sp] + str r1, [sp, #4] + ldr r3, [r6, #0x20] + add r0, sp, #0x40 + bl MOD14_021DDDB4 + add r0, r6, #0 + bl MOD14_021E2188 + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0x63 + lsl r0, r0, #4 + str r0, [sp, #8] + add r4, r6, #0 + mov r5, #0x20 +_021E227C: + add r0, sp, #0x1c + bl FUN_020B1A24 + add r0, sp, #0x1c + str r0, [sp] + ldr r2, [sp, #8] + add r0, r6, #0 + add r1, r7, #0 + mov r3, #1 + bl MOD14_021E1FF8 + add r0, sp, #0x1c + str r0, [sp, #0x40] + mov r0, #0xb + str r0, [sp] + mov r0, #1 + mov r2, #2 + str r0, [sp, #4] + lsl r2, r2, #8 + ldr r0, [r6, #8] + add r1, sp, #0x40 + lsr r3, r2, #1 + bl MOD14_021DDDD4 + str r0, [r4, #0x48] + cmp r0, #0 + bne _021E22B6 + bl ErrorHandling +_021E22B6: + ldr r0, [r4, #0x48] + mov r1, #0 + bl FUN_020200A0 + cmp r5, #0 + ble _021E22D4 + lsl r0, r5, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021E22E2 +_021E22D4: + lsl r0, r5, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021E22E2: + bl _ffix + str r0, [sp, #0x10] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, [r4, #0x48] + add r1, sp, #0x10 + bl FUN_02020044 + add r0, r6, #0 + add r1, r7, #0 + bl MOD14_021E21B0 + add r7, r7, #1 + cmp r7, #0x12 + blt _021E230A + mov r7, #0 +_021E230A: + ldr r0, [sp, #8] + add r4, r4, #4 + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r5, #0x20 + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #7 + blt _021E227C + mov r4, #0 + add r5, r6, #0 +_021E2322: + ldr r0, [r6, #0xc] + bl MOD14_021DC44C + add r1, r4, #0 + bl FUN_0206B4E4 + add r1, r5, #0 + add r1, #0x94 + add r4, r4, #1 + add r5, r5, #4 + str r0, [r1] + cmp r4, #0x12 + blt _021E2322 + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E2340 +MOD14_021E2340: ; 0x021E2340 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E2348: + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021E2354 + bl FUN_0201FFC8 + str r6, [r5, #0x48] +_021E2354: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #7 + blt _021E2348 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2360 +MOD14_021E2360: ; 0x021E2360 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl MOD14_021E2188 + add r4, r0, #0 + mov r6, #0 + add r5, r7, #0 +_021E236E: + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD14_021E21E4 + ldr r0, [r5, #0x48] + mov r1, #1 + bl FUN_020200A0 + add r4, r4, #1 + cmp r4, #0x12 + blt _021E2388 + mov r4, #0 +_021E2388: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #7 + blt _021E236E + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2394 +MOD14_021E2394: ; 0x021E2394 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC44C + add r1, r5, #0 + ldr r2, _021E23F0 ; =0x00004BFC + add r1, #0xe0 + ldr r1, [r1] + ldr r2, [r5, r2] + ldr r4, [r5, #0x10] + bl FUN_0206B484 + ldr r1, _021E23F0 ; =0x00004BFC + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #7 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E23F4 ; =0x00020807 + ldr r2, _021E23F0 ; =0x00004BFC + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, r2] + lsr r5, r6, #1 + mov r3, #0x30 + add r0, r4, #0 + sub r3, r3, r5 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021E23F0: .word 0x00004BFC +_021E23F4: .word 0x00020807 + + thumb_func_start MOD14_021E23F8 +MOD14_021E23F8: ; 0x021E23F8 + push {r4, lr} + ldr r4, [r0, #0x10] + mov r1, #7 + add r0, r4, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + + thumb_func_start MOD14_021E240C +MOD14_021E240C: ; 0x021E240C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + ldr r0, [r7, #0x10] + mov r1, #4 + str r0, [sp, #0xc] + add r0, #0x10 + str r0, [sp, #0xc] + bl FUN_02019620 + add r0, r7, #0 + bl MOD14_021E2188 + mov r6, #0 + add r4, r0, #0 + add r5, r6, #0 +_021E242C: + ldr r0, [sp, #0xc] + lsl r1, r4, #2 + str r0, [sp] + add r1, r7, r1 + str r5, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r1, #0x94 + mov r2, #2 + ldr r0, [r7, #0x44] + ldr r1, [r1] + add r3, r2, #0 + bl FUN_0200B9EC + add r4, r4, #1 + cmp r4, #0x12 + blt _021E2450 + mov r4, #0 +_021E2450: + add r6, r6, #1 + add r5, #0x20 + cmp r6, #7 + blt _021E242C + ldr r0, [sp, #0xc] + bl FUN_02019548 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2464 +MOD14_021E2464: ; 0x021E2464 + push {r4, lr} + ldr r4, [r0, #0x10] + mov r1, #4 + add r4, #0x10 + add r0, r4, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E247C +MOD14_021E247C: ; 0x021E247C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0xa + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + beq _021E24B6 + ldr r0, _021E24B8 ; =0x021E6624 + lsl r1, r6, #2 + ldr r0, [r0, r1] + str r5, [r4] + mov r2, #0 + strb r2, [r4, #4] + add r1, r4, #0 + strb r2, [r4, #5] + bl FUN_0200CA44 + add r1, r5, #0 + add r1, #0xdc + add r5, #0xdc + str r0, [r1] + ldr r0, [r5] + cmp r0, #0 + bne _021E24B6 + add r0, r4, #0 + bl FUN_02016A18 +_021E24B6: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E24B8: .word 0x021E6624 + + thumb_func_start MOD14_021E24BC +MOD14_021E24BC: ; 0x021E24BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1] + mov r2, #0 + add r0, #0xdc + str r2, [r0] + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E24D8 +MOD14_021E24D8: ; 0x021E24D8 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _021E24E4 + mov r0, #1 + bx lr +_021E24E4: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021E24E8 +MOD14_021E24E8: ; 0x021E24E8 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r1, #0 + ldrb r2, [r4, #4] + ldr r5, [r4] + cmp r2, #3 + bls _021E24F8 + b _021E260E +_021E24F8: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E2504: ; jump table + .short _021E250C - _021E2504 - 2 ; case 0 + .short _021E2592 - _021E2504 - 2 ; case 1 + .short _021E25B8 - _021E2504 - 2 ; case 2 + .short _021E260A - _021E2504 - 2 ; case 3 +_021E250C: + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + ldrb r0, [r4, #5] + lsl r1, r0, #1 + cmp r1, #0xa + bge _021E2562 + mov r1, #0xa + sub r1, r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0x20 + str r1, [sp, #4] + str r0, [sp, #8] + ldr r2, [r5, #0x30] + ldr r0, [r5, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldrb r6, [r4, #5] + mov r0, #0x20 + mov r3, #0xa + str r0, [sp] + str r6, [sp, #4] + ldr r1, [r5, #0x30] + mov r2, #0 + add r1, #0xc + str r1, [sp, #8] + sub r1, r3, r6 + lsl r1, r1, #0x18 + str r2, [sp, #0xc] + lsr r1, r1, #0x18 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r3, [sp, #0x18] + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02018170 + b _021E2582 +_021E2562: + mov r0, #5 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r2, [r5, #0x30] + ldr r0, [r5, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldrb r0, [r4, #4] + add r0, r0, #1 + strb r0, [r4, #4] +_021E2582: + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #7 + add sp, #0x1c + strb r0, [r4, #5] + pop {r3, r4, r5, r6, pc} +_021E2592: + ldrb r0, [r4, #5] + add r3, r5, #0 + mov r2, #0x60 + add r1, r0, #0 + add r3, #0xe4 + mul r1, r2 + add r0, r3, r1 + mov r1, #0x1a + lsl r1, r1, #4 + bl GX_LoadOBJPltt + add r0, r5, #0 + bl MOD14_021E2360 + ldrb r0, [r4, #4] + add sp, #0x1c + add r0, r0, #1 + strb r0, [r4, #4] + pop {r3, r4, r5, r6, pc} +_021E25B8: + ldrb r0, [r4, #5] + cmp r0, #0 + beq _021E25C2 + sub r0, r0, #1 + strb r0, [r4, #5] +_021E25C2: + ldrb r0, [r4, #5] + add r3, r5, #0 + mov r2, #0x60 + add r1, r0, #0 + add r3, #0xe4 + mul r1, r2 + add r0, r3, r1 + mov r1, #0x1a + lsl r1, r1, #4 + bl GX_LoadOBJPltt + ldrb r0, [r4, #5] + cmp r0, #0 + bne _021E260E + ldr r0, [r5, #0x10] + bl FUN_02019270 + ldr r0, [r5, #0x10] + add r0, #0x10 + bl FUN_02019270 + add r0, r5, #0 + bl MOD14_021E2394 + add r0, r5, #0 + bl MOD14_021E240C + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02017CD0 + ldrb r0, [r4, #4] + add sp, #0x1c + add r0, r0, #1 + strb r0, [r4, #4] + pop {r3, r4, r5, r6, pc} +_021E260A: + bl MOD14_021E24BC +_021E260E: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2614 +MOD14_021E2614: ; 0x021E2614 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r1, #0 + ldrb r2, [r5, #4] + ldr r4, [r5] + cmp r2, #0 + beq _021E262E + cmp r2, #1 + beq _021E264A + cmp r2, #2 + beq _021E26DC + add sp, #0x1c + pop {r4, r5, pc} +_021E262E: + add r0, r4, #0 + bl MOD14_021E2340 + add r0, r4, #0 + bl MOD14_021E23F8 + add r0, r4, #0 + bl MOD14_021E2464 + ldrb r0, [r5, #4] + add sp, #0x1c + add r0, r0, #1 + strb r0, [r5, #4] + pop {r4, r5, pc} +_021E264A: + mov r0, #5 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r4, #4] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + ldrb r0, [r5, #5] + add r0, r0, #1 + strb r0, [r5, #5] + ldrb r0, [r5, #5] + lsl r1, r0, #1 + cmp r1, #0xa + bge _021E26CA + add r1, r0, #5 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0x20 + str r1, [sp, #4] + mov r1, #5 + sub r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r2, [r4, #0x30] + ldr r0, [r4, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldrb r1, [r5, #5] + mov r2, #5 + mov r0, #0x20 + sub r2, r2, r1 + lsl r2, r2, #0x18 + mov r3, #0xa + sub r1, r3, r1 + lsl r1, r1, #0x18 + str r0, [sp] + lsr r2, r2, #0x18 + str r2, [sp, #4] + ldr r2, [r4, #0x30] + lsr r1, r1, #0x18 + add r2, #0xc + str r2, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r3, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02018170 + b _021E26D0 +_021E26CA: + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] +_021E26D0: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02017CD0 + add sp, #0x1c + pop {r4, r5, pc} +_021E26DC: + bl MOD14_021E24BC + add sp, #0x1c + pop {r4, r5, pc} + + thumb_func_start MOD14_021E26E4 +MOD14_021E26E4: ; 0x021E26E4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0xa + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _021E2798 + ldr r0, [r5, #0xc] + bl MOD14_021DC544 + add r6, r0, #0 + ldr r0, [r5, #4] + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + mov r0, #0x18 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + ldr r2, [r5, #0x38] + ldr r0, [r5, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldr r0, [r5, #0x10] + mov r1, #4 + add r0, #0x20 + bl FUN_02019620 + ldr r2, _021E279C ; =0x00004BF8 + add r1, r6, #0 + ldr r0, [r5, r2] + add r2, r2, #4 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E27A0 ; =0x00020104 + ldr r2, _021E27A4 ; =0x00004BFC + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x10] + ldr r2, [r5, r2] + add r0, #0x20 + add r3, r1, #0 + bl FUN_0201BDE0 + ldr r0, [r5, #0x10] + add r0, #0x20 + bl FUN_020191D0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD14_021E2940 + mov r1, #0 + strh r1, [r4, #0x16] + str r5, [r4] + ldr r0, [r5, #4] + str r0, [r4, #4] + str r1, [r4, #8] + mov r1, #0xe + lsl r1, r1, #0xe + str r1, [r4, #0xc] + ldr r0, [r4, #8] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + str r0, [r4, #0x10] + mov r0, #6 + strh r0, [r4, #0x14] + ldr r0, _021E27A8 ; =MOD14_021E27C4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + add r5, #0xdc + str r0, [r5] +_021E2798: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E279C: .word 0x00004BF8 +_021E27A0: .word 0x00020104 +_021E27A4: .word 0x00004BFC +_021E27A8: .word MOD14_021E27C4 + + thumb_func_start MOD14_021E27AC +MOD14_021E27AC: ; 0x021E27AC + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _021E27B8 + mov r0, #1 + bx lr +_021E27B8: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021E27BC +MOD14_021E27BC: ; 0x021E27BC + mov r1, #0 + add r0, #0xdc + str r1, [r0] + bx lr + + thumb_func_start MOD14_021E27C4 +MOD14_021E27C4: ; 0x021E27C4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _021E27D6 + cmp r0, #1 + beq _021E27DC + pop {r3, r4, r5, pc} +_021E27D6: + add r0, r0, #1 + strh r0, [r4, #0x16] + pop {r3, r4, r5, pc} +_021E27DC: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E280A + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + mov r2, #3 + add r3, r1, r0 + str r3, [r4, #8] + ldr r0, [r4, #4] + mov r1, #1 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #8] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + pop {r3, r4, r5, pc} +_021E280A: + ldr r3, [r4, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #0xc] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + ldr r1, _021E2838 ; =MOD14_021E27BC + ldr r2, [r4] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E2838: .word MOD14_021E27BC + + thumb_func_start MOD14_021E283C +MOD14_021E283C: ; 0x021E283C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xa + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _021E287C + mov r1, #0 + strh r1, [r4, #0x16] + str r5, [r4] + ldr r0, [r5, #4] + str r0, [r4, #4] + mov r0, #0xe + lsl r0, r0, #0xe + str r0, [r4, #8] + str r1, [r4, #0xc] + ldr r0, [r4, #8] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + str r0, [r4, #0x10] + mov r0, #6 + strh r0, [r4, #0x14] + ldr r0, _021E2880 ; =MOD14_021E28B4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + add r5, #0xdc + str r0, [r5] +_021E287C: + pop {r3, r4, r5, pc} + nop +_021E2880: .word MOD14_021E28B4 + + thumb_func_start MOD14_021E2884 +MOD14_021E2884: ; 0x021E2884 + push {r4, lr} + add r4, r0, #0 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _021E28A6 + ldr r0, [r4, #4] + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + bl MOD14_021E2A28 + mov r0, #1 + pop {r4, pc} +_021E28A6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E28AC +MOD14_021E28AC: ; 0x021E28AC + mov r1, #0 + add r0, #0xdc + str r1, [r0] + bx lr + + thumb_func_start MOD14_021E28B4 +MOD14_021E28B4: ; 0x021E28B4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E28EC + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + mov r2, #3 + add r3, r1, r0 + str r3, [r4, #8] + ldr r0, [r4, #4] + mov r1, #1 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #8] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021E28EC: + ldr r3, [r4, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #0xc] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02017CD0 + ldr r1, _021E293C ; =MOD14_021E28AC + ldr r2, [r4] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E293C: .word MOD14_021E28AC + + thumb_func_start MOD14_021E2940 +MOD14_021E2940: ; 0x021E2940 + push {r3, r4, r5, r6, lr} + sub sp, #0x54 + add r5, r0, #0 + add r4, r1, #0 + beq _021E29F6 + ldr r0, [r5] + bl MOD14_021DDD50 + add r6, r0, #0 + ldr r0, [r5] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r6, #0x20] + add r1, sp, #0xc + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r3, [r6, #0x1c] + add r0, sp, #0x30 + bl MOD14_021DDDB4 + add r0, sp, #0xc + bl FUN_020B1A24 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + bl FUN_0206E640 + add r1, r0, #0 + mov r0, #0xa + str r0, [sp] + mov r0, #0x10 + mov r2, #0 + add r3, sp, #8 + bl FUN_02006BB0 + add r6, r0, #0 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r1, [r0] + ldr r0, _021E29FC ; =0x00300010 + mov r2, #1 + and r1, r0 + ldr r0, [sp, #8] + add r3, sp, #0xc + str r1, [r0, #8] + mov r1, #0xbe + ldr r0, [sp, #8] + lsl r1, r1, #8 + bl FUN_020B1768 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + add r1, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x10 + mov r2, #1 + mov r3, #0xc0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #8] + add r1, sp, #0x30 + mov r2, #0x12 + mov r3, #0xe0 + bl MOD14_021DDDD4 + add r1, r5, #0 + add r1, #0x90 + add r5, #0x90 + str r0, [r1] + ldr r0, [r5] + cmp r0, #0 + beq _021E29F0 + mov r1, #6 + bl FUN_02020248 +_021E29F0: + add r0, r6, #0 + bl FUN_02016A18 +_021E29F6: + add sp, #0x54 + pop {r3, r4, r5, r6, pc} + nop +_021E29FC: .word 0x00300010 + + thumb_func_start MOD14_021E2A00 +MOD14_021E2A00: ; 0x021E2A00 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + cmp r2, #0 + beq _021E2A24 + mov r2, #0x12 + lsl r2, r2, #0xc + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + str r2, [sp] + add r0, #0x90 + ldr r0, [r0] + add r1, sp, #0 + bl FUN_02020044 +_021E2A24: + add sp, #0xc + pop {pc} + + thumb_func_start MOD14_021E2A28 +MOD14_021E2A28: ; 0x021E2A28 + push {r3, lr} + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0 + beq _021E2A36 + bl FUN_0201FFC8 +_021E2A36: + pop {r3, pc} + + thumb_func_start MOD14_021E2A38 +MOD14_021E2A38: ; 0x021E2A38 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r4, [r5] + ldr r0, [sp, #0x18] + str r6, [r5, #0xc] + str r0, [r5, #8] + str r3, [r5, #4] + add r0, r4, #0 + bl MOD14_021DDD50 + str r0, [r5, #0x38] + add r0, r4, #0 + bl MOD14_021DDD58 + str r0, [r5, #0x10] + add r0, r6, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021E2A6E + mov r0, #0xe + str r0, [r5, #0x30] + mov r0, #0 + b _021E2A74 +_021E2A6E: + mov r0, #9 + str r0, [r5, #0x30] + sub r0, #0x31 +_021E2A74: + str r0, [r5, #0x34] + add r0, r5, #0 + mov r1, #0 + add r0, #0x2b + strb r1, [r0] + str r1, [r5, #0x2c] + add r1, r5, #0 + ldr r0, [r5, #0x38] + add r1, #0x3c + mov r2, #6 + bl MOD14_021E08E4 + mov r1, #9 + mov r0, #0xa + lsl r1, r1, #6 + bl FUN_02016998 + str r0, [r5, #0x1c] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #6 + mov r2, #1 + add r3, #0x18 + bl FUN_02006BDC + str r0, [r5, #0x14] + cmp r0, #0 + beq _021E2AB6 + ldr r1, [r5, #0x1c] + cmp r1, #0 + bne _021E2ABC +_021E2AB6: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021E2ABC: + add r0, r5, #0 + bl MOD14_021E31F4 + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD14_021E2AC8 +MOD14_021E2AC8: ; 0x021E2AC8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021E2AD6 + bl FUN_02016A18 +_021E2AD6: + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _021E2AE0 + bl FUN_02016A18 +_021E2AE0: + add r0, r4, #0 + bl MOD14_021E3390 + pop {r4, pc} + + thumb_func_start MOD14_021E2AE8 +MOD14_021E2AE8: ; 0x021E2AE8 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + mov r2, #0 + add r1, #0x2b + strb r2, [r1] + add r1, r4, #0 + add r1, #0x2b + ldrb r1, [r1] + bl MOD14_021E31A4 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E32F8 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02017CD0 + pop {r4, pc} + + thumb_func_start MOD14_021E2B10 +MOD14_021E2B10: ; 0x021E2B10 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl MOD14_021E32F8 + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x2b + strb r1, [r0] + ldr r0, _021E2B3C ; =MOD14_021E2B50 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2B34 + mov r0, #1 + b _021E2B36 +_021E2B34: + mov r0, #0 +_021E2B36: + str r0, [r4, #0x2c] + pop {r4, pc} + nop +_021E2B3C: .word MOD14_021E2B50 + + thumb_func_start MOD14_021E2B40 +MOD14_021E2B40: ; 0x021E2B40 + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _021E2B4A + mov r0, #1 + bx lr +_021E2B4A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E2B50 +MOD14_021E2B50: ; 0x021E2B50 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #2 + bls _021E2B6C + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + ldr r4, _021E2BAC ; =0xFFFF0000 + sub r1, r0, #2 + b _021E2B72 +_021E2B6C: + lsl r0, r0, #0xf + neg r4, r0 + mov r1, #0 +_021E2B72: + add r0, r5, #0 + add r0, #0x2b + strb r1, [r0] + add r1, r5, #0 + add r1, #0x2b + ldrb r1, [r1] + add r0, r5, #0 + bl MOD14_021E31A4 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02017CD0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E3290 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0 + bne _021E2BA8 + mov r0, #0 + str r0, [r5, #0x2c] + add r0, r6, #0 + bl FUN_0200CAB4 +_021E2BA8: + pop {r4, r5, r6, pc} + nop +_021E2BAC: .word 0xFFFF0000 + + thumb_func_start MOD14_021E2BB0 +MOD14_021E2BB0: ; 0x021E2BB0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E2BCC ; =MOD14_021E2BE4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2BC6 + mov r0, #1 + b _021E2BC8 +_021E2BC6: + mov r0, #0 +_021E2BC8: + str r0, [r4, #0x2c] + pop {r4, pc} + .align 2, 0 +_021E2BCC: .word MOD14_021E2BE4 + + thumb_func_start MOD14_021E2BD0 +MOD14_021E2BD0: ; 0x021E2BD0 + push {r3, lr} + ldr r1, [r0, #0x2c] + cmp r1, #0 + bne _021E2BE0 + bl MOD14_021E3390 + mov r0, #1 + pop {r3, pc} +_021E2BE0: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD14_021E2BE4 +MOD14_021E2BE4: ; 0x021E2BE4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0x18 + bhs _021E2C04 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + mov r4, #1 + lsl r4, r4, #0x10 + add r1, r0, #2 + b _021E2C0A +_021E2C04: + mov r1, #0x1a + sub r0, r1, r0 + lsl r4, r0, #0xf +_021E2C0A: + add r0, r5, #0 + add r0, #0x2b + strb r1, [r0] + add r0, r5, #0 + add r0, #0x2b + ldrb r1, [r0] + cmp r1, #2 + bls _021E2C46 + asr r0, r4, #0xc + lsr r0, r0, #3 + sub r1, r1, #2 + sub r1, r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0xf + lsl r0, r0, #0x18 + str r1, [sp, #4] + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r3, [r5, #0x30] + ldr r0, [r5, #4] + lsl r3, r3, #0x18 + mov r1, #2 + mov r2, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 +_021E2C46: + add r1, r5, #0 + add r1, #0x2b + ldrb r1, [r1] + add r0, r5, #0 + bl MOD14_021E31A4 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02017CD0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E3290 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0x1a + bne _021E2C76 + mov r0, #0 + str r0, [r5, #0x2c] + add r0, r6, #0 + bl FUN_0200CAB4 +_021E2C76: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2C7C +MOD14_021E2C7C: ; 0x021E2C7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r0, [r6, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + add r1, r6, #0 + add r1, #0x28 + ldrb r4, [r1] + cmp r4, r0 + bge _021E2D20 + sub r0, r0, r4 + str r0, [sp, #8] + cmp r4, #5 + bge _021E2CF8 + mov r0, #0x34 + add r1, r4, #0 + mul r1, r0 + add r0, r6, #0 + str r0, [sp, #0xc] + add r0, #0x3c + str r0, [sp, #0xc] + add r5, r0, r1 + add r7, r6, r1 + ldr r0, _021E2D28 ; =0x00000418 + lsl r1, r4, #5 + add r0, r1, r0 + str r0, [sp, #4] +_021E2CB6: + add r1, r4, #1 + mov r0, #0x34 + mul r0, r1 + ldr r1, [sp, #0xc] + str r0, [sp] + add r0, r1, r0 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0930 + ldr r2, [sp, #0xc] + ldr r1, [sp] + ldr r0, [r6, #0x38] + add r1, r2, r1 + mov r2, #1 + bl MOD14_021E08E4 + ldr r0, [r7, #0x3c] + cmp r0, #0 + beq _021E2CE8 + ldr r0, [r6, #0x38] + ldr r2, [sp, #4] + add r1, r5, #0 + bl MOD14_021E0BBC +_021E2CE8: + ldr r0, [sp, #4] + add r4, r4, #1 + add r0, #0x20 + add r5, #0x34 + add r7, #0x34 + str r0, [sp, #4] + cmp r4, #5 + blt _021E2CB6 +_021E2CF8: + add r1, r6, #0 + ldr r0, [sp, #8] + add r1, #0x29 + strb r0, [r1] + add r0, r6, #0 + mov r2, #0 + add r0, #0x2a + strb r2, [r0] + ldr r0, _021E2D2C ; =MOD14_021E2D30 + add r1, r6, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2D18 + mov r0, #1 + b _021E2D1A +_021E2D18: + mov r0, #0 +_021E2D1A: + add sp, #0x10 + str r0, [r6, #0x2c] + pop {r3, r4, r5, r6, r7, pc} +_021E2D20: + mov r0, #0 + str r0, [r6, #0x2c] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E2D28: .word 0x00000418 +_021E2D2C: .word MOD14_021E2D30 + + thumb_func_start MOD14_021E2D30 +MOD14_021E2D30: ; 0x021E2D30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp, #4] + ldr r2, [sp, #4] + str r0, [sp] + add r1, #0x28 + ldr r0, [sp, #4] + add r2, #0x2a + add r0, #0x29 + ldrb r7, [r0] + ldr r0, [sp, #4] + ldrb r1, [r1] + ldrb r3, [r2] + ldr r0, [r0, #0x1c] + lsl r2, r1, #3 + add r3, r3, r2 + mov r2, #0xc + mul r2, r3 + add r4, r0, r2 + mov r6, #0 + cmp r7, #0 + ble _021E2D7C + mov r0, #0x34 + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp, #4] + add r5, r0, r2 +_021E2D66: + ldr r0, [r5, #0x3c] + cmp r0, #0 + beq _021E2D72 + add r1, r4, #0 + bl FUN_02020044 +_021E2D72: + add r6, r6, #1 + add r5, #0x34 + add r4, #0x60 + cmp r6, r7 + blt _021E2D66 +_021E2D7C: + ldr r0, [sp, #4] + add r0, #0x2a + ldrb r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + add r0, #0x2a + strb r1, [r0] + ldr r0, [sp, #4] + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #8 + blo _021E2DA0 + ldr r0, [sp, #4] + mov r1, #0 + str r1, [r0, #0x2c] + ldr r0, [sp] + bl FUN_0200CAB4 +_021E2DA0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E2DA4 +MOD14_021E2DA4: ; 0x021E2DA4 + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _021E2DAE + mov r0, #1 + bx lr +_021E2DAE: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E2DB4 +MOD14_021E2DB4: ; 0x021E2DB4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + sub r4, r0, #1 + add r0, r5, #0 + add r0, #0x28 + ldrb r0, [r0] + cmp r0, r4 + bls _021E2E3A + mov r0, #0x34 + mul r0, r4 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r1, _021E2E44 ; =0x021E6650 + str r0, [r2] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + ldr r2, [r5, #0x34] + add r1, r2, r1 + lsl r2, r1, #0xc + ldr r1, [sp] + sub r2, r2, r1 + asr r1, r2, #2 + lsr r1, r1, #0x1d + add r1, r2, r1 + asr r1, r1, #3 + str r1, [r5, #0x20] + ldr r1, _021E2E48 ; =0x021E6652 + mov r2, #0 + ldrh r0, [r1, r0] + lsl r1, r0, #0xc + ldr r0, [sp, #4] + sub r1, r1, r0 + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + asr r0, r0, #3 + str r0, [r5, #0x24] + add r0, r5, #0 + add r0, #0x2a + strb r2, [r0] + add r0, r5, #0 + add r0, #0x28 + strb r4, [r0] + ldr r0, _021E2E4C ; =MOD14_021E2E60 + add r1, r5, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2E32 + mov r0, #1 + b _021E2E34 +_021E2E32: + mov r0, #0 +_021E2E34: + add sp, #0xc + str r0, [r5, #0x2c] + pop {r4, r5, pc} +_021E2E3A: + mov r0, #0 + str r0, [r5, #0x2c] + add sp, #0xc + pop {r4, r5, pc} + nop +_021E2E44: .word 0x021E6650 +_021E2E48: .word 0x021E6652 +_021E2E4C: .word MOD14_021E2E60 + + thumb_func_start MOD14_021E2E50 +MOD14_021E2E50: ; 0x021E2E50 + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _021E2E5A + mov r0, #1 + bx lr +_021E2E5A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E2E60 +MOD14_021E2E60: ; 0x021E2E60 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x28 + ldrb r1, [r0] + mov r0, #0x34 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + 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] + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x2a + strb r1, [r0] + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #8 + blo _021E2EC6 + add r1, r5, #0 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r5, #0x34] + mov r4, #1 + lsl r2, r1, #2 + ldr r1, _021E2F00 ; =0x021E6650 + ldrh r1, [r1, r2] + add r0, r0, r1 + lsl r0, r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r0, #0x28 + ldrb r0, [r0] + lsl r1, r0, #2 + ldr r0, _021E2F04 ; =0x021E6652 + ldrh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp, #4] + b _021E2ED8 +_021E2EC6: + ldr r1, [sp] + ldr r0, [r5, #0x20] + mov r4, #0 + add r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r5, #0x24] + add r0, r1, r0 + str r0, [sp, #4] +_021E2ED8: + add r0, r5, #0 + add r0, #0x28 + ldrb r1, [r0] + mov r0, #0x34 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + add r1, sp, #0 + bl FUN_02020044 + cmp r4, #0 + beq _021E2EFA + mov r0, #0 + str r0, [r5, #0x2c] + add r0, r6, #0 + bl FUN_0200CAB4 +_021E2EFA: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E2F00: .word 0x021E6650 +_021E2F04: .word 0x021E6652 + + thumb_func_start MOD14_021E2F08 +MOD14_021E2F08: ; 0x021E2F08 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC424 + mov r1, #0x11 + ldr r2, [r5, #0xc] + lsl r1, r1, #4 + ldrh r1, [r2, r1] + cmp r1, r0 + bne _021E2F24 + ldr r0, [r5, #0x10] + bl MOD14_021DEA50 +_021E2F24: + ldr r0, [r5, #0xc] + bl MOD14_021DC3E8 + add r4, r0, #0 + add r2, r5, #0 + mov r1, #0x34 + ldr r0, [r5, #0x38] + add r2, #0x3c + mul r1, r4 + add r1, r2, r1 + mov r2, #1 + bl MOD14_021E0908 + add r5, #0x28 + strb r4, [r5] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E2F44 +MOD14_021E2F44: ; 0x021E2F44 + add r2, r0, #0 + mov r0, #0x5d + mov r3, #0 + lsl r0, r0, #2 + strb r3, [r2, r0] + add r0, r2, #0 + add r0, #0x28 + mov r3, #0x34 + strb r1, [r0] + ldr r0, [r2, #0x38] + add r2, #0x3c + mul r3, r1 + add r1, r2, r3 + ldr r3, _021E2F64 ; =MOD14_021E0C20 + mov r2, #1 + bx r3 + .align 2, 0 +_021E2F64: .word MOD14_021E0C20 + + thumb_func_start MOD14_021E2F68 +MOD14_021E2F68: ; 0x021E2F68 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0x28 + ldrb r1, [r0] + add r4, r5, #0 + mov r0, #0x34 + add r6, r1, #0 + mul r6, r0 + mov r0, #0x5d + lsl r0, r0, #2 + ldrb r0, [r5, r0] + add r4, #0x3c + cmp r0, #0 + beq _021E2F8A + cmp r0, #1 + beq _021E2FD2 + b _021E2FE2 +_021E2F8A: + ldr r0, [r5, #0x38] + add r1, r4, r6 + bl MOD14_021E0C48 + cmp r0, #0 + beq _021E2FE2 + ldr r0, [r5] + bl MOD14_021DDEDC + add r7, r0, #0 + bl MOD14_021DA1B8 + cmp r0, #0 + beq _021E2FE2 + add r0, r7, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + ldr r0, [r5, #0x38] + beq _021E2FBE + add r1, r4, r6 + mov r2, #1 + bl MOD14_021E0908 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E2FBE: + add r1, r4, r6 + mov r2, #2 + bl MOD14_021E0C20 + mov r0, #0x5d + lsl r0, r0, #2 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _021E2FE2 +_021E2FD2: + ldr r0, [r5, #0x38] + add r1, r4, r6 + bl MOD14_021E0C48 + cmp r0, #0 + beq _021E2FE2 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E2FE2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2FE8 +MOD14_021E2FE8: ; 0x021E2FE8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7, #0xc] + bl MOD14_021DC3CC + cmp r0, #1 + bne _021E3020 + ldr r0, [r7, #0xc] + bl MOD14_021DC484 + add r5, r7, #0 + str r0, [sp] + mov r6, #0 + add r4, r7, #0 + add r5, #0x3c +_021E3006: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021E3016 + ldr r0, [r7, #0x38] + ldr r2, [sp] + add r1, r5, #0 + bl MOD14_021E0B54 +_021E3016: + add r6, r6, #1 + add r4, #0x34 + add r5, #0x34 + cmp r6, #6 + blt _021E3006 +_021E3020: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3024 +MOD14_021E3024: ; 0x021E3024 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r5, #0 + mov r0, #0x34 + add r4, r1, #0 + mul r4, r0 + add r6, #0x3c + ldr r0, [r6, r4] + cmp r0, #0 + beq _021E3050 + ldr r0, [r5, #0x38] + add r1, r6, r4 + bl MOD14_021E0BA8 + ldr r0, [r5, #0xc] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, [r5, #0x38] + add r1, r6, r4 + bl MOD14_021E0B54 +_021E3050: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3054 +MOD14_021E3054: ; 0x021E3054 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC3E8 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC45C + add r2, r0, #0 + add r1, r5, #0 + mov r0, #0x34 + add r3, r4, #0 + add r1, #0x3c + mul r3, r0 + ldr r0, [r1, r3] + cmp r0, #0 + beq _021E3080 + ldr r0, [r5, #0x38] + add r1, r1, r3 + bl MOD14_021E0BA4 +_021E3080: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3084 +MOD14_021E3084: ; 0x021E3084 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + mov r0, #0x34 + add r4, r6, #0 + mul r4, r0 + add r0, r5, #0 + add r7, r3, #0 + add r0, #0x3c + str r2, [sp] + add r0, r0, r4 + add r1, r7, #0 + mov r2, #1 + bl MOD14_021E0930 + ldr r0, [r5, #0x38] + ldr r2, [sp] + add r1, r7, #0 + bl MOD14_021E0BBC + add r1, r5, #0 + add r1, #0x3c + ldr r0, [r5, #0x38] + add r1, r1, r4 + mov r2, #1 + bl MOD14_021E08E4 + add r5, #0x28 + strb r6, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E30C0 +MOD14_021E30C0: ; 0x021E30C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0xc] + str r1, [sp] + ldr r0, [r0, #4] + str r2, [sp, #4] + bl FUN_0206B9AC + sub r6, r0, #1 + add r4, r5, #0 + mov r0, #0x34 + add r7, r6, #0 + mul r7, r0 + add r4, #0x3c + ldr r0, [sp, #4] + add r1, r4, r7 + mov r2, #1 + bl MOD14_021E0930 + ldr r2, _021E3110 ; =0x00000418 + lsl r3, r6, #5 + ldr r0, [r5, #0x38] + add r1, r4, r7 + add r2, r3, r2 + bl MOD14_021E0BBC + ldr r0, [r4, r7] + mov r1, #1 + bl FUN_02020238 + ldr r0, [r4, r7] + add r1, r6, #4 + bl MOD14_021DDE24 + ldr r0, [sp] + add r5, #0x28 + strb r0, [r5] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E3110: .word 0x00000418 + + thumb_func_start MOD14_021E3114 +MOD14_021E3114: ; 0x021E3114 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + add r5, r7, #0 + mov r0, #0x34 + add r4, r6, #0 + mul r4, r0 + add r5, #0x3c + add r0, r2, #0 + add r1, r5, r4 + mov r2, #1 + bl MOD14_021E0930 + ldr r2, _021E3154 ; =0x00000418 + lsl r3, r6, #5 + ldr r0, [r7, #0x38] + add r1, r5, r4 + add r2, r3, r2 + bl MOD14_021E0BBC + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_02020238 + ldr r0, [r5, r4] + add r1, r6, #4 + bl MOD14_021DDE24 + add r7, #0x28 + strb r6, [r7] + pop {r3, r4, r5, r6, r7, pc} + nop +_021E3154: .word 0x00000418 + + thumb_func_start MOD14_021E3158 +MOD14_021E3158: ; 0x021E3158 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #6 + blo _021E3166 + bl ErrorHandling +_021E3166: + mov r0, #0x34 + add r5, #0x3c + mul r0, r4 + add r0, r5, r0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E3170 +MOD14_021E3170: ; 0x021E3170 + push {r3, r4} + cmp r1, #6 + bne _021E3184 + ldr r0, [r0, #0x34] + add r0, #0xc0 + str r0, [r2] + mov r0, #0xb8 + str r0, [r3] + pop {r3, r4} + bx lr +_021E3184: + ldr r4, [r0, #0x34] + ldr r0, _021E319C ; =0x021E6650 + lsl r1, r1, #2 + ldrh r0, [r0, r1] + add r0, r4, r0 + str r0, [r2] + ldr r0, _021E31A0 ; =0x021E6652 + ldrh r0, [r0, r1] + str r0, [r3] + pop {r3, r4} + bx lr + nop +_021E319C: .word 0x021E6650 +_021E31A0: .word 0x021E6652 + + thumb_func_start MOD14_021E31A4 +MOD14_021E31A4: ; 0x021E31A4 + push {r3, r4, lr} + sub sp, #0xc + add r3, r0, #0 + cmp r1, #2 + bhi _021E31BE + mov r0, #2 + sub r1, r0, r1 + add r2, r1, #0 + mov r0, #0x1e + mul r2, r0 + mov r1, #0x18 + mov r0, #0 + b _021E31CC +_021E31BE: + cmp r1, #0x1a + bhs _021E31F0 + mov r0, #0x1a + sub r1, r0, r1 + mov r0, #0x18 + mov r2, #0 + sub r0, r0, r1 +_021E31CC: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r4, [r3, #0x18] + ldr r0, [r3, #4] + ldr r3, [r3, #0x30] + add r4, #0xc + lsl r3, r3, #0x18 + mov r1, #2 + add r2, r4, r2 + lsr r3, r3, #0x18 + bl FUN_02018148 +_021E31F0: + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD14_021E31F4 +MOD14_021E31F4: ; 0x021E31F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + str r1, [sp, #4] + mov r0, #0 + ldr r1, _021E328C ; =0x021E6650 + mov ip, r0 +_021E3202: + ldrh r3, [r1] + ldrh r2, [r1, #4] + mov r0, #0 + ldrh r4, [r1, #2] + sub r2, r3, r2 + lsl r3, r2, #0xc + asr r2, r3, #2 + lsr r2, r2, #0x1d + add r2, r3, r2 + ldrh r3, [r1, #6] + asr r2, r2, #3 + mov lr, r2 + sub r3, r4, r3 + lsl r4, r3, #0xc + asr r3, r4, #2 + lsr r3, r3, #0x1d + add r3, r4, r3 + ldr r2, [sp, #4] + add r6, r0, #0 + asr r7, r3, #3 + add r5, r0, #0 +_021E322C: + ldr r3, [sp] + add r5, r5, r7 + ldr r4, [r3, #0x34] + ldrh r3, [r1, #4] + add r0, r0, #1 + add r3, r4, r3 + lsl r4, r3, #0xc + mov r3, lr + add r6, r6, r3 + add r3, r4, r6 + str r3, [r2] + ldrh r3, [r1, #6] + lsl r3, r3, #0xc + add r3, r3, r5 + str r3, [r2, #4] + mov r3, #0 + str r3, [r2, #8] + add r2, #0xc + cmp r0, #7 + blo _021E322C + ldr r3, [sp] + mov r2, #0xc + ldr r4, [r3, #0x34] + ldrh r3, [r1] + mul r2, r0 + ldr r0, [sp, #4] + add r3, r4, r3 + lsl r4, r3, #0xc + ldr r3, [sp, #4] + add r0, r0, r2 + str r4, [r3, r2] + ldrh r2, [r1, #2] + add r1, r1, #4 + lsl r2, r2, #0xc + str r2, [r0, #4] + mov r2, #0 + str r2, [r0, #8] + add r0, r3, #0 + add r0, #0x60 + str r0, [sp, #4] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #5 + blo _021E3202 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E328C: .word 0x021E6650 + + thumb_func_start MOD14_021E3290 +MOD14_021E3290: ; 0x021E3290 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + mov r7, #0 +_021E329A: + ldr r0, [r5, #0x3c] + cmp r0, #0 + beq _021E32F2 + 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] + ldr r0, [sp, #4] + add r0, r0, r4 + str r0, [sp, #4] + ldr r0, [r5, #0x3c] + bl FUN_02020044 + cmp r4, #0 + bge _021E32D8 + mov r0, #0xd + ldr r1, [sp, #4] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _021E32EA + ldr r0, [r5, #0x3c] + mov r1, #1 + bl FUN_020200A0 + b _021E32EA +_021E32D8: + mov r0, #0xd + ldr r1, [sp, #4] + lsl r0, r0, #0x10 + cmp r1, r0 + blt _021E32EA + ldr r0, [r5, #0x3c] + mov r1, #0 + bl FUN_020200A0 +_021E32EA: + add r7, r7, #1 + add r5, #0x34 + cmp r7, #6 + blt _021E329A +_021E32F2: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E32F8 +MOD14_021E32F8: ; 0x021E32F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x24] + str r1, [sp, #0x10] + cmp r1, #0 + beq _021E330A + mov r0, #0 + str r0, [sp, #0x14] + b _021E330E +_021E330A: + mov r0, #0xd0 + str r0, [sp, #0x14] +_021E330E: + ldr r0, [sp, #0x24] + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + mov r4, #0 + str r0, [sp, #0x20] + cmp r0, #0 + ble _021E3384 + ldr r0, [sp, #0x24] + ldr r7, _021E3388 ; =0x00000418 + str r0, [sp, #0x1c] + add r0, #0x3c + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + ldr r5, _021E338C ; =0x021E6650 + str r0, [sp, #0x18] +_021E3330: + ldr r0, [sp, #0x24] + add r1, r4, #0 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9B0 + add r1, r0, #0 + mov r0, #1 + str r0, [sp] + add r0, r4, #4 + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + str r7, [sp, #8] + str r0, [sp, #0xc] + ldr r2, [sp, #0x24] + ldr r0, [sp, #0x24] + ldr r3, [r2, #0x34] + ldrh r2, [r5] + ldrh r6, [r5, #2] + ldr r0, [r0, #0x38] + add r2, r3, r2 + ldr r3, [sp, #0x14] + add r3, r3, r6 + bl MOD14_021E0940 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x10] + ldr r0, [r0, #0x3c] + bl FUN_020200A0 + ldr r0, [sp, #0x1c] + add r4, r4, #1 + add r0, #0x34 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r7, #0x20 + add r0, #0x34 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r5, r5, #4 + cmp r4, r0 + blt _021E3330 +_021E3384: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E3388: .word 0x00000418 +_021E338C: .word 0x021E6650 + + thumb_func_start MOD14_021E3390 +MOD14_021E3390: ; 0x021E3390 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + mov r6, #0 + str r0, [sp] + cmp r0, #0 + ble _021E33C6 + add r5, r7, #0 + add r4, r7, #0 + add r5, #0x3c +_021E33AA: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021E33BA + ldr r0, [r7, #0x38] + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0908 +_021E33BA: + ldr r0, [sp] + add r6, r6, #1 + add r4, #0x34 + add r5, #0x34 + cmp r6, r0 + blt _021E33AA +_021E33C6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E33C8 +MOD14_021E33C8: ; 0x021E33C8 + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r6, r0, #0 + add r0, r5, #0 + add r7, r1, #0 + str r3, [sp] + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021E33E4 + mov r0, #0 + str r0, [r6] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E33E4: + mov r0, #0xa + mov r1, #0xf4 + bl FUN_02016998 + add r4, r0, #0 + beq _021E3460 + ldr r0, [sp] + mov r1, #0xa + str r0, [r4, #8] + str r7, [r4] + ldr r0, [sp, #0x18] + str r5, [r4, #4] + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #0x20 + bl FUN_020219F4 + add r1, r4, #0 + add r1, #0x84 + str r0, [r1] + add r5, #0x9c + ldrb r0, [r5] + mov r1, #0 + add r2, r1, #0 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + str r1, [r4, #0x2c] + str r1, [r4, #0x30] + add r0, r4, #0 +_021E3436: + add r1, r1, #1 + str r2, [r0, #0x34] + add r0, r0, #4 + cmp r1, #8 + blt _021E3436 + add r0, r4, #0 + mov r1, #0 +_021E3444: + add r2, r2, #1 + str r1, [r0, #0x54] + add r0, r0, #4 + cmp r2, #0xa + blt _021E3444 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + bl MOD14_021E3464 + str r4, [r6] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E3460: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E3464 +MOD14_021E3464: ; 0x021E3464 + push {r4, r5, r6, r7} + add r1, r0, #0 + mov r2, #0 + add r1, #0xd4 + strb r2, [r1] + add r1, r0, #0 + mov r4, #0x5a + mov r3, #0x10 + add r1, #0xe4 + strb r3, [r1] + ldr r1, _021E34BC ; =0x020EDF50 + mov r3, #1 + lsl r4, r4, #8 + mov r6, #0x10 +_021E3480: + add r2, r2, r4 + asr r5, r2, #0xc + lsl r5, r5, #2 + ldr r5, [r1, r5] + lsl r5, r5, #4 + asr r7, r5, #0xc + add r5, r0, r3 + add r5, #0xd4 + strb r7, [r5] + add r5, r0, r3 + add r5, #0xd4 + ldrb r5, [r5] + sub r7, r6, r5 + add r5, r0, r3 + add r5, #0xe4 + add r3, r3, #1 + strb r7, [r5] + cmp r3, #0xf + blt _021E3480 + add r1, r0, r3 + add r0, r0, r3 + mov r2, #0x10 + add r1, #0xd4 + strb r2, [r1] + mov r1, #0 + add r0, #0xe4 + strb r1, [r0] + pop {r4, r5, r6, r7} + bx lr + nop +_021E34BC: .word 0x020EDF50 + + thumb_func_start MOD14_021E34C0 +MOD14_021E34C0: ; 0x021E34C0 + push {r4, r5, r6, lr} + add r6, r0, #0 + beq _021E3558 + add r0, #0x88 + bl FUN_02019178 + add r0, r6, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _021E34DA + bl FUN_02016A18 +_021E34DA: + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + beq _021E34E8 + bl FUN_02016A18 +_021E34E8: + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021E34F6 + bl FUN_02016A18 +_021E34F6: + add r0, r6, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _021E3504 + bl FUN_02016A18 +_021E3504: + ldr r0, [r6, #0x2c] + cmp r0, #0 + beq _021E350E + bl FUN_0201FFC8 +_021E350E: + ldr r0, [r6, #0x30] + cmp r0, #0 + beq _021E3518 + bl FUN_0201FFC8 +_021E3518: + add r0, r6, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E3526 + bl FUN_02021A20 +_021E3526: + mov r4, #0 + add r5, r6, #0 +_021E352A: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E3534 + bl FUN_0201FFC8 +_021E3534: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E352A + mov r5, #0 + add r4, r6, #0 +_021E3540: + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _021E354A + bl FUN_0201FFC8 +_021E354A: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #0xa + blt _021E3540 + add r0, r6, #0 + bl FUN_02016A18 +_021E3558: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E355C +MOD14_021E355C: ; 0x021E355C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + beq _021E365C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x67 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x64 + mov r3, #7 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x65 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x66 + mov r3, #5 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + ldr r0, [r4, #8] + mov r1, #4 + mov r3, #1 + bl FUN_02017F48 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #8] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #8] + mov r1, #4 + bl FUN_02017CD0 + ldr r3, [r4, #0x10] + ldr r0, [r4, #8] + lsl r5, r3, #2 + ldr r3, _021E3660 ; =0x021E6674 + mov r1, #5 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + mov r3, #0 + add r1, r4, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r4, #8] + add r1, #0x88 + mov r2, #4 + bl FUN_02019064 + add r0, r4, #0 + add r0, #0x88 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x88 + bl FUN_020191D0 + add r0, r4, #0 + bl MOD14_021E4764 + mov r0, #0x60 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x68 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + add r0, r4, #0 + bl MOD14_021E3664 +_021E365C: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021E3660: .word 0x021E6674 + + thumb_func_start MOD14_021E3664 +MOD14_021E3664: ; 0x021E3664 + push {r3, r4, lr} + sub sp, #0x5c + add r4, r0, #0 + bl MOD14_021E36FC + add r0, sp, #0x14 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x14 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0x72 + mov r2, #1 + bl FUN_02006AE4 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + add r3, r4, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + add r3, #0x9c + add r2, r4, #0 + ldr r3, [r3] + add r0, sp, #0x38 + add r1, sp, #0x14 + add r2, #0x18 + bl MOD14_021DDDB4 + mov r0, #0x31 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r3, #0x8e + ldr r0, [r4, #0xc] + add r1, sp, #0x38 + mov r2, #0 + lsl r3, r3, #2 + bl MOD14_021DDDD4 + str r0, [r4, #0x2c] + mov r0, #0x31 + mov r3, #0x8e + str r0, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r0, [r4, #0xc] + add r1, sp, #0x38 + add r2, #0xfe + lsl r3, r3, #2 + bl MOD14_021DDDD4 + str r0, [r4, #0x30] + mov r1, #1 + bl FUN_02020100 + ldr r0, [r4, #4] + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021E36F6 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_02020130 +_021E36F6: + add sp, #0x5c + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E36FC +MOD14_021E36FC: ; 0x021E36FC + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x73 + mov r2, #1 + add r3, #0x9c + bl FUN_02006C30 + add r1, r4, #0 + add r1, #0x98 + str r0, [r1] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x74 + mov r2, #1 + add r3, #0xa4 + bl FUN_02006C5C + add r1, r4, #0 + add r1, #0xa0 + str r0, [r1] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x76 + mov r2, #1 + add r3, #0xac + bl FUN_02006C30 + add r1, r4, #0 + add r1, #0xa8 + str r0, [r1] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x77 + mov r2, #1 + add r3, #0xb4 + bl FUN_02006C5C + add r1, r4, #0 + add r1, #0xb0 + str r0, [r1] + add r0, r4, #0 + add r0, #0x18 + bl FUN_020B19DC + mov r0, #0xa + str r0, [sp] + add r4, #0x18 + mov r0, #0x12 + mov r1, #0x78 + mov r2, #2 + mov r3, #0 + str r4, [sp, #4] + bl FUN_02006A8C + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3784 +MOD14_021E3784: ; 0x021E3784 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + mov r2, #0 + bl MOD14_021DDD40 + str r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3798 +MOD14_021E3798: ; 0x021E3798 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x14] + pop {r4, pc} + + thumb_func_start MOD14_021E37A8 +MOD14_021E37A8: ; 0x021E37A8 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021E37B2 + mov r0, #1 + bx lr +_021E37B2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E37B8 +MOD14_021E37B8: ; 0x021E37B8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + beq _021E388A + ldr r1, [r5, #4] + add r1, #0x9c + ldrb r6, [r1] + ldr r1, [r5, #0x10] + cmp r1, r6 + beq _021E388A + add r1, r5, #0 + add r4, r5, #0 + add r1, #0xb8 + str r5, [r1] + add r4, #0xb8 + mov r1, #0 + str r1, [r4, #8] + str r1, [r4, #4] + cmp r6, #0 + beq _021E37E8 + cmp r6, #1 + beq _021E3800 + cmp r6, #2 + beq _021E3822 + b _021E384A +_021E37E8: + mov r1, #8 + strh r1, [r4, #0xc] + ldr r7, _021E388C ; =MOD14_021E3AB0 + bl MOD14_021E3DD8 + add r0, r5, #0 + bl MOD14_021E3EBC + add r0, r5, #0 + bl MOD14_021E4764 + b _021E3852 +_021E3800: + mov r0, #8 + strh r0, [r4, #0xc] + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E380E + ldr r7, _021E3890 ; =MOD14_021E38AC + b _021E3816 +_021E380E: + ldrh r0, [r4, #0xc] + ldr r7, _021E3894 ; =MOD14_021E3984 + add r0, #8 + strh r0, [r4, #0xc] +_021E3816: + add r0, r5, #0 + bl MOD14_021E3EBC + ldr r0, [r5, #0x2c] + str r0, [r4, #8] + b _021E3852 +_021E3822: + mov r0, #8 + strh r0, [r4, #0xc] + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E3830 + ldr r7, _021E3890 ; =MOD14_021E38AC + b _021E3838 +_021E3830: + ldrh r0, [r4, #0xc] + ldr r7, _021E3894 ; =MOD14_021E3984 + add r0, #8 + strh r0, [r4, #0xc] +_021E3838: + ldr r0, [r5, #0x30] + str r0, [r4, #8] + add r0, r5, #0 + bl MOD14_021E3DD8 + add r0, r5, #0 + bl MOD14_021E4764 + b _021E3852 +_021E384A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_021E3852: + str r6, [r5, #0x10] + ldr r0, [r5, #8] + mov r1, #5 + bl FUN_02017B48 + lsl r0, r0, #0xc + ldr r1, _021E3898 ; =0x021E6674 + lsl r2, r6, #2 + str r0, [r4, #0x10] + ldr r6, [r1, r2] + ldrh r1, [r4, #0xc] + sub r0, r6, r0 + bl _s32_div_f + str r0, [r4, #0x14] + asr r0, r6, #0xc + str r0, [r4, #0x18] + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E3880 + mov r1, #1 + bl FUN_02020130 +_021E3880: + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD14_021E3784 +_021E388A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E388C: .word MOD14_021E3AB0 +_021E3890: .word MOD14_021E38AC +_021E3894: .word MOD14_021E3984 +_021E3898: .word 0x021E6674 + + thumb_func_start MOD14_021E389C +MOD14_021E389C: ; 0x021E389C + push {r3, lr} + cmp r0, #0 + beq _021E38A8 + bl MOD14_021E37A8 + pop {r3, pc} +_021E38A8: + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD14_021E38AC +MOD14_021E38AC: ; 0x021E38AC + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + cmp r0, #3 + bhi _021E3974 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E38C4: ; jump table + .short _021E38CC - _021E38C4 - 2 ; case 0 + .short _021E38DE - _021E38C4 - 2 ; case 1 + .short _021E3924 - _021E38C4 - 2 ; case 2 + .short _021E3942 - _021E38C4 - 2 ; case 3 +_021E38CC: + ldr r0, [r4, #8] + bl FUN_02020388 + cmp r0, #0 + bne _021E3974 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E38DE: + ldrh r0, [r4, #0xc] + cmp r0, #0 + beq _021E3900 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x14] + mov r2, #0 + add r3, r1, r0 + str r3, [r4, #0x10] + ldr r0, [r5, #8] + mov r1, #5 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0xc] + sub r0, r0, #1 + strh r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_021E3900: + ldr r0, [r5, #8] + ldr r3, [r4, #0x18] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021E3978 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3924: + ldr r3, [r5, #0x10] + ldr r0, [r5, #8] + lsl r5, r3, #2 + ldr r3, _021E397C ; =0x021E6668 + mov r1, #6 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + mov r0, #0 + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3942: + mov r1, #0xe + ldrsh r3, [r4, r1] + add r0, r5, r3 + add r0, #0xd4 + ldrb r2, [r0] + add r0, r5, r3 + add r0, #0xe4 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _021E3980 ; =0x04001052 + strh r2, [r0] + ldrsh r0, [r4, r1] + add r0, r0, #1 + strh r0, [r4, #0xe] + ldrsh r0, [r4, r1] + cmp r0, #0x10 + blt _021E3974 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02020130 + add r0, r5, #0 + bl MOD14_021E3798 +_021E3974: + pop {r3, r4, r5, pc} + nop +_021E3978: .word 0x04001050 +_021E397C: .word 0x021E6668 +_021E3980: .word 0x04001052 + + thumb_func_start MOD14_021E3984 +MOD14_021E3984: ; 0x021E3984 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + cmp r0, #4 + bls _021E3992 + b _021E3AA2 +_021E3992: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E399E: ; jump table + .short _021E39A8 - _021E399E - 2 ; case 0 + .short _021E39CE - _021E399E - 2 ; case 1 + .short _021E3A0C - _021E399E - 2 ; case 2 + .short _021E3A52 - _021E399E - 2 ; case 3 + .short _021E3A70 - _021E399E - 2 ; case 4 +_021E39A8: + ldr r0, [r4, #8] + bl FUN_02020388 + cmp r0, #0 + bne _021E3AA2 + mov r0, #0 + str r0, [sp] + ldr r0, _021E3AA4 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + mov r0, #0xf + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E39CE: + mov r1, #0xe + ldrsh r0, [r4, r1] + sub r0, r0, #1 + strh r0, [r4, #0xe] + ldrsh r3, [r4, r1] + add r0, r5, r3 + add r0, #0xd4 + ldrb r2, [r0] + add r0, r5, r3 + add r0, #0xe4 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _021E3AA8 ; =0x04001052 + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _021E3AA2 + ldr r3, [r5, #0x10] + ldr r0, [r5, #8] + lsl r5, r3, #2 + ldr r3, _021E3AAC ; =0x021E6668 + mov r1, #6 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3A0C: + ldrh r0, [r4, #0xc] + cmp r0, #0 + beq _021E3A2E + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x14] + mov r2, #0 + add r3, r1, r0 + str r3, [r4, #0x10] + ldr r0, [r5, #8] + mov r1, #5 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0xc] + sub r0, r0, #1 + strh r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_021E3A2E: + ldr r0, [r5, #8] + ldr r3, [r4, #0x18] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021E3AA4 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3A52: + ldr r3, [r5, #0x10] + ldr r0, [r5, #8] + lsl r5, r3, #2 + ldr r3, _021E3AAC ; =0x021E6668 + mov r1, #6 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + mov r0, #0 + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3A70: + mov r1, #0xe + ldrsh r3, [r4, r1] + add r0, r5, r3 + add r0, #0xd4 + ldrb r2, [r0] + add r0, r5, r3 + add r0, #0xe4 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _021E3AA8 ; =0x04001052 + strh r2, [r0] + ldrsh r0, [r4, r1] + add r0, r0, #1 + strh r0, [r4, #0xe] + ldrsh r0, [r4, r1] + cmp r0, #0x10 + blt _021E3AA2 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02020130 + add r0, r5, #0 + bl MOD14_021E3798 +_021E3AA2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E3AA4: .word 0x04001050 +_021E3AA8: .word 0x04001052 +_021E3AAC: .word 0x021E6668 + + thumb_func_start MOD14_021E3AB0 +MOD14_021E3AB0: ; 0x021E3AB0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #4] + ldr r0, [r4] + cmp r1, #3 + bhi _021E3B4C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E3AC8: ; jump table + .short _021E3AD0 - _021E3AC8 - 2 ; case 0 + .short _021E3ADA - _021E3AC8 - 2 ; case 1 + .short _021E3B12 - _021E3AC8 - 2 ; case 2 + .short _021E3B48 - _021E3AC8 - 2 ; case 3 +_021E3AD0: + mov r1, #0xf + strh r1, [r4, #0xe] + ldr r1, [r4, #4] + add r1, r1, #1 + str r1, [r4, #4] +_021E3ADA: + mov r2, #0xe + ldrsh r1, [r4, r2] + sub r1, r1, #1 + strh r1, [r4, #0xe] + ldrsh r5, [r4, r2] + add r1, r0, r5 + add r1, #0xd4 + ldrb r3, [r1] + add r1, r0, r5 + add r1, #0xe4 + ldrb r1, [r1] + lsl r1, r1, #8 + orr r3, r1 + ldr r1, _021E3B50 ; =0x04001052 + strh r3, [r1] + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _021E3B4C + mov r2, #0 + ldr r0, [r0, #8] + mov r1, #6 + add r3, r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3B12: + ldrh r1, [r4, #0xc] + cmp r1, #0 + beq _021E3B34 + ldr r2, [r4, #0x10] + ldr r1, [r4, #0x14] + add r3, r2, r1 + str r3, [r4, #0x10] + ldr r0, [r0, #8] + mov r1, #5 + mov r2, #0 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0xc] + sub r0, r0, #1 + strh r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_021E3B34: + ldr r0, [r0, #8] + ldr r3, [r4, #0x18] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3B48: + bl MOD14_021E3798 +_021E3B4C: + pop {r3, r4, r5, pc} + nop +_021E3B50: .word 0x04001052 + + thumb_func_start MOD14_021E3B54 +MOD14_021E3B54: ; 0x021E3B54 + push {r4, lr} + add r4, r0, #0 + beq _021E3B7C + ldr r1, [r4, #0x10] + cmp r1, #1 + beq _021E3B66 + cmp r1, #2 + beq _021E3B72 + pop {r4, pc} +_021E3B66: + bl MOD14_021E3C94 + add r0, r4, #0 + bl MOD14_021E41C0 + pop {r4, pc} +_021E3B72: + bl MOD14_021E3E1C + add r0, r4, #0 + bl MOD14_021E44E0 +_021E3B7C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3B80 +MOD14_021E3B80: ; 0x021E3B80 + push {r4, lr} + add r4, r0, #0 + beq _021E3BA2 + bl MOD14_021E37A8 + cmp r0, #0 + beq _021E3B9E + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _021E3B9A + add r0, r4, #0 + bl MOD14_021E4790 +_021E3B9A: + mov r0, #1 + pop {r4, pc} +_021E3B9E: + mov r0, #0 + pop {r4, pc} +_021E3BA2: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3BA8 +MOD14_021E3BA8: ; 0x021E3BA8 + push {r4, lr} + add r4, r0, #0 + beq _021E3BD0 + ldr r1, [r4, #0x10] + cmp r1, #1 + beq _021E3BBA + cmp r1, #2 + beq _021E3BCC + pop {r4, pc} +_021E3BBA: + bl MOD14_021E4764 + add r0, r4, #0 + bl MOD14_021E3D38 + add r0, r4, #0 + bl MOD14_021E43E8 + pop {r4, pc} +_021E3BCC: + bl MOD14_021E46E4 +_021E3BD0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3BD4 +MOD14_021E3BD4: ; 0x021E3BD4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD14_021DC46C + cmp r0, #0 + ble _021E3C04 + add r2, r4, #0 + add r2, #0x80 + ldr r2, [r2] + add r1, r4, #0 + sub r2, r2, r0 + add r0, r4, #0 + add r0, #0x80 + add r4, #0x80 + str r2, [r0] + ldr r0, [r4] + add r1, #0x80 + cmp r0, #0 + bge _021E3C24 + ldr r0, [r1] + add r0, #0xa + str r0, [r1] + pop {r4, pc} +_021E3C04: + add r2, r4, #0 + add r2, #0x80 + ldr r2, [r2] + add r1, r4, #0 + sub r2, r2, r0 + add r0, r4, #0 + add r0, #0x80 + add r4, #0x80 + str r2, [r0] + ldr r0, [r4] + add r1, #0x80 + cmp r0, #0xa + blt _021E3C24 + ldr r0, [r1] + sub r0, #0xa + str r0, [r1] +_021E3C24: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3C28 +MOD14_021E3C28: ; 0x021E3C28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD14_021DC46C + add r2, r4, #0 + add r2, #0x80 + ldr r2, [r2] + add r1, r4, #0 + add r2, r2, r0 + add r0, r4, #0 + add r0, #0x80 + add r4, #0x80 + str r2, [r0] + ldr r0, [r4] + add r1, #0x80 + cmp r0, #0 + bge _021E3C54 + ldr r0, [r1] + add r0, #8 + str r0, [r1] + pop {r4, pc} +_021E3C54: + cmp r0, #8 + blt _021E3C5E + ldr r0, [r1] + sub r0, #8 + str r0, [r1] +_021E3C5E: + pop {r4, pc} + + thumb_func_start MOD14_021E3C60 +MOD14_021E3C60: ; 0x021E3C60 + push {r4, lr} + add r4, r0, #0 + beq _021E3C90 + bl MOD14_021E37A8 + cmp r0, #0 + beq _021E3C8C + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _021E3C82 + add r0, r4, #0 + bl MOD14_021E4790 + add r0, r4, #0 + bl MOD14_021E3BD4 + b _021E3C88 +_021E3C82: + add r0, r4, #0 + bl MOD14_021E3C28 +_021E3C88: + mov r0, #1 + pop {r4, pc} +_021E3C8C: + mov r0, #0 + pop {r4, pc} +_021E3C90: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD14_021E3C94 +MOD14_021E3C94: ; 0x021E3C94 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + str r0, [sp, #8] + ldr r0, [r0] + bl MOD14_021DDD84 + add r7, r0, #0 + ldr r0, [sp, #8] + ldr r0, [r0, #4] + bl MOD14_021DC474 + add r4, r0, #3 + cmp r4, #0x12 + blt _021E3CB2 + sub r4, #0x12 +_021E3CB2: + ldr r5, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x18 + mov r6, #0xc0 + str r0, [sp, #0x10] +_021E3CC2: + add r0, sp, #0x14 + bl FUN_020B1A24 + add r0, sp, #0x14 + str r0, [sp] + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD14_021E1FF8 + add r0, r7, #0 + bl MOD14_021E2184 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [sp, #0x10] + add r0, sp, #0x38 + add r1, sp, #0x14 + bl MOD14_021DDDB4 + mov r0, #0x30 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #8] + mov r3, #0x17 + ldr r0, [r0, #0xc] + add r1, sp, #0x38 + mov r2, #0x10 + lsl r3, r3, #4 + bl MOD14_021DDDD4 + str r0, [r5, #0x54] + cmp r0, #0 + bne _021E3D14 + bl ErrorHandling +_021E3D14: + sub r4, r4, #1 + bpl _021E3D1A + mov r4, #0x11 +_021E3D1A: + ldr r0, [sp, #0xc] + add r6, #0x20 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #0xa + blt _021E3CC2 + ldr r0, [sp, #8] + mov r1, #0 + add r0, #0x80 + str r0, [sp, #8] + str r1, [r0] + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3D38 +MOD14_021E3D38: ; 0x021E3D38 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #4] + ldr r0, [r0] + bl MOD14_021DDD84 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + ldr r0, [r0, #4] + bl MOD14_021DC474 + ldr r1, [sp, #4] + ldr r2, [r1, #4] + mov r1, #0xa0 + ldrsh r7, [r2, r1] + cmp r7, #0 + ble _021E3D74 + sub r0, r0, r7 + add r5, r0, #4 + cmp r5, #0x12 + blt _021E3D64 + sub r5, #0x12 +_021E3D64: + ldr r0, [sp, #4] + mov r6, #1 + add r0, #0x80 + ldr r0, [r0] + sub r4, r0, #1 + bpl _021E3D90 + add r4, #0xa + b _021E3D90 +_021E3D74: + sub r0, r0, r7 + sub r5, r0, #3 + bpl _021E3D7C + add r5, #0x12 +_021E3D7C: + ldr r0, [sp, #4] + mov r6, #0 + add r0, #0x80 + ldr r0, [r0] + mvn r6, r6 + add r4, r0, #6 + cmp r4, #0xa + blt _021E3D8E + sub r4, #0xa +_021E3D8E: + neg r7, r7 +_021E3D90: + ldr r0, [sp, #4] + str r7, [r0, #0x7c] + mov r0, #0 + str r0, [sp, #8] + cmp r7, #0 + ble _021E3DD4 +_021E3D9C: + mov r0, #0 + str r0, [sp] + lsl r2, r4, #5 + ldr r0, [sp, #0xc] + add r1, r5, #0 + add r2, #0xc0 + mov r3, #2 + bl MOD14_021E1FF8 + add r5, r5, r6 + bpl _021E3DB6 + mov r5, #0x11 + b _021E3DBC +_021E3DB6: + cmp r5, #0x12 + blt _021E3DBC + mov r5, #0 +_021E3DBC: + sub r4, r4, r6 + bpl _021E3DC4 + mov r4, #9 + b _021E3DCA +_021E3DC4: + cmp r4, #0xa + blt _021E3DCA + mov r4, #0 +_021E3DCA: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, r7 + blt _021E3D9C +_021E3DD4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E3DD8 +MOD14_021E3DD8: ; 0x021E3DD8 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E3DE0: + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _021E3DEC + bl FUN_0201FFC8 + str r6, [r5, #0x54] +_021E3DEC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xa + blt _021E3DE0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3DF8 +MOD14_021E3DF8: ; 0x021E3DF8 + cmp r0, #0 + bne _021E3E08 + cmp r1, #0 + bne _021E3E04 + mov r0, #1 + bx lr +_021E3E04: + mov r0, #0 + bx lr +_021E3E08: + mov r3, #1 + sub r2, r0, #1 + lsl r3, r2 + tst r1, r3 + beq _021E3E18 + lsl r0, r0, #1 + add r0, r0, #1 + bx lr +_021E3E18: + lsl r0, r0, #1 + bx lr + + thumb_func_start MOD14_021E3E1C +MOD14_021E3E1C: ; 0x021E3E1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + add r5, r0, #0 + ldr r0, [r5, #4] + bl MOD14_021DC484 + str r0, [sp, #0x14] + add r0, sp, #0x18 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #6 + lsl r0, r0, #0xa + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x18 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0x75 + mov r2, #1 + bl FUN_02006AE4 + add r7, r5, #0 + mov r6, #0 + add r4, r5, #0 + add r7, #0x18 +_021E3E58: + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + add r3, r5, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r3, #0xac + ldr r3, [r3] + add r0, sp, #0x3c + add r1, sp, #0x18 + add r2, r7, #0 + bl MOD14_021DDDB4 + mov r0, #0x30 + str r0, [sp] + mov r0, #2 + mov r2, #0xf0 + str r0, [sp, #4] + add r3, r2, #0 + ldr r0, [r5, #0xc] + add r1, sp, #0x3c + add r3, #0x80 + bl MOD14_021DDDD4 + str r0, [r4, #0x34] + cmp r0, #0 + bne _021E3E94 + bl ErrorHandling +_021E3E94: + ldr r1, [sp, #0x14] + add r0, r6, #0 + bl MOD14_021E3DF8 + add r1, r0, #0 + ldr r0, [r4, #0x34] + bl FUN_02020130 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #8 + blt _021E3E58 + ldr r0, [r5, #4] + bl MOD14_021DC47C + add r5, #0x80 + str r0, [r5] + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3EBC +MOD14_021E3EBC: ; 0x021E3EBC + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E3EC4: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E3ED0 + bl FUN_0201FFC8 + str r6, [r5, #0x34] +_021E3ED0: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E3EC4 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3EDC +MOD14_021E3EDC: ; 0x021E3EDC + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _021E3EF2 + sub r0, r0, #1 + add sp, #0xc + strh r0, [r4, #0x16] + pop {r4, r5, pc} +_021E3EF2: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E3F28 + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + str r0, [r4, #8] + asr r0, r0, #0xc + lsl r1, r0, #2 + ldr r0, _021E3F58 ; =0x021E66A8 + ldrsh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, _021E3F5C ; =0x021E66AA + ldrsh r0, [r0, r1] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, pc} +_021E3F28: + ldr r0, [r4, #0xc] + asr r0, r0, #0xc + lsl r1, r0, #2 + ldr r0, _021E3F58 ; =0x021E66A8 + ldrsh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, _021E3F5C ; =0x021E66AA + ldrsh r0, [r0, r1] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E4010 + add sp, #0xc + pop {r4, r5, pc} + nop +_021E3F58: .word 0x021E66A8 +_021E3F5C: .word 0x021E66AA + + thumb_func_start MOD14_021E3F60 +MOD14_021E3F60: ; 0x021E3F60 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _021E3F76 + sub r0, r0, #1 + add sp, #0xc + strh r0, [r4, #0x16] + pop {r4, r5, pc} +_021E3F76: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E3FB2 + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + str r0, [r4, #8] + asr r0, r0, #0xc + ldr r1, _021E4008 ; =0x021E66A8 + lsl r0, r0, #2 + ldrsh r2, [r1, r0] + mov r1, #1 + lsl r1, r1, #8 + sub r1, r1, r2 + lsl r1, r1, #0xc + str r1, [sp] + ldr r1, _021E400C ; =0x021E66AA + ldrsh r0, [r1, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, pc} +_021E3FB2: + ldr r0, [r4, #0xc] + ldr r1, _021E4008 ; =0x021E66A8 + asr r0, r0, #0xc + lsl r0, r0, #2 + ldrsh r2, [r1, r0] + mov r1, #1 + lsl r1, r1, #8 + sub r1, r1, r2 + lsl r1, r1, #0xc + str r1, [sp] + ldr r1, _021E400C ; =0x021E66AA + ldrsh r0, [r1, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021E3FFC + ldrh r0, [r4, #0x28] + add sp, #0xc + strh r0, [r4, #0x14] + ldr r0, [r4, #0x1c] + str r0, [r4, #8] + ldr r0, [r4, #0x24] + str r0, [r4, #0x10] + ldr r0, [r4, #0x20] + str r0, [r4, #0xc] + ldrh r0, [r4, #0x2a] + strh r0, [r4, #0x16] + mov r0, #0 + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021E3FFC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E4010 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021E4008: .word 0x021E66A8 +_021E400C: .word 0x021E66AA + + thumb_func_start MOD14_021E4010 +MOD14_021E4010: ; 0x021E4010 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r1] + ldr r0, _021E4034 ; =0x000001CB + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021E4022 + bl ErrorHandling +_021E4022: + ldr r0, _021E4034 ; =0x000001CB + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_021E4034: .word 0x000001CB + + thumb_func_start MOD14_021E4038 +MOD14_021E4038: ; 0x021E4038 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + add r5, r2, #0 + str r3, [sp] + ldr r4, [sp, #0x20] + cmp r7, #0 + bne _021E404C + bl ErrorHandling +_021E404C: + cmp r4, #0 + beq _021E4052 + sub r4, r4, #1 +_021E4052: + str r6, [r5] + ldr r0, [sp, #0x1c] + str r7, [r5, #4] + strh r0, [r5, #0x14] + ldr r0, [sp, #0x24] + strh r4, [r5, #0x16] + cmp r0, #0 + beq _021E4066 + ldr r4, _021E40A4 ; =MOD14_021E3F60 + b _021E4068 +_021E4066: + ldr r4, _021E40A8 ; =MOD14_021E3EDC +_021E4068: + ldr r0, [sp] + ldr r1, _021E40AC ; =0x021E6680 + lsl r0, r0, #1 + ldrh r0, [r1, r0] + lsl r0, r0, #0xc + str r0, [r5, #8] + ldr r0, [sp, #0x18] + lsl r0, r0, #1 + ldrh r0, [r1, r0] + lsl r1, r0, #0xc + str r1, [r5, #0xc] + ldr r0, [r5, #8] + sub r0, r1, r0 + ldr r1, [sp, #0x1c] + bl _s32_div_f + str r0, [r5, #0x10] + mov r2, #0 + add r0, r4, #0 + add r1, r5, #0 + str r2, [r5, #0x18] + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E40A2 + ldr r0, _021E40B0 ; =0x000001CB + ldrb r1, [r6, r0] + add r1, r1, #1 + strb r1, [r6, r0] +_021E40A2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E40A4: .word MOD14_021E3F60 +_021E40A8: .word MOD14_021E3EDC +_021E40AC: .word 0x021E6680 +_021E40B0: .word 0x000001CB + + thumb_func_start MOD14_021E40B4 +MOD14_021E40B4: ; 0x021E40B4 + push {r4, lr} + add r4, r1, #0 + mov r0, #1 + str r0, [r4, #0x18] + strh r2, [r4, #0x2a] + cmp r2, #0 + beq _021E40C8 + ldrh r0, [r4, #0x2a] + sub r0, r0, #1 + strh r0, [r4, #0x2a] +_021E40C8: + ldr r0, [sp, #8] + sub r2, r0, r3 + bpl _021E40D4 + mov r0, #0 + mvn r0, r0 + mul r2, r0 +_021E40D4: + add r1, r2, #0 + mov r0, #6 + mul r1, r0 + ldr r2, _021E40FC ; =0x021E6680 + lsl r0, r3, #1 + ldrh r0, [r2, r0] + strh r1, [r4, #0x28] + lsl r0, r0, #0xc + str r0, [r4, #0x1c] + ldr r0, [sp, #8] + lsl r0, r0, #1 + ldrh r0, [r2, r0] + lsl r2, r0, #0xc + str r2, [r4, #0x20] + ldr r0, [r4, #0x1c] + sub r0, r2, r0 + bl _s32_div_f + str r0, [r4, #0x24] + pop {r4, pc} + .align 2, 0 +_021E40FC: .word 0x021E6680 + + thumb_func_start MOD14_021E4100 +MOD14_021E4100: ; 0x021E4100 + push {r4, r5, r6, lr} + sub sp, #0x10 + mov r0, #0x73 + add r4, r1, #0 + lsl r0, r0, #2 + ldrb r3, [r4, r0] + ldr r2, [r4] + cmp r3, #0 + beq _021E411E + cmp r3, #1 + beq _021E4180 + cmp r3, #2 + beq _021E4198 + add sp, #0x10 + pop {r4, r5, r6, pc} +_021E411E: + sub r1, r0, #2 + ldrb r1, [r4, r1] + mov r6, #0x2c + add r3, r1, #1 + sub r1, r0, #2 + strb r3, [r4, r1] + sub r0, r0, #2 + ldrb r3, [r4, r0] + mov r1, #6 + mov r0, #7 + sub r5, r1, r3 + sub r0, r0, r3 + str r0, [sp] + add r0, r5, #1 + mul r1, r0 + str r1, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + lsl r1, r5, #2 + add r1, r2, r1 + str r3, [sp, #0xc] + add r2, r4, #0 + ldr r1, [r1, #0x54] + add r2, #8 + mul r6, r5 + add r0, r4, #0 + add r2, r2, r6 + bl MOD14_021E4038 + ldr r0, _021E41B0 ; =0x000001CD + mov r1, #4 + strb r1, [r4, r0] + sub r1, r0, #3 + ldrb r1, [r4, r1] + cmp r1, #6 + blo _021E4170 + mov r1, #2 + sub r0, r0, #1 + add sp, #0x10 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021E4170: + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E41AC + mov r1, #1 + sub r0, r0, #1 + add sp, #0x10 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021E4180: + add r1, r0, #1 + ldrb r1, [r4, r1] + sub r2, r1, #2 + add r1, r0, #1 + strb r2, [r4, r1] + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021E41AC + mov r1, #0 + add sp, #0x10 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021E4198: + sub r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021E41AC + add r1, r3, #1 + strb r1, [r4, r0] + ldr r1, _021E41B4 ; =MOD14_021E41B8 + add r0, r4, #0 + bl MOD14_021DDF30 +_021E41AC: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E41B0: .word 0x000001CD +_021E41B4: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E41B8 +MOD14_021E41B8: ; 0x021E41B8 + ldr r3, _021E41BC ; =MOD14_021E3798 + bx r3 + .align 2, 0 +_021E41BC: .word MOD14_021E3798 + + thumb_func_start MOD14_021E41C0 +MOD14_021E41C0: ; 0x021E41C0 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E4208 + mov r1, #0x73 + mov r0, #0 + lsl r1, r1, #2 + str r4, [r5] + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E41EA: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #8 + blt _021E41EA + ldr r1, _021E420C ; =MOD14_021E4100 + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E4208 + add r0, r5, #0 + bl FUN_02016A18 +_021E4208: + pop {r3, r4, r5, pc} + nop +_021E420C: .word MOD14_021E4100 + + thumb_func_start MOD14_021E4210 +MOD14_021E4210: ; 0x021E4210 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + mov r2, #0x73 + lsl r2, r2, #2 + add r0, r1, #0 + ldrb r3, [r0, r2] + str r1, [sp, #0x10] + ldr r7, [r1] + cmp r3, #0 + beq _021E422E + cmp r3, #1 + bne _021E422A + b _021E43C6 +_021E422A: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_021E422E: + ldr r1, [r7, #4] + mov r0, #0xa0 + ldrsh r0, [r1, r0] + cmp r0, #0 + ble _021E4252 + add r0, r7, #0 + add r0, #0x80 + ldr r0, [r0] + add r4, r0, #5 + cmp r4, #0xa + blt _021E4246 + sub r4, #0xa +_021E4246: + mov r5, #0 + mov r0, #7 + mvn r5, r5 + mov r6, #6 + str r0, [sp, #0x24] + b _021E4260 +_021E4252: + add r0, r7, #0 + add r0, #0x80 + ldr r4, [r0] + mov r5, #1 + mov r0, #0 + add r6, r5, #0 + str r0, [sp, #0x24] +_021E4260: + ldr r1, [r7, #0x7c] + mov r0, #0 + str r0, [sp, #0x34] + cmp r1, #0 + ble _021E42C2 + str r0, [sp, #0x28] + ldr r0, [sp, #0x10] + str r0, [sp, #0x38] + add r0, #8 + str r0, [sp, #0x38] +_021E4274: + ldr r0, [sp, #0x24] + add r3, r4, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + add r0, r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r1, r0, #0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + ldr r1, [r2, r1] + mov r2, #0x2c + mul r3, r2 + ldr r2, [sp, #0x38] + add r2, r2, r3 + add r3, r6, #0 + bl MOD14_021E4038 + add r4, r4, r5 + add r6, r6, r5 + cmp r4, #0xa + blt _021E42AA + mov r4, #0 + b _021E42B0 +_021E42AA: + cmp r4, #0 + bge _021E42B0 + mov r4, #9 +_021E42B0: + ldr r0, [sp, #0x28] + ldr r1, [r7, #0x7c] + add r0, r0, #6 + str r0, [sp, #0x28] + ldr r0, [sp, #0x34] + add r0, r0, #1 + str r0, [sp, #0x34] + cmp r0, r1 + blt _021E4274 +_021E42C2: + mov r0, #6 + sub r0, r0, r1 + str r0, [sp, #0x30] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x30] + cmp r0, #0 + ble _021E4328 + ldr r0, [sp, #0x10] + str r0, [sp, #0x3c] + add r0, #8 + str r0, [sp, #0x3c] +_021E42DA: + ldr r0, [r7, #0x7c] + add r1, r5, #0 + mul r1, r0 + sub r1, r6, r1 + str r1, [sp] + mov r1, #6 + mul r1, r0 + str r1, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r3, r4, #0 + add r1, r0, #0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + ldr r1, [r2, r1] + mov r2, #0x2c + mul r3, r2 + ldr r2, [sp, #0x3c] + add r2, r2, r3 + add r3, r6, #0 + bl MOD14_021E4038 + add r4, r4, r5 + add r6, r6, r5 + cmp r4, #0xa + blt _021E4316 + mov r4, #0 + b _021E431C +_021E4316: + cmp r4, #0 + bge _021E431C + mov r4, #9 +_021E431C: + ldr r0, [sp, #0x14] + add r1, r0, #1 + ldr r0, [sp, #0x30] + str r1, [sp, #0x14] + cmp r1, r0 + blt _021E42DA +_021E4328: + ldr r1, [r7, #4] + mov r0, #0xa0 + ldrsh r0, [r1, r0] + cmp r0, #0 + ble _021E433E + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [r7, #0x7c] + str r0, [sp, #0x20] + str r0, [sp, #0x18] + b _021E434C +_021E433E: + mov r0, #7 + str r0, [sp, #0x1c] + ldr r0, [r7, #0x7c] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x20] + sub r0, r1, r0 + str r0, [sp, #0x18] +_021E434C: + ldr r0, [sp, #0x20] + mov r6, #0 + cmp r0, #0 + ble _021E43B4 + ldr r0, [sp, #0x10] + str r6, [sp, #0x2c] + str r0, [sp, #0x40] + add r0, #8 + str r0, [sp, #0x40] +_021E435E: + ldr r0, [sp, #0x18] + add r3, r4, #0 + str r0, [sp] + ldr r0, [r7, #0x7c] + sub r1, r0, r6 + mov r0, #6 + mul r0, r1 + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + add r0, r0, #6 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r1, r0, #0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + ldr r1, [r2, r1] + mov r2, #0x2c + mul r3, r2 + ldr r2, [sp, #0x40] + add r2, r2, r3 + ldr r3, [sp, #0x1c] + bl MOD14_021E4038 + ldr r0, [sp, #0x18] + add r4, r4, r5 + add r0, r0, r5 + str r0, [sp, #0x18] + cmp r4, #0xa + blt _021E43A0 + sub r4, #0xa + b _021E43A6 +_021E43A0: + cmp r4, #0 + bge _021E43A6 + add r4, #0xa +_021E43A6: + ldr r0, [sp, #0x2c] + add r6, r6, #1 + add r0, r0, #6 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x20] + cmp r6, r0 + blt _021E435E +_021E43B4: + mov r1, #0x73 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp, #0x10] + add sp, #0x44 + strb r2, [r0, r1] + pop {r4, r5, r6, r7, pc} +_021E43C6: + ldr r0, [sp, #0x10] + sub r1, r2, #1 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E43DE + ldr r0, [sp, #0x10] + add r1, r3, #1 + strb r1, [r0, r2] + ldr r1, _021E43E4 ; =MOD14_021E41B8 + add r2, r7, #0 + bl MOD14_021DDF30 +_021E43DE: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021E43E4: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E43E8 +MOD14_021E43E8: ; 0x021E43E8 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E4436 + add r0, r4, #0 + mov r1, #0x73 + lsl r1, r1, #2 + str r4, [r5] + add r0, #0x54 + str r0, [r5, #4] + mov r0, #0 + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E4418: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #0xa + blt _021E4418 + ldr r1, _021E4438 ; =MOD14_021E4210 + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E4436 + add r0, r5, #0 + bl FUN_02016A18 +_021E4436: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E4438: .word MOD14_021E4210 + + thumb_func_start MOD14_021E443C +MOD14_021E443C: ; 0x021E443C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r0, [r1] + mov r2, #0x73 + str r0, [sp, #0x18] + lsl r2, r2, #2 + add r0, r1, #0 + ldrb r3, [r0, r2] + str r1, [sp, #0x10] + cmp r3, #0 + beq _021E445A + cmp r3, #1 + beq _021E44BE + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_021E445A: + ldr r0, [sp, #0x18] + mov r5, #0 + add r0, #0x80 + ldr r4, [r0] + add r0, r1, #0 + str r0, [sp, #0x1c] + add r0, #8 + mov r7, #6 + str r5, [sp, #0x14] + mov r6, #0x24 + str r0, [sp, #0x1c] +_021E4470: + str r7, [sp] + str r6, [sp, #4] + ldr r1, [sp, #0x18] + lsl r2, r4, #2 + add r1, r1, r2 + str r5, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r2, #0x2c + add r3, r4, #0 + mul r3, r2 + ldr r2, [sp, #0x1c] + ldr r0, [sp, #0x10] + add r2, r2, r3 + ldr r1, [r1, #0x34] + mov r3, #0 + bl MOD14_021E4038 + add r4, r4, #1 + sub r6, r6, #6 + sub r7, r7, #1 + cmp r4, #8 + blt _021E44A0 + mov r4, #0 +_021E44A0: + ldr r0, [sp, #0x14] + add r5, r5, #6 + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #6 + blt _021E4470 + mov r1, #0x73 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp, #0x10] + add sp, #0x20 + strb r2, [r0, r1] + pop {r3, r4, r5, r6, r7, pc} +_021E44BE: + ldr r0, [sp, #0x10] + sub r1, r2, #1 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E44D6 + ldr r0, [sp, #0x10] + add r1, r3, #1 + strb r1, [r0, r2] + ldr r1, _021E44DC ; =MOD14_021E41B8 + ldr r2, [sp, #0x18] + bl MOD14_021DDF30 +_021E44D6: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E44DC: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E44E0 +MOD14_021E44E0: ; 0x021E44E0 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E4528 + mov r1, #0x73 + mov r0, #0 + lsl r1, r1, #2 + str r4, [r5] + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E450A: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #8 + blt _021E450A + ldr r1, _021E452C ; =MOD14_021E443C + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E4528 + add r0, r5, #0 + bl FUN_02016A18 +_021E4528: + pop {r3, r4, r5, pc} + nop +_021E452C: .word MOD14_021E443C + + thumb_func_start MOD14_021E4530 +MOD14_021E4530: ; 0x021E4530 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + ldr r0, [r1] + mov r2, #0x73 + str r0, [sp, #0x34] + lsl r2, r2, #2 + add r0, r1, #0 + ldrb r3, [r0, r2] + str r1, [sp, #0x10] + cmp r3, #0 + beq _021E4550 + cmp r3, #1 + bne _021E454C + b _021E46C2 +_021E454C: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_021E4550: + ldr r0, [sp, #0x34] + ldr r0, [r0, #4] + bl MOD14_021DC46C + str r0, [sp, #0x30] + ldr r0, [sp, #0x34] + add r0, #0x80 + ldr r4, [r0] + ldr r0, [sp, #0x30] + cmp r0, #0 + bge _021E4580 + add r4, r4, #5 + cmp r4, #8 + blt _021E456E + sub r4, #8 +_021E456E: + ldr r0, [sp, #0x30] + mov r5, #0 + neg r0, r0 + str r0, [sp, #0x28] + mov r0, #0 + mvn r5, r5 + mov r6, #1 + str r0, [sp, #0x18] + b _021E458A +_021E4580: + str r0, [sp, #0x28] + mov r0, #7 + mov r5, #1 + mov r6, #6 + str r0, [sp, #0x18] +_021E458A: + ldr r0, [sp, #0x28] + mov r7, #0 + add r0, r0, #6 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x28] + cmp r0, #0 + ble _021E45EC + ldr r0, [sp, #0x10] + str r7, [sp, #0x1c] + str r0, [sp, #0x38] + add r0, #8 + str r0, [sp, #0x38] +_021E45A2: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x34] + str r0, [sp] + ldr r0, [sp, #0x1c] + lsl r2, r4, #2 + add r0, r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + add r1, r1, r2 + str r0, [sp, #0xc] + mov r2, #0x2c + add r3, r4, #0 + mul r3, r2 + ldr r2, [sp, #0x38] + ldr r0, [sp, #0x10] + add r2, r2, r3 + ldr r1, [r1, #0x34] + add r3, r6, #0 + bl MOD14_021E4038 + sub r6, r6, r5 + add r4, r4, r5 + bpl _021E45D8 + add r4, #8 + b _021E45DE +_021E45D8: + cmp r4, #8 + blt _021E45DE + sub r4, #8 +_021E45DE: + ldr r0, [sp, #0x1c] + add r7, r7, #1 + add r0, r0, #6 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + cmp r7, r0 + blt _021E45A2 +_021E45EC: + mov r0, #0 + str r0, [sp, #0x24] + cmp r7, #8 + bge _021E4658 + ldr r0, [sp, #0x28] + mov r1, #6 + mul r1, r0 + ldr r0, [sp, #0x10] + str r1, [sp, #0x20] + str r0, [sp, #0x3c] + add r0, #8 + str r0, [sp, #0x3c] +_021E4604: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x34] + sub r0, r0, r5 + str r0, [sp, #0x18] + str r0, [sp] + ldr r0, [sp, #0x20] + lsl r2, r4, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x24] + add r1, r1, r2 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r2, #0x2c + add r3, r4, #0 + mul r3, r2 + ldr r2, [sp, #0x3c] + ldr r0, [sp, #0x10] + add r2, r2, r3 + ldr r1, [r1, #0x34] + add r3, r6, #0 + bl MOD14_021E4038 + cmp r6, #0 + beq _021E463E + cmp r6, #7 + beq _021E463E + sub r6, r6, r5 + b _021E4644 +_021E463E: + ldr r0, [sp, #0x24] + add r0, r0, #6 + str r0, [sp, #0x24] +_021E4644: + add r4, r4, r5 + bpl _021E464C + add r4, #8 + b _021E4652 +_021E464C: + cmp r4, #8 + blt _021E4652 + sub r4, #8 +_021E4652: + add r7, r7, #1 + cmp r7, #8 + blt _021E4604 +_021E4658: + ldr r0, [sp, #0x30] + cmp r0, #0 + bge _021E466C + mov r0, #7 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + sub r1, r0, #2 + ldr r0, [sp, #0x14] + sub r6, r0, r1 + b _021E4674 +_021E466C: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + sub r6, r0, #2 +_021E4674: + ldr r0, [sp, #0x2c] + cmp r7, r0 + bge _021E46B0 + ldr r0, [sp, #0x10] + str r0, [sp, #0x40] + add r0, #8 + str r0, [sp, #0x40] +_021E4682: + mov r1, #0x2c + add r2, r4, #0 + mul r2, r1 + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x10] + add r1, r1, r2 + ldr r3, [sp, #0x14] + mov r2, #6 + str r6, [sp] + bl MOD14_021E40B4 + sub r6, r6, r5 + add r4, r4, r5 + bpl _021E46A2 + add r4, #8 + b _021E46A8 +_021E46A2: + cmp r4, #8 + blt _021E46A8 + sub r4, #8 +_021E46A8: + ldr r0, [sp, #0x2c] + add r7, r7, #1 + cmp r7, r0 + blt _021E4682 +_021E46B0: + mov r1, #0x73 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp, #0x10] + add sp, #0x44 + strb r2, [r0, r1] + pop {r4, r5, r6, r7, pc} +_021E46C2: + ldr r0, [sp, #0x10] + sub r1, r2, #1 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E46DA + ldr r0, [sp, #0x10] + add r1, r3, #1 + strb r1, [r0, r2] + ldr r1, _021E46E0 ; =MOD14_021E41B8 + ldr r2, [sp, #0x34] + bl MOD14_021DDF30 +_021E46DA: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021E46E0: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E46E4 +MOD14_021E46E4: ; 0x021E46E4 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E472C + mov r1, #0x73 + mov r0, #0 + lsl r1, r1, #2 + str r4, [r5] + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E470E: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #8 + blt _021E470E + ldr r1, _021E4730 ; =MOD14_021E4530 + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E472C + add r0, r5, #0 + bl FUN_02016A18 +_021E472C: + pop {r3, r4, r5, pc} + nop +_021E4730: .word MOD14_021E4530 + + thumb_func_start MOD14_021E4734 +MOD14_021E4734: ; 0x021E4734 + push {r4, r5, r6, lr} + add r5, r0, #0 + beq _021E4762 + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E4762 + ldr r0, [r5, #4] + bl MOD14_021DC484 + add r6, r0, #0 + mov r4, #0 +_021E474A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021E3DF8 + add r1, r0, #0 + ldr r0, [r5, #0x34] + bl FUN_02020130 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E474A +_021E4762: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E4764 +MOD14_021E4764: ; 0x021E4764 + ldr r3, _021E476C ; =0x0201797D + mov r0, #4 + mov r1, #0 + bx r3 + .align 2, 0 +_021E476C: .word 0x0201797D + + thumb_func_start MOD14_021E4770 +MOD14_021E4770: ; 0x021E4770 + push {r3, lr} + mov r0, #2 + str r0, [sp] + ldr r0, _021E478C ; =0x04001050 + mov r1, #1 + mov r2, #0x3f + mov r3, #0xe + bl G2x_SetBlendAlpha_ + mov r0, #4 + mov r1, #1 + bl FUN_0201797C + pop {r3, pc} + .align 2, 0 +_021E478C: .word 0x04001050 + + thumb_func_start MOD14_021E4790 +MOD14_021E4790: ; 0x021E4790 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, [r6, #4] + bl MOD14_021DC474 + add r4, r0, #3 + cmp r4, #0x12 + blt _021E47A4 + sub r4, #0x12 +_021E47A4: + mov r0, #0 + add r7, r6, #0 + ldr r5, _021E4820 ; =0x021E6690 + str r0, [sp, #0x10] + add r7, #0x88 +_021E47AE: + ldr r0, [r6, #4] + add r2, r6, #0 + add r2, #0x84 + ldr r0, [r0] + ldr r2, [r2] + add r1, r4, #0 + bl FUN_0206B484 + mov r0, #0x68 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldrh r2, [r5] + ldrh r3, [r5, #2] + add r0, r7, #0 + mov r1, #0 + bl FUN_020196F4 + mov r0, #2 + ldrsh r0, [r5, r0] + mov r1, #0 + add r2, r6, #0 + add r0, r0, #2 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E4824 ; =0x00010200 + add r3, r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrsh r3, [r5, r3] + add r2, #0x84 + ldr r2, [r2] + add r0, r7, #0 + add r3, r3, #4 + bl FUN_0201BDE0 + sub r4, r4, #1 + bpl _021E4800 + mov r4, #0x11 +_021E4800: + ldr r0, [sp, #0x10] + add r5, r5, #4 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #6 + blo _021E47AE + add r0, r6, #0 + add r0, #0x88 + bl FUN_02019548 + add r0, r6, #0 + bl MOD14_021E4770 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E4820: .word 0x021E6690 +_021E4824: .word 0x00010200 + + thumb_func_start MOD14_021E4828 +MOD14_021E4828: ; 0x021E4828 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0xa + mov r1, #0x3c + add r6, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021E487C + str r5, [r4, #4] + ldr r0, [sp] + str r6, [r4, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #0x18] + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD14_021DDD50 + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD14_021DDD6C + str r0, [r4, #0x18] + mov r0, #0 + str r0, [r4, #0x34] + add r0, r6, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021E486C + mov r0, #1 + b _021E486E +_021E486C: + mov r0, #0 +_021E486E: + str r0, [r4] + add r0, r4, #0 + bl MOD14_021E4890 + str r4, [r7] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E487C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E4880 +MOD14_021E4880: ; 0x021E4880 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021E495C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD14_021E4890 +MOD14_021E4890: ; 0x021E4890 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + add r6, r0, #0 + ldr r0, [r6] + cmp r0, #0 + beq _021E4940 + ldr r4, [r6, #0x14] + ldr r0, [r6, #4] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #0x20] + add r1, sp, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r3, [r4, #0x1c] + add r0, sp, #0x34 + bl MOD14_021DDDB4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0206E640 + add r1, r0, #0 + mov r0, #0xa + str r0, [sp] + mov r0, #0x10 + mov r2, #0 + add r3, sp, #0xc + bl FUN_02006BB0 + str r0, [sp, #8] + cmp r0, #0 + beq _021E4950 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r1, [r0] + ldr r0, _021E4954 ; =0x00300010 + ldr r4, _021E4958 ; =0x021E68E8 + and r1, r0 + ldr r0, [sp, #0xc] + mov r7, #0 + str r1, [r0, #8] + add r5, r6, #0 +_021E48EA: + add r0, sp, #0x10 + bl FUN_020B1A24 + ldr r0, [sp, #0xc] + ldr r1, [r4] + mov r2, #1 + add r3, sp, #0x10 + bl FUN_020B1768 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r2, #0 + ldr r0, [r6, #0x10] + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD14_021DDDD4 + str r0, [r5, #0x1c] + ldr r1, [r4, #4] + bl FUN_02020248 + ldr r0, [r5, #0x1c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #0x1c] + mov r1, #1 + bl FUN_020200EC + mov r0, #0 + str r0, [r5, #0x28] + add r7, r7, #1 + add r4, #8 + add r5, r5, #4 + cmp r7, #3 + blt _021E48EA + ldr r0, [sp, #8] + bl FUN_02016A18 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} +_021E4940: + mov r1, #0 + add r0, r1, #0 +_021E4944: + str r0, [r6, #0x1c] + str r0, [r6, #0x28] + add r1, r1, #1 + add r6, r6, #4 + cmp r1, #3 + blt _021E4944 +_021E4950: + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4954: .word 0x00300010 +_021E4958: .word 0x021E68E8 + + thumb_func_start MOD14_021E495C +MOD14_021E495C: ; 0x021E495C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E4962: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E496C + bl FUN_0201FFC8 +_021E496C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E4962 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4978 +MOD14_021E4978: ; 0x021E4978 + push {r3, r4} + mov r3, #0 + add r4, r0, #0 +_021E497E: + ldr r2, [r4, #0x28] + cmp r2, #0 + bne _021E4990 + lsl r2, r3, #2 + add r0, r0, r2 + str r1, [r0, #0x28] + add r0, r3, #0 + pop {r3, r4} + bx lr +_021E4990: + add r3, r3, #1 + add r4, r4, #4 + cmp r3, #3 + blt _021E497E + mov r0, #0 + mvn r0, r0 + pop {r3, r4} + bx lr + + thumb_func_start MOD14_021E49A0 +MOD14_021E49A0: ; 0x021E49A0 + mov r3, #0 +_021E49A2: + ldr r2, [r0, #0x28] + cmp r1, r2 + bne _021E49AC + add r0, r3, #0 + bx lr +_021E49AC: + add r3, r3, #1 + add r0, r0, #4 + cmp r3, #3 + blt _021E49A2 + mov r0, #0 + mvn r0, r0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E49BC +MOD14_021E49BC: ; 0x021E49BC + lsl r1, r1, #2 + add r0, r0, r1 + str r2, [r0, #0x28] + bx lr + + thumb_func_start MOD14_021E49C4 +MOD14_021E49C4: ; 0x021E49C4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021E49D8 + bl MOD14_021E49DC + add r0, r4, #0 + bl MOD14_021E4A14 +_021E49D8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E49DC +MOD14_021E49DC: ; 0x021E49DC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC430 + add r4, r0, #0 + beq _021E4A12 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E4978 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD14_021E4B58 + add r5, #0x1c + lsl r4, r6, #2 + ldr r0, [r5, r4] + mov r1, #6 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021E4A12: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E4A14 +MOD14_021E4A14: ; 0x021E4A14 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC538 + add r7, r0, #0 + beq _021E4AC8 + add r0, r5, #0 + mov r1, #3 + bl MOD14_021E4978 + add r6, r0, #0 + ldr r0, [r5, #0x18] + add r1, sp, #0x10 + bl MOD14_021E0038 + mov r0, #2 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [r5, #8] + bl MOD14_021DC3CC + cmp r0, #1 + bne _021E4A50 + mov r0, #1 + str r0, [sp, #0xc] + b _021E4A54 +_021E4A50: + mov r0, #2 + str r0, [sp, #0xc] +_021E4A54: + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + lsl r4, r6, #3 + bl FUN_0206E640 + mov r2, #0 + ldr r3, _021E4ACC ; =0x021E68E8 + str r2, [sp] + add r1, r0, #0 + str r2, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r3, [r3, r4] + mov r0, #0x10 + bl FUN_02006A34 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + ldr r3, _021E4AD0 ; =0x021E68EC + add r1, r0, #0 + mov r0, #0x20 + ldr r3, [r3, r4] + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x10 + mov r2, #1 + lsl r3, r3, #5 + bl FUN_02006930 + ldr r1, [sp, #0xc] + add r5, #0x1c + lsl r4, r6, #2 + lsl r1, r1, #0x18 + ldr r0, [r5, r4] + lsr r1, r1, #0x18 + bl FUN_02020238 + ldr r0, [r5, r4] + mov r1, #2 + bl MOD14_021DDE24 + ldr r0, [r5, r4] + add r1, sp, #0x10 + bl FUN_02020044 + ldr r0, [r5, r4] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021E4AC8: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E4ACC: .word 0x021E68E8 +_021E4AD0: .word 0x021E68EC + + thumb_func_start MOD14_021E4AD4 +MOD14_021E4AD4: ; 0x021E4AD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5, #8] + add r7, r2, #0 + bl MOD14_021DC3CC + cmp r0, #1 + ldr r0, [r5, #4] + bne _021E4B1E + bl MOD14_021DDD60 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3E8 + add r1, r0, #0 + add r0, r6, #0 + add r2, sp, #4 + add r3, sp, #0 + bl MOD14_021E3170 + ldr r0, [sp, #4] + add r0, #0xa + lsl r0, r0, #0xc + str r0, [r4] + ldr r0, [sp] + add sp, #8 + add r0, #8 + lsl r0, r0, #0xc + str r0, [r4, #4] + mov r0, #1 + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} +_021E4B1E: + bl MOD14_021DDD98 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3D0 + mov r1, #0x18 + add r6, #0x70 + mul r1, r0 + add r0, r6, r1 + add r0, #0xa + str r0, [r4] + ldr r0, [r5, #8] + bl MOD14_021DC3D8 + mov r1, #0x18 + mul r1, r0 + add r1, #0x30 + str r1, [r4, #4] + ldr r0, [r4] + lsl r0, r0, #0xc + str r0, [r4] + ldr r0, [r4, #4] + lsl r0, r0, #0xc + str r0, [r4, #4] + mov r0, #2 + str r0, [r7] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E4B58 +MOD14_021E4B58: ; 0x021E4B58 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r1, #0 + add r5, r0, #0 + add r7, r2, #0 + cmp r4, #0 + blt _021E4BD2 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD14_021E4AD4 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + lsl r6, r4, #3 + bl FUN_0206E640 + mov r2, #0 + ldr r3, _021E4BD8 ; =0x021E68E8 + str r2, [sp] + add r1, r0, #0 + str r2, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r3, [r3, r6] + mov r0, #0x10 + bl FUN_02006A34 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + ldr r3, _021E4BDC ; =0x021E68EC + add r1, r0, #0 + mov r0, #0x20 + ldr r3, [r3, r6] + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x10 + mov r2, #1 + lsl r3, r3, #5 + bl FUN_02006930 + ldr r1, [sp, #0xc] + add r5, #0x1c + lsl r4, r4, #2 + lsl r1, r1, #0x18 + ldr r0, [r5, r4] + lsr r1, r1, #0x18 + bl FUN_02020238 + ldr r0, [r5, r4] + mov r1, #3 + bl MOD14_021DDE24 + ldr r0, [r5, r4] + add r1, sp, #0x10 + bl FUN_02020044 +_021E4BD2: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E4BD8: .word 0x021E68E8 +_021E4BDC: .word 0x021E68EC + + thumb_func_start MOD14_021E4BE0 +MOD14_021E4BE0: ; 0x021E4BE0 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4C3E + mov r1, #1 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4C0A + add r0, r5, #0 + add r1, r4, #0 + mov r2, #2 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #2 + bl FUN_02020130 +_021E4C0A: + ldr r0, [r5, #8] + bl MOD14_021DC430 + add r6, r0, #0 + beq _021E4C3E + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E4978 + add r4, r0, #0 + bmi _021E4C3E + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD14_021E4B58 + add r5, #0x1c + lsl r4, r4, #2 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021E4C3E: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E4C40 +MOD14_021E4C40: ; 0x021E4C40 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + bne _021E4C4E + mov r0, #1 + pop {r3, r4, r5, pc} +_021E4C4E: + mov r1, #1 + bl MOD14_021E49A0 + cmp r0, #0 + blt _021E4C6A + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4C6A + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4C6A: + add r0, r5, #0 + mov r1, #2 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4C92 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4C88 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4C88: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021E49BC +_021E4C92: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4C98 +MOD14_021E4C98: ; 0x021E4C98 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + mov r0, #0xa + mov r1, #0x34 + add r6, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021E4D1A + lsl r0, r7, #2 + str r5, [r4] + add r0, r5, r0 + ldr r0, [r0, #0x1c] + str r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r2, r4, #0 + ldmia r6!, {r0, r1} + add r2, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r6] + ldr r6, [sp, #0x18] + str r0, [r2] + ldr r1, [r4, #0x14] + ldr r0, [r4, #8] + sub r0, r1, r0 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0x20] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0xc] + sub r0, r1, r0 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0x24] + ldr r0, [sp, #0x18] + mov r2, #0 + str r0, [r4, #0x2c] + ldr r0, [sp] + add r1, r4, #0 + str r0, [r4, #0x28] + ldr r0, _021E4D1C ; =MOD14_021E4D20 + str r2, [r4, #0x30] + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E4D14 + ldr r0, [r5, #0x34] + add r0, r0, #1 + str r0, [r5, #0x34] + pop {r3, r4, r5, r6, r7, pc} +_021E4D14: + add r0, r4, #0 + bl FUN_02016A18 +_021E4D1A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4D1C: .word MOD14_021E4D20 + + thumb_func_start MOD14_021E4D20 +MOD14_021E4D20: ; 0x021E4D20 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021E4D32 + cmp r0, #1 + beq _021E4D68 + pop {r3, r4, r5, pc} +_021E4D32: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021E4D58 + ldr r2, [r4, #8] + ldr r0, [r4, #0x20] + add r1, #8 + add r0, r2, r0 + str r0, [r4, #8] + ldr r2, [r4, #0xc] + ldr r0, [r4, #0x24] + add r0, r2, r0 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + bl FUN_02020044 + ldr r0, [r4, #0x2c] + sub r0, r0, #1 + str r0, [r4, #0x2c] + pop {r3, r4, r5, pc} +_021E4D58: + ldr r0, [r4, #4] + add r1, #0x14 + bl FUN_02020044 + ldr r0, [r4, #0x30] + add r0, r0, #1 + str r0, [r4, #0x30] + pop {r3, r4, r5, pc} +_021E4D68: + ldr r0, [r4, #4] + bl FUN_02020388 + cmp r0, #0 + bne _021E4D92 + ldr r0, [r4, #4] + ldr r1, [r4, #0x28] + bl MOD14_021DDE24 + ldr r1, [r4] + ldr r0, [r1, #0x34] + sub r0, r0, #1 + str r0, [r1, #0x34] + add r0, r5, #0 + bl FUN_0200CAB4 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD14_021DDF30 +_021E4D92: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4D94 +MOD14_021E4D94: ; 0x021E4D94 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4DE2 + mov r1, #1 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4DE2 + ldr r0, [r5, #0x18] + add r1, sp, #4 + bl MOD14_021E0038 + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #3 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #3 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #4 + mov r3, #2 + bl MOD14_021E4C98 +_021E4DE2: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4DE8 +MOD14_021E4DE8: ; 0x021E4DE8 + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _021E4DF2 + mov r0, #1 + bx lr +_021E4DF2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E4DF8 +MOD14_021E4DF8: ; 0x021E4DF8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021E4E22 + mov r1, #1 + bl MOD14_021E49A0 + add r5, r0, #0 + bmi _021E4E22 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #2 + bl MOD14_021E49BC + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + mov r1, #2 + bl FUN_02020130 +_021E4E22: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4E24 +MOD14_021E4E24: ; 0x021E4E24 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4E54 + mov r1, #2 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4E54 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4E4A + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4E4A: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021E49BC +_021E4E54: + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4E58 +MOD14_021E4E58: ; 0x021E4E58 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4E9E + mov r1, #3 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4E9E + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD14_021E4AD4 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #4 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #8 + mov r3, #3 + bl MOD14_021E4C98 +_021E4E9E: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4EA4 +MOD14_021E4EA4: ; 0x021E4EA4 + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _021E4EAE + mov r0, #1 + bx lr +_021E4EAE: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E4EB4 +MOD14_021E4EB4: ; 0x021E4EB4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4F42 + mov r1, #3 + bl MOD14_021E49A0 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E49A0 + add r6, r0, #0 + cmp r4, #0 + blt _021E4F42 + cmp r6, #0 + blt _021E4F42 + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD14_021E4AD4 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #4 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #8 + mov r3, #3 + bl MOD14_021E4C98 + ldr r0, [r5, #0x18] + add r1, sp, #8 + bl MOD14_021E0038 + mov r0, #2 + ldr r1, [sp, #0xc] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD14_021E49BC + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #3 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #8 + mov r3, #2 + bl MOD14_021E4C98 +_021E4F42: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4F48 +MOD14_021E4F48: ; 0x021E4F48 + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _021E4F52 + mov r0, #1 + bx lr +_021E4F52: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E4F58 +MOD14_021E4F58: ; 0x021E4F58 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021E4F9E + mov r1, #3 + bl MOD14_021E49A0 + add r5, r0, #0 + bmi _021E4F7C + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + mov r1, #5 + bl FUN_02020130 + str r5, [r4, #0x38] + pop {r3, r4, r5, pc} +_021E4F7C: + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E49A0 + add r5, r0, #0 + bmi _021E4F98 + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + mov r1, #2 + bl FUN_02020130 + str r5, [r4, #0x38] + pop {r3, r4, r5, pc} +_021E4F98: + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x38] +_021E4F9E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4FA0 +MOD14_021E4FA0: ; 0x021E4FA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E4FD6 + mov r0, #0 + ldr r1, [r4, #0x38] + mvn r0, r0 + cmp r1, r0 + beq _021E4FD6 + lsl r0, r1, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4FC6 + mov r0, #0 + pop {r4, pc} +_021E4FC6: + ldr r1, [r4, #0x38] + add r0, r4, #0 + mov r2, #0 + bl MOD14_021E49BC + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x38] +_021E4FD6: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4FDC +MOD14_021E4FDC: ; 0x021E4FDC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E5016 + mov r1, #3 + bl MOD14_021E49A0 + add r6, r0, #0 + bmi _021E5016 + ldmia r4!, {r0, r1} + add r3, sp, #0 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #4] + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + add r1, r2, #0 + bl FUN_02020044 +_021E5016: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E501C +MOD14_021E501C: ; 0x021E501C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E5040 + mov r1, #3 + bl MOD14_021E49A0 + cmp r0, #0 + blt _021E5040 + lsl r0, r0, #2 + add r0, r5, r0 + lsl r1, r4, #0x18 + ldr r0, [r0, #0x1c] + lsr r1, r1, #0x18 + bl FUN_02020238 +_021E5040: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5044 +MOD14_021E5044: ; 0x021E5044 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r2, #0 + add r5, r0, #0 + add r0, r7, #0 + add r6, r1, #0 + str r3, [sp, #4] + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021E5064 + mov r0, #0 + str r0, [r5] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E5064: + mov r1, #0xe1 + mov r0, #0xa + lsl r1, r1, #2 + bl FUN_02016998 + add r4, r0, #0 + beq _021E50E6 + str r6, [r4, #4] + ldr r0, [sp, #4] + str r7, [r4, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + str r0, [r4, #0x10] + add r0, r6, #0 + bl MOD14_021DDD50 + mov r3, #0xda + str r0, [r4, #0x14] + mov r0, #0xa + lsl r3, r3, #2 + str r0, [sp] + mov r0, #0x12 + mov r1, #7 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006BDC + mov r3, #0x37 + lsl r3, r3, #4 + str r0, [r4, r3] + mov r0, #0xa + sub r3, r3, #4 + str r0, [sp] + mov r0, #0x12 + mov r1, #8 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006BDC + mov r1, #0xdd + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x24] + mov r2, #0x93 + str r0, [r4, #0x6c] + mov r0, #1 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #0xa + bl FUN_0200A86C + str r0, [r4, #0x70] + mov r0, #0x20 + mov r1, #0xa + bl FUN_020219F4 + str r0, [r4, #0x74] + mov r0, #0xe + mov r1, #0 + lsl r0, r0, #6 + str r1, [r4, r0] + add sp, #8 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E50E6: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E50EC +MOD14_021E50EC: ; 0x021E50EC + push {r4, lr} + add r4, r0, #0 + beq _021E5124 + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xdd + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, [r4, #0x70] + bl FUN_0200A8B8 + add r0, r4, #0 + bl MOD14_021E5C04 + add r0, r4, #0 + bl MOD14_021E5474 + ldr r0, [r4, #0x74] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02016A18 +_021E5124: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5128 +MOD14_021E5128: ; 0x021E5128 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + beq _021E5210 + bl MOD14_021E5334 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x6c + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x69 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x6a + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x6b + mov r3, #7 + bl FUN_020068C8 + mov r0, #0x80 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x6d + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + bl FUN_0206B888 + mov r3, #0x80 + add r1, r0, #0 + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x13 + mov r2, #5 + bl FUN_02006930 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0xa + bl FUN_02017F18 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0xc] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018540 + add r0, r4, #0 + bl MOD14_021E539C + add r0, r4, #0 + bl MOD14_021E5400 + ldr r0, [r4, #8] + bl MOD14_021DC560 + mov r1, #0xde + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 + add r0, r4, #0 + bl MOD14_021E5A08 +_021E5210: + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD14_021E5214 +MOD14_021E5214: ; 0x021E5214 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + cmp r5, #0 + beq _021E5268 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r4, r0, #0 + cmp r6, #0 + beq _021E5248 + mov r0, #1 + eor r0, r4 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + mov r1, #2 + bl FUN_02020130 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + mov r1, #0 + bl FUN_02020130 + b _021E5262 +_021E5248: + mov r1, #1 + eor r0, r1 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + bl FUN_02020130 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + mov r1, #0 + bl FUN_02020130 +_021E5262: + add r0, r5, #0 + bl MOD14_021E5334 +_021E5268: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E526C +MOD14_021E526C: ; 0x021E526C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD14_021E5C68 + cmp r5, #0 + beq _021E52B8 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E5CFC + ldr r0, [r5, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E529C + cmp r0, #1 + beq _021E52A6 + cmp r0, #2 + beq _021E52B0 + pop {r3, r4, r5, pc} +_021E529C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E57E4 + pop {r3, r4, r5, pc} +_021E52A6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E55B0 + pop {r3, r4, r5, pc} +_021E52B0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E5908 +_021E52B8: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E52BC +MOD14_021E52BC: ; 0x021E52BC + mov r0, #1 + bx lr + + thumb_func_start MOD14_021E52C0 +MOD14_021E52C0: ; 0x021E52C0 + push {r4, lr} + add r4, r0, #0 + beq _021E52DE + mov r1, #0xdf + mov r2, #0 + lsl r1, r1, #2 + str r2, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl MOD14_021E5504 + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 +_021E52DE: + pop {r4, pc} + + thumb_func_start MOD14_021E52E0 +MOD14_021E52E0: ; 0x021E52E0 + push {r4, lr} + add r4, r0, #0 + beq _021E5330 + mov r1, #0xdf + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + beq _021E52FA + cmp r1, #1 + beq _021E530A + cmp r1, #2 + beq _021E5328 + b _021E532C +_021E52FA: + bl MOD14_021E539C + mov r0, #0xdf + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021E532C +_021E530A: + bl MOD14_021E5718 + add r0, r4, #0 + bl MOD14_021E549C + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 + mov r0, #0xdf + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021E532C +_021E5328: + mov r0, #1 + pop {r4, pc} +_021E532C: + mov r0, #0 + pop {r4, pc} +_021E5330: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD14_021E5334 +MOD14_021E5334: ; 0x021E5334 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC558 + cmp r0, #0 + bne _021E5348 + mov r0, #0xda + b _021E534A +_021E5348: + mov r0, #0xdb +_021E534A: + lsl r0, r0, #2 + ldr r4, [r5, r0] + mov r0, #6 + str r0, [sp] + mov r1, #0x20 + add r0, r4, #0 + mov r2, #0 + str r1, [sp, #4] + add r0, #0xc + str r0, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #2 + add r3, r2, #0 + bl FUN_02018170 + mov r0, #6 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r4, #0xc + str r4, [sp, #8] + mov r2, #0x1a + str r2, [sp, #0xc] + mov r3, #0 + str r3, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_02018170 + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_02017CD0 + add sp, #0x1c + pop {r4, r5, pc} + + thumb_func_start MOD14_021E539C +MOD14_021E539C: ; 0x021E539C + push {r3, lr} + ldr r0, [r0, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E53B2 + cmp r0, #1 + beq _021E53CC + cmp r0, #2 + beq _021E53E6 + pop {r3, pc} +_021E53B2: + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + pop {r3, pc} +_021E53CC: + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + pop {r3, pc} +_021E53E6: + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + pop {r3, pc} + + thumb_func_start MOD14_021E5400 +MOD14_021E5400: ; 0x021E5400 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r1, #0 + add r2, r7, #0 + add r5, r1, #0 +_021E540A: + add r0, r2, #0 + add r0, #0x84 + add r1, r1, #1 + add r2, #0x10 + str r5, [r0] + cmp r1, #7 + blt _021E540A + add r4, r7, #0 + ldr r6, _021E5470 ; =0x021E6940 + add r4, #0x78 +_021E541E: + ldr r0, [r7, #0xc] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02019150 + add r0, r4, #0 + bl FUN_02019270 + add r5, r5, #1 + add r6, #8 + add r4, #0x10 + cmp r5, #3 + blo _021E541E + add r0, r7, #0 + bl MOD14_021E5718 + add r0, r7, #0 + add r0, #0x78 + mov r1, #0 + bl FUN_02019620 + add r0, r7, #0 + add r0, #0x88 + mov r1, #0 + bl FUN_02019620 + add r4, r7, #0 + mov r5, #0 + add r4, #0x78 +_021E5458: + add r0, r4, #0 + bl FUN_02019548 + add r5, r5, #1 + add r4, #0x10 + cmp r5, #3 + blo _021E5458 + add r0, r7, #0 + bl MOD14_021E549C + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5470: .word 0x021E6940 + + thumb_func_start MOD14_021E5474 +MOD14_021E5474: ; 0x021E5474 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r5, #0 + mov r6, #0 + add r4, #0x78 +_021E547E: + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E548E + add r0, r4, #0 + bl FUN_02019178 +_021E548E: + add r6, r6, #1 + add r5, #0x10 + add r4, #0x10 + cmp r6, #7 + blt _021E547E + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E549C +MOD14_021E549C: ; 0x021E549C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC560 + add r4, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E54BC + cmp r0, #1 + beq _021E54D4 + cmp r0, #2 + beq _021E54E6 + b _021E54FC +_021E54BC: + add r0, r5, #0 + bl MOD14_021E5540 + add r0, r5, #0 + mov r1, #0 + bl MOD14_021E57E4 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E57E4 + b _021E54FC +_021E54D4: + add r0, r5, #0 + mov r1, #0 + bl MOD14_021E55B0 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E55B0 + b _021E54FC +_021E54E6: + add r0, r5, #0 + bl MOD14_021E56A8 + add r0, r5, #0 + mov r1, #0 + bl MOD14_021E5908 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E5908 +_021E54FC: + mov r0, #0xde + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E5504 +MOD14_021E5504: ; 0x021E5504 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _021E5516 + cmp r1, #1 + beq _021E5522 + cmp r1, #2 + beq _021E5532 + pop {r4, pc} +_021E5516: + bl MOD14_021E5578 + add r0, r4, #0 + bl MOD14_021E57CC + pop {r4, pc} +_021E5522: + mov r1, #0 + bl MOD14_021E5688 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E5688 + pop {r4, pc} +_021E5532: + bl MOD14_021E56E0 + add r0, r4, #0 + bl MOD14_021E57CC + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5540 +MOD14_021E5540: ; 0x021E5540 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r7, _021E5574 ; =0x021E6930 + str r0, [sp] + mov r6, #0 + add r5, #0x78 +_021E554C: + add r0, r6, #3 + lsl r4, r0, #4 + ldr r0, [sp] + add r1, r5, r4 + ldr r0, [r0, #0xc] + add r2, r7, #0 + bl FUN_02019150 + add r0, r5, r4 + bl FUN_02019270 + add r0, r5, r4 + mov r1, #0 + bl FUN_02019620 + add r6, r6, #1 + add r7, #8 + cmp r6, #2 + blo _021E554C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5574: .word 0x021E6930 + + thumb_func_start MOD14_021E5578 +MOD14_021E5578: ; 0x021E5578 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r0, #0x78 + add r5, r0, #0 + mov r6, #3 + add r4, #0x30 + add r5, #0x30 + mov r7, #0 +_021E5588: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E55A4 + add r0, r5, #0 + bl FUN_020192B8 + add r0, r5, #0 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x84 + str r7, [r0] +_021E55A4: + add r6, r6, #1 + add r4, #0x10 + add r5, #0x10 + cmp r6, #4 + ble _021E5588 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E55B0 +MOD14_021E55B0: ; 0x021E55B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + ldr r0, [r7, #8] + str r1, [sp] + bl MOD14_021DC568 + add r4, r0, #0 + ldr r0, [r7, #8] + bl MOD14_021DC3F0 + add r6, r0, #0 + ldr r0, [r7, #8] + bl MOD14_021DC558 + ldr r1, [sp] + cmp r1, r0 + bne _021E55D8 + mov r5, #1 + b _021E55DA +_021E55D8: + mov r5, #0 +_021E55DA: + ldr r0, [r7, #8] + ldr r1, [sp] + bl MOD14_021DC574 + cmp r6, #1 + bne _021E55EA + cmp r5, #1 + beq _021E55F2 +_021E55EA: + cmp r5, #0 + bne _021E5676 + cmp r0, #1 + bne _021E5676 +_021E55F2: + ldrb r0, [r4, #6] + cmp r0, #0 + bne _021E5676 + ldr r1, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #0x10] + mov r0, #0x14 + add r2, r1, #0 + mul r2, r0 + add r5, r7, r2 + mov r2, #1 + eor r1, r2 + mul r0, r1 + ldr r6, _021E5684 ; =0x021E6958 + add r4, #0x16 + add r7, r7, r0 +_021E5614: + ldr r3, [r6] + ldr r0, [r6, #8] + ldrh r2, [r4] + sub r1, r0, r3 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r0, r0, #8 + mul r0, r2 + add r0, r3, r0 + str r0, [sp, #8] + ldr r3, [r6, #4] + ldr r0, [r6, #0xc] + ldrh r2, [r4] + sub r1, r0, r3 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r0, r0, #8 + mul r0, r2 + add r0, r3, r0 + str r0, [sp, #0xc] + ldr r0, [r5, #0x34] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, [r5, #0x34] + mov r1, #0 + bl MOD14_021DDE24 + ldr r0, [r7, #0x34] + mov r1, #1 + bl MOD14_021DDE24 + ldr r0, [r5, #0x34] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [sp, #4] + add r4, r4, #2 + add r0, r0, #1 + add r6, #0x10 + add r5, r5, #4 + add r7, r7, #4 + str r0, [sp, #4] + cmp r0, #5 + blt _021E5614 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E5676: + ldr r1, [sp] + add r0, r7, #0 + bl MOD14_021E5688 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E5684: .word 0x021E6958 + + thumb_func_start MOD14_021E5688 +MOD14_021E5688: ; 0x021E5688 + push {r4, r5, r6, lr} + mov r2, #0x14 + mov r4, #0 + mul r2, r1 + add r5, r0, r2 + add r6, r4, #0 +_021E5694: + ldr r0, [r5, #0x34] + add r1, r6, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E5694 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E56A8 +MOD14_021E56A8: ; 0x021E56A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r7, _021E56DC ; =0x021E6920 + str r0, [sp] + mov r6, #0 + add r5, #0x78 +_021E56B4: + add r0, r6, #5 + lsl r4, r0, #4 + ldr r0, [sp] + add r1, r5, r4 + ldr r0, [r0, #0xc] + add r2, r7, #0 + bl FUN_02019150 + add r0, r5, r4 + bl FUN_02019270 + add r0, r5, r4 + mov r1, #0 + bl FUN_02019620 + add r6, r6, #1 + add r7, #8 + cmp r6, #2 + blo _021E56B4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E56DC: .word 0x021E6920 + + thumb_func_start MOD14_021E56E0 +MOD14_021E56E0: ; 0x021E56E0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r0, #0x78 + add r5, r0, #0 + mov r6, #5 + add r4, #0x50 + add r5, #0x50 + mov r7, #0 +_021E56F0: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E570C + add r0, r5, #0 + bl FUN_020192B8 + add r0, r5, #0 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x84 + str r7, [r0] +_021E570C: + add r6, r6, #1 + add r4, #0x10 + add r5, #0x10 + cmp r6, #6 + ble _021E56F0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E5718 +MOD14_021E5718: ; 0x021E5718 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r5, #0 + add r7, #0x98 + add r0, r7, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [r5, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E573A + cmp r0, #2 + beq _021E5786 + b _021E57B8 +_021E573A: + mov r0, #0 + ldr r6, _021E57C4 ; =0x021E6910 + str r0, [sp, #0x10] + add r4, r0, #0 +_021E5742: + ldrh r1, [r6] + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r7, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E57C8 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r7, #0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, r0, #1 + add r4, #0x10 + str r0, [sp, #0x10] + cmp r0, #8 + blo _021E5742 + b _021E57B8 +_021E5786: + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + mov r1, #0x2b + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r7, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E57C8 ; =0x000F0E00 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r7, #0 + bl FUN_0201BDE0 +_021E57B8: + add r0, r7, #0 + bl FUN_02019548 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E57C4: .word 0x021E6910 +_021E57C8: .word 0x000F0E00 + + thumb_func_start MOD14_021E57CC +MOD14_021E57CC: ; 0x021E57CC + push {r4, lr} + add r4, r0, #0 + add r4, #0x98 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E57E4 +MOD14_021E57E4: ; 0x021E57E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r0, r1, #0 + add r2, r5, #0 + add r0, r0, #3 + add r2, #0x78 + lsl r0, r0, #4 + add r4, r2, r0 + ldr r0, [r5, #8] + str r1, [sp, #0x10] + bl MOD14_021DC568 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + str r0, [sp, #0x18] + ldr r0, [r5, #8] + bl MOD14_021DC558 + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _021E5818 + mov r7, #1 + b _021E581A +_021E5818: + mov r7, #0 +_021E581A: + ldr r0, [r5, #8] + ldr r1, [sp, #0x10] + bl MOD14_021DC574 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _021E5836 + cmp r7, #1 + beq _021E5840 +_021E5836: + cmp r7, #0 + bne _021E58FA + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _021E58FA +_021E5840: + ldrb r0, [r6, #6] + cmp r0, #0 + bne _021E58BA + mov r0, #0 + ldr r1, [r6, #0x2c] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5904 ; =0x000F0E00 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r6, #0x2c] + add r0, r4, #0 + bl FUN_0201BDE0 + mov r7, #0 + add r6, #8 +_021E5872: + mov r0, #1 + str r0, [sp] + ldrh r1, [r6] + ldr r0, [r5, #0x74] + mov r2, #3 + mov r3, #0 + bl FUN_02021B04 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + add r0, r7, #1 + lsl r0, r0, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5904 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, r6, #2 + cmp r7, #7 + blt _021E5872 + b _021E58FA +_021E58BA: + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + mov r1, #0x2c + bl FUN_0200A8E0 + mov r7, #0 + add r6, r7, #0 +_021E58C8: + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5904 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, #0x10 + cmp r7, #8 + blt _021E58C8 +_021E58FA: + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E5904: .word 0x000F0E00 + + thumb_func_start MOD14_021E5908 +MOD14_021E5908: ; 0x021E5908 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + add r0, r1, #0 + add r2, r5, #0 + add r0, r0, #5 + add r2, #0x78 + lsl r0, r0, #4 + add r4, r2, r0 + ldr r0, [r5, #8] + str r1, [sp, #0x10] + bl MOD14_021DC568 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + str r0, [sp, #0x1c] + ldr r0, [r5, #8] + bl MOD14_021DC558 + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _021E593C + mov r7, #1 + b _021E593E +_021E593C: + mov r7, #0 +_021E593E: + ldr r0, [r5, #8] + ldr r1, [sp, #0x10] + bl MOD14_021DC574 + str r0, [sp, #0x18] + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _021E595A + cmp r7, #1 + beq _021E5964 +_021E595A: + cmp r7, #0 + bne _021E59F8 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _021E59F8 +_021E5964: + ldrb r0, [r6, #6] + cmp r0, #0 + bne _021E59B8 + mov r0, #0 + str r0, [sp, #0x14] + mov r7, #4 +_021E5970: + ldrh r1, [r6, #0x20] + cmp r1, #0 + beq _021E59A8 + ldr r0, [r5, #0x70] + ldr r2, [r5, #0x74] + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5A04 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 +_021E59A8: + ldr r0, [sp, #0x14] + add r6, r6, #2 + add r0, r0, #1 + add r7, #0x18 + str r0, [sp, #0x14] + cmp r0, #4 + blt _021E5970 + b _021E59F8 +_021E59B8: + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + mov r1, #0x2c + bl FUN_0200A8E0 + mov r7, #0 + mov r6, #4 +_021E59C6: + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5A04 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, #0x18 + cmp r7, #4 + blt _021E59C6 +_021E59F8: + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5A04: .word 0x000F0E00 + + thumb_func_start MOD14_021E5A08 +MOD14_021E5A08: ; 0x021E5A08 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r7, r0, #0 + mov r0, #0xa + add r3, r7, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x6f + mov r2, #1 + add r3, #0x60 + bl FUN_02006C30 + str r0, [r7, #0x5c] + mov r0, #0xa + add r3, r7, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x70 + mov r2, #1 + add r3, #0x68 + bl FUN_02006C5C + str r0, [r7, #0x64] + mov r0, #0x60 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x71 + mov r2, #5 + mov r3, #0 + bl FUN_02006930 + add r0, sp, #0x48 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x48 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0x6e + mov r2, #1 + bl FUN_02006AE4 + str r0, [sp, #0x20] + ldr r0, [r7, #4] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r7, #0x68] + add r1, sp, #0x48 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r3, [r7, #0x60] + add r0, sp, #0x24 + bl MOD14_021DDDB4 + ldr r0, _021E5B5C ; =0x021E6900 + mov r4, #0 + str r0, [sp, #0x1c] + str r7, [sp, #0x18] + str r7, [sp, #0x14] +_021E5A92: + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [sp, #0x1c] + mov r3, #0 + ldrsh r2, [r2, r3] + ldr r3, [sp, #0x1c] + mov r5, #2 + ldrsh r3, [r3, r5] + ldr r0, [r7, #0x10] + add r1, sp, #0x24 + bl MOD14_021DDDD4 + ldr r1, [sp, #0x18] + str r0, [r1, #0x28] + add r1, r4, #0 + bl FUN_02020248 + ldr r0, [sp, #0x18] + mov r1, #0 + ldr r0, [r0, #0x28] + bl FUN_02020130 + ldr r5, [sp, #0x14] + mov r6, #0 +_021E5AC6: + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r2, #0 + ldr r0, [r7, #0x10] + add r1, sp, #0x24 + add r3, r2, #0 + bl MOD14_021DDDD4 + str r0, [r5, #0x34] + add r1, r4, #5 + bl FUN_02020130 + ldr r0, [r5, #0x34] + add r1, r4, #0 + bl FUN_02020248 + ldr r0, [r5, #0x34] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #5 + blo _021E5AC6 + ldr r0, [sp, #0x1c] + add r4, r4, #1 + add r0, r0, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, #0x14 + str r0, [sp, #0x14] + cmp r4, #2 + blo _021E5A92 + ldr r0, [r7, #0x2c] + mov r1, #1 + bl FUN_02020100 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r3, #0x23 + ldr r0, [r7, #0x10] + add r1, sp, #0x24 + mov r2, #0x80 + lsl r3, r3, #4 + bl MOD14_021DDDD4 + str r0, [r7, #0x30] + mov r1, #3 + bl FUN_02020130 + ldr r0, [r7, #0x30] + mov r1, #2 + bl FUN_02020248 + ldr r0, _021E5B60 ; =MOD14_021E5D64 + add r1, r7, #0 + mov r2, #1 + bl FUN_0200CA44 + mov r1, #0xe + lsl r1, r1, #6 + str r0, [r7, r1] + ldr r1, [sp, #0x20] + add r0, r7, #0 + bl MOD14_021E5B64 + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E5B5C: .word 0x021E6900 +_021E5B60: .word MOD14_021E5D64 + + thumb_func_start MOD14_021E5B64 +MOD14_021E5B64: ; 0x021E5B64 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + str r0, [sp, #8] + ldr r0, [r0, #4] + str r1, [sp, #0xc] + bl MOD14_021DDD48 + add r5, r0, #0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x14] + bl MOD14_021E0C74 + add r4, r0, #0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x14] + bl MOD14_021E0C78 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, sp, #0x10 + add r1, sp, #0x34 + add r2, r5, #0 + add r3, r4, #0 + bl MOD14_021DDDB4 + mov r7, #0 + ldr r4, [sp, #8] + ldr r5, _021E5BF8 ; =0x021E6908 + add r6, r7, #0 +_021E5BA0: + ldr r0, [sp, #0xc] + add r0, r0, r6 + str r0, [r4, #0x18] + add r0, sp, #0x34 + bl FUN_020B1A24 + ldr r2, [r4, #0x18] + add r0, sp, #0x34 + mov r1, #2 + bl FUN_020B1A1C + ldr r0, _021E5BFC ; =0x04001000 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021E5C00 ; =0x00300010 + mov r3, #2 + and r0, r1 + str r0, [sp, #0x54] + mov r0, #1 + sub r0, r0, r7 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #8] + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + ldr r0, [r0, #0x10] + add r1, sp, #0x10 + bl MOD14_021DDDD4 + mov r1, #0 + str r0, [r4, #0x20] + bl FUN_020200A0 + mov r0, #2 + lsl r0, r0, #8 + add r7, r7, #1 + add r6, r6, r0 + add r4, r4, #4 + add r5, r5, #4 + cmp r7, #2 + blt _021E5BA0 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5BF8: .word 0x021E6908 +_021E5BFC: .word 0x04001000 +_021E5C00: .word 0x00300010 + + thumb_func_start MOD14_021E5C04 +MOD14_021E5C04: ; 0x021E5C04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0xe + lsl r1, r1, #6 + str r0, [sp] + ldr r0, [r0, r1] + cmp r0, #0 + beq _021E5C18 + bl FUN_0200CAB4 +_021E5C18: + ldr r6, [sp] + mov r0, #0 + str r0, [sp, #4] + add r7, r6, #0 +_021E5C20: + ldr r0, [r6, #0x20] + bl FUN_0201FFC8 + ldr r0, [r6, #0x28] + bl FUN_0201FFC8 + mov r4, #0 + add r5, r7, #0 +_021E5C30: + ldr r0, [r5, #0x34] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E5C30 + ldr r0, [sp, #4] + add r6, r6, #4 + add r0, r0, #1 + add r7, #0x14 + str r0, [sp, #4] + cmp r0, #2 + blt _021E5C20 + ldr r0, [sp] + ldr r0, [r0, #0x30] + bl FUN_0201FFC8 + ldr r0, [sp] + ldr r0, [r0, #0x5c] + bl FUN_02016A18 + ldr r0, [sp] + ldr r0, [r0, #0x64] + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E5C68 +MOD14_021E5C68: ; 0x021E5C68 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r4, r0, #0 + ldr r0, [r5, #8] + add r1, r4, #0 + bl MOD14_021DC568 + lsl r7, r4, #2 + add r6, r0, #0 + add r0, r5, r7 + ldr r4, [r0, #0x20] + ldr r0, [r6] + str r0, [sp] + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021E5CF0 + ldrh r0, [r6, #4] + ldrb r1, [r6, #7] + ldrb r2, [r6, #6] + bl FUN_0206B7BC + add r6, r0, #0 + ldr r0, [sp] + bl FUN_0206B688 + add r2, r0, #0 + add r1, r5, #0 + mov r3, #0xa + ldr r0, [r5, #0x14] + add r1, #0xe8 + lsl r3, r3, #6 + bl MOD14_021E0BAC + add r0, r5, #0 + add r0, #0xe8 + add r1, sp, #4 + bl FUN_020B0088 + ldr r0, [sp, #4] + mov r1, #2 + ldr r0, [r0, #0x14] + lsl r1, r1, #8 + bl DC_FlushRange + ldr r0, [sp, #4] + add r1, r5, r7 + mov r2, #2 + ldr r0, [r0, #0x14] + ldr r1, [r1, #0x18] + lsl r2, r2, #8 + bl GXS_LoadOBJ + add r0, r4, #0 + add r1, r6, #4 + bl FUN_02020248 + add r0, r4, #0 + mov r1, #1 + bl FUN_020200A0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021E5CF0: + add r0, r4, #0 + mov r1, #0 + bl FUN_020200A0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E5CFC +MOD14_021E5CFC: ; 0x021E5CFC + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r6, r0, #0 + add r1, r5, #0 + add r1, #0x78 + lsl r0, r6, #4 + add r4, r1, r0 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021E5D56 + ldr r0, [r5, #8] + add r1, r6, #0 + bl MOD14_021DC568 + add r5, r0, #0 + mov r0, #0 + ldr r1, [r5, #0x28] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5D60 ; =0x000F0E00 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x28] + add r0, r4, #0 + bl FUN_0201BDE0 +_021E5D56: + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E5D60: .word 0x000F0E00 + + thumb_func_start MOD14_021E5D64 +MOD14_021E5D64: ; 0x021E5D64 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #8] + bl MOD14_021DC57C + add r4, r0, #0 + ldr r0, [r5, #0x30] + bl FUN_020201DC + cmp r0, #3 + bne _021E5D88 + cmp r4, #0 + beq _021E5D94 + ldr r0, [r5, #0x30] + mov r1, #4 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021E5D88: + cmp r4, #0 + bne _021E5D94 + ldr r0, [r5, #0x30] + mov r1, #3 + bl FUN_02020130 +_021E5D94: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5D98 +MOD14_021E5D98: ; 0x021E5D98 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r4, #0x74 + add r0, r4, #0 + add r5, r1, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #0x36 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x37 + bl MOD14_021E613C + add r0, r4, #0 + add r0, #0x20 + strb r5, [r0] + mov r0, #0 + add r4, #0x23 + strb r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E5DC4 +MOD14_021E5DC4: ; 0x021E5DC4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x74 + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #1 + add r0, #0x23 + strb r1, [r0] + add r0, r5, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bhi _021E5DFA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E5DF0: ; jump table + .short _021E5E70 - _021E5DF0 - 2 ; case 0 + .short _021E5E9A - _021E5DF0 - 2 ; case 1 + .short _021E5DFA - _021E5DF0 - 2 ; case 2 + .short _021E5DFA - _021E5DF0 - 2 ; case 3 + .short _021E5EC4 - _021E5DF0 - 2 ; case 4 +_021E5DFA: + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021E5E1C + add r0, r5, #0 + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021E5E12 + mov r1, #0x24 + b _021E5E14 +_021E5E12: + mov r1, #0x23 +_021E5E14: + add r0, r4, #0 + bl MOD14_021E613C + b _021E5E24 +_021E5E1C: + add r0, r4, #0 + mov r1, #0x22 + bl MOD14_021E613C +_021E5E24: + add r0, r4, #0 + mov r1, #0x25 + bl MOD14_021E613C + add r0, r5, #0 + bl MOD14_021DC42C + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _021E5E40 + add r0, r4, #0 + mov r1, #0x28 + bl MOD14_021E613C +_021E5E40: + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E5E4E + mov r1, #0x26 + b _021E5E50 +_021E5E4E: + mov r1, #0x27 +_021E5E50: + add r0, r4, #0 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} +_021E5E70: + add r0, r4, #0 + mov r1, #0x27 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x25 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} +_021E5E9A: + add r0, r4, #0 + mov r1, #0x26 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x25 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} +_021E5EC4: + add r0, r5, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021E5ED2 + mov r1, #0x34 + b _021E5ED4 +_021E5ED2: + mov r1, #0x35 +_021E5ED4: + add r0, r4, #0 + bl MOD14_021E613C + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E5EE8 + mov r1, #0x26 + b _021E5EEA +_021E5EE8: + mov r1, #0x27 +_021E5EEA: + add r0, r4, #0 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5F04 +MOD14_021E5F04: ; 0x021E5F04 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r5, r4, #0 + add r5, #0x74 + bl MOD14_021DC538 + add r6, r0, #0 + add r0, r4, #0 + bl MOD14_021DC430 + add r4, r0, #0 + add r0, r5, #0 + bl MOD14_021E612C + add r0, r5, #0 + mov r1, #1 + add r0, #0x23 + strb r1, [r0] + cmp r6, #0 + beq _021E5F54 + cmp r4, #0 + beq _021E5F3A + add r0, r5, #0 + mov r1, #0x31 + bl MOD14_021E613C + b _021E5F42 +_021E5F3A: + add r0, r5, #0 + mov r1, #0x2e + bl MOD14_021E613C +_021E5F42: + add r0, r5, #0 + mov r1, #0x32 + bl MOD14_021E613C + add r0, r5, #0 + mov r1, #0x30 + bl MOD14_021E613C + b _021E5F7A +_021E5F54: + cmp r4, #0 + beq _021E5F72 + add r0, r5, #0 + mov r1, #0x2f + bl MOD14_021E613C + add r0, r5, #0 + mov r1, #0x32 + bl MOD14_021E613C + add r0, r5, #0 + mov r1, #0x30 + bl MOD14_021E613C + b _021E5F7A +_021E5F72: + add r0, r5, #0 + mov r1, #0x2e + bl MOD14_021E613C +_021E5F7A: + add r0, r5, #0 + mov r1, #0x33 + bl MOD14_021E613C + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E5F84 +MOD14_021E5F84: ; 0x021E5F84 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x74 + bl MOD14_021DC44C + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E613C + add r0, r5, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021E5FB8 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #2 + bl MOD14_021E613C +_021E5FB8: + add r0, r4, #0 + mov r1, #3 + bl MOD14_021E613C + mov r0, #2 + add r4, #0x23 + strb r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E5FC8 +MOD14_021E5FC8: ; 0x021E5FC8 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r4, #0x74 + add r5, r1, #0 + bl MOD14_021DC44C + add r6, r0, #0 + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #4 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #5 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #6 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #7 + bl MOD14_021E613C + add r0, r6, #0 + bl FUN_0206B668 + add r6, r0, #0 + beq _021E600E + add r0, r4, #0 + mov r1, #8 + bl MOD14_021E613C +_021E600E: + cmp r6, #4 + bls _021E601A + add r0, r4, #0 + mov r1, #9 + bl MOD14_021E613C +_021E601A: + add r0, r4, #0 + mov r1, #3 + add r0, #0x23 + strb r1, [r0] + cmp r5, #4 + blt _021E6032 + cmp r5, #9 + bgt _021E6032 + sub r0, r5, #4 + add r4, #0x20 + strb r0, [r4] + pop {r4, r5, r6, pc} +_021E6032: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E6038 +MOD14_021E6038: ; 0x021E6038 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r6, #0x74 + add r5, r1, #0 + bl MOD14_021DC44C + str r0, [sp] + add r0, r6, #0 + bl MOD14_021E612C + cmp r5, #4 + blt _021E6070 + cmp r5, #7 + bgt _021E6070 + sub r0, r5, #4 + ldr r1, _021E60B0 ; =0x021E69A8 + lsl r0, r0, #3 + mov r5, #0 + add r4, r1, r0 +_021E605E: + ldrh r1, [r4] + add r0, r6, #0 + bl MOD14_021E613C + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _021E605E + b _021E60A6 +_021E6070: + mov r4, #0 + add r7, r4, #0 + cmp r5, #9 + bne _021E607A + mov r4, #4 +_021E607A: + mov r5, #0 +_021E607C: + ldr r0, [sp] + add r1, r5, #0 + bl FUN_0206B644 + cmp r0, #0 + beq _021E60A0 + cmp r4, #0 + beq _021E6090 + sub r4, r4, #1 + b _021E60A0 +_021E6090: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x1a + bl MOD14_021E613C + add r7, r7, #1 + cmp r7, #4 + bge _021E60A6 +_021E60A0: + add r5, r5, #1 + cmp r5, #8 + blt _021E607C +_021E60A6: + mov r0, #3 + add r6, #0x23 + strb r0, [r6] + pop {r3, r4, r5, r6, r7, pc} + nop +_021E60B0: .word 0x021E69A8 + + thumb_func_start MOD14_021E60B4 +MOD14_021E60B4: ; 0x021E60B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x74 + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #4 + add r0, #0x23 + strb r1, [r0] + add r5, #0x57 + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x22 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0x38 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x39 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3b + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3c + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3d + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2c + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2d + bl MOD14_021E613C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E6118 +MOD14_021E6118: ; 0x021E6118 + add r2, r0, #0 + add r2, #0x96 + ldrb r3, [r2] + mov r2, #1 + lsl r2, r1 + add r1, r3, #0 + eor r1, r2 + add r0, #0x96 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021E612C +MOD14_021E612C: ; 0x021E612C + add r1, r0, #0 + mov r2, #0 + add r1, #0x21 + strb r2, [r1] + add r0, #0x20 + strb r2, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E613C +MOD14_021E613C: ; 0x021E613C + push {r3, r4} + add r2, r0, #0 + add r2, #0x21 + ldrb r4, [r2] + cmp r4, #8 + bhs _021E615A + add r2, r0, #0 + add r2, #0x21 + ldrb r2, [r2] + add r3, r2, #1 + add r2, r0, #0 + add r2, #0x21 + strb r3, [r2] + lsl r2, r4, #2 + str r1, [r0, r2] +_021E615A: + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E6160 +MOD14_021E6160: ; 0x021E6160 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _021E6208 ; =0x021C48B8 + add r4, #0x74 + ldr r1, [r0, #0x48] + mov r0, #0x40 + add r2, r1, #0 + tst r2, r0 + beq _021E61A0 + add r2, r4, #0 + add r2, #0x20 + ldrb r2, [r2] + cmp r2, #0 + beq _021E618C + add r1, r4, #0 + add r1, #0x20 + ldrb r1, [r1] + add r4, #0x20 + sub r0, #0x42 + sub r1, r1, #1 + strb r1, [r4] + pop {r3, r4, r5, pc} +_021E618C: + add r2, r4, #0 + add r2, #0x21 + ldrb r2, [r2] + cmp r2, #3 + blo _021E61A0 + sub r1, r2, #1 + add r4, #0x20 + strb r1, [r4] + sub r0, #0x42 + pop {r3, r4, r5, pc} +_021E61A0: + mov r0, #0x80 + add r2, r1, #0 + tst r2, r0 + beq _021E61D8 + add r2, r4, #0 + add r2, #0x21 + ldrb r5, [r2] + add r2, r4, #0 + add r2, #0x20 + ldrb r3, [r2] + sub r2, r5, #1 + cmp r3, r2 + bge _021E61CA + add r1, r4, #0 + add r1, #0x20 + ldrb r1, [r1] + add r4, #0x20 + sub r0, #0x82 + add r1, r1, #1 + strb r1, [r4] + pop {r3, r4, r5, pc} +_021E61CA: + cmp r5, #3 + blo _021E61D8 + mov r0, #0 + add r4, #0x20 + strb r0, [r4] + sub r0, r0, #2 + pop {r3, r4, r5, pc} +_021E61D8: + mov r0, #2 + tst r0, r1 + beq _021E61EA + ldr r0, _021E620C ; =0x000005DD + bl FUN_020054C8 + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, pc} +_021E61EA: + mov r0, #1 + tst r1, r0 + beq _021E6202 + ldr r0, _021E620C ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + lsl r0, r0, #2 + ldr r0, [r4, r0] + pop {r3, r4, r5, pc} +_021E6202: + sub r0, r0, #4 + pop {r3, r4, r5, pc} + nop +_021E6208: .word 0x021C48B8 +_021E620C: .word 0x000005DD + + thumb_func_start MOD14_021E6210 +MOD14_021E6210: ; 0x021E6210 + add r0, #0x74 + add r1, r0, #0 + add r1, #0x20 + ldrb r1, [r1] + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E6220 +MOD14_021E6220: ; 0x021E6220 + ldr r0, [r0, #0x74] + bx lr + + .section .data + ; 0x021E6224 + .incbin "baserom.nds", 0x236b44, 0x7dc + + .section .bss + ; 0x021E69FC + .space 0x1A0 |