diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-02 17:30:12 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-02 17:30:12 -0400 |
commit | 8fb894b2676635e4dc9ad989d39a09fbf8b4c186 (patch) | |
tree | 51008bb2906ef415bcc08a9777f5c2c1ec852690 | |
parent | e4b89fa4efe67fd291d94b3a9de2f92e47e103ed (diff) |
Disassemble module 08
-rw-r--r-- | arm9/arm9.lcf | 16 | ||||
-rw-r--r-- | arm9/global.inc | 73 | ||||
-rw-r--r-- | arm9/modules/08/asm/module_08.s | 49981 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 8 |
4 files changed, 50076 insertions, 2 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index b332a790..2fa78f43 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -18,7 +18,7 @@ MEMORY { MODULE_05 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_08 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_09 (RWX) : ORIGIN=0, LENGTH=0 MODULE_10 (RWX) : ORIGIN=0, LENGTH=0 MODULE_11 (RWX) : ORIGIN=0, LENGTH=0 @@ -444,7 +444,19 @@ SECTIONS { module_07.o (.bss) } >> MODULE_07 - OVERLAY_FILE(08, 0x183800, FILE_187800.o) + .MODULE.08 : AT (0x183800) + { + module_08.o (.text) + module_08.o (.sdata) + module_08.o (.data) + } > MODULE_08 + + .MODULE.08.bss : + { + module_08.o (.sbss) + module_08.o (.bss) + } >> MODULE_08 + OVERLAY_FILE(09, 0x19F000, FILE_1A3000.o) OVERLAY_FILE(10, 0x1A9200, FILE_1AD200.o) OVERLAY_FILE(11, 0x1A9400, FILE_1AD400.o) diff --git a/arm9/global.inc b/arm9/global.inc index db7694f5..9dee371a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4591,3 +4591,76 @@ .extern FUN_021F6234
.extern FUN_021F6240
.extern FUN_021F6254
+.extern FUN_020031B8
+.extern FUN_02003204
+.extern FUN_020039E8
+.extern FUN_02003A64
+.extern FUN_02003B40
+.extern FUN_020054A8
+.extern FUN_02005530
+.extern FUN_0200554C
+.extern FUN_02005614
+.extern FUN_02007E40
+.extern FUN_020080E0
+.extern FUN_0200813C
+.extern FUN_020081C0
+.extern FUN_02008268
+.extern FUN_0200C59C
+.extern FUN_0200C5B4
+.extern FUN_0200C5E0
+.extern FUN_0200C5F4
+.extern FUN_0200C608
+.extern FUN_0200C630
+.extern FUN_0200C658
+.extern FUN_0200C680
+.extern FUN_0200C68C
+.extern FUN_0200C6A4
+.extern FUN_0200C6B0
+.extern FUN_0200C6C4
+.extern FUN_0200C7FC
+.extern FUN_0200C898
+.extern FUN_0200C8BC
+.extern FUN_0200C8D0
+.extern FUN_0200C8DC
+.extern FUN_0200C8F8
+.extern FUN_0200C90C
+.extern FUN_020129C8
+.extern FUN_020129D8
+.extern FUN_02013348
+.extern FUN_020133DC
+.extern FUN_020133EC
+.extern FUN_020133FC
+.extern FUN_0201341C
+.extern FUN_02013428
+.extern FUN_02013448
+.extern FUN_02013514
+.extern FUN_02013530
+.extern FUN_02013548
+.extern FUN_0201357C
+.extern FUN_02013594
+.extern FUN_020135B0
+.extern FUN_020135C4
+.extern FUN_020135E0
+.extern FUN_020135F4
+.extern FUN_02013610
+.extern FUN_02013628
+.extern FUN_0201365C
+.extern FUN_02013674
+.extern FUN_020170F4
+.extern FUN_020187B0
+.extern FUN_0201B6CC
+.extern FUN_02029CE4
+.extern FUN_02029CE8
+.extern FUN_02068E88
+.extern FUN_02069FB0
+.extern FUN_02085FF4
+.extern FUN_02086018
+.extern FUN_02230078
+.extern FUN_02230080
+.extern FUN_022300CC
+.extern FUN_022312D0
+.extern FUN_02231504
+.extern FUN_02231534
+.extern FUN_02231678
+.extern FUN_02233560
+.extern FX_Modf
diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s new file mode 100644 index 00000000..50ed884f --- /dev/null +++ b/arm9/modules/08/asm/module_08.s @@ -0,0 +1,49981 @@ + .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD08_02211E60
+MOD08_02211E60: ; 0x02211E60
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02211E70
+ lsl r1, r0, #2
+ ldr r0, _02211E74 ; =0x0222A9E4
+ ldr r0, [r0, r1]
+ bx lr
+_02211E70:
+ ldr r0, _02211E78 ; =0x0222A780
+ bx lr
+ .align 2, 0
+_02211E74: .word 0x0222A9E4
+_02211E78: .word 0x0222A780
+
+ thumb_func_start MOD08_02211E7C
+MOD08_02211E7C: ; 0x02211E7C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r4, r3, #0
+ bl MOD08_02211E60
+ ldr r3, [sp, #0x10]
+ add r1, r0, #0
+ mov r0, #0x20
+ lsl r3, r3, #0x14
+ str r0, [sp]
+ add r0, r5, #0
+ add r2, r4, #0
+ lsr r3, r3, #0x10
+ bl FUN_02003054
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02211EA0
+MOD08_02211EA0: ; 0x02211EA0
+ add r1, r0, #0
+ add r1, #0x8d
+ ldrb r1, [r1]
+ cmp r1, #0
+ bne _02211EB2
+ ldr r1, _02211EC0 ; =MOD08_02211EC4
+ add r0, #0xbc
+ str r1, [r0]
+ bx lr
+_02211EB2:
+ add r1, r0, #0
+ add r1, #0x8d
+ ldrb r1, [r1]
+ add r0, #0x8d
+ sub r1, r1, #1
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+_02211EC0: .word MOD08_02211EC4
+
+ thumb_func_start MOD08_02211EC4
+MOD08_02211EC4: ; 0x02211EC4
+ push {r4, lr}
+ add r4, r0, #0
+_02211EC8:
+ ldr r0, [r4, #0x18]
+ ldr r0, [r0]
+ bl MOD08_0221533C
+ add r1, r0, #0
+ add r0, r4, #0
+ blx r1
+ add r0, r4, #0
+ add r0, #0x8d
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02211EE6
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ beq _02211EC8
+_02211EE6:
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02211EE8
+MOD08_02211EE8: ; 0x02211EE8
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ add r4, r3, #0
+ cmp r0, #1
+ beq _02211EF8
+ cmp r0, #2
+ beq _02211F06
+ b _02211F14
+_02211EF8:
+ add r0, r1, #0
+ add r0, #0x8e
+ ldrh r0, [r0]
+ add r1, #0x8e
+ add r0, r0, #1
+ strh r0, [r1]
+ b _02211F18
+_02211F06:
+ add r0, r1, #0
+ add r0, #0x90
+ ldrh r0, [r0]
+ add r1, #0x90
+ add r0, r0, #1
+ strh r0, [r1]
+ b _02211F18
+_02211F14:
+ bl ErrorHandling
+_02211F18:
+ ldr r2, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02211F24
+MOD08_02211F24: ; 0x02211F24
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r0, #1
+ beq _02211F32
+ cmp r0, #2
+ beq _02211F40
+ b _02211F4E
+_02211F32:
+ add r0, r1, #0
+ add r0, #0x8e
+ ldrh r0, [r0]
+ add r1, #0x8e
+ sub r0, r0, #1
+ strh r0, [r1]
+ b _02211F52
+_02211F40:
+ add r0, r1, #0
+ add r0, #0x90
+ ldrh r0, [r0]
+ add r1, #0x90
+ sub r0, r0, #1
+ strh r0, [r1]
+ b _02211F52
+_02211F4E:
+ bl ErrorHandling
+_02211F52:
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02211F5C
+MOD08_02211F5C: ; 0x02211F5C
+ push {r3, r4, r5, lr}
+ mov r1, #0x69
+ lsl r1, r1, #2
+ add r5, r0, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _02211F78
+ cmp r4, #0
+ bne _02211F74
+ bl ErrorHandling
+_02211F74:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02211F78:
+ mov r2, #0x69
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+ mov r1, #0x47
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xc0
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02211FAC
+ bne _02211FA8
+ bl ErrorHandling
+_02211FA8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02211FAC:
+ mov r2, #0x47
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+ mov r1, #0
+ str r1, [r4, #0xc]
+ str r1, [r4, #0x18]
+ add r2, r4, #0
+ add r3, r1, #0
+_02211FC0:
+ add r0, r2, #0
+ add r0, #0xcc
+ add r1, r1, #1
+ add r2, r2, #4
+ str r3, [r0]
+ cmp r1, #4
+ blt _02211FC0
+ mov r0, #0x59
+ add r2, r4, #0
+ mov r1, #0
+ lsl r0, r0, #2
+_02211FD6:
+ add r3, r3, #1
+ str r1, [r2, r0]
+ add r2, r2, #4
+ cmp r3, #5
+ blt _02211FD6
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #1
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02211FF0
+MOD08_02211FF0: ; 0x02211FF0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0
+ bne _02211FFE
+ bl ErrorHandling
+_02211FFE:
+ str r4, [r5, #8]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212004
+MOD08_02212004: ; 0x02212004
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221200E
+ bl ErrorHandling
+_0221200E:
+ ldr r0, [r4, #8]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212014
+MOD08_02212014: ; 0x02212014
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221201E
+ bl ErrorHandling
+_0221201E:
+ ldr r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212024
+MOD08_02212024: ; 0x02212024
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD08_022123CC
+ cmp r0, #0
+ bne _02212034
+ mov r0, #0
+ pop {r4, pc}
+_02212034:
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02212048
+MOD08_02212048: ; 0x02212048
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r4, r0, #0
+ add r5, r1, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ bl MOD08_0221268C
+ add r0, r4, #0
+ bl MOD08_022123CC
+ cmp r0, #0
+ bne _02212068
+ add sp, #0x3c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02212068:
+ mov r3, #0
+ mov r2, #1
+ add r1, r3, #0
+_0221206E:
+ add r0, r4, r3
+ add r0, #0x6c
+ strb r2, [r0]
+ add r0, r4, r3
+ add r0, #0x7c
+ add r3, r3, #1
+ strb r1, [r0]
+ cmp r3, #0x10
+ blt _0221206E
+ add r3, r4, #0
+ mov r0, #0
+_02212084:
+ add r2, r3, #0
+ add r2, #0x94
+ add r1, r1, #1
+ add r3, r3, #4
+ str r0, [r2]
+ cmp r1, #0xa
+ blt _02212084
+ add r3, r4, #0
+ mov r2, #0
+_02212096:
+ str r2, [r3, #0x30]
+ add r1, r3, #0
+ str r2, [r3, #0x28]
+ add r1, #0x2c
+ strb r2, [r1]
+ add r1, r3, #0
+ add r1, #0x2d
+ add r0, r0, #1
+ add r3, #0xc
+ strb r2, [r1]
+ cmp r0, #3
+ blt _02212096
+ add r0, r4, #0
+ add r0, #0xc0
+ ldrb r1, [r5]
+ ldr r0, [r0]
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldrb r1, [r5, #1]
+ ldr r0, [r0]
+ strb r1, [r0, #1]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldrh r1, [r5, #2]
+ ldr r0, [r0]
+ strh r1, [r0, #2]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r5, #4]
+ ldr r0, [r0]
+ str r1, [r0, #4]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldrh r1, [r5, #8]
+ ldr r0, [r0]
+ strh r1, [r0, #8]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldrh r1, [r5, #0xc]
+ ldr r0, [r0]
+ strh r1, [r0, #0xa]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r5, #0x10]
+ ldr r0, [r0]
+ str r1, [r0, #0xc]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldrh r1, [r5, #0xa]
+ ldr r0, [r0]
+ strh r1, [r0, #0x10]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r5, #0x54]
+ ldr r0, [r0]
+ strh r1, [r0, #0x12]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldrh r1, [r5, #0x14]
+ ldr r0, [r0]
+ strh r1, [r0, #0x14]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldrh r1, [r5, #0x16]
+ ldr r0, [r0]
+ strh r1, [r0, #0x16]
+ ldrh r0, [r5, #0xe]
+ lsl r0, r0, #0x1e
+ lsr r2, r0, #0x1f
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ mov r0, #0x46
+ lsl r0, r0, #2
+ str r2, [r1, r0]
+ ldr r0, [sp, #4]
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xac
+ str r1, [r0]
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02212148
+ bl ErrorHandling
+_02212148:
+ ldr r0, [sp, #4]
+ mov r5, #0
+ ldr r1, [r0, #4]
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #4]
+ ldr r1, [r0, #8]
+ add r0, r4, #0
+ add r0, #0xc8
+ str r1, [r0]
+ ldr r0, [sp, #4]
+ add r3, r5, #0
+ ldr r1, [r0, #0x30]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r7, r5, #0
+ add r0, #0xd4
+ str r1, [r0]
+ add r0, r2, #0
+ mov ip, r0
+_02212176:
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ ldr r0, [r2, #0xc]
+ add r1, r1, r3
+ add r1, #0xb0
+ str r0, [r1]
+ ldr r0, [sp, #4]
+ add r1, r0, r5
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldrb r6, [r1, #0x1c]
+ add r0, r0, r5
+ add r0, #0xc0
+ strb r6, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r6, [r2, #0x20]
+ add r0, r0, r3
+ add r0, #0xc4
+ str r6, [r0]
+ mov r0, ip
+ ldrh r6, [r0, #0x34]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, r0, r7
+ add r0, #0xd8
+ strh r6, [r0]
+ add r0, r1, #0
+ add r0, #0x3c
+ ldrb r6, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r7, r7, #2
+ add r0, r0, r5
+ add r0, #0xe0
+ strb r6, [r0]
+ add r0, r1, #0
+ add r0, #0x40
+ ldrb r6, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r1, #0x44
+ add r0, r0, r5
+ add r0, #0xe4
+ strb r6, [r0]
+ ldrb r0, [r1]
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r1, r1, r5
+ add r1, #0xe8
+ strb r0, [r1]
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ ldr r0, [r2, #0x48]
+ add r1, r1, r3
+ add r1, #0xec
+ str r0, [r1]
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ ldr r0, [r2, #0x58]
+ add r1, r1, r3
+ add r1, #0xfc
+ str r0, [r1]
+ mov r0, ip
+ add r0, r0, #2
+ add r5, r5, #1
+ add r2, r2, #4
+ add r3, r3, #4
+ mov ip, r0
+ cmp r5, #4
+ blt _02212176
+ ldr r5, [sp, #4]
+ mov r2, #0x61
+ lsl r2, r2, #2
+ add r5, #0x6c
+ add r3, r4, r2
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [sp, #4]
+ add r0, #0x84
+ ldr r3, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ add r0, r2, #0
+ sub r0, #0x78
+ str r3, [r1, r0]
+ ldr r0, [sp, #4]
+ add r0, #0x8c
+ ldr r3, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ add r0, r2, #0
+ sub r0, #0x70
+ str r3, [r1, r0]
+ ldr r0, [sp, #4]
+ add r0, #0x88
+ ldr r3, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ add r0, r2, #0
+ sub r0, #0x74
+ str r3, [r1, r0]
+ ldr r0, [sp]
+ sub r2, #0x62
+ cmp r0, r2
+ bne _02212296
+ ldr r5, _0221236C ; =0x0222AB18
+ add r3, sp, #8
+ mov r2, #6
+_02212270:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02212270
+ ldr r0, [r5]
+ str r0, [r3]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldrh r0, [r0, #0x12]
+ cmp r0, #0xc
+ blo _0221228E
+ mov r0, #0xa1
+ str r0, [sp]
+ b _02212296
+_0221228E:
+ lsl r1, r0, #2
+ add r0, sp, #8
+ ldr r0, [r0, r1]
+ str r0, [sp]
+_02212296:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _022122A2
+ ldr r1, _02212370 ; =0x000001D3
+ cmp r0, r1
+ ble _022122A6
+_022122A2:
+ mov r0, #1
+ str r0, [sp]
+_022122A6:
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x68]
+ str r0, [r4, #4]
+ ldr r1, [sp]
+ ldr r2, [r4]
+ bl LoadFromNarc_2
+ str r0, [r4, #0x14]
+ cmp r0, #0
+ bne _022122C6
+ bne _022122C0
+ bl ErrorHandling
+_022122C0:
+ add sp, #0x3c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_022122C6:
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_02018884
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_02018884
+ ldr r1, _02212374 ; =0x000001A1
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #2
+ bl FUN_02018884
+ ldr r1, _02212378 ; =0x000001A2
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_02018884
+ ldr r1, _0221237C ; =0x000001A3
+ mov r3, #0
+ strb r0, [r4, r1]
+ add r2, r4, #0
+ add r1, r3, #0
+_02212310:
+ add r0, r2, #0
+ add r0, #0xdc
+ add r3, r3, #1
+ add r2, r2, #4
+ str r1, [r0]
+ cmp r3, #0xa
+ blt _02212310
+ mov r2, #0x4f
+ lsl r2, r2, #2
+ add r3, r2, #0
+ add r5, r4, #0
+ mov r0, #0
+ add r3, #0x14
+_0221232A:
+ str r0, [r5, r2]
+ str r0, [r5, r3]
+ add r1, r1, #1
+ add r5, r5, #4
+ cmp r1, #5
+ blt _0221232A
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ add r1, r4, #0
+ ldr r2, _02212380 ; =MOD08_02211EC4
+ add r1, #0xbc
+ str r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8d
+ strb r0, [r1]
+ add r0, r4, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _0221235C
+ mov r0, #0x67
+ mov r1, #7
+ lsl r0, r0, #2
+ b _02212362
+_0221235C:
+ mov r1, #0xff
+ add r0, r1, #0
+ add r0, #0x9d
+_02212362:
+ str r1, [r4, r0]
+ mov r0, #1
+ str r0, [r4, #0x10]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221236C: .word 0x0222AB18
+_02212370: .word 0x000001D3
+_02212374: .word 0x000001A1
+_02212378: .word 0x000001A2
+_0221237C: .word 0x000001A3
+_02212380: .word MOD08_02211EC4
+
+ thumb_func_start MOD08_02212384
+MOD08_02212384: ; 0x02212384
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD08_022123CC
+ cmp r0, #0
+ bne _02212394
+ mov r0, #0
+ pop {r4, pc}
+_02212394:
+ add r0, r4, #0
+ add r4, #0xbc
+ ldr r1, [r4]
+ blx r1
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022123A0
+MOD08_022123A0: ; 0x022123A0
+ ldr r0, [r0, #0x10]
+ cmp r0, #1
+ bne _022123AA
+ mov r0, #1
+ bx lr
+_022123AA:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022123B0
+MOD08_022123B0: ; 0x022123B0
+ push {r3, lr}
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _022123C2
+ bne _022123BE
+ bl ErrorHandling
+_022123BE:
+ mov r0, #0
+ pop {r3, pc}
+_022123C2:
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022123CC
+MOD08_022123CC: ; 0x022123CC
+ cmp r0, #0
+ bne _022123D4
+ mov r0, #0
+ bx lr
+_022123D4:
+ ldr r0, [r0, #0xc]
+ cmp r0, #1
+ bne _022123DE
+ mov r0, #1
+ bx lr
+_022123DE:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022123E4
+MOD08_022123E4: ; 0x022123E4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ str r3, [sp]
+ mov r0, #1
+ add r1, r6, #0
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD08_02211EE8
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02212400
+MOD08_02212400: ; 0x02212400
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _02212418 ; =0x0000044C
+ add r4, r1, #0
+ add r3, r2, #0
+ str r0, [sp]
+ mov r0, #1
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD08_02211EE8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02212418: .word 0x0000044C
+
+ thumb_func_start MOD08_0221241C
+MOD08_0221241C: ; 0x0221241C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ str r3, [sp]
+ mov r0, #2
+ add r1, r6, #0
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD08_02211EE8
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02212438
+MOD08_02212438: ; 0x02212438
+ add r3, r0, #0
+ add r2, r1, #0
+ add r1, r3, #0
+ ldr r3, _02212444 ; =MOD08_02211F24
+ mov r0, #1
+ bx r3
+ .align 2, 0
+_02212444: .word MOD08_02211F24
+
+ thumb_func_start MOD08_02212448
+MOD08_02212448: ; 0x02212448
+ add r3, r0, #0
+ add r2, r1, #0
+ add r1, r3, #0
+ ldr r3, _02212454 ; =MOD08_02211F24
+ mov r0, #2
+ bx r3
+ .align 2, 0
+_02212454: .word MOD08_02211F24
+
+ thumb_func_start MOD08_02212458
+MOD08_02212458: ; 0x02212458
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldrh r0, [r0, #0x14]
+ bx lr
+
+ thumb_func_start MOD08_02212460
+MOD08_02212460: ; 0x02212460
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldrh r0, [r0, #0x16]
+ bx lr
+
+ thumb_func_start MOD08_02212468
+MOD08_02212468: ; 0x02212468
+ add r0, #0xc0
+ ldr r1, [r0]
+ ldr r0, [r1, #0x18]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x1c]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02212478
+MOD08_02212478: ; 0x02212478
+ add r0, #0xc0
+ ldr r2, [r0]
+ lsl r0, r1, #2
+ add r0, r2, r0
+ ldr r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start MOD08_02212484
+MOD08_02212484: ; 0x02212484
+ add r0, #0xc0
+ ldr r2, [r0]
+ lsl r0, r1, #2
+ add r0, r2, r0
+ ldr r0, [r0, #0x5c]
+ bx lr
+
+ thumb_func_start MOD08_02212490
+MOD08_02212490: ; 0x02212490
+ add r0, #0xc4
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02212498
+MOD08_02212498: ; 0x02212498
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0xa
+ blt _022124A6
+ bl ErrorHandling
+_022124A6:
+ lsl r0, r5, #2
+ add r0, r4, r0
+ add r0, #0x94
+ ldr r0, [r0]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_022124B0
+MOD08_022124B0: ; 0x022124B0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #0xa
+ blt _022124BE
+ bl ErrorHandling
+_022124BE:
+ cmp r5, #0
+ bne _022124C6
+ bl ErrorHandling
+_022124C6:
+ add r5, #0xdc
+ lsl r4, r4, #2
+ ldr r0, [r5, r4]
+ cmp r0, #0
+ bne _022124D4
+ bl ErrorHandling
+_022124D4:
+ ldr r0, [r5, r4]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_022124D8
+MOD08_022124D8: ; 0x022124D8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #5
+ blt _022124E6
+ bl ErrorHandling
+_022124E6:
+ cmp r5, #0
+ bne _022124EE
+ bl ErrorHandling
+_022124EE:
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ add r5, r5, r0
+ lsl r4, r4, #2
+ ldr r0, [r5, r4]
+ cmp r0, #0
+ bne _02212500
+ bl ErrorHandling
+_02212500:
+ ldr r0, [r5, r4]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02212504
+MOD08_02212504: ; 0x02212504
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221250E
+ bl ErrorHandling
+_0221250E:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212518
+MOD08_02212518: ; 0x02212518
+ add r0, #0xcc
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02212520
+MOD08_02212520: ; 0x02212520
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xac
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_0221252C
+MOD08_0221252C: ; 0x0221252C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _02212544
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02212544:
+ mov r1, #0
+ mov r2, #0x3c
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ add r0, #0x90
+ ldrh r0, [r0]
+ add r5, #0x90
+ add r0, r0, #1
+ strh r0, [r5]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_0221255C
+MOD08_0221255C: ; 0x0221255C
+ ldr r3, _02212568 ; =0x0200CA45
+ str r0, [r1, #0x38]
+ ldr r0, _0221256C ; =MOD08_02212574
+ ldr r2, _02212570 ; =0x0000044C
+ bx r3
+ nop
+_02212568: .word 0x0200CA45
+_0221256C: .word MOD08_02212574
+_02212570: .word 0x0000044C
+
+ thumb_func_start MOD08_02212574
+MOD08_02212574: ; 0x02212574
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022125B0 ; =0x0222AAC4
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ bne _022125AE
+ ldr r0, [r4, #0x38]
+ add r1, r0, #0
+ add r1, #0x90
+ ldrh r1, [r1]
+ cmp r1, #0
+ beq _022125A2
+ add r1, r0, #0
+ add r1, #0x90
+ ldrh r1, [r1]
+ add r0, #0x90
+ sub r1, r1, #1
+ strh r1, [r0]
+_022125A2:
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_022125AE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022125B0: .word 0x0222AAC4
+
+ thumb_func_start MOD08_022125B4
+MOD08_022125B4: ; 0x022125B4
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD08_022125B8
+MOD08_022125B8: ; 0x022125B8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrb r1, [r5, #4]
+ add r0, r1, #1
+ strb r0, [r5, #4]
+ ldrb r0, [r5, #3]
+ cmp r1, r0
+ bhs _022125CC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022125CC:
+ mov r0, #0
+ strb r0, [r5, #4]
+ ldr r2, [r5, #0x14]
+ ldr r1, [r5, #0x10]
+ mov r4, #1
+ add r1, r2, r1
+ str r1, [r5, #0x14]
+ ldr r1, [r5, #0x10]
+ cmp r1, #0
+ bne _022125E4
+ add r4, r0, #0
+ b _022125FC
+_022125E4:
+ ldr r2, [r5, #0xc]
+ ldr r1, [r5, #8]
+ cmp r1, r2
+ ldr r1, [r5, #0x14]
+ bge _022125F6
+ cmp r1, r2
+ blt _022125FC
+ add r4, r0, #0
+ b _022125FC
+_022125F6:
+ cmp r1, r2
+ bgt _022125FC
+ add r4, r0, #0
+_022125FC:
+ ldr r0, [r5, #0x14]
+ bl FUN_0200554C
+ ldrh r0, [r5, #0x1a]
+ bl FUN_02005508
+ cmp r0, #0
+ bne _0221260E
+ mov r4, #0
+_0221260E:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212614
+MOD08_02212614: ; 0x02212614
+ ldr r3, _02212618 ; =MOD08_022125B8
+ bx r3
+ .align 2, 0
+_02212618: .word MOD08_022125B8
+
+ thumb_func_start MOD08_0221261C
+MOD08_0221261C: ; 0x0221261C
+ ldr r3, _02212620 ; =MOD08_022125B8
+ bx r3
+ .align 2, 0
+_02212620: .word MOD08_022125B8
+
+ thumb_func_start MOD08_02212624
+MOD08_02212624: ; 0x02212624
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrb r1, [r5, #4]
+ add r0, r1, #1
+ strb r0, [r5, #4]
+ ldrb r0, [r5, #3]
+ cmp r1, r0
+ bhs _02212638
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02212638:
+ mov r0, #0
+ strb r0, [r5, #4]
+ ldrb r0, [r5, #0x18]
+ mov r4, #1
+ sub r0, r0, #1
+ strb r0, [r5, #0x18]
+ ldrh r0, [r5, #0x1a]
+ bl FUN_020054C8
+ ldrh r0, [r5, #0x1a]
+ ldr r1, _02212660 ; =0x0000FFFF
+ ldr r2, [r5, #0x14]
+ bl FUN_02005530
+ ldrb r0, [r5, #0x18]
+ cmp r0, #0
+ bne _0221265C
+ mov r4, #0
+_0221265C:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02212660: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02212664
+MOD08_02212664: ; 0x02212664
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r2, [r4, #3]
+ mov r0, #1
+ sub r1, r2, #1
+ strb r1, [r4, #3]
+ cmp r2, #0
+ bne _02212686
+ ldrh r0, [r4, #0x1a]
+ bl FUN_020054C8
+ ldrh r0, [r4, #0x1a]
+ ldr r1, _02212688 ; =0x0000FFFF
+ ldr r2, [r4, #0x14]
+ bl FUN_02005530
+ mov r0, #0
+_02212686:
+ pop {r4, pc}
+ .align 2, 0
+_02212688: .word 0x0000FFFF
+
+ thumb_func_start MOD08_0221268C
+MOD08_0221268C: ; 0x0221268C
+ push {r3, lr}
+ ldr r0, _022126A0 ; =0x04000050
+ mov r3, #8
+ mov r1, #0
+ mov r2, #0x3f
+ str r3, [sp]
+ bl G2x_SetBlendAlpha_
+ pop {r3, pc}
+ nop
+_022126A0: .word 0x04000050
+
+ thumb_func_start MOD08_022126A4
+MOD08_022126A4: ; 0x022126A4
+ push {r3, r4}
+ add r2, r0, #0
+ mov r1, #1
+ add r2, #0x8d
+ strb r1, [r2]
+ ldr r3, _022126D8 ; =0x021C48B8
+ lsl r2, r1, #9
+ ldr r4, [r3, #0x44]
+ tst r2, r4
+ beq _022126D4
+ add r2, r1, #0
+ add r2, #0xff
+ tst r2, r4
+ beq _022126D4
+ ldr r2, [r3, #0x48]
+ lsl r1, r1, #0xa
+ tst r1, r2
+ beq _022126D4
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ mov r1, #0
+ add r0, #0x8d
+ strb r1, [r0]
+_022126D4:
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_022126D8: .word 0x021C48B8
+
+ thumb_func_start MOD08_022126DC
+MOD08_022126DC: ; 0x022126DC
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r0, #0
+ add r1, #0x8d
+ strb r2, [r1]
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r1, _022126F8 ; =MOD08_02211EA0
+ add r0, #0xbc
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_022126F8: .word MOD08_02211EA0
+
+ thumb_func_start MOD08_022126FC
+MOD08_022126FC: ; 0x022126FC
+ add r1, r0, #0
+ add r1, #0x8e
+ ldrh r1, [r1]
+ cmp r1, #0
+ bne _02212714
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ mov r1, #0
+ add r0, #0x8d
+ strb r1, [r0]
+ bx lr
+_02212714:
+ mov r1, #1
+ add r0, #0x8d
+ strb r1, [r0]
+ bx lr
+
+ thumb_func_start MOD08_0221271C
+MOD08_0221271C: ; 0x0221271C
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r3, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ cmp r3, #0xa
+ bhs _0221273A
+ lsl r1, r3, #2
+ add r0, r0, r1
+ add r0, #0x94
+ str r2, [r0]
+_0221273A:
+ bx lr
+
+ thumb_func_start MOD08_0221273C
+MOD08_0221273C: ; 0x0221273C
+ ldr r1, [r0, #0x18]
+ mov r3, #0
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ add r2, r3, #0
+_02212746:
+ add r1, r0, #0
+ add r1, #0x94
+ add r3, r3, #1
+ add r0, r0, #4
+ str r2, [r1]
+ cmp r3, #0xa
+ blt _02212746
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02212758
+MOD08_02212758: ; 0x02212758
+ cmp r1, #5
+ bhi _022127A4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02212768: ; jump table
+ .short _02212774 - _02212768 - 2 ; case 0
+ .short _0221277C - _02212768 - 2 ; case 1
+ .short _02212784 - _02212768 - 2 ; case 2
+ .short _0221278C - _02212768 - 2 ; case 3
+ .short _02212794 - _02212768 - 2 ; case 4
+ .short _0221279C - _02212768 - 2 ; case 5
+_02212774:
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bx lr
+_0221277C:
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldrh r0, [r0, #8]
+ bx lr
+_02212784:
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldrh r0, [r0, #0xa]
+ bx lr
+_0221278C:
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bx lr
+_02212794:
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldrh r0, [r0, #0x10]
+ bx lr
+_0221279C:
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldrh r0, [r0, #0x12]
+ bx lr
+_022127A4:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD08_022127A8
+MOD08_022127A8: ; 0x022127A8
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r3, r0, #0
+ add r0, r1, #0
+ str r2, [sp]
+ add r6, r4, #0
+ add r5, r0, #0
+ mov ip, r4
+ add r7, r0, #0
+_022127BA:
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r1, r1, r6
+ add r1, #0xb0
+ ldr r1, [r1]
+ str r1, [r5, #8]
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r1, r1, r6
+ add r1, #0xc4
+ ldr r1, [r1]
+ str r1, [r5, #0x18]
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r2, [r1]
+ mov r1, ip
+ add r1, r2, r1
+ add r1, #0xd8
+ ldrh r1, [r1]
+ add r2, r0, r4
+ add r2, #0x30
+ strh r1, [r7, #0x28]
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r7, r7, #2
+ add r1, r1, r4
+ add r1, #0xe0
+ ldrb r1, [r1]
+ strb r1, [r2]
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r2, r0, r4
+ add r1, r1, r4
+ add r1, #0xe4
+ ldrb r1, [r1]
+ add r2, #0x34
+ strb r1, [r2]
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r2, r0, r4
+ add r1, r1, r4
+ add r1, #0xe8
+ ldrb r1, [r1]
+ add r2, #0x38
+ strb r1, [r2]
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r2, r0, r4
+ add r1, r1, r6
+ add r1, #0xec
+ ldr r1, [r1]
+ add r2, #0x4c
+ str r1, [r5, #0x3c]
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r6, r6, #4
+ add r1, r1, r4
+ add r1, #0xc0
+ ldrb r1, [r1]
+ add r4, r4, #1
+ add r5, r5, #4
+ strb r1, [r2]
+ mov r1, ip
+ add r1, r1, #2
+ mov ip, r1
+ cmp r4, #4
+ blt _022127BA
+ ldr r1, [sp]
+ cmp r1, #3
+ bhi _022128B8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02212860: ; jump table
+ .short _02212868 - _02212860 - 2 ; case 0
+ .short _0221287C - _02212860 - 2 ; case 1
+ .short _02212890 - _02212860 - 2 ; case 2
+ .short _022128A4 - _02212860 - 2 ; case 3
+_02212868:
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r3, #0xc0
+ ldrh r1, [r1, #0x14]
+ str r1, [r0]
+ ldr r1, [r3]
+ ldrh r1, [r1, #0x16]
+ str r1, [r0, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_0221287C:
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r3, #0xc0
+ ldrh r1, [r1, #0x14]
+ str r1, [r0]
+ ldr r1, [r3]
+ ldrh r1, [r1, #0x14]
+ str r1, [r0, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02212890:
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r3, #0xc0
+ ldrh r1, [r1, #0x14]
+ str r1, [r0]
+ ldr r1, [r3]
+ ldrh r1, [r1, #0x14]
+ str r1, [r0, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_022128A4:
+ add r1, r3, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r3, #0xc0
+ ldrh r1, [r1, #0x14]
+ str r1, [r0]
+ ldr r1, [r3]
+ ldrh r1, [r1, #0x14]
+ str r1, [r0, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_022128B8:
+ bl ErrorHandling
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022128C0
+MOD08_022128C0: ; 0x022128C0
+ push {r3, r4, r5, lr}
+ sub sp, #0x50
+ add r5, r0, #0
+ ldr r1, [r5, #0x18]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ ldr r4, [r1]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ add r1, sp, #0
+ add r2, r4, #0
+ bl MOD08_022127A8
+ cmp r4, #2
+ add r0, sp, #0
+ bne _022128EA
+ ldr r1, [r5]
+ bl MOD08_0222A568
+ add sp, #0x50
+ pop {r3, r4, r5, pc}
+_022128EA:
+ cmp r4, #3
+ bne _022128F8
+ ldr r1, [r5]
+ bl MOD08_0222A2A4
+ add sp, #0x50
+ pop {r3, r4, r5, pc}
+_022128F8:
+ ldr r1, [r5]
+ bl MOD08_0222A294
+ add sp, #0x50
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212904
+MOD08_02212904: ; 0x02212904
+ push {r4, lr}
+ sub sp, #0x50
+ add r4, r0, #0
+ ldr r1, [r4, #0x18]
+ add r1, r1, #4
+ str r1, [r4, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r4, #0x18]
+ add r1, sp, #0
+ bl MOD08_022127A8
+ ldr r1, [r4]
+ add r0, sp, #0
+ bl MOD08_0222A494
+ add sp, #0x50
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02212928
+MOD08_02212928: ; 0x02212928
+ ldr r1, [r0, #0x18]
+ mov r2, #0
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ add r3, r0, #0
+_02212932:
+ ldr r1, [r3, #0x30]
+ cmp r1, #1
+ beq _0221295E
+ mov r1, #0xc
+ mul r1, r2
+ mov r2, #1
+ add r1, r0, r1
+ str r2, [r1, #0x30]
+ add r2, r1, #0
+ mov r3, #0
+ add r2, #0x2c
+ strb r3, [r2]
+ ldr r2, [r0, #0x18]
+ ldr r3, [r2]
+ add r2, r1, #0
+ add r2, #0x2d
+ strb r3, [r2]
+ ldr r2, [r0, #0x18]
+ add r2, r2, #4
+ str r2, [r0, #0x18]
+ str r2, [r1, #0x28]
+ bx lr
+_0221295E:
+ add r2, r2, #1
+ add r3, #0xc
+ cmp r2, #3
+ blt _02212932
+ bx lr
+
+ thumb_func_start MOD08_02212968
+MOD08_02212968: ; 0x02212968
+ push {r3, r4}
+ ldr r1, [r0, #0x18]
+ add r3, r0, #0
+ add r1, r1, #4
+ add r3, #0x18
+ str r1, [r0, #0x18]
+ mov r2, #2
+_02212976:
+ ldr r1, [r3, #0x30]
+ cmp r1, #0
+ beq _022129AA
+ add r4, r2, #0
+ mov r1, #0xc
+ add r2, r0, #0
+ mul r4, r1
+ add r2, #0x2c
+ ldrb r1, [r2, r4]
+ add r1, r1, #1
+ strb r1, [r2, r4]
+ ldrb r3, [r2, r4]
+ add r2, r0, r4
+ add r1, r2, #0
+ add r1, #0x2d
+ ldrb r1, [r1]
+ cmp r3, r1
+ bne _022129A2
+ mov r0, #0
+ str r0, [r2, #0x30]
+ pop {r3, r4}
+ bx lr
+_022129A2:
+ ldr r1, [r2, #0x28]
+ str r1, [r0, #0x18]
+ pop {r3, r4}
+ bx lr
+_022129AA:
+ sub r3, #0xc
+ sub r2, r2, #1
+ bpl _02212976
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD08_022129B4
+MOD08_022129B4: ; 0x022129B4
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r1, _02212BB0 ; =0x0000017E
+ add r5, r0, #0
+ ldrb r0, [r5, r1]
+ mov r6, #0
+ cmp r0, #1
+ bhs _022129D2
+ add r0, r5, #0
+ mov r2, #1
+ add r0, #0x8d
+ strb r2, [r0]
+ ldrb r0, [r5, r1]
+ add r0, r0, #1
+ strb r0, [r5, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+_022129D2:
+ add r7, r6, #0
+ add r4, r6, #0
+_022129D6:
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ beq _022129EA
+ bl FUN_020133C8
+ add r6, r6, r0
+_022129EA:
+ add r7, r7, #1
+ add r4, r4, #4
+ cmp r7, #0x10
+ blt _022129D6
+ cmp r6, #0
+ bne _02212A0A
+ add r0, r5, #0
+ add r0, #0x8e
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _02212A0A
+ add r0, r5, #0
+ add r0, #0x90
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02212A1A
+_02212A0A:
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x8d
+ strb r1, [r0]
+ ldr r0, _02212BB4 ; =0x0000017D
+ mov r1, #0
+ strb r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_02212A1A:
+ bl FUN_02005514
+ cmp r0, #0
+ beq _02212A44
+ ldr r0, _02212BB4 ; =0x0000017D
+ ldrb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, r0]
+ ldrb r1, [r5, r0]
+ cmp r1, #0x5a
+ bls _02212A3C
+ mov r1, #0
+ strb r1, [r5, r0]
+ add r0, r5, #0
+ add r0, #0x8d
+ strb r1, [r0]
+ b _02212A44
+_02212A3C:
+ mov r0, #1
+ add r5, #0x8d
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_02212A44:
+ ldr r0, _02212BB4 ; =0x0000017D
+ mov r1, #0
+ strb r1, [r5, r0]
+ add r0, r0, #1
+ strb r1, [r5, r0]
+ add r0, r5, #0
+ add r2, r1, #0
+_02212A52:
+ add r1, r1, #1
+ str r2, [r0, #0x1c]
+ add r0, r0, #4
+ cmp r1, #3
+ blt _02212A52
+ add r1, r5, #0
+ mov r4, #0
+_02212A60:
+ add r0, r1, #0
+ str r4, [r1, #0x28]
+ add r0, #0x2c
+ strb r4, [r0]
+ add r0, r1, #0
+ add r0, #0x2d
+ strb r4, [r0]
+ str r4, [r1, #0x30]
+ add r2, r2, #1
+ add r1, #0xc
+ cmp r2, #3
+ blt _02212A60
+ add r7, r5, #0
+ mov r6, #0
+_02212A7C:
+ add r0, r7, #0
+ add r0, #0xcc
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02212A94
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_0200C398
+_02212A94:
+ add r0, r7, #0
+ add r0, #0xcc
+ add r4, r4, #1
+ add r7, r7, #4
+ str r6, [r0]
+ cmp r4, #4
+ blt _02212A7C
+_02212AA2:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02213454
+ add r6, r6, #1
+ cmp r6, #5
+ blt _02212AA2
+ mov r6, #0
+ add r4, r6, #0
+ add r7, r6, #0
+_02212AB6:
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ beq _02212AD2
+ bl MOD08_02215B40
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, r0, r4
+ str r7, [r0, #0x1c]
+_02212AD2:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #0x10
+ blt _02212AB6
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ beq _02212AE8
+ mov r1, #0
+ str r1, [r5, r0]
+_02212AE8:
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #0
+ bne _02212B3C
+ bl FUN_02231678
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02215588
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ add r3, r0, #0
+ lsl r0, r4, #0x18
+ mov r1, #1
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0xe
+ mov r2, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ bl MOD08_02212490
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02215588
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ b _02212B40
+_02212B3C:
+ bl FUN_02233560
+_02212B40:
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ ldrb r1, [r5, r1]
+ mov r0, #0
+ bl FUN_020178BC
+ ldr r1, _02212BB8 ; =0x000001A1
+ mov r0, #1
+ ldrb r1, [r5, r1]
+ bl FUN_020178BC
+ ldr r1, _02212BBC ; =0x000001A2
+ mov r0, #2
+ ldrb r1, [r5, r1]
+ bl FUN_020178BC
+ ldr r1, _02212BC0 ; =0x000001A3
+ mov r0, #3
+ ldrb r1, [r5, r1]
+ bl FUN_020178BC
+ add r0, r5, #0
+ add r0, #0xc4
+ mov r2, #0
+ ldr r0, [r0]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #2
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r5, #0
+ add r0, #0xc4
+ mov r2, #0
+ ldr r0, [r0]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r5, #0
+ add r0, #0xc4
+ mov r1, #3
+ ldr r0, [r0]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ mov r0, #0
+ str r0, [r5, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02212BB0: .word 0x0000017E
+_02212BB4: .word 0x0000017D
+_02212BB8: .word 0x000001A1
+_02212BBC: .word 0x000001A2
+_02212BC0: .word 0x000001A3
+
+ thumb_func_start MOD08_02212BC4
+MOD08_02212BC4: ; 0x02212BC4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r4, [r0]
+ add r1, r0, #4
+ str r1, [r5, #0x18]
+ ldr r0, [r1]
+ str r0, [sp]
+ add r0, r1, #4
+ str r0, [r5, #0x18]
+ ldr r7, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ str r4, [r0, #0x18]
+ add r0, r5, r4
+ add r0, #0x7c
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02212C22
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ add r1, sp, #4
+ bl FUN_020133EC
+ mov r0, #0
+ ldr r1, [sp, #8]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r1, sp, #4
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ bl FUN_020133FC
+_02212C22:
+ add r0, r5, #0
+ add r0, #0xc0
+ add r1, r5, r4
+ add r1, #0x6c
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldrb r1, [r1]
+ ldr r0, [r0, #0x1c]
+ bl FUN_02013440
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, [sp]
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ add r2, r7, #0
+ add r3, r5, #0
+ bl MOD08_02215B2C
+ add r5, #0xc0
+ ldr r1, [r5]
+ str r0, [r1, #0x5c]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212C58
+MOD08_02212C58: ; 0x02212C58
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r4, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r7, [r0]
+ add r1, r0, #4
+ str r1, [r5, #0x18]
+ ldr r0, [r1]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ str r0, [sp, #4]
+ ldr r0, [r1]
+ str r0, [sp]
+ add r0, r1, #4
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ str r4, [r0, #0x18]
+ add r0, r5, r4
+ add r0, #0x7c
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02212CBE
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ add r1, sp, #8
+ bl FUN_020133EC
+ mov r0, #0
+ ldr r1, [sp, #0xc]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r1, sp, #8
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ bl FUN_020133FC
+_02212CBE:
+ add r0, r5, #0
+ add r0, #0xc0
+ add r1, r5, r4
+ add r1, #0x6c
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldrb r1, [r1]
+ ldr r0, [r0, #0x1c]
+ bl FUN_02013440
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, [sp, #4]
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ ldr r2, [sp]
+ add r3, r5, #0
+ bl MOD08_02215B2C
+ add r5, #0xc0
+ ldr r2, [r5]
+ lsl r1, r7, #2
+ add r1, r2, r1
+ str r0, [r1, #0x5c]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212CF8
+MOD08_02212CF8: ; 0x02212CF8
+ push {r4, r5, r6, lr}
+ sub sp, #0x90
+ ldr r5, _02212D4C ; =0x0222AB4C
+ add r4, r0, #0
+ add r3, sp, #0
+ mov r2, #0x12
+_02212D04:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02212D04
+ add r0, r4, #0
+ bl MOD08_02212458
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212460
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD08_02227468
+ mov r1, #0x18
+ add r3, r5, #0
+ mul r3, r1
+ add r2, sp, #0
+ lsl r1, r0, #2
+ add r0, r2, r3
+ ldr r4, [r1, r0]
+ cmp r4, #0xff
+ bne _02212D44
+ bl ErrorHandling
+_02212D44:
+ sub r0, r4, #1
+ add sp, #0x90
+ pop {r4, r5, r6, pc}
+ nop
+_02212D4C: .word 0x0222AB4C
+
+ thumb_func_start MOD08_02212D50
+MOD08_02212D50: ; 0x02212D50
+ push {r4, r5, r6, lr}
+ sub sp, #0x90
+ ldr r5, _02212DA4 ; =0x0222ABDC
+ add r4, r0, #0
+ add r3, sp, #0
+ mov r2, #0x12
+_02212D5C:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02212D5C
+ add r0, r4, #0
+ bl MOD08_02212458
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212460
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD08_02227468
+ mov r1, #0x18
+ add r3, r5, #0
+ mul r3, r1
+ add r2, sp, #0
+ lsl r1, r0, #2
+ add r0, r2, r3
+ ldr r4, [r1, r0]
+ cmp r4, #0xff
+ bne _02212D9C
+ bl ErrorHandling
+_02212D9C:
+ add r0, r4, #0
+ add sp, #0x90
+ pop {r4, r5, r6, pc}
+ nop
+_02212DA4: .word 0x0222ABDC
+
+ thumb_func_start MOD08_02212DA8
+MOD08_02212DA8: ; 0x02212DA8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ ldr r1, [r5, #0x18]
+ add r0, #0x18
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ ldr r4, [r1]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ mov r1, #0
+ add r2, sp, #0x10
+_02212DC0:
+ ldr r3, [r5, #0x18]
+ add r1, r1, #1
+ ldr r3, [r3]
+ str r3, [r2]
+ ldr r3, [r0]
+ add r2, r2, #4
+ add r3, r3, #4
+ str r3, [r0]
+ cmp r1, #6
+ blt _02212DC0
+ ldr r1, [r5, #0x18]
+ ldr r1, [r1]
+ str r1, [sp]
+ ldr r1, [r0]
+ add r1, r1, #4
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ str r4, [r0, #0x18]
+ add r0, r5, r4
+ add r0, #0x7c
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02212E1E
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ add r1, sp, #4
+ bl FUN_020133EC
+ mov r0, #0
+ ldr r1, [sp, #8]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r1, sp, #4
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ bl FUN_020133FC
+_02212E1E:
+ add r0, r5, #0
+ bl MOD08_02212CF8
+ add r7, r0, #0
+ add r0, r5, #0
+ add r0, #0xc0
+ add r1, r5, r4
+ add r1, #0x6c
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldrb r1, [r1]
+ ldr r0, [r0, #0x1c]
+ bl FUN_02013440
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r2, r7, #2
+ add r0, r0, r6
+ add r1, sp, #0x10
+ ldr r1, [r1, r2]
+ ldr r0, [r0, #0x1c]
+ ldr r2, [sp]
+ add r3, r5, #0
+ bl MOD08_02215B2C
+ add r5, #0xc0
+ ldr r1, [r5]
+ str r0, [r1, #0x5c]
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212E60
+MOD08_02212E60: ; 0x02212E60
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ ldr r1, [r5, #0x18]
+ add r0, #0x18
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ ldr r4, [r1]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ mov r1, #0
+ add r2, sp, #0x10
+_02212E78:
+ ldr r3, [r5, #0x18]
+ add r1, r1, #1
+ ldr r3, [r3]
+ str r3, [r2]
+ ldr r3, [r0]
+ add r2, r2, #4
+ add r3, r3, #4
+ str r3, [r0]
+ cmp r1, #4
+ blt _02212E78
+ ldr r1, [r5, #0x18]
+ ldr r1, [r1]
+ str r1, [sp]
+ ldr r1, [r0]
+ add r1, r1, #4
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ str r4, [r0, #0x18]
+ add r0, r5, r4
+ add r0, #0x7c
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02212ED6
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ add r1, sp, #4
+ bl FUN_020133EC
+ mov r0, #0
+ ldr r1, [sp, #8]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r1, sp, #4
+ add r0, r0, r6
+ ldr r0, [r0, #0x1c]
+ bl FUN_020133FC
+_02212ED6:
+ add r0, r5, #0
+ bl MOD08_02212D50
+ add r7, r0, #0
+ add r0, r5, #0
+ add r0, #0xc0
+ add r1, r5, r4
+ add r1, #0x6c
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldrb r1, [r1]
+ ldr r0, [r0, #0x1c]
+ bl FUN_02013440
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r2, r7, #2
+ add r0, r0, r6
+ add r1, sp, #0x10
+ ldr r1, [r1, r2]
+ ldr r0, [r0, #0x1c]
+ ldr r2, [sp]
+ add r3, r5, #0
+ bl MOD08_02215B2C
+ add r5, #0xc0
+ ldr r1, [r5]
+ str r0, [r1, #0x5c]
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02212F18
+MOD08_02212F18: ; 0x02212F18
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #0
+ add r5, r0, #0
+ add r7, r6, #0
+ add r4, r6, #0
+_02212F22:
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ beq _02212F36
+ bl FUN_020133C8
+ add r6, r6, r0
+_02212F36:
+ add r7, r7, #1
+ add r4, r4, #4
+ cmp r7, #0x10
+ blt _02212F22
+ cmp r6, #0
+ bne _02212F50
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ mov r0, #0
+ add r5, #0x8d
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_02212F50:
+ mov r0, #1
+ add r5, #0x8d
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02212F58
+MOD08_02212F58: ; 0x02212F58
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r4, r1, #2
+ add r0, r0, r4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ beq _02212F7C
+ bl ErrorHandling
+_02212F7C:
+ ldr r0, [r5, #0x18]
+ mov r2, #0
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r5]
+ bl MOD08_02215AA4
+ add r1, r5, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r1, r1, r4
+ str r0, [r1, #0x1c]
+ add r0, r5, #0
+ mov r1, #2
+ add r0, #0x8d
+ strb r1, [r0]
+ ldr r0, _02212FA8 ; =MOD08_02211EA0
+ add r5, #0xbc
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+ nop
+_02212FA8: .word MOD08_02211EA0
+
+ thumb_func_start MOD08_02212FAC
+MOD08_02212FAC: ; 0x02212FAC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r4, r1, #2
+ add r0, r0, r4
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ beq _02212FD2
+ bl ErrorHandling
+_02212FD2:
+ ldr r0, [r5, #0x18]
+ mov r1, #0x64
+ ldr r2, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r5]
+ mov r3, #0
+ bl MOD08_02215ACC
+ add r1, r5, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r1, r1, r4
+ str r0, [r1, #0x1c]
+ add r0, r5, #0
+ mov r1, #2
+ add r0, #0x8d
+ strb r1, [r0]
+ ldr r0, _02213000 ; =MOD08_02211EA0
+ add r5, #0xbc
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+ nop
+_02213000: .word MOD08_02211EA0
+
+ thumb_func_start MOD08_02213004
+MOD08_02213004: ; 0x02213004
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r4, r1, #2
+ add r0, r0, r4
+ ldr r0, [r0, #0x1c]
+ bl MOD08_02215B40
+ add r5, #0xc0
+ ldr r0, [r5]
+ mov r1, #0
+ add r0, r0, r4
+ str r1, [r0, #0x1c]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02213030
+MOD08_02213030: ; 0x02213030
+ ldr r1, [r0, #0x18]
+ mov r3, #0
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ add r2, r0, #0
+_0221303A:
+ ldr r1, [r2, #0x1c]
+ cmp r1, #0
+ bne _02213056
+ ldr r1, [r0, #0x18]
+ add r2, r1, #4
+ lsl r1, r3, #2
+ add r1, r0, r1
+ str r2, [r1, #0x1c]
+ ldr r2, [r0, #0x18]
+ ldr r1, [r2]
+ lsl r1, r1, #2
+ add r1, r2, r1
+ str r1, [r0, #0x18]
+ bx lr
+_02213056:
+ add r3, r3, #1
+ add r2, r2, #4
+ cmp r3, #3
+ blt _0221303A
+ bx lr
+
+ thumb_func_start MOD08_02213060
+MOD08_02213060: ; 0x02213060
+ ldr r1, [r0, #0x18]
+ add r3, r0, #0
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ mov r2, #2
+ add r3, #8
+_0221306C:
+ ldr r1, [r3, #0x1c]
+ cmp r1, #0
+ beq _02213082
+ add r3, r0, #0
+ add r3, #0x1c
+ lsl r2, r2, #2
+ ldr r1, [r3, r2]
+ str r1, [r0, #0x18]
+ mov r0, #0
+ str r0, [r3, r2]
+ bx lr
+_02213082:
+ sub r3, r3, #4
+ sub r2, r2, #1
+ bpl _0221306C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_0221308C
+MOD08_0221308C: ; 0x0221308C
+ push {r3, r4}
+ ldr r2, [r0, #0x18]
+ add r1, r0, #0
+ add r2, r2, #4
+ str r2, [r0, #0x18]
+ ldr r4, [r2]
+ add r2, r2, #4
+ str r2, [r0, #0x18]
+ ldr r3, [r2]
+ add r2, r2, #4
+ str r2, [r0, #0x18]
+ lsl r2, r4, #2
+ add r2, r0, r2
+ add r2, #0x94
+ ldr r2, [r2]
+ add r1, #0x18
+ cmp r3, r2
+ bne _022130BA
+ ldr r1, [r0, #0x18]
+ ldr r1, [r1]
+ str r1, [r0, #0x18]
+ pop {r3, r4}
+ bx lr
+_022130BA:
+ ldr r0, [r1]
+ add r0, r0, #4
+ str r0, [r1]
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD08_022130C4
+MOD08_022130C4: ; 0x022130C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl MOD08_02215350
+ cmp r0, #0
+ ldr r0, [r4, #0x18]
+ beq _022130E4
+ ldr r0, [r0]
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+_022130E4:
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022130EC
+MOD08_022130EC: ; 0x022130EC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ add r1, r0, #4
+ str r1, [r4, #0x18]
+ ldr r0, [r1]
+ add r1, r1, #4
+ str r1, [r4, #0x18]
+ bl MOD08_02218C48
+ add r7, r0, #0
+ ldr r0, [r4, #0x18]
+ add r2, r4, #0
+ ldr r5, [r0]
+ add r0, r0, #4
+ add r2, #0x18
+ mov r3, #0
+ str r0, [r4, #0x18]
+ cmp r5, #0
+ bls _0221312E
+ add r6, r4, #0
+_02213116:
+ ldr r0, [r4, #0x18]
+ add r3, r3, #1
+ ldr r1, [r0]
+ add r0, r6, #0
+ add r0, #0x94
+ str r1, [r0]
+ ldr r0, [r2]
+ add r6, r6, #4
+ add r0, r0, #4
+ str r0, [r2]
+ cmp r3, r5
+ blo _02213116
+_0221312E:
+ cmp r3, #0xa
+ bge _02213146
+ lsl r0, r3, #2
+ add r2, r4, r0
+ mov r1, #0
+_02213138:
+ add r0, r2, #0
+ add r0, #0x94
+ add r3, r3, #1
+ add r2, r2, #4
+ str r1, [r0]
+ cmp r3, #0xa
+ blt _02213138
+_02213146:
+ add r0, r4, #0
+ blx r7
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0221314C
+MOD08_0221314C: ; 0x0221314C
+ ldr r2, [r0, #0x18]
+ add r1, r0, #0
+ add r2, r2, #4
+ str r2, [r0, #0x18]
+ add r2, r0, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r1, #0x18
+ ldrh r3, [r2, #0x10]
+ mov r2, #1
+ tst r2, r3
+ beq _0221316A
+ ldr r2, [r1]
+ add r2, r2, #4
+ str r2, [r1]
+_0221316A:
+ ldr r2, [r0, #0x18]
+ ldr r1, [r2]
+ lsl r1, r1, #2
+ add r1, r2, r1
+ str r1, [r0, #0x18]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02213178
+MOD08_02213178: ; 0x02213178
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x18]
+ add r1, r1, #4
+ str r1, [r4, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r4, #0x18]
+ cmp r2, #0
+ bne _0221319A
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ ldrh r1, [r1, #0x14]
+ bl MOD08_02227470
+ b _022131A6
+_0221319A:
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ ldrh r1, [r1, #0x16]
+ bl MOD08_02227470
+_022131A6:
+ cmp r0, #4
+ bne _022131B0
+ ldr r0, [r4, #0x18]
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+_022131B0:
+ ldr r1, [r4, #0x18]
+ ldr r0, [r1]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022131BC
+MOD08_022131BC: ; 0x022131BC
+ push {r4, r5}
+ sub sp, #0x10
+ ldr r5, _02213214 ; =0x0222AA3C
+ add r2, sp, #0
+ add r4, r0, #0
+ add r3, r2, #0
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r1, [r4, #0x18]
+ add r0, r4, #0
+ add r1, r1, #4
+ str r1, [r4, #0x18]
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r0, #0x18
+ ldr r1, [r1, #0xc]
+ cmp r1, #0
+ beq _02213202
+ ldr r2, [r0]
+ add r2, r2, #4
+ str r2, [r0]
+ mov r2, #0
+_022131EE:
+ ldr r5, [r3]
+ tst r5, r1
+ bne _02213202
+ ldr r5, [r0]
+ add r2, r2, #1
+ add r5, r5, #4
+ add r3, r3, #4
+ str r5, [r0]
+ cmp r2, #4
+ blo _022131EE
+_02213202:
+ ldr r1, [r4, #0x18]
+ ldr r0, [r1]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ add sp, #0x10
+ pop {r4, r5}
+ bx lr
+ nop
+_02213214: .word 0x0222AA3C
+
+ thumb_func_start MOD08_02213218
+MOD08_02213218: ; 0x02213218
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x18]
+ add r1, r1, #4
+ str r1, [r4, #0x18]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02213236
+ ldr r1, [r4, #0x18]
+ ldr r0, [r1]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+_02213236:
+ ldr r0, [r4, #0x18]
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02213240
+MOD08_02213240: ; 0x02213240
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r1, [r5, #0x18]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ add r1, r5, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ ldrh r1, [r1, #0x14]
+ bl MOD08_02227470
+ add r1, r5, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r4, r0, #0
+ ldrh r1, [r1, #0x16]
+ add r0, r5, #0
+ bl MOD08_02227470
+ cmp r4, r0
+ bne _02213276
+ ldr r1, [r5, #0x18]
+ ldr r0, [r1]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [r5, #0x18]
+ pop {r3, r4, r5, pc}
+_02213276:
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02213280
+MOD08_02213280: ; 0x02213280
+ ldr r2, [r0, #0x18]
+ add r1, r0, #0
+ add r2, r2, #4
+ str r2, [r0, #0x18]
+ ldr r3, [r2]
+ add r2, r2, #4
+ str r2, [r0, #0x18]
+ add r2, r0, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r1, #0x18
+ ldrh r2, [r2, #0x10]
+ cmp r3, r2
+ bne _022132AA
+ ldr r0, [r0, #0x18]
+ ldr r2, [r1]
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r2, r0
+ str r0, [r1]
+ bx lr
+_022132AA:
+ ldr r0, [r1]
+ add r0, r0, #4
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022132B4
+MOD08_022132B4: ; 0x022132B4
+ ldr r1, [r0, #0x18]
+ add r2, r1, #4
+ str r2, [r0, #0x18]
+ ldr r1, [r2]
+ lsl r1, r1, #2
+ add r1, r2, r1
+ str r1, [r0, #0x18]
+ bx lr
+
+ thumb_func_start MOD08_022132C4
+MOD08_022132C4: ; 0x022132C4
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ cmp r1, #7
+ bhi _022133A2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022132D8: ; jump table
+ .short _022132E8 - _022132D8 - 2 ; case 0
+ .short _022132F0 - _022132D8 - 2 ; case 1
+ .short _022132F8 - _022132D8 - 2 ; case 2
+ .short _02213306 - _022132D8 - 2 ; case 3
+ .short _02213314 - _022132D8 - 2 ; case 4
+ .short _0221333A - _022132D8 - 2 ; case 5
+ .short _02213360 - _022132D8 - 2 ; case 6
+ .short _02213382 - _022132D8 - 2 ; case 7
+_022132E8:
+ add r4, #0xc0
+ ldr r0, [r4]
+ ldrh r6, [r0, #0x14]
+ b _022133A2
+_022132F0:
+ add r4, #0xc0
+ ldr r0, [r4]
+ ldrh r6, [r0, #0x16]
+ b _022133A2
+_022132F8:
+ add r4, #0xc0
+ ldr r1, [r4]
+ ldrh r1, [r1, #0x14]
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _022133A2
+_02213306:
+ add r4, #0xc0
+ ldr r1, [r4]
+ ldrh r1, [r1, #0x16]
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _022133A2
+_02213314:
+ mov r6, #0xff
+ mov r5, #0
+_02213318:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02215490
+ cmp r0, #0
+ beq _02213328
+ cmp r0, #2
+ bne _0221332C
+_02213328:
+ add r6, r5, #0
+ b _02213332
+_0221332C:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02213318
+_02213332:
+ cmp r6, #0xff
+ bne _022133A2
+ mov r6, #0
+ b _022133A2
+_0221333A:
+ mov r6, #0xff
+ mov r5, #0
+_0221333E:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02215490
+ cmp r0, #1
+ beq _0221334E
+ cmp r0, #3
+ bne _02213352
+_0221334E:
+ add r6, r5, #0
+ b _02213358
+_02213352:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _0221333E
+_02213358:
+ cmp r6, #0xff
+ bne _022133A2
+ mov r6, #0
+ b _022133A2
+_02213360:
+ mov r6, #0xff
+ mov r5, #0
+_02213364:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02215490
+ cmp r0, #4
+ bne _02213374
+ add r6, r5, #0
+ b _0221337A
+_02213374:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02213364
+_0221337A:
+ cmp r6, #0xff
+ bne _022133A2
+ mov r6, #0
+ b _022133A2
+_02213382:
+ mov r6, #0xff
+ mov r5, #0
+_02213386:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02215490
+ cmp r0, #5
+ bne _02213396
+ add r6, r5, #0
+ b _0221339C
+_02213396:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02213386
+_0221339C:
+ cmp r6, #0xff
+ bne _022133A2
+ mov r6, #0
+_022133A2:
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022133A8
+MOD08_022133A8: ; 0x022133A8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ beq _022133C4
+ ldrb r0, [r5, #4]
+ add r0, r0, #1
+ strb r0, [r5, #4]
+ ldrb r1, [r5, #4]
+ ldrb r0, [r5, #5]
+ cmp r1, r0
+ bne _022133F2
+ mov r0, #0
+ strb r0, [r5, #4]
+_022133C4:
+ ldr r0, [r5, #8]
+ mov r1, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldr r0, [r5, #8]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ ldr r0, [r5, #8]
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ asr r2, r0, #0x10
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_0200C714
+_022133F2:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_022133F4
+MOD08_022133F4: ; 0x022133F4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ beq _02213410
+ ldrb r0, [r5, #4]
+ add r0, r0, #1
+ strb r0, [r5, #4]
+ ldrb r1, [r5, #4]
+ ldrb r0, [r5, #5]
+ cmp r1, r0
+ bne _02213452
+ mov r0, #0
+ strb r0, [r5, #4]
+_02213410:
+ ldr r0, [r5, #8]
+ mov r1, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldr r0, [r5, #8]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ ldr r0, [r5, #8]
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ sub r6, #0x28
+ ldr r0, [r5]
+ mov r1, #2
+ mov r2, #0
+ neg r3, r6
+ bl FUN_020179E0
+ sub r4, #0x28
+ ldr r0, [r5]
+ mov r1, #2
+ mov r2, #3
+ neg r3, r4
+ bl FUN_020179E0
+_02213452:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02213454
+MOD08_02213454: ; 0x02213454
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ cmp r1, #4
+ bne _02213480
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _0221349E
+ ldr r0, [r0, #0xc]
+ bl FUN_0200CAB4
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0x5e
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_02213480:
+ mov r0, #0x59
+ lsl r0, r0, #2
+ lsl r5, r1, #2
+ add r4, r4, r0
+ ldr r0, [r4, r5]
+ cmp r0, #0
+ beq _0221349E
+ ldr r0, [r0, #0xc]
+ bl FUN_0200CAB4
+ ldr r0, [r4, r5]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, r5]
+_0221349E:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_022134A0
+MOD08_022134A0: ; 0x022134A0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022134A4
+MOD08_022134A4: ; 0x022134A4
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022134A8
+MOD08_022134A8: ; 0x022134A8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r1, [r5, #0x18]
+ add r2, r1, #4
+ str r2, [r5, #0x18]
+ ldr r1, [r2]
+ add r2, r2, #4
+ str r2, [r5, #0x18]
+ ldr r4, [r2]
+ add r2, r2, #4
+ str r2, [r5, #0x18]
+ bl MOD08_022132C4
+ add r6, r0, #0
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ lsl r0, r6, #2
+ add r0, r1, r0
+ add r0, #0xb0
+ ldr r1, [r0]
+ ldr r0, [r1, #4]
+ str r0, [sp, #0x14]
+ ldr r0, [r1, #8]
+ str r0, [sp, #0x10]
+ ldr r0, [r1]
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _022134FE
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_022154A8
+ bl MOD08_0222A6C8
+ cmp r0, #1
+ bne _022134FE
+ mov r7, #0xc9
+ b _02213500
+_022134FE:
+ mov r7, #0xc8
+_02213500:
+ mov r0, #2
+ bl FUN_020187B0
+ mov r2, #0x19
+ mov r1, #0
+ lsl r2, r2, #8
+ bl MI_CpuFill8
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc4
+ mov r3, #0x32
+ ldr r0, [r0]
+ ldr r2, [sp, #0x18]
+ mov r1, #2
+ lsl r3, r3, #6
+ bl FUN_02017E14
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x80
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ ldr r3, [r5]
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ add r2, r5, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc4
+ ldr r2, [r2]
+ mov r0, #7
+ add r1, r7, #0
+ mov r3, #2
+ bl FUN_020068C8
+ cmp r4, #1
+ bne _022135AC
+ ldr r0, [r5]
+ mov r1, #0x10
+ bl FUN_02016998
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r2, [r0]
+ ldr r0, [r5, r1]
+ add r1, r6, #0
+ str r2, [r0]
+ add r0, r5, #0
+ bl MOD08_022154D4
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ ldr r2, [r5, r1]
+ str r0, [r2, #8]
+ ldr r0, [r5, r1]
+ mov r2, #0
+ strb r2, [r0, #4]
+ ldr r0, [r5, r1]
+ strb r2, [r0, #5]
+ ldr r0, _02213628 ; =MOD08_022133F4
+ ldr r1, [r5, r1]
+ ldr r2, _0221362C ; =0x00001001
+ bl FUN_0200CA44
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ str r0, [r1, #0xc]
+_022135AC:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_022154D4
+ mov r1, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_022154D4
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_022154D4
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ add r0, r5, #0
+ add r0, #0xc4
+ sub r7, #0x28
+ ldr r0, [r0]
+ mov r1, #2
+ mov r2, #0
+ neg r3, r7
+ bl FUN_020179E0
+ add r0, r5, #0
+ add r0, #0xc4
+ sub r4, #0x28
+ ldr r0, [r0]
+ mov r1, #2
+ mov r2, #3
+ neg r3, r4
+ bl FUN_020179E0
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ add r0, r5, #0
+ bl MOD08_02215574
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ mov r0, #2
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02213628: .word MOD08_022133F4
+_0221362C: .word 0x00001001
+
+ thumb_func_start MOD08_02213630
+MOD08_02213630: ; 0x02213630
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ add r0, r0, #4
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+ mov r0, #2
+ bl FUN_020187B0
+ mov r2, #0x19
+ mov r1, #0
+ lsl r2, r2, #8
+ bl MI_CpuFill8
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD08_02213454
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02213658
+MOD08_02213658: ; 0x02213658
+ push {r4, lr}
+ sub sp, #0x18
+ ldr r3, _022136CC ; =0x0222AA7C
+ add r2, sp, #0
+ add r4, r0, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r4, #0x18]
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_0200BB34
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, [r4, r1]
+ add r0, #0xac
+ ldr r0, [r0]
+ mov r2, #5
+ bl FUN_0200BBF0
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_0200BB68
+ mov r2, #0x11
+ mov r1, #0
+ lsl r2, r2, #0x10
+ bl FUN_02008D24
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ mov r1, #0x4e
+ add r0, #0xac
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ ldr r1, [r4, r1]
+ add r2, sp, #0
+ bl FUN_0200BF60
+ add sp, #0x18
+ pop {r4, pc}
+ .align 2, 0
+_022136CC: .word 0x0222AA7C
+
+ thumb_func_start MOD08_022136D0
+MOD08_022136D0: ; 0x022136D0
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ ldr r1, _0221377C ; =0x00004E21
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r2, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r4, r2, r1
+ ldrh r3, [r0, #0x14]
+ lsr r2, r1, #2
+ add r0, #0xac
+ mul r2, r3
+ add r4, r4, r2
+ mov r2, #0
+ str r2, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ str r4, [sp, #8]
+ lsr r1, r1, #6
+ ldr r0, [r0]
+ ldr r1, [r5, r1]
+ mov r2, #0x1b
+ mov r3, #0x28
+ bl FUN_0200C00C
+ mov r0, #0x1b
+ str r0, [sp]
+ mov r3, #0x27
+ str r3, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ add r2, r5, #0
+ add r0, r5, #0
+ str r4, [sp, #0x14]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, #0xc8
+ add r2, #0xac
+ lsl r3, r3, #3
+ ldr r0, [r0]
+ ldr r2, [r2]
+ ldr r3, [r5, r3]
+ mov r1, #2
+ bl FUN_0200C0DC
+ mov r0, #0
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x4e
+ str r4, [sp, #4]
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r1, r1, #2
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r5, r1]
+ mov r2, #0x1b
+ mov r3, #0x29
+ bl FUN_0200C124
+ mov r0, #0
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x4e
+ str r4, [sp, #4]
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r1, r1, #2
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r5, r1]
+ mov r2, #0x1b
+ mov r3, #0x2a
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221377C: .word 0x00004E21
+
+ thumb_func_start MOD08_02213780
+MOD08_02213780: ; 0x02213780
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x70
+ add r4, r0, #0
+ ldr r1, [r4, #0x18]
+ ldr r6, _02213994 ; =0x00004E21
+ add r2, r1, #4
+ str r2, [r4, #0x18]
+ ldr r1, [r2]
+ add r2, r2, #4
+ str r2, [r4, #0x18]
+ mov ip, r1
+ ldr r1, [r2]
+ add r2, r2, #4
+ str r2, [r4, #0x18]
+ str r1, [sp, #0x10]
+ ldr r1, [r2]
+ add r2, r2, #4
+ str r2, [r4, #0x18]
+ str r1, [sp, #0xc]
+ ldr r1, [r2]
+ add r2, r2, #4
+ str r2, [r4, #0x18]
+ add r2, r4, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r1, r1, r6
+ ldrh r3, [r2, #0x14]
+ lsr r2, r6, #2
+ mul r2, r3
+ add r2, r1, r2
+ str r2, [sp, #0x58]
+ add r2, r4, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ ldrh r3, [r2, #0x14]
+ lsr r2, r6, #2
+ mul r2, r3
+ add r2, r1, r2
+ str r2, [sp, #0x5c]
+ add r2, r4, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ ldrh r3, [r2, #0x14]
+ lsr r2, r6, #2
+ mul r2, r3
+ add r2, r1, r2
+ str r2, [sp, #0x60]
+ add r2, r4, #0
+ add r2, #0xc0
+ ldr r2, [r2]
+ lsr r3, r6, #2
+ ldrh r2, [r2, #0x14]
+ mul r3, r2
+ add r1, r1, r3
+ str r1, [sp, #0x64]
+ mov r1, #0
+ str r1, [sp, #0x68]
+ str r1, [sp, #0x6c]
+ mov r1, ip
+ bl MOD08_022132C4
+ str r0, [sp, #0x1c]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ ldr r0, [sp, #0x1c]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ add r0, #0xb0
+ ldr r1, [r0]
+ ldr r0, [r1, #4]
+ str r0, [sp, #0x18]
+ ldr r0, [r1, #8]
+ str r0, [sp, #0x14]
+ ldr r0, [r1]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ add r0, r4, #0
+ bl MOD08_022154D4
+ add r6, r0, #0
+ beq _02213848
+ mov r1, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ add r0, r6, #0
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r0, r5, r0
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+_02213848:
+ add r0, sp, #0x24
+ strh r7, [r0]
+ strh r5, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ mov r0, #0x64
+ str r0, [sp, #0x2c]
+ mov r0, #1
+ str r1, [sp, #0x30]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x50]
+ str r1, [sp, #0x54]
+ add r2, sp, #0x58
+ add r3, sp, #0x24
+_02213866:
+ ldr r0, [r2]
+ add r1, r1, #1
+ str r0, [r3, #0x14]
+ add r2, r2, #4
+ add r3, r3, #4
+ cmp r1, #6
+ blt _02213866
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ mov r1, #0x4e
+ add r0, #0xac
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ ldr r1, [r4, r1]
+ add r2, sp, #0x24
+ bl FUN_0200C154
+ add r7, r0, #0
+ cmp r6, #0
+ bne _02213898
+ mov r1, #0
+ bl FUN_0200C644
+ b _022138AC
+_02213898:
+ add r0, r6, #0
+ mov r1, #6
+ bl FUN_0200782C
+ cmp r0, #1
+ bne _022138AC
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_0200C644
+_022138AC:
+ add r0, r4, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _022138CE
+ ldr r1, [sp, #0x1c]
+ add r0, r4, #0
+ bl MOD08_022154A8
+ bl MOD08_0222A6C8
+ cmp r0, #1
+ bne _022138CE
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_0200C8D0
+_022138CE:
+ ldr r1, [sp, #0x1c]
+ add r0, r4, #0
+ bl MOD08_022154D4
+ cmp r0, #0
+ beq _022138F0
+ ldr r0, [r7]
+ bl FUN_02020350
+ add r1, r0, #0
+ mov r3, #0x32
+ ldr r1, [r1, #4]
+ ldr r2, [sp, #0x20]
+ mov r0, #0x13
+ lsl r3, r3, #6
+ bl FUN_0201C2C8
+_022138F0:
+ ldr r1, [sp, #0x1c]
+ add r0, r4, #0
+ bl MOD08_022154D4
+ cmp r0, #0
+ beq _02213926
+ ldr r0, [r7]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ mov r1, #2
+ str r1, [sp]
+ mov r1, #0x20
+ lsl r0, r0, #0x14
+ str r1, [sp, #4]
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ ldr r3, [r4]
+ bl FUN_020030E8
+_02213926:
+ ldr r0, [sp, #0xc]
+ lsl r5, r0, #2
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ add r6, r4, r0
+ ldr r0, [r6, r5]
+ cmp r0, #0
+ beq _0221393A
+ bl ErrorHandling
+_0221393A:
+ mov r0, #0x15
+ str r7, [r6, r5]
+ mov r2, #1
+ add r1, r4, r5
+ lsl r0, r0, #4
+ str r2, [r1, r0]
+ ldr r0, [sp, #0x10]
+ cmp r0, #1
+ bne _02213990
+ ldr r1, [sp, #0x1c]
+ add r0, r4, #0
+ bl MOD08_022154D4
+ cmp r0, #0
+ beq _02213990
+ mov r0, #0x59
+ lsl r0, r0, #2
+ add r6, r4, r0
+ ldr r0, [r4]
+ mov r1, #0x10
+ bl FUN_02016998
+ str r0, [r6, r5]
+ ldr r0, [r6, r5]
+ ldr r1, [sp, #0x1c]
+ str r7, [r0]
+ add r0, r4, #0
+ bl MOD08_022154D4
+ ldr r1, [r6, r5]
+ ldr r2, _02213998 ; =0x00001001
+ str r0, [r1, #8]
+ ldr r0, [r6, r5]
+ mov r1, #0
+ strb r1, [r0, #4]
+ ldr r0, [r6, r5]
+ strb r1, [r0, #5]
+ ldr r0, _0221399C ; =MOD08_022133A8
+ ldr r1, [r6, r5]
+ bl FUN_0200CA44
+ ldr r1, [r6, r5]
+ str r0, [r1, #0xc]
+_02213990:
+ add sp, #0x70
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02213994: .word 0x00004E21
+_02213998: .word 0x00001001
+_0221399C: .word MOD08_022133A8
+
+ thumb_func_start MOD08_022139A0
+MOD08_022139A0: ; 0x022139A0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _022139C2
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_0200C398
+_022139C2:
+ mov r0, #0x4e
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022139CC
+MOD08_022139CC: ; 0x022139CC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ lsl r4, r1, #2
+ add r6, r5, r0
+ ldr r0, [r6, r4]
+ cmp r0, #0
+ beq _022139EE
+ bl FUN_0200C3DC
+_022139EE:
+ mov r0, #0x15
+ mov r2, #0
+ add r1, r5, r4
+ lsl r0, r0, #4
+ str r2, [r1, r0]
+ str r2, [r6, r4]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_022139FC
+MOD08_022139FC: ; 0x022139FC
+ push {r3, lr}
+ ldr r2, [r1, #0xc]
+ cmp r2, #0
+ bne _02213A0A
+ bl FUN_0200CAB4
+ pop {r3, pc}
+_02213A0A:
+ mov r0, #0x4e
+ ldr r2, [r1]
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ cmp r0, #0
+ beq _02213A1C
+ ldr r0, [r1, #4]
+ bl FUN_0200BC1C
+_02213A1C:
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02213A20
+MOD08_02213A20: ; 0x02213A20
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r6, r5, #0
+ add r1, r0, #4
+ str r1, [r5, #0x18]
+ ldr r0, [r1]
+ add r6, #0x54
+ str r0, [sp]
+ add r0, r1, #4
+ str r0, [r5, #0x18]
+ ldr r2, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ lsl r4, r2, #4
+ str r0, [sp, #8]
+ add r0, #0x4c
+ lsl r1, r1, #2
+ str r0, [sp, #8]
+ str r5, [r0, r4]
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r3, [r5, r0]
+ add r2, r5, r4
+ str r3, [r2, #0x50]
+ add r1, r5, r1
+ add r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ str r0, [r6, r4]
+ mov r0, #1
+ str r0, [r2, #0x58]
+ ldr r0, [r6, r4]
+ bl FUN_0200C644
+ add r0, r5, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ beq _02213A7C
+ b _02213BCA
+_02213A7C:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227468
+ str r0, [sp, #4]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227468
+ add r7, r0, #0
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD08_022132C4
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022154D4
+ cmp r0, #0
+ beq _02213AB8
+ mov r1, #6
+ bl FUN_0200782C
+ b _02213ABA
+_02213AB8:
+ mov r0, #0
+_02213ABA:
+ cmp r0, #1
+ ldr r0, [r6, r4]
+ bne _02213AC8
+ mov r1, #0
+ bl FUN_0200C644
+ b _02213ACE
+_02213AC8:
+ mov r1, #1
+ bl FUN_0200C644
+_02213ACE:
+ ldr r0, [sp]
+ cmp r0, #3
+ bhi _02213BBC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02213AE0: ; jump table
+ .short _02213AE8 - _02213AE0 - 2 ; case 0
+ .short _02213B36 - _02213AE0 - 2 ; case 1
+ .short _02213B0E - _02213AE0 - 2 ; case 2
+ .short _02213B7A - _02213AE0 - 2 ; case 3
+_02213AE8:
+ ldr r0, [sp, #4]
+ sub r0, r0, #3
+ cmp r0, #1
+ bhi _02213AFA
+ ldr r0, [r6, r4]
+ mov r1, #1
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213AFA:
+ add r5, #0x54
+ ldr r0, [r5, r4]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r5, r4]
+ mov r1, #0xff
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213B0E:
+ ldr r0, [sp, #4]
+ cmp r0, #5
+ beq _02213B18
+ cmp r0, #2
+ bne _02213B22
+_02213B18:
+ ldr r0, [r6, r4]
+ mov r1, #1
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213B22:
+ add r5, #0x54
+ ldr r0, [r5, r4]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r5, r4]
+ mov r1, #0xff
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213B36:
+ cmp r7, #5
+ bhi _02213BBC
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02213B46: ; jump table
+ .short _02213BBC - _02213B46 - 2 ; case 0
+ .short _02213BBC - _02213B46 - 2 ; case 1
+ .short _02213B52 - _02213B46 - 2 ; case 2
+ .short _02213B5C - _02213B46 - 2 ; case 3
+ .short _02213B66 - _02213B46 - 2 ; case 4
+ .short _02213B70 - _02213B46 - 2 ; case 5
+_02213B52:
+ ldr r0, [r6, r4]
+ mov r1, #0xff
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213B5C:
+ ldr r0, [r6, r4]
+ mov r1, #1
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213B66:
+ ldr r0, [r6, r4]
+ mov r1, #1
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213B70:
+ ldr r0, [r6, r4]
+ mov r1, #0xff
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213B7A:
+ cmp r7, #5
+ bhi _02213BBC
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02213B8A: ; jump table
+ .short _02213BBC - _02213B8A - 2 ; case 0
+ .short _02213BBC - _02213B8A - 2 ; case 1
+ .short _02213B96 - _02213B8A - 2 ; case 2
+ .short _02213BA0 - _02213B8A - 2 ; case 3
+ .short _02213BAA - _02213B8A - 2 ; case 4
+ .short _02213BB4 - _02213B8A - 2 ; case 5
+_02213B96:
+ ldr r0, [r6, r4]
+ mov r1, #1
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213BA0:
+ ldr r0, [r6, r4]
+ mov r1, #0xff
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213BAA:
+ ldr r0, [r6, r4]
+ mov r1, #0xff
+ bl FUN_0200C6C4
+ b _02213BBC
+_02213BB4:
+ ldr r0, [r6, r4]
+ mov r1, #1
+ bl FUN_0200C6C4
+_02213BBC:
+ ldr r1, [sp, #8]
+ mov r2, #1
+ ldr r0, _02213BD0 ; =MOD08_022139FC
+ add r1, r1, r4
+ lsl r2, r2, #0xc
+ bl FUN_0200CA44
+_02213BCA:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02213BD0: .word MOD08_022139FC
+
+ thumb_func_start MOD08_02213BD4
+MOD08_02213BD4: ; 0x02213BD4
+ ldr r1, [r0, #0x18]
+ mov r2, #0
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r3, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ lsl r1, r3, #4
+ add r0, r0, r1
+ str r2, [r0, #0x58]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02213BEC
+MOD08_02213BEC: ; 0x02213BEC
+ ldr r1, [r0, #0x18]
+ ldr r3, _02213BFC ; =MOD08_02213454
+ add r2, r1, #4
+ str r2, [r0, #0x18]
+ ldr r1, [r2]
+ add r2, r2, #4
+ str r2, [r0, #0x18]
+ bx r3
+ .align 2, 0
+_02213BFC: .word MOD08_02213454
+
+ thumb_func_start MOD08_02213C00
+MOD08_02213C00: ; 0x02213C00
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r3, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ add r0, r0, r3
+ add r0, #0x6c
+ strb r2, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02213C1C
+MOD08_02213C1C: ; 0x02213C1C
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r3, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ add r0, r0, r3
+ add r0, #0x7c
+ strb r2, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02213C38
+MOD08_02213C38: ; 0x02213C38
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02213C3C
+MOD08_02213C3C: ; 0x02213C3C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02213C40
+MOD08_02213C40: ; 0x02213C40
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r5, r0, #0
+ ldrh r1, [r1, #0x14]
+ add r0, r4, #0
+ add r6, r2, #0
+ bl MOD08_02227470
+ add r7, r0, #0
+ add r0, r4, #0
+ add r4, #0xc0
+ ldr r1, [r4]
+ ldrh r1, [r1, #0x16]
+ bl MOD08_02227470
+ lsl r1, r6, #2
+ add r1, r5, r1
+ ldr r1, [r1, #0x1c]
+ cmp r1, #2
+ bne _02213C84
+ cmp r7, r0
+ bne _02213C7C
+ cmp r0, #3
+ beq _02213C78
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02213C78:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02213C7C:
+ cmp r0, #3
+ bne _02213C90
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02213C84:
+ cmp r1, #0
+ beq _02213C90
+ cmp r0, #3
+ bne _02213C90
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02213C90:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02213C94
+MOD08_02213C94: ; 0x02213C94
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ add r5, r1, #0
+ add r0, r3, #0
+ mov r1, #0
+ add r4, r2, #0
+ str r3, [sp, #0x10]
+ bl MOD08_022156AC
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ add r2, r5, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc4
+ ldr r2, [r2]
+ mov r0, #7
+ add r3, r4, #0
+ bl FUN_0200687C
+ ldr r0, [sp, #0x10]
+ mov r1, #1
+ bl MOD08_022156AC
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x90
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ ldr r3, [r5]
+ mov r1, #7
+ bl FUN_020030E8
+ add r0, r5, #0
+ add r0, #0xc4
+ lsl r1, r4, #0x18
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ add r0, r5, #0
+ mov r6, #2
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02213D08
+ mov r6, #4
+ b _02213D18
+_02213D08:
+ add r0, r7, #0
+ add r1, r5, #0
+ mov r2, #7
+ bl MOD08_02213C40
+ cmp r0, #1
+ bne _02213D18
+ mov r6, #3
+_02213D18:
+ ldr r0, [sp, #0x10]
+ add r1, r6, #0
+ bl MOD08_022156AC
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ add r5, #0xc4
+ str r0, [sp, #0xc]
+ ldr r2, [r5]
+ mov r0, #7
+ add r3, r4, #0
+ bl FUN_020068C8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02213D40
+MOD08_02213D40: ; 0x02213D40
+ lsl r0, r0, #0x10
+ and r0, r1
+ cmp r1, r0
+ bne _02213D4C
+ mov r0, #1
+ bx lr
+_02213D4C:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD08_02213D50
+MOD08_02213D50: ; 0x02213D50
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r3, _02213DA0 ; =0x0222AA2C
+ add r2, sp, #0
+ add r5, r0, #0
+ add r4, r2, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r7, _02213DA4 ; =0x0222AADC
+ mov r6, #0
+_02213D68:
+ ldr r0, [r5, #0x18]
+ ldr r1, [r4]
+ bl MOD08_02213D40
+ cmp r0, #0
+ beq _02213D92
+ ldr r0, [r4]
+ mov r1, #0
+ lsr r2, r0, #0x10
+ cmp r2, #2
+ blt _02213D8A
+_02213D7E:
+ lsr r0, r2, #0x1f
+ add r0, r2, r0
+ asr r2, r0, #1
+ add r1, r1, #1
+ cmp r2, #2
+ bge _02213D7E
+_02213D8A:
+ lsl r1, r1, #2
+ ldr r1, [r7, r1]
+ add r0, r5, #0
+ blx r1
+_02213D92:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blo _02213D68
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02213DA0: .word 0x0222AA2C
+_02213DA4: .word 0x0222AADC
+
+ thumb_func_start MOD08_02213DA8
+MOD08_02213DA8: ; 0x02213DA8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x4c
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _02213DC0
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02213DC0:
+ mov r1, #0
+ mov r2, #0x4c
+ bl Call_FillMemWithValue
+ mov r0, #0
+ str r0, [r4]
+ strb r0, [r4, #5]
+ str r5, [r4, #0x48]
+ strb r0, [r4, #9]
+ mov r0, #0x1f
+ strb r0, [r4, #0xa]
+ mov r0, #0x1d
+ strb r0, [r4, #0xb]
+ mov r0, #2
+ strb r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ cmp r0, #1
+ bne _02213DFA
+ mov r0, #0
+ strb r0, [r4, #9]
+ mov r0, #0x1f
+ strb r0, [r4, #0xa]
+ mov r0, #0xf
+ strb r0, [r4, #0xb]
+ mov r0, #7
+ strb r0, [r4, #0xc]
+_02213DFA:
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ cmp r0, #2
+ bne _02213E16
+ mov r0, #7
+ strb r0, [r4, #9]
+ mov r0, #0xf
+ strb r0, [r4, #0xa]
+ mov r0, #0x1d
+ strb r0, [r4, #0xb]
+ mov r0, #2
+ strb r0, [r4, #0xc]
+_02213E16:
+ mov r1, #0
+ add r2, r5, #0
+ add r3, r4, #0
+_02213E1C:
+ add r0, r2, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, r1, #1
+ str r0, [r3, #0x1c]
+ add r2, r2, #4
+ add r3, r3, #4
+ cmp r1, #0xa
+ blt _02213E1C
+ mov r0, #0x5f
+ mov r1, #1
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02213E3C
+MOD08_02213E3C: ; 0x02213E3C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ beq _02213E50
+ cmp r0, #1
+ beq _02213E8E
+ cmp r0, #2
+ beq _02213EE0
+ b _02213F2A
+_02213E50:
+ ldr r0, [r5, #0x48]
+ mov r1, #2
+ bl MOD08_0221477C
+ ldr r0, [r5, #0x48]
+ mov r1, #2
+ bl MOD08_02215600
+ add r4, r0, #0
+ ldr r0, [r5, #0x48]
+ mov r1, #1
+ bl MOD08_02215600
+ lsl r1, r4, #0x18
+ mov r0, #3
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ lsl r1, r4, #0x18
+ mov r0, #2
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ ldrb r0, [r5, #5]
+ add r0, r0, #1
+ strb r0, [r5, #5]
+ b _02213F2E
+_02213E8E:
+ ldr r0, [r5, #0x48]
+ mov r1, #3
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r2, #2
+ add r3, r1, #0
+ bl FUN_020170F4
+ ldr r0, [r5, #0x48]
+ bl MOD08_02212004
+ cmp r0, #1
+ beq _02213EB8
+ ldr r0, [r5, #0x48]
+ mov r2, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020170F4
+_02213EB8:
+ ldr r1, [r5, #0x48]
+ ldr r3, [r5, #0x10]
+ add r0, r5, #0
+ mov r2, #3
+ bl MOD08_02213C94
+ ldrb r0, [r5, #9]
+ mov r1, #4
+ mov r2, #8
+ str r0, [sp]
+ ldrb r3, [r5, #0xa]
+ ldr r0, _02213F34 ; =0x04000050
+ bl G2x_SetBlendAlpha_
+ add r0, r5, #0
+ bl MOD08_02213D50
+ ldrb r0, [r5, #5]
+ add r0, r0, #1
+ strb r0, [r5, #5]
+_02213EE0:
+ ldrb r1, [r5, #9]
+ ldrb r0, [r5, #0xb]
+ mov r2, #0
+ cmp r1, r0
+ bhs _02213EF0
+ add r0, r1, #2
+ strb r0, [r5, #9]
+ b _02213EF2
+_02213EF0:
+ add r2, r2, #1
+_02213EF2:
+ ldrb r1, [r5, #0xa]
+ ldrb r0, [r5, #0xc]
+ cmp r1, r0
+ bls _02213F00
+ sub r0, r1, #2
+ strb r0, [r5, #0xa]
+ b _02213F02
+_02213F00:
+ add r2, r2, #1
+_02213F02:
+ cmp r2, #2
+ bne _02213F14
+ ldrb r0, [r5, #0xb]
+ strb r0, [r5, #9]
+ ldrb r0, [r5, #0xc]
+ strb r0, [r5, #0xa]
+ ldrb r0, [r5, #5]
+ add r0, r0, #1
+ strb r0, [r5, #5]
+_02213F14:
+ ldrb r0, [r5, #9]
+ ldrb r1, [r5, #0xa]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _02213F38 ; =0x04000052
+ strh r1, [r0]
+ ldrb r0, [r5, #5]
+ cmp r0, #2
+ beq _02213F2E
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02213F2A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02213F2E:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_02213F34: .word 0x04000050
+_02213F38: .word 0x04000052
+
+ thumb_func_start MOD08_02213F3C
+MOD08_02213F3C: ; 0x02213F3C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ ldrb r0, [r4, #5]
+ cmp r0, #4
+ bls _02213F4A
+ b _0221411C
+_02213F4A:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02213F56: ; jump table
+ .short _02213F60 - _02213F56 - 2 ; case 0
+ .short _02213F6E - _02213F56 - 2 ; case 1
+ .short _02213FB0 - _02213F56 - 2 ; case 2
+ .short _02213FF6 - _02213F56 - 2 ; case 3
+ .short _022140F8 - _02213F56 - 2 ; case 4
+_02213F60:
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+_02213F6E:
+ ldr r0, [r4, #0x48]
+ mov r1, #2
+ bl MOD08_02215600
+ add r5, r0, #0
+ ldr r0, [r4, #0x48]
+ mov r1, #1
+ bl MOD08_02215600
+ lsl r1, r5, #0x18
+ mov r0, #3
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ lsl r1, r5, #0x18
+ mov r0, #2
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldrb r0, [r4, #0xa]
+ mov r1, #4
+ mov r2, #8
+ str r0, [sp]
+ ldrb r3, [r4, #9]
+ ldr r0, _02214128 ; =0x04000050
+ bl G2x_SetBlendAlpha_
+ add r0, r4, #0
+ bl MOD08_02213D50
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+_02213FB0:
+ ldrb r1, [r4, #9]
+ ldrb r0, [r4, #0xb]
+ mov r2, #0
+ cmp r1, r0
+ bhs _02213FC0
+ add r0, r1, #2
+ strb r0, [r4, #9]
+ b _02213FC2
+_02213FC0:
+ add r2, r2, #1
+_02213FC2:
+ ldrb r1, [r4, #0xa]
+ ldrb r0, [r4, #0xc]
+ cmp r1, r0
+ bls _02213FD0
+ sub r0, r1, #2
+ strb r0, [r4, #0xa]
+ b _02213FD2
+_02213FD0:
+ add r2, r2, #1
+_02213FD2:
+ cmp r2, #2
+ bne _02213FE8
+ ldrb r0, [r4, #0xb]
+ add r0, r0, #2
+ strb r0, [r4, #9]
+ ldrb r0, [r4, #0xc]
+ sub r0, r0, #2
+ strb r0, [r4, #0xa]
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+_02213FE8:
+ ldrb r0, [r4, #0xa]
+ ldrb r1, [r4, #9]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221412C ; =0x04000052
+ strh r1, [r0]
+ b _02214122
+_02213FF6:
+ add r0, r4, #0
+ add r0, #0x44
+ ldrh r0, [r0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _0221400A
+ ldr r0, [r4, #0x48]
+ bl MOD08_02214524
+_0221400A:
+ add r0, r4, #0
+ add r0, #0x44
+ ldrh r0, [r0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _0221401E
+ ldr r0, [r4, #0x48]
+ bl MOD08_02214524
+_0221401E:
+ ldr r0, [r4, #0x48]
+ mov r2, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x48]
+ mov r1, #3
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x48]
+ mov r1, #3
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r2, #2
+ mov r3, #4
+ bl FUN_020170F4
+ ldr r0, [r4, #0x48]
+ bl MOD08_02212004
+ cmp r0, #0
+ bne _02214078
+ ldr r0, [r4, #0x48]
+ mov r1, #3
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r2, #0
+ mov r3, #1
+ bl FUN_020170F4
+ ldr r0, [r4, #0x48]
+ mov r1, #3
+ bl MOD08_02215638
+ ldr r0, [r4, #0x48]
+ bl MOD08_02215660
+ b _022140CC
+_02214078:
+ ldr r2, [r4, #0x48]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r2]
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r0, [r2, r1]
+ add r1, r1, #4
+ ldr r1, [r2, r1]
+ add r2, #0xc4
+ ldr r2, [r2]
+ mov r3, #3
+ bl FUN_0200687C
+ mov r2, #0x66
+ lsl r2, r2, #2
+ add r1, r2, #0
+ ldr r3, [r4, #0x48]
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r3, r2]
+ sub r1, #0x14
+ lsl r0, r0, #5
+ str r0, [sp, #4]
+ sub r0, r2, #4
+ ldr r0, [r3, r0]
+ sub r2, #0xc
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ add r0, r3, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ ldr r1, [r3, r1]
+ ldr r2, [r3, r2]
+ ldr r3, [r3]
+ bl FUN_020030E8
+_022140CC:
+ ldr r2, [r4, #0x48]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r2]
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r0, [r2, r1]
+ add r1, #0xc
+ ldr r1, [r2, r1]
+ add r2, #0xc4
+ ldr r2, [r2]
+ mov r3, #3
+ bl FUN_020068C8
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+ b _02214122
+_022140F8:
+ ldr r0, [r4, #0x48]
+ bl MOD08_02212004
+ cmp r0, #0
+ bne _02214108
+ bl FUN_02231678
+ b _0221410C
+_02214108:
+ bl FUN_02233560
+_0221410C:
+ ldr r0, [r4, #0x48]
+ mov r1, #2
+ bl MOD08_02214850
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+ b _02214122
+_0221411C:
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02214122:
+ mov r0, #1
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02214128: .word 0x04000050
+_0221412C: .word 0x04000052
+
+ thumb_func_start MOD08_02214130
+MOD08_02214130: ; 0x02214130
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldrb r0, [r4, #5]
+ cmp r0, #0
+ beq _02214142
+ cmp r0, #1
+ beq _022141BE
+ b _0221423A
+_02214142:
+ ldrb r0, [r4, #0xd]
+ ldr r2, [r4, #0x48]
+ cmp r0, #0
+ bne _02214180
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r5, #0x67
+ add r0, r2, #0
+ str r3, [sp, #8]
+ lsl r5, r5, #2
+ ldr r2, [r2, r5]
+ add r0, #0xc8
+ lsl r2, r2, #0x10
+ ldr r0, [r0]
+ mov r1, #1
+ lsr r2, r2, #0x10
+ bl FUN_02003210
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x48]
+ add r2, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ add r2, #0x64
+ mov r3, #0x10
+ bl FUN_02003A64
+ b _022141B8
+_02214180:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, _02214254 ; =0x0000FFFF
+ mov r5, #0x67
+ str r0, [sp, #8]
+ add r0, r2, #0
+ lsl r5, r5, #2
+ ldr r2, [r2, r5]
+ add r0, #0xc8
+ lsl r2, r2, #0x10
+ ldr r0, [r0]
+ mov r1, #1
+ lsr r2, r2, #0x10
+ bl FUN_02003210
+ ldr r0, _02214254 ; =0x0000FFFF
+ add r2, r5, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x48]
+ mov r1, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ add r2, #0x64
+ mov r3, #0x10
+ bl FUN_02003A64
+_022141B8:
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+_022141BE:
+ ldr r0, [r4, #0x48]
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _0221424E
+ ldr r0, [r4, #0x48]
+ mov r2, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020170F4
+ ldr r1, [r4, #0x48]
+ ldr r3, [r4, #0x10]
+ add r0, r4, #0
+ mov r2, #3
+ bl MOD08_02213C94
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0
+ bne _02214208
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r4, #0x48]
+ mov r1, #1
+ add r0, #0xc8
+ ldr r0, [r0]
+ lsl r2, r1, #9
+ bl FUN_02003210
+ b _02214222
+_02214208:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ ldr r0, _02214254 ; =0x0000FFFF
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x48]
+ mov r1, #1
+ add r0, #0xc8
+ ldr r0, [r0]
+ lsl r2, r1, #9
+ bl FUN_02003210
+_02214222:
+ add r0, r4, #0
+ bl MOD08_02213D50
+ mov r0, #0x5f
+ ldr r1, [r4, #0x48]
+ mov r2, #2
+ lsl r0, r0, #2
+ strb r2, [r1, r0]
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+ b _0221424E
+_0221423A:
+ ldr r0, [r4, #0x48]
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _0221424E
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, pc}
+_0221424E:
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02214254: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02214258
+MOD08_02214258: ; 0x02214258
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ ldrb r0, [r4, #5]
+ cmp r0, #3
+ bls _02214266
+ b _02214462
+_02214266:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02214272: ; jump table
+ .short _0221427A - _02214272 - 2 ; case 0
+ .short _02214286 - _02214272 - 2 ; case 1
+ .short _02214300 - _02214272 - 2 ; case 2
+ .short _022143F0 - _02214272 - 2 ; case 3
+_0221427A:
+ add r0, r4, #0
+ bl MOD08_02213D50
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+_02214286:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0
+ bne _022142C2
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r4, #0x48]
+ mov r1, #1
+ add r0, #0xc8
+ ldr r0, [r0]
+ lsl r2, r1, #9
+ bl FUN_02003210
+ ldr r3, [r4, #0x48]
+ mov r1, #0
+ mov r2, #0x67
+ add r0, r3, #0
+ str r1, [sp]
+ lsl r2, r2, #2
+ ldr r2, [r3, r2]
+ add r0, #0xc8
+ lsl r2, r2, #0x10
+ ldr r0, [r0]
+ lsr r2, r2, #0x10
+ mov r3, #0x10
+ bl FUN_02003A64
+ b _022142FA
+_022142C2:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, _0221448C ; =0x0000FFFF
+ mov r1, #1
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x48]
+ lsl r2, r1, #9
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_02003210
+ mov r2, #0x67
+ ldr r3, [r4, #0x48]
+ ldr r0, _0221448C ; =0x0000FFFF
+ lsl r2, r2, #2
+ str r0, [sp]
+ add r0, r3, #0
+ ldr r2, [r3, r2]
+ add r0, #0xc8
+ lsl r2, r2, #0x10
+ ldr r0, [r0]
+ mov r1, #0
+ lsr r2, r2, #0x10
+ mov r3, #0x10
+ bl FUN_02003A64
+_022142FA:
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+_02214300:
+ ldr r0, [r4, #0x48]
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _02214310
+ b _02214486
+_02214310:
+ add r0, r4, #0
+ add r0, #0x44
+ ldrh r0, [r0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _02214324
+ ldr r0, [r4, #0x48]
+ bl MOD08_02214524
+_02214324:
+ add r0, r4, #0
+ add r0, #0x44
+ ldrh r0, [r0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _02214338
+ ldr r0, [r4, #0x48]
+ bl MOD08_02214524
+_02214338:
+ mov r0, #3
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x48]
+ bl MOD08_02212004
+ cmp r0, #0
+ bne _0221436A
+ ldr r0, [r4, #0x48]
+ mov r1, #3
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r2, #0
+ mov r3, #1
+ bl FUN_020170F4
+ ldr r0, [r4, #0x48]
+ mov r1, #3
+ bl MOD08_02215638
+ ldr r0, [r4, #0x48]
+ bl MOD08_02215660
+ b _022143BE
+_0221436A:
+ ldr r2, [r4, #0x48]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r2]
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r0, [r2, r1]
+ add r1, r1, #4
+ ldr r1, [r2, r1]
+ add r2, #0xc4
+ ldr r2, [r2]
+ mov r3, #3
+ bl FUN_0200687C
+ mov r2, #0x66
+ lsl r2, r2, #2
+ add r1, r2, #0
+ ldr r3, [r4, #0x48]
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r3, r2]
+ sub r1, #0x14
+ lsl r0, r0, #5
+ str r0, [sp, #4]
+ sub r0, r2, #4
+ ldr r0, [r3, r0]
+ sub r2, #0xc
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ add r0, r3, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ ldr r1, [r3, r1]
+ ldr r2, [r3, r2]
+ ldr r3, [r3]
+ bl FUN_020030E8
+_022143BE:
+ ldr r2, [r4, #0x48]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r2]
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r0, [r2, r1]
+ add r1, #0xc
+ ldr r1, [r2, r1]
+ add r2, #0xc4
+ ldr r2, [r2]
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #3
+ mov r1, #1
+ bl FUN_0201797C
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+_022143F0:
+ ldr r0, [r4, #0x48]
+ mov r2, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x48]
+ mov r1, #3
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldrb r0, [r4, #0xd]
+ ldr r2, [r4, #0x48]
+ cmp r0, #0
+ bne _0221443A
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ mov r5, #0x67
+ add r0, r2, #0
+ str r3, [sp, #8]
+ lsl r5, r5, #2
+ ldr r2, [r2, r5]
+ add r0, #0xc8
+ lsl r2, r2, #0x10
+ ldr r0, [r0]
+ mov r1, #1
+ lsr r2, r2, #0x10
+ bl FUN_02003210
+ b _0221445C
+_0221443A:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ mov r5, #0x67
+ ldr r0, _0221448C ; =0x0000FFFF
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r2, #0
+ lsl r5, r5, #2
+ ldr r2, [r2, r5]
+ add r0, #0xc8
+ lsl r2, r2, #0x10
+ ldr r0, [r0]
+ mov r1, #1
+ lsr r2, r2, #0x10
+ bl FUN_02003210
+_0221445C:
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+_02214462:
+ ldr r0, [r4, #0x48]
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02214486
+ mov r0, #0x5f
+ ldr r1, [r4, #0x48]
+ mov r2, #2
+ lsl r0, r0, #2
+ strb r2, [r1, r0]
+ ldrb r0, [r4, #5]
+ add sp, #0x10
+ add r0, r0, #1
+ strb r0, [r4, #5]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02214486:
+ mov r0, #1
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221448C: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02214490
+MOD08_02214490: ; 0x02214490
+ push {r3, lr}
+ add r0, r1, #0
+ bl MOD08_02213D50
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD08_0221449C
+MOD08_0221449C: ; 0x0221449C
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD08_02213D50
+ add r0, r4, #0
+ add r0, #0x44
+ ldrh r0, [r0]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _022144BA
+ ldr r0, [r4, #0x48]
+ bl MOD08_02214524
+_022144BA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022144C0
+MOD08_022144C0: ; 0x022144C0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _022144DA
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+_022144DA:
+ mov r3, #4
+ mov r1, #8
+ ldrsh r2, [r4, r3]
+ ldrsh r0, [r4, r1]
+ add r0, r2, r0
+ strh r0, [r4, #4]
+ mov r0, #6
+ ldrsh r2, [r4, r0]
+ mov r0, #0xa
+ ldrsh r0, [r4, r0]
+ add r0, r2, r0
+ strh r0, [r4, #6]
+ ldrsh r0, [r4, r1]
+ cmp r0, #0
+ beq _02214508
+ ldr r1, [r4, #0xc]
+ ldrsh r3, [r4, r3]
+ lsl r1, r1, #0x18
+ ldr r0, [r4]
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl FUN_020179E0
+_02214508:
+ mov r0, #0xa
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ beq _02214522
+ ldr r1, [r4, #0xc]
+ mov r3, #6
+ lsl r1, r1, #0x18
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4]
+ lsr r1, r1, #0x18
+ mov r2, #3
+ bl FUN_020179E0
+_02214522:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02214524
+MOD08_02214524: ; 0x02214524
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221452E
+ bl ErrorHandling
+_0221452E:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _0221453C
+ mov r0, #1
+ str r0, [r1, #0x18]
+_0221453C:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02214540
+MOD08_02214540: ; 0x02214540
+ mov r1, #0x67
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start MOD08_02214548
+MOD08_02214548: ; 0x02214548
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD08_0221454C
+MOD08_0221454C: ; 0x0221454C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x48]
+ mov r1, #0x20
+ ldr r0, [r0]
+ bl FUN_02016998
+ add r4, r0, #0
+ ldr r0, [r5, #0x48]
+ mov r2, #6
+ add r0, #0xc4
+ ldr r0, [r0]
+ str r0, [r4]
+ ldr r0, [r5, #0x48]
+ add r0, #0x9c
+ ldr r0, [r0]
+ strh r0, [r4, #4]
+ ldr r0, [r5, #0x48]
+ add r0, #0xa0
+ ldr r0, [r0]
+ strh r0, [r4, #6]
+ ldr r0, [r5, #0x48]
+ add r0, #0x94
+ ldr r0, [r0]
+ strh r0, [r4, #8]
+ ldr r0, [r5, #0x48]
+ add r0, #0x98
+ ldr r0, [r0]
+ strh r0, [r4, #0xa]
+ mov r0, #3
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+ ldr r1, [r5, #0x48]
+ add r0, r5, #0
+ bl MOD08_02213C40
+ cmp r0, #1
+ bne _022145C0
+ mov r0, #8
+ ldrsh r1, [r4, r0]
+ sub r0, #9
+ mul r0, r1
+ strh r0, [r4, #8]
+ mov r0, #0xa
+ ldrsh r1, [r4, r0]
+ sub r0, #0xb
+ mul r0, r1
+ strh r0, [r4, #0xa]
+ mov r0, #4
+ ldrsh r1, [r4, r0]
+ sub r0, r0, #5
+ mul r0, r1
+ strh r0, [r4, #4]
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r0, #7
+ mul r0, r1
+ strh r0, [r4, #6]
+_022145C0:
+ mov r0, #1
+ str r0, [r4, #0x14]
+ mov r1, #0
+ str r1, [r4, #0x18]
+ mov r1, #6
+ ldr r2, [r5, #0x48]
+ lsl r1, r1, #6
+ str r4, [r2, r1]
+ add r1, r5, #0
+ add r1, #0x44
+ ldrh r2, [r1]
+ mov r1, #1
+ add r5, #0x44
+ bic r2, r1
+ orr r0, r2
+ strh r0, [r5]
+ ldr r0, _022145F0 ; =MOD08_022144C0
+ ldr r2, _022145F4 ; =0x00001001
+ add r1, r4, #0
+ bl FUN_0200CA44
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022145F0: .word MOD08_022144C0
+_022145F4: .word 0x00001001
+
+ thumb_func_start MOD08_022145F8
+MOD08_022145F8: ; 0x022145F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r4, [r0, #0x48]
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r1, #0x20
+ bl FUN_02016998
+ add r6, r0, #0
+ ldr r0, [r4]
+ mov r1, #0xc4
+ bl FUN_02016998
+ str r0, [r6, #0x1c]
+ mov r0, #6
+ lsl r0, r0, #6
+ str r6, [r4, r0]
+ ldr r0, [sp]
+ mov r1, #2
+ add r0, #0x44
+ ldrh r0, [r0]
+ add r2, r0, #0
+ ldr r0, [sp]
+ orr r2, r1
+ add r0, #0x44
+ strh r2, [r0]
+ mov r0, #0
+ str r0, [r6, #0x18]
+ add r0, r4, #0
+ bl MOD08_022155C4
+ bl MOD08_022189A0
+ add r5, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD08_02218998
+ add r1, r0, #0
+ ldr r2, [r4]
+ add r0, r5, #0
+ bl MOD08_022187F4
+ mov r4, #0
+ ldr r1, [r6, #0x1c]
+ ldr r7, _022146C8 ; =0x0222AAF8
+ add r1, #0xc0
+ str r0, [r1]
+ str r4, [sp, #4]
+ add r5, r4, #0
+_0221465C:
+ ldr r0, [r6, #0x1c]
+ strh r4, [r0, r5]
+ ldr r0, [r6, #0x1c]
+ add r1, r0, r5
+ ldrsh r0, [r0, r5]
+ add r0, #8
+ strh r0, [r1, #2]
+ mov r0, #0
+ ldrsh r1, [r7, r0]
+ ldr r0, [r6, #0x1c]
+ add r0, r0, r5
+ strh r1, [r0, #4]
+ ldr r0, [r6, #0x1c]
+ add r1, r0, r5
+ mov r0, #0
+ strh r0, [r1, #6]
+ add r1, r0, #0
+ bl MOD08_02218998
+ ldr r1, [r6, #0x1c]
+ mov r2, #6
+ add r1, r1, r5
+ str r0, [r1, #8]
+ ldr r0, [sp]
+ add r1, r0, #0
+ ldr r1, [r1, #0x48]
+ bl MOD08_02213C40
+ cmp r0, #1
+ bne _022146A6
+ ldr r0, [r6, #0x1c]
+ mov r1, #4
+ add r0, r0, r5
+ ldrsh r2, [r0, r1]
+ sub r1, r1, #5
+ mul r1, r2
+ strh r1, [r0, #4]
+_022146A6:
+ ldr r0, [sp, #4]
+ add r4, #8
+ add r0, r0, #1
+ add r5, #0xc
+ add r7, r7, #2
+ str r0, [sp, #4]
+ cmp r0, #0x10
+ blt _0221465C
+ mov r2, #1
+ ldr r0, _022146CC ; =MOD08_022146E4
+ add r1, r6, #0
+ lsl r2, r2, #0xc
+ bl FUN_0200CA44
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022146C8: .word 0x0222AAF8
+_022146CC: .word MOD08_022146E4
+
+ thumb_func_start MOD08_022146D0
+MOD08_022146D0: ; 0x022146D0
+ add r1, r0, #0
+ add r1, #0x44
+ ldrh r2, [r1]
+ mov r1, #2
+ add r0, #0x44
+ orr r1, r2
+ strh r1, [r0]
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022146E4
+MOD08_022146E4: ; 0x022146E4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x18]
+ ldr r4, [r5, #0x1c]
+ cmp r0, #1
+ bne _02214712
+ add r4, #0xc0
+ ldr r0, [r4]
+ bl MOD08_02218870
+ ldr r0, [r5, #0x1c]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02214712:
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl MOD08_02218894
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+_02214722:
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ mov r0, #4
+ ldrsh r0, [r4, r0]
+ add r0, r1, r0
+ strh r0, [r4, #6]
+ mov r0, #0
+ ldrsh r6, [r4, r0]
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ cmp r6, r0
+ bge _0221476A
+ ldr r0, [sp]
+ lsl r1, r6, #2
+ add r5, r0, r1
+ mov r7, #2
+_02214742:
+ ldr r1, [r4, #8]
+ mov r2, #6
+ lsl r0, r1, #0x10
+ asr r1, r1, #0x10
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ lsl r1, r1, #0x10
+ ldrsh r2, [r4, r2]
+ asr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ add r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl MOD08_02218998
+ stmia r5!, {r0}
+ ldrsh r0, [r4, r7]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _02214742
+_0221476A:
+ ldr r0, [sp, #4]
+ add r4, #0xc
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #0x10
+ blt _02214722
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221477C
+MOD08_0221477C: ; 0x0221477C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ mov r1, #2
+ add r5, r0, #0
+ bl MOD08_02215600
+ add r1, r0, #0
+ lsl r0, r4, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0
+ bl FUN_0201797C
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _022147C0
+ add r0, r5, #0
+ add r0, #0xc4
+ lsl r1, r4, #0x18
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ mov r2, #2
+ mov r3, #4
+ bl FUN_020170F4
+ b _022147E4
+_022147C0:
+ add r0, r5, #0
+ add r0, #0xc4
+ lsl r1, r4, #0x18
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ mov r2, #0
+ mov r3, #1
+ bl FUN_020170F4
+ add r0, r5, #0
+ add r0, #0xc4
+ lsl r1, r4, #0x18
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ mov r2, #2
+ mov r3, #4
+ bl FUN_020170F4
+_022147E4:
+ add r0, r5, #0
+ add r0, #0xc4
+ lsl r1, r4, #0x18
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02214822
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ mov r1, #0x61
+ add r2, r5, #0
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ add r2, #0xc4
+ ldr r1, [r5, r1]
+ ldr r2, [r2]
+ add r3, r4, #0
+ bl FUN_0200687C
+ b _0221482A
+_02214822:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02215638
+_0221482A:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ add r1, #0xc
+ ldr r1, [r5, r1]
+ add r5, #0xc4
+ ldr r2, [r5]
+ add r3, r4, #0
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02214850
+MOD08_02214850: ; 0x02214850
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #1
+ add r5, r0, #0
+ bl MOD08_02215600
+ add r1, r0, #0
+ lsl r0, r4, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02214888
+ add r0, r5, #0
+ add r0, #0xc4
+ lsl r1, r4, #0x18
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ mov r2, #2
+ mov r3, #3
+ bl FUN_020170F4
+ b _022148AC
+_02214888:
+ add r0, r5, #0
+ add r0, #0xc4
+ lsl r1, r4, #0x18
+ mov r2, #0
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl FUN_020170F4
+ add r0, r5, #0
+ add r0, #0xc4
+ lsl r1, r4, #0x18
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ mov r2, #2
+ mov r3, #3
+ bl FUN_020170F4
+_022148AC:
+ add r5, #0xc4
+ lsl r1, r4, #0x18
+ ldr r0, [r5]
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022148BC
+MOD08_022148BC: ; 0x022148BC
+ add r1, r0, #0
+ add r1, #0x44
+ ldrh r2, [r1]
+ mov r1, #1
+ add r0, #0x44
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022148D4
+MOD08_022148D4: ; 0x022148D4
+ push {r3, lr}
+ ldr r0, [r0, #0x48]
+ bl MOD08_02214524
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD08_022148E0
+MOD08_022148E0: ; 0x022148E0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4, #0x14]
+ add r5, r0, #0
+ lsl r3, r2, #2
+ ldr r2, _0221490C ; =0x0222AA64
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ bne _0221490A
+ mov r0, #0x5f
+ ldr r1, [r4, #0x48]
+ mov r2, #0
+ lsl r0, r0, #2
+ strb r2, [r1, r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0221490A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221490C: .word 0x0222AA64
+
+ thumb_func_start MOD08_02214910
+MOD08_02214910: ; 0x02214910
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_02213DA8
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ strb r0, [r4, #0xd]
+ ldr r0, [r5, #0x18]
+ ldr r2, _02214954 ; =0x0000044C
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r0, [r4, #0x14]
+ ldr r0, _02214958 ; =0xFFFF0000
+ and r0, r1
+ lsr r0, r0, #0x10
+ str r0, [r4, #0x18]
+ ldr r0, _0221495C ; =MOD08_022148E0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02214954: .word 0x0000044C
+_02214958: .word 0xFFFF0000
+_0221495C: .word MOD08_022148E0
+
+ thumb_func_start MOD08_02214960
+MOD08_02214960: ; 0x02214960
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r3, [r1]
+ add r2, r1, #4
+ str r2, [r0, #0x18]
+ ldr r1, [r2]
+ add r2, r2, #4
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ str r2, [r0, #0x18]
+ cmp r3, #3
+ bhi _022149B4
+ add r2, r3, r3
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02214986: ; jump table
+ .short _0221498E - _02214986 - 2 ; case 0
+ .short _02214998 - _02214986 - 2 ; case 1
+ .short _022149A2 - _02214986 - 2 ; case 2
+ .short _022149AC - _02214986 - 2 ; case 3
+_0221498E:
+ mov r2, #6
+ lsl r2, r2, #6
+ ldr r0, [r0, r2]
+ strh r1, [r0, #8]
+ bx lr
+_02214998:
+ mov r2, #6
+ lsl r2, r2, #6
+ ldr r0, [r0, r2]
+ strh r1, [r0, #0xa]
+ bx lr
+_022149A2:
+ mov r2, #6
+ lsl r2, r2, #6
+ ldr r0, [r0, r2]
+ strh r1, [r0, #4]
+ bx lr
+_022149AC:
+ mov r2, #6
+ lsl r2, r2, #6
+ ldr r0, [r0, r2]
+ strh r1, [r0, #4]
+_022149B4:
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022149B8
+MOD08_022149B8: ; 0x022149B8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_02213DA8
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ strb r0, [r4, #0xd]
+ ldr r0, [r5, #0x18]
+ ldr r2, _02214A00 ; =0x0000044C
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, r0, #4
+ str r1, [r5, #0x18]
+ ldr r0, [r1]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x10
+ add r1, r1, #3
+ str r1, [r4, #0x14]
+ ldr r1, _02214A04 ; =0xFFFF0000
+ and r0, r1
+ lsr r0, r0, #0x10
+ str r0, [r4, #0x18]
+ ldr r0, _02214A08 ; =MOD08_022148E0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, pc}
+ nop
+_02214A00: .word 0x0000044C
+_02214A04: .word 0xFFFF0000
+_02214A08: .word MOD08_022148E0
+
+ thumb_func_start MOD08_02214A0C
+MOD08_02214A0C: ; 0x02214A0C
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ ldrb r1, [r0, r1]
+ cmp r1, #2
+ bne _02214A24
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ mov r1, #0
+ add r0, #0x8d
+ strb r1, [r0]
+ bx lr
+_02214A24:
+ mov r1, #1
+ add r0, #0x8d
+ strb r1, [r0]
+ bx lr
+
+ thumb_func_start MOD08_02214A2C
+MOD08_02214A2C: ; 0x02214A2C
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ bne _02214A44
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ mov r1, #0
+ add r0, #0x8d
+ strb r1, [r0]
+ bx lr
+_02214A44:
+ mov r1, #1
+ add r0, #0x8d
+ strb r1, [r0]
+ bx lr
+
+ thumb_func_start MOD08_02214A4C
+MOD08_02214A4C: ; 0x02214A4C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ mov r1, #0
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r4, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ add r0, r4, #0
+ bl MOD08_022156AC
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ add r2, r5, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc4
+ ldr r2, [r2]
+ mov r0, #7
+ mov r3, #3
+ bl FUN_0200687C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD08_022156AC
+ mov r2, #0
+ str r2, [sp]
+ add r1, r0, #0
+ ldr r0, [r5]
+ add r3, r2, #0
+ str r0, [sp, #4]
+ mov r0, #7
+ bl FUN_02006930
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD08_022156AC
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ add r5, #0xc4
+ str r0, [sp, #0xc]
+ ldr r2, [r5]
+ mov r0, #7
+ mov r3, #3
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02214AC8
+MOD08_02214AC8: ; 0x02214AC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl MOD08_02213DA8
+ add r4, r0, #0
+ ldr r0, [r5, #0x18]
+ add r1, r0, #4
+ str r1, [r5, #0x18]
+ ldr r0, [r1]
+ str r0, [sp]
+ add r0, r1, #4
+ str r0, [r5, #0x18]
+ ldr r7, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r6, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02214AFA
+ str r6, [r4, #0x10]
+ b _02214B12
+_02214AFA:
+ add r0, r5, #0
+ add r5, #0xc0
+ ldr r1, [r5]
+ ldrh r1, [r1, #0x16]
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _02214B0E
+ str r7, [r4, #0x10]
+ b _02214B12
+_02214B0E:
+ ldr r0, [sp]
+ str r0, [r4, #0x10]
+_02214B12:
+ ldr r0, _02214B20 ; =MOD08_022148E0
+ ldr r2, _02214B24 ; =0x0000044C
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02214B20: .word MOD08_022148E0
+_02214B24: .word 0x0000044C
+
+ thumb_func_start MOD08_02214B28
+MOD08_02214B28: ; 0x02214B28
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02214B2C
+MOD08_02214B2C: ; 0x02214B2C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02214B30
+MOD08_02214B30: ; 0x02214B30
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02214B34
+MOD08_02214B34: ; 0x02214B34
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02214B38
+MOD08_02214B38: ; 0x02214B38
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02214B3C
+MOD08_02214B3C: ; 0x02214B3C
+ ldr r1, [r0, #0x18]
+ ldr r3, _02214B50 ; =0x020054C9
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ bx r3
+ .align 2, 0
+_02214B50: .word 0x020054C9
+
+ thumb_func_start MOD08_02214B54
+MOD08_02214B54: ; 0x02214B54
+ ldr r1, [r0, #0x18]
+ ldr r3, _02214B6C ; =0x020054F1
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0
+ bx r3
+ nop
+_02214B6C: .word 0x020054F1
+
+ thumb_func_start MOD08_02214B70
+MOD08_02214B70: ; 0x02214B70
+ push {r3, r4, r5, lr}
+ ldr r1, [r0, #0x18]
+ add r2, r1, #4
+ str r2, [r0, #0x18]
+ ldr r1, [r2]
+ lsl r1, r1, #0x10
+ lsr r4, r1, #0x10
+ add r1, r2, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ lsl r1, r2, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_020054C8
+ ldr r1, _02214BA4 ; =0x0000FFFF
+ add r0, r4, #0
+ add r2, r5, #0
+ bl FUN_02005530
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02214BA4: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02214BA8
+MOD08_02214BA8: ; 0x02214BA8
+ push {r3, lr}
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ lsl r1, r2, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ bl FUN_0200554C
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02214BC4
+MOD08_02214BC4: ; 0x02214BC4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_0221252C
+ mov r1, #0
+ mov r2, #0x3c
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #1
+ strb r0, [r4]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strh r0, [r4, #0x1a]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ str r0, [r4, #8]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strb r0, [r4, #3]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r4, #8]
+ add r0, r5, #0
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ str r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ add r0, r5, #0
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ lsl r0, r0, #0x18
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ asr r0, r0, #0x18
+ asr r1, r1, #0x18
+ asr r2, r2, #0x18
+ bl MOD08_0221540C
+ str r0, [r4, #0x10]
+ ldrh r0, [r4, #0x1a]
+ bl FUN_020054C8
+ ldrh r0, [r4, #0x1a]
+ ldr r1, _02214C60 ; =0x0000FFFF
+ ldr r2, [r4, #8]
+ bl FUN_02005530
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_0221255C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02214C60: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02214C64
+MOD08_02214C64: ; 0x02214C64
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_0221252C
+ mov r1, #0
+ mov r2, #0x3c
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #2
+ strb r0, [r4]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strh r0, [r4, #0x1a]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ str r0, [r4, #8]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strb r0, [r4, #3]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldrh r0, [r4, #0x1a]
+ bl FUN_020054C8
+ ldrh r0, [r4, #0x1a]
+ ldr r1, _02214CD8 ; =0x0000FFFF
+ ldr r2, [r4, #8]
+ bl FUN_02005530
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_0221255C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02214CD8: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02214CDC
+MOD08_02214CDC: ; 0x02214CDC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_0221252C
+ mov r1, #0
+ mov r2, #0x3c
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #1
+ strb r0, [r4]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strh r0, [r4, #0x1a]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ str r0, [r4, #8]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strb r0, [r4, #3]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r4, #8]
+ add r0, r5, #0
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ str r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ add r0, r5, #0
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ str r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ str r0, [r4, #0x10]
+ ldrh r0, [r4, #0x1a]
+ bl FUN_020054C8
+ ldrh r0, [r4, #0x1a]
+ ldr r1, _02214D7C ; =0x0000FFFF
+ ldr r2, [r4, #8]
+ bl FUN_02005530
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_0221255C
+ pop {r3, r4, r5, pc}
+ nop
+_02214D7C: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02214D80
+MOD08_02214D80: ; 0x02214D80
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_0221252C
+ mov r1, #0
+ mov r2, #0x3c
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #4
+ strb r0, [r4]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strh r0, [r4, #0x1a]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ str r0, [r4, #0x14]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strb r0, [r4, #3]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strb r0, [r4, #0x18]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldrb r0, [r4, #3]
+ strb r0, [r4, #4]
+ ldr r1, [r4, #0x14]
+ add r0, r5, #0
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_0221255C
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02214DE4
+MOD08_02214DE4: ; 0x02214DE4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_0221252C
+ mov r1, #0
+ mov r2, #0x3c
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #5
+ strb r0, [r4]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strh r0, [r4, #0x1a]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ str r0, [r4, #0x14]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r0]
+ strb r0, [r4, #3]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r4, #0x14]
+ add r0, r5, #0
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_0221255C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02214E3C
+MOD08_02214E3C: ; 0x02214E3C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02214E40
+MOD08_02214E40: ; 0x02214E40
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x90
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02214E5C
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x8d
+ strb r1, [r0]
+ ldr r0, _02214E94 ; =0x0000017D
+ mov r1, #0
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_02214E5C:
+ bl FUN_02005514
+ cmp r0, #0
+ beq _02214E80
+ ldr r0, _02214E94 ; =0x0000017D
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ ldrb r1, [r4, r0]
+ cmp r1, #0x5a
+ bls _02214E78
+ mov r1, #0
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_02214E78:
+ mov r0, #1
+ add r4, #0x8d
+ strb r0, [r4]
+ pop {r4, pc}
+_02214E80:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x8d
+ strb r1, [r0]
+ ldr r0, _02214E94 ; =0x0000017D
+ strb r1, [r4, r0]
+ ldr r0, [r4, #0x18]
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+ .align 2, 0
+_02214E94: .word 0x0000017D
+
+ thumb_func_start MOD08_02214E98
+MOD08_02214E98: ; 0x02214E98
+ push {r3, lr}
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r3, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ lsl r3, r3, #0x10
+ ldr r0, _02214EC4 ; =0x04001050
+ mov r1, #1
+ mov r2, #2
+ lsr r3, r3, #0x10
+ bl G2x_SetBlendAlpha_
+ pop {r3, pc}
+ nop
+_02214EC4: .word 0x04001050
+
+ thumb_func_start MOD08_02214EC8
+MOD08_02214EC8: ; 0x02214EC8
+ ldr r3, _02214ECC ; =MOD08_0221268C
+ bx r3
+ .align 2, 0
+_02214ECC: .word MOD08_0221268C
+
+ thumb_func_start MOD08_02214ED0
+MOD08_02214ED0: ; 0x02214ED0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02214ED4
+MOD08_02214ED4: ; 0x02214ED4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r6, r5, #0
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r7, [r0]
+ add r0, r0, #4
+ lsl r4, r1, #2
+ add r6, #0xcc
+ str r0, [r5, #0x18]
+ ldr r0, [r6, r4]
+ cmp r0, #0
+ beq _02214EFC
+ bl ErrorHandling
+_02214EFC:
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_0200BB34
+ str r0, [r6, r4]
+ ldr r0, [r6, r4]
+ cmp r0, #0
+ bne _02214F16
+ bl ErrorHandling
+_02214F16:
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, [r6, r4]
+ add r0, #0xac
+ ldr r0, [r0]
+ add r2, r7, #0
+ bl FUN_0200BBF0
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_0200BB68
+ mov r2, #0x11
+ mov r1, #0
+ lsl r2, r2, #0x10
+ bl FUN_02008D24
+ add r0, r5, #0
+ mov r1, #0
+ add r2, sp, #0
+ add r0, #0x18
+_02214F48:
+ ldr r3, [r5, #0x18]
+ add r1, r1, #1
+ ldr r3, [r3]
+ str r3, [r2]
+ ldr r3, [r0]
+ add r2, r2, #4
+ add r3, r3, #4
+ str r3, [r0]
+ cmp r1, #6
+ blt _02214F48
+ add r5, #0xc0
+ ldr r0, [r5]
+ ldr r1, [r6, r4]
+ add r0, #0xac
+ ldr r0, [r0]
+ add r2, sp, #0
+ bl FUN_0200BF60
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02214F70
+MOD08_02214F70: ; 0x02214F70
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ ldr r0, [r2, #0x18]
+ add r0, r0, #4
+ str r0, [r2, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r2, #0x18]
+ ldr r3, [r0]
+ add r0, r0, #4
+ str r0, [r2, #0x18]
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02214FB0 ; =0x00001388
+ lsl r1, r1, #2
+ add r0, r3, r0
+ str r0, [sp, #8]
+ add r0, r2, #0
+ add r1, r2, r1
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r1, #0xcc
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x15
+ bl FUN_0200C00C
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+_02214FB0: .word 0x00001388
+
+ thumb_func_start MOD08_02214FB4
+MOD08_02214FB4: ; 0x02214FB4
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+ ldr r3, [r0]
+ add r0, r0, #4
+ str r0, [r4, #0x18]
+ ldr r1, [r0]
+ add r2, r0, #4
+ str r2, [r4, #0x18]
+ ldr r0, [r2]
+ add r2, r2, #4
+ str r2, [r4, #0x18]
+ mov r2, #0x16
+ str r2, [sp]
+ str r1, [sp, #4]
+ mov r2, #0
+ str r2, [sp, #8]
+ mov r2, #1
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, _0221500C ; =0x00001388
+ add r2, r4, #0
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+ add r2, #0xc0
+ ldr r2, [r2]
+ lsl r3, r3, #2
+ add r0, r4, #0
+ add r3, r4, r3
+ add r0, #0xc8
+ add r2, #0xac
+ add r3, #0xcc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ ldr r3, [r3]
+ mov r1, #2
+ bl FUN_0200C0DC
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_0221500C: .word 0x00001388
+
+ thumb_func_start MOD08_02215010
+MOD08_02215010: ; 0x02215010
+ push {r3, lr}
+ sub sp, #8
+ add r2, r0, #0
+ ldr r0, [r2, #0x18]
+ add r0, r0, #4
+ str r0, [r2, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r2, #0x18]
+ ldr r3, [r0]
+ add r0, r0, #4
+ str r0, [r2, #0x18]
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02215050 ; =0x00001388
+ lsl r1, r1, #2
+ add r0, r3, r0
+ str r0, [sp, #4]
+ add r0, r2, #0
+ add r1, r2, r1
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r1, #0xcc
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x17
+ bl FUN_0200C124
+ add sp, #8
+ pop {r3, pc}
+ nop
+_02215050: .word 0x00001388
+
+ thumb_func_start MOD08_02215054
+MOD08_02215054: ; 0x02215054
+ push {r3, lr}
+ sub sp, #8
+ add r2, r0, #0
+ ldr r0, [r2, #0x18]
+ add r0, r0, #4
+ str r0, [r2, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r2, #0x18]
+ ldr r3, [r0]
+ add r0, r0, #4
+ str r0, [r2, #0x18]
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02215094 ; =0x00001388
+ lsl r1, r1, #2
+ add r0, r3, r0
+ str r0, [sp, #4]
+ add r0, r2, #0
+ add r1, r2, r1
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r1, #0xcc
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x18
+ bl FUN_0200C13C
+ add sp, #8
+ pop {r3, pc}
+ nop
+_02215094: .word 0x00001388
+
+ thumb_func_start MOD08_02215098
+MOD08_02215098: ; 0x02215098
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r4, r0, #0
+ ldr r1, [r4, #0x18]
+ add r1, r1, #4
+ str r1, [r4, #0x18]
+ ldr r5, [r1]
+ add r2, r1, #4
+ str r2, [r4, #0x18]
+ ldr r1, [r2]
+ str r1, [sp]
+ add r1, r2, #4
+ str r1, [r4, #0x18]
+ bl MOD08_02212460
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ add r1, sp, #0xc
+ strh r0, [r1]
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ add r2, sp, #0xc
+ strh r0, [r2, #2]
+ mov r1, #0
+ strh r1, [r2, #4]
+ strh r1, [r2, #6]
+ mov r0, #0x64
+ str r0, [sp, #0x14]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x38]
+ add r0, r4, #0
+ ldr r3, _022151A0 ; =0x00001388
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x3c]
+ add r2, sp, #0xc
+ add r0, #0x18
+_022150F0:
+ ldr r6, [r4, #0x18]
+ add r1, r1, #1
+ ldr r6, [r6]
+ add r6, r6, r3
+ str r6, [r2, #0x14]
+ ldr r6, [r0]
+ add r2, r2, #4
+ add r6, r6, #4
+ str r6, [r0]
+ cmp r1, #6
+ blt _022150F0
+ mov r0, #0x41
+ lsl r0, r0, #2
+ add r3, sp, #0xc
+ add r2, r4, r0
+ mov r6, #6
+_02215110:
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ sub r6, r6, #1
+ bne _02215110
+ ldr r0, [r3]
+ lsl r7, r5, #2
+ str r0, [r2]
+ add r0, r4, #0
+ str r0, [sp, #8]
+ add r0, #0xcc
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, [sp, #8]
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1, r7]
+ add r2, sp, #0xc
+ bl FUN_0200C154
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x18]
+ add r2, r4, #0
+ ldr r3, [r0]
+ add r0, r0, #4
+ add r2, #0x18
+ mov r6, #0
+ str r0, [r4, #0x18]
+ cmp r3, #0
+ ble _02215168
+ add r5, r4, #0
+_02215150:
+ ldr r0, [r4, #0x18]
+ add r6, r6, #1
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0x94
+ str r1, [r0]
+ ldr r0, [r2]
+ add r5, r5, #4
+ add r0, r0, #4
+ str r0, [r2]
+ cmp r6, r3
+ blt _02215150
+_02215168:
+ cmp r6, #0xa
+ bge _02215180
+ lsl r0, r6, #2
+ add r2, r4, r0
+ mov r1, #0
+_02215172:
+ add r0, r2, #0
+ add r0, #0x94
+ add r6, r6, #1
+ add r2, r2, #4
+ str r1, [r0]
+ cmp r6, #0xa
+ blt _02215172
+_02215180:
+ ldr r0, [sp]
+ bl MOD08_02218C5C
+ add r5, r0, #0
+ add r0, r4, #0
+ add r4, #0xc0
+ ldr r1, [r4]
+ ldr r2, [sp, #8]
+ add r1, #0xac
+ ldr r1, [r1]
+ ldr r2, [r2, r7]
+ ldr r3, [sp, #4]
+ blx r5
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022151A0: .word 0x00001388
+
+ thumb_func_start MOD08_022151A4
+MOD08_022151A4: ; 0x022151A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ ldr r1, [r5, #0x18]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ ldr r4, [r1]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ ldr r7, [r1]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ bl MOD08_02212460
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ add r1, sp, #0
+ strh r0, [r1]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ add r2, sp, #0
+ strh r0, [r2, #2]
+ mov r1, #0
+ strh r1, [r2, #4]
+ strh r1, [r2, #6]
+ mov r0, #0x64
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x2c]
+ add r0, r5, #0
+ ldr r3, _02215254 ; =0x00001388
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x30]
+ add r2, sp, #0
+ add r0, #0x18
+_022151FA:
+ ldr r6, [r5, #0x18]
+ add r1, r1, #1
+ ldr r6, [r6]
+ add r6, r6, r3
+ str r6, [r2, #0x14]
+ ldr r6, [r0]
+ add r2, r2, #4
+ add r6, r6, #4
+ str r6, [r0]
+ cmp r1, #6
+ blt _022151FA
+ mov r0, #0x41
+ lsl r0, r0, #2
+ add r6, sp, #0
+ add r3, r5, r0
+ mov r2, #6
+_0221521A:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0221521A
+ ldr r0, [r6]
+ lsl r1, r4, #2
+ str r0, [r3]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r1, r5, r1
+ add r0, #0xac
+ add r1, #0xcc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, sp, #0
+ bl FUN_0200C154
+ add r5, #0xdc
+ lsl r4, r7, #2
+ add r6, r0, #0
+ ldr r0, [r5, r4]
+ cmp r0, #0
+ beq _0221524E
+ bl ErrorHandling
+_0221524E:
+ str r6, [r5, r4]
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02215254: .word 0x00001388
+
+ thumb_func_start MOD08_02215258
+MOD08_02215258: ; 0x02215258
+ push {r3, r4, r5, lr}
+ ldr r1, [r0, #0x18]
+ add r5, r0, #0
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r2, [r1]
+ add r1, r1, #4
+ add r5, #0xcc
+ lsl r4, r2, #2
+ str r1, [r0, #0x18]
+ ldr r1, [r5, r4]
+ cmp r1, #0
+ beq _0221527E
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_0200C398
+_0221527E:
+ mov r0, #0
+ str r0, [r5, r4]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02215284
+MOD08_02215284: ; 0x02215284
+ ldr r1, [r0, #0x18]
+ add r1, r1, #4
+ str r1, [r0, #0x18]
+ ldr r3, [r1]
+ add r2, r1, #4
+ str r2, [r0, #0x18]
+ ldr r1, [r2]
+ add r2, r2, #4
+ str r2, [r0, #0x18]
+ lsl r2, r3, #2
+ add r2, r0, r2
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r3, _022152A4 ; =0x0200C645
+ ldr r0, [r2, r0]
+ bx r3
+ .align 2, 0
+_022152A4: .word 0x0200C645
+
+ thumb_func_start MOD08_022152A8
+MOD08_022152A8: ; 0x022152A8
+ ldr r3, _022152AC ; =0x02020C2D
+ bx r3
+ .align 2, 0
+_022152AC: .word 0x02020C2D
+
+ thumb_func_start MOD08_022152B0
+MOD08_022152B0: ; 0x022152B0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r1, [r5, #0x18]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ ldr r4, [r1]
+ add r1, r1, #4
+ str r1, [r5, #0x18]
+ ldr r1, [r1]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ bl MOD08_02215354
+ add r3, r0, #0
+ ldr r0, [r5, #0x18]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ ldr r1, [r0]
+ add r0, r0, #4
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r2, [r0]
+ mov r0, #0x46
+ lsl r0, r0, #2
+ str r1, [sp]
+ ldr r1, [r2, r0]
+ sub r0, #0xc
+ str r1, [sp, #4]
+ ldr r1, [r5]
+ str r1, [sp, #8]
+ add r1, r4, #0
+ ldrh r4, [r2, #0x14]
+ ldr r0, [r2, r0]
+ lsl r4, r4, #1
+ add r2, r2, r4
+ add r2, #0xd8
+ ldrh r2, [r2]
+ bl FUN_02069FB0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221530C
+MOD08_0221530C: ; 0x0221530C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02005670
+ cmp r0, #0
+ bne _02215330
+ ldr r0, [r4, #0x18]
+ add r1, r0, #4
+ str r1, [r4, #0x18]
+ ldr r0, [r1]
+ add r1, r1, #4
+ str r1, [r4, #0x18]
+ mov r1, #0
+ add r4, #0x8d
+ strb r1, [r4]
+ bl FUN_02005614
+ pop {r4, pc}
+_02215330:
+ mov r0, #1
+ add r4, #0x8d
+ strb r0, [r4]
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02215338
+MOD08_02215338: ; 0x02215338
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_0221533C
+MOD08_0221533C: ; 0x0221533C
+ cmp r0, #0x55
+ bls _02215344
+ mov r0, #0
+ bx lr
+_02215344:
+ lsl r1, r0, #2
+ ldr r0, _0221534C ; =0x0222AC6C
+ ldr r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_0221534C: .word 0x0222AC6C
+
+ thumb_func_start MOD08_02215350
+MOD08_02215350: ; 0x02215350
+ ldrb r0, [r0, #1]
+ bx lr
+
+ thumb_func_start MOD08_02215354
+MOD08_02215354: ; 0x02215354
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD08_02212458
+ add r7, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD08_02227470
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02227470
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _02215390
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ beq _022153F6
+_02215390:
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _022153B0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _022153B0
+ mov r0, #0
+ mvn r0, r0
+ mul r4, r0
+ b _022153F6
+_022153B0:
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _022153D4
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _022153D4
+ cmp r4, #0
+ ble _022153F6
+ mov r0, #0
+ mvn r0, r0
+ mul r4, r0
+ b _022153F6
+_022153D4:
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _022153F6
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _022153F6
+ cmp r4, #0
+ bge _022153F6
+ mov r0, #0
+ mvn r0, r0
+ mul r4, r0
+_022153F6:
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02215406
+ mov r0, #0
+ mvn r0, r0
+ mul r4, r0
+_02215406:
+ lsl r0, r4, #0x18
+ asr r0, r0, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0221540C
+MOD08_0221540C: ; 0x0221540C
+ push {r3, lr}
+ cmp r0, r1
+ bge _0221541E
+ add r0, r2, #0
+ bl abs
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ pop {r3, pc}
+_0221541E:
+ cmp r0, r1
+ ble _02215430
+ add r0, r2, #0
+ bl abs
+ neg r0, r0
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ pop {r3, pc}
+_02215430:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02215434
+MOD08_02215434: ; 0x02215434
+ push {r3, r4, r5, lr}
+ ldr r4, [r0, #0x18]
+ add r3, r0, #0
+ add r4, r4, #4
+ str r4, [r0, #0x18]
+ ldr r5, [r4]
+ add r4, r4, #4
+ add r3, #0x18
+ str r4, [r0, #0x18]
+ cmp r5, r2
+ beq _02215456
+ cmp r5, r2
+ beq _02215452
+ bl ErrorHandling
+_02215452:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02215456:
+ mov r4, #0
+ cmp r2, #0
+ ble _02215470
+_0221545C:
+ ldr r5, [r0, #0x18]
+ add r4, r4, #1
+ ldr r5, [r5]
+ str r5, [r1]
+ ldr r5, [r3]
+ add r1, r1, #4
+ add r5, r5, #4
+ str r5, [r3]
+ cmp r4, r2
+ blt _0221545C
+_02215470:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02215474
+MOD08_02215474: ; 0x02215474
+ push {r3, r4}
+ add r4, r0, #0
+ mov r0, #0x41
+ lsl r0, r0, #2
+ add r3, r1, r0
+ mov r2, #6
+_02215480:
+ ldmia r3!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r2, r2, #1
+ bne _02215480
+ ldr r0, [r3]
+ str r0, [r4]
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD08_02215490
+MOD08_02215490: ; 0x02215490
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, r0, r1
+ add r0, #0xc0
+ ldrb r0, [r0]
+ bx lr
+
+ thumb_func_start MOD08_0221549C
+MOD08_0221549C: ; 0x0221549C
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, r0, r1
+ add r0, #0xe0
+ ldrb r0, [r0]
+ bx lr
+
+ thumb_func_start MOD08_022154A8
+MOD08_022154A8: ; 0x022154A8
+ add r0, #0xc0
+ ldr r2, [r0]
+ lsl r0, r1, #1
+ add r0, r2, r0
+ add r0, #0xd8
+ ldrh r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022154B8
+MOD08_022154B8: ; 0x022154B8
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, r0, r1
+ add r0, #0xe8
+ ldrb r0, [r0]
+ bx lr
+
+ thumb_func_start MOD08_022154C4
+MOD08_022154C4: ; 0x022154C4
+ add r0, #0xc0
+ ldr r2, [r0]
+ lsl r0, r1, #2
+ add r0, r2, r0
+ add r0, #0xec
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022154D4
+MOD08_022154D4: ; 0x022154D4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r4, r1, #2
+ add r0, r0, r4
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _022154EC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_022154EC:
+ bl FUN_02008268
+ cmp r0, #0
+ beq _02215500
+ add r5, #0xc0
+ ldr r0, [r5]
+ add r0, r0, r4
+ add r0, #0xc4
+ ldr r0, [r0]
+ pop {r3, r4, r5, pc}
+_02215500:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02215504
+MOD08_02215504: ; 0x02215504
+ add r0, #0xc8
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_0221550C
+MOD08_0221550C: ; 0x0221550C
+ add r0, #0xc0
+ ldr r2, [r0]
+ lsl r0, r1, #2
+ add r0, r2, r0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD08_0221551C
+MOD08_0221551C: ; 0x0221551C
+ add r0, #0xc0
+ ldr r2, [r0]
+ lsl r0, r1, #2
+ add r0, r2, r0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD08_0221552C
+MOD08_0221552C: ; 0x0221552C
+ add r0, #0xc0
+ ldr r2, [r0]
+ lsl r0, r1, #2
+ add r0, r2, r0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start MOD08_0221553C
+MOD08_0221553C: ; 0x0221553C
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r0, #0xd4
+ ldr r1, [r0]
+ mov r0, #2
+ tst r0, r1
+ beq _0221554E
+ mov r0, #1
+ bx lr
+_0221554E:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02215554
+MOD08_02215554: ; 0x02215554
+ add r0, #0xc0
+ ldr r2, [r0]
+ lsl r0, r1, #2
+ add r0, r2, r0
+ add r0, #0xfc
+ ldr r1, [r0]
+ ldr r0, _02215570 ; =0x200400C0
+ tst r0, r1
+ beq _0221556A
+ mov r0, #1
+ bx lr
+_0221556A:
+ mov r0, #0
+ bx lr
+ nop
+_02215570: .word 0x200400C0
+
+ thumb_func_start MOD08_02215574
+MOD08_02215574: ; 0x02215574
+ push {r3, lr}
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02215582
+ mov r0, #2
+ pop {r3, pc}
+_02215582:
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02215588
+MOD08_02215588: ; 0x02215588
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ ldr r3, _022155C0 ; =0x0222AAAC
+ add r2, sp, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _022155B4
+ add r0, sp, #0xc
+ lsl r1, r4, #2
+ add sp, #0x18
+ ldr r0, [r0, r1]
+ pop {r3, r4, r5, pc}
+_022155B4:
+ lsl r1, r4, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_022155C0: .word 0x0222AAAC
+
+ thumb_func_start MOD08_022155C4
+MOD08_022155C4: ; 0x022155C4
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ ldr r3, _022155FC ; =0x0222AA94
+ add r2, sp, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _022155F0
+ add r0, sp, #0xc
+ lsl r1, r4, #2
+ add sp, #0x18
+ ldr r0, [r0, r1]
+ pop {r3, r4, r5, pc}
+_022155F0:
+ lsl r1, r4, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_022155FC: .word 0x0222AA94
+
+ thumb_func_start MOD08_02215600
+MOD08_02215600: ; 0x02215600
+ push {r3, lr}
+ cmp r1, #3
+ bhi _02215636
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02215612: ; jump table
+ .short _0221561A - _02215612 - 2 ; case 0
+ .short _02215622 - _02215612 - 2 ; case 1
+ .short _0221562A - _02215612 - 2 ; case 2
+ .short _02215632 - _02215612 - 2 ; case 3
+_0221561A:
+ bl MOD08_02212004
+ mov r0, #0
+ pop {r3, pc}
+_02215622:
+ bl MOD08_02212004
+ mov r0, #1
+ pop {r3, pc}
+_0221562A:
+ bl MOD08_02212004
+ mov r0, #3
+ pop {r3, pc}
+_02215632:
+ bl MOD08_02215574
+_02215636:
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02215638
+MOD08_02215638: ; 0x02215638
+ push {r3, lr}
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r0, r2, #0
+ add r2, #0xc0
+ ldr r3, [r2]
+ mov r2, #0x11
+ add r0, #0xc4
+ lsl r2, r2, #4
+ lsl r1, r1, #0x18
+ ldr r2, [r3, r2]
+ mov r3, #1
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ lsl r3, r3, #0x10
+ bl FUN_02017E14
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02215660
+MOD08_02215660: ; 0x02215660
+ push {r3, lr}
+ mov r2, #2
+ add r1, r0, #0
+ lsl r2, r2, #8
+ str r2, [sp]
+ add r1, #0xc0
+ add r0, #0xc8
+ ldr r1, [r1]
+ sub r2, #0xec
+ ldr r1, [r1, r2]
+ mov r2, #0
+ ldr r0, [r0]
+ add r3, r2, #0
+ bl FUN_02003054
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02215680
+MOD08_02215680: ; 0x02215680
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_022132C4
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _022156A8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_022154A8
+ bl MOD08_0222A6C8
+ cmp r0, #1
+ bne _022156A8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022156A8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_022156AC
+MOD08_022156AC: ; 0x022156AC
+ mov r2, #0x14
+ mul r2, r0
+ ldr r0, _022156BC ; =0x0222ADC0
+ lsl r1, r1, #2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ bx lr
+ nop
+_022156BC: .word 0x0222ADC0
+
+ thumb_func_start MOD08_022156C0
+MOD08_022156C0: ; 0x022156C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x90
+ ldr r3, _02215900 ; =0x0222AA4C
+ add r6, r2, #0
+ add r2, sp, #0x78
+ add r7, r0, #0
+ add r5, r1, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r5, #0
+ mov r1, #0x58
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ add r0, r7, #0
+ bl FUN_02230078
+ str r0, [r4, #8]
+ add r0, r7, #0
+ bl FUN_02230080
+ str r0, [r4, #0xc]
+ add r0, r7, #0
+ bl FUN_022300CC
+ str r0, [r4, #0x10]
+ mov r6, #0
+ add r5, r4, #0
+_02215704:
+ mov r0, #0
+ str r0, [r5, #0x24]
+ add r0, r7, #0
+ add r1, r6, #0
+ bl FUN_022312D0
+ str r0, [r5, #0x34]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02215704
+ add r1, r4, #0
+ add r0, r7, #0
+ add r1, #0x44
+ bl FUN_02231504
+ add r1, r4, #0
+ add r0, r7, #0
+ add r1, #0x48
+ bl FUN_02231534
+ mov r6, #0
+ add r7, r6, #0
+_02215732:
+ ldr r0, [r4, #4]
+ cmp r6, r0
+ beq _0221573C
+ cmp r0, #0xff
+ bne _0221579E
+_0221573C:
+ ldr r1, _02215904 ; =0x0000D903
+ str r7, [sp]
+ add r2, r6, r1
+ ldr r1, _02215908 ; =0x00001388
+ mov r3, #0x28
+ mul r1, r0
+ mov r0, #1
+ add r5, r2, r1
+ str r0, [sp, #4]
+ str r5, [sp, #8]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ mov r2, #0x1b
+ bl FUN_0200C00C
+ mov r0, #0x1b
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r5, [sp, #0x14]
+ ldr r0, [r4, #0x10]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0xc]
+ mov r1, #2
+ bl FUN_0200C0DC
+ mov r0, #0
+ str r0, [sp]
+ str r5, [sp, #4]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ mov r2, #0x1b
+ mov r3, #0x29
+ bl FUN_0200C124
+ mov r0, #0
+ str r0, [sp]
+ str r5, [sp, #4]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ mov r2, #0x1b
+ mov r3, #0x2a
+ bl FUN_0200C13C
+_0221579E:
+ add r6, r6, #1
+ cmp r6, #4
+ blt _02215732
+ mov r0, #0
+ str r0, [sp, #0x24]
+ add r7, r4, #0
+_022157AA:
+ ldr r1, [r4, #4]
+ ldr r0, [sp, #0x24]
+ cmp r0, r1
+ beq _022157B8
+ cmp r1, #0xff
+ beq _022157B8
+ b _022158EC
+_022157B8:
+ ldr r2, _02215904 ; =0x0000D903
+ ldr r0, [sp, #0x24]
+ add r3, r1, #0
+ add r0, r0, r2
+ ldr r2, _02215908 ; =0x00001388
+ mul r3, r2
+ add r1, r0, r3
+ str r1, [r7, #0x14]
+ ldr r1, [r4, #4]
+ add r3, r1, #0
+ mul r3, r2
+ add r1, r0, r3
+ str r1, [sp, #0x60]
+ ldr r1, [r4, #4]
+ add r3, r1, #0
+ mul r3, r2
+ add r1, r0, r3
+ str r1, [sp, #0x64]
+ ldr r1, [r4, #4]
+ add r3, r1, #0
+ mul r3, r2
+ add r1, r0, r3
+ str r1, [sp, #0x68]
+ ldr r1, [r4, #4]
+ mul r2, r1
+ mov r1, #0
+ add r0, r0, r2
+ str r0, [sp, #0x6c]
+ str r1, [sp, #0x70]
+ str r1, [sp, #0x74]
+ ldr r2, [r7, #0x34]
+ ldr r5, [r7, #0x48]
+ ldr r0, [r2, #4]
+ cmp r5, #0
+ str r0, [sp, #0x20]
+ ldr r0, [r2, #8]
+ str r0, [sp, #0x1c]
+ ldr r0, [r2]
+ str r0, [sp, #0x18]
+ beq _022158EC
+ add r0, r5, #0
+ bl FUN_0200782C
+ str r0, [sp, #0x28]
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ add r0, r5, #0
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r2, r6, r0
+ ldr r0, [sp, #0x28]
+ add r1, sp, #0x2c
+ strh r0, [r1]
+ strh r2, [r1, #2]
+ mov r0, #0
+ strh r0, [r1, #4]
+ strh r0, [r1, #6]
+ ldr r1, [sp, #0x24]
+ add r3, sp, #0x2c
+ add r1, r4, r1
+ add r1, #0x44
+ ldrb r1, [r1]
+ lsl r2, r1, #2
+ add r1, sp, #0x78
+ ldr r1, [r1, r2]
+ str r0, [sp, #0x38]
+ str r1, [sp, #0x34]
+ mov r1, #1
+ str r1, [sp, #0x3c]
+ str r1, [sp, #0x58]
+ str r0, [sp, #0x5c]
+ add r2, sp, #0x60
+_02215852:
+ ldr r1, [r2]
+ add r0, r0, #1
+ str r1, [r3, #0x14]
+ add r2, r2, #4
+ add r3, r3, #4
+ cmp r0, #6
+ blt _02215852
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ add r2, sp, #0x2c
+ bl FUN_0200C154
+ add r6, r0, #0
+ bl FUN_0200C5A8
+ str r6, [r7, #0x24]
+ cmp r5, #0
+ bne _02215880
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0200C644
+ b _022158A8
+_02215880:
+ add r0, r5, #0
+ bl FUN_02008268
+ cmp r0, #0
+ bne _02215894
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0200C644
+ b _022158A8
+_02215894:
+ add r0, r5, #0
+ mov r1, #6
+ bl FUN_0200782C
+ cmp r0, #1
+ bne _022158A8
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0200C644
+_022158A8:
+ cmp r5, #0
+ beq _022158C2
+ ldr r0, [r6]
+ bl FUN_02020350
+ add r1, r0, #0
+ mov r3, #0x32
+ ldr r1, [r1, #4]
+ ldr r2, [sp, #0x18]
+ mov r0, #0x13
+ lsl r3, r3, #6
+ bl FUN_0201C2C8
+_022158C2:
+ cmp r5, #0
+ beq _022158EC
+ ldr r0, [r6]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ mov r1, #2
+ str r1, [sp]
+ mov r1, #0x20
+ lsl r0, r0, #0x14
+ str r1, [sp, #4]
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #0x20]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [r4]
+ bl FUN_020030E8
+_022158EC:
+ ldr r0, [sp, #0x24]
+ add r7, r7, #4
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ cmp r0, #4
+ bge _022158FA
+ b _022157AA
+_022158FA:
+ add r0, r4, #0
+ add sp, #0x90
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02215900: .word 0x0222AA4C
+_02215904: .word 0x0000D903
+_02215908: .word 0x00001388
+
+ thumb_func_start MOD08_0221590C
+MOD08_0221590C: ; 0x0221590C
+ ldr r3, _02215914 ; =MOD08_022156C0
+ mov r2, #0xff
+ bx r3
+ nop
+_02215914: .word MOD08_022156C0
+
+ thumb_func_start MOD08_02215918
+MOD08_02215918: ; 0x02215918
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+_02215920:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _0221593C
+ ldr r0, [r5, #0xc]
+ ldr r1, [r4, #0x14]
+ bl FUN_0200C358
+ ldr r0, [r5, #0xc]
+ ldr r1, [r4, #0x14]
+ bl FUN_0200C368
+ ldr r0, [r4, #0x24]
+ bl FUN_0200C3DC
+_0221593C:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02215920
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_0221594C
+MOD08_0221594C: ; 0x0221594C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r4, #0
+ add r5, r6, #0
+_02215956:
+ cmp r4, r7
+ bne _02215976
+ ldr r0, [r5, #0x24]
+ cmp r0, #0
+ beq _02215976
+ ldr r0, [r6, #0xc]
+ ldr r1, [r5, #0x14]
+ bl FUN_0200C358
+ ldr r0, [r6, #0xc]
+ ldr r1, [r5, #0x14]
+ bl FUN_0200C368
+ ldr r0, [r5, #0x24]
+ bl FUN_0200C3DC
+_02215976:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02215956
+ add r0, r6, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02215988
+MOD08_02215988: ; 0x02215988
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02215992
+ bl ErrorHandling
+_02215992:
+ ldr r0, [r4, #4]
+ add r0, r4, r0
+ add r0, #0x44
+ ldrb r0, [r0]
+ pop {r4, pc}
+
+ thumb_func_start MOD08_0221599C
+MOD08_0221599C: ; 0x0221599C
+ push {r4, lr}
+ sub sp, #8
+ mov r1, #0x12
+ lsl r1, r1, #0xa
+ add r4, r0, #0
+ bl FUN_02016998
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r3, #0x12
+ ldr r0, _022159DC ; =MOD08_02215A68
+ ldr r1, _022159E0 ; =MOD08_02215A84
+ lsl r3, r3, #0xa
+ str r4, [sp, #4]
+ bl FUN_02012CDC
+ add r4, r0, #0
+ bl FUN_0201343C
+ add r2, r0, #0
+ beq _022159D4
+ mov r0, #1
+ mov r1, #0xe1
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+_022159D4:
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, pc}
+ nop
+_022159DC: .word MOD08_02215A68
+_022159E0: .word MOD08_02215A84
+
+ thumb_func_start MOD08_022159E4
+MOD08_022159E4: ; 0x022159E4
+ push {r4, lr}
+ sub sp, #8
+ mov r1, #0x42
+ lsl r1, r1, #8
+ add r4, r0, #0
+ bl FUN_02016998
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r3, #0x42
+ ldr r0, _02215A24 ; =MOD08_02215A68
+ ldr r1, _02215A28 ; =MOD08_02215A84
+ lsl r3, r3, #8
+ str r4, [sp, #4]
+ bl FUN_02012CDC
+ add r4, r0, #0
+ bl FUN_0201343C
+ add r2, r0, #0
+ beq _02215A1C
+ mov r0, #1
+ mov r1, #0xe1
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+_02215A1C:
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, pc}
+ nop
+_02215A24: .word MOD08_02215A68
+_02215A28: .word MOD08_02215A84
+
+ thumb_func_start MOD08_02215A2C
+MOD08_02215A2C: ; 0x02215A2C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_020133E8
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_02012DE4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02215A44
+MOD08_02215A44: ; 0x02215A44
+ push {r3, lr}
+ bl FUN_020222AC
+ bl FUN_02013348
+ cmp r0, #0
+ beq _02215A66
+ bl FUN_02013364
+ cmp r0, #0
+ ble _02215A62
+ bl FUN_020222AC
+ bl FUN_020B02C8
+_02215A62:
+ bl FUN_02013388
+_02215A66:
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02215A68
+MOD08_02215A68: ; 0x02215A68
+ push {r4, lr}
+ ldr r3, _02215A80 ; =0x021064B8
+ mov r2, #0
+ ldr r3, [r3]
+ blx r3
+ add r4, r0, #0
+ bl FUN_0201327C
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_02215A80: .word 0x021064B8
+
+ thumb_func_start MOD08_02215A84
+MOD08_02215A84: ; 0x02215A84
+ push {r4, lr}
+ ldr r3, _02215A9C ; =0x021064C0
+ mov r2, #0
+ ldr r3, [r3]
+ blx r3
+ add r4, r0, #0
+ bl FUN_020132BC
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_02215A9C: .word 0x021064C0
+
+ thumb_func_start MOD08_02215AA0
+MOD08_02215AA0: ; 0x02215AA0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02215AA4
+MOD08_02215AA4: ; 0x02215AA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ bl MOD08_0221599C
+ add r4, r0, #0
+ mov r0, #0x1d
+ add r1, r6, #0
+ add r2, r5, #0
+ bl FUN_0201318C
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #0xa
+ add r3, r7, #0
+ bl FUN_02013194
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02215ACC
+MOD08_02215ACC: ; 0x02215ACC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ bl MOD08_0221599C
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ bl FUN_0201318C
+ add r1, r0, #0
+ ldr r3, [sp]
+ add r0, r4, #0
+ mov r2, #0xa
+ bl FUN_02013194
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02215AF8
+MOD08_02215AF8: ; 0x02215AF8
+ ldr r3, _02215AFC ; =0x02006705
+ bx r3
+ .align 2, 0
+_02215AFC: .word 0x02006705
+
+ thumb_func_start MOD08_02215B00
+MOD08_02215B00: ; 0x02215B00
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r7, r2, #0
+ add r0, r5, #0
+ str r3, [sp]
+ bl MOD08_022159E4
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ bl MOD08_02215AF8
+ add r1, r0, #0
+ ldr r3, [sp]
+ add r0, r4, #0
+ mov r2, #0xa
+ bl FUN_02013194
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02215B2C
+MOD08_02215B2C: ; 0x02215B2C
+ push {r4, lr}
+ lsl r4, r2, #2
+ ldr r2, _02215B3C ; =0x0222B248
+ ldr r2, [r2, r4]
+ bl FUN_020133AC
+ pop {r4, pc}
+ nop
+_02215B3C: .word 0x0222B248
+
+ thumb_func_start MOD08_02215B40
+MOD08_02215B40: ; 0x02215B40
+ ldr r3, _02215B44 ; =MOD08_02215A2C
+ bx r3
+ .align 2, 0
+_02215B44: .word MOD08_02215A2C
+
+ thumb_func_start MOD08_02215B48
+MOD08_02215B48: ; 0x02215B48
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r2, #0
+ mov r4, #1
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_02227468
+ cmp r5, #5
+ bhi _02215B84
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02215B6E: ; jump table
+ .short _02215B84 - _02215B6E - 2 ; case 0
+ .short _02215B7A - _02215B6E - 2 ; case 1
+ .short _02215B84 - _02215B6E - 2 ; case 2
+ .short _02215B7E - _02215B6E - 2 ; case 3
+ .short _02215B84 - _02215B6E - 2 ; case 4
+ .short _02215B82 - _02215B6E - 2 ; case 5
+_02215B7A:
+ sub r4, r4, #2
+ b _02215B84
+_02215B7E:
+ sub r4, r4, #2
+ b _02215B84
+_02215B82:
+ sub r4, r4, #2
+_02215B84:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02215B88
+MOD08_02215B88: ; 0x02215B88
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02215B8C
+MOD08_02215B8C: ; 0x02215B8C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ bl FUN_0201341C
+ add r4, r0, #0
+ bl MOD08_02212458
+ add r0, r4, #0
+ bl MOD08_02212460
+ add r0, r4, #0
+ bl MOD08_02212468
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _02215BC2
+ add r0, r4, #0
+ mov r1, #1
+ add r2, sp, #0x28
+ bl MOD08_0222771C
+ b _02215BFA
+_02215BC2:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD08_02227468
+ str r0, [sp]
+ bl MOD08_02227524
+ str r0, [sp, #4]
+ add r0, r6, #0
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r4, r0, #0
+ ldr r0, [sp, #4]
+ add r1, sp, #0x28
+ add r2, r4, #0
+ add r3, r7, #0
+ bl MOD08_0222765C
+ ldr r0, [sp]
+ add r1, sp, #0x1c
+ add r2, r4, #0
+ add r3, r7, #0
+ bl MOD08_0222765C
+_02215BFA:
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0x28]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0x2c]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0x30]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x30]
+ mov r0, #1
+ add r1, sp, #0x10
+ bl MOD08_02227974
+ add r0, r6, #0
+ bl FUN_0201343C
+ add r4, r0, #0
+ add r0, sp, #8
+ add r1, r4, #0
+ bl FUN_0201F014
+ add r0, sp, #8
+ add r1, r4, #0
+ bl FUN_0201EF90
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02215C44
+MOD08_02215C44: ; 0x02215C44
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ bl FUN_0201341C
+ add r4, r0, #0
+ bl MOD08_02212460
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212468
+ add r7, r0, #0
+ add r0, r4, #0
+ mov r1, #0
+ add r2, sp, #0xc
+ bl MOD08_0222771C
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0xc]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0x10]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0x14]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x30]
+ add r0, r6, #0
+ add r1, sp, #0
+ bl MOD08_02227974
+ add r0, r7, #0
+ add r1, sp, #0
+ bl FUN_020133FC
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02215CA0
+MOD08_02215CA0: ; 0x02215CA0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl FUN_0201341C
+ add r5, r0, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, sp, #0
+ bl MOD08_0222771C
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r4, #0x2c]
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r4, #0x30]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02215CE4
+MOD08_02215CE4: ; 0x02215CE4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl FUN_0201341C
+ add r5, r0, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, sp, #0
+ bl MOD08_0222771C
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r4, #0x2c]
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r4, #0x30]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02215D28
+MOD08_02215D28: ; 0x02215D28
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl FUN_0201341C
+ add r4, r0, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212460
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, sp, #0
+ bl MOD08_0222771C
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02215D74
+MOD08_02215D74: ; 0x02215D74
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl FUN_0201341C
+ add r6, r0, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ beq _02215DA0
+ mov r4, #1
+ b _02215DA2
+_02215DA0:
+ mov r4, #0
+_02215DA2:
+ add r0, r6, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r4, #0
+ add r1, sp, #0
+ add r3, r7, #0
+ bl MOD08_0222765C
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02215DDC
+MOD08_02215DDC: ; 0x02215DDC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl FUN_0201341C
+ add r6, r0, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ beq _02215E08
+ mov r4, #1
+ b _02215E0A
+_02215E08:
+ mov r4, #0
+_02215E0A:
+ add r0, r6, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r4, #0
+ add r1, sp, #0
+ add r3, r7, #0
+ bl MOD08_0222765C
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02215E44
+MOD08_02215E44: ; 0x02215E44
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x9c
+ add r5, r0, #0
+ add r1, sp, #0
+ mov r0, #0
+ strh r0, [r1]
+ strh r0, [r1, #2]
+ strh r0, [r1, #4]
+ strh r0, [r1, #6]
+ strh r0, [r1, #8]
+ strh r0, [r1, #0xa]
+ ldr r3, _02215EE4 ; =0x0222B2A4
+ add r2, sp, #0x54
+ mov r1, #0x24
+_02215E60:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _02215E60
+ ldr r3, _02215EE8 ; =0x0222B2EC
+ add r2, sp, #0xc
+ mov r1, #0x24
+_02215E72:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _02215E72
+ bl FUN_0201341C
+ add r4, r0, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212460
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD08_02227468
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD08_02227468
+ lsl r2, r0, #1
+ mov r0, #0xc
+ add r1, r6, #0
+ mul r1, r0
+ add r0, sp, #0x54
+ add r0, r0, r1
+ ldrsh r4, [r2, r0]
+ mov r3, #0xac
+ add r0, r4, #0
+ ldr r4, [r5, #0x20]
+ mul r0, r3
+ ldr r4, [r4]
+ ldr r4, [r4, #4]
+ add r0, r0, r4
+ str r0, [r5, #0x28]
+ add r0, sp, #0xc
+ add r0, r0, r1
+ ldrsh r0, [r2, r0]
+ add r1, r0, #0
+ ldr r0, [r5, #0x20]
+ mul r1, r3
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ str r0, [r5, #0x30]
+ add sp, #0x9c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02215EE4: .word 0x0222B2A4
+_02215EE8: .word 0x0222B2EC
+
+ thumb_func_start MOD08_02215EEC
+MOD08_02215EEC: ; 0x02215EEC
+ push {r3, r4}
+ add r3, r2, #0
+ add r3, #8
+ cmp r0, #7
+ bhi _02215F7C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02215F02: ; jump table
+ .short _02215F7C - _02215F02 - 2 ; case 0
+ .short _02215F12 - _02215F02 - 2 ; case 1
+ .short _02215F1C - _02215F02 - 2 ; case 2
+ .short _02215F26 - _02215F02 - 2 ; case 3
+ .short _02215F30 - _02215F02 - 2 ; case 4
+ .short _02215F42 - _02215F02 - 2 ; case 5
+ .short _02215F54 - _02215F02 - 2 ; case 6
+ .short _02215F66 - _02215F02 - 2 ; case 7
+_02215F12:
+ ldr r0, [r2]
+ mul r1, r0
+ str r1, [r2]
+ pop {r3, r4}
+ bx lr
+_02215F1C:
+ ldr r0, [r2, #4]
+ mul r1, r0
+ str r1, [r2, #4]
+ pop {r3, r4}
+ bx lr
+_02215F26:
+ ldr r0, [r3]
+ mul r1, r0
+ str r1, [r3]
+ pop {r3, r4}
+ bx lr
+_02215F30:
+ ldr r0, [r2]
+ add r3, r0, #0
+ mul r3, r1
+ str r3, [r2]
+ ldr r0, [r2, #4]
+ mul r1, r0
+ str r1, [r2, #4]
+ pop {r3, r4}
+ bx lr
+_02215F42:
+ ldr r0, [r2]
+ add r4, r0, #0
+ mul r4, r1
+ str r4, [r2]
+ ldr r0, [r3]
+ mul r1, r0
+ str r1, [r3]
+ pop {r3, r4}
+ bx lr
+_02215F54:
+ ldr r0, [r2, #4]
+ add r4, r0, #0
+ mul r4, r1
+ str r4, [r2, #4]
+ ldr r0, [r3]
+ mul r1, r0
+ str r1, [r3]
+ pop {r3, r4}
+ bx lr
+_02215F66:
+ ldr r0, [r2]
+ add r4, r0, #0
+ mul r4, r1
+ str r4, [r2]
+ ldr r0, [r2, #4]
+ add r4, r0, #0
+ mul r4, r1
+ str r4, [r2, #4]
+ ldr r0, [r3]
+ mul r1, r0
+ str r1, [r3]
+_02215F7C:
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD08_02215F80
+MOD08_02215F80: ; 0x02215F80
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r2, #0
+ add r5, r1, #0
+ add r1, r3, #0
+ add r7, sp, #0x10
+ mov r2, #0
+ str r2, [r7]
+ ldr r3, [sp, #0x30]
+ str r2, [r7, #4]
+ ldr r4, [sp, #0x38]
+ str r2, [r7, #8]
+ cmp r3, #5
+ bhi _0221602A
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_02215FA8: ; jump table
+ .short _0221602A - _02215FA8 - 2 ; case 0
+ .short _02215FB4 - _02215FA8 - 2 ; case 1
+ .short _02215FDA - _02215FA8 - 2 ; case 2
+ .short _02215FEE - _02215FA8 - 2 ; case 3
+ .short _02215FF6 - _02215FA8 - 2 ; case 4
+ .short _02216000 - _02215FA8 - 2 ; case 5
+_02215FB4:
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02013628
+ add r1, sp, #0x20
+ mov r0, #0x14
+ ldrsb r0, [r1, r0]
+ ldr r1, [sp, #0x10]
+ add r2, r1, #0
+ mul r2, r0
+ ldr r1, [sp, #0x14]
+ str r2, [sp, #0x10]
+ add r2, r1, #0
+ mul r2, r0
+ ldr r1, [sp, #0x18]
+ str r2, [sp, #0x14]
+ mul r0, r1
+ str r0, [sp, #0x18]
+ b _0221602A
+_02215FDA:
+ str r2, [sp, #0x10]
+ add r1, sp, #0x20
+ mov r0, #0x14
+ ldrsb r1, [r1, r0]
+ mov r0, #0x32
+ lsl r0, r0, #6
+ mul r0, r1
+ str r0, [sp, #0x14]
+ str r2, [sp, #0x18]
+ b _0221602A
+_02215FEE:
+ add r2, r7, #0
+ bl MOD08_0222771C
+ b _0221602A
+_02215FF6:
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD08_0222771C
+ b _0221602A
+_02216000:
+ add r1, sp, #0
+ str r2, [r1]
+ str r2, [r1, #4]
+ str r2, [r1, #8]
+ str r2, [r1, #0xc]
+ mov r2, #4
+ bl MOD08_02215434
+ ldr r0, [sp]
+ add r2, sp, #0x20
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #4]
+ mov r1, #0x14
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #8]
+ str r0, [sp, #0x18]
+ ldrsb r1, [r2, r1]
+ ldr r0, [sp, #0xc]
+ add r2, r7, #0
+ bl MOD08_02215EEC
+_0221602A:
+ ldr r1, [sp, #0x10]
+ ldr r0, [r4]
+ sub r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ ldr r0, [r4, #4]
+ sub r0, r1, r0
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r0, [r4, #8]
+ sub r0, r1, r0
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ add r1, sp, #0x10
+ bl FUN_02013610
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02216050
+MOD08_02216050: ; 0x02216050
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r2, #0
+ add r5, r1, #0
+ add r1, r3, #0
+ add r7, sp, #0x10
+ mov r2, #0
+ str r2, [r7]
+ ldr r3, [sp, #0x30]
+ str r2, [r7, #4]
+ ldr r4, [sp, #0x38]
+ str r2, [r7, #8]
+ cmp r3, #5
+ bhi _022160FA
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_02216078: ; jump table
+ .short _022160FA - _02216078 - 2 ; case 0
+ .short _02216084 - _02216078 - 2 ; case 1
+ .short _022160AA - _02216078 - 2 ; case 2
+ .short _022160BE - _02216078 - 2 ; case 3
+ .short _022160C6 - _02216078 - 2 ; case 4
+ .short _022160D0 - _02216078 - 2 ; case 5
+_02216084:
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02013548
+ add r1, sp, #0x20
+ mov r0, #0x14
+ ldrsb r0, [r1, r0]
+ ldr r1, [sp, #0x10]
+ add r2, r1, #0
+ mul r2, r0
+ ldr r1, [sp, #0x14]
+ str r2, [sp, #0x10]
+ add r2, r1, #0
+ mul r2, r0
+ ldr r1, [sp, #0x18]
+ str r2, [sp, #0x14]
+ mul r0, r1
+ str r0, [sp, #0x18]
+ b _022160FA
+_022160AA:
+ str r2, [sp, #0x10]
+ add r1, sp, #0x20
+ mov r0, #0x14
+ ldrsb r1, [r1, r0]
+ mov r0, #0x32
+ lsl r0, r0, #6
+ mul r0, r1
+ str r0, [sp, #0x14]
+ str r2, [sp, #0x18]
+ b _022160FA
+_022160BE:
+ add r2, r7, #0
+ bl MOD08_0222771C
+ b _022160FA
+_022160C6:
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD08_0222771C
+ b _022160FA
+_022160D0:
+ add r1, sp, #0
+ str r2, [r1]
+ str r2, [r1, #4]
+ str r2, [r1, #8]
+ str r2, [r1, #0xc]
+ mov r2, #4
+ bl MOD08_02215434
+ ldr r0, [sp]
+ add r2, sp, #0x20
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #4]
+ mov r1, #0x14
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #8]
+ str r0, [sp, #0x18]
+ ldrsb r1, [r2, r1]
+ ldr r0, [sp, #0xc]
+ add r2, r7, #0
+ bl MOD08_02215EEC
+_022160FA:
+ ldr r1, [sp, #0x10]
+ ldr r0, [r4]
+ sub r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ ldr r0, [r4, #4]
+ sub r0, r1, r0
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r0, [r4, #8]
+ sub r0, r1, r0
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ add r1, sp, #0x10
+ bl FUN_02013530
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02216120
+MOD08_02216120: ; 0x02216120
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x94
+ add r6, r0, #0
+ add r7, r2, #0
+ add r4, r1, #0
+ str r3, [sp, #0xc]
+ bl MOD08_02212468
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_02227468
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0xc]
+ add r0, r6, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r6, #0
+ add r1, sp, #0x7c
+ mov r2, #3
+ bl MOD08_02215434
+ add r0, r6, #0
+ add r1, sp, #0x70
+ mov r2, #3
+ bl MOD08_02215434
+ add r0, r6, #0
+ add r1, sp, #0x58
+ mov r2, #3
+ bl MOD08_02215434
+ add r0, r6, #0
+ add r1, sp, #0x64
+ mov r2, #3
+ bl MOD08_02215434
+ add r0, r6, #0
+ add r1, sp, #0x40
+ mov r2, #3
+ bl MOD08_02215434
+ add r0, r6, #0
+ add r1, sp, #0x34
+ mov r2, #3
+ bl MOD08_02215434
+ add r0, r6, #0
+ add r1, sp, #0x4c
+ mov r2, #3
+ bl MOD08_02215434
+ ldr r0, [sp, #0x10]
+ cmp r0, #5
+ bhi _022161A8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221619C: ; jump table
+ .short _022161A8 - _0221619C - 2 ; case 0
+ .short _022161B8 - _0221619C - 2 ; case 1
+ .short _022161CE - _0221619C - 2 ; case 2
+ .short _02216202 - _0221619C - 2 ; case 3
+ .short _0221624C - _0221619C - 2 ; case 4
+ .short _02216280 - _0221619C - 2 ; case 5
+_022161A8:
+ ldr r1, [sp, #0x7c]
+ add r0, sp, #0x14
+ strh r1, [r0]
+ ldr r1, [sp, #0x80]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x84]
+ strh r1, [r0, #4]
+ b _022162C8
+_022161B8:
+ ldr r0, [sp, #0x7c]
+ neg r1, r0
+ add r0, sp, #0x14
+ strh r1, [r0]
+ ldr r1, [sp, #0x80]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x84]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022162C8
+_022161CE:
+ cmp r5, #3
+ add r0, sp, #0x14
+ bne _022161E2
+ ldr r1, [sp, #0x70]
+ strh r1, [r0]
+ ldr r1, [sp, #0x74]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x78]
+ strh r1, [r0, #4]
+ b _022162C8
+_022161E2:
+ cmp r5, #5
+ bne _022161F4
+ ldr r1, [sp, #0x58]
+ strh r1, [r0]
+ ldr r1, [sp, #0x5c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x60]
+ strh r1, [r0, #4]
+ b _022162C8
+_022161F4:
+ ldr r1, [sp, #0x64]
+ strh r1, [r0]
+ ldr r1, [sp, #0x68]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x6c]
+ strh r1, [r0, #4]
+ b _022162C8
+_02216202:
+ cmp r5, #2
+ bne _0221621C
+ ldr r0, [sp, #0x70]
+ neg r1, r0
+ add r0, sp, #0x14
+ strh r1, [r0]
+ ldr r1, [sp, #0x74]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x78]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022162C8
+_0221621C:
+ cmp r5, #5
+ bne _02216236
+ ldr r0, [sp, #0x64]
+ neg r1, r0
+ add r0, sp, #0x14
+ strh r1, [r0]
+ ldr r1, [sp, #0x68]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x6c]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022162C8
+_02216236:
+ ldr r0, [sp, #0x40]
+ neg r1, r0
+ add r0, sp, #0x14
+ strh r1, [r0]
+ ldr r1, [sp, #0x44]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x48]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022162C8
+_0221624C:
+ cmp r5, #3
+ add r0, sp, #0x14
+ bne _02216260
+ ldr r1, [sp, #0x40]
+ strh r1, [r0]
+ ldr r1, [sp, #0x44]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x48]
+ strh r1, [r0, #4]
+ b _022162C8
+_02216260:
+ cmp r5, #5
+ bne _02216272
+ ldr r1, [sp, #0x34]
+ strh r1, [r0]
+ ldr r1, [sp, #0x38]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x3c]
+ strh r1, [r0, #4]
+ b _022162C8
+_02216272:
+ ldr r1, [sp, #0x4c]
+ strh r1, [r0]
+ ldr r1, [sp, #0x50]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x54]
+ strh r1, [r0, #4]
+ b _022162C8
+_02216280:
+ cmp r5, #3
+ bne _0221629A
+ ldr r0, [sp, #0x4c]
+ neg r1, r0
+ add r0, sp, #0x14
+ strh r1, [r0]
+ ldr r1, [sp, #0x50]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x54]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022162C8
+_0221629A:
+ cmp r5, #2
+ bne _022162B4
+ ldr r0, [sp, #0x58]
+ neg r1, r0
+ add r0, sp, #0x14
+ strh r1, [r0]
+ ldr r1, [sp, #0x5c]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x60]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022162C8
+_022162B4:
+ ldr r0, [sp, #0x34]
+ neg r1, r0
+ add r0, sp, #0x14
+ strh r1, [r0]
+ ldr r1, [sp, #0x38]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x3c]
+ neg r1, r1
+ strh r1, [r0, #4]
+_022162C8:
+ ldr r2, [sp, #0xc]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_02215B48
+ add r5, r0, #0
+ add r1, sp, #0x28
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ str r0, [r1, #8]
+ add r0, r6, #0
+ mov r2, #3
+ bl MOD08_02215434
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, sp, #0x1c
+ bl MOD08_0222771C
+ ldr r0, [sp, #0x28]
+ cmp r0, #0
+ bne _02216334
+ ldr r0, [sp, #0x2c]
+ cmp r0, #0
+ bne _02216334
+ ldr r0, [sp, #0x30]
+ cmp r0, #0
+ bne _02216334
+ add r3, sp, #0x1c
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x88
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r1, [r4, #0x20]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [r1]
+ ldr r1, [r1, #4]
+ add r0, r0, r1
+ str r0, [r4, #0x28]
+ ldr r1, [r4, #0x20]
+ ldr r0, [sp, #0x20]
+ ldr r1, [r1]
+ ldr r1, [r1, #8]
+ add r0, r0, r1
+ str r0, [r4, #0x2c]
+ ldr r1, [r4, #0x20]
+ ldr r0, [sp, #0x24]
+ ldr r1, [r1]
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [r4, #0x30]
+ b _02216388
+_02216334:
+ ldr r2, [sp, #0x28]
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x30]
+ str r2, [sp, #0x88]
+ str r1, [sp, #0x8c]
+ str r0, [sp, #0x90]
+ cmp r2, #0
+ bne _0221634E
+ mov r0, #0x32
+ lsl r0, r0, #6
+ cmp r1, r0
+ bne _0221634E
+ mov r5, #1
+_0221634E:
+ ldr r1, [sp, #0x88]
+ add r0, r1, #0
+ ldr r1, [sp, #0x8c]
+ mul r0, r5
+ add r2, r1, #0
+ mul r2, r5
+ ldr r1, [sp, #0x24]
+ str r2, [sp, #0x8c]
+ add r2, r1, #0
+ mul r2, r5
+ str r0, [sp, #0x88]
+ str r2, [sp, #0x90]
+ ldr r1, [r4, #0x20]
+ ldr r1, [r1]
+ ldr r1, [r1, #4]
+ add r0, r0, r1
+ str r0, [r4, #0x28]
+ ldr r1, [r4, #0x20]
+ ldr r0, [sp, #0x8c]
+ ldr r1, [r1]
+ ldr r1, [r1, #8]
+ add r0, r0, r1
+ str r0, [r4, #0x2c]
+ ldr r1, [r4, #0x20]
+ ldr r0, [sp, #0x90]
+ ldr r1, [r1]
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [r4, #0x30]
+_02216388:
+ ldr r0, [sp, #0xa8]
+ cmp r0, #0
+ beq _022163C6
+ cmp r0, #1
+ beq _02216398
+ cmp r0, #2
+ beq _022163B0
+ b _022163C6
+_02216398:
+ ldr r0, [sp, #0xac]
+ ldr r3, [sp, #0xc]
+ str r0, [sp]
+ str r5, [sp, #4]
+ add r0, sp, #0x88
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD08_02215F80
+ b _022163C6
+_022163B0:
+ ldr r0, [sp, #0xac]
+ ldr r3, [sp, #0xc]
+ str r0, [sp]
+ str r5, [sp, #4]
+ add r0, sp, #0x88
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD08_02216050
+_022163C6:
+ add r1, sp, #0x14
+ ldrh r2, [r1]
+ add r0, r4, #0
+ add r0, #0x50
+ strh r2, [r0]
+ add r0, r4, #0
+ ldrh r2, [r1, #2]
+ add r0, #0x52
+ add r4, #0x54
+ strh r2, [r0]
+ ldrh r0, [r1, #4]
+ strh r0, [r4]
+ add sp, #0x94
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022163E4
+MOD08_022163E4: ; 0x022163E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ bl FUN_0201341C
+ add r6, r0, #0
+ bl MOD08_02212458
+ str r0, [sp, #8]
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r3, r0, #0
+ str r5, [sp]
+ ldr r2, [sp, #8]
+ add r0, r6, #0
+ add r1, r7, #0
+ str r4, [sp, #4]
+ bl MOD08_02216120
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02216414
+MOD08_02216414: ; 0x02216414
+ ldr r3, _0221641C ; =MOD08_022163E4
+ mov r1, #0
+ add r2, r1, #0
+ bx r3
+ .align 2, 0
+_0221641C: .word MOD08_022163E4
+
+ thumb_func_start MOD08_02216420
+MOD08_02216420: ; 0x02216420
+ ldr r3, _02216428 ; =MOD08_022163E4
+ mov r1, #1
+ add r2, r1, #0
+ bx r3
+ .align 2, 0
+_02216428: .word MOD08_022163E4
+
+ thumb_func_start MOD08_0221642C
+MOD08_0221642C: ; 0x0221642C
+ ldr r3, _02216434 ; =MOD08_022163E4
+ mov r1, #1
+ mov r2, #2
+ bx r3
+ .align 2, 0
+_02216434: .word MOD08_022163E4
+
+ thumb_func_start MOD08_02216438
+MOD08_02216438: ; 0x02216438
+ ldr r3, _02216440 ; =MOD08_022163E4
+ mov r1, #1
+ mov r2, #3
+ bx r3
+ .align 2, 0
+_02216440: .word MOD08_022163E4
+
+ thumb_func_start MOD08_02216444
+MOD08_02216444: ; 0x02216444
+ ldr r3, _0221644C ; =MOD08_022163E4
+ mov r1, #1
+ mov r2, #4
+ bx r3
+ .align 2, 0
+_0221644C: .word MOD08_022163E4
+
+ thumb_func_start MOD08_02216450
+MOD08_02216450: ; 0x02216450
+ ldr r3, _02216458 ; =MOD08_022163E4
+ mov r1, #1
+ mov r2, #5
+ bx r3
+ .align 2, 0
+_02216458: .word MOD08_022163E4
+
+ thumb_func_start MOD08_0221645C
+MOD08_0221645C: ; 0x0221645C
+ ldr r3, _02216464 ; =MOD08_022163E4
+ mov r1, #2
+ mov r2, #1
+ bx r3
+ .align 2, 0
+_02216464: .word MOD08_022163E4
+
+ thumb_func_start MOD08_02216468
+MOD08_02216468: ; 0x02216468
+ ldr r3, _02216470 ; =MOD08_022163E4
+ mov r1, #2
+ add r2, r1, #0
+ bx r3
+ .align 2, 0
+_02216470: .word MOD08_022163E4
+
+ thumb_func_start MOD08_02216474
+MOD08_02216474: ; 0x02216474
+ ldr r3, _0221647C ; =MOD08_022163E4
+ mov r1, #2
+ mov r2, #3
+ bx r3
+ .align 2, 0
+_0221647C: .word MOD08_022163E4
+
+ thumb_func_start MOD08_02216480
+MOD08_02216480: ; 0x02216480
+ ldr r3, _02216488 ; =MOD08_022163E4
+ mov r1, #2
+ mov r2, #4
+ bx r3
+ .align 2, 0
+_02216488: .word MOD08_022163E4
+
+ thumb_func_start MOD08_0221648C
+MOD08_0221648C: ; 0x0221648C
+ ldr r3, _02216494 ; =MOD08_022163E4
+ mov r1, #2
+ mov r2, #5
+ bx r3
+ .align 2, 0
+_02216494: .word MOD08_022163E4
+
+ thumb_func_start MOD08_02216498
+MOD08_02216498: ; 0x02216498
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl FUN_0201341C
+ add r4, r0, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212460
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r3, r6, #0
+ bl MOD08_02216120
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022164C8
+MOD08_022164C8: ; 0x022164C8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4, #0x14]
+ add r5, r0, #0
+ cmp r2, #0
+ beq _022164D8
+ bl MOD08_0221658C
+_022164D8:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _022164E6
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_022168C0
+_022164E6:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _022164F4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02217124
+_022164F4:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02217158
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _0221650A
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02217168
+_0221650A:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_0221650C
+MOD08_0221650C: ; 0x0221650C
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [r1]
+ add r6, r2, #0
+ add r0, r4, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ beq _02216534
+ mov r5, #1
+ b _02216536
+_02216534:
+ mov r5, #0
+_02216536:
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_0222765C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221654C
+MOD08_0221654C: ; 0x0221654C
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [r1]
+ add r6, r2, #0
+ add r0, r4, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ beq _02216574
+ mov r5, #1
+ b _02216576
+_02216574:
+ mov r5, #0
+_02216576:
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_0222765C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221658C
+MOD08_0221658C: ; 0x0221658C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xbc
+ add r4, r1, #0
+ ldr r2, [r4, #0x14]
+ add r5, r0, #0
+ cmp r2, #0x64
+ bgt _022165F4
+ blt _0221659E
+ b _02216768
+_0221659E:
+ cmp r2, #0x22
+ bhi _022165FA
+ add r3, r2, r2
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_022165AE: ; jump table
+ .short _02216872 - _022165AE - 2 ; case 0
+ .short _022165FC - _022165AE - 2 ; case 1
+ .short _02216608 - _022165AE - 2 ; case 2
+ .short _02216704 - _022165AE - 2 ; case 3
+ .short _02216740 - _022165AE - 2 ; case 4
+ .short _02216754 - _022165AE - 2 ; case 5
+ .short _02216614 - _022165AE - 2 ; case 6
+ .short _02216620 - _022165AE - 2 ; case 7
+ .short _022166EC - _022165AE - 2 ; case 8
+ .short _022166F8 - _022165AE - 2 ; case 9
+ .short _0221662C - _022165AE - 2 ; case 10
+ .short _02216638 - _022165AE - 2 ; case 11
+ .short _02216794 - _022165AE - 2 ; case 12
+ .short _022167A4 - _022165AE - 2 ; case 13
+ .short _02216644 - _022165AE - 2 ; case 14
+ .short _02216650 - _022165AE - 2 ; case 15
+ .short _0221665C - _022165AE - 2 ; case 16
+ .short _02216668 - _022165AE - 2 ; case 17
+ .short _02216674 - _022165AE - 2 ; case 18
+ .short _02216680 - _022165AE - 2 ; case 19
+ .short _0221668C - _022165AE - 2 ; case 20
+ .short _02216698 - _022165AE - 2 ; case 21
+ .short _022166A4 - _022165AE - 2 ; case 22
+ .short _022166B0 - _022165AE - 2 ; case 23
+ .short _022166BC - _022165AE - 2 ; case 24
+ .short _022166C8 - _022165AE - 2 ; case 25
+ .short _022166D4 - _022165AE - 2 ; case 26
+ .short _022166E0 - _022165AE - 2 ; case 27
+ .short _022167B4 - _022165AE - 2 ; case 28
+ .short _02216872 - _022165AE - 2 ; case 29
+ .short _02216804 - _022165AE - 2 ; case 30
+ .short _022167DA - _022165AE - 2 ; case 31
+ .short _0221683C - _022165AE - 2 ; case 32
+ .short _022167C0 - _022165AE - 2 ; case 33
+ .short _022167CE - _022165AE - 2 ; case 34
+_022165F4:
+ cmp r2, #0x65
+ bne _022165FA
+ b _0221677E
+_022165FA:
+ b _02216872
+_022165FC:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222771C
+ b _02216872
+_02216608:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222771C
+ b _02216872
+_02216614:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222774C
+ b _02216872
+_02216620:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222774C
+ b _02216872
+_0221662C:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222777C
+ b _02216872
+_02216638:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222777C
+ b _02216872
+_02216644:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_022277AC
+ b _02216872
+_02216650:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_022277AC
+ b _02216872
+_0221665C:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_022277DC
+ b _02216872
+_02216668:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_022277DC
+ b _02216872
+_02216674:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222780C
+ b _02216872
+_02216680:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222780C
+ b _02216872
+_0221668C:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222783C
+ b _02216872
+_02216698:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222783C
+ b _02216872
+_022166A4:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222786C
+ b _02216872
+_022166B0:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222786C
+ b _02216872
+_022166BC:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222789C
+ b _02216872
+_022166C8:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222789C
+ b _02216872
+_022166D4:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_022278CC
+ b _02216872
+_022166E0:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_022278CC
+ b _02216872
+_022166EC:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222792C
+ b _02216872
+_022166F8:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222792C
+ b _02216872
+_02216704:
+ ldr r0, [r4]
+ add r1, sp, #0xa0
+ mov r2, #4
+ bl MOD08_02215434
+ add r0, r4, #0
+ bl MOD08_0221727C
+ strb r0, [r4, #8]
+ ldr r0, [sp, #0xa4]
+ str r0, [sp, #0xb0]
+ ldr r0, [sp, #0xa8]
+ str r0, [sp, #0xb4]
+ ldr r0, [sp, #0xac]
+ str r0, [sp, #0xb8]
+ ldr r0, [sp, #0xa0]
+ cmp r0, #1
+ bne _0221672C
+ mov r0, #1
+ strb r0, [r4, #8]
+_0221672C:
+ mov r0, #8
+ ldrsb r1, [r4, r0]
+ ldr r2, [sp, #0xb0]
+ mul r1, r2
+ str r1, [sp, #0xb0]
+ ldrsb r0, [r4, r0]
+ ldr r1, [sp, #0xb4]
+ mul r0, r1
+ str r0, [sp, #0xb4]
+ b _02216872
+_02216740:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222771C
+ add r0, r4, #0
+ add r1, sp, #0xb0
+ bl MOD08_0221734C
+ b _02216872
+_02216754:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222771C
+ add r0, r4, #0
+ add r1, sp, #0xb0
+ bl MOD08_0221734C
+ b _02216872
+_02216768:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222771C
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0
+ add r2, sp, #0xb0
+ bl MOD08_022172C0
+ b _02216872
+_0221677E:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0xb0
+ bl MOD08_0222771C
+ ldr r1, [r4, #0x28]
+ add r0, r4, #0
+ add r2, sp, #0xb0
+ bl MOD08_022172C0
+ b _02216872
+_02216794:
+ add r2, sp, #0xb0
+ bl MOD08_0221654C
+ add r0, r4, #0
+ add r1, sp, #0xb0
+ bl MOD08_0221734C
+ b _02216872
+_022167A4:
+ add r2, sp, #0xb0
+ bl MOD08_0221650C
+ add r0, r4, #0
+ add r1, sp, #0xb0
+ bl MOD08_0221734C
+ b _02216872
+_022167B4:
+ ldr r0, _022168A8 ; =0x00002CE0
+ str r0, [sp, #0xb0]
+ mov r0, #0
+ str r0, [sp, #0xb4]
+ str r0, [sp, #0xb8]
+ b _02216872
+_022167C0:
+ ldr r0, _022168AC ; =0xFFFFEC78
+ str r0, [sp, #0xb0]
+ ldr r0, _022168B0 ; =0xFFFFE890
+ str r0, [sp, #0xb4]
+ mov r0, #0
+ str r0, [sp, #0xb8]
+ b _02216872
+_022167CE:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0xb0
+ bl MOD08_0222771C
+ b _02216872
+_022167DA:
+ ldr r6, _022168B4 ; =0x0222B344
+ add r3, sp, #0x70
+ mov r2, #6
+_022167E0:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022167E0
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ bl MOD08_02227468
+ lsl r1, r0, #3
+ add r0, sp, #0x70
+ ldr r0, [r0, r1]
+ str r0, [sp, #0xb0]
+ add r0, sp, #0x74
+ ldr r0, [r0, r1]
+ str r0, [sp, #0xb4]
+ mov r0, #0
+ str r0, [sp, #0xb8]
+ b _02216872
+_02216804:
+ ldr r6, _022168B8 ; =0x0222B3DC
+ add r3, sp, #0x38
+ mov r2, #7
+_0221680A:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0221680A
+ ldr r0, [r4]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216820
+ mov r0, #6
+ b _02216828
+_02216820:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ bl MOD08_02227468
+_02216828:
+ lsl r1, r0, #3
+ add r0, sp, #0x38
+ ldr r0, [r0, r1]
+ str r0, [sp, #0xb0]
+ add r0, sp, #0x3c
+ ldr r0, [r0, r1]
+ str r0, [sp, #0xb4]
+ mov r0, #0
+ str r0, [sp, #0xb8]
+ b _02216872
+_0221683C:
+ ldr r6, _022168BC ; =0x0222B3A4
+ add r3, sp, #0
+ mov r2, #7
+_02216842:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02216842
+ ldr r0, [r4]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216858
+ mov r0, #6
+ b _02216860
+_02216858:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ bl MOD08_02227468
+_02216860:
+ lsl r1, r0, #3
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ str r0, [sp, #0xb0]
+ add r0, sp, #4
+ ldr r0, [r0, r1]
+ str r0, [sp, #0xb4]
+ mov r0, #0
+ str r0, [sp, #0xb8]
+_02216872:
+ add r2, sp, #0xb0
+ ldmia r2!, {r0, r1}
+ add r4, #0x2c
+ stmia r4!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r4]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0xb0]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0xb4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0xb8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x30]
+ add sp, #0xbc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_022168A8: .word 0x00002CE0
+_022168AC: .word 0xFFFFEC78
+_022168B0: .word 0xFFFFE890
+_022168B4: .word 0x0222B344
+_022168B8: .word 0x0222B3DC
+_022168BC: .word 0x0222B3A4
+
+ thumb_func_start MOD08_022168C0
+MOD08_022168C0: ; 0x022168C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x148
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r1]
+ ldr r1, [r1, #0x24]
+ bl MOD08_02227468
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r1, [r1, #0x28]
+ bl MOD08_02227468
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x18]
+ cmp r0, #0x1a
+ bls _022168EC
+ bl _022170F2
+_022168EC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022168F8: ; jump table
+ .short _0221692E - _022168F8 - 2 ; case 0
+ .short _0221693A - _022168F8 - 2 ; case 1
+ .short _0221693A - _022168F8 - 2 ; case 2
+ .short _02217024 - _022168F8 - 2 ; case 3
+ .short _022169A2 - _022168F8 - 2 ; case 4
+ .short _02216A5C - _022168F8 - 2 ; case 5
+ .short _02216D90 - _022168F8 - 2 ; case 6
+ .short _02216D90 - _022168F8 - 2 ; case 7
+ .short _02216B16 - _022168F8 - 2 ; case 8
+ .short _02216B16 - _022168F8 - 2 ; case 9
+ .short _02216B7E - _022168F8 - 2 ; case 10
+ .short _02216B7E - _022168F8 - 2 ; case 11
+ .short _02216BCC - _022168F8 - 2 ; case 12
+ .short _02216BCC - _022168F8 - 2 ; case 13
+ .short _02216C14 - _022168F8 - 2 ; case 14
+ .short _02216C14 - _022168F8 - 2 ; case 15
+ .short _02216C5C - _022168F8 - 2 ; case 16
+ .short _02216C5C - _022168F8 - 2 ; case 17
+ .short _02216D00 - _022168F8 - 2 ; case 18
+ .short _02216D00 - _022168F8 - 2 ; case 19
+ .short _02216D48 - _022168F8 - 2 ; case 20
+ .short _02216D48 - _022168F8 - 2 ; case 21
+ .short _02217038 - _022168F8 - 2 ; case 22
+ .short _022170F2 - _022168F8 - 2 ; case 23
+ .short _022170C4 - _022168F8 - 2 ; case 24
+ .short _02217080 - _022168F8 - 2 ; case 25
+ .short _02217092 - _022168F8 - 2 ; case 26
+_0221692E:
+ mov r1, #0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ b _022170F2
+_0221693A:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216974
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x10]
+ cmp r0, #2
+ add r0, sp, #0x20
+ bne _02216962
+ ldr r1, _02216CA4 ; =0xFFFFF2F8
+ strh r1, [r0]
+ mov r1, #0x73
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216962:
+ mov r1, #0x92
+ lsl r1, r1, #4
+ strh r1, [r0]
+ ldr r1, _02216CA8 ; =0xFFFFFA60
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216974:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CAC ; =0x0222BB44
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CB0 ; =0x0222BB48
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CB4 ; =0x0222BB4C
+ add r0, r3, r0
+ ldr r1, [r1, r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ strh r0, [r2, #4]
+ b _022170F2
+_022169A2:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _022169DE
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CAC ; =0x0222BB44
+ add r2, r2, r0
+ ldr r2, [r1, r2]
+ neg r3, r2
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CB0 ; =0x0222BB48
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CB4 ; =0x0222BB4C
+ add r0, r3, r0
+ ldr r1, [r1, r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ strh r0, [r2, #4]
+ b _022170F2
+_022169DE:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r1, [r1, #0x24]
+ bl MOD08_02227470
+ add r4, r0, #0
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r1, [r1, #0x28]
+ bl MOD08_02227470
+ cmp r4, r0
+ bne _02216A2A
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CAC ; =0x0222BB44
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CB0 ; =0x0222BB48
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CB4 ; =0x0222BB4C
+ add r0, r3, r0
+ ldr r1, [r1, r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ strh r0, [r2, #4]
+ b _022170F2
+_02216A2A:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r1, [r1, #0x24]
+ bl MOD08_02227470
+ cmp r0, #3
+ add r0, sp, #0x20
+ bne _02216A4E
+ mov r1, #0x3b
+ lsl r1, r1, #6
+ strh r1, [r0]
+ mov r1, #0x21
+ lsl r1, r1, #6
+ strh r1, [r0, #2]
+ ldr r1, _02216CB8 ; =0x000005FC
+ strh r1, [r0, #4]
+ b _022170F2
+_02216A4E:
+ ldr r1, _02216CBC ; =0xFFFFEF7C
+ strh r1, [r0]
+ ldr r1, _02216CC0 ; =0xFFFFF558
+ strh r1, [r0, #2]
+ ldr r1, _02216CB8 ; =0x000005FC
+ strh r1, [r0, #4]
+ b _022170F2
+_02216A5C:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216A98
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CAC ; =0x0222BB44
+ add r2, r2, r0
+ ldr r2, [r1, r2]
+ neg r3, r2
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CB0 ; =0x0222BB48
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CB4 ; =0x0222BB4C
+ add r0, r3, r0
+ ldr r1, [r1, r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ strh r0, [r2, #4]
+ b _022170F2
+_02216A98:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r1, [r1, #0x24]
+ bl MOD08_02227470
+ add r4, r0, #0
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r1, [r1, #0x28]
+ bl MOD08_02227470
+ cmp r4, r0
+ bne _02216AE4
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CAC ; =0x0222BB44
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CB0 ; =0x0222BB48
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CB4 ; =0x0222BB4C
+ add r0, r3, r0
+ ldr r1, [r1, r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ strh r0, [r2, #4]
+ b _022170F2
+_02216AE4:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r1, [r1, #0x24]
+ bl MOD08_02227470
+ cmp r0, #3
+ add r0, sp, #0x20
+ bne _02216B08
+ mov r1, #0x3b
+ lsl r1, r1, #6
+ strh r1, [r0]
+ mov r1, #0x21
+ lsl r1, r1, #6
+ strh r1, [r0, #2]
+ ldr r1, _02216CB8 ; =0x000005FC
+ strh r1, [r0, #4]
+ b _022170F2
+_02216B08:
+ ldr r1, _02216CBC ; =0xFFFFEF7C
+ strh r1, [r0]
+ ldr r1, _02216CC0 ; =0xFFFFF558
+ strh r1, [r0, #2]
+ ldr r1, _02216CB8 ; =0x000005FC
+ strh r1, [r0, #4]
+ b _022170F2
+_02216B16:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216B50
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x10]
+ cmp r0, #2
+ add r0, sp, #0x20
+ bne _02216B3E
+ ldr r1, _02216CC4 ; =0xFFFFF6E0
+ strh r1, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216B3E:
+ mov r1, #0x92
+ lsl r1, r1, #4
+ strh r1, [r0]
+ ldr r1, _02216CA8 ; =0xFFFFFA60
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216B50:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CC8 ; =0x0222B484
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CCC ; =0x0222B488
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CD0 ; =0x0222B48C
+ add r0, r3, r0
+ ldr r1, [r1, r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ strh r0, [r2, #4]
+ b _022170F2
+_02216B7E:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216B9E
+ ldr r1, _02216CC4 ; =0xFFFFF6E0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216B9E:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CD4 ; =0x0222B634
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CCC ; =0x0222B488
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CD0 ; =0x0222B48C
+ add r0, r3, r0
+ ldr r1, [r1, r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ strh r0, [r2, #4]
+ b _022170F2
+_02216BCC:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216BEC
+ ldr r1, _02216CD8 ; =0xFFFFF488
+ add r0, sp, #0x20
+ strh r1, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216BEC:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CDC ; =0x0222B994
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CE0 ; =0x0222B998
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CE4 ; =0x0222B99C
+ add r0, r3, r0
+ ldr r0, [r1, r0]
+ strh r0, [r2, #4]
+ b _022170F2
+_02216C14:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216C34
+ ldr r1, _02216CC4 ; =0xFFFFF6E0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216C34:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CE8 ; =0x0222BCF4
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CEC ; =0x0222BCF8
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CF0 ; =0x0222BCFC
+ add r0, r3, r0
+ ldr r0, [r1, r0]
+ strh r0, [r2, #4]
+ b _022170F2
+_02216C5C:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216C7C
+ ldr r1, _02216CC4 ; =0xFFFFF6E0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216C7C:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02216CF4 ; =0x0222B7E4
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _02216CF8 ; =0x0222B7E8
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02216CFC ; =0x0222B7EC
+ add r0, r3, r0
+ ldr r0, [r1, r0]
+ strh r0, [r2, #4]
+ b _022170F2
+ .align 2, 0
+_02216CA4: .word 0xFFFFF2F8
+_02216CA8: .word 0xFFFFFA60
+_02216CAC: .word 0x0222BB44
+_02216CB0: .word 0x0222BB48
+_02216CB4: .word 0x0222BB4C
+_02216CB8: .word 0x000005FC
+_02216CBC: .word 0xFFFFEF7C
+_02216CC0: .word 0xFFFFF558
+_02216CC4: .word 0xFFFFF6E0
+_02216CC8: .word 0x0222B484
+_02216CCC: .word 0x0222B488
+_02216CD0: .word 0x0222B48C
+_02216CD4: .word 0x0222B634
+_02216CD8: .word 0xFFFFF488
+_02216CDC: .word 0x0222B994
+_02216CE0: .word 0x0222B998
+_02216CE4: .word 0x0222B99C
+_02216CE8: .word 0x0222BCF4
+_02216CEC: .word 0x0222BCF8
+_02216CF0: .word 0x0222BCFC
+_02216CF4: .word 0x0222B7E4
+_02216CF8: .word 0x0222B7E8
+_02216CFC: .word 0x0222B7EC
+_02216D00:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216D20
+ ldr r1, _02217044 ; =0xFFFFF6E0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216D20:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02217048 ; =0x0222BEA4
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _0221704C ; =0x0222BEA8
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02217050 ; =0x0222BEAC
+ add r0, r3, r0
+ ldr r0, [r1, r0]
+ strh r0, [r2, #4]
+ b _022170F2
+_02216D48:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216D68
+ ldr r1, _02217054 ; =0xFFFFEF10
+ add r0, sp, #0x20
+ strh r1, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0x2e
+ lsl r1, r1, #4
+ strh r1, [r0, #4]
+ b _022170F2
+_02216D68:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r2, [sp, #0x18]
+ mov r0, #0x48
+ mul r0, r2
+ ldr r2, _02217058 ; =0x0222C054
+ add r2, r2, r0
+ ldr r3, [r1, r2]
+ add r2, sp, #0x20
+ strh r3, [r2]
+ ldr r3, _0221705C ; =0x0222C058
+ add r3, r3, r0
+ ldr r3, [r1, r3]
+ strh r3, [r2, #2]
+ ldr r3, _02217060 ; =0x0222C05C
+ add r0, r3, r0
+ ldr r0, [r1, r0]
+ strh r0, [r2, #4]
+ b _022170F2
+_02216D90:
+ ldr r4, _02217064 ; =0x0222B414
+ add r3, sp, #0xd8
+ mov r2, #0xe
+_02216D96:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02216D96
+ ldr r3, _02217068 ; =0x0222B334
+ add r2, sp, #0x58
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r1, sp, #0xc8
+ mov r0, #0
+ str r1, [sp, #0xc]
+ add r1, sp, #0xb8
+ mov ip, r0
+ str r1, [sp, #0x1c]
+ add r0, sp, #0xd8
+ add r7, sp, #0xa8
+ add r6, sp, #0x98
+ add r5, sp, #0x88
+ add r1, sp, #0x78
+ add r2, sp, #0x68
+_02216DC2:
+ ldr r4, [r0]
+ ldr r3, [sp, #0xc]
+ str r4, [r3]
+ ldr r4, [r0, #0x10]
+ ldr r3, [sp, #0x1c]
+ str r4, [r3]
+ ldr r3, [r0, #0x20]
+ stmia r7!, {r3}
+ ldr r3, [r0, #0x30]
+ stmia r6!, {r3}
+ ldr r3, [r0, #0x40]
+ stmia r5!, {r3}
+ ldr r3, [r0, #0x50]
+ stmia r1!, {r3}
+ ldr r3, [r0, #0x60]
+ add r0, r0, #4
+ stmia r2!, {r3}
+ ldr r3, [sp, #0xc]
+ add r3, r3, #4
+ str r3, [sp, #0xc]
+ ldr r3, [sp, #0x1c]
+ add r3, r3, #4
+ str r3, [sp, #0x1c]
+ mov r3, ip
+ add r3, r3, #1
+ mov ip, r3
+ cmp r3, #4
+ blt _02216DC2
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02216E3E
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, sp, #0x58
+ str r0, [sp, #0x10]
+ add r7, sp, #0xc8
+ add r6, sp, #0xb8
+ add r0, sp, #0xa8
+ add r1, sp, #0x98
+ add r2, sp, #0x88
+ add r3, sp, #0x78
+ add r4, sp, #0x68
+_02216E1C:
+ ldr r5, [sp, #0x10]
+ ldr r5, [r5]
+ stmia r7!, {r5}
+ stmia r6!, {r5}
+ stmia r0!, {r5}
+ stmia r1!, {r5}
+ stmia r2!, {r5}
+ stmia r3!, {r5}
+ stmia r4!, {r5}
+ ldr r5, [sp, #0x10]
+ add r5, r5, #4
+ str r5, [sp, #0x10]
+ ldr r5, [sp, #8]
+ add r5, r5, #1
+ str r5, [sp, #8]
+ cmp r5, #4
+ blt _02216E1C
+_02216E3E:
+ ldr r0, [sp, #0x18]
+ cmp r0, #5
+ bhi _02216E5C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02216E50: ; jump table
+ .short _02216E5C - _02216E50 - 2 ; case 0
+ .short _02216E6C - _02216E50 - 2 ; case 1
+ .short _02216E98 - _02216E50 - 2 ; case 2
+ .short _02216ED0 - _02216E50 - 2 ; case 3
+ .short _02216F5E - _02216E50 - 2 ; case 4
+ .short _02216F96 - _02216E50 - 2 ; case 5
+_02216E5C:
+ ldr r1, [sp, #0xc8]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0xcc]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xd0]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216E6C:
+ ldr r0, [sp, #0xd4]
+ cmp r0, #1
+ bne _02216E82
+ ldr r1, [sp, #0xc8]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0xcc]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xd0]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216E82:
+ ldr r0, [sp, #0xc8]
+ neg r1, r0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0xcc]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xd0]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022170F2
+_02216E98:
+ ldr r0, [sp, #0x14]
+ cmp r0, #3
+ bne _02216EAE
+ ldr r1, [sp, #0xb8]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0xbc]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xc0]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216EAE:
+ cmp r0, #5
+ add r0, sp, #0x20
+ bne _02216EC2
+ ldr r1, [sp, #0x98]
+ strh r1, [r0]
+ ldr r1, [sp, #0x9c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xa0]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216EC2:
+ ldr r1, [sp, #0xa8]
+ strh r1, [r0]
+ ldr r1, [sp, #0xac]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xb0]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216ED0:
+ ldr r0, [sp, #0x14]
+ cmp r0, #2
+ bne _02216F02
+ ldr r0, [sp, #0xc4]
+ cmp r0, #1
+ bne _02216EEC
+ ldr r1, [sp, #0xb8]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0xbc]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xc0]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216EEC:
+ ldr r0, [sp, #0xb8]
+ neg r1, r0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0xbc]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xc0]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022170F2
+_02216F02:
+ cmp r0, #5
+ bne _02216F32
+ ldr r0, [sp, #0xb4]
+ cmp r0, #1
+ bne _02216F22
+ ldr r0, [sp, #0x88]
+ neg r1, r0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x8c]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x90]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022170F2
+_02216F22:
+ ldr r1, [sp, #0x88]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x8c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x90]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216F32:
+ ldr r0, [sp, #0x84]
+ cmp r0, #1
+ bne _02216F48
+ ldr r1, [sp, #0x78]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x7c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x80]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216F48:
+ ldr r0, [sp, #0x78]
+ neg r1, r0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x7c]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x80]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022170F2
+_02216F5E:
+ ldr r0, [sp, #0x14]
+ cmp r0, #3
+ bne _02216F74
+ ldr r1, [sp, #0x78]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x7c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x80]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216F74:
+ cmp r0, #5
+ add r0, sp, #0x20
+ bne _02216F88
+ ldr r1, [sp, #0x68]
+ strh r1, [r0]
+ ldr r1, [sp, #0x6c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x70]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216F88:
+ ldr r1, [sp, #0x88]
+ strh r1, [r0]
+ ldr r1, [sp, #0x8c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x90]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216F96:
+ ldr r0, [sp, #0x14]
+ cmp r0, #3
+ bne _02216FC8
+ ldr r0, [sp, #0xc4]
+ cmp r0, #1
+ bne _02216FB2
+ ldr r1, [sp, #0x88]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x8c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x90]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216FB2:
+ ldr r0, [sp, #0x88]
+ neg r1, r0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x8c]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x90]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022170F2
+_02216FC8:
+ cmp r0, #2
+ bne _02216FF8
+ ldr r0, [sp, #0xc4]
+ cmp r0, #1
+ bne _02216FE2
+ ldr r1, [sp, #0x98]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x9c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xa0]
+ strh r1, [r0, #4]
+ b _022170F2
+_02216FE2:
+ ldr r0, [sp, #0x98]
+ neg r1, r0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x9c]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0xa0]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022170F2
+_02216FF8:
+ ldr r0, [sp, #0xc4]
+ cmp r0, #1
+ bne _0221700E
+ ldr r1, [sp, #0x68]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x6c]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x70]
+ strh r1, [r0, #4]
+ b _022170F2
+_0221700E:
+ ldr r0, [sp, #0x68]
+ neg r1, r0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, [sp, #0x6c]
+ neg r1, r1
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x70]
+ neg r1, r1
+ strh r1, [r0, #4]
+ b _022170F2
+_02217024:
+ ldr r1, _0221706C ; =0xFFFFFCE0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ mov r1, #0x4b
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0x7d
+ lsl r1, r1, #2
+ strh r1, [r0, #4]
+ b _022170F2
+_02217038:
+ ldr r1, _02217070 ; =0xFFFFF2AE
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, _02217074 ; =0xFFFFF5AC
+ b _02217078
+ nop
+_02217044: .word 0xFFFFF6E0
+_02217048: .word 0x0222BEA4
+_0221704C: .word 0x0222BEA8
+_02217050: .word 0x0222BEAC
+_02217054: .word 0xFFFFEF10
+_02217058: .word 0x0222C054
+_0221705C: .word 0x0222C058
+_02217060: .word 0x0222C05C
+_02217064: .word 0x0222B414
+_02217068: .word 0x0222B334
+_0221706C: .word 0xFFFFFCE0
+_02217070: .word 0xFFFFF2AE
+_02217074: .word 0xFFFFF5AC
+_02217078:
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ b _022170F2
+_02217080:
+ ldr r1, _02217114 ; =0xFFFFF290
+ add r0, sp, #0x20
+ strh r1, [r0]
+ mov r1, #0x7a
+ lsl r1, r1, #4
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ b _022170F2
+_02217092:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r1, [r1, #0x24]
+ bl MOD08_02227470
+ cmp r0, #3
+ add r0, sp, #0x20
+ bne _022170B6
+ mov r1, #0x3b
+ lsl r1, r1, #6
+ strh r1, [r0]
+ mov r1, #0x21
+ lsl r1, r1, #6
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ b _022170F2
+_022170B6:
+ ldr r1, _02217118 ; =0xFFFFE890
+ strh r1, [r0]
+ ldr r1, _0221711C ; =0xFFFFF768
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ b _022170F2
+_022170C4:
+ ldr r4, _02217120 ; =0x0222B374
+ add r3, sp, #0x28
+ mov r2, #6
+_022170CA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022170CA
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r1, [r1, #0x24]
+ bl MOD08_02227468
+ lsl r2, r0, #3
+ add r0, sp, #0x28
+ ldr r1, [r0, r2]
+ add r0, sp, #0x20
+ strh r1, [r0]
+ add r1, sp, #0x2c
+ ldr r1, [r1, r2]
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+_022170F2:
+ add r1, sp, #0x20
+ ldr r0, [sp]
+ ldrh r2, [r1]
+ add r0, #0x50
+ strh r2, [r0]
+ ldr r0, [sp]
+ ldrh r2, [r1, #2]
+ add r0, #0x52
+ strh r2, [r0]
+ ldr r0, [sp]
+ ldrh r1, [r1, #4]
+ add r0, #0x54
+ str r0, [sp]
+ strh r1, [r0]
+ add sp, #0x148
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02217114: .word 0xFFFFF290
+_02217118: .word 0xFFFFE890
+_0221711C: .word 0xFFFFF768
+_02217120: .word 0x0222B374
+
+ thumb_func_start MOD08_02217124
+MOD08_02217124: ; 0x02217124
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r1, #0
+ bl MOD08_022178CC
+ add r6, r0, #0
+ mov r4, #0
+ cmp r6, #0
+ ble _02217154
+_02217136:
+ add r0, r4, #0
+ bl MOD08_022178A4
+ ldr r1, [r5, #0x1c]
+ and r1, r0
+ cmp r0, r1
+ bne _0221714E
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ bl MOD08_0221788C
+_0221714E:
+ add r4, r4, #1
+ cmp r4, r6
+ blt _02217136
+_02217154:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217158
+MOD08_02217158: ; 0x02217158
+ add r3, r0, #0
+ add r2, r1, #0
+ add r1, r3, #0
+ ldr r3, _02217164 ; =MOD08_02217B04
+ ldr r0, [r2, #0x20]
+ bx r3
+ .align 2, 0
+_02217164: .word MOD08_02217B04
+
+ thumb_func_start MOD08_02217168
+MOD08_02217168: ; 0x02217168
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ bl MOD08_02227468
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ bl MOD08_02227468
+ ldr r1, [r4, #0xc]
+ cmp r1, #3
+ bhi _022171B0
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02217190: ; jump table
+ .short _022171B0 - _02217190 - 2 ; case 0
+ .short _02217198 - _02217190 - 2 ; case 1
+ .short _022171A6 - _02217190 - 2 ; case 2
+ .short _022171B0 - _02217190 - 2 ; case 3
+_02217198:
+ cmp r0, #0
+ bne _022171A2
+ mov r5, #1
+ lsl r5, r5, #8
+ b _022171B0
+_022171A2:
+ ldr r5, _022171C4 ; =0xFFFFEC00
+ b _022171B0
+_022171A6:
+ cmp r0, #0
+ bne _022171AE
+ mov r5, #0
+ b _022171B0
+_022171AE:
+ ldr r5, _022171C8 ; =0xFFFFEB00
+_022171B0:
+ ldr r0, [r4, #4]
+ bl FUN_02013448
+ ldr r0, [r6, #0x20]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r5, r0
+ str r0, [r6, #0x30]
+ pop {r4, r5, r6, pc}
+ nop
+_022171C4: .word 0xFFFFEC00
+_022171C8: .word 0xFFFFEB00
+
+ thumb_func_start MOD08_022171CC
+MOD08_022171CC: ; 0x022171CC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl FUN_0201341C
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x38
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212468
+ str r0, [r4, #4]
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0xc
+ mov r2, #6
+ bl MOD08_02215434
+ ldr r0, [r4, #0x10]
+ cmp r0, #4
+ bhi _02217214
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221720A: ; jump table
+ .short _02217214 - _0221720A - 2 ; case 0
+ .short _02217226 - _0221720A - 2 ; case 1
+ .short _02217238 - _0221720A - 2 ; case 2
+ .short _0221724A - _0221720A - 2 ; case 3
+ .short _0221725C - _0221720A - 2 ; case 4
+_02217214:
+ ldr r0, [r4]
+ bl MOD08_02212458
+ str r0, [r4, #0x24]
+ ldr r0, [r4]
+ bl MOD08_02212460
+ str r0, [r4, #0x28]
+ b _0221726C
+_02217226:
+ ldr r0, [r4]
+ bl MOD08_02212460
+ str r0, [r4, #0x24]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ str r0, [r4, #0x28]
+ b _0221726C
+_02217238:
+ ldr r0, [r4]
+ bl MOD08_02212458
+ str r0, [r4, #0x24]
+ ldr r0, [r4]
+ bl MOD08_02212460
+ str r0, [r4, #0x28]
+ b _0221726C
+_0221724A:
+ ldr r0, [r4]
+ bl MOD08_02212460
+ str r0, [r4, #0x24]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ str r0, [r4, #0x28]
+ b _0221726C
+_0221725C:
+ ldr r0, [r4]
+ bl MOD08_02212458
+ str r0, [r4, #0x24]
+ ldr r0, [r4]
+ bl MOD08_02212460
+ str r0, [r4, #0x28]
+_0221726C:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD08_022164C8
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_0221727C
+MOD08_0221727C: ; 0x0221727C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ ldr r1, [r6, #0x24]
+ mov r4, #1
+ bl MOD08_02227468
+ add r5, r0, #0
+ ldr r0, [r6]
+ ldr r1, [r6, #0x28]
+ bl MOD08_02227468
+ cmp r5, #5
+ bhi _022172BA
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022172A4: ; jump table
+ .short _022172BA - _022172A4 - 2 ; case 0
+ .short _022172B0 - _022172A4 - 2 ; case 1
+ .short _022172BA - _022172A4 - 2 ; case 2
+ .short _022172B4 - _022172A4 - 2 ; case 3
+ .short _022172BA - _022172A4 - 2 ; case 4
+ .short _022172B8 - _022172A4 - 2 ; case 5
+_022172B0:
+ sub r4, r4, #2
+ b _022172BA
+_022172B4:
+ sub r4, r4, #2
+ b _022172BA
+_022172B8:
+ sub r4, r4, #2
+_022172BA:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022172C0
+MOD08_022172C0: ; 0x022172C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ add r0, sp, #0x20
+ mov r4, #0
+ str r4, [r0]
+ str r4, [r0, #4]
+ add r6, r1, #0
+ add r7, r2, #0
+ str r4, [r0, #8]
+_022172D4:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl MOD08_02227468
+ cmp r4, r0
+ ldr r0, [r5]
+ bne _022172EC
+ add r1, sp, #0x10
+ mov r2, #4
+ bl MOD08_02215434
+ b _022172F4
+_022172EC:
+ add r1, sp, #0
+ mov r2, #4
+ bl MOD08_02215434
+_022172F4:
+ add r4, r4, #1
+ cmp r4, #6
+ blt _022172D4
+ add r0, r5, #0
+ bl MOD08_0221727C
+ strb r0, [r5, #8]
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x1c]
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x10]
+ cmp r0, #1
+ bne _02217318
+ mov r0, #1
+ strb r0, [r5, #8]
+_02217318:
+ mov r1, #8
+ ldrsb r0, [r5, r1]
+ ldr r2, [sp, #0x20]
+ ldr r3, [sp, #0x24]
+ mul r0, r2
+ str r0, [sp, #0x20]
+ ldrsb r2, [r5, r1]
+ mul r2, r3
+ str r2, [sp, #0x24]
+ ldrsb r1, [r5, r1]
+ ldr r2, [sp, #0x28]
+ mul r1, r2
+ str r1, [sp, #0x28]
+ ldr r1, [r7]
+ add r0, r1, r0
+ str r0, [r7]
+ ldr r1, [r7, #4]
+ ldr r0, [sp, #0x24]
+ add r0, r1, r0
+ str r0, [r7, #4]
+ ldr r1, [r7, #8]
+ ldr r0, [sp, #0x28]
+ add r0, r1, r0
+ str r0, [r7, #8]
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0221734C
+MOD08_0221734C: ; 0x0221734C
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, sp, #0
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ str r0, [r1, #8]
+ ldr r0, [r5]
+ add r1, sp, #0xc
+ mov r2, #4
+ bl MOD08_02215434
+ add r0, r5, #0
+ bl MOD08_0221727C
+ strb r0, [r5, #8]
+ ldr r0, [sp, #0x10]
+ str r0, [sp]
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ cmp r0, #1
+ bne _02217386
+ mov r0, #1
+ strb r0, [r5, #8]
+_02217386:
+ mov r1, #8
+ ldrsb r0, [r5, r1]
+ ldr r2, [sp]
+ ldr r3, [sp, #4]
+ mul r0, r2
+ str r0, [sp]
+ ldrsb r2, [r5, r1]
+ mul r2, r3
+ str r2, [sp, #4]
+ ldrsb r1, [r5, r1]
+ ldr r2, [sp, #8]
+ mul r1, r2
+ str r1, [sp, #8]
+ ldr r1, [r4]
+ add r0, r1, r0
+ str r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r0, [sp, #4]
+ add r0, r1, r0
+ str r0, [r4, #4]
+ ldr r1, [r4, #8]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ str r0, [r4, #8]
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022173BC
+MOD08_022173BC: ; 0x022173BC
+ ldr r3, _022173C4 ; =MOD08_02215434
+ ldr r0, [r0]
+ mov r2, #5
+ bx r3
+ .align 2, 0
+_022173C4: .word MOD08_02215434
+
+ thumb_func_start MOD08_022173C8
+MOD08_022173C8: ; 0x022173C8
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_022173CC
+MOD08_022173CC: ; 0x022173CC
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, sp, #0
+ mov r0, #0
+ strh r0, [r1]
+ strh r0, [r1, #2]
+ strh r0, [r1, #4]
+ add r0, r4, #0
+ add r1, sp, #8
+ bl MOD08_022173BC
+ add r0, r4, #0
+ bl MOD08_0221727C
+ strb r0, [r4, #8]
+ ldr r0, [sp, #0xc]
+ cmp r0, #1
+ bne _022173F8
+ mov r0, #1
+ strb r0, [r4, #8]
+_022173F8:
+ ldr r0, [sp, #8]
+ cmp r0, #3
+ bgt _02217416
+ cmp r0, #0
+ blt _02217482
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0221740E: ; jump table
+ .short _0221741A - _0221740E - 2 ; case 0
+ .short _02217446 - _0221740E - 2 ; case 1
+ .short _02217482 - _0221740E - 2 ; case 2
+ .short _02217482 - _0221740E - 2 ; case 3
+_02217416:
+ cmp r0, #0xff
+ b _02217482
+_0221741A:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_02013514
+ add r2, sp, #0
+ mov r0, #0
+ mov r1, #8
+ ldrsh r3, [r2, r0]
+ ldrsb r0, [r4, r1]
+ mul r0, r3
+ strh r0, [r2]
+ mov r0, #2
+ ldrsh r3, [r2, r0]
+ ldrsb r0, [r4, r1]
+ mul r0, r3
+ strh r0, [r2, #2]
+ mov r0, #4
+ ldrsh r3, [r2, r0]
+ ldrsb r0, [r4, r1]
+ mul r0, r3
+ strh r0, [r2, #4]
+ b _02217482
+_02217446:
+ ldr r0, [sp, #0x10]
+ add r2, sp, #0
+ strh r0, [r2]
+ ldr r0, [sp, #0x14]
+ mov r1, #8
+ strh r0, [r2, #2]
+ ldr r0, [sp, #0x18]
+ strh r0, [r2, #4]
+ mov r0, #0
+ ldrsh r3, [r2, r0]
+ ldrsb r0, [r4, r1]
+ mul r0, r3
+ strh r0, [r2]
+ mov r0, #2
+ ldrsh r3, [r2, r0]
+ ldrsb r0, [r4, r1]
+ mul r0, r3
+ strh r0, [r2, #2]
+ mov r0, #4
+ ldrsh r3, [r2, r0]
+ ldrsb r0, [r4, r1]
+ add r1, sp, #0
+ mul r0, r3
+ strh r0, [r2, #4]
+ add r0, r5, #0
+ bl FUN_02013514
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, pc}
+_02217482:
+ add r1, sp, #0
+ mov r0, #0
+ ldrsh r2, [r1, r0]
+ ldr r0, [r4, #0x2c]
+ sub r0, r2, r0
+ strh r0, [r1]
+ mov r0, #2
+ ldrsh r2, [r1, r0]
+ ldr r0, [r4, #0x30]
+ sub r0, r2, r0
+ strh r0, [r1, #2]
+ mov r0, #4
+ ldrsh r2, [r1, r0]
+ ldr r0, [r4, #0x34]
+ sub r0, r2, r0
+ strh r0, [r1, #4]
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_02013514
+ mov r0, #1
+ add sp, #0x1c
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD08_022174B0
+MOD08_022174B0: ; 0x022174B0
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_022174B4
+MOD08_022174B4: ; 0x022174B4
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_022174B8
+MOD08_022174B8: ; 0x022174B8
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, sp, #0
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ str r0, [r1, #8]
+ add r0, r4, #0
+ add r1, sp, #0xc
+ bl MOD08_022173BC
+ add r0, r4, #0
+ bl MOD08_0221727C
+ strb r0, [r4, #8]
+ ldr r0, [sp, #0x10]
+ cmp r0, #1
+ bne _022174E4
+ mov r0, #1
+ strb r0, [r4, #8]
+_022174E4:
+ ldr r0, [sp, #0xc]
+ cmp r0, #3
+ bgt _02217502
+ cmp r0, #0
+ blt _02217562
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022174FA: ; jump table
+ .short _02217506 - _022174FA - 2 ; case 0
+ .short _0221752A - _022174FA - 2 ; case 1
+ .short _0221754C - _022174FA - 2 ; case 2
+ .short _02217558 - _022174FA - 2 ; case 3
+_02217502:
+ cmp r0, #0xff
+ b _02217562
+_02217506:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_02013548
+ mov r0, #8
+ ldrsb r1, [r4, r0]
+ ldr r2, [sp]
+ mul r1, r2
+ str r1, [sp]
+ ldrsb r1, [r4, r0]
+ ldr r2, [sp, #4]
+ mul r1, r2
+ str r1, [sp, #4]
+ ldrsb r0, [r4, r0]
+ ldr r1, [sp, #8]
+ mul r0, r1
+ str r0, [sp, #8]
+ b _02217562
+_0221752A:
+ ldr r2, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ str r2, [sp]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #8
+ ldrsb r6, [r4, r3]
+ mul r6, r2
+ str r6, [sp]
+ ldrsb r2, [r4, r3]
+ mul r2, r1
+ str r2, [sp, #4]
+ ldrsb r1, [r4, r3]
+ mul r1, r0
+ str r1, [sp, #8]
+ b _02217562
+_0221754C:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0
+ bl MOD08_0222771C
+ b _02217562
+_02217558:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0
+ bl MOD08_0222771C
+_02217562:
+ ldr r1, [sp]
+ ldr r0, [r4, #0x2c]
+ sub r0, r1, r0
+ str r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #0x30]
+ sub r0, r1, r0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_02013530
+ mov r0, #1
+ add sp, #0x20
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02217580
+MOD08_02217580: ; 0x02217580
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #0
+ add r0, sp, #0
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, sp, #4
+ bl MOD08_022173BC
+ add r0, r4, #0
+ bl MOD08_0221727C
+ strb r0, [r4, #8]
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ bne _022175A8
+ mov r0, #1
+ strb r0, [r4, #8]
+_022175A8:
+ ldr r0, [sp, #4]
+ cmp r0, #3
+ bgt _022175C6
+ cmp r0, #0
+ blt _022175F4
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022175BE: ; jump table
+ .short _022175CA - _022175BE - 2 ; case 0
+ .short _022175E2 - _022175BE - 2 ; case 1
+ .short _022175F4 - _022175BE - 2 ; case 2
+ .short _022175F4 - _022175BE - 2 ; case 3
+_022175C6:
+ cmp r0, #0xff
+ b _022175F4
+_022175CA:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_02013594
+ add r1, sp, #0
+ mov r0, #0
+ ldrsh r2, [r1, r0]
+ mov r0, #8
+ ldrsb r0, [r4, r0]
+ mul r0, r2
+ strh r0, [r1]
+ b _022175F4
+_022175E2:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0
+ strh r0, [r1]
+ mov r0, #0
+ ldrsh r2, [r1, r0]
+ mov r0, #8
+ ldrsb r0, [r4, r0]
+ mul r0, r2
+ strh r0, [r1]
+_022175F4:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0201357C
+ mov r0, #1
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217604
+MOD08_02217604: ; 0x02217604
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #0
+ add r0, sp, #0
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, sp, #4
+ bl MOD08_022173BC
+ add r0, r4, #0
+ bl MOD08_0221727C
+ strb r0, [r4, #8]
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ bne _0221762C
+ mov r0, #1
+ strb r0, [r4, #8]
+_0221762C:
+ ldr r0, [sp, #4]
+ cmp r0, #3
+ bgt _0221764A
+ cmp r0, #0
+ blt _02217674
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02217642: ; jump table
+ .short _0221764E - _02217642 - 2 ; case 0
+ .short _02217664 - _02217642 - 2 ; case 1
+ .short _02217674 - _02217642 - 2 ; case 2
+ .short _02217674 - _02217642 - 2 ; case 3
+_0221764A:
+ cmp r0, #0xff
+ b _02217674
+_0221764E:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_020135C4
+ add r1, sp, #0
+ mov r0, #8
+ ldrh r2, [r1]
+ ldrsb r0, [r4, r0]
+ mul r0, r2
+ strh r0, [r1]
+ b _02217674
+_02217664:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0
+ strh r0, [r1]
+ mov r0, #8
+ ldrh r2, [r1]
+ ldrsb r0, [r4, r0]
+ mul r0, r2
+ strh r0, [r1]
+_02217674:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_020135B0
+ mov r0, #1
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217684
+MOD08_02217684: ; 0x02217684
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #0
+ add r0, sp, #0
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, sp, #4
+ bl MOD08_022173BC
+ add r0, r4, #0
+ bl MOD08_0221727C
+ strb r0, [r4, #8]
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ bne _022176AC
+ mov r0, #1
+ strb r0, [r4, #8]
+_022176AC:
+ ldr r1, [sp, #4]
+ cmp r1, #3
+ bgt _022176CA
+ cmp r1, #0
+ blt _022176DE
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022176C2: ; jump table
+ .short _022176CE - _022176C2 - 2 ; case 0
+ .short _022176D8 - _022176C2 - 2 ; case 1
+ .short _022176DE - _022176C2 - 2 ; case 2
+ .short _022176DE - _022176C2 - 2 ; case 3
+_022176CA:
+ cmp r1, #0xff
+ b _022176DE
+_022176CE:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_020135F4
+ b _022176DE
+_022176D8:
+ ldr r1, [sp, #0xc]
+ add r0, sp, #0
+ strh r1, [r0]
+_022176DE:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_020135E0
+ mov r0, #1
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_022176EC
+MOD08_022176EC: ; 0x022176EC
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_022176F0
+MOD08_022176F0: ; 0x022176F0
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_022176F4
+MOD08_022176F4: ; 0x022176F4
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_022176F8
+MOD08_022176F8: ; 0x022176F8
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_022176FC
+MOD08_022176FC: ; 0x022176FC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r7, r0, #0
+ add r4, r1, #0
+ add r1, sp, #0
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ str r0, [r1, #8]
+ add r0, r4, #0
+ add r1, sp, #0xc
+ bl MOD08_022173BC
+ add r0, r4, #0
+ bl MOD08_0221727C
+ strb r0, [r4, #8]
+ ldr r0, [sp, #0x10]
+ cmp r0, #1
+ bne _02217728
+ mov r0, #1
+ strb r0, [r4, #8]
+_02217728:
+ ldr r0, [sp, #0xc]
+ cmp r0, #4
+ bgt _02217748
+ cmp r0, #0
+ blt _022177E2
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0221773E: ; jump table
+ .short _0221774C - _0221773E - 2 ; case 0
+ .short _02217770 - _0221773E - 2 ; case 1
+ .short _022177CC - _0221773E - 2 ; case 2
+ .short _022177D8 - _0221773E - 2 ; case 3
+ .short _02217792 - _0221773E - 2 ; case 4
+_02217748:
+ cmp r0, #0xff
+ b _022177E2
+_0221774C:
+ add r0, r7, #0
+ add r1, sp, #0
+ bl FUN_02013628
+ mov r0, #8
+ ldrsb r1, [r4, r0]
+ ldr r2, [sp]
+ mul r1, r2
+ str r1, [sp]
+ ldrsb r1, [r4, r0]
+ ldr r2, [sp, #4]
+ mul r1, r2
+ str r1, [sp, #4]
+ ldrsb r0, [r4, r0]
+ ldr r1, [sp, #8]
+ mul r0, r1
+ str r0, [sp, #8]
+ b _022177E2
+_02217770:
+ ldr r2, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ str r2, [sp]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #8
+ ldrsb r5, [r4, r3]
+ mul r5, r2
+ str r5, [sp]
+ ldrsb r2, [r4, r3]
+ mul r2, r1
+ str r2, [sp, #4]
+ ldrsb r1, [r4, r3]
+ mul r1, r0
+ str r1, [sp, #8]
+ b _022177E2
+_02217792:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0
+ bl MOD08_0222771C
+ ldr r1, [sp]
+ ldr r5, [sp, #0x14]
+ add r0, r1, #0
+ ldr r6, [sp, #0x18]
+ mul r0, r5
+ add r1, r6, #0
+ bl _s32_div_f
+ ldr r1, [sp, #4]
+ str r0, [sp]
+ add r0, r1, #0
+ mul r0, r5
+ add r1, r6, #0
+ bl _s32_div_f
+ ldr r1, [sp, #8]
+ str r0, [sp, #4]
+ add r0, r1, #0
+ mul r0, r5
+ add r1, r6, #0
+ bl _s32_div_f
+ str r0, [sp, #8]
+ b _022177E2
+_022177CC:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x24]
+ add r2, sp, #0
+ bl MOD08_0222771C
+ b _022177E2
+_022177D8:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x28]
+ add r2, sp, #0
+ bl MOD08_0222771C
+_022177E2:
+ ldr r1, [sp]
+ ldr r0, [r4, #0x2c]
+ sub r0, r1, r0
+ str r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #0x30]
+ sub r0, r1, r0
+ str r0, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r0, [r4, #0x34]
+ sub r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r1, sp, #0
+ bl FUN_02013610
+ mov r0, #1
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02217808
+MOD08_02217808: ; 0x02217808
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #0
+ add r0, sp, #0
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, sp, #4
+ bl MOD08_022173BC
+ add r0, r4, #0
+ bl MOD08_0221727C
+ strb r0, [r4, #8]
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ bne _02217830
+ mov r0, #1
+ strb r0, [r4, #8]
+_02217830:
+ ldr r0, [sp, #4]
+ cmp r0, #3
+ bgt _0221784E
+ cmp r0, #0
+ blt _0221787C
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02217846: ; jump table
+ .short _02217852 - _02217846 - 2 ; case 0
+ .short _0221786A - _02217846 - 2 ; case 1
+ .short _0221787C - _02217846 - 2 ; case 2
+ .short _0221787C - _02217846 - 2 ; case 3
+_0221784E:
+ cmp r0, #0xff
+ b _0221787C
+_02217852:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_02013674
+ add r1, sp, #0
+ mov r0, #0
+ ldrsh r2, [r1, r0]
+ mov r0, #8
+ ldrsb r0, [r4, r0]
+ mul r0, r2
+ strh r0, [r1]
+ b _0221787C
+_0221786A:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0
+ strh r0, [r1]
+ mov r0, #0
+ ldrsh r2, [r1, r0]
+ mov r0, #8
+ ldrsb r0, [r4, r0]
+ mul r0, r2
+ strh r0, [r1]
+_0221787C:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0201365C
+ mov r0, #1
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221788C
+MOD08_0221788C: ; 0x0221788C
+ push {r3, lr}
+ add r3, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ ldr r2, _022178A0 ; =0x0222C204
+ lsl r3, r3, #2
+ ldr r2, [r2, r3]
+ blx r2
+ pop {r3, pc}
+ nop
+_022178A0: .word 0x0222C204
+
+ thumb_func_start MOD08_022178A4
+MOD08_022178A4: ; 0x022178A4
+ push {r3, r4, r5}
+ sub sp, #0x3c
+ ldr r4, _022178C8 ; =0x0222C23C
+ add r5, r0, #0
+ add r3, sp, #0
+ mov r2, #7
+_022178B0:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022178B0
+ ldr r0, [r4]
+ lsl r1, r5, #2
+ str r0, [r3]
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ add sp, #0x3c
+ pop {r3, r4, r5}
+ bx lr
+ .align 2, 0
+_022178C8: .word 0x0222C23C
+
+ thumb_func_start MOD08_022178CC
+MOD08_022178CC: ; 0x022178CC
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ ldr r6, _022178F4 ; =0x0000FEFE
+ add r5, r4, #0
+_022178D4:
+ add r0, r4, #0
+ bl MOD08_022178A4
+ add r4, r4, #1
+ cmp r0, r6
+ beq _022178E6
+ add r5, r5, #1
+ cmp r5, #0xff
+ blt _022178D4
+_022178E6:
+ cmp r5, #0xff
+ blt _022178EE
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_022178EE:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_022178F4: .word 0x0000FEFE
+
+ thumb_func_start MOD08_022178F8
+MOD08_022178F8: ; 0x022178F8
+ ldr r3, _02217900 ; =MOD08_02215434
+ ldr r0, [r0]
+ mov r2, #4
+ bx r3
+ .align 2, 0
+_02217900: .word MOD08_02215434
+
+ thumb_func_start MOD08_02217904
+MOD08_02217904: ; 0x02217904
+ push {r3, lr}
+ sub sp, #8
+ add r2, sp, #0
+ mov r0, #0
+ strh r0, [r2]
+ strh r0, [r2, #2]
+ strh r0, [r2, #4]
+ strh r0, [r2, #6]
+ ldr r0, [r1, #4]
+ bl FUN_0201343C
+ add r1, r0, #0
+ add r0, sp, #0
+ bl FUN_0201EF90
+ mov r0, #1
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02217928
+MOD08_02217928: ; 0x02217928
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r1, _02217960 ; =0x0222C278
+ add r0, sp, #0
+ ldrh r2, [r1, #0x20]
+ strh r2, [r0]
+ ldrh r2, [r1, #0x22]
+ strh r2, [r0, #2]
+ ldrh r2, [r1, #0x24]
+ ldrh r1, [r1, #0x26]
+ strh r2, [r0, #4]
+ strh r1, [r0, #6]
+ ldr r0, [r4, #4]
+ bl FUN_0201343C
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02013440
+ add r0, sp, #0
+ add r1, r5, #0
+ bl FUN_0201EF90
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02217960: .word 0x0222C278
+
+ thumb_func_start MOD08_02217964
+MOD08_02217964: ; 0x02217964
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r1, #0
+ add r1, sp, #0
+ mov r0, #0
+ strh r0, [r1]
+ strh r0, [r1, #2]
+ strh r0, [r1, #4]
+ strh r0, [r1, #6]
+ add r0, r4, #0
+ add r1, sp, #8
+ bl MOD08_022178F8
+ ldr r1, [sp, #0xc]
+ add r0, sp, #0
+ strh r1, [r0]
+ ldr r1, [sp, #0x10]
+ strh r1, [r0, #2]
+ ldr r1, [sp, #0x14]
+ strh r1, [r0, #4]
+ ldr r0, [r4, #4]
+ bl FUN_0201343C
+ add r1, r0, #0
+ add r0, sp, #0
+ bl FUN_0201EF90
+ mov r0, #1
+ add sp, #0x18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022179A0
+MOD08_022179A0: ; 0x022179A0
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r1, _022179D8 ; =0x0222C278
+ add r0, sp, #0
+ ldrh r2, [r1, #0x18]
+ strh r2, [r0]
+ ldrh r2, [r1, #0x1a]
+ strh r2, [r0, #2]
+ ldrh r2, [r1, #0x1c]
+ ldrh r1, [r1, #0x1e]
+ strh r2, [r0, #4]
+ strh r1, [r0, #6]
+ ldr r0, [r4, #4]
+ bl FUN_0201343C
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02013440
+ add r0, sp, #0
+ add r1, r5, #0
+ bl FUN_0201EF90
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022179D8: .word 0x0222C278
+
+ thumb_func_start MOD08_022179DC
+MOD08_022179DC: ; 0x022179DC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ ldr r1, _02217A38 ; =0x0222C278
+ add r0, sp, #0
+ ldrh r2, [r1, #0x10]
+ strh r2, [r0, #8]
+ ldrh r2, [r1, #0x12]
+ strh r2, [r0, #0xa]
+ ldrh r2, [r1, #0x14]
+ strh r2, [r0, #0xc]
+ ldrh r2, [r1, #0x16]
+ strh r2, [r0, #0xe]
+ ldrh r2, [r1, #0x28]
+ strh r2, [r0]
+ ldrh r2, [r1, #0x2a]
+ strh r2, [r0, #2]
+ ldrh r2, [r1, #0x2c]
+ strh r2, [r0, #4]
+ ldrh r1, [r1, #0x2e]
+ strh r1, [r0, #6]
+ ldr r0, [r4, #4]
+ bl FUN_0201343C
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02013440
+ ldr r0, [r4]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02217A2A
+ add r0, sp, #8
+ add r1, r5, #0
+ bl FUN_0201EF90
+ b _02217A32
+_02217A2A:
+ add r0, sp, #0
+ add r1, r5, #0
+ bl FUN_0201EF90
+_02217A32:
+ mov r0, #1
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02217A38: .word 0x0222C278
+
+ thumb_func_start MOD08_02217A3C
+MOD08_02217A3C: ; 0x02217A3C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r1, _02217A74 ; =0x0222C278
+ add r0, sp, #0
+ ldrh r2, [r1]
+ strh r2, [r0]
+ ldrh r2, [r1, #2]
+ strh r2, [r0, #2]
+ ldrh r2, [r1, #4]
+ ldrh r1, [r1, #6]
+ strh r2, [r0, #4]
+ strh r1, [r0, #6]
+ ldr r0, [r4, #4]
+ bl FUN_0201343C
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02013440
+ add r0, sp, #0
+ add r1, r5, #0
+ bl FUN_0201EF90
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02217A74: .word 0x0222C278
+
+ thumb_func_start MOD08_02217A78
+MOD08_02217A78: ; 0x02217A78
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r1, _02217AB0 ; =0x0222C278
+ add r0, sp, #0
+ ldrh r2, [r1, #8]
+ strh r2, [r0]
+ ldrh r2, [r1, #0xa]
+ strh r2, [r0, #2]
+ ldrh r2, [r1, #0xc]
+ ldrh r1, [r1, #0xe]
+ strh r2, [r0, #4]
+ strh r1, [r0, #6]
+ ldr r0, [r4, #4]
+ bl FUN_0201343C
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02013440
+ add r0, sp, #0
+ add r1, r5, #0
+ bl FUN_0201EF90
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02217AB0: .word 0x0222C278
+
+ thumb_func_start MOD08_02217AB4
+MOD08_02217AB4: ; 0x02217AB4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r0, [r5, #4]
+ bl FUN_0201343C
+ add r4, r0, #0
+ ldr r0, [r5]
+ ldr r1, [r5, #0x24]
+ add r2, sp, #0
+ bl MOD08_022278FC
+ add r0, sp, #0
+ add r1, r4, #0
+ bl FUN_0201F04C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217ADC
+MOD08_02217ADC: ; 0x02217ADC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r0, [r5, #4]
+ bl FUN_0201343C
+ add r4, r0, #0
+ ldr r0, [r5]
+ ldr r1, [r5, #0x28]
+ add r2, sp, #0
+ bl MOD08_022278FC
+ add r0, sp, #0
+ add r1, r4, #0
+ bl FUN_0201F04C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217B04
+MOD08_02217B04: ; 0x02217B04
+ push {r3, lr}
+ add r3, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ ldr r2, _02217B18 ; =0x0222C2A8
+ lsl r3, r3, #2
+ ldr r2, [r2, r3]
+ blx r2
+ pop {r3, pc}
+ nop
+_02217B18: .word 0x0222C2A8
+
+ thumb_func_start MOD08_02217B1C
+MOD08_02217B1C: ; 0x02217B1C
+ push {r3, r4, r5, r6}
+ cmp r2, #0
+ beq _02217B32
+ mov r4, #0x18
+ add r6, r0, #0
+ mul r6, r4
+ ldr r4, _02217B48 ; =0x0222C2CC
+ lsl r5, r1, #2
+ add r4, r4, r6
+ ldrsh r4, [r5, r4]
+ strh r4, [r2]
+_02217B32:
+ cmp r3, #0
+ beq _02217B44
+ mov r2, #0x18
+ mul r2, r0
+ ldr r0, _02217B4C ; =0x0222C2CE
+ lsl r1, r1, #2
+ add r0, r0, r2
+ ldrsh r0, [r1, r0]
+ strh r0, [r3]
+_02217B44:
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+_02217B48: .word 0x0222C2CC
+_02217B4C: .word 0x0222C2CE
+
+ thumb_func_start MOD08_02217B50
+MOD08_02217B50: ; 0x02217B50
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02217B70
+ mov r0, #0
+ add r1, r5, #2
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD08_02217B1C
+ pop {r3, r4, r5, r6, r7, pc}
+_02217B70:
+ add r0, r7, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _02217B88
+ mov r0, #1
+ sub r1, r5, #2
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD08_02217B1C
+ pop {r3, r4, r5, r6, r7, pc}
+_02217B88:
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD08_02217B1C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217B98
+MOD08_02217B98: ; 0x02217B98
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r2, #0
+ bl MOD08_02227468
+ add r4, r0, #0
+ add r0, r7, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _02217BB2
+ mov r5, #1
+ b _02217BB4
+_02217BB2:
+ mov r5, #0
+_02217BB4:
+ add r0, r7, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02217BC0
+ add r4, r4, #2
+_02217BC0:
+ cmp r6, #3
+ bhi _02217BF8
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02217BD0: ; jump table
+ .short _02217BD8 - _02217BD0 - 2 ; case 0
+ .short _02217BE8 - _02217BD0 - 2 ; case 1
+ .short _02217BD8 - _02217BD0 - 2 ; case 2
+ .short _02217BE8 - _02217BD0 - 2 ; case 3
+_02217BD8:
+ mov r0, #0x18
+ add r2, r5, #0
+ mul r2, r0
+ ldr r0, _02217C00 ; =0x0222C2CC
+ lsl r1, r4, #2
+ add r0, r0, r2
+ ldrsh r0, [r1, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_02217BE8:
+ mov r0, #0x18
+ add r2, r5, #0
+ mul r2, r0
+ ldr r0, _02217C04 ; =0x0222C2CE
+ lsl r1, r4, #2
+ add r0, r0, r2
+ ldrsh r0, [r1, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_02217BF8:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02217C00: .word 0x0222C2CC
+_02217C04: .word 0x0222C2CE
+
+ thumb_func_start MOD08_02217C08
+MOD08_02217C08: ; 0x02217C08
+ push {r3, lr}
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02217C1C
+MOD08_02217C1C: ; 0x02217C1C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r5, #1
+ bl MOD08_02227470
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD08_02212004
+ cmp r0, #0
+ beq _02217C3A
+ cmp r4, #3
+ bne _02217C40
+ sub r5, r5, #2
+ b _02217C40
+_02217C3A:
+ cmp r4, #4
+ bne _02217C40
+ sub r5, r5, #2
+_02217C40:
+ add r0, r5, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02217C44
+MOD08_02217C44: ; 0x02217C44
+ push {r4, lr}
+ mov r4, #1
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _02217C52
+ sub r4, r4, #2
+_02217C52:
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217C58
+MOD08_02217C58: ; 0x02217C58
+ ldr r3, _02217C60 ; =0x020C50B8
+ sub r0, r1, r0
+ lsl r1, r2, #0xc
+ bx r3
+ .align 2, 0
+_02217C60: .word 0x020C50B8
+
+ thumb_func_start MOD08_02217C64
+MOD08_02217C64: ; 0x02217C64
+ push {r3, lr}
+ sub r0, r1, r0
+ add r1, r2, #0
+ bl FX_Div
+ add r1, sp, #0
+ str r0, [sp]
+ bl FX_Modf
+ cmp r0, #0
+ beq _02217C84
+ mov r0, #1
+ ldr r1, [sp]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp]
+_02217C84:
+ ldr r0, [sp]
+ cmp r0, #0
+ bge _02217C8C
+ neg r0, r0
+_02217C8C:
+ str r0, [sp]
+ asr r0, r0, #0xc
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217C94
+MOD08_02217C94: ; 0x02217C94
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #0
+ ldrsh r1, [r4, r1]
+ add r1, r2, r1
+ mov r2, #2
+ ldrsh r2, [r4, r2]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02217CB4
+MOD08_02217CB4: ; 0x02217CB4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD08_0221825C
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ add r0, r4, #0
+ bl FUN_0200C884
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02217CD0
+MOD08_02217CD0: ; 0x02217CD0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #0
+ add r6, r3, #0
+ ldrsh r3, [r5, r1]
+ add r0, r4, #0
+ add r2, r2, r3
+ bl FUN_02007558
+ mov r2, #2
+ ldrsh r2, [r5, r2]
+ add r0, r4, #0
+ mov r1, #1
+ add r2, r6, r2
+ bl FUN_02007558
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02217CF4
+MOD08_02217CF4: ; 0x02217CF4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r2, #0
+ add r4, r1, #0
+ ldrsh r2, [r5, r2]
+ add r0, r4, #0
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #2
+ ldrsh r2, [r5, r2]
+ add r0, r4, #0
+ mov r1, #0xd
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02217D14
+MOD08_02217D14: ; 0x02217D14
+ push {r3, r4, r5, lr}
+ add r4, r3, #0
+ add r5, r0, #0
+ ldr r3, [sp, #0x1c]
+ ldr r0, [sp, #0x14]
+ str r3, [r5, #4]
+ str r1, [r5, #8]
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #0x18]
+ str r4, [r5, #0x10]
+ str r0, [r5, #0x14]
+ sub r0, r2, r1
+ add r1, r3, #0
+ bl _s32_div_f
+ str r0, [r5, #0x18]
+ add r0, sp, #0
+ ldrh r0, [r0, #0x10]
+ ldr r1, [sp, #0x1c]
+ sub r0, r0, r4
+ bl _s32_div_f
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02217D44
+MOD08_02217D44: ; 0x02217D44
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ cmp r5, #0
+ bne _02217D56
+ bl ErrorHandling
+_02217D56:
+ cmp r4, r7
+ bls _02217D62
+ add r0, sp, #8
+ ldrh r1, [r0, #0x1c]
+ neg r1, r1
+ strh r1, [r0, #0x1c]
+_02217D62:
+ add r1, sp, #8
+ mov r0, #0x1c
+ ldrsh r6, [r1, r0]
+ lsl r0, r4, #0xc
+ lsl r1, r7, #0xc
+ lsl r2, r6, #0xc
+ bl MOD08_02217C64
+ str r0, [r5, #4]
+ ldr r0, [sp, #0x1c]
+ str r4, [r5, #8]
+ str r0, [r5, #0xc]
+ ldr r0, [sp]
+ str r0, [r5, #0x10]
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x14]
+ str r6, [r5, #0x18]
+ add r0, sp, #8
+ ldrh r1, [r0, #0x10]
+ ldr r0, [sp]
+ sub r0, r1, r0
+ ldr r1, [r5, #4]
+ bl _s32_div_f
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217D98
+MOD08_02217D98: ; 0x02217D98
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02217DA2
+ bl ErrorHandling
+_02217DA2:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02217E26
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0x18]
+ add r0, r1, r0
+ str r0, [r4, #8]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x1c]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ ldr r2, [r4, #0xc]
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _02217E2C ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ asr r0, r1, #0xc
+ strh r0, [r4]
+ ldr r0, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ asr r0, r0, #4
+ lsl r0, r0, #1
+ add r0, r0, #1
+ lsl r1, r0, #1
+ ldr r0, _02217E2C ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ asr r0, r1, #0xc
+ strh r0, [r4, #2]
+ mov r0, #1
+ pop {r4, pc}
+_02217E26:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02217E2C: .word 0x020FFA38
+
+ thumb_func_start MOD08_02217E30
+MOD08_02217E30: ; 0x02217E30
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD08_02217D98
+ cmp r0, #0
+ beq _02217E52
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD08_02217C94
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02217E52:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217E58
+MOD08_02217E58: ; 0x02217E58
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD08_02217D98
+ cmp r0, #0
+ beq _02217E7A
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD08_02217CD0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02217E7A:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217E80
+MOD08_02217E80: ; 0x02217E80
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r3, #0
+ str r2, [sp]
+ cmp r5, #0
+ bne _02217E94
+ bl ErrorHandling
+_02217E94:
+ strh r4, [r5]
+ strh r6, [r5, #2]
+ add r0, sp, #0x10
+ ldrh r7, [r0, #0x14]
+ lsl r0, r4, #0xc
+ str r0, [sp, #4]
+ str r7, [r5, #4]
+ ldr r1, [sp]
+ add r2, r7, #0
+ lsl r1, r1, #0xc
+ bl MOD08_02217C58
+ str r0, [r5, #8]
+ lsl r4, r6, #0xc
+ add r2, sp, #0x10
+ mov r1, #0x10
+ ldrsh r1, [r2, r1]
+ add r0, r4, #0
+ add r2, r7, #0
+ lsl r1, r1, #0xc
+ bl MOD08_02217C58
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #4]
+ str r0, [r5, #0x10]
+ str r4, [r5, #0x14]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02217ECC
+MOD08_02217ECC: ; 0x02217ECC
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02217ED6
+ bl ErrorHandling
+_02217ED6:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02217F02
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #8]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ asr r0, r0, #0xc
+ strh r0, [r4]
+ ldr r0, [r4, #0x14]
+ asr r0, r0, #0xc
+ strh r0, [r4, #2]
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #1
+ pop {r4, pc}
+_02217F02:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217F08
+MOD08_02217F08: ; 0x02217F08
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _02217F26
+ mov r2, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD08_02217C94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02217F26:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217F2C
+MOD08_02217F2C: ; 0x02217F2C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _02217F4A
+ mov r2, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD08_02217CD0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02217F4A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02217F50
+MOD08_02217F50: ; 0x02217F50
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r4, sp, #0x10
+ mov r1, #0x14
+ ldrsh r1, [r4, r1]
+ str r1, [sp]
+ ldrh r1, [r4, #0x18]
+ str r1, [sp, #4]
+ add r1, r2, #0
+ add r2, r3, #0
+ mov r3, #0x10
+ ldrsh r3, [r4, r3]
+ bl MOD08_02217E80
+ mov r1, #0
+ strh r1, [r5]
+ ldr r0, _02217F94 ; =0x0000BFFF
+ strh r1, [r5, #2]
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ ldrh r0, [r0, #0x18]
+ ldr r3, _02217F98 ; =0x00003FFF
+ add r2, r1, #0
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ bl MOD08_02217D14
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_02217F94: .word 0x0000BFFF
+_02217F98: .word 0x00003FFF
+
+ thumb_func_start MOD08_02217F9C
+MOD08_02217F9C: ; 0x02217F9C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0
+ bne _02217FAA
+ bl ErrorHandling
+_02217FAA:
+ cmp r4, #0
+ bne _02217FB2
+ bl ErrorHandling
+_02217FB2:
+ add r0, r5, #0
+ bl MOD08_02217ECC
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD08_02217D98
+ mov r2, #0
+ ldrsh r3, [r5, r2]
+ ldrsh r1, [r4, r2]
+ add r1, r3, r1
+ strh r1, [r5]
+ mov r1, #2
+ ldrsh r3, [r5, r1]
+ ldrsh r1, [r4, r1]
+ add r1, r3, r1
+ strh r1, [r5, #2]
+ cmp r6, r0
+ bne _02217FE0
+ cmp r6, #0
+ bne _02217FE0
+ add r0, r2, #0
+ pop {r4, r5, r6, pc}
+_02217FE0:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02217FE4
+MOD08_02217FE4: ; 0x02217FE4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ bl MOD08_02217F9C
+ cmp r0, #0
+ beq _02218002
+ mov r2, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD08_02217C94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02218002:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218008
+MOD08_02218008: ; 0x02218008
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r4, r3, #0
+ cmp r5, #0
+ bne _0221801A
+ bl ErrorHandling
+_0221801A:
+ str r6, [r5]
+ lsl r0, r6, #0xc
+ lsl r1, r7, #0xc
+ add r2, r4, #0
+ str r4, [r5, #4]
+ bl MOD08_02217C58
+ asr r0, r0, #0xc
+ str r0, [r5, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218030
+MOD08_02218030: ; 0x02218030
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r4, r3, #0
+ cmp r5, #0
+ bne _02218042
+ bl ErrorHandling
+_02218042:
+ str r6, [r5]
+ lsl r6, r6, #0xc
+ add r0, r6, #0
+ lsl r1, r7, #0xc
+ add r2, r4, #0
+ str r4, [r5, #4]
+ bl MOD08_02217C58
+ str r0, [r5, #8]
+ str r6, [r5, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02218058
+MOD08_02218058: ; 0x02218058
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02218062
+ bl ErrorHandling
+_02218062:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _0221807A
+ ldr r1, [r4]
+ ldr r0, [r4, #8]
+ add r0, r1, r0
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #1
+ pop {r4, pc}
+_0221807A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218080
+MOD08_02218080: ; 0x02218080
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221808A
+ bl ErrorHandling
+_0221808A:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _022180A6
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #8]
+ add r0, r1, r0
+ str r0, [r4, #0xc]
+ asr r0, r0, #0xc
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #1
+ pop {r4, pc}
+_022180A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022180AC
+MOD08_022180AC: ; 0x022180AC
+ push {r3, r4, r5, lr}
+ ldr r4, [sp, #0x10]
+ add r5, r0, #0
+ str r4, [r5, #4]
+ str r1, [r5, #8]
+ sub r0, r2, r1
+ add r1, r4, #0
+ str r3, [r5, #0xc]
+ bl _u32_div_f
+ str r0, [r5, #0x10]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_022180C4
+MOD08_022180C4: ; 0x022180C4
+ push {r4, lr}
+ add r4, r0, #0
+ bne _022180CE
+ bl ErrorHandling
+_022180CE:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02218116
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0x10]
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ ldr r2, [r4, #0xc]
+ asr r0, r0, #4
+ lsl r0, r0, #1
+ add r0, r0, #1
+ lsl r1, r0, #1
+ ldr r0, _0221811C ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ asr r0, r1, #0xc
+ str r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_02218116:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_0221811C: .word 0x020FFA38
+
+ thumb_func_start MOD08_02218120
+MOD08_02218120: ; 0x02218120
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r4, #0
+ bne _02218132
+ bl ErrorHandling
+_02218132:
+ ldr r0, [sp, #0x18]
+ add r1, r6, #0
+ str r0, [r4, #4]
+ lsl r0, r5, #8
+ bl _s32_div_f
+ add r5, r0, #0
+ lsl r0, r7, #8
+ add r1, r6, #0
+ bl _s32_div_f
+ add r1, r0, #0
+ ldr r2, [sp, #0x18]
+ lsl r0, r5, #0xc
+ lsl r1, r1, #0xc
+ bl MOD08_02217C58
+ str r0, [r4, #8]
+ lsl r0, r5, #0x10
+ asr r0, r0, #0x10
+ strh r0, [r4]
+ strh r0, [r4, #2]
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x10]
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x14]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02218170
+MOD08_02218170: ; 0x02218170
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221817A
+ bl ErrorHandling
+_0221817A:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _022181A4
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #8]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #8]
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ asr r0, r0, #0xc
+ strh r0, [r4]
+ ldr r0, [r4, #0x14]
+ asr r0, r0, #0xc
+ strh r0, [r4, #2]
+ mov r0, #1
+ pop {r4, pc}
+_022181A4:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022181A8
+MOD08_022181A8: ; 0x022181A8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ cmp r5, #0
+ bne _022181BA
+ bl ErrorHandling
+_022181BA:
+ ldr r0, [sp, #0x20]
+ add r1, sp, #8
+ str r0, [r5, #4]
+ mov r0, #0x14
+ ldrsh r4, [r1, r0]
+ lsl r0, r6, #8
+ add r1, r4, #0
+ bl _s32_div_f
+ add r6, r0, #0
+ lsl r0, r7, #8
+ add r1, r4, #0
+ bl _s32_div_f
+ add r1, r0, #0
+ ldr r2, [sp, #0x20]
+ lsl r0, r6, #0xc
+ lsl r1, r1, #0xc
+ bl MOD08_02217C58
+ str r0, [r5, #8]
+ ldr r0, [sp]
+ add r1, r4, #0
+ lsl r0, r0, #8
+ bl _s32_div_f
+ add r7, r0, #0
+ add r1, sp, #8
+ mov r0, #0x10
+ ldrsh r0, [r1, r0]
+ add r1, r4, #0
+ lsl r0, r0, #8
+ bl _s32_div_f
+ add r1, r0, #0
+ ldr r2, [sp, #0x20]
+ lsl r0, r7, #0xc
+ lsl r1, r1, #0xc
+ bl MOD08_02217C58
+ str r0, [r5, #0xc]
+ strh r6, [r5]
+ strh r7, [r5, #2]
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ lsl r0, r0, #0xc
+ str r0, [r5, #0x10]
+ mov r0, #2
+ ldrsh r0, [r5, r0]
+ lsl r0, r0, #0xc
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218224
+MOD08_02218224: ; 0x02218224
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221822E
+ bl ErrorHandling
+_0221822E:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02218258
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #8]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ asr r0, r0, #0xc
+ strh r0, [r4]
+ ldr r0, [r4, #0x14]
+ asr r0, r0, #0xc
+ strh r0, [r4, #2]
+ mov r0, #1
+ pop {r4, pc}
+_02218258:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD08_0221825C
+MOD08_0221825C: ; 0x0221825C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ add r4, r1, #0
+ add r6, r2, #0
+ bl _fflt
+ ldr r1, _02218288 ; =0x43800000
+ bl _fdiv
+ str r0, [r4]
+ mov r0, #2
+ ldrsh r0, [r5, r0]
+ bl _fflt
+ ldr r1, _02218288 ; =0x43800000
+ bl _fdiv
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ nop
+_02218288: .word 0x43800000
+
+ thumb_func_start MOD08_0221828C
+MOD08_0221828C: ; 0x0221828C
+ push {r3, r4, lr}
+ sub sp, #4
+ lsl r1, r1, #1
+ mov r0, #0x50
+ sub r0, r0, r1
+ lsl r4, r0, #0xc
+ asr r1, r4, #0x1f
+ add r0, r4, #0
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ lsl r1, r2, #9
+ bl FX_Div
+ sub r0, r4, r0
+ add r1, sp, #0
+ bl FX_Modf
+ cmp r0, #0
+ beq _022182CA
+ mov r1, #2
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+_022182CA:
+ ldr r1, [sp]
+ add r0, r1, r0
+ asr r1, r0, #0xc
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ lsl r0, r0, #0xf
+ asr r0, r0, #0x10
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_022182DC
+MOD08_022182DC: ; 0x022182DC
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r3, #0
+ bl MOD08_0221828C
+ add r2, r0, #0
+ ldr r0, [sp, #0x10]
+ cmp r0, #1
+ bne _02218306
+ mov r0, #0
+ mvn r0, r0
+ mul r0, r2
+ lsl r0, r0, #0x10
+ asr r2, r0, #0x10
+ sub r0, r4, r6
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+_02218306:
+ add r0, r5, #0
+ mov r1, #1
+ add r2, r4, r2
+ bl FUN_02007558
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218314
+MOD08_02218314: ; 0x02218314
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r3, #0
+ bl MOD08_0221828C
+ add r4, r0, #0
+ ldr r0, [sp, #0x18]
+ cmp r0, #1
+ bne _0221833E
+ mov r0, #0
+ mvn r0, r0
+ mul r0, r4
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ sub r0, r5, r7
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+_0221833E:
+ add r1, sp, #0
+ add r0, r6, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r2, sp, #0
+ mov r1, #2
+ ldrsh r1, [r2, r1]
+ add r2, r5, r4
+ lsl r2, r2, #0x10
+ add r0, r6, #0
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218360
+MOD08_02218360: ; 0x02218360
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD08_02218170
+ cmp r0, #0
+ beq _0221837A
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02217CB4
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0221837A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218380
+MOD08_02218380: ; 0x02218380
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD08_02218170
+ cmp r0, #0
+ beq _0221839A
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02217CF4
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0221839A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022183A0
+MOD08_022183A0: ; 0x022183A0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD08_02218224
+ cmp r0, #0
+ beq _022183BA
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02217CF4
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022183BA:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022183C0
+MOD08_022183C0: ; 0x022183C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ add r7, r3, #0
+ cmp r5, #0
+ bne _022183D2
+ bl ErrorHandling
+_022183D2:
+ str r7, [r5, #4]
+ ldr r0, [sp, #0x18]
+ str r7, [r5, #8]
+ str r0, [r5, #0xc]
+ mov r1, #0
+ str r1, [r5, #0x10]
+ str r6, [r5, #0x14]
+ str r4, [r5, #0x18]
+ neg r0, r6
+ str r0, [r5, #0x1c]
+ neg r0, r4
+ str r0, [r5, #0x20]
+ strh r1, [r5]
+ strh r1, [r5, #2]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_022183F0
+MOD08_022183F0: ; 0x022183F0
+ push {r4, lr}
+ add r4, r0, #0
+ bne _022183FA
+ bl ErrorHandling
+_022183FA:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _0221844E
+ ldr r0, [r4, #4]
+ add r1, r0, #1
+ str r1, [r4, #4]
+ ldr r0, [r4, #8]
+ cmp r1, r0
+ blt _0221844A
+ mov r2, #0
+ str r2, [r4, #4]
+ ldrsh r0, [r4, r2]
+ ldr r1, [r4, #0x1c]
+ str r0, [r4, #0x1c]
+ cmp r1, #0
+ bne _0221841E
+ strh r2, [r4]
+ b _02218422
+_0221841E:
+ neg r0, r1
+ strh r0, [r4]
+_02218422:
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #0x20]
+ str r0, [r4, #0x20]
+ cmp r1, #0
+ bne _02218432
+ mov r0, #0
+ b _02218434
+_02218432:
+ neg r0, r1
+_02218434:
+ strh r0, [r4, #2]
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ cmp r0, #4
+ blt _0221844A
+ mov r0, #0
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ sub r0, r0, #1
+ str r0, [r4, #0xc]
+_0221844A:
+ mov r0, #1
+ pop {r4, pc}
+_0221844E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218454
+MOD08_02218454: ; 0x02218454
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD08_022183F0
+ cmp r0, #0
+ beq _02218476
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD08_02217CD0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02218476:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221847C
+MOD08_0221847C: ; 0x0221847C
+ push {r3, r4, r5, r6, r7, lr}
+ mov ip, r1
+ str r0, [sp]
+ strh r3, [r0]
+ add r0, sp, #8
+ mov r1, #0x10
+ ldrsh r3, [r0, r1]
+ ldr r1, [sp]
+ mov r6, #0
+ strh r3, [r1, #2]
+ add r1, #0x94
+ str r2, [r1]
+ ldr r1, [sp]
+ ldrh r2, [r0, #0x14]
+ add r1, #0xa8
+ strh r2, [r1]
+ ldr r1, [sp]
+ add r1, #0xaa
+ strh r6, [r1]
+ ldr r1, [sp]
+ ldrb r7, [r0, #0x18]
+ add r1, #0xac
+ strb r7, [r1]
+ ldr r1, [sp]
+ add r1, #0xad
+ strb r6, [r1]
+ ldrb r1, [r0, #0x1c]
+ ldr r0, [sp]
+ add r0, #0xae
+ strb r1, [r0]
+ cmp r7, #0
+ ble _022184D8
+ ldr r5, [sp]
+_022184BE:
+ mov r4, ip
+ add r3, r5, #4
+ mov r2, #4
+_022184C4:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022184C4
+ ldr r0, [r4]
+ add r6, r6, #1
+ str r0, [r3]
+ add r5, #0x24
+ cmp r6, r7
+ blt _022184BE
+_022184D8:
+ ldr r0, [sp]
+ ldr r1, [sp, #0x28]
+ add r0, #0x98
+ str r1, [r0]
+ ldr r0, [sp]
+ ldr r1, [sp, #0x2c]
+ add r0, #0x9c
+ str r1, [r0]
+ ldr r0, [sp]
+ ldr r1, [sp, #0x30]
+ add r0, #0xa0
+ str r1, [r0]
+ ldr r0, [sp]
+ ldr r1, [sp, #0x34]
+ add r0, #0xa4
+ str r1, [r0]
+ ldr r0, [sp]
+ mov r5, #0
+ add r0, #0xac
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _02218522
+ ldr r4, [sp]
+ add r6, r5, #0
+_02218508:
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ add r1, r6, #0
+ bl FUN_0200C644
+ ldr r0, [sp]
+ add r5, r5, #1
+ add r0, #0xac
+ ldrb r0, [r0]
+ add r4, r4, #4
+ cmp r5, r0
+ blt _02218508
+_02218522:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02218524
+MOD08_02218524: ; 0x02218524
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ mov r0, #0
+ add r2, sp, #0x10
+ mov r1, #1
+_02218530:
+ add r0, r0, #1
+ stmia r2!, {r1}
+ cmp r0, #4
+ blt _02218530
+ add r0, r5, #0
+ add r0, #0xa8
+ ldrh r2, [r0]
+ add r0, r5, #0
+ add r0, #0xaa
+ ldrh r0, [r0]
+ cmp r2, r0
+ bhi _02218570
+ add r0, r5, #0
+ add r0, #0xad
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r0, #0x98
+ ldr r0, [r0]
+ bl FUN_0200C644
+ add r0, r5, #0
+ add r0, #0xad
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0xad
+ strb r1, [r0]
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xaa
+ strh r1, [r0]
+_02218570:
+ add r0, r5, #0
+ add r0, #0xad
+ ldrb r1, [r0]
+ add r0, r5, #0
+ add r0, #0xac
+ ldrb r0, [r0]
+ cmp r1, r0
+ bhs _0221858E
+ add r0, r5, #0
+ add r0, #0xaa
+ ldrh r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0xaa
+ strh r1, [r0]
+_0221858E:
+ mov r0, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xad
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _0221862E
+ add r0, sp, #0x10
+ add r7, r5, #4
+ str r0, [sp, #4]
+ add r6, r5, #0
+ add r4, r5, #0
+_022185A6:
+ add r1, r5, #0
+ add r1, #0x94
+ ldr r1, [r1]
+ add r0, r7, #0
+ blx r1
+ ldr r1, [sp, #4]
+ cmp r0, #0
+ str r0, [r1]
+ beq _02218604
+ add r0, r5, #0
+ add r0, #0xae
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022185EA
+ mov r1, #0
+ mov r2, #4
+ ldrsh r1, [r5, r1]
+ ldrsh r2, [r6, r2]
+ add r0, r4, #0
+ add r0, #0x98
+ add r1, r1, r2
+ mov r2, #2
+ ldrsh r3, [r5, r2]
+ mov r2, #6
+ ldrsh r2, [r6, r2]
+ lsl r1, r1, #0x10
+ ldr r0, [r0]
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ b _02218610
+_022185EA:
+ add r0, r7, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD08_0221825C
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #8]
+ bl FUN_0200C884
+ b _02218610
+_02218604:
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200C644
+_02218610:
+ ldr r0, [sp, #4]
+ add r7, #0x24
+ add r0, r0, #4
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ add r6, #0x24
+ add r0, r0, #1
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xad
+ ldrb r1, [r0]
+ ldr r0, [sp]
+ add r4, r4, #4
+ cmp r0, r1
+ blt _022185A6
+_0221862E:
+ add r5, #0xac
+ ldrb r2, [r5]
+ mov r3, #0
+ cmp r2, #0
+ ble _0221864E
+ add r1, sp, #0x10
+_0221863A:
+ ldr r0, [r1]
+ cmp r0, #1
+ bne _02218646
+ add sp, #0x20
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02218646:
+ add r3, r3, #1
+ add r1, r1, #4
+ cmp r3, r2
+ blt _0221863A
+_0221864E:
+ mov r0, #0
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02218654
+MOD08_02218654: ; 0x02218654
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ ldr r3, _02218684 ; =0x0000FFFF
+ add r4, r1, #0
+ mov r1, #2
+ str r3, [sp]
+ lsl r1, r1, #0x10
+ str r1, [sp, #4]
+ ldr r1, _02218688 ; =0xFFFF8000
+ add r5, r0, #0
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ mov r1, #0
+ add r2, r3, #0
+ add r3, r1, #0
+ bl MOD08_02217D14
+ ldr r0, [r5, #4]
+ add r1, r0, #0
+ mul r1, r4
+ str r1, [r5, #4]
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_02218684: .word 0x0000FFFF
+_02218688: .word 0xFFFF8000
+
+ thumb_func_start MOD08_0221868C
+MOD08_0221868C: ; 0x0221868C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _022186A8
+ mov r0, #1
+ str r0, [r4, #0x24]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+_022186A8:
+ mov r0, #0
+ ldrsh r1, [r4, r0]
+ cmp r1, #0
+ bge _022186B2
+ strh r0, [r4]
+_022186B2:
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _022186BE
+ mov r0, #0
+ strh r0, [r4, #2]
+_022186BE:
+ mov r0, #0
+ ldrsh r1, [r4, r0]
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _022186D0 ; =0x04000052
+ strh r1, [r0]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022186D0: .word 0x04000052
+
+ thumb_func_start MOD08_022186D4
+MOD08_022186D4: ; 0x022186D4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, sp, #8
+ mov r5, #0x10
+ ldrsh r5, [r6, r5]
+ add r4, r0, #0
+ str r5, [sp]
+ ldr r5, [sp, #0x1c]
+ lsl r5, r5, #0x10
+ lsr r5, r5, #0x10
+ str r5, [sp, #4]
+ bl MOD08_02217E80
+ mov r2, #0
+ ldr r0, _02218700 ; =MOD08_0221868C
+ add r1, r4, #0
+ str r2, [r4, #0x24]
+ bl FUN_0200CA44
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_02218700: .word MOD08_0221868C
+
+ thumb_func_start MOD08_02218704
+MOD08_02218704: ; 0x02218704
+ ldr r0, [r0, #0x24]
+ bx lr
+
+ thumb_func_start MOD08_02218708
+MOD08_02218708: ; 0x02218708
+ push {r3, lr}
+ ldr r0, [r1, #8]
+ cmp r0, #0
+ beq _0221871C
+ mov r0, #1
+ str r0, [r1, #0xc]
+ ldr r0, [r1, #0x18]
+ ldr r1, [r1, #0x10]
+ blx r1
+ pop {r3, pc}
+_0221871C:
+ bl FUN_020129C8
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218724
+MOD08_02218724: ; 0x02218724
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _0221873E
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _0221873E
+ ldr r0, [r4, #0x18]
+ ldr r1, [r4, #0x14]
+ blx r1
+ mov r0, #0
+ str r0, [r4, #0xc]
+_0221873E:
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02218740
+MOD08_02218740: ; 0x02218740
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r5, #0
+ bne _02218752
+ bl ErrorHandling
+_02218752:
+ mov r0, #1
+ str r0, [r5, #8]
+ mov r2, #0
+ str r2, [r5, #0xc]
+ str r4, [r5, #0x18]
+ str r6, [r5, #0x10]
+ ldr r0, _02218778 ; =MOD08_02218708
+ str r7, [r5, #0x14]
+ add r1, r5, #0
+ bl FUN_0200CA98
+ str r0, [r5, #4]
+ ldr r0, _0221877C ; =MOD08_02218724
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_0200CA60
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02218778: .word MOD08_02218708
+_0221877C: .word MOD08_02218724
+
+ thumb_func_start MOD08_02218780
+MOD08_02218780: ; 0x02218780
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221878A
+ bl ErrorHandling
+_0221878A:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02218794
+ bl FUN_0200CAB4
+_02218794:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _0221879E
+ bl FUN_0200CAB4
+_0221879E:
+ bl FUN_020129C8
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022187A4
+MOD08_022187A4: ; 0x022187A4
+ push {r4, lr}
+ add r4, r0, #0
+ bne _022187AE
+ bl ErrorHandling
+_022187AE:
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022187B4
+MOD08_022187B4: ; 0x022187B4
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_0201299C
+ add r5, r0, #0
+ bl FUN_020129C8
+ mov r1, #0x62
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ add r0, r5, #0
+ mov r2, #4
+ mov r3, #1
+ bl FUN_020129D8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022187D8
+MOD08_022187D8: ; 0x022187D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_020129B4
+ add r0, r4, #0
+ bl MOD08_022187B4
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022187EC
+MOD08_022187EC: ; 0x022187EC
+ ldr r3, _022187F0 ; =MOD08_022187B4
+ bx r3
+ .align 2, 0
+_022187F0: .word MOD08_022187B4
+
+ thumb_func_start MOD08_022187F4
+MOD08_022187F4: ; 0x022187F4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r7, r2, #0
+ add r5, r0, #0
+ ldr r1, _02218864 ; =0x00000624
+ add r0, r7, #0
+ bl FUN_02016998
+ ldr r2, _02218864 ; =0x00000624
+ mov r1, #0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ cmp r4, #0
+ bne _02218816
+ bl ErrorHandling
+_02218816:
+ mov r2, #0x32
+ add r1, r4, #0
+ lsl r2, r2, #4
+ add r0, r7, #0
+ add r1, #0x20
+ add r2, r4, r2
+ bl FUN_02012944
+ str r0, [r4, #0x1c]
+ cmp r0, #0
+ bne _02218830
+ bl ErrorHandling
+_02218830:
+ mov r0, #0x62
+ lsl r0, r0, #4
+ add r1, r4, #0
+ mov r2, #3
+ str r5, [r4, r0]
+ add r0, r6, #0
+ add r1, #0x20
+ lsl r2, r2, #8
+ bl MIi_CpuClear32
+ mov r2, #0x32
+ lsl r2, r2, #4
+ add r1, r4, r2
+ add r0, r6, #0
+ sub r2, #0x20
+ bl MIi_CpuClear32
+ ldr r2, _02218868 ; =MOD08_022187D8
+ ldr r3, _0221886C ; =MOD08_022187EC
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD08_02218740
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02218864: .word 0x00000624
+_02218868: .word MOD08_022187D8
+_0221886C: .word MOD08_022187EC
+
+ thumb_func_start MOD08_02218870
+MOD08_02218870: ; 0x02218870
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221887A
+ bl ErrorHandling
+_0221887A:
+ add r0, r4, #0
+ bl MOD08_02218780
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _0221888A
+ bl FUN_02012974
+_0221888A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218894
+MOD08_02218894: ; 0x02218894
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221889E
+ bl ErrorHandling
+_0221889E:
+ ldr r0, [r4, #0x1c]
+ bl FUN_02012988
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022188A8
+MOD08_022188A8: ; 0x022188A8
+ push {r4, lr}
+ add r4, r0, #0
+ bne _022188B2
+ bl ErrorHandling
+_022188B2:
+ add r0, r4, #0
+ bl MOD08_022187A4
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022188BC
+MOD08_022188BC: ; 0x022188BC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_02012B30
+ ldr r0, [r4, #0x1c]
+ bl FUN_02012B68
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022188D0
+MOD08_022188D0: ; 0x022188D0
+ ldr r3, _022188D8 ; =0x02012B69
+ ldr r0, [r0, #0x1c]
+ bx r3
+ nop
+_022188D8: .word 0x02012B69
+
+ thumb_func_start MOD08_022188DC
+MOD08_022188DC: ; 0x022188DC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r0, #0
+ str r1, [sp, #0x14]
+ ldr r0, [sp, #0x40]
+ mov r1, #0x20
+ str r2, [sp, #0x18]
+ add r5, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _022188F8
+ bl ErrorHandling
+_022188F8:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl Call_FillMemWithValue
+ ldr r0, [sp, #0x34]
+ bl MOD08_022189A0
+ add r6, r0, #0
+ ldr r0, [sp, #0x40]
+ bl FUN_02012A00
+ str r0, [r4, #0x1c]
+ str r5, [sp]
+ add r1, sp, #0x20
+ mov r0, #0x10
+ ldrsh r0, [r1, r0]
+ add r1, r7, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x3c]
+ str r6, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x38]
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x1c]
+ ldr r2, [sp, #0x14]
+ ldr r3, [sp, #0x18]
+ bl FUN_02012A30
+ ldr r2, _02218944 ; =MOD08_022188BC
+ ldr r3, _02218948 ; =MOD08_022188D0
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD08_02218740
+ add r0, r4, #0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02218944: .word MOD08_022188BC
+_02218948: .word MOD08_022188D0
+
+ thumb_func_start MOD08_0221894C
+MOD08_0221894C: ; 0x0221894C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02218956
+ bl ErrorHandling
+_02218956:
+ add r0, r4, #0
+ bl MOD08_02218780
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _02218966
+ bl FUN_02012B00
+_02218966:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218970
+MOD08_02218970: ; 0x02218970
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221897A
+ bl ErrorHandling
+_0221897A:
+ ldr r0, [r4, #0x1c]
+ bl FUN_02012B20
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218984
+MOD08_02218984: ; 0x02218984
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0221898E
+ bl ErrorHandling
+_0221898E:
+ add r0, r4, #0
+ bl MOD08_022187A4
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218998
+MOD08_02218998: ; 0x02218998
+ lsl r1, r1, #0x10
+ orr r0, r1
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022189A0
+MOD08_022189A0: ; 0x022189A0
+ cmp r0, #3
+ bhi _022189C6
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022189B0: ; jump table
+ .short _022189B8 - _022189B0 - 2 ; case 0
+ .short _022189BC - _022189B0 - 2 ; case 1
+ .short _022189C0 - _022189B0 - 2 ; case 2
+ .short _022189C4 - _022189B0 - 2 ; case 3
+_022189B8:
+ ldr r0, _022189C8 ; =0x04000010
+ bx lr
+_022189BC:
+ ldr r0, _022189CC ; =0x04000014
+ bx lr
+_022189C0:
+ ldr r0, _022189D0 ; =0x04000018
+ bx lr
+_022189C4:
+ ldr r0, _022189D4 ; =0x0400001C
+_022189C6:
+ bx lr
+ .align 2, 0
+_022189C8: .word 0x04000010
+_022189CC: .word 0x04000014
+_022189D0: .word 0x04000018
+_022189D4: .word 0x0400001C
+
+ thumb_func_start MOD08_022189D8
+MOD08_022189D8: ; 0x022189D8
+ add r2, r0, r2
+ lsr r0, r2, #0x1f
+ add r0, r2, r0
+ asr r2, r0, #1
+ ldr r0, [sp]
+ add r1, r1, r3
+ strh r2, [r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r1, r0, #1
+ ldr r0, [sp, #4]
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022189F4
+MOD08_022189F4: ; 0x022189F4
+ push {r3, lr}
+ sub r1, r1, r3
+ neg r1, r1
+ sub r0, r0, r2
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ asr r1, r1, #0x10
+ add r2, r1, #0
+ asr r0, r0, #0x10
+ mul r2, r1
+ add r1, r0, #0
+ mul r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0xc
+ bl FX_Sqrt
+ ldr r1, [sp, #8]
+ str r0, [r1]
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218A1C
+MOD08_02218A1C: ; 0x02218A1C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ sub r0, r1, r3
+ neg r0, r0
+ lsl r0, r0, #0x10
+ sub r1, r6, r2
+ asr r4, r0, #0x10
+ lsl r1, r1, #0x10
+ ldr r5, [sp, #0x10]
+ lsl r0, r4, #0xc
+ asr r1, r1, #4
+ bl FX_Atan2
+ strh r0, [r5]
+ ldrh r1, [r5]
+ cmp r1, #0
+ beq _02218A4C
+ cmp r4, #0
+ bge _02218A4C
+ ldr r0, _02218A50 ; =0x00007FFF
+ sub r1, r1, r0
+ ldr r0, _02218A54 ; =0x0000FFFF
+ mul r0, r1
+ strh r0, [r5]
+_02218A4C:
+ pop {r4, r5, r6, pc}
+ nop
+_02218A50: .word 0x00007FFF
+_02218A54: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02218A58
+MOD08_02218A58: ; 0x02218A58
+ cmp r2, #0
+ ldr r3, [r0]
+ bge _02218A70
+ add r2, r3, r2
+ cmp r2, r1
+ ble _02218A6A
+ str r2, [r0]
+ mov r0, #0
+ bx lr
+_02218A6A:
+ str r1, [r0]
+ mov r0, #1
+ bx lr
+_02218A70:
+ add r2, r3, r2
+ cmp r2, r1
+ bge _02218A7C
+ str r2, [r0]
+ mov r0, #0
+ bx lr
+_02218A7C:
+ str r1, [r0]
+ mov r0, #1
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02218A84
+MOD08_02218A84: ; 0x02218A84
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02218AF4
+ mov r0, #0x17
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0x17]
+ ldrsb r1, [r4, r0]
+ mov r0, #0x16
+ ldrsb r0, [r4, r0]
+ cmp r1, r0
+ blt _02218AF4
+ mov r0, #0
+ strb r0, [r4, #0x17]
+ ldrb r0, [r4, #0x14]
+ str r0, [sp]
+ ldrh r0, [r4, #0x10]
+ str r0, [sp, #4]
+ ldrh r2, [r4, #0xc]
+ ldrh r3, [r4, #0xe]
+ ldr r0, [r4, #0x18]
+ ldr r1, [r4, #8]
+ bl FUN_020039E8
+ ldrb r3, [r4, #0x13]
+ ldrb r1, [r4, #0x14]
+ cmp r1, r3
+ bne _02218ACA
+ mov r0, #0
+ add sp, #8
+ str r0, [r4]
+ pop {r4, pc}
+_02218ACA:
+ mov r0, #0x15
+ ldrsb r2, [r4, r0]
+ add r1, r1, r2
+ lsl r0, r1, #0x18
+ asr r0, r0, #0x18
+ cmp r2, #0
+ ble _02218AE8
+ cmp r0, r3
+ ble _02218AE2
+ add sp, #8
+ strb r3, [r4, #0x14]
+ pop {r4, pc}
+_02218AE2:
+ add sp, #8
+ strb r1, [r4, #0x14]
+ pop {r4, pc}
+_02218AE8:
+ cmp r0, r3
+ bge _02218AF2
+ add sp, #8
+ strb r3, [r4, #0x14]
+ pop {r4, pc}
+_02218AF2:
+ strb r1, [r4, #0x14]
+_02218AF4:
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02218AF8
+MOD08_02218AF8: ; 0x02218AF8
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02218B02
+ bl ErrorHandling
+_02218B02:
+ ldr r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218B08
+MOD08_02218B08: ; 0x02218B08
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02218B12
+ bl ErrorHandling
+_02218B12:
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02218B20
+MOD08_02218B20: ; 0x02218B20
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ mov r1, #0x1c
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _02218B38
+ bl ErrorHandling
+_02218B38:
+ str r5, [r4, #0x18]
+ str r6, [r4, #8]
+ strh r7, [r4, #0xc]
+ add r1, sp, #8
+ ldrh r0, [r1, #0x10]
+ strh r0, [r4, #0xe]
+ ldrh r0, [r1, #0x24]
+ strh r0, [r4, #0x10]
+ ldrb r2, [r1, #0x1c]
+ add r0, sp, #0x28
+ ldrb r0, [r0]
+ strb r2, [r4, #0x12]
+ strb r0, [r4, #0x13]
+ strb r2, [r4, #0x14]
+ mov r0, #0x14
+ ldrsb r0, [r1, r0]
+ strb r0, [r4, #0x16]
+ strb r0, [r4, #0x17]
+ ldrb r2, [r4, #0x12]
+ ldrb r0, [r4, #0x13]
+ cmp r2, r0
+ bhs _02218B6A
+ mov r0, #0x18
+ ldrsb r0, [r1, r0]
+ b _02218B70
+_02218B6A:
+ mov r0, #0x18
+ ldrsb r0, [r1, r0]
+ neg r0, r0
+_02218B70:
+ strb r0, [r4, #0x15]
+ mov r0, #1
+ str r0, [r4]
+ ldr r0, _02218B88 ; =MOD08_02218A84
+ ldr r2, [sp, #0x30]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02218B88: .word MOD08_02218A84
+
+ thumb_func_start MOD08_02218B8C
+MOD08_02218B8C: ; 0x02218B8C
+ push {r4, r5, r6, r7}
+ mov r7, #0
+ cmp r1, #0
+ ble _02218BCE
+ mov r2, #0x97
+_02218B96:
+ ldrh r6, [r0]
+ mov r3, #0x1f
+ add r7, r7, #1
+ asr r4, r6, #0xa
+ and r4, r3
+ add r5, r4, #0
+ mov r3, #0x1d
+ mul r5, r3
+ mov r3, #0x1f
+ and r3, r6
+ mov r4, #0x4c
+ mul r4, r3
+ asr r6, r6, #5
+ mov r3, #0x1f
+ and r3, r6
+ add r6, r3, #0
+ mul r6, r2
+ add r3, r4, r6
+ add r3, r5, r3
+ asr r5, r3, #8
+ lsl r4, r5, #0xa
+ lsl r3, r5, #5
+ orr r3, r4
+ orr r3, r5
+ strh r3, [r0]
+ add r0, r0, #2
+ cmp r7, r1
+ blt _02218B96
+_02218BCE:
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02218BD4
+MOD08_02218BD4: ; 0x02218BD4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_02215504
+ mov r1, #0
+ bl FUN_02003204
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02218BF8
+ add r0, r4, #0
+ mov r1, #0x30
+ bl MOD08_02218B8C
+ pop {r3, r4, r5, pc}
+_02218BF8:
+ add r0, r4, #0
+ mov r1, #0x80
+ bl MOD08_02218B8C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218C04
+MOD08_02218C04: ; 0x02218C04
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl MOD08_02215504
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02218C30
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x60
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020031B8
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02218C30:
+ mov r1, #0
+ mov r0, #1
+ str r1, [sp]
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020031B8
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02218C48
+MOD08_02218C48: ; 0x02218C48
+ cmp r0, #0x54
+ blo _02218C50
+ mov r0, #0
+ bx lr
+_02218C50:
+ lsl r1, r0, #2
+ ldr r0, _02218C58 ; =0x0222C384
+ ldr r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_02218C58: .word 0x0222C384
+
+ thumb_func_start MOD08_02218C5C
+MOD08_02218C5C: ; 0x02218C5C
+ cmp r0, #0x21
+ blo _02218C64
+ mov r0, #0
+ bx lr
+_02218C64:
+ lsl r1, r0, #2
+ ldr r0, _02218C6C ; =0x0222C300
+ ldr r0, [r0, r1]
+ bx lr
+ .align 2, 0
+_02218C6C: .word 0x0222C300
+
+ thumb_func_start MOD08_02218C70
+MOD08_02218C70: ; 0x02218C70
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02218C74
+MOD08_02218C74: ; 0x02218C74
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _02218C86
+ cmp r0, #1
+ beq _02218C8C
+ pop {r4, pc}
+_02218C86:
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, pc}
+_02218C8C:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02218C9C
+MOD08_02218C9C: ; 0x02218C9C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #5
+ mov r1, #8
+ bl FUN_02016998
+ add r2, r0, #0
+ mov r0, #0
+ strb r0, [r2]
+ mov r3, #1
+ ldr r1, _02218CC0 ; =MOD08_02218C74
+ add r0, r4, #0
+ lsl r3, r3, #0xc
+ str r4, [r2, #4]
+ bl MOD08_022123E4
+ pop {r4, pc}
+ nop
+_02218CC0: .word MOD08_02218C74
+
+ thumb_func_start MOD08_02218CC4
+MOD08_02218CC4: ; 0x02218CC4
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _02218CD6
+ cmp r0, #1
+ beq _02218CDC
+ pop {r4, pc}
+_02218CD6:
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, pc}
+_02218CDC:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212448
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02218CEC
+MOD08_02218CEC: ; 0x02218CEC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #5
+ mov r1, #8
+ bl FUN_02016998
+ add r2, r0, #0
+ mov r0, #0
+ strb r0, [r2]
+ mov r3, #1
+ ldr r1, _02218D10 ; =MOD08_02218CC4
+ add r0, r4, #0
+ lsl r3, r3, #0xc
+ str r4, [r2, #4]
+ bl MOD08_0221241C
+ pop {r4, pc}
+ nop
+_02218D10: .word MOD08_02218CC4
+
+ thumb_func_start MOD08_02218D14
+MOD08_02218D14: ; 0x02218D14
+ push {r4, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ cmp r1, #0
+ beq _02218D24
+ cmp r1, #1
+ beq _02218D2A
+ pop {r4, pc}
+_02218D24:
+ add r0, r1, #1
+ strb r0, [r4]
+ pop {r4, pc}
+_02218D2A:
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218D38
+MOD08_02218D38: ; 0x02218D38
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #5
+ mov r1, #8
+ bl FUN_02016998
+ add r1, r0, #0
+ mov r0, #0
+ strb r0, [r1]
+ mov r2, #1
+ ldr r0, _02218D58 ; =MOD08_02218D14
+ lsl r2, r2, #0xc
+ str r4, [r1, #4]
+ bl FUN_0200CA44
+ pop {r4, pc}
+ .align 2, 0
+_02218D58: .word MOD08_02218D14
+
+ thumb_func_start MOD08_02218D5C
+MOD08_02218D5C: ; 0x02218D5C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ ldrb r0, [r5]
+ cmp r0, #0
+ beq _02218D6E
+ cmp r0, #1
+ beq _02218DB4
+ pop {r4, r5, r6, pc}
+_02218D6E:
+ ldr r0, [r5, #0x14]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ ldr r0, [r5, #0x18]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ ldr r0, [r0]
+ mov r2, #0
+ bl FUN_0200C7FC
+ ldr r0, [r5, #0x18]
+ mov r1, #0
+ ldr r0, [r0]
+ mvn r1, r1
+ mov r2, #0
+ bl FUN_0200C7FC
+ ldr r0, [r5, #0x1c]
+ mov r1, #1
+ ldr r0, [r0]
+ add r2, r1, #0
+ bl FUN_0200C7FC
+ ldr r0, [r5, #0xc]
+ bl FUN_0200BC1C
+ pop {r4, r5, r6, pc}
+_02218DB4:
+ ldr r0, [r5, #0x10]
+ ldr r4, [r5, #4]
+ bl FUN_0200C3DC
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD08_02212438
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02218DCC
+MOD08_02218DCC: ; 0x02218DCC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r6, r1, #0
+ mov r1, #0x73
+ str r0, [sp]
+ mov r0, #5
+ lsl r1, r1, #2
+ add r7, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _02218DEA
+ bl ErrorHandling
+_02218DEA:
+ mov r0, #0
+ strb r0, [r4]
+ str r6, [r4, #8]
+ str r7, [r4, #0xc]
+ ldr r0, [sp]
+ str r5, [r4, #0x10]
+ str r0, [r4, #4]
+ ldr r1, [sp]
+ add r0, sp, #4
+ bl MOD08_02215474
+ str r5, [r4, #0x14]
+ mov r6, #1
+ add r5, r4, #4
+ add r7, sp, #4
+_02218E08:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ add r2, r7, #0
+ bl FUN_0200C154
+ str r0, [r5, #0x14]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _02218E08
+ mov r3, #1
+ ldr r0, [sp]
+ ldr r1, _02218E30 ; =MOD08_02218D5C
+ add r2, r4, #0
+ lsl r3, r3, #0xc
+ bl MOD08_022123E4
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02218E30: .word MOD08_02218D5C
+
+ thumb_func_start MOD08_02218E34
+MOD08_02218E34: ; 0x02218E34
+ push {r4, lr}
+ mov r1, #0xc
+ add r2, r1, #0
+ add r2, #0xf4
+ add r4, r0, #0
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02218E50
+MOD08_02218E50: ; 0x02218E50
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ beq _02218E62
+ cmp r0, #1
+ beq _02218E84
+ b _02218F4E
+_02218E62:
+ mov r0, #0x26
+ ldrsh r0, [r5, r0]
+ mov r1, #0x20
+ mov r2, #0x22
+ str r0, [sp]
+ mov r3, #0x24
+ add r0, r5, #0
+ ldrsh r1, [r5, r1]
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ add r0, #0x7c
+ bl MOD08_022183C0
+ ldrb r0, [r5, #4]
+ add r0, r0, #1
+ strb r0, [r5, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02218E84:
+ add r0, r5, #0
+ add r0, #0x7c
+ bl MOD08_022183F0
+ cmp r0, #0
+ bne _02218E98
+ ldrb r0, [r5, #4]
+ add r0, r0, #1
+ strb r0, [r5, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02218E98:
+ ldr r2, [r5, #0x28]
+ mov r1, #1
+ lsl r1, r1, #8
+ add r0, r2, #0
+ and r0, r1
+ cmp r0, r1
+ bne _02218EE4
+ ldr r0, [r5]
+ mov r6, #0
+ cmp r0, #0
+ ble _02218F32
+ add r4, r5, #0
+ mov r7, #0x32
+_02218EB2:
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ beq _02218ED8
+ mov r2, #0x7c
+ mov r3, #0x30
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r4, r3]
+ mov r1, #0
+ add r2, r2, r3
+ bl FUN_02007558
+ mov r2, #0x7e
+ ldrsh r3, [r5, r2]
+ ldrsh r2, [r4, r7]
+ ldr r0, [r4, #0x34]
+ mov r1, #1
+ add r2, r3, r2
+ bl FUN_02007558
+_02218ED8:
+ ldr r0, [r5]
+ add r6, r6, #1
+ add r4, #0x14
+ cmp r6, r0
+ blt _02218EB2
+ b _02218F32
+_02218EE4:
+ lsl r0, r1, #1
+ and r2, r0
+ cmp r2, r0
+ bne _02218F32
+ ldr r0, [r5]
+ mov r6, #0
+ cmp r0, #0
+ ble _02218F2C
+ add r4, r5, #0
+ mov r7, #0x32
+_02218EF8:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ beq _02218F22
+ mov r1, #0x7c
+ mov r2, #0x30
+ ldrsh r1, [r5, r1]
+ ldrsh r2, [r4, r2]
+ add r1, r1, r2
+ mov r2, #0x7e
+ ldrsh r3, [r5, r2]
+ ldrsh r2, [r4, r7]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [r4, #0x38]
+ bl FUN_0200C5A8
+_02218F22:
+ ldr r0, [r5]
+ add r6, r6, #1
+ add r4, #0x14
+ cmp r6, r0
+ blt _02218EF8
+_02218F2C:
+ ldr r0, [r5, #0x10]
+ bl FUN_0200BC1C
+_02218F32:
+ mov r0, #1
+ ldr r1, [r5, #0x28]
+ lsl r0, r0, #0xa
+ and r1, r0
+ cmp r1, r0
+ bne _02218F5C
+ mov r3, #0x7c
+ ldrsh r3, [r5, r3]
+ ldr r0, [r5, #0x18]
+ mov r1, #3
+ mov r2, #0
+ bl FUN_020179E0
+ pop {r3, r4, r5, r6, r7, pc}
+_02218F4E:
+ ldr r0, [r5, #8]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+_02218F5C:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02218F60
+MOD08_02218F60: ; 0x02218F60
+ push {r3, r4, r5, lr}
+ mov r1, #0xa0
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ strh r0, [r4, #0x20]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ strh r0, [r4, #0x22]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ strh r0, [r4, #0x24]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ strh r0, [r4, #0x26]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ mov r2, #1
+ lsl r2, r2, #8
+ str r0, [r4, #0x28]
+ add r1, r0, #0
+ and r0, r2
+ cmp r0, r2
+ bne _02218FC0
+ add r2, r4, #0
+ add r0, r5, #0
+ add r2, #0x2c
+ add r3, r4, #0
+ bl MOD08_02227BAC
+ b _02218FD6
+_02218FC0:
+ lsl r0, r2, #1
+ add r3, r1, #0
+ and r3, r0
+ cmp r3, r0
+ bne _02218FD6
+ add r2, r4, #0
+ add r0, r5, #0
+ add r2, #0x2c
+ add r3, r4, #0
+ bl MOD08_02227F88
+_02218FD6:
+ ldr r0, [r4, #8]
+ ldr r1, _02218FE4 ; =MOD08_02218E50
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_02218FE4: .word MOD08_02218E50
+
+ thumb_func_start MOD08_02218FE8
+MOD08_02218FE8: ; 0x02218FE8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x1c]
+ cmp r0, #3
+ bhi _022190B2
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02219000: ; jump table
+ .short _02219008 - _02219000 - 2 ; case 0
+ .short _02219026 - _02219000 - 2 ; case 1
+ .short _02219068 - _02219000 - 2 ; case 2
+ .short _02219074 - _02219000 - 2 ; case 3
+_02219008:
+ ldrh r0, [r4, #0x18]
+ mov r1, #4
+ mov r2, #0x39
+ str r0, [sp]
+ ldrh r3, [r4, #0x16]
+ ldr r0, _02219154 ; =0x04000050
+ bl G2x_SetBlendAlpha_
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ ldrb r0, [r4, #0x1c]
+ add r0, r0, #1
+ strb r0, [r4, #0x1c]
+_02219026:
+ ldrh r1, [r4, #8]
+ ldrh r2, [r4, #0x16]
+ mov r0, #0
+ sub r1, r1, #2
+ cmp r2, r1
+ bge _02219038
+ add r1, r2, #2
+ strh r1, [r4, #0x16]
+ b _0221903A
+_02219038:
+ add r0, r0, #1
+_0221903A:
+ ldrh r1, [r4, #0x18]
+ cmp r1, #9
+ bls _02219046
+ sub r1, r1, #2
+ strh r1, [r4, #0x18]
+ b _02219048
+_02219046:
+ add r0, r0, #1
+_02219048:
+ cmp r0, #2
+ bne _0221905A
+ ldrh r0, [r4, #8]
+ strh r0, [r4, #0x16]
+ mov r0, #7
+ strh r0, [r4, #0x18]
+ ldrb r0, [r4, #0x1c]
+ add r0, r0, #1
+ strb r0, [r4, #0x1c]
+_0221905A:
+ ldrh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x16]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _02219158 ; =0x04000052
+ strh r1, [r0]
+ b _022190CA
+_02219068:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _022190CA
+ add r0, r0, #1
+ strb r0, [r4, #0x1c]
+ b _022190CA
+_02219074:
+ ldrh r0, [r4, #0x16]
+ mov r1, #0
+ cmp r0, #2
+ bls _02219082
+ sub r0, r0, #2
+ strh r0, [r4, #0x16]
+ b _02219084
+_02219082:
+ add r1, r1, #1
+_02219084:
+ ldrh r0, [r4, #0x18]
+ cmp r0, #0x1d
+ bhs _02219090
+ add r0, r0, #2
+ strh r0, [r4, #0x18]
+ b _02219092
+_02219090:
+ add r1, r1, #1
+_02219092:
+ cmp r1, #2
+ bne _022190A4
+ mov r0, #0
+ strh r0, [r4, #0x16]
+ mov r0, #0x1f
+ strh r0, [r4, #0x18]
+ ldrb r0, [r4, #0x1c]
+ add r0, r0, #1
+ strb r0, [r4, #0x1c]
+_022190A4:
+ ldrh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x16]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _02219158 ; =0x04000052
+ strh r1, [r0]
+ b _022190CA
+_022190B2:
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x20]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_022190CA:
+ mov r1, #0x10
+ ldrsh r3, [r4, r1]
+ cmp r3, #0
+ ble _022190DC
+ mov r0, #0xc
+ ldrsh r2, [r4, r0]
+ lsl r0, r1, #5
+ cmp r2, r0
+ bge _022190EA
+_022190DC:
+ cmp r3, #0
+ bge _022190EE
+ mov r0, #0xc
+ ldrsh r1, [r4, r0]
+ ldr r0, _0221915C ; =0xFFFFFE64
+ cmp r1, r0
+ bgt _022190EE
+_022190EA:
+ mov r0, #1
+ str r0, [r4, #4]
+_022190EE:
+ mov r0, #0xa
+ ldrsh r1, [r4, r0]
+ mov r0, #0xe
+ ldrsh r0, [r4, r0]
+ add r0, r1, r0
+ strh r0, [r4, #0xa]
+ mov r0, #0xc
+ ldrsh r2, [r4, r0]
+ mov r0, #0x10
+ ldrsh r1, [r4, r0]
+ add r1, r2, r1
+ strh r1, [r4, #0xc]
+ ldrh r2, [r4, #0x12]
+ ldrh r1, [r4, #0x14]
+ cmp r2, r1
+ bhs _02219132
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _02219118
+ add r0, r0, #1
+ b _0221911A
+_02219118:
+ mov r0, #0
+_0221911A:
+ strh r0, [r4, #0x10]
+ mov r0, #0xe
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _02219128
+ add r0, r0, #1
+ b _0221912A
+_02219128:
+ mov r0, #0
+_0221912A:
+ strh r0, [r4, #0xe]
+ mov r0, #0
+ strh r0, [r4, #0x14]
+ b _02219136
+_02219132:
+ add r0, r1, #1
+ strh r0, [r4, #0x14]
+_02219136:
+ mov r3, #0xa
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ mov r2, #0
+ bl FUN_020179E0
+ mov r3, #0xc
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ mov r2, #3
+ bl FUN_020179E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02219154: .word 0x04000050
+_02219158: .word 0x04000052
+_0221915C: .word 0xFFFFFE64
+
+ thumb_func_start MOD08_02219160
+MOD08_02219160: ; 0x02219160
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r1, #0xb8
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x1c
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ strh r0, [r4, #0xa]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ strh r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ strh r0, [r4, #0xe]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ strh r0, [r4, #0x10]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD08_02212498
+ strh r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD08_02212498
+ strh r0, [r4, #0x12]
+ mov r0, #0
+ strh r0, [r4, #0x14]
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _0221920C
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _0221920C
+ mov r0, #0xa
+ ldrsh r1, [r4, r0]
+ sub r0, #0xb
+ mul r0, r1
+ strh r0, [r4, #0xa]
+ mov r1, #0xc
+ add r0, r1, #0
+ ldrsh r2, [r4, r1]
+ sub r0, #0xd
+ mul r0, r2
+ strh r0, [r4, #0xc]
+ mov r0, #0xe
+ ldrsh r2, [r4, r0]
+ sub r0, #0xf
+ mul r0, r2
+ strh r0, [r4, #0xe]
+ mov r0, #0x10
+ ldrsh r2, [r4, r0]
+ sub r0, #0x11
+ mul r0, r2
+ strh r0, [r4, #0x10]
+ ldrsh r0, [r4, r1]
+ sub r0, #0x54
+ strh r0, [r4, #0xc]
+ b _02219214
+_0221920C:
+ mov r0, #0xc
+ ldrsh r0, [r4, r0]
+ add r0, #0x54
+ strh r0, [r4, #0xc]
+_02219214:
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02219228
+ mov r0, #0xe
+ ldrsh r1, [r4, r0]
+ sub r0, #0xf
+ mul r0, r1
+ strh r0, [r4, #0xe]
+_02219228:
+ mov r1, #0
+ strh r1, [r4, #0x16]
+ mov r0, #0x1f
+ strh r0, [r4, #0x18]
+ mov r0, #2
+ str r1, [r4, #4]
+ bl FUN_0201797C
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ mov r1, #0
+ add r7, r0, #0
+ bl MOD08_022156AC
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x30]
+ mov r0, #7
+ add r1, r6, #0
+ mov r3, #2
+ bl FUN_0200687C
+ add r0, r7, #0
+ mov r1, #1
+ bl MOD08_022156AC
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x90
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x34]
+ mov r1, #7
+ add r2, r6, #0
+ bl FUN_020030E8
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_02018744
+ add r0, r5, #0
+ mov r6, #2
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _022192A8
+ mov r6, #4
+ b _022192BC
+_022192A8:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _022192BC
+ mov r6, #3
+_022192BC:
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD08_022156AC
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x30]
+ mov r0, #7
+ add r1, r6, #0
+ mov r3, #2
+ bl FUN_020068C8
+ mov r3, #0xa
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ mov r2, #0
+ bl FUN_020179E0
+ mov r3, #0xc
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ mov r2, #3
+ bl FUN_020179E0
+ ldr r0, [r4, #0x20]
+ ldr r1, _02219310 ; =MOD08_02218FE8
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02219310: .word MOD08_02218FE8
+
+ thumb_func_start MOD08_02219314
+MOD08_02219314: ; 0x02219314
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x1c]
+ cmp r0, #3
+ bhi _022193DA
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0221932C: ; jump table
+ .short _02219334 - _0221932C - 2 ; case 0
+ .short _02219352 - _0221932C - 2 ; case 1
+ .short _02219390 - _0221932C - 2 ; case 2
+ .short _0221939C - _0221932C - 2 ; case 3
+_02219334:
+ ldrh r0, [r4, #0x18]
+ mov r1, #4
+ mov r2, #0x39
+ str r0, [sp]
+ ldrh r3, [r4, #0x16]
+ ldr r0, _0221947C ; =0x04000050
+ bl G2x_SetBlendAlpha_
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ ldrb r0, [r4, #0x1c]
+ add r0, r0, #1
+ strb r0, [r4, #0x1c]
+_02219352:
+ ldrh r0, [r4, #0x16]
+ mov r1, #0
+ cmp r0, #0x10
+ bhs _02219360
+ add r0, r0, #2
+ strh r0, [r4, #0x16]
+ b _02219362
+_02219360:
+ add r1, r1, #1
+_02219362:
+ ldrh r0, [r4, #0x18]
+ cmp r0, #4
+ bls _0221936E
+ sub r0, r0, #2
+ strh r0, [r4, #0x18]
+ b _02219370
+_0221936E:
+ add r1, r1, #1
+_02219370:
+ cmp r1, #2
+ bne _02219382
+ mov r0, #0x10
+ strh r0, [r4, #0x16]
+ mov r0, #4
+ strh r0, [r4, #0x18]
+ ldrb r0, [r4, #0x1c]
+ add r0, r0, #1
+ strb r0, [r4, #0x1c]
+_02219382:
+ ldrh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x16]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _02219480 ; =0x04000052
+ strh r1, [r0]
+ b _022193F2
+_02219390:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _022193F2
+ add r0, r0, #1
+ strb r0, [r4, #0x1c]
+ b _022193F2
+_0221939C:
+ ldrh r0, [r4, #0x16]
+ mov r1, #0
+ cmp r0, #2
+ bls _022193AA
+ sub r0, r0, #2
+ strh r0, [r4, #0x16]
+ b _022193AC
+_022193AA:
+ add r1, r1, #1
+_022193AC:
+ ldrh r0, [r4, #0x18]
+ cmp r0, #0x10
+ bhs _022193B8
+ add r0, r0, #2
+ strh r0, [r4, #0x18]
+ b _022193BA
+_022193B8:
+ add r1, r1, #1
+_022193BA:
+ cmp r1, #2
+ bne _022193CC
+ mov r0, #0
+ strh r0, [r4, #0x16]
+ mov r0, #0x1f
+ strh r0, [r4, #0x18]
+ ldrb r0, [r4, #0x1c]
+ add r0, r0, #1
+ strb r0, [r4, #0x1c]
+_022193CC:
+ ldrh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x16]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _02219480 ; =0x04000052
+ strh r1, [r0]
+ b _022193F2
+_022193DA:
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x20]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_022193F2:
+ mov r1, #0x10
+ ldrsh r3, [r4, r1]
+ cmp r3, #0
+ ble _02219404
+ mov r0, #0xc
+ ldrsh r2, [r4, r0]
+ lsl r0, r1, #5
+ cmp r2, r0
+ bge _02219412
+_02219404:
+ cmp r3, #0
+ bge _02219416
+ mov r0, #0xc
+ ldrsh r1, [r4, r0]
+ ldr r0, _02219484 ; =0xFFFFFE64
+ cmp r1, r0
+ bgt _02219416
+_02219412:
+ mov r0, #1
+ str r0, [r4, #4]
+_02219416:
+ mov r0, #0xa
+ ldrsh r1, [r4, r0]
+ mov r0, #0xe
+ ldrsh r0, [r4, r0]
+ add r0, r1, r0
+ strh r0, [r4, #0xa]
+ mov r0, #0xc
+ ldrsh r2, [r4, r0]
+ mov r0, #0x10
+ ldrsh r1, [r4, r0]
+ add r1, r2, r1
+ strh r1, [r4, #0xc]
+ ldrh r2, [r4, #0x12]
+ ldrh r1, [r4, #0x14]
+ cmp r2, r1
+ bhs _0221945A
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _02219440
+ add r0, r0, #1
+ b _02219442
+_02219440:
+ mov r0, #0
+_02219442:
+ strh r0, [r4, #0x10]
+ mov r0, #0xe
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _02219450
+ add r0, r0, #1
+ b _02219452
+_02219450:
+ mov r0, #0
+_02219452:
+ strh r0, [r4, #0xe]
+ mov r0, #0
+ strh r0, [r4, #0x14]
+ b _0221945E
+_0221945A:
+ add r0, r1, #1
+ strh r0, [r4, #0x14]
+_0221945E:
+ mov r3, #0xa
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ mov r2, #0
+ bl FUN_020179E0
+ mov r3, #0xc
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ mov r2, #3
+ bl FUN_020179E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221947C: .word 0x04000050
+_02219480: .word 0x04000052
+_02219484: .word 0xFFFFFE64
+
+ thumb_func_start MOD08_02219488
+MOD08_02219488: ; 0x02219488
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r1, #0xb8
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x1c
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ strh r0, [r4, #0xa]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ strh r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ strh r0, [r4, #0xe]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ strh r0, [r4, #0x10]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD08_02212498
+ strh r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD08_02212498
+ strh r0, [r4, #0x12]
+ mov r0, #0
+ strh r0, [r4, #0x14]
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02219534
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _02219534
+ mov r0, #0xa
+ ldrsh r1, [r4, r0]
+ sub r0, #0xb
+ mul r0, r1
+ strh r0, [r4, #0xa]
+ mov r1, #0xc
+ add r0, r1, #0
+ ldrsh r2, [r4, r1]
+ sub r0, #0xd
+ mul r0, r2
+ strh r0, [r4, #0xc]
+ mov r0, #0xe
+ ldrsh r2, [r4, r0]
+ sub r0, #0xf
+ mul r0, r2
+ strh r0, [r4, #0xe]
+ mov r0, #0x10
+ ldrsh r2, [r4, r0]
+ sub r0, #0x11
+ mul r0, r2
+ strh r0, [r4, #0x10]
+ ldrsh r0, [r4, r1]
+ sub r0, #0x54
+ strh r0, [r4, #0xc]
+ b _0221953C
+_02219534:
+ mov r0, #0xc
+ ldrsh r0, [r4, r0]
+ add r0, #0x54
+ strh r0, [r4, #0xc]
+_0221953C:
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02219550
+ mov r0, #0xe
+ ldrsh r1, [r4, r0]
+ sub r0, #0xf
+ mul r0, r1
+ strh r0, [r4, #0xe]
+_02219550:
+ mov r0, #4
+ strh r0, [r4, #0x16]
+ mov r0, #0x10
+ strh r0, [r4, #0x18]
+ mov r1, #0
+ strh r1, [r4, #0x16]
+ strh r0, [r4, #0x18]
+ mov r0, #2
+ str r1, [r4, #4]
+ bl FUN_0201797C
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ mov r1, #0
+ add r7, r0, #0
+ bl MOD08_022156AC
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x30]
+ mov r0, #7
+ add r1, r6, #0
+ mov r3, #2
+ bl FUN_0200687C
+ add r0, r7, #0
+ mov r1, #1
+ bl MOD08_022156AC
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x90
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x34]
+ mov r1, #7
+ add r2, r6, #0
+ bl FUN_020030E8
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_02018744
+ add r0, r5, #0
+ mov r6, #2
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _022195D6
+ mov r6, #4
+ b _022195EA
+_022195D6:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _022195EA
+ mov r6, #3
+_022195EA:
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD08_022156AC
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x30]
+ mov r0, #7
+ add r1, r6, #0
+ mov r3, #2
+ bl FUN_020068C8
+ mov r3, #0xa
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ mov r2, #0
+ bl FUN_020179E0
+ mov r3, #0xc
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ mov r2, #3
+ bl FUN_020179E0
+ ldr r0, [r4, #0x20]
+ ldr r1, _0221963C ; =MOD08_02219314
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221963C: .word MOD08_02219314
+
+ thumb_func_start MOD08_02219640
+MOD08_02219640: ; 0x02219640
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _02219656
+ cmp r0, #1
+ beq _02219656
+ cmp r0, #2
+ beq _02219688
+ pop {r3, r4, r5, pc}
+_02219656:
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD08_02218058
+ cmp r0, #1
+ bne _02219672
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4, #8]
+ lsl r2, r2, #0x10
+ mov r1, #9
+ lsr r2, r2, #0x10
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_02219672:
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x20]
+ ldr r3, [r4, #0x24]
+ add r0, #0xc
+ bl MOD08_02218008
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_02219688:
+ ldr r0, [r4, #8]
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #8]
+ mov r1, #0xb
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #8]
+ mov r1, #9
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022196B8
+MOD08_022196B8: ; 0x022196B8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x2c
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ str r5, [r4, #4]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [r4, #0x24]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4, #0x20]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ add r7, r0, #0
+ beq _022196F2
+ cmp r7, #2
+ bne _022196FC
+_022196F2:
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ str r0, [sp]
+ b _02219704
+_022196FC:
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ str r0, [sp]
+_02219704:
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r2, r0, #0
+ add r0, r4, #0
+ ldr r1, [r4, #0x20]
+ ldr r3, [r4, #0x24]
+ add r0, #0xc
+ bl MOD08_02218008
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD08_02217C1C
+ add r6, r0, #0
+ ldr r0, [r4, #0x14]
+ add r1, r0, #0
+ mul r1, r6
+ str r1, [r4, #0x14]
+ cmp r7, #2
+ bne _02219736
+ mov r0, #0
+ mvn r0, r0
+ mul r6, r0
+_02219736:
+ ldr r0, [r4, #4]
+ ldr r1, [sp]
+ bl MOD08_022154D4
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ cmp r0, #1
+ bne _02219760
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ strh r0, [r4, #0x28]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ b _02219768
+_02219760:
+ mov r0, #0x28
+ add r1, r6, #0
+ mul r1, r0
+ strh r1, [r4, #0x28]
+_02219768:
+ strh r0, [r4, #0x2a]
+ mov r2, #0x28
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #8]
+ mov r1, #0xa
+ bl FUN_02007558
+ mov r2, #0x2a
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #8]
+ mov r1, #0xb
+ bl FUN_02007558
+ ldr r0, [r4, #4]
+ ldr r1, _02219790 ; =MOD08_02219640
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02219790: .word MOD08_02219640
+
+ thumb_func_start MOD08_02219794
+MOD08_02219794: ; 0x02219794
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0x2c
+ mov r2, #0x2e
+ add r5, r0, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x28]
+ add r0, r4, #4
+ bl MOD08_02217E58
+ cmp r0, #0
+ bne _022197E0
+ mov r2, #0x2c
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x2e
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ sub r2, #8
+ bl FUN_02007558
+ ldr r0, [r4, #0x28]
+ mov r1, #9
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_022197E0:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022197E4
+MOD08_022197E4: ; 0x022197E4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ str r5, [r4]
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r2, r0, #0
+ add r0, r4, #4
+ add r1, r6, #0
+ bl MOD08_02218654
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ cmp r0, #8
+ bgt _0221982E
+ cmp r0, #2
+ blt _022198A0
+ beq _02219834
+ cmp r0, #4
+ beq _02219850
+ cmp r0, #8
+ beq _02219874
+ b _022198A0
+_0221982E:
+ cmp r0, #0x10
+ beq _02219886
+ b _022198A0
+_02219834:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x28]
+ mov r0, #0
+ ldr r1, [r4, #0x10]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [r4, #0x10]
+ b _022198A4
+_02219850:
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022274C0
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x28]
+ mov r0, #0
+ ldr r1, [r4, #0x10]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [r4, #0x10]
+ b _022198A4
+_02219874:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x28]
+ b _022198A4
+_02219886:
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022274C0
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x28]
+ b _022198A4
+_022198A0:
+ bl ErrorHandling
+_022198A4:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x2c]
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x2e]
+ mov r0, #0x2e
+ ldrsh r0, [r4, r0]
+ ldr r1, _022198CC ; =MOD08_02219794
+ add r2, r4, #0
+ add r0, #8
+ strh r0, [r4, #0x2e]
+ ldr r0, [r4]
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022198CC: .word MOD08_02219794
+
+ thumb_func_start MOD08_022198D0
+MOD08_022198D0: ; 0x022198D0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldr r0, [r5, #0x14]
+ add r4, r1, #0
+ mov r1, #1
+ add r6, r2, #0
+ bl FUN_0200C644
+ ldr r0, [r5, #0x14]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_0200C714
+ mov r0, #0
+ str r0, [r5, #0x40]
+ mov r0, #4
+ mov r1, #0xa
+ add r5, #0x18
+ str r0, [sp]
+ add r0, r5, #0
+ add r2, r1, #0
+ mov r3, #0xe
+ bl MOD08_02218120
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02219908
+MOD08_02219908: ; 0x02219908
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r1, [r4, #0x14]
+ add r0, #0x18
+ bl MOD08_02218360
+ cmp r0, #0
+ bne _02219944
+ ldr r0, [r4, #0x40]
+ cmp r0, #0
+ beq _0221992E
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_0200C644
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, pc}
+_0221992E:
+ mov r0, #1
+ str r0, [r4, #0x40]
+ mov r0, #2
+ add r4, #0x18
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #0xa
+ mov r3, #0xc
+ bl MOD08_02218120
+_02219944:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221994C
+MOD08_0221994C: ; 0x0221994C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x48]
+ mov r5, #0
+ cmp r1, #4
+ bhi _022199E4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02219964: ; jump table
+ .short _0221996E - _02219964 - 2 ; case 0
+ .short _02219994 - _02219964 - 2 ; case 1
+ .short _022199A4 - _02219964 - 2 ; case 2
+ .short _022199D2 - _02219964 - 2 ; case 3
+ .short _022199E2 - _02219964 - 2 ; case 4
+_0221996E:
+ mov r1, #0x4c
+ ldrsh r3, [r4, r1]
+ ldr r2, [r4, #0x3c]
+ mov r1, #0x18
+ mul r1, r2
+ mov r2, #0x4e
+ ldrsh r2, [r4, r2]
+ add r1, r3, r1
+ lsl r1, r1, #0x10
+ sub r2, #0x10
+ lsl r2, r2, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_022198D0
+ ldr r0, [r4, #0x48]
+ add r0, r0, #1
+ str r0, [r4, #0x48]
+ b _022199E4
+_02219994:
+ bl MOD08_02219908
+ cmp r0, #0
+ beq _022199E4
+ ldr r0, [r4, #0x48]
+ add r0, r0, #1
+ str r0, [r4, #0x48]
+ b _022199E4
+_022199A4:
+ ldr r1, [r4, #0x44]
+ sub r1, r1, #1
+ str r1, [r4, #0x44]
+ bpl _022199E4
+ ldr r1, [r4, #0x48]
+ add r1, r1, #1
+ str r1, [r4, #0x48]
+ mov r1, #0x4c
+ ldrsh r3, [r4, r1]
+ ldr r2, [r4, #0x3c]
+ mov r1, #0x18
+ mul r1, r2
+ mov r2, #0x4e
+ ldrsh r2, [r4, r2]
+ sub r1, r3, r1
+ lsl r1, r1, #0x10
+ sub r2, #0x18
+ lsl r2, r2, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_022198D0
+ b _022199E4
+_022199D2:
+ bl MOD08_02219908
+ cmp r0, #0
+ beq _022199E4
+ ldr r0, [r4, #0x48]
+ add r0, r0, #1
+ str r0, [r4, #0x48]
+ b _022199E4
+_022199E2:
+ mov r5, #1
+_022199E4:
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_022199E8
+MOD08_022199E8: ; 0x022199E8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _022199FA
+ cmp r0, #1
+ beq _02219A0C
+ b _02219A22
+_022199FA:
+ add r0, r4, #0
+ bl MOD08_0221994C
+ cmp r0, #0
+ beq _02219A22
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02219A22
+_02219A0C:
+ ldr r0, [r4, #0x14]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_02219A22:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02219A2C
+MOD08_02219A2C: ; 0x02219A2C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ mov r1, #0x50
+ add r5, r0, #0
+ str r2, [sp]
+ add r6, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ ldr r0, [sp]
+ str r7, [r4, #4]
+ str r0, [r4, #8]
+ str r6, [r4, #0x14]
+ add r0, r6, #0
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #4
+ str r0, [r4, #0x44]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ str r0, [r4, #0x3c]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ add r5, r0, #0
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x4c
+ strh r0, [r1]
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x4e
+ strh r0, [r1]
+ ldr r0, [r4]
+ ldr r1, _02219AB4 ; =MOD08_022199E8
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02219AB4: .word MOD08_022199E8
+
+ thumb_func_start MOD08_02219AB8
+MOD08_02219AB8: ; 0x02219AB8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02219AD6
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+_02219AD6:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02219AD8
+MOD08_02219AD8: ; 0x02219AD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r1, #8
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02215504
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ beq _02219B06
+ cmp r0, #1
+ beq _02219B12
+ cmp r0, #2
+ beq _02219B18
+ b _02219B1E
+_02219B06:
+ add r0, r5, #0
+ bl MOD08_02214540
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ b _02219B22
+_02219B12:
+ mov r6, #1
+ lsl r6, r6, #8
+ b _02219B22
+_02219B18:
+ mov r6, #2
+ lsl r6, r6, #8
+ b _02219B22
+_02219B1E:
+ bl ErrorHandling
+_02219B22:
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp]
+ ldr r1, [sp, #0x10]
+ lsl r3, r7, #0x18
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #4]
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ add r2, r6, #0
+ asr r3, r3, #0x18
+ bl FUN_02003210
+ ldr r0, [r4]
+ ldr r1, _02219B7C ; =MOD08_02219AB8
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02219B7C: .word MOD08_02219AB8
+
+ thumb_func_start MOD08_02219B80
+MOD08_02219B80: ; 0x02219B80
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #5
+ bhi _02219C28
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02219B98: ; jump table
+ .short _02219BA4 - _02219B98 - 2 ; case 0
+ .short _02219BBC - _02219B98 - 2 ; case 1
+ .short _02219BCE - _02219B98 - 2 ; case 2
+ .short _02219BE0 - _02219B98 - 2 ; case 3
+ .short _02219BF8 - _02219B98 - 2 ; case 4
+ .short _02219C1A - _02219B98 - 2 ; case 5
+_02219BA4:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ ldr r2, [r4, #0x18]
+ ldr r3, [r4, #0x10]
+ bl FUN_02007E68
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_02219BBC:
+ ldr r0, [r4, #4]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _02219C28
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_02219BCE:
+ ldr r1, [r4, #0x1c]
+ cmp r1, #0
+ bne _02219BDA
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02219BE0
+_02219BDA:
+ sub r0, r1, #1
+ str r0, [r4, #0x1c]
+ pop {r3, r4, r5, pc}
+_02219BE0:
+ ldr r0, [r4, #0x14]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x18]
+ ldr r3, [r4, #0x10]
+ bl FUN_02007E68
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_02219BF8:
+ ldr r0, [r4, #4]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _02219C28
+ ldr r0, [r4, #0xc]
+ sub r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ bgt _02219C14
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_02219C14:
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_02219C1A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+_02219C28:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02219C2C
+MOD08_02219C2C: ; 0x02219C2C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x20
+ add r4, r0, #0
+ bl MOD08_02228064
+ add r6, r0, #0
+ str r4, [r6]
+ mov r1, #0
+ add r0, r4, #0
+ str r1, [r6, #4]
+ bl MOD08_02212498
+ ldr r2, _02219DF4 ; =0x00000802
+ cmp r0, r2
+ bgt _02219C66
+ bge _02219CEC
+ cmp r0, #8
+ bgt _02219C60
+ cmp r0, #2
+ blt _02219C5E
+ beq _02219C7E
+ cmp r0, #4
+ beq _02219C90
+ cmp r0, #8
+ beq _02219CB6
+_02219C5E:
+ b _02219DA4
+_02219C60:
+ cmp r0, #0x10
+ beq _02219CC8
+ b _02219DA4
+_02219C66:
+ add r1, r2, #6
+ cmp r0, r1
+ bgt _02219C76
+ bge _02219D48
+ add r1, r2, #2
+ cmp r0, r1
+ beq _02219D1C
+ b _02219DA4
+_02219C76:
+ add r2, #0xe
+ cmp r0, r2
+ beq _02219D78
+ b _02219DA4
+_02219C7E:
+ add r0, r4, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_022154D4
+ str r0, [r6, #4]
+ b _02219DA8
+_02219C90:
+ add r0, r4, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ beq _02219C9C
+ b _02219DA8
+_02219C9C:
+ ldr r0, [r6]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_022274C0
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_022154D4
+ str r0, [r6, #4]
+ b _02219DA8
+_02219CB6:
+ add r0, r4, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_022154D4
+ str r0, [r6, #4]
+ b _02219DA8
+_02219CC8:
+ add r0, r4, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _02219DA8
+ ldr r0, [r6]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_022274C0
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_022154D4
+ str r0, [r6, #4]
+ b _02219DA8
+_02219CEC:
+ mov r7, #0xff
+ mov r5, #0
+_02219CF0:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02215490
+ cmp r0, #0
+ beq _02219D00
+ cmp r0, #2
+ bne _02219D04
+_02219D00:
+ add r7, r5, #0
+ b _02219D0A
+_02219D04:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02219CF0
+_02219D0A:
+ cmp r7, #0xff
+ bne _02219D10
+ mov r7, #0
+_02219D10:
+ ldr r0, [r6]
+ add r1, r7, #0
+ bl MOD08_022154D4
+ str r0, [r6, #4]
+ b _02219DA8
+_02219D1C:
+ mov r7, #0xff
+ mov r5, #0
+_02219D20:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02215490
+ cmp r0, #4
+ bne _02219D30
+ add r7, r5, #0
+ b _02219D36
+_02219D30:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02219D20
+_02219D36:
+ cmp r7, #0xff
+ bne _02219D3C
+ mov r7, #0
+_02219D3C:
+ ldr r0, [r6]
+ add r1, r7, #0
+ bl MOD08_022154D4
+ str r0, [r6, #4]
+ b _02219DA8
+_02219D48:
+ mov r7, #0xff
+ mov r5, #0
+_02219D4C:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02215490
+ cmp r0, #1
+ beq _02219D5C
+ cmp r0, #3
+ bne _02219D60
+_02219D5C:
+ add r7, r5, #0
+ b _02219D66
+_02219D60:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02219D4C
+_02219D66:
+ cmp r7, #0xff
+ bne _02219D6C
+ mov r7, #0
+_02219D6C:
+ ldr r0, [r6]
+ add r1, r7, #0
+ bl MOD08_022154D4
+ str r0, [r6, #4]
+ b _02219DA8
+_02219D78:
+ mov r7, #0xff
+ mov r5, #0
+_02219D7C:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02215490
+ cmp r0, #5
+ bne _02219D8C
+ add r7, r5, #0
+ b _02219D92
+_02219D8C:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02219D7C
+_02219D92:
+ cmp r7, #0xff
+ bne _02219D98
+ mov r7, #0
+_02219D98:
+ ldr r0, [r6]
+ add r1, r7, #0
+ bl MOD08_022154D4
+ str r0, [r6, #4]
+ b _02219DA8
+_02219DA4:
+ bl ErrorHandling
+_02219DA8:
+ ldr r0, [r6, #4]
+ cmp r0, #0
+ bne _02219DB6
+ add r0, r6, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_02219DB6:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD08_02212498
+ str r0, [r6, #0x10]
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [r6, #0xc]
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [r6, #0x14]
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [r6, #0x18]
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r6, #0x1c]
+ ldr r0, [r6]
+ ldr r1, _02219DF8 ; =MOD08_02219B80
+ add r2, r6, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02219DF4: .word 0x00000802
+_02219DF8: .word MOD08_02219B80
+
+ thumb_func_start MOD08_02219DFC
+MOD08_02219DFC: ; 0x02219DFC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #4
+ bls _02219E0C
+ b _02219F60
+_02219E0C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02219E18: ; jump table
+ .short _02219E22 - _02219E18 - 2 ; case 0
+ .short _02219E70 - _02219E18 - 2 ; case 1
+ .short _02219EC2 - _02219E18 - 2 ; case 2
+ .short _02219EEC - _02219E18 - 2 ; case 3
+ .short _02219F4E - _02219E18 - 2 ; case 4
+_02219E22:
+ ldr r0, [r4, #0x4c]
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r1, [r4, #0x3c]
+ ldr r2, [r4, #0x44]
+ ldr r3, [r4, #0x40]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x14
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ add r0, r4, #0
+ add r0, #0x14
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x50]
+ cmp r0, #1
+ bne _02219E5E
+ ldr r1, [sp, #8]
+ mov r0, #0
+ bl _fsub
+ str r0, [sp, #8]
+_02219E5E:
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #4]
+ bl FUN_0200C884
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02219F60
+_02219E70:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x14
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x50]
+ cmp r0, #1
+ bne _02219E96
+ ldr r1, [sp, #8]
+ mov r0, #0
+ bl _fsub
+ str r0, [sp, #8]
+_02219E96:
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #4]
+ bl FUN_0200C884
+ cmp r5, #0
+ beq _02219EBA
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0xc
+ mov r2, #0xe
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ ldr r3, [r4, #0x28]
+ bl MOD08_02218314
+ b _02219F60
+_02219EBA:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02219F60
+_02219EC2:
+ ldr r0, [r4, #0x4c]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ ldr r1, [r4, #0x40]
+ ldr r2, [r4, #0x44]
+ ldr r3, [r4, #0x3c]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x14
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02219F60
+_02219EEC:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x14
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x50]
+ cmp r0, #1
+ bne _02219F12
+ ldr r1, [sp, #8]
+ mov r0, #0
+ bl _fsub
+ str r0, [sp, #8]
+_02219F12:
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #4]
+ bl FUN_0200C884
+ cmp r5, #0
+ beq _02219F36
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0xc
+ mov r2, #0xe
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ ldr r3, [r4, #0x28]
+ bl MOD08_02218314
+ b _02219F60
+_02219F36:
+ ldr r0, [r4, #0x48]
+ sub r0, r0, #1
+ str r0, [r4, #0x48]
+ cmp r0, #0
+ bgt _02219F48
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02219F60
+_02219F48:
+ mov r0, #0
+ str r0, [r4, #8]
+ b _02219F60
+_02219F4E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add sp, #0xc
+ pop {r4, r5, pc}
+_02219F60:
+ ldr r0, [r4, #4]
+ bl FUN_0200BC1C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02219F6C
+MOD08_02219F6C: ; 0x02219F6C
+ push {r4, r5, r6, lr}
+ mov r1, #0x54
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ bne _02219FAE
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ add r6, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_0221552C
+ b _02219FCC
+_02219FAE:
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ add r6, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_0221552C
+_02219FCC:
+ strh r0, [r4, #0xe]
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0xc]
+ add r0, r6, #0
+ mov r1, #0x29
+ bl FUN_0200782C
+ mov r1, #0xc
+ ldrsh r1, [r4, r1]
+ sub r0, r1, r0
+ strh r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ str r0, [r4, #0x38]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [r4, #0x3c]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [r4, #0x40]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [r4, #0x44]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r4, #0x48]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD08_02212498
+ str r0, [r4, #0x4c]
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD08_02212498
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022124D8
+ str r0, [r4, #0x10]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r1, [r4, #0x38]
+ mov r2, #0x10
+ ldr r0, [r4]
+ sub r2, r2, r1
+ bl MOD08_02227994
+ ldr r0, [r4]
+ ldr r1, _0221A08C ; =MOD08_02219DFC
+ add r2, r4, #0
+ bl MOD08_02212400
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ beq _0221A07A
+ mov r1, #1
+ b _0221A07C
+_0221A07A:
+ mov r1, #0
+_0221A07C:
+ ldr r0, [r4]
+ bl MOD08_02215680
+ cmp r0, #1
+ bne _0221A08A
+ mov r0, #1
+ str r0, [r4, #0x50]
+_0221A08A:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0221A08C: .word MOD08_02219DFC
+
+ thumb_func_start MOD08_0221A090
+MOD08_0221A090: ; 0x0221A090
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #5
+ bls _0221A0A0
+ b _0221A1DC
+_0221A0A0:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0221A0AC: ; jump table
+ .short _0221A0B8 - _0221A0AC - 2 ; case 0
+ .short _0221A0FC - _0221A0AC - 2 ; case 1
+ .short _0221A12C - _0221A0AC - 2 ; case 2
+ .short _0221A140 - _0221A0AC - 2 ; case 3
+ .short _0221A186 - _0221A0AC - 2 ; case 4
+ .short _0221A1C8 - _0221A0AC - 2 ; case 5
+_0221A0B8:
+ ldr r0, [r4, #0x40]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [r4, #0x44]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x4c]
+ asr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r1, [r4, #0x34]
+ ldr r2, [r4, #0x38]
+ ldr r3, [r4, #0x3c]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_022181A8
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x10
+ bl MOD08_02218380
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_0221A0FC:
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x10
+ bl MOD08_022183A0
+ cmp r0, #0
+ beq _0221A122
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #8
+ mov r2, #0xa
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ ldr r3, [r4, #0x24]
+ bl MOD08_022182DC
+ add sp, #0xc
+ pop {r4, r5, pc}
+_0221A122:
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_0221A12C:
+ ldr r1, [r4, #0x50]
+ cmp r1, #0
+ bne _0221A138
+ add r0, r0, #1
+ str r0, [r4, #4]
+ b _0221A140
+_0221A138:
+ sub r0, r1, #1
+ add sp, #0xc
+ str r0, [r4, #0x50]
+ pop {r4, r5, pc}
+_0221A140:
+ ldr r0, [r4, #0x3c]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [r4, #0x44]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x4c]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r1, [r4, #0x38]
+ ldr r2, [r4, #0x34]
+ ldr r3, [r4, #0x40]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_022181A8
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x10
+ bl MOD08_022183A0
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_0221A186:
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x10
+ bl MOD08_022183A0
+ cmp r0, #0
+ beq _0221A1AC
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #8
+ mov r2, #0xa
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ ldr r3, [r4, #0x24]
+ bl MOD08_022182DC
+ add sp, #0xc
+ pop {r4, r5, pc}
+_0221A1AC:
+ ldr r0, [r4, #0x48]
+ sub r0, r0, #1
+ str r0, [r4, #0x48]
+ cmp r0, #0
+ bgt _0221A1C0
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_0221A1C0:
+ mov r0, #0
+ add sp, #0xc
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_0221A1C8:
+ ldr r0, [r4, #0xc]
+ bl MOD08_02218E34
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+_0221A1DC:
+ add sp, #0xc
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD08_0221A1E0
+MOD08_0221A1E0: ; 0x0221A1E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ add r5, r0, #0
+ mov r1, #0x54
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ str r5, [r4]
+ bl MOD08_02212498
+ ldr r2, _0221A3E4 ; =0x00000802
+ cmp r0, r2
+ bgt _0221A224
+ bge _0221A290
+ mov r2, #0x42
+ lsl r2, r2, #2
+ cmp r0, r2
+ bgt _0221A21C
+ sub r1, r2, #6
+ cmp r0, r1
+ blt _0221A21A
+ beq _0221A23C
+ sub r1, r2, #4
+ cmp r0, r1
+ beq _0221A23C
+ cmp r0, r2
+ beq _0221A266
+_0221A21A:
+ b _0221A346
+_0221A21C:
+ add r2, #8
+ cmp r0, r2
+ beq _0221A266
+ b _0221A346
+_0221A224:
+ add r1, r2, #6
+ cmp r0, r1
+ bgt _0221A234
+ bge _0221A2EC
+ add r1, r2, #2
+ cmp r0, r1
+ beq _0221A2C0
+ b _0221A346
+_0221A234:
+ add r2, #0xe
+ cmp r0, r2
+ beq _0221A31C
+ b _0221A346
+_0221A23C:
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_0221552C
+ strh r0, [r4, #0xa]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r2, sp, #4
+ add r3, sp, #0
+ bl MOD08_02227BAC
+ ldr r0, [sp, #0xc]
+ str r0, [r4, #0xc]
+ b _0221A346
+_0221A266:
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_0221552C
+ strh r0, [r4, #0xa]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r2, sp, #4
+ add r3, sp, #0
+ bl MOD08_02227BAC
+ ldr r0, [sp, #0xc]
+ str r0, [r4, #0xc]
+ b _0221A346
+_0221A290:
+ mov r7, #0xff
+ mov r6, #0
+_0221A294:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02215490
+ cmp r0, #0
+ beq _0221A2A4
+ cmp r0, #2
+ bne _0221A2A8
+_0221A2A4:
+ add r7, r6, #0
+ b _0221A2AE
+_0221A2A8:
+ add r6, r6, #1
+ cmp r6, #4
+ blt _0221A294
+_0221A2AE:
+ cmp r7, #0xff
+ bne _0221A2B4
+ mov r7, #0
+_0221A2B4:
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ b _0221A346
+_0221A2C0:
+ mov r7, #0xff
+ mov r6, #0
+_0221A2C4:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02215490
+ cmp r0, #4
+ bne _0221A2D4
+ add r7, r6, #0
+ b _0221A2DA
+_0221A2D4:
+ add r6, r6, #1
+ cmp r6, #4
+ blt _0221A2C4
+_0221A2DA:
+ cmp r7, #0xff
+ bne _0221A2E0
+ mov r7, #0
+_0221A2E0:
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ b _0221A346
+_0221A2EC:
+ mov r7, #0xff
+ mov r6, #0
+_0221A2F0:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02215490
+ cmp r0, #1
+ beq _0221A300
+ cmp r0, #3
+ bne _0221A304
+_0221A300:
+ add r7, r6, #0
+ b _0221A30A
+_0221A304:
+ add r6, r6, #1
+ cmp r6, #4
+ blt _0221A2F0
+_0221A30A:
+ cmp r7, #0xff
+ bne _0221A310
+ mov r7, #0
+_0221A310:
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ b _0221A346
+_0221A31C:
+ mov r7, #0xff
+ mov r6, #0
+_0221A320:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02215490
+ cmp r0, #5
+ bne _0221A330
+ add r7, r6, #0
+ b _0221A336
+_0221A330:
+ add r6, r6, #1
+ cmp r6, #4
+ blt _0221A320
+_0221A336:
+ cmp r7, #0xff
+ bne _0221A33C
+ mov r7, #0
+_0221A33C:
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+_0221A346:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ bne _0221A356
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+_0221A356:
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x29
+ bl FUN_0200782C
+ strh r0, [r4, #0xa]
+ mov r0, #0xa
+ ldrsh r0, [r4, r0]
+ mov r1, #1
+ add r0, #0x10
+ strh r0, [r4, #0xa]
+ add r0, r5, #0
+ bl MOD08_02212498
+ str r0, [r4, #0x34]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [r4, #0x38]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [r4, #0x3c]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [r4, #0x40]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r4, #0x44]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD08_02212498
+ str r0, [r4, #0x48]
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD08_02212498
+ str r0, [r4, #0x4c]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD08_02212498
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [r4, #0x48]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD08_02212498
+ asr r0, r0, #0x10
+ str r0, [r4, #0x50]
+ ldr r0, [r4]
+ ldr r1, _0221A3E8 ; =MOD08_0221A090
+ add r2, r4, #0
+ bl MOD08_02212400
+ add r1, r4, #0
+ bl MOD08_0221A090
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221A3E4: .word 0x00000802
+_0221A3E8: .word MOD08_0221A090
+
+ thumb_func_start MOD08_0221A3EC
+MOD08_0221A3EC: ; 0x0221A3EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #8
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _0221A40E
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ pop {r3, r4, r5, pc}
+_0221A40E:
+ ldr r0, [r4, #4]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221A418
+MOD08_0221A418: ; 0x0221A418
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r1, #0x30
+ add r7, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r7, [r4]
+ add r0, r7, #0
+ bl MOD08_02212504
+ str r0, [r4, #4]
+ add r0, r7, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r6, r0, #0
+ mov r5, #0
+_0221A43C:
+ mov r0, #1
+ lsl r0, r5
+ tst r0, r6
+ beq _0221A452
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_022124D8
+ mov r1, #1
+ bl FUN_0200C90C
+_0221A452:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _0221A43C
+ add r0, r7, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r5, r0, #0
+ add r0, r7, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r2, [sp, #8]
+ add r1, r5, #0
+ bl MOD08_02227994
+ add r0, r7, #0
+ mov r1, #2
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r0, r7, #0
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ mov r1, #5
+ bl MOD08_02212498
+ ldr r1, [sp, #0xc]
+ ldr r3, [sp, #8]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ str r1, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r1, r5, #0x10
+ lsl r2, r6, #0x10
+ lsl r3, r3, #0x10
+ add r0, #8
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_022186D4
+ ldr r0, [r4]
+ ldr r1, _0221A4C0 ; =MOD08_0221A3EC
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221A4C0: .word MOD08_0221A3EC
+
+ thumb_func_start MOD08_0221A4C4
+MOD08_0221A4C4: ; 0x0221A4C4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r5, r0, #0
+ add r0, r6, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r1, r0, #0
+ add r0, r6, #0
+ add r2, sp, #4
+ add r3, sp, #0
+ bl MOD08_02227BAC
+ ldr r0, [sp]
+ mov r4, #0
+ cmp r0, #0
+ ble _0221A512
+ mov r7, #6
+_0221A4F0:
+ ldr r1, [sp, #0x14]
+ add r0, r6, #0
+ bl MOD08_02215554
+ cmp r0, #1
+ bne _0221A500
+ cmp r5, #0
+ beq _0221A50A
+_0221A500:
+ ldr r0, [sp, #0xc]
+ add r1, r7, #0
+ add r2, r5, #0
+ bl FUN_02007558
+_0221A50A:
+ ldr r0, [sp]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _0221A4F0
+_0221A512:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221A518
+MOD08_0221A518: ; 0x0221A518
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, [r4, #4]
+ ldr r0, [r4, #8]
+ cmp r1, r0
+ blt _0221A566
+ ldr r0, [r4]
+ cmp r0, #0
+ ldr r0, [r4, #0x14]
+ bne _0221A546
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4, #0x3c]
+ add r1, r5, #0
+ bl MOD08_02212438
+ pop {r3, r4, r5, pc}
+_0221A546:
+ mov r1, #6
+ bl FUN_0200782C
+ add r3, r0, #0
+ mov r2, #1
+ ldr r0, [r4, #0x14]
+ mov r1, #6
+ eor r2, r3
+ bl FUN_02007558
+ ldr r0, [r4]
+ sub r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_0221A566:
+ add r0, r1, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_0221A56C
+MOD08_0221A56C: ; 0x0221A56C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x40
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ str r5, [r4, #0x3c]
+ bl MOD08_02212498
+ lsl r0, r0, #1
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r1, r4, #0
+ str r0, [r4, #8]
+ add r0, r5, #0
+ add r1, #0x20
+ bl MOD08_02227B70
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x3c]
+ ldr r1, _0221A5B8 ; =MOD08_0221A518
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_0221A5B8: .word MOD08_0221A518
+
+ thumb_func_start MOD08_0221A5BC
+MOD08_0221A5BC: ; 0x0221A5BC
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0x24
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0221A5D4
+ cmp r0, #1
+ beq _0221A608
+ b _0221A632
+_0221A5D4:
+ mov r0, #0x16
+ ldrsh r3, [r4, r0]
+ mov r0, #0x14
+ ldrsh r1, [r4, r0]
+ mov r2, #0xc
+ str r3, [sp]
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldrsh r2, [r4, r2]
+ add r0, r4, #0
+ add r0, #0x40
+ add r2, r1, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ add r0, r4, #0
+ add r0, #0x24
+ ldrb r0, [r0]
+ add r4, #0x24
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, pc}
+_0221A608:
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _0221A622
+ add r0, r4, #0
+ add r0, #0x24
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x24
+ strb r1, [r0]
+_0221A622:
+ mov r2, #0x40
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, pc}
+_0221A632:
+ ldr r0, [r4, #0x64]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD08_0221A644
+MOD08_0221A644: ; 0x0221A644
+ push {r4, r5, r6, lr}
+ mov r1, #0x68
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4, #0x64]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ strh r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ mov r6, #0xff
+ add r1, r6, #0
+ add r1, #9
+ cmp r0, r1
+ bgt _0221A690
+ add r1, r6, #3
+ cmp r0, r1
+ blt _0221A6E6
+ beq _0221A69A
+ add r1, r6, #5
+ cmp r0, r1
+ beq _0221A6A4
+ add r1, r6, #0
+ add r1, #9
+ cmp r0, r1
+ beq _0221A6C0
+ b _0221A6E6
+_0221A690:
+ add r1, r6, #0
+ add r1, #0x11
+ cmp r0, r1
+ beq _0221A6CA
+ b _0221A6E6
+_0221A69A:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ b _0221A6EA
+_0221A6A4:
+ add r0, r5, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _0221A6EA
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _0221A6EA
+_0221A6C0:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r6, r0, #0
+ b _0221A6EA
+_0221A6CA:
+ add r0, r5, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _0221A6EA
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _0221A6EA
+_0221A6E6:
+ bl ErrorHandling
+_0221A6EA:
+ cmp r6, #0xff
+ bne _0221A6F6
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+_0221A6F6:
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x24
+ bl MOD08_02227B70
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_022154D4
+ add r1, r4, #0
+ add r1, #0x14
+ str r0, [r4, #0x18]
+ bl MOD08_02227B2C
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C1C
+ cmp r0, #0
+ bgt _0221A728
+ mov r0, #0xc
+ ldrsh r1, [r4, r0]
+ sub r0, #0xd
+ mul r0, r1
+ strh r0, [r4, #0xc]
+_0221A728:
+ ldr r0, [r4, #0x64]
+ ldr r1, _0221A734 ; =MOD08_0221A5BC
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0221A734: .word MOD08_0221A5BC
+
+ thumb_func_start MOD08_0221A738
+MOD08_0221A738: ; 0x0221A738
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0221A750
+ cmp r0, #1
+ beq _0221A792
+ b _0221A7BC
+_0221A750:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _0221A760
+ mov r0, #0xff
+ add r4, #0x20
+ add sp, #8
+ strb r0, [r4]
+ pop {r4, pc}
+_0221A760:
+ mov r0, #0x12
+ ldrsh r3, [r4, r0]
+ mov r0, #0x10
+ ldrsh r1, [r4, r0]
+ mov r2, #0x64
+ str r3, [sp]
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldrsh r2, [r4, r2]
+ add r0, r4, #0
+ add r0, #0x3c
+ add r2, r1, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x20
+ strb r1, [r0]
+_0221A792:
+ add r0, r4, #0
+ add r0, #0x3c
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _0221A7AC
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x20
+ strb r1, [r0]
+_0221A7AC:
+ mov r2, #0x3c
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, pc}
+_0221A7BC:
+ ldr r0, [r4, #0x60]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221A7D0
+MOD08_0221A7D0: ; 0x0221A7D0
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x68
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4, #0x60]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r1, r4, #0
+ add r1, #0x64
+ strh r0, [r1]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ add r1, r4, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, #0x20
+ bl MOD08_02227B70
+ mov r6, #0xff
+ add r0, r6, #0
+ add r0, #9
+ cmp r7, r0
+ bgt _0221A82C
+ add r0, r6, #3
+ cmp r7, r0
+ blt _0221A882
+ beq _0221A836
+ add r0, r6, #5
+ cmp r7, r0
+ beq _0221A840
+ add r0, r6, #0
+ add r0, #9
+ cmp r7, r0
+ beq _0221A85C
+ b _0221A882
+_0221A82C:
+ add r0, r6, #0
+ add r0, #0x11
+ cmp r7, r0
+ beq _0221A866
+ b _0221A882
+_0221A836:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ b _0221A886
+_0221A840:
+ add r0, r5, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _0221A886
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _0221A886
+_0221A85C:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r6, r0, #0
+ b _0221A886
+_0221A866:
+ add r0, r5, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _0221A886
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _0221A886
+_0221A882:
+ bl ErrorHandling
+_0221A886:
+ cmp r6, #0xff
+ bne _0221A892
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_0221A892:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_022154D4
+ add r1, r4, #0
+ add r1, #0x10
+ str r0, [r4, #0x14]
+ bl MOD08_02227B2C
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C1C
+ cmp r0, #0
+ bgt _0221A8C0
+ mov r0, #0x64
+ ldrsh r1, [r4, r0]
+ sub r0, #0x65
+ add r2, r1, #0
+ mul r2, r0
+ add r0, r4, #0
+ add r0, #0x64
+ strh r2, [r0]
+_0221A8C0:
+ add r0, r5, #0
+ bl MOD08_02212004
+ ldr r0, [r4, #0x60]
+ ldr r1, _0221A8D8 ; =MOD08_0221A738
+ add r2, r4, #0
+ bl MOD08_02212400
+ add r1, r4, #0
+ bl MOD08_0221A738
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221A8D8: .word MOD08_0221A738
+
+ thumb_func_start MOD08_0221A8DC
+MOD08_0221A8DC: ; 0x0221A8DC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bls _0221A8EC
+ b _0221AA6A
+_0221A8EC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221A8F8: ; jump table
+ .short _0221A900 - _0221A8F8 - 2 ; case 0
+ .short _0221A962 - _0221A8F8 - 2 ; case 1
+ .short _0221A9AC - _0221A8F8 - 2 ; case 2
+ .short _0221A9FA - _0221A8F8 - 2 ; case 3
+_0221A900:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #1
+ bne _0221A958
+ add r0, r4, #0
+ add r0, #0x38
+ bl MOD08_022183F0
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x16
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r2, #0x38
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_020079E0
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x28]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221A958:
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221A962:
+ ldrb r0, [r4, #9]
+ add r0, r0, #1
+ strb r0, [r4, #9]
+ ldrb r1, [r4, #9]
+ ldrb r0, [r4, #0xa]
+ cmp r1, r0
+ bhi _0221A972
+ b _0221AA78
+_0221A972:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD08_02212498
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl MOD08_02212498
+ add r6, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [sp]
+ add r0, r4, #0
+ lsl r1, r5, #0x10
+ lsl r3, r6, #0x10
+ add r0, #0x14
+ asr r1, r1, #0x10
+ mov r2, #0x64
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221A9AC:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #1
+ bne _0221A9F0
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x16
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x28]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221A9F0:
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221A9FA:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #1
+ ldr r0, [r4, #0x10]
+ bne _0221AA3E
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x16
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x28]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221AA3E:
+ mov r1, #0xc
+ add r2, r1, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r2, #2
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02007558
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221AA6A:
+ ldr r0, [r4, #0xc]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221AA78:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD08_0221AA7C
+MOD08_0221AA7C: ; 0x0221AA7C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x5c
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4, #8]
+ strb r0, [r4]
+ str r5, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ mov r0, #0
+ strb r0, [r4, #9]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ strb r0, [r4, #0xa]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #2]
+ ldr r0, [r4, #0xc]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_0221552C
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x64
+ lsl r3, r6, #0x10
+ add r0, #0x14
+ add r2, r1, #0
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ mov r0, #0xa
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x38
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD08_022183C0
+ ldr r0, [r4, #0xc]
+ ldr r1, _0221AB14 ; =MOD08_0221A8DC
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0221AB14: .word MOD08_0221A8DC
+
+ thumb_func_start MOD08_0221AB18
+MOD08_0221AB18: ; 0x0221AB18
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bls _0221AB28
+ b _0221ACA8
+_0221AB28:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221AB34: ; jump table
+ .short _0221AB3C - _0221AB34 - 2 ; case 0
+ .short _0221AB9E - _0221AB34 - 2 ; case 1
+ .short _0221ABEA - _0221AB34 - 2 ; case 2
+ .short _0221AC38 - _0221AB34 - 2 ; case 3
+_0221AB3C:
+ add r0, r4, #0
+ add r0, #0x20
+ bl MOD08_02218224
+ cmp r0, #1
+ bne _0221AB94
+ add r0, r4, #0
+ add r0, #0x44
+ bl MOD08_022183F0
+ mov r2, #0x20
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x22
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r2, #0x44
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_020079E0
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x34]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r3, r4, pc}
+_0221AB94:
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221AB9E:
+ ldrb r0, [r4, #9]
+ add r0, r0, #1
+ strb r0, [r4, #9]
+ ldrb r1, [r4, #9]
+ ldrb r0, [r4, #0xa]
+ cmp r1, r0
+ bhi _0221ABAE
+ b _0221ACB6
+_0221ABAE:
+ ldr r3, [r4, #0x10]
+ ldr r2, [r4, #0xc]
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ asr r1, r2, #0x10
+ mov r0, #0x64
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ asr r3, r3, #0x10
+ str r0, [sp, #8]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x20
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_022181A8
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221ABEA:
+ add r0, r4, #0
+ add r0, #0x20
+ bl MOD08_02218224
+ cmp r0, #1
+ bne _0221AC2E
+ mov r2, #0x20
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x22
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x34]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r3, r4, pc}
+_0221AC2E:
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221AC38:
+ add r0, r4, #0
+ add r0, #0x20
+ bl MOD08_02218224
+ cmp r0, #1
+ ldr r0, [r4, #0x1c]
+ bne _0221AC7C
+ mov r2, #0x20
+ ldrsh r2, [r4, r2]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x22
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x34]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r3, r4, pc}
+_0221AC7C:
+ mov r1, #0xc
+ add r2, r1, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #0x1c]
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r2, #2
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl FUN_02007558
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221ACA8:
+ ldr r0, [r4, #0x18]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221ACB6:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221ACBC
+MOD08_0221ACBC: ; 0x0221ACBC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x68
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4, #8]
+ strb r0, [r4]
+ str r5, [r4, #0x18]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0x18]
+ bl MOD08_022154D4
+ str r0, [r4, #0x1c]
+ mov r0, #0
+ strb r0, [r4, #9]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD08_02212498
+ strb r0, [r4, #0xa]
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x18]
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #0
+ add r3, r4, #2
+ bl MOD08_02217B50
+ ldr r0, [r4, #0x18]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0x18]
+ bl MOD08_0221552C
+ str r0, [r4, #4]
+ mov r1, #2
+ ldrsh r1, [r4, r1]
+ add r0, r1, r0
+ strh r0, [r4, #2]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ asr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ asr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r6, [sp]
+ mov r1, #0x64
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ ldr r1, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ add r0, #0x20
+ add r2, r7, #0
+ bl MOD08_022181A8
+ mov r0, #0xa
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x44
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD08_022183C0
+ ldr r0, [r4, #0x18]
+ ldr r1, _0221ADBC ; =MOD08_0221AB18
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0221ADBC: .word MOD08_0221AB18
+
+ thumb_func_start MOD08_0221ADC0
+MOD08_0221ADC0: ; 0x0221ADC0
+ push {r3, r4, r5, lr}
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r2]
+ ldr r0, _0221ADEC ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD08_02214850
+ ldr r0, [r4, #8]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ nop
+_0221ADEC: .word 0xFFFF1FFF
+
+ thumb_func_start MOD08_0221ADF0
+MOD08_0221ADF0: ; 0x0221ADF0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x28
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD08_02227B70
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD08_0221477C
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x24]
+ mov r1, #2
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r1, _0221AE70 ; =0x3F99999A
+ ldr r0, [r4, #0x24]
+ add r2, r1, #0
+ bl FUN_0200C884
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _0221AE74 ; =0xFFFF1FFF
+ and r2, r1
+ lsr r1, r0, #0xb
+ orr r1, r2
+ str r1, [r0]
+ add r0, #0x4a
+ ldrh r2, [r0]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x1b
+ orr r1, r2
+ strh r1, [r0]
+ ldrh r2, [r0]
+ ldr r1, _0221AE78 ; =0xFFFFC0FF
+ and r2, r1
+ mov r1, #7
+ lsl r1, r1, #8
+ orr r1, r2
+ strh r1, [r0]
+ ldr r0, [r4, #8]
+ ldr r1, _0221AE7C ; =MOD08_0221ADC0
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_0221AE70: .word 0x3F99999A
+_0221AE74: .word 0xFFFF1FFF
+_0221AE78: .word 0xFFFFC0FF
+_0221AE7C: .word MOD08_0221ADC0
+
+ thumb_func_start MOD08_0221AE80
+MOD08_0221AE80: ; 0x0221AE80
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0221AE98
+ cmp r0, #1
+ beq _0221AED4
+ b _0221AF0A
+_0221AE98:
+ mov r0, #0x12
+ ldrsh r3, [r4, r0]
+ mov r0, #0x10
+ ldrsh r1, [r4, r0]
+ mov r0, #0x66
+ ldrsh r0, [r4, r0]
+ mov r2, #0x64
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldrsh r2, [r4, r2]
+ add r0, r4, #0
+ add r0, #0x3c
+ add r2, r1, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x20
+ strb r1, [r0]
+_0221AED4:
+ add r0, r4, #0
+ add r0, #0x3c
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _0221AEEE
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x20
+ strb r1, [r0]
+_0221AEEE:
+ mov r2, #0x3c
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x3e
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, pc}
+_0221AF0A:
+ ldr r0, [r4, #0x60]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD08_0221AF1C
+MOD08_0221AF1C: ; 0x0221AF1C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x68
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4, #0x60]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r1, r4, #0
+ add r1, #0x64
+ strh r0, [r1]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ add r1, r4, #0
+ add r1, #0x66
+ strh r0, [r1]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ add r1, r4, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, #0x20
+ bl MOD08_02227B70
+ mov r6, #0xff
+ add r0, r6, #0
+ add r0, #9
+ cmp r7, r0
+ bgt _0221AF86
+ add r0, r6, #3
+ cmp r7, r0
+ blt _0221AFDC
+ beq _0221AF90
+ add r0, r6, #5
+ cmp r7, r0
+ beq _0221AF9A
+ add r0, r6, #0
+ add r0, #9
+ cmp r7, r0
+ beq _0221AFB6
+ b _0221AFDC
+_0221AF86:
+ add r0, r6, #0
+ add r0, #0x11
+ cmp r7, r0
+ beq _0221AFC0
+ b _0221AFDC
+_0221AF90:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ b _0221AFE0
+_0221AF9A:
+ add r0, r5, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _0221AFE0
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _0221AFE0
+_0221AFB6:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r6, r0, #0
+ b _0221AFE0
+_0221AFC0:
+ add r0, r5, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _0221AFE0
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _0221AFE0
+_0221AFDC:
+ bl ErrorHandling
+_0221AFE0:
+ cmp r6, #0xff
+ bne _0221AFEC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_0221AFEC:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0x14]
+ cmp r0, #0
+ bne _0221B002
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_0221B002:
+ add r1, r4, #0
+ add r1, #0x10
+ bl MOD08_02227B2C
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C1C
+ cmp r0, #0
+ bgt _0221B036
+ mov r0, #0x64
+ ldrsh r1, [r4, r0]
+ sub r0, #0x65
+ add r2, r1, #0
+ mul r2, r0
+ add r0, r4, #0
+ add r0, #0x64
+ strh r2, [r0]
+ mov r0, #0x66
+ ldrsh r1, [r4, r0]
+ sub r0, #0x67
+ add r2, r1, #0
+ mul r2, r0
+ add r0, r4, #0
+ add r0, #0x66
+ strh r2, [r0]
+_0221B036:
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _0221B050
+ mov r0, #0x66
+ ldrsh r1, [r4, r0]
+ sub r0, #0x67
+ add r2, r1, #0
+ mul r2, r0
+ add r0, r4, #0
+ add r0, #0x66
+ strh r2, [r0]
+_0221B050:
+ ldr r0, [r4, #0x60]
+ ldr r1, _0221B064 ; =MOD08_0221AE80
+ add r2, r4, #0
+ bl MOD08_02212400
+ add r1, r4, #0
+ bl MOD08_0221AE80
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221B064: .word MOD08_0221AE80
+
+ thumb_func_start MOD08_0221B068
+MOD08_0221B068: ; 0x0221B068
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0x20
+ mov r2, #0x22
+ add r5, r0, #0
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x24]
+ add r0, #0x30
+ bl MOD08_02217E58
+ cmp r0, #0
+ bne _0221B0AC
+ mov r2, #0x20
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x22
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ sub r2, #8
+ bl FUN_02007558
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221B0AC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221B0B0
+MOD08_0221B0B0: ; 0x0221B0B0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ mov r1, #0x54
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r2, r4, #0
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, #0x1c
+ add r3, sp, #0
+ bl MOD08_02227BAC
+ mov r0, #0x22
+ ldrsh r0, [r4, r0]
+ mov r1, #1
+ add r0, #8
+ strh r0, [r4, #0x22]
+ add r0, r5, #0
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0x30
+ add r1, r6, #0
+ bl MOD08_02218654
+ ldr r1, [r4, #0x3c]
+ add r2, r4, #0
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [r4, #0x3c]
+ ldr r1, [r4, #0x44]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [r4, #0x44]
+ ldr r0, [r4, #4]
+ ldr r1, _0221B124 ; =MOD08_0221B068
+ bl MOD08_02212400
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0221B124: .word MOD08_0221B068
+
+ thumb_func_start MOD08_0221B128
+MOD08_0221B128: ; 0x0221B128
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ bne _0221B160
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _0221B146
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221B146:
+ mov r2, #0x30
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x32
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl FUN_02007558
+ pop {r4, pc}
+_0221B160:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_0221B170
+MOD08_0221B170: ; 0x0221B170
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r1, #0x5c
+ add r6, r0, #0
+ bl MOD08_02228064
+ add r5, r0, #0
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD08_02227B70
+ add r0, r6, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r4, r0, #0
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r7, r0, #0
+ cmp r4, #8
+ bgt _0221B1AE
+ cmp r4, #2
+ blt _0221B1EC
+ beq _0221B1B4
+ cmp r4, #4
+ beq _0221B1BE
+ cmp r4, #8
+ beq _0221B1D0
+ b _0221B1EC
+_0221B1AE:
+ cmp r4, #0x10
+ beq _0221B1DA
+ b _0221B1EC
+_0221B1B4:
+ add r0, r6, #0
+ bl MOD08_02212458
+ str r0, [sp, #8]
+ b _0221B1F0
+_0221B1BE:
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022274C0
+ str r0, [sp, #8]
+ b _0221B1F0
+_0221B1D0:
+ add r0, r6, #0
+ bl MOD08_02212460
+ str r0, [sp, #8]
+ b _0221B1F0
+_0221B1DA:
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022274C0
+ str r0, [sp, #8]
+ b _0221B1F0
+_0221B1EC:
+ bl ErrorHandling
+_0221B1F0:
+ add r2, r5, #0
+ ldr r1, [sp, #8]
+ add r0, r6, #0
+ add r2, #0x54
+ bl MOD08_022275C0
+ add r2, r5, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, #0x1c
+ add r3, sp, #0xc
+ bl MOD08_02227BAC
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x58
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0x5a
+ strh r1, [r0]
+ ldr r0, [r5, #4]
+ ldr r1, [sp, #8]
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _0221B22A
+ mov r1, #0x4f
+ mvn r1, r1
+ b _0221B22E
+_0221B22A:
+ mov r1, #0x15
+ lsl r1, r1, #4
+_0221B22E:
+ add r0, r5, #0
+ add r0, #0x58
+ strh r1, [r0]
+ mov r0, #0x22
+ ldrsh r3, [r5, r0]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ str r3, [sp]
+ str r0, [sp, #4]
+ mov r1, #0x20
+ mov r2, #0x58
+ add r0, r5, #0
+ ldrsh r1, [r5, r1]
+ ldrsh r2, [r5, r2]
+ add r0, #0x30
+ bl MOD08_02217E80
+ ldr r0, [r5, #4]
+ ldr r1, _0221B260 ; =MOD08_0221B128
+ add r2, r5, #0
+ bl MOD08_02212400
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221B260: .word MOD08_0221B128
+
+ thumb_func_start MOD08_0221B264
+MOD08_0221B264: ; 0x0221B264
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r1, #0x5c
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ add r7, r0, #0
+ cmp r6, #8
+ bgt _0221B2AC
+ cmp r6, #2
+ blt _0221B2EA
+ beq _0221B2B2
+ cmp r6, #4
+ beq _0221B2BC
+ cmp r6, #8
+ beq _0221B2CE
+ b _0221B2EA
+_0221B2AC:
+ cmp r6, #0x10
+ beq _0221B2D8
+ b _0221B2EA
+_0221B2B2:
+ add r0, r5, #0
+ bl MOD08_02212458
+ str r0, [sp, #8]
+ b _0221B2EE
+_0221B2BC:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ str r0, [sp, #8]
+ b _0221B2EE
+_0221B2CE:
+ add r0, r5, #0
+ bl MOD08_02212460
+ str r0, [sp, #8]
+ b _0221B2EE
+_0221B2D8:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ str r0, [sp, #8]
+ b _0221B2EE
+_0221B2EA:
+ bl ErrorHandling
+_0221B2EE:
+ add r2, r4, #0
+ ldr r1, [sp, #8]
+ add r0, r5, #0
+ add r2, #0x54
+ bl MOD08_022275C0
+ add r2, r4, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, #0x1c
+ add r3, sp, #0x10
+ bl MOD08_02227BAC
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x58
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x5a
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #8]
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _0221B328
+ mov r1, #0x4f
+ mvn r1, r1
+ b _0221B32C
+_0221B328:
+ mov r1, #0x15
+ lsl r1, r1, #4
+_0221B32C:
+ add r0, r4, #0
+ add r0, #0x58
+ strh r1, [r0]
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bne _0221B356
+ mov r0, #0x22
+ ldrsh r3, [r4, r0]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ str r3, [sp]
+ str r0, [sp, #4]
+ mov r1, #0x20
+ mov r2, #0x58
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ add r0, #0x30
+ bl MOD08_02217E80
+ b _0221B37A
+_0221B356:
+ ldr r1, [sp, #8]
+ add r0, r5, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ add r2, r0, #0
+ mov r0, #0x22
+ ldrsh r3, [r4, r0]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ str r3, [sp]
+ str r0, [sp, #4]
+ mov r1, #0x58
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ add r0, #0x30
+ bl MOD08_02217E80
+_0221B37A:
+ ldr r0, [r4, #4]
+ ldr r1, _0221B388 ; =MOD08_0221B128
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221B388: .word MOD08_0221B128
+
+ thumb_func_start MOD08_0221B38C
+MOD08_0221B38C: ; 0x0221B38C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ mov r1, #0
+ add r5, r0, #0
+ bl MOD08_02212498
+ add r4, r0, #0
+ cmp r4, #8
+ bgt _0221B3AE
+ cmp r4, #2
+ blt _0221B3EC
+ beq _0221B3B4
+ cmp r4, #4
+ beq _0221B3BE
+ cmp r4, #8
+ beq _0221B3D0
+ b _0221B3EC
+_0221B3AE:
+ cmp r4, #0x10
+ beq _0221B3DA
+ b _0221B3EC
+_0221B3B4:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ b _0221B3F0
+_0221B3BE:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _0221B3F0
+_0221B3D0:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r6, r0, #0
+ b _0221B3F0
+_0221B3DA:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r6, r0, #0
+ b _0221B3F0
+_0221B3EC:
+ bl ErrorHandling
+_0221B3F0:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, sp, #0
+ bl MOD08_022275C0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, sp, #8
+ add r3, sp, #4
+ bl MOD08_02227BAC
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_0221552C
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ mov r1, #0
+ add r2, sp, #0
+ ldrsh r2, [r2, r1]
+ ldr r0, [sp, #0x10]
+ bl FUN_02007558
+ add r3, sp, #0
+ mov r2, #2
+ ldrsh r2, [r3, r2]
+ ldr r0, [sp, #0x10]
+ mov r1, #1
+ add r2, r2, r4
+ bl FUN_02007558
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221B434
+MOD08_0221B434: ; 0x0221B434
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x30]
+ bl MOD08_02218AF8
+ cmp r0, #0
+ bne _0221B458
+ ldr r0, [r4, #0x30]
+ bl MOD08_02218B08
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221B458:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221B45C
+MOD08_0221B45C: ; 0x0221B45C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ mov r1, #0x34
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [sp, #0x20]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [sp, #0x24]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ add r2, r4, #0
+ str r0, [sp, #0x28]
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, #0x1c
+ add r3, sp, #0x2c
+ bl MOD08_02227F88
+ ldr r0, [r4, #0x28]
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ add r7, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ lsl r0, r6, #0x18
+ asr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ lsl r3, r7, #0x14
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x20]
+ mov r2, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ lsr r3, r3, #0x10
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x28]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ ldr r0, _0221B520 ; =0x0000044C
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x18]
+ bl MOD08_02218B20
+ str r0, [r4, #0x30]
+ ldr r0, [r4, #4]
+ ldr r1, _0221B524 ; =MOD08_0221B434
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221B520: .word 0x0000044C
+_0221B524: .word MOD08_0221B434
+
+ thumb_func_start MOD08_0221B528
+MOD08_0221B528: ; 0x0221B528
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ bne _0221B59C
+ ldr r0, [r4, #0x4c]
+ add r1, r0, #1
+ str r1, [r4, #0x4c]
+ ldr r0, [r4, #0x44]
+ cmp r1, r0
+ blt _0221B5B0
+ mov r1, #0
+ str r1, [r4, #0x4c]
+ ldr r0, [r4, #0x48]
+ cmp r0, #0
+ ldr r0, [r4, #0x54]
+ bne _0221B560
+ cmp r0, #0
+ bge _0221B552
+ str r1, [r4, #0x54]
+_0221B552:
+ ldr r0, [r4, #0x54]
+ cmp r0, #0
+ bne _0221B574
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221B574
+_0221B560:
+ cmp r0, #0x50
+ ble _0221B568
+ mov r0, #0x50
+ str r0, [r4, #0x54]
+_0221B568:
+ ldr r0, [r4, #0x54]
+ cmp r0, #0x50
+ bne _0221B574
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221B574:
+ ldr r0, [r4, #0x24]
+ ldr r2, [r4, #0x54]
+ mov r1, #0x12
+ bl FUN_02007558
+ ldr r0, [r4, #0x24]
+ ldr r2, [r4, #0x50]
+ mov r1, #1
+ bl FUN_02007558
+ mov r0, #0x42
+ ldrsh r1, [r4, r0]
+ ldr r2, [r4, #0x50]
+ sub r1, r2, r1
+ str r1, [r4, #0x50]
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #0x54]
+ add r0, r1, r0
+ str r0, [r4, #0x54]
+ pop {r3, r4, r5, pc}
+_0221B59C:
+ ldr r0, [r4, #0x24]
+ bl MOD08_02218E34
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221B5B0:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221B5B4
+MOD08_0221B5B4: ; 0x0221B5B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r1, #0x58
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r2, r4, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, #0x1c
+ add r3, sp, #4
+ bl MOD08_02227BAC
+ cmp r6, #8
+ bgt _0221B5F6
+ cmp r6, #2
+ blt _0221B634
+ beq _0221B5FC
+ cmp r6, #4
+ beq _0221B606
+ cmp r6, #8
+ beq _0221B618
+ b _0221B634
+_0221B5F6:
+ cmp r6, #0x10
+ beq _0221B622
+ b _0221B634
+_0221B5FC:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r7, r0, #0
+ b _0221B638
+_0221B606:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r7, r0, #0
+ b _0221B638
+_0221B618:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r7, r0, #0
+ b _0221B638
+_0221B622:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r7, r0, #0
+ b _0221B638
+_0221B634:
+ bl ErrorHandling
+_0221B638:
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ str r0, [r4, #0x48]
+ cmp r0, #0
+ ldr r0, [r4, #0x24]
+ bne _0221B68C
+ mov r1, #1
+ bl FUN_0200782C
+ str r0, [r4, #0x50]
+ ldr r0, [r4, #0x24]
+ mov r1, #0x12
+ bl FUN_0200782C
+ mov r1, #0x50
+ sub r0, r1, r0
+ str r0, [r4, #0x54]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ add r1, r4, #0
+ add r1, #0x40
+ strh r0, [r1]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ add r1, r4, #0
+ add r1, #0x42
+ strh r0, [r1]
+ mov r0, #0x42
+ ldrsh r1, [r4, r0]
+ sub r0, #0x43
+ add r2, r1, #0
+ mul r2, r0
+ add r0, r4, #0
+ add r0, #0x42
+ strh r2, [r0]
+ b _0221B6BA
+_0221B68C:
+ mov r1, #1
+ bl FUN_0200782C
+ str r0, [r4, #0x50]
+ ldr r0, [r4, #0x24]
+ mov r1, #0x12
+ bl FUN_0200782C
+ str r0, [r4, #0x54]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ add r1, r4, #0
+ add r1, #0x40
+ strh r0, [r1]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ add r1, r4, #0
+ add r1, #0x42
+ strh r0, [r1]
+_0221B6BA:
+ mov r0, #0
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ mov r0, #0x50
+ str r0, [r4, #0x38]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD08_0221552C
+ mov r1, #0x50
+ sub r0, r1, r0
+ str r0, [r4, #0x3c]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [r4, #0x44]
+ mov r0, #0
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #0x3c]
+ str r0, [sp]
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x30]
+ ldr r2, [r4, #0x34]
+ ldr r3, [r4, #0x38]
+ bl FUN_02007E40
+ ldr r0, [r4, #4]
+ ldr r1, _0221B700 ; =MOD08_0221B528
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221B700: .word MOD08_0221B528
+
+ thumb_func_start MOD08_0221B704
+MOD08_0221B704: ; 0x0221B704
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ cmp r1, #8
+ bgt _0221B71E
+ cmp r1, #2
+ blt _0221B754
+ beq _0221B724
+ cmp r1, #4
+ beq _0221B72C
+ cmp r1, #8
+ beq _0221B73C
+ b _0221B754
+_0221B71E:
+ cmp r1, #0x10
+ beq _0221B744
+ b _0221B754
+_0221B724:
+ bl MOD08_02212458
+ add r4, r0, #0
+ b _0221B758
+_0221B72C:
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r4, r0, #0
+ b _0221B758
+_0221B73C:
+ bl MOD08_02212460
+ add r4, r0, #0
+ b _0221B758
+_0221B744:
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022274C0
+ add r4, r0, #0
+ b _0221B758
+_0221B754:
+ bl ErrorHandling
+_0221B758:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_0221B75C
+MOD08_0221B75C: ; 0x0221B75C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221B76E
+ cmp r0, #1
+ beq _0221B7B4
+ pop {r3, r4, r5, pc}
+_0221B76E:
+ ldr r0, [r4, #0x24]
+ add r1, r0, #1
+ str r1, [r4, #0x24]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ blt _0221B7E6
+ mov r0, #0
+ str r0, [r4, #0x24]
+ mov r0, #0x1c
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #0x44]
+ add r2, r1, r0
+ str r2, [r4, #0x44]
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_02007558
+ mov r0, #0x1c
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #0x3c]
+ sub r1, r1, r0
+ str r1, [r4, #0x3c]
+ ldr r0, [r4, #0x40]
+ cmp r1, r0
+ ble _0221B7A8
+ str r0, [r4, #0x3c]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221B7A8:
+ ldr r0, [r4, #0x30]
+ ldr r2, [r4, #0x3c]
+ mov r1, #0x12
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_0221B7B4:
+ ldr r0, [r4, #0x30]
+ mov r1, #0xe
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #0x30]
+ ldr r2, [r4, #0x48]
+ mov r1, #1
+ bl FUN_02007558
+ ldr r0, [r4, #0x30]
+ ldr r2, [r4, #0x40]
+ mov r1, #0x12
+ bl FUN_02007558
+ ldr r0, [r4, #0x30]
+ bl MOD08_02218E34
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221B7E6:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_0221B7E8
+MOD08_0221B7E8: ; 0x0221B7E8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221B7FA
+ cmp r0, #1
+ beq _0221B83E
+ pop {r3, r4, r5, pc}
+_0221B7FA:
+ ldr r0, [r4, #0x24]
+ add r1, r0, #1
+ str r1, [r4, #0x24]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ blt _0221B870
+ mov r0, #0
+ str r0, [r4, #0x24]
+ mov r0, #0x1c
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #0x44]
+ add r2, r1, r0
+ str r2, [r4, #0x44]
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_02007558
+ mov r0, #0x1c
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #0x3c]
+ sub r0, r1, r0
+ str r0, [r4, #0x3c]
+ bpl _0221B832
+ mov r0, #0
+ str r0, [r4, #0x3c]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221B832:
+ ldr r0, [r4, #0x30]
+ ldr r2, [r4, #0x3c]
+ mov r1, #0x12
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_0221B83E:
+ ldr r0, [r4, #0x30]
+ mov r1, #0xe
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #0x30]
+ ldr r2, [r4, #0x48]
+ mov r1, #1
+ bl FUN_02007558
+ ldr r0, [r4, #0x30]
+ ldr r2, [r4, #0x40]
+ mov r1, #0x12
+ bl FUN_02007558
+ ldr r0, [r4, #0x30]
+ bl MOD08_02218E34
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221B870:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221B874
+MOD08_0221B874: ; 0x0221B874
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221B886
+ cmp r0, #1
+ beq _0221B8C8
+ pop {r3, r4, r5, pc}
+_0221B886:
+ ldr r0, [r4, #0x24]
+ add r1, r0, #1
+ str r1, [r4, #0x24]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ blt _0221B8E6
+ mov r0, #0
+ str r0, [r4, #0x24]
+ mov r1, #0x1c
+ ldrsh r2, [r4, r1]
+ ldr r3, [r4, #0x3c]
+ sub r2, r3, r2
+ str r2, [r4, #0x3c]
+ ldrsh r1, [r4, r1]
+ ldr r2, [r4, #0x40]
+ add r1, r2, r1
+ str r1, [r4, #0x40]
+ ldr r1, [r4, #0x3c]
+ cmp r1, #0
+ bge _0221B8B6
+ str r0, [r4, #0x3c]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221B8B6:
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x30]
+ ldr r2, [r4, #0x3c]
+ mov r3, #0x50
+ bl FUN_02007E40
+ pop {r3, r4, r5, pc}
+_0221B8C8:
+ ldr r0, [r4, #0x30]
+ mov r1, #0xe
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #0x30]
+ bl MOD08_02218E34
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221B8E6:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_0221B8E8
+MOD08_0221B8E8: ; 0x0221B8E8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ mov r1, #0x50
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ strh r0, [r4, #0x1c]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [r4, #0x20]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r2, r4, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, #0x28
+ add r3, sp, #4
+ bl MOD08_02227BAC
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_0221B704
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ cmp r0, #0
+ beq _0221B96A
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_0221552C
+ mov r3, #0x50
+ sub r0, r3, r0
+ str r0, [r4, #0x3c]
+ mov r1, #0
+ str r1, [r4, #0x40]
+ str r1, [sp]
+ ldr r0, [r4, #0x30]
+ ldr r2, [r4, #0x3c]
+ bl FUN_02007E40
+ ldr r0, [r4, #4]
+ ldr r1, _0221B9DC ; =MOD08_0221B874
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_0221B96A:
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_0200782C
+ str r0, [r4, #0x44]
+ str r0, [r4, #0x48]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_0221552C
+ mov r3, #0x50
+ sub r0, r3, r0
+ str r0, [r4, #0x3c]
+ str r0, [r4, #0x40]
+ mov r0, #0x1c
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ ble _0221B9AA
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x30]
+ add r2, r1, #0
+ bl FUN_02007E40
+ ldr r0, [r4, #4]
+ ldr r1, _0221B9E0 ; =MOD08_0221B7E8
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_0221B9AA:
+ mov r0, #0
+ str r0, [r4, #0x3c]
+ ldr r1, [r4, #0x44]
+ ldr r0, [r4, #0x40]
+ add r2, r1, r0
+ str r2, [r4, #0x44]
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_02007558
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x30]
+ add r2, r1, #0
+ mov r3, #0x50
+ bl FUN_02007E40
+ ldr r0, [r4, #4]
+ ldr r1, _0221B9E4 ; =MOD08_0221B75C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0221B9DC: .word MOD08_0221B874
+_0221B9E0: .word MOD08_0221B7E8
+_0221B9E4: .word MOD08_0221B75C
+
+ thumb_func_start MOD08_0221B9E8
+MOD08_0221B9E8: ; 0x0221B9E8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221B9FC
+ cmp r0, #1
+ beq _0221BA1C
+ b _0221BAAC
+_0221B9FC:
+ ldr r0, [r4, #0x10]
+ str r0, [sp]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r3, [r4, #0xc]
+ add r0, #0xd4
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_022183C0
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221BA1C:
+ add r0, r4, #0
+ add r0, #0xd4
+ bl MOD08_022183F0
+ cmp r0, #0
+ bne _0221BA70
+ ldrb r1, [r4, #1]
+ ldr r0, [r4, #0x18]
+ cmp r1, r0
+ ldrb r0, [r4]
+ blt _0221BA36
+ add r0, r0, #1
+ b _0221BA38
+_0221BA36:
+ sub r0, r0, #1
+_0221BA38:
+ strb r0, [r4]
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _0221BA50
+ ldr r1, [r4, #0x1c]
+ mov r2, #0
+ lsl r1, r1, #0x18
+ ldr r0, [r4, #0x28]
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl FUN_020179E0
+_0221BA50:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _0221BA66
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r4, #0x28]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+_0221BA66:
+ ldrb r0, [r4, #1]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ pop {r3, r4, pc}
+_0221BA70:
+ mov r3, #0xd4
+ ldrsh r0, [r4, r3]
+ cmp r0, #0
+ beq _0221BA8C
+ mov r0, #1
+ str r0, [r4, #0x20]
+ ldr r1, [r4, #0x1c]
+ ldrsh r3, [r4, r3]
+ lsl r1, r1, #0x18
+ ldr r0, [r4, #0x28]
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl FUN_020179E0
+_0221BA8C:
+ mov r3, #0xd6
+ ldrsh r0, [r4, r3]
+ cmp r0, #0
+ beq _0221BABA
+ mov r0, #1
+ str r0, [r4, #0x24]
+ ldr r1, [r4, #0x1c]
+ ldrsh r3, [r4, r3]
+ lsl r1, r1, #0x18
+ ldr r0, [r4, #0x28]
+ lsr r1, r1, #0x18
+ mov r2, #3
+ bl FUN_020179E0
+ add sp, #4
+ pop {r3, r4, pc}
+_0221BAAC:
+ ldr r0, [r4, #0x2c]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221BABA:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221BAC0
+MOD08_0221BAC0: ; 0x0221BAC0
+ push {r3, r4, r5, lr}
+ mov r1, #0xf8
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ str r5, [r4, #0x2c]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #0x30]
+ ldr r0, [r4, #0x2c]
+ bl MOD08_02212490
+ str r0, [r4, #0x28]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [r4, #0x18]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ cmp r0, #0
+ bne _0221BB26
+ mov r0, #3
+ b _0221BB28
+_0221BB26:
+ mov r0, #2
+_0221BB28:
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #0x2c]
+ ldr r1, _0221BB38 ; =MOD08_0221B9E8
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_0221BB38: .word MOD08_0221B9E8
+
+ thumb_func_start MOD08_0221BB3C
+MOD08_0221BB3C: ; 0x0221BB3C
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldr r0, [r4, #0x2c]
+ ldr r3, [r4, #0x24]
+ cmp r3, r0
+ beq _0221BB50
+ ldr r1, [r4, #0x28]
+ cmp r1, r0
+ bne _0221BB60
+_0221BB50:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+_0221BB60:
+ mov r1, #0x20
+ ldrsh r2, [r4, r1]
+ cmp r2, #0
+ bge _0221BB82
+ add r2, r3, r2
+ cmp r2, #0
+ ble _0221BB7A
+ str r2, [r4, #0x24]
+ ldrsh r0, [r4, r1]
+ ldr r2, [r4, #0x28]
+ add r0, r2, r0
+ str r0, [r4, #0x28]
+ b _0221BB9A
+_0221BB7A:
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x2c]
+ str r0, [r4, #0x28]
+ b _0221BB9A
+_0221BB82:
+ add r2, r3, r2
+ cmp r2, #0xf
+ bge _0221BB94
+ str r2, [r4, #0x24]
+ ldrsh r0, [r4, r1]
+ ldr r2, [r4, #0x28]
+ add r0, r2, r0
+ str r0, [r4, #0x28]
+ b _0221BB9A
+_0221BB94:
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x2c]
+ str r0, [r4, #0x28]
+_0221BB9A:
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x24]
+ lsl r0, r0, #4
+ orr r1, r0
+ ldr r0, _0221BBB4 ; =0x0400004D
+ strb r1, [r0]
+ ldr r0, [r4, #0xc]
+ bl FUN_0200BC1C
+ pop {r4, pc}
+ .align 2, 0
+_0221BBB4: .word 0x0400004D
+
+ thumb_func_start MOD08_0221BBB8
+MOD08_0221BBB8: ; 0x0221BBB8
+ push {r3, r4, r5, lr}
+ mov r1, #0x30
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD08_02212498
+ strh r0, [r4, #0x20]
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #4]
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD08_02212498
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022124D8
+ mov r1, #1
+ str r0, [r4, #0x1c]
+ bl FUN_0200C644
+ mov r0, #0x20
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _0221BC0E
+ mov r0, #0
+ b _0221BC10
+_0221BC0E:
+ mov r0, #0xf
+_0221BC10:
+ str r0, [r4, #0x2c]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl FUN_0200C8F8
+ ldr r0, [r4, #4]
+ ldr r1, _0221BC2C ; =MOD08_0221BB3C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add r1, r4, #0
+ bl MOD08_0221BB3C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221BC2C: .word MOD08_0221BB3C
+
+ thumb_func_start MOD08_0221BC30
+MOD08_0221BC30: ; 0x0221BC30
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ strh r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ strh r0, [r4, #0xe]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ strh r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ strh r0, [r4, #6]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD08_02212498
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ mov r1, #8
+ bl MOD08_02212498
+ str r0, [r4, #0x30]
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD08_02212498
+ ldr r2, _0221BCFC ; =0xFFFF0000
+ mov r1, #0
+ and r2, r0
+ lsl r0, r0, #0x10
+ str r1, [r4, #0x1c]
+ lsr r2, r2, #0x10
+ str r2, [r4, #0x20]
+ lsr r0, r0, #0x10
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ bne _0221BCA6
+ str r1, [r4, #0x20]
+_0221BCA6:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ bne _0221BCB0
+ mov r0, #0xff
+ str r0, [r4, #0x24]
+_0221BCB0:
+ ldr r1, [r4]
+ add r0, r5, #0
+ bl MOD08_02212484
+ str r0, [r4, #0x38]
+ add r0, r5, #0
+ bl MOD08_02212468
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ bne _0221BCDA
+ add r0, r5, #0
+ bl MOD08_02212458
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ bl MOD08_02212460
+ str r0, [r4, #0x18]
+ b _0221BCEE
+_0221BCDA:
+ cmp r0, #1
+ bne _0221BCEE
+ add r0, r5, #0
+ bl MOD08_02212460
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ bl MOD08_02212458
+ str r0, [r4, #0x18]
+_0221BCEE:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ bne _0221BCF8
+ bl ErrorHandling
+_0221BCF8:
+ pop {r3, r4, r5, pc}
+ nop
+_0221BCFC: .word 0xFFFF0000
+
+ thumb_func_start MOD08_0221BD00
+MOD08_0221BD00: ; 0x0221BD00
+ ldr r0, [r0, #8]
+ mov r1, #0
+ cmp r0, #0
+ beq _0221BD12
+_0221BD08:
+ ldrh r2, [r0, #0x26]
+ ldrh r3, [r0, #0x24]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0221BD08
+_0221BD12:
+ cmp r2, r3
+ beq _0221BD18
+ mov r1, #1
+_0221BD18:
+ add r0, r1, #0
+ bx lr
+
+ thumb_func_start MOD08_0221BD1C
+MOD08_0221BD1C: ; 0x0221BD1C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x38]
+ bl MOD08_0221BD00
+ add r4, r0, #0
+ mov r0, #4
+ ldrsh r0, [r5, r0]
+ ldr r1, [r5, #0x28]
+ cmp r1, r0
+ bge _0221BD3A
+ add r0, r1, #1
+ str r0, [r5, #0x28]
+ pop {r4, r5, r6, pc}
+_0221BD3A:
+ add r0, r5, #0
+ add r0, #0xa8
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _0221BD62
+ cmp r4, #0
+ bne _0221BD62
+ ldr r0, [r5, #0x34]
+ ldr r1, [r5, #0x38]
+ bl FUN_020133DC
+ ldr r0, [r5, #0x40]
+ add r1, r6, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl MOD08_02228094
+ pop {r4, r5, r6, pc}
+_0221BD62:
+ ldr r1, [r5, #0x1c]
+ ldr r0, [r5, #0x20]
+ cmp r0, r1
+ bgt _0221BD70
+ ldr r0, [r5, #0x24]
+ cmp r0, r1
+ bge _0221BD76
+_0221BD70:
+ ldr r0, [r5, #0x24]
+ cmp r0, #0xff
+ bne _0221BDD4
+_0221BD76:
+ mov r0, #0xa8
+ ldrsh r2, [r5, r0]
+ ldr r1, [r5, #0x38]
+ mov r3, #0xac
+ add r0, r2, #0
+ ldr r2, [r1, #0x20]
+ mul r0, r3
+ ldr r2, [r2]
+ ldr r2, [r2, #4]
+ add r0, r0, r2
+ str r0, [r1, #0x28]
+ mov r0, #0xaa
+ ldrsh r4, [r5, r0]
+ ldr r2, [r5, #0x38]
+ add r1, r4, #0
+ mul r1, r3
+ ldr r3, [r2, #0x20]
+ ldr r3, [r3]
+ ldr r3, [r3, #8]
+ add r1, r1, r3
+ str r1, [r2, #0x2c]
+ ldr r1, [r5, #0x30]
+ cmp r1, #0
+ beq _0221BDD4
+ mov r1, #6
+ ldrsh r1, [r5, r1]
+ add r0, #0xbe
+ bl _s32_div_f
+ ldr r1, [r5, #0x2c]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0201B970
+ mov r1, #0xaa
+ ldrsh r2, [r5, r1]
+ mov r1, #0xac
+ mul r1, r2
+ add r2, r1, r0
+ ldr r1, [r5, #0x38]
+ ldr r0, [r1, #0x20]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r2, r0
+ str r0, [r1, #0x2c]
+_0221BDD4:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221BDD8
+MOD08_0221BDD8: ; 0x0221BDD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ mov r1, #0x41
+ lsl r1, r1, #2
+ add r6, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r6, #0
+ add r1, #0x3c
+ bl MOD08_02227B70
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD08_0221BC30
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02217C1C
+ add r5, r0, #0
+ ldr r1, [r4, #0x14]
+ add r0, r6, #0
+ add r2, sp, #0x18
+ bl MOD08_0222771C
+ ldr r1, [r4, #0x18]
+ add r0, r6, #0
+ add r2, sp, #0xc
+ bl MOD08_0222771C
+ ldr r0, [sp, #0x18]
+ mov r1, #0xac
+ bl _s32_div_f
+ add r6, r0, #0
+ ldr r0, [sp, #0xc]
+ mov r1, #0xac
+ bl _s32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #0x1c]
+ mov r1, #0xac
+ bl _s32_div_f
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ mov r1, #0xac
+ bl _s32_div_f
+ mov r1, #0xe
+ ldrsh r1, [r4, r1]
+ add r2, r1, #0
+ mul r2, r5
+ add r0, r0, r2
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldrh r0, [r4, #6]
+ lsl r1, r6, #0x10
+ mov r2, #0xc
+ str r0, [sp, #4]
+ ldrsh r2, [r4, r2]
+ add r0, r4, #0
+ add r0, #0xa8
+ add r3, r2, #0
+ mul r3, r5
+ add r2, r7, r3
+ ldr r3, [sp, #8]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ cmp r5, #0
+ ldr r2, _0221BEFC ; =0x00005C71
+ ble _0221BE90
+ ldr r1, _0221BF00 ; =0x00000E38
+ add r0, r4, #0
+ add r0, #0xf0
+ mul r1, r5
+ mul r2, r5
+ mov r3, #0xa
+ bl MOD08_02218008
+ b _0221BEA0
+_0221BE90:
+ ldr r1, _0221BF04 ; =0x00003FFF
+ add r0, r4, #0
+ add r0, #0xf0
+ mul r1, r5
+ mul r2, r5
+ mov r3, #0xa
+ bl MOD08_02218008
+_0221BEA0:
+ ldr r0, [r4, #0x20]
+ mov r5, #0
+ cmp r0, #0
+ ble _0221BEBA
+ add r6, r4, #0
+ add r6, #0xa8
+_0221BEAC:
+ add r0, r6, #0
+ bl MOD08_02217ECC
+ ldr r0, [r4, #0x20]
+ add r5, r5, #1
+ cmp r5, r0
+ blt _0221BEAC
+_0221BEBA:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0xff
+ beq _0221BEC4
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+_0221BEC4:
+ mov r0, #0xa8
+ ldrsh r3, [r4, r0]
+ ldr r1, [r4, #0x38]
+ mov r2, #0xac
+ add r0, r3, #0
+ ldr r3, [r1, #0x20]
+ mul r0, r2
+ ldr r3, [r3]
+ ldr r3, [r3, #4]
+ add r0, r0, r3
+ str r0, [r1, #0x28]
+ mov r1, #0xaa
+ ldrsh r1, [r4, r1]
+ ldr r0, [r4, #0x38]
+ mul r2, r1
+ ldr r1, [r0, #0x20]
+ ldr r1, [r1]
+ ldr r1, [r1, #8]
+ add r1, r2, r1
+ str r1, [r0, #0x2c]
+ ldr r0, [r4, #0x40]
+ ldr r1, _0221BF08 ; =MOD08_0221BD1C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0221BEFC: .word 0x00005C71
+_0221BF00: .word 0x00000E38
+_0221BF04: .word 0x00003FFF
+_0221BF08: .word MOD08_0221BD1C
+
+ thumb_func_start MOD08_0221BF0C
+MOD08_0221BF0C: ; 0x0221BF0C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ mov r1, #0x41
+ lsl r1, r1, #2
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x3c
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ strh r0, [r4, #6]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ strh r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #0x28]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ ldr r2, _0221C098 ; =0xFFFF0000
+ mov r1, #0
+ and r2, r0
+ lsl r0, r0, #0x10
+ str r1, [r4, #0x1c]
+ lsr r2, r2, #0x10
+ str r2, [r4, #0x20]
+ lsr r0, r0, #0x10
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ bne _0221BF7E
+ str r1, [r4, #0x20]
+_0221BF7E:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ bne _0221BF88
+ mov r0, #0xff
+ str r0, [r4, #0x24]
+_0221BF88:
+ ldr r1, [r4]
+ add r0, r5, #0
+ bl MOD08_02212484
+ str r0, [r4, #0x38]
+ add r0, r5, #0
+ bl MOD08_02212468
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ bne _0221BFB0
+ add r0, r5, #0
+ bl MOD08_02212458
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ bl MOD08_02212458
+ b _0221BFBE
+_0221BFB0:
+ add r0, r5, #0
+ bl MOD08_02212460
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ bl MOD08_02212460
+_0221BFBE:
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ bne _0221BFCA
+ bl ErrorHandling
+_0221BFCA:
+ ldr r1, [r4, #0x14]
+ add r0, r5, #0
+ add r2, sp, #0x14
+ bl MOD08_0222771C
+ ldr r1, [r4, #0x18]
+ add r0, r5, #0
+ add r2, sp, #8
+ bl MOD08_0222771C
+ cmp r6, #0
+ bne _0221BFEE
+ add r0, sp, #0x14
+ bl MOD08_0222795C
+ ldr r0, [sp, #8]
+ str r0, [sp, #0x14]
+ b _0221BFF8
+_0221BFEE:
+ add r0, sp, #8
+ bl MOD08_0222795C
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #8]
+_0221BFF8:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xac
+ bl _s32_div_f
+ add r5, r0, #0
+ ldr r0, [sp, #8]
+ mov r1, #0xac
+ bl _s32_div_f
+ add r6, r0, #0
+ ldr r0, [sp, #0x18]
+ mov r1, #0xac
+ bl _s32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #0xc]
+ mov r1, #0xac
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldrh r0, [r4, #6]
+ lsl r1, r5, #0x10
+ lsl r2, r6, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r3, r7, #0x10
+ add r0, #0xa8
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ ldr r0, [r4, #0x20]
+ mov r5, #0
+ cmp r0, #0
+ ble _0221C056
+ add r6, r4, #0
+ add r6, #0xa8
+_0221C048:
+ add r0, r6, #0
+ bl MOD08_02217ECC
+ ldr r0, [r4, #0x20]
+ add r5, r5, #1
+ cmp r5, r0
+ blt _0221C048
+_0221C056:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0xff
+ beq _0221C060
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+_0221C060:
+ mov r0, #0xa8
+ ldrsh r3, [r4, r0]
+ ldr r1, [r4, #0x38]
+ mov r2, #0xac
+ add r0, r3, #0
+ ldr r3, [r1, #0x20]
+ mul r0, r2
+ ldr r3, [r3]
+ ldr r3, [r3, #4]
+ add r0, r0, r3
+ str r0, [r1, #0x28]
+ mov r1, #0xaa
+ ldrsh r1, [r4, r1]
+ ldr r0, [r4, #0x38]
+ mul r2, r1
+ ldr r1, [r0, #0x20]
+ ldr r1, [r1]
+ ldr r1, [r1, #8]
+ add r1, r2, r1
+ str r1, [r0, #0x2c]
+ ldr r0, [r4, #0x40]
+ ldr r1, _0221C09C ; =MOD08_0221BD1C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221C098: .word 0xFFFF0000
+_0221C09C: .word MOD08_0221BD1C
+
+ thumb_func_start MOD08_0221C0A0
+MOD08_0221C0A0: ; 0x0221C0A0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x38]
+ bl MOD08_0221BD00
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xcc
+ bl MOD08_02217F9C
+ cmp r0, #0
+ bne _0221C0DA
+ cmp r4, #0
+ bne _0221C0DA
+ ldr r0, [r5, #0x34]
+ ldr r1, [r5, #0x38]
+ bl FUN_020133DC
+ ldr r0, [r5, #0x40]
+ add r1, r6, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl MOD08_02228094
+ pop {r4, r5, r6, pc}
+_0221C0DA:
+ mov r1, #0xa8
+ ldrsh r1, [r5, r1]
+ ldr r0, [r5, #0x38]
+ mov r2, #0xac
+ add r3, r1, #0
+ ldr r1, [r0, #0x20]
+ mul r3, r2
+ ldr r1, [r1]
+ ldr r1, [r1, #4]
+ add r1, r3, r1
+ str r1, [r0, #0x28]
+ mov r1, #0xaa
+ ldrsh r1, [r5, r1]
+ ldr r0, [r5, #0x38]
+ mul r2, r1
+ ldr r1, [r0, #0x20]
+ ldr r1, [r1]
+ ldr r1, [r1, #8]
+ add r1, r2, r1
+ str r1, [r0, #0x2c]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_0221C104
+MOD08_0221C104: ; 0x0221C104
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ mov r1, #0x41
+ lsl r1, r1, #2
+ add r6, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r6, #0
+ add r1, #0x3c
+ bl MOD08_02227B70
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD08_0221BC30
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02217C1C
+ add r5, r0, #0
+ ldr r1, [r4, #0x14]
+ add r0, r6, #0
+ add r2, sp, #0x20
+ bl MOD08_0222771C
+ ldr r1, [r4, #0x18]
+ add r0, r6, #0
+ add r2, sp, #0x14
+ bl MOD08_0222771C
+ ldr r0, [sp, #0x20]
+ mov r1, #0xac
+ bl _s32_div_f
+ add r6, r0, #0
+ ldr r0, [sp, #0x14]
+ mov r1, #0xac
+ bl _s32_div_f
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x24]
+ mov r1, #0xac
+ bl _s32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #0x18]
+ mov r1, #0xac
+ bl _s32_div_f
+ lsl r1, r7, #0x10
+ asr r1, r1, #0x10
+ str r1, [sp]
+ mov r1, #0xe
+ ldrsh r1, [r4, r1]
+ mov r3, #0xc
+ add r2, r1, #0
+ mul r2, r5
+ add r0, r0, r2
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldrh r0, [r4, #6]
+ lsl r2, r6, #0x10
+ add r1, r4, #0
+ str r0, [sp, #8]
+ ldr r0, [r4, #8]
+ add r1, #0xcc
+ lsl r0, r0, #0xc
+ neg r0, r0
+ str r0, [sp, #0xc]
+ ldrsh r6, [r4, r3]
+ add r0, r4, #0
+ add r0, #0xa8
+ add r3, r6, #0
+ ldr r6, [sp, #0x10]
+ mul r3, r5
+ add r3, r6, r3
+ lsl r3, r3, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217F50
+ cmp r5, #0
+ ldr r2, _0221C23C ; =0x00005C71
+ ble _0221C1CA
+ ldr r1, _0221C240 ; =0x00000E38
+ add r0, r4, #0
+ add r0, #0xf0
+ mul r1, r5
+ mul r2, r5
+ mov r3, #0xa
+ bl MOD08_02218008
+ b _0221C1DA
+_0221C1CA:
+ ldr r1, _0221C244 ; =0x00003FFF
+ add r0, r4, #0
+ add r0, #0xf0
+ mul r1, r5
+ mul r2, r5
+ mov r3, #0xa
+ bl MOD08_02218008
+_0221C1DA:
+ ldr r0, [r4, #0x20]
+ mov r5, #0
+ cmp r0, #0
+ ble _0221C1FA
+ add r6, r4, #0
+ add r7, r4, #0
+ add r6, #0xa8
+ add r7, #0xcc
+_0221C1EA:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_02217F9C
+ ldr r0, [r4, #0x20]
+ add r5, r5, #1
+ cmp r5, r0
+ blt _0221C1EA
+_0221C1FA:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0xff
+ beq _0221C204
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+_0221C204:
+ mov r0, #0xa8
+ ldrsh r3, [r4, r0]
+ ldr r1, [r4, #0x38]
+ mov r2, #0xac
+ add r0, r3, #0
+ ldr r3, [r1, #0x20]
+ mul r0, r2
+ ldr r3, [r3]
+ ldr r3, [r3, #4]
+ add r0, r0, r3
+ str r0, [r1, #0x28]
+ mov r1, #0xaa
+ ldrsh r1, [r4, r1]
+ ldr r0, [r4, #0x38]
+ mul r2, r1
+ ldr r1, [r0, #0x20]
+ ldr r1, [r1]
+ ldr r1, [r1, #8]
+ add r1, r2, r1
+ str r1, [r0, #0x2c]
+ ldr r0, [r4, #0x40]
+ ldr r1, _0221C248 ; =MOD08_0221C0A0
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0221C23C: .word 0x00005C71
+_0221C240: .word 0x00000E38
+_0221C244: .word 0x00003FFF
+_0221C248: .word MOD08_0221C0A0
+
+ thumb_func_start MOD08_0221C24C
+MOD08_0221C24C: ; 0x0221C24C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x38]
+ bl MOD08_0221BD00
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x58
+ bl MOD08_02217D98
+ cmp r0, #0
+ bne _0221C282
+ cmp r4, #0
+ bne _0221C282
+ ldr r0, [r5, #0x34]
+ ldr r1, [r5, #0x38]
+ bl FUN_020133DC
+ ldr r0, [r5, #0x40]
+ add r1, r6, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+_0221C282:
+ add r0, r5, #0
+ add r0, #0x8c
+ ldr r2, [r0]
+ mov r0, #0x5a
+ ldrsh r0, [r5, r0]
+ mov r3, #0xac
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r2, r1
+ add r2, r5, #0
+ add r2, #0x88
+ ldr r4, [r2]
+ mov r2, #0x58
+ ldrsh r2, [r5, r2]
+ ldr r0, [r5, #0x38]
+ mul r3, r2
+ ldr r2, [r0, #0x20]
+ add r3, r4, r3
+ ldr r2, [r2]
+ ldr r2, [r2, #4]
+ add r2, r3, r2
+ str r2, [r0, #0x28]
+ ldr r2, [r5, #0x38]
+ ldr r0, [r2, #0x20]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r2, #0x2c]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_0221C2BC
+MOD08_0221C2BC: ; 0x0221C2BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r1, #0x94
+ add r4, r0, #0
+ bl MOD08_02228064
+ add r5, r0, #0
+ add r1, r5, #0
+ add r0, r4, #0
+ add r1, #0x3c
+ bl MOD08_02227B70
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r5]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD08_02212498
+ str r0, [r5, #4]
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [r5, #0xc]
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [r5, #8]
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD08_02212498
+ str r0, [r5, #0x10]
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r5, #0x14]
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD08_02212498
+ str r0, [r5, #0x18]
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD08_02212498
+ str r0, [r5, #0x1c]
+ add r0, r4, #0
+ mov r1, #8
+ bl MOD08_02212498
+ str r0, [r5, #0x20]
+ cmp r0, #0
+ bne _0221C33A
+ add r0, r4, #0
+ bl MOD08_02212458
+ b _0221C340
+_0221C33A:
+ add r0, r4, #0
+ bl MOD08_02212460
+_0221C340:
+ str r0, [r5, #0x24]
+ add r2, r5, #0
+ ldr r1, [r5, #0x24]
+ add r0, r4, #0
+ add r2, #0x88
+ bl MOD08_0222771C
+ ldr r1, [r5]
+ add r0, r4, #0
+ bl MOD08_02212484
+ str r0, [r5, #0x38]
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD08_02212498
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212478
+ str r0, [r5, #0x34]
+ ldr r1, [r5, #4]
+ ldr r0, _0221C420 ; =0x0000FFFF
+ mul r0, r1
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ bl _s32_div_f
+ add r4, r0, #0
+ ldr r1, [r5, #0xc]
+ ldr r0, _0221C420 ; =0x0000FFFF
+ mul r0, r1
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ bl _s32_div_f
+ add r6, r0, #0
+ ldr r1, [r5, #8]
+ ldr r0, _0221C420 ; =0x0000FFFF
+ mul r0, r1
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ bl _s32_div_f
+ add r7, r0, #0
+ ldr r1, [r5, #0x10]
+ ldr r0, _0221C420 ; =0x0000FFFF
+ mul r0, r1
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [r5, #0x14]
+ lsl r1, r4, #0x10
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ lsl r2, r6, #0x10
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x1c]
+ lsl r3, r7, #0x10
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r0, #0x58
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl MOD08_02217D14
+ add r0, r5, #0
+ add r0, #0x58
+ bl MOD08_02217D98
+ add r0, r5, #0
+ add r0, #0x8c
+ ldr r2, [r0]
+ mov r0, #0x5a
+ ldrsh r0, [r5, r0]
+ mov r3, #0x58
+ mov r4, #0xac
+ add r1, r0, #0
+ add r0, r5, #0
+ mul r1, r4
+ ldrsh r3, [r5, r3]
+ add r0, #0x88
+ add r2, r2, r1
+ ldr r1, [r5, #0x38]
+ ldr r0, [r0]
+ mul r4, r3
+ add r3, r0, r4
+ ldr r0, [r1, #0x20]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r3, r0
+ str r0, [r1, #0x28]
+ ldr r1, [r5, #0x38]
+ ldr r0, [r1, #0x20]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r2, r0
+ str r0, [r1, #0x2c]
+ ldr r0, [r5, #0x40]
+ ldr r1, _0221C424 ; =MOD08_0221C24C
+ add r2, r5, #0
+ bl MOD08_02212400
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221C420: .word 0x0000FFFF
+_0221C424: .word MOD08_0221C24C
+
+ thumb_func_start MOD08_0221C428
+MOD08_0221C428: ; 0x0221C428
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C608
+ cmp r0, #0
+ ldr r0, [r4, #0x1c]
+ bne _0221C44E
+ bl FUN_0200C3DC
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_0221C44E:
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x10]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221C45C
+MOD08_0221C45C: ; 0x0221C45C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x20
+ add r5, r0, #0
+ add r4, r3, #0
+ bl MOD08_02228064
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ str r4, [r7, #0x1c]
+ bl MOD08_02212498
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ lsl r0, r0, #0x10
+ asr r2, r0, #0x10
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_0200C82C
+ ldr r0, [r7, #4]
+ ldr r1, _0221C4A0 ; =MOD08_0221C428
+ add r2, r7, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221C4A0: .word MOD08_0221C428
+
+ thumb_func_start MOD08_0221C4A4
+MOD08_0221C4A4: ; 0x0221C4A4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrb r0, [r5]
+ cmp r0, #0
+ beq _0221C4B6
+ cmp r0, #1
+ beq _0221C534
+ b _0221C59E
+_0221C4B6:
+ ldr r1, [r5, #0x34]
+ ldr r0, _0221C5C4 ; =0x0222C4D4
+ lsl r2, r1, #1
+ ldrsh r4, [r0, r2]
+ add r0, r1, #1
+ str r0, [r5, #0x34]
+ cmp r4, #0xff
+ beq _0221C506
+ cmp r4, #0
+ bne _0221C4FA
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200C6A4
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ bl MOD08_02215574
+ cmp r6, r0
+ ldr r0, [r5, #4]
+ bne _0221C4EE
+ mov r1, #2
+ bl MOD08_02215600
+ add r1, r0, #0
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200C6B0
+ b _0221C4FA
+_0221C4EE:
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200C6B0
+_0221C4FA:
+ ldr r0, [r5, #0x1c]
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200C82C
+ b _0221C5B4
+_0221C506:
+ ldr r0, [r5, #0x1c]
+ mov r1, #2
+ bl FUN_0200C840
+ add r0, r5, #0
+ ldr r2, _0221C5C8 ; =0x00001FFF
+ add r0, #0x20
+ mov r1, #0
+ mov r3, #8
+ bl MOD08_02218008
+ mov r1, #7
+ ldr r0, [r5, #0x1c]
+ mvn r1, r1
+ mov r2, #0x10
+ bl FUN_0200C8DC
+ mov r0, #0
+ str r0, [r5, #0x34]
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _0221C5B4
+_0221C534:
+ add r0, r5, #0
+ add r0, #0x20
+ bl MOD08_02218058
+ cmp r0, #1
+ bne _0221C54E
+ ldr r1, [r5, #0x20]
+ ldr r0, [r5, #0x1c]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0200C898
+ b _0221C5B4
+_0221C54E:
+ ldr r0, [r5, #0x34]
+ cmp r0, #3
+ ble _0221C55C
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _0221C5B4
+_0221C55C:
+ add r0, r0, #1
+ str r0, [r5, #0x34]
+ cmp r0, #1
+ beq _0221C56E
+ cmp r0, #2
+ beq _0221C57E
+ cmp r0, #3
+ beq _0221C58E
+ b _0221C5B4
+_0221C56E:
+ add r0, r5, #0
+ ldr r1, _0221C5C8 ; =0x00001FFF
+ ldr r2, _0221C5CC ; =0xFFFFE001
+ add r0, #0x20
+ mov r3, #8
+ bl MOD08_02218008
+ b _0221C5B4
+_0221C57E:
+ ldr r1, _0221C5CC ; =0xFFFFE001
+ add r0, r5, #0
+ add r0, #0x20
+ lsr r2, r1, #0x13
+ mov r3, #8
+ bl MOD08_02218008
+ b _0221C5B4
+_0221C58E:
+ add r0, r5, #0
+ ldr r1, _0221C5C8 ; =0x00001FFF
+ add r0, #0x20
+ mov r2, #0
+ mov r3, #8
+ bl MOD08_02218008
+ b _0221C5B4
+_0221C59E:
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200C3DC
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+_0221C5B4:
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200C5A8
+ ldr r0, [r5, #0x10]
+ bl FUN_0200BC1C
+ pop {r4, r5, r6, pc}
+ nop
+_0221C5C4: .word 0x0222C4D4
+_0221C5C8: .word 0x00001FFF
+_0221C5CC: .word 0xFFFFE001
+
+ thumb_func_start MOD08_0221C5D0
+MOD08_0221C5D0: ; 0x0221C5D0
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x38
+ add r5, r0, #0
+ add r6, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ str r6, [r4, #0x1c]
+ mov r0, #0
+ str r0, [r4, #0x34]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ add r2, r0, #0
+ ldr r0, [r4, #0x1c]
+ add r1, r6, #0
+ bl FUN_0200C714
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ ldr r0, [r4, #0x1c]
+ bne _0221C630
+ mov r1, #1
+ bl FUN_0200C5C0
+ b _0221C636
+_0221C630:
+ mov r1, #0
+ bl FUN_0200C5C0
+_0221C636:
+ ldr r0, [r4, #4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #0xc
+ bl FUN_0200C82C
+ ldr r0, [r4, #4]
+ ldr r1, _0221C65C ; =MOD08_0221C4A4
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221C65C: .word MOD08_0221C4A4
+
+ thumb_func_start MOD08_0221C660
+MOD08_0221C660: ; 0x0221C660
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C608
+ cmp r0, #0
+ ldr r0, [r4, #0x1c]
+ bne _0221C686
+ bl FUN_0200C3DC
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_0221C686:
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x10]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221C694
+MOD08_0221C694: ; 0x0221C694
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x38
+ add r5, r0, #0
+ add r6, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ add r0, r5, #0
+ str r6, [r4, #0x1c]
+ bl MOD08_02212460
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _0221C6DC
+ mov r6, #0x48
+ mov r2, #0x20
+ mov r5, #0
+ b _0221C6F2
+_0221C6DC:
+ ldr r0, [r4, #4]
+ add r1, r7, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _0221C6EE
+ mov r2, #0x7e
+ mov r5, #1
+ b _0221C6F2
+_0221C6EE:
+ mov r2, #0x20
+ mov r5, #0
+_0221C6F2:
+ ldr r0, [r4, #0x1c]
+ add r1, r6, #0
+ bl FUN_0200C714
+ ldr r0, [r4, #0x1c]
+ add r1, r5, #0
+ bl FUN_0200C5C0
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl MOD08_02215600
+ add r1, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C6B0
+ ldr r0, [r4, #4]
+ ldr r1, _0221C720 ; =MOD08_0221C660
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221C720: .word MOD08_0221C660
+
+ thumb_func_start MOD08_0221C724
+MOD08_0221C724: ; 0x0221C724
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhi _0221C816
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221C73E: ; jump table
+ .short _0221C746 - _0221C73E - 2 ; case 0
+ .short _0221C76C - _0221C73E - 2 ; case 1
+ .short _0221C784 - _0221C73E - 2 ; case 2
+ .short _0221C7C0 - _0221C73E - 2 ; case 3
+_0221C746:
+ mov r0, #0xa0
+ str r0, [sp]
+ mov r3, #0x70
+ mov r0, #1
+ str r3, [sp, #4]
+ mov r2, #0x15
+ str r2, [sp, #8]
+ lsl r0, r0, #0x12
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x24
+ add r1, #0x48
+ sub r2, #0x33
+ bl MOD08_02217F50
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221C82E
+_0221C76C:
+ add r0, r4, #0
+ ldr r2, [r4, #0x1c]
+ add r0, #0x24
+ add r1, #0x48
+ bl MOD08_02217FE4
+ cmp r0, #0
+ bne _0221C82E
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221C82E
+_0221C784:
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C608
+ cmp r0, #0
+ bne _0221C82E
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl FUN_0200C90C
+ add r0, r4, #0
+ add r2, r4, #0
+ mov r1, #0x10
+ add r0, #0x20
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x21
+ strb r1, [r0]
+ add r1, r4, #0
+ add r1, #0x20
+ add r2, #0x21
+ ldrb r1, [r1]
+ ldrb r2, [r2]
+ ldr r0, [r4, #4]
+ bl MOD08_02227994
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221C82E
+_0221C7C0:
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0221C7D8
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x20
+ strb r1, [r0]
+_0221C7D8:
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ cmp r0, #0x10
+ bhs _0221C7F0
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x21
+ strb r1, [r0]
+_0221C7F0:
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221C840 ; =0x04000052
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0221C82E
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221C82E
+_0221C816:
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C3DC
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_0221C82E:
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x10]
+ bl FUN_0200BC1C
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_0221C840: .word 0x04000052
+
+ thumb_func_start MOD08_0221C844
+MOD08_0221C844: ; 0x0221C844
+ push {r4, r5, r6, lr}
+ mov r1, #0x6c
+ add r6, r0, #0
+ add r5, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ mov r1, #0x1d
+ str r5, [r4, #0x1c]
+ add r0, r5, #0
+ mvn r1, r1
+ mov r2, #0xa0
+ bl FUN_0200C714
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl MOD08_02215600
+ add r1, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C6B0
+ ldr r0, [r4, #4]
+ ldr r1, _0221C884 ; =MOD08_0221C724
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0221C884: .word MOD08_0221C724
+
+ thumb_func_start MOD08_0221C888
+MOD08_0221C888: ; 0x0221C888
+ push {r4, lr}
+ mov r1, #0
+ add r4, r0, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ beq _0221C89E
+ add r0, r4, #0
+ bl MOD08_02218BD4
+ pop {r4, pc}
+_0221C89E:
+ add r0, r4, #0
+ bl MOD08_02218C04
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221C8A8
+MOD08_0221C8A8: ; 0x0221C8A8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0x18
+ bls _0221C8B6
+ b _0221CAAA
+_0221C8B6:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0221C8C2: ; jump table
+ .short _0221C8F4 - _0221C8C2 - 2 ; case 0
+ .short _0221CAAA - _0221C8C2 - 2 ; case 1
+ .short _0221CAAA - _0221C8C2 - 2 ; case 2
+ .short _0221CAAA - _0221C8C2 - 2 ; case 3
+ .short _0221CAAA - _0221C8C2 - 2 ; case 4
+ .short _0221C9A0 - _0221C8C2 - 2 ; case 5
+ .short _0221C9A0 - _0221C8C2 - 2 ; case 6
+ .short _0221C9CA - _0221C8C2 - 2 ; case 7
+ .short _0221CAAA - _0221C8C2 - 2 ; case 8
+ .short _0221CAAA - _0221C8C2 - 2 ; case 9
+ .short _0221C9E4 - _0221C8C2 - 2 ; case 10
+ .short _0221C9E4 - _0221C8C2 - 2 ; case 11
+ .short _0221CA0E - _0221C8C2 - 2 ; case 12
+ .short _0221CAAA - _0221C8C2 - 2 ; case 13
+ .short _0221CAAA - _0221C8C2 - 2 ; case 14
+ .short _0221CA26 - _0221C8C2 - 2 ; case 15
+ .short _0221CA26 - _0221C8C2 - 2 ; case 16
+ .short _0221CA50 - _0221C8C2 - 2 ; case 17
+ .short _0221CAAA - _0221C8C2 - 2 ; case 18
+ .short _0221CAAA - _0221C8C2 - 2 ; case 19
+ .short _0221CAAA - _0221C8C2 - 2 ; case 20
+ .short _0221CAAA - _0221C8C2 - 2 ; case 21
+ .short _0221CA68 - _0221C8C2 - 2 ; case 22
+ .short _0221CA68 - _0221C8C2 - 2 ; case 23
+ .short _0221CA92 - _0221C8C2 - 2 ; case 24
+_0221C8F4:
+ ldr r0, [r4, #0x34]
+ ldr r1, _0221CAF0 ; =0xFFFF1FFF
+ cmp r0, #0
+ bne _0221C94E
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ add r5, r0, #0
+ and r2, r1
+ lsr r1, r0, #0xd
+ orr r1, r2
+ str r1, [r0]
+ add r5, #0x48
+ ldrh r3, [r5]
+ mov r2, #0x3f
+ mov r1, #0xf
+ bic r3, r2
+ orr r1, r3
+ mov r3, #0x20
+ orr r1, r3
+ strh r1, [r5]
+ add r5, r0, #0
+ add r5, #0x4a
+ ldrh r6, [r5]
+ mov r1, #0x1f
+ bic r6, r2
+ orr r1, r6
+ orr r1, r3
+ strh r1, [r5]
+ add r1, r0, #0
+ mov r2, #0x80
+ add r1, #0x40
+ strh r2, [r1]
+ ldr r1, _0221CAF4 ; =0x0000A0C0
+ add r0, #0x44
+ strh r1, [r0]
+ bl FUN_0201B9EC
+ mov r1, #5
+ bl _s32_div_f
+ add r1, #0x23
+ add sp, #4
+ str r1, [r4, #0x3c]
+ pop {r3, r4, r5, r6, pc}
+_0221C94E:
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ add r5, r0, #0
+ and r2, r1
+ lsr r1, r0, #0xd
+ orr r1, r2
+ str r1, [r0]
+ add r5, #0x48
+ ldrh r3, [r5]
+ mov r2, #0x3f
+ mov r1, #0xf
+ bic r3, r2
+ orr r1, r3
+ mov r3, #0x20
+ orr r1, r3
+ strh r1, [r5]
+ add r5, r0, #0
+ add r5, #0x4a
+ ldrh r6, [r5]
+ mov r1, #0x1f
+ bic r6, r2
+ orr r1, r6
+ orr r1, r3
+ strh r1, [r5]
+ add r1, r0, #0
+ lsl r2, r3, #0xa
+ add r1, #0x40
+ strh r2, [r1]
+ ldr r1, _0221CAF8 ; =0x000056C0
+ add r0, #0x44
+ strh r1, [r0]
+ bl FUN_0201B9EC
+ mov r1, #5
+ bl _s32_div_f
+ add r1, #0x23
+ add sp, #4
+ str r1, [r4, #0x3c]
+ pop {r3, r4, r5, r6, pc}
+_0221C9A0:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ beq _0221C9D0
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ bne _0221C9D0
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #4
+ bl FUN_0200C82C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221C9CA:
+ ldr r0, [r4, #0x38]
+ cmp r0, #1
+ bne _0221C9D2
+_0221C9D0:
+ b _0221CAEC
+_0221C9D2:
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #4
+ bl FUN_0200C82C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221C9E4:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ beq _0221CAEC
+ ldr r0, [r4, #0x38]
+ cmp r0, #1
+ bne _0221CAEC
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #4
+ bl FUN_0200C82C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221CA0E:
+ ldr r0, [r4, #0x38]
+ cmp r0, #2
+ beq _0221CAEC
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #4
+ bl FUN_0200C82C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221CA26:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ beq _0221CAEC
+ ldr r0, [r4, #0x38]
+ cmp r0, #2
+ bne _0221CAEC
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #4
+ bl FUN_0200C82C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221CA50:
+ ldr r0, [r4, #0x38]
+ cmp r0, #3
+ beq _0221CAEC
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #4
+ bl FUN_0200C82C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221CA68:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ beq _0221CAEC
+ ldr r0, [r4, #0x38]
+ cmp r0, #3
+ bne _0221CAEC
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #8
+ bl FUN_0200C82C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221CA92:
+ ldr r0, [r4, #0x38]
+ cmp r0, #4
+ beq _0221CAEC
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #8
+ bl FUN_0200C82C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221CAAA:
+ ldr r1, [r4, #0x3c]
+ cmp r0, r1
+ ble _0221CAEC
+ ldr r0, [r4, #0x38]
+ cmp r0, #0x14
+ ldr r0, [r4, #0x1c]
+ bge _0221CAE6
+ mov r1, #0
+ mov r2, #4
+ bl FUN_0200C82C
+ add r1, sp, #0
+ ldr r0, [r4, #0x1c]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r0, sp, #0
+ mov r1, #0
+ ldrsh r0, [r0, r1]
+ cmp r0, #0x82
+ ble _0221CADC
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C644
+_0221CADC:
+ ldr r0, [r4, #0x38]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ pop {r3, r4, r5, r6, pc}
+_0221CAE6:
+ mov r1, #0
+ bl FUN_0200C644
+_0221CAEC:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0221CAF0: .word 0xFFFF1FFF
+_0221CAF4: .word 0x0000A0C0
+_0221CAF8: .word 0x000056C0
+
+ thumb_func_start MOD08_0221CAFC
+MOD08_0221CAFC: ; 0x0221CAFC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _0221CB0E
+ add r0, r4, #0
+ bl MOD08_0221C8A8
+_0221CB0E:
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ ldrb r1, [r4]
+ ldr r0, [r4, #0x24]
+ cmp r1, r0
+ blt _0221CB66
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _0221CB74 ; =0xFFFF1FFF
+ and r1, r2
+ add r2, r0, #0
+ str r1, [r0]
+ add r2, #0x48
+ ldrh r3, [r2]
+ mov r1, #0x3f
+ bic r3, r1
+ strh r3, [r2]
+ add r2, r0, #0
+ add r2, #0x4a
+ ldrh r3, [r2]
+ bic r3, r1
+ strh r3, [r2]
+ add r2, r0, #0
+ mov r1, #0
+ add r2, #0x40
+ strh r1, [r2]
+ add r0, #0x44
+ strh r1, [r0]
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C644
+ ldr r0, [r4, #0xc]
+ bl FUN_0200BC1C
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_0221CB66:
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0xc]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221CB74: .word 0xFFFF1FFF
+
+ thumb_func_start MOD08_0221CB78
+MOD08_0221CB78: ; 0x0221CB78
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x40
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4, #0x20]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ str r0, [r4, #0x24]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [r4, #0x28]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [r4, #0x2c]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r4, #0x30]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD08_02212498
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x20]
+ bl MOD08_022124D8
+ str r0, [r4, #0x1c]
+ mov r0, #0
+ str r0, [r4, #0x38]
+ ldr r1, [r4, #0x28]
+ cmp r1, #0xff
+ beq _0221CBEA
+ add r0, r5, #0
+ bl MOD08_02215600
+ add r1, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C6B0
+_0221CBEA:
+ ldr r1, [r4, #0x2c]
+ cmp r1, #0xff
+ beq _0221CBF6
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200C6C4
+_0221CBF6:
+ add r0, r5, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ beq _0221CC28
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ cmp r0, #2
+ beq _0221CC18
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ cmp r0, #3
+ bne _0221CC28
+_0221CC18:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_0200C644
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_0221CC28:
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ add r7, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212460
+ str r0, [sp]
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0xff
+ beq _0221CC76
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02227468
+ add r6, r0, #0
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD08_02227468
+ cmp r7, #3
+ bhi _0221CC76
+ add r1, r7, r7
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0221CC6A: ; jump table
+ .short _0221CC72 - _0221CC6A - 2 ; case 0
+ .short _0221CCFC - _0221CC6A - 2 ; case 1
+ .short _0221CCB8 - _0221CC6A - 2 ; case 2
+ .short _0221CD40 - _0221CC6A - 2 ; case 3
+_0221CC72:
+ cmp r6, #5
+ bls _0221CC78
+_0221CC76:
+ b _0221CD82
+_0221CC78:
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221CC84: ; jump table
+ .short _0221CD82 - _0221CC84 - 2 ; case 0
+ .short _0221CD82 - _0221CC84 - 2 ; case 1
+ .short _0221CC90 - _0221CC84 - 2 ; case 2
+ .short _0221CC9A - _0221CC84 - 2 ; case 3
+ .short _0221CCA4 - _0221CC84 - 2 ; case 4
+ .short _0221CCAE - _0221CC84 - 2 ; case 5
+_0221CC90:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CC9A:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CCA4:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CCAE:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CCB8:
+ cmp r6, #5
+ bhi _0221CD82
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221CCC8: ; jump table
+ .short _0221CD82 - _0221CCC8 - 2 ; case 0
+ .short _0221CD82 - _0221CCC8 - 2 ; case 1
+ .short _0221CCD4 - _0221CCC8 - 2 ; case 2
+ .short _0221CCDE - _0221CCC8 - 2 ; case 3
+ .short _0221CCE8 - _0221CCC8 - 2 ; case 4
+ .short _0221CCF2 - _0221CCC8 - 2 ; case 5
+_0221CCD4:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CCDE:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CCE8:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CCF2:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CCFC:
+ cmp r0, #5
+ bhi _0221CD82
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221CD0C: ; jump table
+ .short _0221CD82 - _0221CD0C - 2 ; case 0
+ .short _0221CD82 - _0221CD0C - 2 ; case 1
+ .short _0221CD18 - _0221CD0C - 2 ; case 2
+ .short _0221CD22 - _0221CD0C - 2 ; case 3
+ .short _0221CD2C - _0221CD0C - 2 ; case 4
+ .short _0221CD36 - _0221CD0C - 2 ; case 5
+_0221CD18:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CD22:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CD2C:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CD36:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CD40:
+ cmp r0, #5
+ bhi _0221CD82
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221CD50: ; jump table
+ .short _0221CD82 - _0221CD50 - 2 ; case 0
+ .short _0221CD82 - _0221CD50 - 2 ; case 1
+ .short _0221CD5C - _0221CD50 - 2 ; case 2
+ .short _0221CD66 - _0221CD50 - 2 ; case 3
+ .short _0221CD70 - _0221CD50 - 2 ; case 4
+ .short _0221CD7A - _0221CD50 - 2 ; case 5
+_0221CD5C:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CD66:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CD70:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ b _0221CD82
+_0221CD7A:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+_0221CD82:
+ ldr r0, [r4, #4]
+ ldr r1, _0221CD90 ; =MOD08_0221CAFC
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221CD90: .word MOD08_0221CAFC
+
+ thumb_func_start MOD08_0221CD94
+MOD08_0221CD94: ; 0x0221CD94
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r2, r0, #0
+ ldr r0, [r6, #0x2c]
+ cmp r0, #0
+ bne _0221CDB0
+ ldr r0, [r6, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r6, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+_0221CDB0:
+ sub r0, r0, #1
+ str r0, [r6, #0x2c]
+ mov r4, #0
+ add r5, r6, #0
+_0221CDB8:
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _0221CDC2
+ bl FUN_0200C5A8
+_0221CDC2:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0221CDB8
+ ldr r0, [r6, #0xc]
+ bl FUN_0200BC1C
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221CDD4
+MOD08_0221CDD4: ; 0x0221CDD4
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x34
+ add r4, r0, #0
+ bl MOD08_02228064
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD08_02227B70
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ bne _0221CDF8
+ mov r0, #3
+ b _0221CE00
+_0221CDF8:
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD08_02212498
+_0221CE00:
+ ldr r5, _0221CE38 ; =0x0222D5A0
+ str r0, [r7, #0x2c]
+ mov r6, #0
+ add r4, r7, #0
+_0221CE08:
+ ldr r0, [r7, #4]
+ add r1, r6, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _0221CE1C
+ ldr r1, [r5]
+ bl FUN_0200C6C4
+_0221CE1C:
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #4
+ blt _0221CE08
+ ldr r0, [r7, #4]
+ ldr r1, _0221CE3C ; =MOD08_0221CD94
+ add r2, r7, #0
+ bl MOD08_02212400
+ add r1, r7, #0
+ bl MOD08_0221CD94
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221CE38: .word 0x0222D5A0
+_0221CE3C: .word MOD08_0221CD94
+
+ thumb_func_start MOD08_0221CE40
+MOD08_0221CE40: ; 0x0221CE40
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrb r0, [r5, #8]
+ cmp r0, #0
+ beq _0221CE54
+ cmp r0, #1
+ beq _0221CE9A
+ b _0221CEB2
+_0221CE54:
+ mov r0, #0
+ str r0, [r5]
+ ldr r0, [r5, #0xc]
+ mov r1, #2
+ bl MOD08_022155C4
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD08_02218998
+ add r6, r0, #0
+ ldr r0, [r5, #0xc]
+ bl MOD08_02212014
+ mov r1, #0xc8
+ str r1, [sp]
+ mov r3, #2
+ str r4, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ str r6, [sp, #0xc]
+ str r0, [sp, #0x10]
+ add r0, r1, #0
+ mov r1, #0xa0
+ mov r2, #0xb6
+ lsl r3, r3, #0x10
+ bl MOD08_022188DC
+ str r0, [r5, #0x24]
+ ldrb r0, [r5, #8]
+ add sp, #0x14
+ add r0, r0, #1
+ strb r0, [r5, #8]
+ pop {r3, r4, r5, r6, pc}
+_0221CE9A:
+ ldr r0, [r5]
+ add r1, r0, #1
+ str r1, [r5]
+ ldr r0, [r5, #4]
+ cmp r1, r0
+ blt _0221CEC0
+ ldr r0, [r5, #0x24]
+ bl MOD08_0221894C
+ ldrb r0, [r5, #8]
+ add r0, r0, #1
+ strb r0, [r5, #8]
+_0221CEB2:
+ ldr r0, [r5, #0xc]
+ add r1, r4, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+_0221CEC0:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD08_0221CEC4
+MOD08_0221CEC4: ; 0x0221CEC4
+ push {r3, r4, r5, lr}
+ mov r1, #0x28
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #8
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4, #4]
+ ldr r0, [r4, #0xc]
+ ldr r1, _0221CEF0 ; =MOD08_0221CE40
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221CEF0: .word MOD08_0221CE40
+
+ thumb_func_start MOD08_0221CEF4
+MOD08_0221CEF4: ; 0x0221CEF4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ str r0, [sp, #0xc]
+ ldrb r0, [r4]
+ cmp r0, #3
+ bls _0221CF04
+ b _0221D076
+_0221CF04:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221CF10: ; jump table
+ .short _0221CF18 - _0221CF10 - 2 ; case 0
+ .short _0221CFCA - _0221CF10 - 2 ; case 1
+ .short _0221CFE8 - _0221CF10 - 2 ; case 2
+ .short _0221D042 - _0221CF10 - 2 ; case 3
+_0221CF18:
+ ldrb r0, [r4, #4]
+ mov r7, #0
+ add r1, r7, #0
+ add r0, r0, #1
+ strb r0, [r4, #4]
+ ldr r0, [r4, #8]
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221CF8E
+ ldr r6, _0221D0E4 ; =0x0222C536
+ add r5, r4, #0
+_0221CF30:
+ add r1, sp, #0x10
+ ldr r0, [r5, #0x14]
+ add r1, #2
+ add r2, sp, #0x10
+ bl FUN_0200C7A0
+ ldrb r1, [r4, #4]
+ ldrb r0, [r6]
+ cmp r1, r0
+ blo _0221CF74
+ add r0, r4, r7
+ ldrb r1, [r0, #1]
+ add r1, r1, #1
+ strb r1, [r0, #1]
+ ldrb r2, [r0, #1]
+ ldrb r1, [r6, #1]
+ cmp r2, r1
+ blo _0221CF7C
+ mov r1, #0
+ strb r1, [r0, #1]
+ ldr r0, [r5, #0x14]
+ bl FUN_0200C658
+ cmp r0, #1
+ ldr r0, [r5, #0x14]
+ bne _0221CF6C
+ mov r1, #0
+ bl FUN_0200C644
+ b _0221CF7C
+_0221CF6C:
+ mov r1, #1
+ bl FUN_0200C644
+ b _0221CF7C
+_0221CF74:
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ bl FUN_0200C644
+_0221CF7C:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ add r5, r5, #4
+ add r6, r6, #2
+ add r7, r7, #1
+ bl MOD08_02212498
+ cmp r7, r0
+ blt _0221CF30
+_0221CF8E:
+ ldrb r0, [r4, #4]
+ cmp r0, #0x2d
+ blo _0221D02C
+ mov r5, #0
+ ldr r0, [r4, #8]
+ add r1, r5, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221CFBE
+ add r6, r4, #0
+ mov r7, #1
+_0221CFA6:
+ ldr r0, [r6, #0x14]
+ add r1, r7, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #8]
+ mov r1, #0
+ add r6, r6, #4
+ add r5, r5, #1
+ bl MOD08_02212498
+ cmp r5, r0
+ blt _0221CFA6
+_0221CFBE:
+ mov r0, #0
+ strb r0, [r4, #4]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221D0B0
+_0221CFCA:
+ mov r1, #0x64
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x20
+ mov r2, #0x3c
+ add r3, r1, #0
+ bl MOD08_022181A8
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221D0B0
+_0221CFE8:
+ add r0, r4, #0
+ add r0, #0x20
+ bl MOD08_02218224
+ cmp r0, #1
+ bne _0221D02E
+ mov r5, #0
+ ldr r0, [r4, #8]
+ add r1, r5, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221D0B0
+ add r7, r4, #0
+ add r6, r4, #0
+ add r7, #0x20
+_0221D008:
+ add r0, r7, #0
+ add r1, sp, #0x18
+ add r2, sp, #0x14
+ bl MOD08_0221825C
+ ldr r0, [r6, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ bl FUN_0200C884
+ ldr r0, [r4, #8]
+ mov r1, #0
+ add r6, r6, #4
+ add r5, r5, #1
+ bl MOD08_02212498
+ cmp r5, r0
+ blt _0221D008
+_0221D02C:
+ b _0221D0B0
+_0221D02E:
+ ldrb r0, [r4, #4]
+ add r0, r0, #1
+ strb r0, [r4, #4]
+ ldrb r0, [r4, #4]
+ cmp r0, #0x2d
+ blo _0221D0B0
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221D0B0
+_0221D042:
+ ldrb r0, [r4, #5]
+ cmp r0, #0
+ beq _0221D04C
+ sub r0, r0, #1
+ strb r0, [r4, #5]
+_0221D04C:
+ ldrb r0, [r4, #6]
+ cmp r0, #0xf
+ bhs _0221D056
+ add r0, r0, #1
+ strb r0, [r4, #6]
+_0221D056:
+ ldrb r0, [r4, #5]
+ cmp r0, #0
+ bne _0221D068
+ ldrb r0, [r4, #6]
+ cmp r0, #0xf
+ bne _0221D068
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221D068:
+ ldrb r0, [r4, #6]
+ ldrb r1, [r4, #5]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221D0E8 ; =0x04000052
+ strh r1, [r0]
+ b _0221D0B0
+_0221D076:
+ mov r5, #0
+ ldr r0, [r4, #8]
+ add r1, r5, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221D09E
+ add r6, r4, #0
+ add r7, r5, #0
+_0221D088:
+ ldr r0, [r6, #0x14]
+ bl FUN_0200C3DC
+ ldr r0, [r4, #8]
+ add r1, r7, #0
+ add r6, r6, #4
+ add r5, r5, #1
+ bl MOD08_02212498
+ cmp r5, r0
+ blt _0221D088
+_0221D09E:
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0xc]
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+_0221D0B0:
+ mov r5, #0
+ ldr r0, [r4, #8]
+ add r1, r5, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221D0DA
+ add r6, r4, #0
+ add r7, r5, #0
+_0221D0C2:
+ ldr r0, [r6, #0x14]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ ldr r0, [r4, #8]
+ add r1, r7, #0
+ add r6, r6, #4
+ add r5, r5, #1
+ bl MOD08_02212498
+ cmp r5, r0
+ blt _0221D0C2
+_0221D0DA:
+ ldr r0, [r4, #0x10]
+ bl FUN_0200BC1C
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221D0E4: .word 0x0222C536
+_0221D0E8: .word 0x04000052
+
+ thumb_func_start MOD08_0221D0EC
+MOD08_0221D0EC: ; 0x0221D0EC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ str r0, [sp]
+ add r5, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD08_02212014
+ mov r1, #0x44
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _0221D10A
+ bl ErrorHandling
+_0221D10A:
+ mov r0, #0
+ strb r0, [r4, #4]
+ strb r0, [r4]
+ str r5, [r4, #0xc]
+ ldr r0, [sp]
+ str r6, [r4, #0x10]
+ str r0, [r4, #8]
+ ldr r1, [sp]
+ add r0, sp, #8
+ bl MOD08_02215474
+ mov r1, #0
+ mvn r1, r1
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ bl MOD08_02227994
+ mov r0, #0xf
+ strb r0, [r4, #5]
+ mov r0, #0
+ strb r0, [r4, #6]
+ ldrb r0, [r4, #6]
+ ldrb r1, [r4, #5]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221D21C ; =0x04000052
+ strh r1, [r0]
+ ldr r0, [sp]
+ str r7, [r4, #0x14]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [sp]
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _0221D166
+ ldr r0, [sp]
+ bl MOD08_02212004
+ add r1, r0, #0
+ mov r0, #0
+ add r2, sp, #4
+ bl MOD08_02227564
+ b _0221D176
+_0221D166:
+ ldr r0, [sp]
+ bl MOD08_02212004
+ add r1, r0, #0
+ mov r0, #1
+ add r2, sp, #4
+ bl MOD08_02227564
+_0221D176:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ mov r6, #1
+ bl MOD08_02212498
+ cmp r0, #1
+ ble _0221D1B0
+ add r5, r4, #4
+ add r7, sp, #4
+_0221D188:
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r2, sp, #8
+ bl FUN_0200C154
+ str r0, [r5, #0x14]
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r7, r1]
+ ldrsh r2, [r7, r2]
+ bl FUN_0200C714
+ ldr r0, [r4, #8]
+ mov r1, #0
+ add r5, r5, #4
+ add r6, r6, #1
+ bl MOD08_02212498
+ cmp r6, r0
+ blt _0221D188
+_0221D1B0:
+ add r3, sp, #4
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r4, #0x14]
+ bl FUN_0200C714
+ mov r6, #0
+ ldr r0, [r4, #8]
+ add r1, r6, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221D20A
+ add r5, r4, #0
+ add r7, r6, #0
+_0221D1D2:
+ add r1, r4, r6
+ mov r0, #0
+ strb r0, [r1, #1]
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ bl FUN_0200C840
+ mov r2, #0x20
+ sub r2, r2, r7
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ asr r2, r2, #0x10
+ bl FUN_0200C82C
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #8]
+ mov r1, #0
+ add r5, r5, #4
+ add r7, r7, #4
+ add r6, r6, #1
+ bl MOD08_02212498
+ cmp r6, r0
+ blt _0221D1D2
+_0221D20A:
+ mov r3, #1
+ ldr r0, [sp]
+ ldr r1, _0221D220 ; =MOD08_0221CEF4
+ add r2, r4, #0
+ lsl r3, r3, #0xc
+ bl MOD08_022123E4
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221D21C: .word 0x04000052
+_0221D220: .word MOD08_0221CEF4
+
+ thumb_func_start MOD08_0221D224
+MOD08_0221D224: ; 0x0221D224
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #5
+ bls _0221D234
+ b _0221D404
+_0221D234:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221D240: ; jump table
+ .short _0221D24C - _0221D240 - 2 ; case 0
+ .short _0221D2AE - _0221D240 - 2 ; case 1
+ .short _0221D2C8 - _0221D240 - 2 ; case 2
+ .short _0221D2EC - _0221D240 - 2 ; case 3
+ .short _0221D346 - _0221D240 - 2 ; case 4
+ .short _0221D394 - _0221D240 - 2 ; case 5
+_0221D24C:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #1
+ bne _0221D2A4
+ add r0, r4, #0
+ add r0, #0x38
+ bl MOD08_022183F0
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x16
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r2, #0x38
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_020079E0
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x28]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221D2A4:
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221D2AE:
+ mov r0, #0x1f
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, [r4, #0x10]
+ mov r2, #0xa
+ add r3, r1, #0
+ bl FUN_02007E68
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221D2C8:
+ ldr r0, [r4, #0x10]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _0221D2F6
+ mov r0, #0x1f
+ str r0, [sp]
+ mov r2, #0
+ ldr r0, [r4, #0x10]
+ mov r1, #0xa
+ add r3, r2, #0
+ bl FUN_02007E68
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221D2EC:
+ ldr r0, [r4, #0x10]
+ bl FUN_02007F20
+ cmp r0, #0
+ beq _0221D2F8
+_0221D2F6:
+ b _0221D412
+_0221D2F8:
+ ldrb r0, [r4, #8]
+ add r0, r0, #1
+ strb r0, [r4, #8]
+ ldrb r0, [r4, #8]
+ cmp r0, #3
+ blo _0221D33E
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD08_02212498
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl MOD08_02212498
+ add r6, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [sp]
+ add r0, r4, #0
+ lsl r1, r5, #0x10
+ lsl r3, r6, #0x10
+ add r0, #0x14
+ asr r1, r1, #0x10
+ mov r2, #0x64
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221D33E:
+ mov r0, #1
+ add sp, #4
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221D346:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #1
+ bne _0221D38A
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x16
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x28]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221D38A:
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221D394:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #1
+ ldr r0, [r4, #0x10]
+ bne _0221D3D8
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x16
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x28]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0221D3D8:
+ mov r1, #0xc
+ add r2, r1, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r2, #2
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02007558
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221D404:
+ ldr r0, [r4, #0xc]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221D412:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221D418
+MOD08_0221D418: ; 0x0221D418
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x5c
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4, #8]
+ strb r0, [r4]
+ str r5, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #2]
+ ldr r0, [r4, #0xc]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_0221552C
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x64
+ lsl r3, r6, #0x10
+ add r0, #0x14
+ add r2, r1, #0
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ mov r0, #0xa
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x38
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD08_022183C0
+ ldr r0, [r4, #0xc]
+ ldr r1, _0221D4A0 ; =MOD08_0221D224
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0221D4A0: .word MOD08_0221D224
+
+ thumb_func_start MOD08_0221D4A4
+MOD08_0221D4A4: ; 0x0221D4A4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #4
+ bls _0221D4B4
+ b _0221D6CC
+_0221D4B4:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221D4C0: ; jump table
+ .short _0221D4CA - _0221D4C0 - 2 ; case 0
+ .short _0221D530 - _0221D4C0 - 2 ; case 1
+ .short _0221D594 - _0221D4C0 - 2 ; case 2
+ .short _0221D5F8 - _0221D4C0 - 2 ; case 3
+ .short _0221D65C - _0221D4C0 - 2 ; case 4
+_0221D4CA:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218224
+ cmp r0, #1
+ bne _0221D50E
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x24]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r3, r4, pc}
+_0221D50E:
+ mov r1, #0x96
+ str r1, [sp]
+ mov r0, #0x64
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r2, #0x32
+ add r0, #0x10
+ add r3, r2, #0
+ bl MOD08_022181A8
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221D530:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218224
+ cmp r0, #1
+ bne _0221D574
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x24]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r3, r4, pc}
+_0221D574:
+ mov r2, #0x64
+ str r2, [sp]
+ str r2, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ mov r1, #0x32
+ mov r3, #0x96
+ bl MOD08_022181A8
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221D594:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218224
+ cmp r0, #1
+ bne _0221D5D8
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x24]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r3, r4, pc}
+_0221D5D8:
+ mov r2, #0x96
+ mov r1, #0x64
+ str r2, [sp]
+ str r1, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ add r3, r1, #0
+ bl MOD08_022181A8
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221D5F8:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218224
+ cmp r0, #1
+ bne _0221D63C
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x24]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r3, r4, pc}
+_0221D63C:
+ mov r2, #0x64
+ str r2, [sp]
+ str r2, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x96
+ add r0, #0x10
+ add r3, r1, #0
+ bl MOD08_022181A8
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221D65C:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218224
+ cmp r0, #1
+ ldr r0, [r4, #0xc]
+ bne _0221D6A0
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0x24]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r3, r4, pc}
+_0221D6A0:
+ mov r1, #0xc
+ add r2, r1, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #0xc]
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r2, #2
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_02007558
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221D6CC:
+ ldr r0, [r4, #8]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221D6E0
+MOD08_0221D6E0: ; 0x0221D6E0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x58
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ str r5, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #2]
+ ldr r0, [r4, #8]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_0221552C
+ str r0, [r4, #4]
+ mov r0, #0x32
+ str r0, [sp]
+ mov r1, #0x64
+ str r1, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ mov r2, #0x96
+ add r3, r1, #0
+ bl MOD08_022181A8
+ ldr r0, [r4, #8]
+ ldr r1, _0221D748 ; =MOD08_0221D4A4
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0221D748: .word MOD08_0221D4A4
+
+ thumb_func_start MOD08_0221D74C
+MOD08_0221D74C: ; 0x0221D74C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r5, #1]
+ cmp r0, #0
+ beq _0221D766
+ cmp r0, #1
+ beq _0221D84C
+ cmp r0, #2
+ bne _0221D764
+ b _0221D8AE
+_0221D764:
+ b _0221D8E2
+_0221D766:
+ ldrb r3, [r5]
+ mov r0, #0x1f
+ lsr r2, r3, #0x1f
+ lsl r1, r3, #0x1f
+ sub r1, r1, r2
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #1
+ add r1, r3, #1
+ str r0, [sp, #0xc]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [sp, #8]
+ ldr r1, [sp, #0xc]
+ mov r0, #6
+ mul r0, r1
+ ldr r1, _0221D900 ; =0x0222C59A
+ ldrsh r2, [r1, r0]
+ ldr r1, [sp, #8]
+ sub r7, r2, r1
+ mov r1, #0xa
+ ldrsh r3, [r5, r1]
+ ldr r1, _0221D904 ; =0x0222C598
+ ldrsh r6, [r1, r0]
+ mov r1, #8
+ ldrsh r2, [r5, r1]
+ ldr r1, _0221D908 ; =0x0222C596
+ ldrsh r4, [r1, r0]
+ lsl r0, r7, #0x10
+ str r3, [sp]
+ add r1, r2, r4
+ lsr r0, r0, #0x10
+ add r2, r2, r6
+ str r0, [sp, #4]
+ add r0, r5, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, #0x28
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ mov r0, #0xa
+ ldrsh r3, [r5, r0]
+ mov r0, #8
+ ldrsh r2, [r5, r0]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ sub r1, r2, r4
+ str r3, [sp]
+ sub r2, r2, r6
+ str r0, [sp, #4]
+ add r0, r5, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, #0x4c
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ ldr r0, [sp, #0xc]
+ add r1, r0, #1
+ mov r0, #6
+ mul r0, r1
+ ldr r1, _0221D900 ; =0x0222C59A
+ ldrsh r2, [r1, r0]
+ ldr r1, [sp, #8]
+ sub r7, r2, r1
+ mov r1, #0xa
+ ldrsh r3, [r5, r1]
+ ldr r1, _0221D904 ; =0x0222C598
+ ldrsh r6, [r1, r0]
+ mov r1, #8
+ ldrsh r2, [r5, r1]
+ ldr r1, _0221D908 ; =0x0222C596
+ ldrsh r4, [r1, r0]
+ lsl r0, r7, #0x10
+ str r3, [sp]
+ add r1, r2, r4
+ lsr r0, r0, #0x10
+ add r2, r2, r6
+ str r0, [sp, #4]
+ add r0, r5, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, #0x70
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ mov r0, #0xa
+ ldrsh r3, [r5, r0]
+ mov r0, #8
+ ldrsh r2, [r5, r0]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ sub r1, r2, r4
+ str r3, [sp]
+ sub r2, r2, r6
+ str r0, [sp, #4]
+ add r0, r5, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, #0x94
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ ldrb r0, [r5, #1]
+ add r0, r0, #1
+ strb r0, [r5, #1]
+_0221D84C:
+ mov r0, #0
+ add r7, r5, #0
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r7, #0x28
+ add r6, r5, #0
+ add r4, r5, #0
+_0221D85A:
+ add r0, r7, #0
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _0221D870
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ b _0221D87E
+_0221D870:
+ mov r1, #0x28
+ mov r2, #0x2a
+ ldrsh r1, [r6, r1]
+ ldrsh r2, [r6, r2]
+ ldr r0, [r4, #0x18]
+ bl FUN_0200C714
+_0221D87E:
+ ldr r0, [r4, #0x18]
+ bl FUN_0200C5A8
+ ldr r0, [sp, #0x14]
+ add r7, #0x24
+ add r0, r0, #1
+ add r6, #0x24
+ add r4, r4, #4
+ str r0, [sp, #0x14]
+ cmp r0, #4
+ blt _0221D85A
+ ldr r0, [sp, #0x10]
+ cmp r0, #4
+ bne _0221D8F4
+ ldrb r0, [r5]
+ cmp r0, #9
+ bne _0221D8A8
+ ldrb r0, [r5, #1]
+ add r0, r0, #1
+ strb r0, [r5, #1]
+ b _0221D8F4
+_0221D8A8:
+ mov r0, #0
+ strb r0, [r5, #1]
+ b _0221D8F4
+_0221D8AE:
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ beq _0221D8B8
+ sub r0, r0, #1
+ strb r0, [r5, #4]
+_0221D8B8:
+ ldrb r0, [r5, #5]
+ cmp r0, #0xf
+ bhs _0221D8C2
+ add r0, r0, #1
+ strb r0, [r5, #5]
+_0221D8C2:
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ bne _0221D8D4
+ ldrb r0, [r5, #5]
+ cmp r0, #0xf
+ bne _0221D8D4
+ ldrb r0, [r5, #1]
+ add r0, r0, #1
+ strb r0, [r5, #1]
+_0221D8D4:
+ ldrb r0, [r5, #5]
+ ldrb r1, [r5, #4]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221D90C ; =0x04000052
+ strh r1, [r0]
+ b _0221D8F4
+_0221D8E2:
+ ldr r0, [r5, #0xc]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_0221D8F4:
+ ldr r0, [r5, #0x14]
+ bl FUN_0200BC1C
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221D900: .word 0x0222C59A
+_0221D904: .word 0x0222C598
+_0221D908: .word 0x0222C596
+_0221D90C: .word 0x04000052
+
+ thumb_func_start MOD08_0221D910
+MOD08_0221D910: ; 0x0221D910
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x18]
+ bl MOD08_02212014
+ mov r1, #0xb8
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4, #1]
+ strb r0, [r4]
+ ldr r0, [sp, #0x18]
+ str r0, [r4, #0xc]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #8]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0xa]
+ ldr r0, [r4, #0x10]
+ mov r1, #0x29
+ bl FUN_0200782C
+ mov r1, #0xa
+ ldrsh r1, [r4, r1]
+ sub r0, r1, r0
+ strh r0, [r4, #0xa]
+ ldr r0, [r4, #0xc]
+ bl MOD08_02212504
+ str r0, [r4, #0x14]
+ mov r0, #8
+ strb r0, [r4, #4]
+ mov r1, #6
+ strb r1, [r4, #5]
+ sub r1, r1, #7
+ ldr r0, [r4, #0xc]
+ add r2, r1, #0
+ bl MOD08_02227994
+ ldrb r0, [r4, #5]
+ ldrb r1, [r4, #4]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221DB90 ; =0x04000052
+ strh r1, [r0]
+ ldr r0, [r4, #0xc]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_0221550C
+ str r0, [sp, #0x20]
+ ldr r0, [r4, #0xc]
+ bl MOD08_02215574
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_0221551C
+ str r0, [sp, #0x1c]
+ mov r6, #0
+ add r5, r4, #0
+_0221D9AE:
+ ldr r0, [r4, #0xc]
+ add r1, r6, #0
+ bl MOD08_022124D8
+ mov r1, #1
+ str r0, [r5, #0x18]
+ bl FUN_0200C90C
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _0221D9AE
+ ldr r0, [r4, #0xc]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_02227470
+ cmp r0, #3
+ ldr r0, [r4, #0x18]
+ bne _0221DA9E
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x20]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x24]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x18]
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x1c]
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x20]
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x24]
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x18]
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r0, [r4, #0xc]
+ bl MOD08_02215504
+ add r6, r0, #0
+ ldr r0, [sp, #0x18]
+ bl MOD08_02212014
+ add r3, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ lsl r0, r5, #0x14
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0x80
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ add r0, r6, #0
+ bl FUN_02003B40
+ ldr r0, [r4, #0x20]
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r0, [r4, #0xc]
+ bl MOD08_02215504
+ add r6, r0, #0
+ ldr r0, [sp, #0x18]
+ bl MOD08_02212014
+ add r3, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ lsl r0, r5, #0x14
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0xc4
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ add r0, r6, #0
+ bl FUN_02003B40
+ b _0221DB80
+_0221DA9E:
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x20]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x24]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x18]
+ add r1, r7, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x1c]
+ add r1, r7, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x20]
+ add r1, r7, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x24]
+ add r1, r7, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x18]
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x1c]
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x20]
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x24]
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x18]
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r0, [r4, #0xc]
+ bl MOD08_02215504
+ add r6, r0, #0
+ ldr r0, [sp, #0x18]
+ bl MOD08_02212014
+ add r3, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ lsl r0, r5, #0x14
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0xc4
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ add r0, r6, #0
+ bl FUN_02003B40
+ ldr r0, [r4, #0x20]
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r0, [r4, #0xc]
+ bl MOD08_02215504
+ add r6, r0, #0
+ ldr r0, [sp, #0x18]
+ bl MOD08_02212014
+ add r3, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ lsl r0, r5, #0x14
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0x80
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ add r0, r6, #0
+ bl FUN_02003B40
+_0221DB80:
+ ldr r0, [r4, #0xc]
+ ldr r1, _0221DB94 ; =MOD08_0221D74C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0221DB90: .word 0x04000052
+_0221DB94: .word MOD08_0221D74C
+
+ thumb_func_start MOD08_0221DB98
+MOD08_0221DB98: ; 0x0221DB98
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221DBAA
+ cmp r0, #1
+ beq _0221DC04
+ b _0221DC44
+_0221DBAA:
+ ldrb r1, [r4, #2]
+ ldr r5, _0221DC54 ; =0x0222C531
+ mov r2, #0x64
+ lsl r0, r1, #1
+ add r3, r1, r0
+ ldr r0, _0221DC58 ; =0x0222C532
+ ldr r1, _0221DC5C ; =0x0222C530
+ ldrb r0, [r0, r3]
+ ldrb r1, [r1, r3]
+ ldrb r3, [r5, r3]
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD08_02218120
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ ldr r0, _0221DC60 ; =0x00007FFF
+ bne _0221DBE0
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, [r4, #8]
+ mov r2, #6
+ add r3, r1, #0
+ bl FUN_02007E68
+ b _0221DBEE
+_0221DBE0:
+ str r0, [sp]
+ mov r2, #0
+ ldr r0, [r4, #8]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02007E68
+_0221DBEE:
+ ldrb r1, [r4, #2]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #2]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_0221DC04:
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD08_02218170
+ cmp r0, #0
+ bne _0221DC2C
+ ldr r0, [r4, #8]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _0221DC2C
+ ldrb r0, [r4, #1]
+ cmp r0, #4
+ ldrb r0, [r4]
+ bhs _0221DC28
+ sub r0, r0, #1
+ strb r0, [r4]
+ b _0221DC2C
+_0221DC28:
+ add r0, r0, #1
+ strb r0, [r4]
+_0221DC2C:
+ mov r1, #0xc
+ ldrsh r2, [r4, r1]
+ ldr r0, [r4, #8]
+ bl FUN_02007558
+ mov r2, #0xe
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #8]
+ mov r1, #0xd
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_0221DC44:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221DC54: .word 0x0222C531
+_0221DC58: .word 0x0222C532
+_0221DC5C: .word 0x0222C530
+_0221DC60: .word 0x00007FFF
+
+ thumb_func_start MOD08_0221DC64
+MOD08_0221DC64: ; 0x0221DC64
+ push {r3, r4, r5, lr}
+ mov r1, #0x30
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #2]
+ strb r0, [r4, #1]
+ str r5, [r4, #4]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ ldr r1, _0221DC98 ; =MOD08_0221DB98
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_0221DC98: .word MOD08_0221DB98
+
+ thumb_func_start MOD08_0221DC9C
+MOD08_0221DC9C: ; 0x0221DC9C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221DCB0
+ cmp r0, #1
+ beq _0221DCEA
+ b _0221DD42
+_0221DCB0:
+ ldrb r1, [r4, #1]
+ ldr r2, _0221DD54 ; =0x0222C578
+ ldr r5, _0221DD58 ; =0x0222C579
+ lsl r0, r1, #2
+ add r3, r1, r0
+ ldr r0, _0221DD5C ; =0x0222C57A
+ ldr r1, _0221DD60 ; =0x0222C577
+ ldrb r0, [r0, r3]
+ ldrb r1, [r1, r3]
+ ldrb r2, [r2, r3]
+ str r0, [sp]
+ mov r0, #0x64
+ str r0, [sp, #4]
+ ldr r0, _0221DD64 ; =0x0222C57B
+ ldrb r0, [r0, r3]
+ ldrb r3, [r5, r3]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_022181A8
+ ldrb r0, [r4, #1]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, r5, pc}
+_0221DCEA:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218224
+ cmp r0, #0
+ bne _0221DD08
+ ldrb r0, [r4, #1]
+ cmp r0, #3
+ ldrb r0, [r4]
+ bhs _0221DD04
+ sub r0, r0, #1
+ strb r0, [r4]
+ b _0221DD08
+_0221DD04:
+ add r0, r0, #1
+ strb r0, [r4]
+_0221DD08:
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #2
+ mov r1, #4
+ ldrsh r0, [r4, r0]
+ ldrsh r1, [r4, r1]
+ ldr r2, [r4, #0x24]
+ bl MOD08_0221828C
+ mov r2, #2
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r4, r5, pc}
+_0221DD42:
+ ldr r0, [r4, #8]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_0221DD54: .word 0x0222C578
+_0221DD58: .word 0x0222C579
+_0221DD5C: .word 0x0222C57A
+_0221DD60: .word 0x0222C577
+_0221DD64: .word 0x0222C57B
+
+ thumb_func_start MOD08_0221DD68
+MOD08_0221DD68: ; 0x0221DD68
+ push {r3, r4, r5, lr}
+ mov r1, #0x34
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ str r5, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #2]
+ ldr r0, [r4, #8]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_0221552C
+ strh r0, [r4, #4]
+ ldr r0, [r4, #8]
+ ldr r1, _0221DDB0 ; =MOD08_0221DC9C
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221DDB0: .word MOD08_0221DC9C
+
+ thumb_func_start MOD08_0221DDB4
+MOD08_0221DDB4: ; 0x0221DDB4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #5
+ bls _0221DDC4
+ b _0221DF24
+_0221DDC4:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221DDD0: ; jump table
+ .short _0221DDDC - _0221DDD0 - 2 ; case 0
+ .short _0221DE16 - _0221DDD0 - 2 ; case 1
+ .short _0221DE58 - _0221DDD0 - 2 ; case 2
+ .short _0221DE82 - _0221DDD0 - 2 ; case 3
+ .short _0221DEA4 - _0221DDD0 - 2 ; case 4
+ .short _0221DEE2 - _0221DDD0 - 2 ; case 5
+_0221DDDC:
+ ldrb r1, [r4, #1]
+ ldr r2, _0221DF64 ; =0x0222C550
+ ldr r5, _0221DF68 ; =0x0222C551
+ lsl r0, r1, #2
+ add r3, r1, r0
+ ldr r0, _0221DF6C ; =0x0222C552
+ ldr r1, _0221DF70 ; =0x0222C54F
+ ldrb r0, [r0, r3]
+ ldrb r1, [r1, r3]
+ ldrb r2, [r2, r3]
+ str r0, [sp]
+ mov r0, #0x64
+ str r0, [sp, #4]
+ ldr r0, _0221DF74 ; =0x0222C553
+ ldrb r0, [r0, r3]
+ ldrb r3, [r5, r3]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_022181A8
+ ldrb r0, [r4, #1]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, r5, pc}
+_0221DE16:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218224
+ cmp r0, #0
+ bne _0221DE28
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221DE28:
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #2
+ mov r2, #6
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ ldr r3, [r4, #0x24]
+ bl MOD08_022182DC
+ add sp, #0xc
+ pop {r4, r5, pc}
+_0221DE58:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ mov r1, #0
+ add r3, r0, #0
+ lsl r3, r3, #0x10
+ str r1, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x10
+ add r2, r1, #0
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, r5, pc}
+_0221DE82:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _0221DE94
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221DE94:
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_02007558
+ add sp, #0xc
+ pop {r4, r5, pc}
+_0221DEA4:
+ ldrb r1, [r4, #1]
+ ldr r2, _0221DF64 ; =0x0222C550
+ ldr r5, _0221DF68 ; =0x0222C551
+ lsl r0, r1, #2
+ add r3, r1, r0
+ ldr r0, _0221DF6C ; =0x0222C552
+ ldr r1, _0221DF70 ; =0x0222C54F
+ ldrb r0, [r0, r3]
+ ldrb r1, [r1, r3]
+ ldrb r2, [r2, r3]
+ str r0, [sp]
+ mov r0, #0x64
+ str r0, [sp, #4]
+ ldr r0, _0221DF74 ; =0x0222C553
+ ldrb r0, [r0, r3]
+ ldrb r3, [r5, r3]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_022181A8
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #2]
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, r5, pc}
+_0221DEE2:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218224
+ cmp r0, #0
+ bne _0221DEF4
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221DEF4:
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #2
+ mov r2, #6
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ ldr r3, [r4, #0x24]
+ bl MOD08_022182DC
+ add sp, #0xc
+ pop {r4, r5, pc}
+_0221DF24:
+ mov r2, #4
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_02007558
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ mov r1, #0xc
+ add r2, r1, #0
+ ldr r0, [r4, #0xc]
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #0xc]
+ add r2, #0xf3
+ bl FUN_02007558
+ ldr r0, [r4, #8]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_0221DF64: .word 0x0222C550
+_0221DF68: .word 0x0222C551
+_0221DF6C: .word 0x0222C552
+_0221DF70: .word 0x0222C54F
+_0221DF74: .word 0x0222C553
+
+ thumb_func_start MOD08_0221DF78
+MOD08_0221DF78: ; 0x0221DF78
+ push {r3, r4, r5, lr}
+ mov r1, #0x34
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ str r5, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #2]
+ mov r0, #2
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #4]
+ ldr r0, [r4, #8]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_0221552C
+ strh r0, [r4, #6]
+ ldr r0, [r4, #8]
+ ldr r1, _0221DFC8 ; =MOD08_0221DDB4
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_0221DFC8: .word MOD08_0221DDB4
+
+ thumb_func_start MOD08_0221DFCC
+MOD08_0221DFCC: ; 0x0221DFCC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #4
+ bhi _0221E0B6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221DFE6: ; jump table
+ .short _0221DFF0 - _0221DFE6 - 2 ; case 0
+ .short _0221E02A - _0221DFE6 - 2 ; case 1
+ .short _0221E048 - _0221DFE6 - 2 ; case 2
+ .short _0221E05E - _0221DFE6 - 2 ; case 3
+ .short _0221E098 - _0221DFE6 - 2 ; case 4
+_0221DFF0:
+ ldr r0, [r4, #8]
+ bl MOD08_02214540
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, _0221E0C8 ; =0x00007FFF
+ mov r1, #1
+ str r0, [sp, #8]
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #4]
+ lsr r2, r2, #0x10
+ sub r3, r1, #3
+ bl FUN_02003210
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x10]
+ mov r2, #0x10
+ add r3, r1, #0
+ bl FUN_02007E68
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221E02A:
+ ldr r0, [r4, #4]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _0221E0C4
+ ldr r0, [r4, #0x10]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _0221E0C4
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221E048:
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #5
+ bls _0221E0C4
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221E05E:
+ ldr r0, [r4, #8]
+ bl MOD08_02214540
+ add r2, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _0221E0C8 ; =0x00007FFF
+ mov r1, #1
+ str r0, [sp, #8]
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #4]
+ lsr r2, r2, #0x10
+ sub r3, r1, #3
+ bl FUN_02003210
+ mov r2, #0
+ str r2, [sp]
+ ldr r0, [r4, #0x10]
+ mov r1, #0x10
+ add r3, r2, #0
+ bl FUN_02007E68
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221E098:
+ ldr r0, [r4, #4]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _0221E0C4
+ ldr r0, [r4, #0x10]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _0221E0C4
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221E0B6:
+ ldr r0, [r4, #8]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221E0C4:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_0221E0C8: .word 0x00007FFF
+
+ thumb_func_start MOD08_0221E0CC
+MOD08_0221E0CC: ; 0x0221E0CC
+ push {r3, r4, r5, lr}
+ mov r1, #0x14
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02215504
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #8]
+ ldr r1, _0221E100 ; =MOD08_0221DFCC
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_0221E100: .word MOD08_0221DFCC
+
+ thumb_func_start MOD08_0221E104
+MOD08_0221E104: ; 0x0221E104
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221E118
+ cmp r0, #1
+ beq _0221E184
+ b _0221E1F8
+_0221E118:
+ ldrb r1, [r4, #1]
+ ldr r2, _0221E20C ; =0x0222C55A
+ ldr r5, _0221E210 ; =0x0222C55B
+ lsl r0, r1, #2
+ add r3, r1, r0
+ ldr r0, _0221E214 ; =0x0222C55C
+ ldr r1, _0221E218 ; =0x0222C559
+ ldrb r0, [r0, r3]
+ ldrb r1, [r1, r3]
+ ldrb r2, [r2, r3]
+ str r0, [sp]
+ mov r0, #0x64
+ str r0, [sp, #4]
+ ldr r0, _0221E21C ; =0x0222C55D
+ ldrb r0, [r0, r3]
+ ldrb r3, [r5, r3]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_022181A8
+ ldrb r1, [r4, #1]
+ ldr r6, _0221E220 ; =0x0222C53C
+ lsl r0, r1, #1
+ add r5, r1, r0
+ mov r0, #4
+ ldrsh r3, [r4, r0]
+ ldr r0, _0221E224 ; =0x0222C53D
+ mov r1, #0
+ ldrb r0, [r0, r5]
+ add r2, r1, #0
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, _0221E228 ; =0x0222C53E
+ ldrb r0, [r0, r5]
+ ldrb r5, [r6, r5]
+ str r0, [sp, #4]
+ add r3, r3, r5
+ add r0, r4, #0
+ lsl r3, r3, #0x10
+ add r0, #0x34
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ ldrb r0, [r4, #1]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0221E184:
+ add r0, r4, #0
+ add r0, #0x10
+ mov r5, #0
+ bl MOD08_02218224
+ cmp r0, #0
+ bne _0221E194
+ add r5, r5, #1
+_0221E194:
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _0221E1A2
+ add r5, r5, #1
+_0221E1A2:
+ cmp r5, #2
+ blt _0221E1C8
+ ldrb r0, [r4, #1]
+ cmp r0, #3
+ blo _0221E1C4
+ ldrb r0, [r4, #2]
+ add r0, r0, #1
+ strb r0, [r4, #2]
+ mov r0, #0
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #2]
+ cmp r0, #3
+ blo _0221E1C8
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221E1C8
+_0221E1C4:
+ mov r0, #0
+ strb r0, [r4]
+_0221E1C8:
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x36
+ mov r2, #6
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ ldr r3, [r4, #0x24]
+ bl MOD08_022182DC
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0221E1F8:
+ ldr r0, [r4, #8]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0221E20C: .word 0x0222C55A
+_0221E210: .word 0x0222C55B
+_0221E214: .word 0x0222C55C
+_0221E218: .word 0x0222C559
+_0221E21C: .word 0x0222C55D
+_0221E220: .word 0x0222C53C
+_0221E224: .word 0x0222C53D
+_0221E228: .word 0x0222C53E
+
+ thumb_func_start MOD08_0221E22C
+MOD08_0221E22C: ; 0x0221E22C
+ push {r3, r4, r5, lr}
+ mov r1, #0x58
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ str r5, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #4]
+ ldr r0, [r4, #8]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_0221552C
+ strh r0, [r4, #6]
+ ldr r0, [r4, #8]
+ ldr r1, _0221E274 ; =MOD08_0221E104
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221E274: .word MOD08_0221E104
+
+ thumb_func_start MOD08_0221E278
+MOD08_0221E278: ; 0x0221E278
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221E28E
+ cmp r0, #1
+ beq _0221E2A6
+ cmp r0, #2
+ beq _0221E2C6
+ b _0221E308
+_0221E28E:
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #0xa
+ blo _0221E324
+ mov r0, #0
+ strb r0, [r4, #1]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221E324
+_0221E2A6:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ bl FUN_0200C90C
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221E324
+_0221E2C6:
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #0xa
+ blo _0221E324
+ ldr r0, _0221E338 ; =0x0400004A
+ mov r1, #0x3f
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #0x1f
+ orr r2, r1
+ strh r2, [r0]
+ ldrh r3, [r0]
+ ldr r2, _0221E33C ; =0xFFFFC0FF
+ lsl r1, r1, #8
+ and r2, r3
+ orr r1, r2
+ strh r1, [r0]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #0
+ strb r0, [r4, #1]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221E324
+_0221E308:
+ mov r3, #1
+ lsl r3, r3, #0x1a
+ ldr r1, [r3]
+ ldr r0, _0221E340 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+_0221E324:
+ ldr r0, [r4, #0xc]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ pop {r4, pc}
+ .align 2, 0
+_0221E338: .word 0x0400004A
+_0221E33C: .word 0xFFFFC0FF
+_0221E340: .word 0xFFFF1FFF
+
+ thumb_func_start MOD08_0221E344
+MOD08_0221E344: ; 0x0221E344
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ mov r1, #0x14
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4, #4]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD08_022124D8
+ str r0, [r4, #0x10]
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _0221E41C ; =0xFFFF1FFF
+ and r2, r1
+ lsr r1, r0, #0xb
+ orr r1, r2
+ str r1, [r0]
+ add r0, #0x4a
+ ldrh r2, [r0]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x1f
+ orr r1, r2
+ strh r1, [r0]
+ ldrh r2, [r0]
+ ldr r1, _0221E420 ; =0xFFFFC0FF
+ and r2, r1
+ mov r1, #0x12
+ lsl r1, r1, #8
+ orr r1, r2
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_0221550C
+ add r7, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_0221551C
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02215504
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ bl MOD08_02212014
+ add r3, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r1, #0x20
+ lsl r0, r6, #0x14
+ str r1, [sp, #4]
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ add r1, #0xe0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r2, r7, #0
+ bl FUN_02003B40
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #4]
+ ldr r1, _0221E424 ; =MOD08_0221E278
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221E41C: .word 0xFFFF1FFF
+_0221E420: .word 0xFFFFC0FF
+_0221E424: .word MOD08_0221E278
+
+ thumb_func_start MOD08_0221E428
+MOD08_0221E428: ; 0x0221E428
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bls _0221E438
+ b _0221E61A
+_0221E438:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221E444: ; jump table
+ .short _0221E44C - _0221E444 - 2 ; case 0
+ .short _0221E45E - _0221E444 - 2 ; case 1
+ .short _0221E576 - _0221E444 - 2 ; case 2
+ .short _0221E5AE - _0221E444 - 2 ; case 3
+_0221E44C:
+ ldr r0, [r4, #0xc]
+ mov r1, #0xe
+ mov r2, #1
+ bl FUN_02007558
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221E636
+_0221E45E:
+ mov r0, #0
+ add r6, r4, #0
+ ldr r7, _0221E640 ; =0x0222C52C
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r5, r4, #0
+ add r6, #0x20
+_0221E46C:
+ ldrb r0, [r5, #0x18]
+ cmp r0, #0
+ beq _0221E478
+ cmp r0, #1
+ beq _0221E4A6
+ b _0221E4F4
+_0221E478:
+ ldrb r0, [r5, #0x19]
+ add r0, r0, #1
+ strb r0, [r5, #0x19]
+ ldrb r1, [r5, #0x19]
+ ldrb r0, [r7]
+ cmp r1, r0
+ blo _0221E4FA
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0x64
+ str r0, [sp, #4]
+ mov r0, #5
+ mov r1, #0x64
+ str r0, [sp, #8]
+ add r0, r6, #0
+ mov r2, #5
+ add r3, r1, #0
+ bl MOD08_022181A8
+ ldrb r0, [r5, #0x18]
+ add r0, r0, #1
+ strb r0, [r5, #0x18]
+ b _0221E4FA
+_0221E4A6:
+ add r0, r6, #0
+ bl MOD08_02218224
+ cmp r0, #0
+ bne _0221E4B8
+ ldrb r0, [r5, #0x18]
+ add r0, r0, #1
+ strb r0, [r5, #0x18]
+ b _0221E4FA
+_0221E4B8:
+ add r0, r6, #0
+ add r1, sp, #0x28
+ add r2, sp, #0x24
+ bl MOD08_0221825C
+ mov r0, #8
+ ldrsb r0, [r4, r0]
+ bl _fflt
+ add r1, r0, #0
+ ldr r0, [sp, #0x28]
+ bl _fmul
+ add r1, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r2, [sp, #0x24]
+ bl FUN_0200C884
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #2
+ ldr r2, [r4, #4]
+ ldrsh r1, [r4, r1]
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #0x1c]
+ ldr r3, [r5, #0x34]
+ asr r2, r2, #0x10
+ bl MOD08_02218314
+ b _0221E4FA
+_0221E4F4:
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+_0221E4FA:
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200C5A8
+ ldr r0, [sp, #0x14]
+ add r5, #0x2c
+ add r0, r0, #1
+ add r7, r7, #1
+ add r6, #0x2c
+ str r0, [sp, #0x14]
+ cmp r0, #3
+ blt _0221E46C
+ ldr r0, [sp, #0x10]
+ cmp r0, #3
+ bge _0221E518
+ b _0221E636
+_0221E518:
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #3
+ bhs _0221E56E
+ mov r6, #0
+ add r5, r4, #0
+ add r7, r6, #0
+_0221E52A:
+ add r1, sp, #0x18
+ ldr r0, [r5, #0x1c]
+ add r1, #2
+ add r2, sp, #0x18
+ bl FUN_0200C7A0
+ add r2, sp, #0x18
+ mov r1, #2
+ ldrsh r1, [r2, r1]
+ mov r2, #2
+ ldrsh r2, [r4, r2]
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200C714
+ mov r0, #8
+ ldrsb r0, [r4, r0]
+ bl _fflt
+ add r1, r0, #0
+ mov r2, #0xfe
+ ldr r0, [r5, #0x1c]
+ lsl r2, r2, #0x16
+ bl FUN_0200C884
+ strb r7, [r5, #0x18]
+ strb r7, [r5, #0x19]
+ add r6, r6, #1
+ add r5, #0x2c
+ cmp r6, #3
+ blt _0221E52A
+ ldrb r0, [r4]
+ sub r0, r0, #1
+ strb r0, [r4]
+ b _0221E636
+_0221E56E:
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221E636
+_0221E576:
+ add r5, r4, #0
+ mov r7, #0
+ add r6, r4, #0
+ add r5, #0x20
+_0221E57E:
+ ldr r0, [r6, #0x1c]
+ mov r1, #0
+ bl FUN_0200C90C
+ mov r0, #0x64
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #5
+ mov r1, #5
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r2, #0x64
+ add r3, r1, #0
+ bl MOD08_022181A8
+ add r7, r7, #1
+ add r6, #0x2c
+ add r5, #0x2c
+ cmp r7, #3
+ blt _0221E57E
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221E636
+_0221E5AE:
+ mov r7, #0
+ add r6, r4, #0
+ str r7, [sp, #0xc]
+ add r6, #0x20
+ add r5, r4, #0
+_0221E5B8:
+ add r0, r6, #0
+ bl MOD08_02218224
+ cmp r0, #0
+ bne _0221E5C6
+ add r7, r7, #1
+ b _0221E600
+_0221E5C6:
+ add r0, r6, #0
+ add r1, sp, #0x20
+ add r2, sp, #0x1c
+ bl MOD08_0221825C
+ mov r0, #8
+ ldrsb r0, [r4, r0]
+ bl _fflt
+ add r1, r0, #0
+ ldr r0, [sp, #0x20]
+ bl _fmul
+ add r1, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r2, [sp, #0x1c]
+ bl FUN_0200C884
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #2
+ ldr r2, [r4, #4]
+ ldrsh r1, [r4, r1]
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #0x1c]
+ ldr r3, [r5, #0x34]
+ asr r2, r2, #0x10
+ bl MOD08_02218314
+_0221E600:
+ ldr r0, [sp, #0xc]
+ add r6, #0x2c
+ add r0, r0, #1
+ add r5, #0x2c
+ str r0, [sp, #0xc]
+ cmp r0, #3
+ blt _0221E5B8
+ cmp r7, #3
+ blt _0221E636
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221E636
+_0221E61A:
+ ldr r0, [r4, #0xc]
+ mov r1, #0xe
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+_0221E636:
+ ldr r0, [r4, #0x14]
+ bl FUN_0200BC1C
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221E640: .word 0x0222C52C
+
+ thumb_func_start MOD08_0221E644
+MOD08_0221E644: ; 0x0221E644
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x9c
+ str r0, [sp]
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ ldr r0, [sp]
+ str r0, [r4, #0x10]
+ bl MOD08_02212504
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x29
+ bl FUN_0200782C
+ mov r1, #2
+ ldrsh r1, [r4, r1]
+ sub r0, r1, r0
+ strh r0, [r4, #2]
+ ldr r0, [r4, #0x10]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD08_0221552C
+ mov r1, #0
+ str r0, [r4, #4]
+ mvn r1, r1
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD08_02227994
+ mov r6, #0
+ ldr r1, _0221E720 ; =0x0000060C
+ ldr r0, _0221E724 ; =0x04000052
+ add r5, r4, #0
+ strh r1, [r0]
+ add r7, r6, #0
+_0221E6B0:
+ strb r7, [r5, #0x18]
+ strb r7, [r5, #0x19]
+ ldr r0, [r4, #0x10]
+ add r1, r6, #0
+ bl MOD08_022124D8
+ str r0, [r5, #0x1c]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r5, #0x1c]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r5, #0x1c]
+ add r1, r6, #1
+ bl FUN_0200C6C4
+ add r6, r6, #1
+ add r5, #0x2c
+ cmp r6, #3
+ blt _0221E6B0
+ ldr r0, [sp]
+ mov r1, #0
+ bl MOD08_02215680
+ cmp r0, #1
+ bne _0221E6EE
+ mov r0, #0
+ mvn r0, r0
+ b _0221E6F0
+_0221E6EE:
+ mov r0, #1
+_0221E6F0:
+ strb r0, [r4, #8]
+ mov r6, #0
+ add r5, r4, #0
+ mov r7, #8
+_0221E6F8:
+ ldrsb r0, [r4, r7]
+ bl _fflt
+ add r1, r0, #0
+ mov r2, #0xfe
+ ldr r0, [r5, #0x1c]
+ lsl r2, r2, #0x16
+ bl FUN_0200C884
+ add r6, r6, #1
+ add r5, #0x2c
+ cmp r6, #3
+ blt _0221E6F8
+ ldr r0, [r4, #0x10]
+ ldr r1, _0221E728 ; =MOD08_0221E428
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221E720: .word 0x0000060C
+_0221E724: .word 0x04000052
+_0221E728: .word MOD08_0221E428
+
+ thumb_func_start MOD08_0221E72C
+MOD08_0221E72C: ; 0x0221E72C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bls _0221E73C
+ b _0221E866
+_0221E73C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221E748: ; jump table
+ .short _0221E750 - _0221E748 - 2 ; case 0
+ .short _0221E782 - _0221E748 - 2 ; case 1
+ .short _0221E796 - _0221E748 - 2 ; case 2
+ .short _0221E7F2 - _0221E748 - 2 ; case 3
+_0221E750:
+ ldr r0, [r4, #0xc]
+ bl MOD08_02215504
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD08_02214540
+ add r2, r0, #0
+ mov r1, #0
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #1
+ add r0, r5, #0
+ lsr r2, r2, #0x10
+ add r3, r1, #0
+ bl FUN_02003210
+ ldrb r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0221E782:
+ ldr r0, [r4, #0xc]
+ bl MOD08_02215504
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _0221E874
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221E796:
+ mov r0, #5
+ str r0, [sp]
+ ldrb r1, [r4, #1]
+ add r0, r4, #0
+ add r0, #0xb4
+ lsl r2, r1, #1
+ ldr r1, _0221E878 ; =0x0222C586
+ ldrsh r1, [r1, r2]
+ mov r2, #0
+ add r3, r2, #0
+ bl MOD08_022183C0
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ ldr r0, [r4, #0xc]
+ bne _0221E7C8
+ bl MOD08_02215504
+ mov r1, #0
+ mov r2, #0xff
+ mov r3, #0xa
+ str r1, [sp]
+ bl FUN_02003A64
+ b _0221E7DA
+_0221E7C8:
+ bl MOD08_02215504
+ ldr r1, _0221E87C ; =0x00007FFF
+ mov r2, #0xff
+ str r1, [sp]
+ mov r1, #0
+ mov r3, #0xa
+ bl FUN_02003A64
+_0221E7DA:
+ mov r0, #3
+ strb r0, [r4, #3]
+ ldrb r1, [r4, #2]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #2]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221E7F2:
+ add r0, r4, #0
+ add r0, #0xb4
+ bl MOD08_022183F0
+ cmp r0, #0
+ bne _0221E810
+ ldrb r0, [r4, #1]
+ cmp r0, #8
+ ldrb r0, [r4]
+ blo _0221E80C
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221E810
+_0221E80C:
+ sub r0, r0, #1
+ strb r0, [r4]
+_0221E810:
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ beq _0221E832
+ sub r0, r0, #1
+ strb r0, [r4, #3]
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ bne _0221E832
+ ldr r0, [r4, #0xc]
+ bl MOD08_02215504
+ mov r1, #0
+ mov r2, #0xff
+ add r3, r1, #0
+ str r1, [sp]
+ bl FUN_02003A64
+_0221E832:
+ mov r6, #0
+ add r5, r4, #0
+ mov r7, #0x14
+_0221E838:
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _0221E84C
+ mov r2, #0xb4
+ ldrsh r3, [r4, r2]
+ ldrsh r2, [r5, r7]
+ mov r1, #0
+ add r2, r3, r2
+ bl FUN_02007558
+_0221E84C:
+ add r6, r6, #1
+ add r5, #0x14
+ cmp r6, #4
+ blt _0221E838
+ mov r3, #0xb4
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #8]
+ mov r1, #3
+ mov r2, #0
+ bl FUN_020179E0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0221E866:
+ ldr r0, [r4, #0xc]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221E874:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221E878: .word 0x0222C586
+_0221E87C: .word 0x00007FFF
+
+ thumb_func_start MOD08_0221E880
+MOD08_0221E880: ; 0x0221E880
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0xd8
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ str r5, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ bl MOD08_02212490
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _0221E8B2
+ mov r1, #0x40
+ b _0221E8B4
+_0221E8B2:
+ mov r1, #0xa
+_0221E8B4:
+ add r2, r4, #0
+ add r0, r5, #0
+ add r2, #0x14
+ add r3, r4, #4
+ bl MOD08_02227BAC
+ ldr r0, [r4, #4]
+ mov r6, #0
+ cmp r0, #0
+ ble _0221E8EA
+ add r5, r4, #0
+ add r7, r6, #0
+_0221E8CC:
+ ldr r0, [r5, #0x1c]
+ add r1, r7, #0
+ bl FUN_0200782C
+ strh r0, [r5, #0x14]
+ ldr r0, [r5, #0x1c]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r5, #0x16]
+ ldr r0, [r4, #4]
+ add r6, r6, #1
+ add r5, #0x14
+ cmp r6, r0
+ blt _0221E8CC
+_0221E8EA:
+ ldr r0, [r4, #0xc]
+ ldr r1, _0221E8F8 ; =MOD08_0221E72C
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221E8F8: .word MOD08_0221E72C
+
+ thumb_func_start MOD08_0221E8FC
+MOD08_0221E8FC: ; 0x0221E8FC
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ bne _0221E946
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _0221E91A
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221E91A:
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD08_022183F0
+ add r0, r4, #0
+ add r0, #0x64
+ bl MOD08_02218704
+ mov r1, #0x40
+ mov r2, #0x42
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x18]
+ bl FUN_0200C714
+ ldr r0, [r4, #0x18]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x10]
+ bl FUN_0200BC1C
+ pop {r4, pc}
+_0221E946:
+ ldr r0, [r4, #0xc]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221E958
+MOD08_0221E958: ; 0x0221E958
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r1, #0x8c
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ str r5, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ bl MOD08_02212490
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x18]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ldr r0, [r4, #0xc]
+ bne _0221E99C
+ bl MOD08_02212460
+ b _0221E9A0
+_0221E99C:
+ bl MOD08_02212458
+_0221E9A0:
+ add r6, r0, #0
+ ldr r0, [r4, #0xc]
+ add r1, r6, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0x14]
+ add r1, r4, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4, #0x14]
+ mov r1, #0x29
+ bl FUN_0200782C
+ mov r1, #6
+ ldrsh r1, [r4, r1]
+ sub r0, r1, r0
+ strh r0, [r4, #6]
+ ldr r0, [r4, #0xc]
+ add r1, r6, #0
+ bl MOD08_02217C1C
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ add r1, r6, #0
+ bl MOD08_02217C44
+ add r6, r0, #0
+ mov r0, #6
+ ldrsh r3, [r4, r0]
+ mov r0, #4
+ ldrsh r1, [r4, r0]
+ mov r2, #0x14
+ add r0, r6, #0
+ mul r0, r2
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ str r2, [sp, #4]
+ sub r2, #0x28
+ mul r2, r7
+ add r2, r1, r2
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ add r0, #0x40
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_022155C4
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_022155C4
+ mov r5, #1
+ add r3, r5, #0
+ lsl r3, r6
+ add r1, r0, #0
+ add r6, r3, #0
+ mov r2, #0x20
+ add r3, r5, #0
+ orr r6, r2
+ lsl r3, r1
+ add r1, r6, #0
+ orr r1, r3
+ sub r2, #0x21
+ ldr r0, [r4, #0xc]
+ orr r1, r5
+ add r3, r2, #0
+ bl MOD08_022279D0
+ mov r1, #0x1f
+ mov r2, #0
+ str r1, [sp]
+ mov r0, #0xf
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x64
+ add r3, r2, #0
+ bl MOD08_022186D4
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_0200C90C
+ ldr r0, [r4, #0xc]
+ ldr r1, _0221EA60 ; =MOD08_0221E8FC
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221EA60: .word MOD08_0221E8FC
+
+ thumb_func_start MOD08_0221EA64
+MOD08_0221EA64: ; 0x0221EA64
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221EA76
+ cmp r0, #1
+ beq _0221EAB6
+ b _0221EAE6
+_0221EA76:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ ldrb r0, [r4, #2]
+ bne _0221EA88
+ lsl r3, r0, #3
+ ldr r0, _0221EB00 ; =0x0222C5B0
+ ldr r2, [r0, r3]
+ neg r1, r2
+ b _0221EA90
+_0221EA88:
+ lsl r3, r0, #3
+ ldr r0, _0221EB00 ; =0x0222C5B0
+ ldr r1, [r0, r3]
+ neg r2, r1
+_0221EA90:
+ ldr r5, _0221EB04 ; =0x0222C5B4
+ add r0, r4, #0
+ ldr r3, [r5, r3]
+ add r0, #0x5c
+ bl MOD08_02218008
+ ldrb r0, [r4, #1]
+ cmp r0, #1
+ bne _0221EAA8
+ ldrb r0, [r4, #2]
+ add r0, r0, #1
+ strb r0, [r4, #2]
+_0221EAA8:
+ ldrb r1, [r4, #1]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #1]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221EAB6:
+ add r0, r4, #0
+ add r0, #0x5c
+ bl MOD08_02218058
+ cmp r0, #1
+ bne _0221EAD2
+ ldr r2, [r4, #0x5c]
+ ldr r0, [r4, #0x28]
+ lsl r2, r2, #0x10
+ mov r1, #9
+ lsr r2, r2, #0x10
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_0221EAD2:
+ ldrb r0, [r4, #2]
+ cmp r0, #5
+ ldrb r0, [r4]
+ blo _0221EAE0
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_0221EAE0:
+ sub r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_0221EAE6:
+ ldr r0, [r4, #0x28]
+ mov r1, #9
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221EB00: .word 0x0222C5B0
+_0221EB04: .word 0x0222C5B4
+
+ thumb_func_start MOD08_0221EB08
+MOD08_0221EB08: ; 0x0221EB08
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221EB1C
+ cmp r0, #1
+ beq _0221EB40
+ b _0221EB6A
+_0221EB1C:
+ mov r0, #0x22
+ ldrsh r0, [r4, r0]
+ mov r1, #0x1c
+ mov r2, #0x1e
+ str r0, [sp]
+ mov r3, #0x20
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ add r0, #0x38
+ bl MOD08_022183C0
+ ldrb r0, [r4]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, pc}
+_0221EB40:
+ ldr r0, [r4, #0x2c]
+ add r1, sp, #4
+ bl MOD08_02227B2C
+ add r0, r4, #0
+ add r3, sp, #4
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r3, [r4, #0x2c]
+ add r0, #0x38
+ bl MOD08_02218454
+ cmp r0, #0
+ bne _0221EB78
+ ldrb r0, [r4]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r4, pc}
+_0221EB6A:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221EB78:
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD08_0221EB7C
+MOD08_0221EB7C: ; 0x0221EB7C
+ push {r4, r5, r6, lr}
+ mov r1, #0x70
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x2c]
+ ldr r0, [r4, #0x28]
+ mov r1, #0xb
+ mov r2, #0x64
+ bl FUN_02007558
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ strh r0, [r4, #0x1c]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_02212498
+ strh r0, [r4, #0x1e]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD08_02212498
+ strh r0, [r4, #0x20]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD08_02212498
+ strh r0, [r4, #0x22]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD08_02212498
+ str r0, [r4, #0x24]
+ cmp r6, #0
+ ldr r0, [r4, #4]
+ bne _0221EC06
+ ldr r1, _0221EC10 ; =MOD08_0221EA64
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+_0221EC06:
+ ldr r1, _0221EC14 ; =MOD08_0221EB08
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0221EC10: .word MOD08_0221EA64
+_0221EC14: .word MOD08_0221EB08
+
+ thumb_func_start MOD08_0221EC18
+MOD08_0221EC18: ; 0x0221EC18
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r5]
+ cmp r0, #0
+ beq _0221EC2A
+ cmp r0, #1
+ beq _0221EC4C
+ b _0221ECA0
+_0221EC2A:
+ ldr r2, [r5, #0x48]
+ mov r0, #0xa
+ add r1, r2, #2
+ str r0, [sp]
+ add r0, r5, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, #0x4c
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ mov r3, #0
+ bl MOD08_022183C0
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_0221EC4C:
+ add r0, r5, #0
+ add r0, #0x4c
+ bl MOD08_022183F0
+ cmp r0, #0
+ bne _0221EC60
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_0221EC60:
+ mov r6, #0
+ add r4, r5, #0
+ mov r7, #0x28
+_0221EC66:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ beq _0221EC7A
+ mov r2, #0x4c
+ ldrsh r3, [r5, r2]
+ ldrsh r2, [r4, r7]
+ mov r1, #0
+ add r2, r3, r2
+ bl FUN_02007558
+_0221EC7A:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _0221EC66
+ mov r3, #0x4c
+ ldrsh r3, [r5, r3]
+ ldr r0, [r5, #0x14]
+ mov r1, #3
+ mov r2, #0
+ bl FUN_020179E0
+ mov r3, #0x4e
+ mov r1, #3
+ ldrsh r3, [r5, r3]
+ ldr r0, [r5, #0x14]
+ add r2, r1, #0
+ bl FUN_020179E0
+ pop {r3, r4, r5, r6, r7, pc}
+_0221ECA0:
+ ldr r0, [r5, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0221ECB0
+MOD08_0221ECB0: ; 0x0221ECB0
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x70
+ add r4, r0, #0
+ bl MOD08_02228064
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD08_02227B70
+ ldr r0, [r7, #4]
+ mov r1, #1
+ bl MOD08_02212758
+ cmp r0, #0x46
+ bgt _0221ECE0
+ bge _0221ED02
+ cmp r0, #0x1e
+ bgt _0221ECDA
+ beq _0221ED0E
+ b _0221ED14
+_0221ECDA:
+ cmp r0, #0x32
+ beq _0221ED08
+ b _0221ED14
+_0221ECE0:
+ cmp r0, #0x6e
+ bgt _0221ECEC
+ bge _0221ECF6
+ cmp r0, #0x5a
+ beq _0221ECFC
+ b _0221ED14
+_0221ECEC:
+ cmp r0, #0x96
+ bne _0221ED14
+ mov r0, #6
+ str r0, [r7, #0x48]
+ b _0221ED18
+_0221ECF6:
+ mov r0, #5
+ str r0, [r7, #0x48]
+ b _0221ED18
+_0221ECFC:
+ mov r0, #4
+ str r0, [r7, #0x48]
+ b _0221ED18
+_0221ED02:
+ mov r0, #3
+ str r0, [r7, #0x48]
+ b _0221ED18
+_0221ED08:
+ mov r0, #2
+ str r0, [r7, #0x48]
+ b _0221ED18
+_0221ED0E:
+ mov r0, #1
+ str r0, [r7, #0x48]
+ b _0221ED18
+_0221ED14:
+ mov r0, #0
+ str r0, [r7, #0x48]
+_0221ED18:
+ add r5, r7, #0
+ mov r6, #0
+ add r4, r7, #0
+ add r5, #0x28
+_0221ED20:
+ ldr r0, [r7, #4]
+ add r1, r6, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0x38]
+ cmp r0, #0
+ beq _0221ED34
+ add r1, r5, #0
+ bl MOD08_02227B2C
+_0221ED34:
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #4
+ blt _0221ED20
+ ldr r0, [r7, #4]
+ ldr r1, _0221ED4C ; =MOD08_0221EC18
+ add r2, r7, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221ED4C: .word MOD08_0221EC18
+
+ thumb_func_start MOD08_0221ED50
+MOD08_0221ED50: ; 0x0221ED50
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0221ED64
+ cmp r0, #1
+ beq _0221ED92
+ b _0221EE00
+_0221ED64:
+ mov r0, #0xa
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x40
+ mov r1, #0x14
+ add r3, r2, #0
+ bl MOD08_022183C0
+ mov r0, #0xa
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x64
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD08_022183C0
+ ldrb r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, pc}
+_0221ED92:
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD08_022183F0
+ cmp r0, #0
+ bne _0221EDA6
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221EDF6
+_0221EDA6:
+ mov r1, #0x2c
+ ldrsh r2, [r4, r1]
+ mov r1, #0x40
+ ldrsh r1, [r4, r1]
+ ldr r0, [r4, #0x38]
+ add r1, r2, r1
+ mov r2, #0x2e
+ ldrsh r3, [r4, r2]
+ mov r2, #0x42
+ ldrsh r2, [r4, r2]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r1, #0x40
+ ldrsh r2, [r4, r1]
+ mov r1, #0x2c
+ ldrsh r1, [r4, r1]
+ ldr r0, [r4, #0x3c]
+ sub r1, r2, r1
+ mov r2, #0x2e
+ ldrsh r3, [r4, r2]
+ mov r2, #0x42
+ ldrsh r2, [r4, r2]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [r4, #0x38]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x3c]
+ bl FUN_0200C5A8
+_0221EDF6:
+ ldr r0, [r4, #0xc]
+ bl FUN_0200BC1C
+ add sp, #4
+ pop {r3, r4, pc}
+_0221EE00:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221EE14
+MOD08_0221EE14: ; 0x0221EE14
+ push {r3, r4, r5, lr}
+ mov r1, #0x88
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD08_022124D8
+ str r0, [r4, #0x3c]
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x30]
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x34]
+ add r1, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0x28
+ bl MOD08_02227B2C
+ add r1, r4, #0
+ ldr r0, [r4, #0x34]
+ add r1, #0x2c
+ bl MOD08_02227B2C
+ ldr r0, [r4, #4]
+ ldr r1, _0221EE7C ; =MOD08_0221ED50
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221EE7C: .word MOD08_0221ED50
+
+ thumb_func_start MOD08_0221EE80
+MOD08_0221EE80: ; 0x0221EE80
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ ldr r2, [r4, #0x38]
+ add r0, #0x8c
+ add r1, #0xb0
+ bl MOD08_02217FE4
+ cmp r0, #0
+ bne _0221EEAC
+ ldr r0, [r4, #0x38]
+ bl FUN_0200C3DC
+ ldr r0, [r4, #0x14]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl MOD08_02228094
+ pop {r3, r4, r5, pc}
+_0221EEAC:
+ add r0, r4, #0
+ add r0, #0xd4
+ bl MOD08_02218058
+ cmp r0, #1
+ bne _0221EEC8
+ add r1, r4, #0
+ add r1, #0xd4
+ ldr r1, [r1]
+ ldr r0, [r4, #0x38]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0200C898
+_0221EEC8:
+ ldr r0, [r4, #0x38]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x20]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221EED8
+MOD08_0221EED8: ; 0x0221EED8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r1, #0xe8
+ add r6, r0, #0
+ add r7, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r6, #0
+ add r1, #0x10
+ bl MOD08_02227B70
+ add r0, r6, #0
+ mov r1, #0
+ bl MOD08_02212498
+ strh r0, [r4, #0xc]
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD08_02212498
+ strh r0, [r4, #0xe]
+ add r0, r6, #0
+ mov r1, #2
+ bl MOD08_02212498
+ str r0, [r4, #4]
+ add r0, r6, #0
+ mov r1, #3
+ bl MOD08_02212498
+ str r0, [r4, #8]
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02217C1C
+ add r5, r0, #0
+ add r0, r7, #0
+ mov r1, #2
+ str r7, [r4, #0x38]
+ bl FUN_0200C840
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0x44]
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0x58]
+ add r1, r4, #0
+ ldr r0, [r4, #0x44]
+ add r1, #0x40
+ bl MOD08_02227B2C
+ add r1, r4, #0
+ ldr r0, [r4, #0x58]
+ add r1, #0x54
+ bl MOD08_02227B2C
+ mov r0, #0x42
+ ldrsh r0, [r4, r0]
+ mov r3, #0x54
+ str r0, [sp]
+ mov r0, #0x56
+ ldrsh r2, [r4, r0]
+ mov r0, #0xe
+ ldrsh r0, [r4, r0]
+ add r1, r0, #0
+ mul r1, r5
+ add r0, r2, r1
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r4, #4]
+ add r1, r4, #0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r0, [r4, #8]
+ mov r2, #0x40
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldrsh r3, [r4, r3]
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ mov ip, r3
+ mov r3, #0xc
+ ldrsh r3, [r4, r3]
+ add r0, #0x8c
+ add r1, #0xb0
+ add r7, r3, #0
+ mul r7, r5
+ mov r3, ip
+ add r3, r3, r7
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217F50
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02215490
+ cmp r0, #4
+ bne _0221EFE0
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02215490
+ cmp r0, #2
+ bne _0221EFE0
+ mov r0, #0
+ mvn r0, r0
+ mul r5, r0
+_0221EFE0:
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02215490
+ cmp r0, #5
+ bne _0221F00A
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02215490
+ cmp r0, #3
+ bne _0221F00A
+ mov r0, #0
+ mvn r0, r0
+ mul r5, r0
+_0221F00A:
+ cmp r5, #0
+ ldr r2, _0221F064 ; =0x00005C71
+ ble _0221F022
+ ldr r1, _0221F068 ; =0x00000E38
+ add r0, r4, #0
+ add r0, #0xd4
+ mul r1, r5
+ mul r2, r5
+ mov r3, #0xa
+ bl MOD08_02218008
+ b _0221F032
+_0221F022:
+ ldr r1, _0221F06C ; =0x00003FFF
+ add r0, r4, #0
+ add r0, #0xd4
+ mul r1, r5
+ mul r2, r5
+ mov r3, #0xa
+ bl MOD08_02218008
+_0221F032:
+ add r1, r4, #0
+ add r1, #0xd4
+ ldr r1, [r1]
+ ldr r0, [r4, #0x38]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0200C898
+ add r0, r4, #0
+ add r1, r4, #0
+ ldr r2, [r4, #0x38]
+ add r0, #0x8c
+ add r1, #0xb0
+ bl MOD08_02217FE4
+ ldr r0, [r4, #0x38]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x14]
+ ldr r1, _0221F070 ; =MOD08_0221EE80
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221F064: .word 0x00005C71
+_0221F068: .word 0x00000E38
+_0221F06C: .word 0x00003FFF
+_0221F070: .word MOD08_0221EE80
+
+ thumb_func_start MOD08_0221F074
+MOD08_0221F074: ; 0x0221F074
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x18]
+ cmp r0, #3
+ bls _0221F084
+ b _0221F1F0
+_0221F084:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221F090: ; jump table
+ .short _0221F098 - _0221F090 - 2 ; case 0
+ .short _0221F0C8 - _0221F090 - 2 ; case 1
+ .short _0221F168 - _0221F090 - 2 ; case 2
+ .short _0221F17A - _0221F090 - 2 ; case 3
+_0221F098:
+ mov r0, #0x12
+ ldrsh r2, [r4, r0]
+ mov r0, #0x96
+ mov r3, #0x3c
+ str r0, [sp]
+ mov r1, #0x64
+ str r1, [sp, #4]
+ mov r0, #0xc
+ mul r1, r2
+ mul r3, r2
+ lsl r2, r3, #0x10
+ str r0, [sp, #8]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ add r0, #0x9c
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ mov r3, #5
+ bl MOD08_022181A8
+ ldrb r0, [r4, #0x18]
+ add r0, r0, #1
+ strb r0, [r4, #0x18]
+ b _0221F20E
+_0221F0C8:
+ add r0, r4, #0
+ add r0, #0x9c
+ bl MOD08_02218224
+ cmp r0, #0
+ bne _0221F106
+ mov r0, #0x12
+ ldrsh r2, [r4, r0]
+ mov r0, #0xa
+ mov r1, #0x3c
+ str r0, [sp]
+ mov r0, #0x64
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mul r1, r2
+ str r0, [sp, #8]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ mov r3, #0x96
+ add r5, r2, #0
+ mul r5, r3
+ lsl r2, r5, #0x10
+ add r0, #0x9c
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_022181A8
+ ldrb r0, [r4, #0x18]
+ add r0, r0, #1
+ strb r0, [r4, #0x18]
+ b _0221F20E
+_0221F106:
+ add r0, r4, #0
+ add r0, #0x9c
+ add r1, sp, #0x18
+ add r2, sp, #0x14
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x40]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ bl FUN_0200C884
+ mov r0, #0x16
+ add r2, r4, #0
+ add r2, #0xb0
+ ldrsh r0, [r4, r0]
+ ldr r2, [r2]
+ mov r1, #0x10
+ bl MOD08_0221828C
+ mov r2, #0x16
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ mov r1, #0x14
+ ldrsh r1, [r4, r1]
+ add r2, r2, r3
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0x40]
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldrb r1, [r4, #0xc]
+ ldrb r0, [r4, #0x10]
+ cmp r1, r0
+ bhs _0221F14E
+ add r0, r1, #1
+ strb r0, [r4, #0xc]
+_0221F14E:
+ ldrb r1, [r4, #0xd]
+ ldrb r0, [r4, #0x11]
+ cmp r1, r0
+ bls _0221F15A
+ sub r0, r1, #1
+ strb r0, [r4, #0xd]
+_0221F15A:
+ ldrb r0, [r4, #0xd]
+ ldrb r1, [r4, #0xc]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221F220 ; =0x04000052
+ strh r1, [r0]
+ b _0221F20E
+_0221F168:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ cmp r0, #4
+ blt _0221F20E
+ ldrb r0, [r4, #0x18]
+ add r0, r0, #1
+ strb r0, [r4, #0x18]
+ b _0221F20E
+_0221F17A:
+ add r0, r4, #0
+ add r0, #0x9c
+ bl MOD08_02218224
+ cmp r0, #0
+ bne _0221F18E
+ ldrb r0, [r4, #0x18]
+ add r0, r0, #1
+ strb r0, [r4, #0x18]
+ b _0221F20E
+_0221F18E:
+ add r0, r4, #0
+ add r0, #0x9c
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x40]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ bl FUN_0200C884
+ mov r0, #0x16
+ add r2, r4, #0
+ add r2, #0xb0
+ ldrsh r0, [r4, r0]
+ ldr r2, [r2]
+ mov r1, #0x10
+ bl MOD08_0221828C
+ mov r2, #0x16
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ mov r1, #0x14
+ ldrsh r1, [r4, r1]
+ add r2, r2, r3
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0x40]
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldrb r1, [r4, #0xc]
+ ldrb r0, [r4, #0xe]
+ cmp r1, r0
+ bls _0221F1D6
+ sub r0, r1, #1
+ strb r0, [r4, #0xc]
+_0221F1D6:
+ ldrb r1, [r4, #0xd]
+ ldrb r0, [r4, #0xf]
+ cmp r1, r0
+ bhs _0221F1E2
+ add r0, r1, #1
+ strb r0, [r4, #0xd]
+_0221F1E2:
+ ldrb r0, [r4, #0xd]
+ ldrb r1, [r4, #0xc]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221F220 ; =0x04000052
+ strh r1, [r0]
+ b _0221F20E
+_0221F1F0:
+ ldr r0, [r4, #0x44]
+ bl FUN_0200C3DC
+ ldr r0, [r4, #0x48]
+ bl FUN_0200C3DC
+ ldr r0, [r4, #0x1c]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl MOD08_02228094
+ add sp, #0x1c
+ pop {r4, r5, pc}
+_0221F20E:
+ ldr r0, [r4, #0x40]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x28]
+ bl FUN_0200BC1C
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ nop
+_0221F220: .word 0x04000052
+
+ thumb_func_start MOD08_0221F224
+MOD08_0221F224: ; 0x0221F224
+ push {r4, r5, lr}
+ sub sp, #0x14
+ mov r1, #0xd4
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x18
+ bl MOD08_02227B70
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_022124B0
+ str r0, [r4, #0x44]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_022124B0
+ mov r1, #0
+ str r0, [r4, #0x48]
+ mvn r1, r1
+ ldr r0, [r4, #0x1c]
+ add r2, r1, #0
+ bl MOD08_02227994
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ mov r1, #0
+ strb r1, [r4, #0xc]
+ mov r0, #0x1f
+ strb r0, [r4, #0xd]
+ strb r1, [r4, #0xe]
+ strb r0, [r4, #0xf]
+ strb r0, [r4, #0x10]
+ mov r0, #4
+ strb r0, [r4, #0x11]
+ add r0, r5, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _0221F2B4
+ ldr r0, [r4, #0x44]
+ mov r1, #0
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0x48]
+ bl FUN_0200C644
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl FUN_0200C5C0
+ mov r0, #0xb3
+ strh r0, [r4, #0x14]
+ mov r0, #0x78
+ strh r0, [r4, #0x16]
+ add r0, r5, #0
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r4, #0x40]
+ add r1, r1, #1
+ bl FUN_0200C6B0
+ mov r0, #0
+ mvn r0, r0
+ strh r0, [r4, #0x12]
+ b _0221F314
+_0221F2B4:
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _0221F2E4
+ ldr r0, [r4, #0x48]
+ mov r1, #0
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0x44]
+ bl FUN_0200C644
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl FUN_0200C5C0
+ mov r0, #0x90
+ strh r0, [r4, #0x14]
+ mov r0, #0x40
+ strh r0, [r4, #0x16]
+ b _0221F310
+_0221F2E4:
+ ldr r0, [r4, #0x44]
+ mov r1, #0
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0x48]
+ bl FUN_0200C644
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl FUN_0200C5C0
+ mov r0, #0x4c
+ strh r0, [r4, #0x14]
+ mov r0, #0x78
+ strh r0, [r4, #0x16]
+ add r0, r5, #0
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r4, #0x40]
+ add r1, r1, #1
+ bl FUN_0200C6B0
+_0221F310:
+ mov r0, #1
+ strh r0, [r4, #0x12]
+_0221F314:
+ mov r1, #0x14
+ mov r2, #0x16
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x40]
+ bl FUN_0200C714
+ ldr r0, [r4, #0x40]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl FUN_0200C90C
+ mov r0, #0x12
+ ldrsh r0, [r4, r0]
+ mov r3, #0x64
+ add r1, r0, #0
+ mov r0, #5
+ str r0, [sp]
+ mul r1, r3
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ str r3, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x9c
+ add r2, r1, #0
+ bl MOD08_022181A8
+ add r0, r4, #0
+ add r0, #0x9c
+ bl MOD08_02218224
+ add r0, r4, #0
+ add r0, #0x9c
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x40]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ bl FUN_0200C884
+ mov r0, #0x16
+ add r2, r4, #0
+ add r2, #0xb0
+ ldrsh r0, [r4, r0]
+ ldr r2, [r2]
+ mov r1, #0x10
+ bl MOD08_0221828C
+ mov r2, #0x16
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ mov r1, #0x14
+ ldrsh r1, [r4, r1]
+ add r2, r2, r3
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0x40]
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [r4, #0x1c]
+ ldr r1, _0221F3A8 ; =MOD08_0221F074
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_0221F3A8: .word MOD08_0221F074
+
+ thumb_func_start MOD08_0221F3AC
+MOD08_0221F3AC: ; 0x0221F3AC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r4, r1, #0
+ str r0, [sp, #0x10]
+ ldrb r0, [r4]
+ cmp r0, #8
+ bls _0221F3BC
+ b _0221F710
+_0221F3BC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221F3C8: ; jump table
+ .short _0221F3DA - _0221F3C8 - 2 ; case 0
+ .short _0221F412 - _0221F3C8 - 2 ; case 1
+ .short _0221F46C - _0221F3C8 - 2 ; case 2
+ .short _0221F486 - _0221F3C8 - 2 ; case 3
+ .short _0221F4BA - _0221F3C8 - 2 ; case 4
+ .short _0221F53E - _0221F3C8 - 2 ; case 5
+ .short _0221F5D0 - _0221F3C8 - 2 ; case 6
+ .short _0221F66E - _0221F3C8 - 2 ; case 7
+ .short _0221F6B6 - _0221F3C8 - 2 ; case 8
+_0221F3DA:
+ ldrb r1, [r4, #0xc]
+ ldr r2, _0221F6F4 ; =0x0222C569
+ ldr r5, _0221F6F8 ; =0x0222C56A
+ lsl r0, r1, #2
+ add r3, r1, r0
+ ldr r0, _0221F6FC ; =0x0222C56B
+ ldr r1, _0221F700 ; =0x0222C568
+ ldrb r0, [r0, r3]
+ ldrb r1, [r1, r3]
+ ldrb r2, [r2, r3]
+ str r0, [sp]
+ mov r0, #0x64
+ str r0, [sp, #4]
+ ldr r0, _0221F704 ; =0x0222C56C
+ ldrb r0, [r0, r3]
+ ldrb r3, [r5, r3]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0xcc
+ bl MOD08_022181A8
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+_0221F412:
+ add r0, r4, #0
+ add r0, #0xcc
+ bl MOD08_02218224
+ cmp r0, #1
+ bne _0221F458
+ mov r2, #0xcc
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r2, #0xce
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xd
+ bl FUN_02007558
+ mov r0, #0x20
+ add r2, r4, #0
+ add r2, #0xe0
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #0x24]
+ ldr r2, [r2]
+ bl MOD08_0221828C
+ mov r2, #0x20
+ add r3, r0, #0
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r2, r2, r3
+ bl FUN_02007558
+ b _0221F74A
+_0221F458:
+ ldrb r0, [r4, #0xc]
+ cmp r0, #3
+ ldrb r0, [r4]
+ blo _0221F466
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+_0221F466:
+ sub r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+_0221F46C:
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #0xf
+ blo _0221F54A
+ mov r0, #0
+ strb r0, [r4, #1]
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+_0221F486:
+ add r1, sp, #0x2c
+ ldr r0, [r4, #0x30]
+ add r1, #2
+ add r2, sp, #0x2c
+ bl FUN_0200C7A0
+ add r1, sp, #0x14
+ mov r0, #0x18
+ ldrsh r0, [r1, r0]
+ cmp r0, #0x68
+ bgt _0221F4B2
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ mov r2, #2
+ bl FUN_0200C82C
+ ldr r0, [r4, #0x7c]
+ mov r1, #0
+ mov r2, #2
+ bl FUN_0200C82C
+ b _0221F74A
+_0221F4B2:
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+_0221F4BA:
+ add r1, sp, #0x28
+ ldr r0, [r4, #0x30]
+ add r1, #2
+ add r2, sp, #0x28
+ bl FUN_0200C7A0
+ add r1, sp, #0x14
+ mov r0, #0x14
+ ldrsh r0, [r1, r0]
+ cmp r0, #0x68
+ bgt _0221F4E6
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ mov r2, #2
+ bl FUN_0200C82C
+ ldr r0, [r4, #0x7c]
+ mov r1, #0
+ mov r2, #2
+ bl FUN_0200C82C
+ b _0221F4F2
+_0221F4E6:
+ ldr r0, _0221F708 ; =0x04000052
+ mov r1, #0x10
+ strh r1, [r0]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221F4F2:
+ ldrb r0, [r4, #1]
+ mov r1, #0x10
+ add r2, r1, #0
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ add r0, r4, #4
+ bl MOD08_02218A58
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #8
+ sub r2, #0x10
+ bl MOD08_02218A58
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #4]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221F708 ; =0x04000052
+ strh r1, [r0]
+ ldrb r0, [r4, #1]
+ cmp r0, #0xa
+ bne _0221F52C
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ mov r2, #0x10
+ bl FUN_0200C82C
+_0221F52C:
+ ldrb r0, [r4, #1]
+ cmp r0, #0xc
+ bne _0221F54A
+ ldr r0, [r4, #0x7c]
+ mov r1, #0
+ mov r2, #0x10
+ bl FUN_0200C82C
+ b _0221F74A
+_0221F53E:
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #0xf
+ bhs _0221F54C
+_0221F54A:
+ b _0221F74A
+_0221F54C:
+ mov r0, #0
+ strb r0, [r4, #1]
+ add r1, sp, #0x24
+ ldr r0, [r4, #0x30]
+ add r1, #2
+ add r2, sp, #0x24
+ bl FUN_0200C7A0
+ add r1, sp, #0x20
+ ldr r0, [r4, #0x7c]
+ add r1, #2
+ add r2, sp, #0x20
+ bl FUN_0200C7A0
+ add r0, r4, #0
+ add r0, #0xc8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0xca
+ str r0, [sp, #4]
+ add r3, sp, #0x14
+ mov r0, #0x12
+ mov r1, #0x10
+ mov r2, #0xe
+ mov r5, #0xc
+ ldrsh r0, [r3, r0]
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldrsh r3, [r3, r5]
+ bl MOD08_022189D8
+ add r0, r4, #0
+ add r0, #0x2c
+ str r0, [sp]
+ mov r3, #0xca
+ add r2, sp, #0x14
+ mov r0, #0x12
+ mov r1, #0x10
+ ldrsh r0, [r2, r0]
+ ldrsh r1, [r2, r1]
+ mov r2, #0xc8
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ bl MOD08_022189F4
+ add r0, r4, #0
+ add r0, #0x28
+ str r0, [sp]
+ mov r3, #0xca
+ add r2, sp, #0x14
+ mov r0, #0x12
+ mov r1, #0x10
+ ldrsh r0, [r2, r0]
+ ldrsh r1, [r2, r1]
+ mov r2, #0xc8
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ bl MOD08_02218A1C
+ mov r0, #0xa
+ lsl r0, r0, #0xe
+ str r0, [r4, #0x2c]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+_0221F5D0:
+ ldr r3, _0221F70C ; =0x0222C545
+ add r2, sp, #0x30
+ mov r1, #0xa
+_0221F5D6:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _0221F5D6
+ add r1, sp, #0x1c
+ ldr r0, [r4, #0x30]
+ add r1, #2
+ add r2, sp, #0x1c
+ bl FUN_0200C7A0
+ add r1, sp, #0x18
+ ldr r0, [r4, #0x7c]
+ add r1, #2
+ add r2, sp, #0x18
+ bl FUN_0200C7A0
+ add r3, sp, #0x14
+ mov r0, #8
+ ldrsh r0, [r3, r0]
+ mov r2, #0xa
+ str r0, [sp]
+ mov r0, #4
+ ldrsh r0, [r3, r0]
+ str r0, [sp, #4]
+ str r2, [sp, #8]
+ ldrb r1, [r4, #0xc]
+ ldr r0, [r4, #0x2c]
+ lsl r5, r1, #1
+ add r1, sp, #0x30
+ ldrsb r1, [r1, r5]
+ mov r5, #6
+ mul r1, r0
+ str r1, [sp, #0xc]
+ ldrsh r2, [r3, r2]
+ add r0, r4, #0
+ add r1, r4, #0
+ ldrsh r3, [r3, r5]
+ add r0, #0x34
+ add r1, #0x58
+ bl MOD08_02217F50
+ add r3, sp, #0x14
+ mov r0, #4
+ ldrsh r0, [r3, r0]
+ mov r5, #0xa
+ str r0, [sp]
+ mov r0, #8
+ ldrsh r0, [r3, r0]
+ str r0, [sp, #4]
+ str r5, [sp, #8]
+ ldrb r1, [r4, #0xc]
+ ldr r0, [r4, #0x2c]
+ lsl r2, r1, #1
+ add r1, sp, #0x30
+ add r1, #1
+ ldrsb r1, [r1, r2]
+ mov r2, #6
+ mul r1, r0
+ str r1, [sp, #0xc]
+ ldrsh r2, [r3, r2]
+ add r0, r4, #0
+ add r1, r4, #0
+ ldrsh r3, [r3, r5]
+ add r0, #0x80
+ add r1, #0xa4
+ bl MOD08_02217F50
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+_0221F66E:
+ add r0, r4, #0
+ ldr r2, [r4, #0x30]
+ add r0, #0x34
+ add r1, #0x58
+ mov r5, #0
+ bl MOD08_02217FE4
+ cmp r0, #0
+ bne _0221F686
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+_0221F686:
+ add r0, r4, #0
+ add r1, r4, #0
+ ldr r2, [r4, #0x7c]
+ add r0, #0x80
+ add r1, #0xa4
+ bl MOD08_02217FE4
+ cmp r0, #0
+ bne _0221F69E
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+_0221F69E:
+ cmp r5, #2
+ bne _0221F74A
+ ldrb r0, [r4, #0xc]
+ cmp r0, #5
+ ldrb r0, [r4]
+ bne _0221F6B0
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+_0221F6B0:
+ sub r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+_0221F6B6:
+ mov r5, #0
+ add r0, r4, #4
+ add r1, r5, #0
+ sub r2, r5, #2
+ bl MOD08_02218A58
+ cmp r0, #1
+ bne _0221F6C8
+ add r5, r5, #1
+_0221F6C8:
+ add r0, r4, #0
+ add r0, #8
+ mov r1, #0x10
+ mov r2, #2
+ bl MOD08_02218A58
+ cmp r0, #1
+ bne _0221F6DA
+ add r5, r5, #1
+_0221F6DA:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #4]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221F708 ; =0x04000052
+ cmp r5, #2
+ strh r1, [r0]
+ bne _0221F74A
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221F74A
+ nop
+_0221F6F4: .word 0x0222C569
+_0221F6F8: .word 0x0222C56A
+_0221F6FC: .word 0x0222C56B
+_0221F700: .word 0x0222C568
+_0221F704: .word 0x0222C56C
+_0221F708: .word 0x04000052
+_0221F70C: .word 0x0222C545
+_0221F710:
+ mov r6, #0
+ ldr r0, [r4, #0x10]
+ add r1, r6, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221F738
+ add r5, r4, #0
+ add r7, r6, #0
+_0221F722:
+ ldr r0, [r5, #0x30]
+ bl FUN_0200C3DC
+ ldr r0, [r4, #0x10]
+ add r1, r7, #0
+ add r5, #0x4c
+ add r6, r6, #1
+ bl MOD08_02212498
+ cmp r6, r0
+ blt _0221F722
+_0221F738:
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #0x10]
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+_0221F74A:
+ mov r6, #0
+ ldr r0, [r4, #0x10]
+ add r1, r6, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221F7B6
+ add r5, r4, #0
+ add r7, sp, #0x14
+_0221F75C:
+ add r1, sp, #0x14
+ ldr r0, [r5, #0x30]
+ add r1, #2
+ add r2, sp, #0x14
+ bl FUN_0200C7A0
+ mov r0, #0
+ ldrsh r0, [r7, r0]
+ cmp r0, #0x50
+ bge _0221F780
+ ldr r0, [r4, #0x10]
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r5, #0x30]
+ bl FUN_0200C6B0
+ b _0221F7A6
+_0221F780:
+ mov r0, #2
+ ldrsh r0, [r7, r0]
+ cmp r0, #0x80
+ ldr r0, [r4, #0x10]
+ ble _0221F798
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r5, #0x30]
+ bl FUN_0200C6B0
+ b _0221F7A6
+_0221F798:
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r5, #0x30]
+ add r1, r1, #1
+ bl FUN_0200C6B0
+_0221F7A6:
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ add r5, #0x4c
+ add r6, r6, #1
+ bl MOD08_02212498
+ cmp r6, r0
+ blt _0221F75C
+_0221F7B6:
+ ldrb r0, [r4]
+ cmp r0, #4
+ blo _0221F7EA
+ mov r5, #0
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221F7E4
+ add r6, r4, #0
+ add r7, r5, #0
+_0221F7CE:
+ ldr r0, [r6, #0x30]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x10]
+ add r1, r7, #0
+ add r6, #0x4c
+ add r5, r5, #1
+ bl MOD08_02212498
+ cmp r5, r0
+ blt _0221F7CE
+_0221F7E4:
+ ldr r0, [r4, #0x18]
+ bl FUN_0200BC1C
+_0221F7EA:
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0221F7F0
+MOD08_0221F7F0: ; 0x0221F7F0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r1, #0
+ mov r1, #0xf0
+ str r0, [sp]
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r1, #0
+ strb r1, [r4]
+ ldr r0, [sp]
+ strb r1, [r4, #1]
+ str r0, [r4, #0x10]
+ str r6, [r4, #0x18]
+ str r5, [r4, #0x14]
+ str r1, [r4, #4]
+ mov r0, #0x10
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x10]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD08_022154D4
+ str r0, [r4, #0x1c]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x20]
+ ldr r0, [r4, #0x10]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD08_0221552C
+ str r0, [r4, #0x24]
+ ldr r0, [sp]
+ mov r1, #2
+ bl MOD08_022155C4
+ add r5, r0, #0
+ ldr r0, [sp]
+ mov r1, #1
+ bl MOD08_022155C4
+ mov r2, #1
+ add r1, r2, #0
+ add r3, r0, #0
+ lsl r1, r5
+ add r5, r2, #0
+ lsl r5, r3
+ orr r1, r5
+ orr r1, r2
+ sub r2, r2, #2
+ ldr r0, [r4, #0x10]
+ add r3, r2, #0
+ bl MOD08_022279D0
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #4]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221F92C ; =0x04000052
+ strh r1, [r0]
+ ldr r1, [sp]
+ add r0, sp, #4
+ bl MOD08_02215474
+ str r7, [r4, #0x30]
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ mov r6, #1
+ bl MOD08_02212498
+ cmp r0, #1
+ ble _0221F8B2
+ add r5, r4, #0
+ add r5, #0x4c
+ add r7, sp, #4
+_0221F896:
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #0x18]
+ add r2, r7, #0
+ bl FUN_0200C154
+ str r0, [r5, #0x30]
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ add r5, #0x4c
+ add r6, r6, #1
+ bl MOD08_02212498
+ cmp r6, r0
+ blt _0221F896
+_0221F8B2:
+ mov r6, #0
+ ldr r0, [r4, #0x10]
+ add r1, r6, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ ble _0221F8EC
+ add r5, r4, #0
+ mov r7, #1
+_0221F8C4:
+ ldr r0, [r5, #0x30]
+ add r1, r7, #0
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x10]
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r5, #0x30]
+ add r1, r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ add r5, #0x4c
+ add r6, r6, #1
+ bl MOD08_02212498
+ cmp r6, r0
+ blt _0221F8C4
+_0221F8EC:
+ ldr r0, [sp]
+ bl MOD08_02212004
+ cmp r0, #1
+ ldr r0, [r4, #0x30]
+ bne _0221F90C
+ mov r1, #0xa0
+ mov r2, #0x2c
+ bl FUN_0200C714
+ ldr r0, [r4, #0x7c]
+ mov r1, #0x50
+ mov r2, #0x1d
+ bl FUN_0200C714
+ b _0221F91E
+_0221F90C:
+ mov r1, #0x64
+ mov r2, #0x2c
+ bl FUN_0200C714
+ ldr r0, [r4, #0x7c]
+ mov r1, #0xb4
+ mov r2, #0x1d
+ bl FUN_0200C714
+_0221F91E:
+ ldr r0, [r4, #0x10]
+ ldr r1, _0221F930 ; =MOD08_0221F3AC
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221F92C: .word 0x04000052
+_0221F930: .word MOD08_0221F3AC
+
+ thumb_func_start MOD08_0221F934
+MOD08_0221F934: ; 0x0221F934
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ ldrb r0, [r5]
+ cmp r0, #0
+ beq _0221F946
+ cmp r0, #1
+ beq _0221F9BA
+ b _0221F9EE
+_0221F946:
+ ldrb r0, [r5, #6]
+ cmp r0, #0xf
+ bhs _0221F950
+ add r0, r0, #1
+ strb r0, [r5, #6]
+_0221F950:
+ ldrb r0, [r5, #7]
+ cmp r0, #0
+ beq _0221F95A
+ sub r0, r0, #1
+ strb r0, [r5, #7]
+_0221F95A:
+ ldrb r0, [r5, #7]
+ ldrb r1, [r5, #6]
+ mov r6, #0
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221FA3C ; =0x04000052
+ strh r1, [r0]
+ ldrb r0, [r5, #4]
+ add r0, r0, #1
+ strb r0, [r5, #4]
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ ble _0221F9AC
+ ldr r4, _0221FA40 ; =0x0222C5DC
+ add r7, r5, #0
+_0221F978:
+ add r1, sp, #0
+ ldr r0, [r7, #0x14]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ ldrb r1, [r5, #4]
+ ldrb r0, [r4]
+ cmp r1, r0
+ blo _0221F9A0
+ add r0, r5, r6
+ ldrb r1, [r0, #1]
+ add r1, r1, #1
+ strb r1, [r0, #1]
+ ldrb r2, [r0, #1]
+ ldrb r1, [r4, #1]
+ cmp r2, r1
+ blo _0221F9A0
+ mov r1, #0
+ strb r1, [r0, #1]
+_0221F9A0:
+ ldrb r0, [r5, #5]
+ add r6, r6, #1
+ add r7, r7, #4
+ add r4, r4, #2
+ cmp r6, r0
+ blt _0221F978
+_0221F9AC:
+ ldrb r0, [r5, #4]
+ cmp r0, #0x2d
+ blo _0221FA18
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _0221FA18
+_0221F9BA:
+ ldrb r0, [r5, #6]
+ cmp r0, #0
+ beq _0221F9C4
+ sub r0, r0, #1
+ strb r0, [r5, #6]
+_0221F9C4:
+ ldrb r0, [r5, #7]
+ cmp r0, #0xf
+ bhs _0221F9CE
+ add r0, r0, #1
+ strb r0, [r5, #7]
+_0221F9CE:
+ ldrb r0, [r5, #6]
+ cmp r0, #0
+ bne _0221F9E0
+ ldrb r0, [r5, #7]
+ cmp r0, #0xf
+ bne _0221F9E0
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+_0221F9E0:
+ ldrb r0, [r5, #7]
+ ldrb r1, [r5, #6]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221FA3C ; =0x04000052
+ strh r1, [r0]
+ b _0221FA18
+_0221F9EE:
+ ldrb r0, [r5, #5]
+ mov r6, #0
+ cmp r0, #0
+ ble _0221FA08
+ add r4, r5, #0
+_0221F9F8:
+ ldr r0, [r4, #0x14]
+ bl FUN_0200C3DC
+ ldrb r0, [r5, #5]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, r0
+ blt _0221F9F8
+_0221FA08:
+ ldr r0, [r5, #8]
+ add r1, r7, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_0221FA18:
+ ldrb r0, [r5, #5]
+ mov r6, #0
+ cmp r0, #0
+ ble _0221FA34
+ add r4, r5, #0
+_0221FA22:
+ ldr r0, [r4, #0x14]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ ldrb r0, [r5, #5]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, r0
+ blt _0221FA22
+_0221FA34:
+ ldr r0, [r5, #0x10]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221FA3C: .word 0x04000052
+_0221FA40: .word 0x0222C5DC
+
+ thumb_func_start MOD08_0221FA44
+MOD08_0221FA44: ; 0x0221FA44
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r7, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ str r3, [sp]
+ bl MOD08_02212014
+ mov r1, #0x44
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _0221FA62
+ bl ErrorHandling
+_0221FA62:
+ mov r0, #0
+ strb r0, [r4, #4]
+ strb r0, [r4]
+ str r5, [r4, #0xc]
+ str r6, [r4, #0x10]
+ add r0, sp, #4
+ add r1, r7, #0
+ str r7, [r4, #8]
+ bl MOD08_02215474
+ mov r1, #0
+ mvn r1, r1
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ bl MOD08_02227994
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD08_02212498
+ strb r0, [r4, #5]
+ mov r0, #0
+ strb r0, [r4, #6]
+ mov r0, #0xf
+ strb r0, [r4, #7]
+ ldrb r0, [r4, #7]
+ ldrb r1, [r4, #6]
+ mov r6, #1
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221FBA8 ; =0x04000052
+ strh r1, [r0]
+ ldr r0, [sp]
+ str r0, [r4, #0x14]
+ ldrb r0, [r4, #5]
+ cmp r0, #1
+ ble _0221FAC4
+ add r5, r4, #4
+_0221FAAE:
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r2, sp, #4
+ bl FUN_0200C154
+ str r0, [r5, #0x14]
+ ldrb r0, [r4, #5]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, r0
+ blt _0221FAAE
+_0221FAC4:
+ add r0, r7, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r7, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _0221FB18
+ add r0, r7, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r7, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _0221FB04
+ add r0, r7, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r7, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _0221FB04
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_0200C5C0
+ b _0221FB0C
+_0221FB04:
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200C5C0
+_0221FB0C:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x80
+ mov r2, #0x50
+ bl FUN_0200C714
+ b _0221FB58
+_0221FB18:
+ add r0, r7, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r7, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _0221FB46
+ add r0, r7, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r7, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _0221FB46
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200C5C0
+ b _0221FB4E
+_0221FB46:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_0200C5C0
+_0221FB4E:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x80
+ mov r2, #0x50
+ bl FUN_0200C714
+_0221FB58:
+ ldrb r0, [r4, #5]
+ mov r6, #0
+ cmp r0, #0
+ ble _0221FB98
+ add r5, r4, #0
+_0221FB62:
+ add r1, r4, r6
+ mov r0, #0
+ strb r0, [r1, #1]
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #8]
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _0221FB8E
+ mov r2, #0xfe
+ ldr r0, [r5, #0x14]
+ ldr r1, _0221FBAC ; =0xBF800000
+ lsl r2, r2, #0x16
+ bl FUN_0200C884
+_0221FB8E:
+ ldrb r0, [r4, #5]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, r0
+ blt _0221FB62
+_0221FB98:
+ ldr r1, _0221FBB0 ; =MOD08_0221F934
+ ldr r3, _0221FBB4 ; =0x0000044C
+ add r0, r7, #0
+ add r2, r4, #0
+ bl MOD08_022123E4
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221FBA8: .word 0x04000052
+_0221FBAC: .word 0xBF800000
+_0221FBB0: .word MOD08_0221F934
+_0221FBB4: .word 0x0000044C
+
+ thumb_func_start MOD08_0221FBB8
+MOD08_0221FBB8: ; 0x0221FBB8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r7, r0, #0
+ ldrb r0, [r4]
+ mov r6, #0
+ cmp r0, #3
+ bls _0221FBCA
+ b _0221FD70
+_0221FBCA:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221FBD6: ; jump table
+ .short _0221FBDE - _0221FBD6 - 2 ; case 0
+ .short _0221FC12 - _0221FBD6 - 2 ; case 1
+ .short _0221FCEA - _0221FBD6 - 2 ; case 2
+ .short _0221FD36 - _0221FBD6 - 2 ; case 3
+_0221FBDE:
+ ldrb r0, [r4, #9]
+ cmp r0, #0xf
+ bhs _0221FBE8
+ add r0, r0, #1
+ strb r0, [r4, #9]
+_0221FBE8:
+ ldrb r0, [r4, #0xa]
+ cmp r0, #0
+ beq _0221FBF2
+ sub r0, r0, #1
+ strb r0, [r4, #0xa]
+_0221FBF2:
+ ldrb r0, [r4, #9]
+ cmp r0, #0xf
+ bne _0221FC04
+ ldrb r0, [r4, #0xa]
+ cmp r0, #0
+ bne _0221FC04
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221FC04:
+ ldrb r0, [r4, #0xa]
+ ldrb r1, [r4, #9]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221FDCC ; =0x04000052
+ strh r1, [r0]
+ b _0221FD9C
+_0221FC12:
+ ldr r0, [r4, #0x30]
+ cmp r0, #3
+ bhi _0221FC78
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221FC24: ; jump table
+ .short _0221FC2C - _0221FC24 - 2 ; case 0
+ .short _0221FC46 - _0221FC24 - 2 ; case 1
+ .short _0221FC60 - _0221FC24 - 2 ; case 2
+ .short _0221FC60 - _0221FC24 - 2 ; case 3
+_0221FC2C:
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x24]
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x34]
+ bl FUN_0200C644
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl FUN_0200C644
+ b _0221FC78
+_0221FC46:
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x20]
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x34]
+ bl FUN_0200C644
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl FUN_0200C644
+ b _0221FC78
+_0221FC60:
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x2c]
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x34]
+ bl FUN_0200C644
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl FUN_0200C644
+_0221FC78:
+ add r1, sp, #8
+ ldr r0, [r4, #0x34]
+ add r1, #2
+ add r2, sp, #8
+ bl FUN_0200C7A0
+ ldr r1, [r4, #0x30]
+ ldr r0, _0221FDD0 ; =0x0222C614
+ lsl r2, r1, #3
+ ldrsh r0, [r0, r2]
+ ldr r5, _0221FDD4 ; =0x0222C612
+ add r3, sp, #8
+ str r0, [sp]
+ ldr r0, _0221FDD8 ; =0x0222C5D8
+ ldrsh r2, [r5, r2]
+ ldrb r0, [r0, r1]
+ mov r1, #2
+ mov r5, #0
+ str r0, [sp, #4]
+ ldrsh r1, [r3, r1]
+ add r0, r4, #0
+ ldrsh r3, [r3, r5]
+ add r0, #0x3c
+ bl MOD08_02217E80
+ add r1, sp, #8
+ ldr r0, [r4, #0x38]
+ add r1, #2
+ add r2, sp, #8
+ bl FUN_0200C7A0
+ ldr r1, [r4, #0x30]
+ ldr r0, _0221FDDC ; =0x0222C618
+ lsl r2, r1, #3
+ ldrsh r0, [r0, r2]
+ ldr r5, _0221FDE0 ; =0x0222C616
+ add r3, sp, #8
+ str r0, [sp]
+ ldr r0, _0221FDD8 ; =0x0222C5D8
+ ldrsh r2, [r5, r2]
+ ldrb r0, [r0, r1]
+ mov r1, #2
+ mov r5, #0
+ str r0, [sp, #4]
+ ldrsh r1, [r3, r1]
+ add r0, r4, #0
+ ldrsh r3, [r3, r5]
+ add r0, #0x60
+ bl MOD08_02217E80
+ ldr r0, [r4, #0x30]
+ add r0, r0, #1
+ str r0, [r4, #0x30]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221FD9C
+_0221FCEA:
+ add r0, r4, #0
+ ldr r1, [r4, #0x34]
+ add r0, #0x3c
+ add r5, r6, #0
+ bl MOD08_02217F08
+ cmp r0, #0
+ bne _0221FCFC
+ add r5, r5, #1
+_0221FCFC:
+ add r0, r4, #0
+ ldr r1, [r4, #0x38]
+ add r0, #0x60
+ bl MOD08_02217F08
+ cmp r0, #0
+ bne _0221FD0C
+ add r5, r5, #1
+_0221FD0C:
+ cmp r5, #2
+ blt _0221FD9C
+ ldr r0, [r4, #0x30]
+ cmp r0, #3
+ bgt _0221FD2E
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl FUN_0200C644
+ ldrb r0, [r4]
+ sub r0, r0, #1
+ strb r0, [r4]
+ b _0221FD9C
+_0221FD2E:
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0221FD9C
+_0221FD36:
+ ldrb r0, [r4, #9]
+ cmp r0, #0
+ beq _0221FD40
+ sub r0, r0, #1
+ strb r0, [r4, #9]
+_0221FD40:
+ ldrb r0, [r4, #0xa]
+ cmp r0, #0xf
+ bhs _0221FD4A
+ add r0, r0, #1
+ strb r0, [r4, #0xa]
+_0221FD4A:
+ ldrb r1, [r4, #0xa]
+ cmp r1, #7
+ blo _0221FD52
+ mov r6, #1
+_0221FD52:
+ ldrb r0, [r4, #9]
+ cmp r0, #0
+ bne _0221FD62
+ cmp r1, #0xf
+ bne _0221FD62
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_0221FD62:
+ ldrb r0, [r4, #0xa]
+ ldrb r1, [r4, #9]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0221FDCC ; =0x04000052
+ strh r1, [r0]
+ b _0221FD9C
+_0221FD70:
+ ldrb r0, [r4, #8]
+ mov r6, #0
+ cmp r0, #0
+ ble _0221FD8A
+ add r5, r4, #0
+_0221FD7A:
+ ldr r0, [r5, #0x18]
+ bl FUN_0200C3DC
+ ldrb r0, [r4, #8]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, r0
+ blt _0221FD7A
+_0221FD8A:
+ ldr r0, [r4, #0xc]
+ add r1, r7, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0221FD9C:
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _0221FDC2
+ cmp r6, #0
+ bne _0221FDC2
+ ldrb r0, [r4, #8]
+ mov r6, #0
+ cmp r0, #0
+ ble _0221FDC2
+ add r5, r4, #0
+_0221FDB0:
+ ldr r0, [r5, #0x18]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ ldrb r0, [r4, #8]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, r0
+ blt _0221FDB0
+_0221FDC2:
+ ldr r0, [r4, #0x14]
+ bl FUN_0200BC1C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221FDCC: .word 0x04000052
+_0221FDD0: .word 0x0222C614
+_0221FDD4: .word 0x0222C612
+_0221FDD8: .word 0x0222C5D8
+_0221FDDC: .word 0x0222C618
+_0221FDE0: .word 0x0222C616
+
+ thumb_func_start MOD08_0221FDE4
+MOD08_0221FDE4: ; 0x0221FDE4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ str r0, [sp]
+ add r5, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD08_02212014
+ mov r1, #0x84
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _0221FE02
+ bl ErrorHandling
+_0221FE02:
+ mov r0, #0
+ strb r0, [r4, #7]
+ strb r0, [r4]
+ str r5, [r4, #0x10]
+ str r6, [r4, #0x14]
+ str r0, [r4, #0x30]
+ ldr r0, [sp]
+ ldr r1, [sp]
+ str r0, [r4, #0xc]
+ add r0, sp, #4
+ bl MOD08_02215474
+ mov r1, #0
+ mvn r1, r1
+ ldr r0, [r4, #0xc]
+ add r2, r1, #0
+ bl MOD08_02227994
+ mov r1, #0
+ strb r1, [r4, #9]
+ mov r0, #0xf
+ strb r0, [r4, #0xa]
+ ldrb r0, [r4, #0xa]
+ ldrb r2, [r4, #9]
+ lsl r0, r0, #8
+ orr r2, r0
+ ldr r0, _0221FF0C ; =0x04000052
+ strh r2, [r0]
+ ldr r0, [r4, #0xc]
+ bl MOD08_02212498
+ strb r0, [r4, #8]
+ str r7, [r4, #0x18]
+ ldrb r0, [r4, #8]
+ mov r6, #1
+ cmp r0, #1
+ ble _0221FE66
+ add r5, r4, #4
+ add r7, sp, #4
+_0221FE50:
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ add r2, r7, #0
+ bl FUN_0200C154
+ str r0, [r5, #0x18]
+ ldrb r0, [r4, #8]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, r0
+ blt _0221FE50
+_0221FE66:
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0x2c]
+ mov r1, #3
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_0200C8D0
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl FUN_0200C8D0
+ ldrb r0, [r4, #8]
+ mov r7, #0
+ cmp r0, #0
+ ble _0221FEDC
+ ldr r6, _0221FF10 ; =0x0222C5FA
+ add r5, r4, #0
+_0221FEB2:
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_0200C5E0
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r6, r1]
+ ldrsh r2, [r6, r2]
+ ldr r0, [r5, #0x18]
+ bl FUN_0200C714
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldrb r0, [r4, #8]
+ add r7, r7, #1
+ add r5, r5, #4
+ add r6, r6, #4
+ cmp r7, r0
+ blt _0221FEB2
+_0221FEDC:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x20]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x2c]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [sp]
+ ldr r1, _0221FF14 ; =MOD08_0221FBB8
+ ldr r3, _0221FF18 ; =0x0000044C
+ add r2, r4, #0
+ bl MOD08_022123E4
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221FF0C: .word 0x04000052
+_0221FF10: .word 0x0222C5FA
+_0221FF14: .word MOD08_0221FBB8
+_0221FF18: .word 0x0000044C
+
+ thumb_func_start MOD08_0221FF1C
+MOD08_0221FF1C: ; 0x0221FF1C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #7
+ bls _0221FF2C
+ b _02220084
+_0221FF2C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221FF38: ; jump table
+ .short _0221FF48 - _0221FF38 - 2 ; case 0
+ .short _0221FF5C - _0221FF38 - 2 ; case 1
+ .short _0221FF7E - _0221FF38 - 2 ; case 2
+ .short _0221FFAC - _0221FF38 - 2 ; case 3
+ .short _0221FFDA - _0221FF38 - 2 ; case 4
+ .short _0221FFF8 - _0221FF38 - 2 ; case 5
+ .short _02220020 - _0221FF38 - 2 ; case 6
+ .short _02220068 - _0221FF38 - 2 ; case 7
+_0221FF48:
+ ldrb r0, [r4, #0xe]
+ sub r0, r0, #1
+ strb r0, [r4, #0xe]
+ ldrb r0, [r4, #0xe]
+ cmp r0, #0xa
+ bhi _0221FF68
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ b _02220092
+_0221FF5C:
+ ldrb r0, [r4, #0xd]
+ add r0, r0, #1
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xd]
+ cmp r0, #3
+ bhs _0221FF6A
+_0221FF68:
+ b _02220092
+_0221FF6A:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C644
+ mov r0, #0
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ b _02220092
+_0221FF7E:
+ ldrb r0, [r4, #0xd]
+ add r0, r0, #1
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xd]
+ cmp r0, #3
+ bhi _0221FFA0
+ ldr r0, [r4, #0x38]
+ ldr r1, _0222009C ; =0x3DCCCCCD
+ bl _fadd
+ str r0, [r4, #0x38]
+ ldr r1, [r4, #0x38]
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl FUN_0200C884
+ b _02220092
+_0221FFA0:
+ mov r0, #0
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ b _02220092
+_0221FFAC:
+ ldrb r0, [r4, #0xd]
+ add r0, r0, #1
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xd]
+ cmp r0, #3
+ bhi _0221FFCE
+ ldr r0, [r4, #0x38]
+ ldr r1, _0222009C ; =0x3DCCCCCD
+ bl _fsub
+ str r0, [r4, #0x38]
+ ldr r1, [r4, #0x38]
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl FUN_0200C884
+ b _02220092
+_0221FFCE:
+ mov r0, #0
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ b _02220092
+_0221FFDA:
+ ldrb r0, [r4, #0xe]
+ sub r0, r0, #1
+ strb r0, [r4, #0xe]
+ ldrb r0, [r4, #0xe]
+ cmp r0, #0xa
+ bhi _02220092
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ str r1, [r0]
+ mov r0, #0
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ b _02220092
+_0221FFF8:
+ ldrb r0, [r4, #0xd]
+ add r0, r0, #1
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0x1e
+ bls _02220010
+ mov r0, #0
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ b _02220092
+_02220010:
+ ldr r0, [r4, #0x3c]
+ ldr r0, [r0]
+ cmp r0, #2
+ bne _02220092
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ b _02220092
+_02220020:
+ bl FUN_0201B9EC
+ mov r1, #0xa
+ bl _s32_div_f
+ add r5, r1, #0
+ add r2, sp, #8
+ ldr r0, [r4, #0x10]
+ add r1, sp, #8
+ add r2, #2
+ add r5, #0xa
+ bl FUN_0200C7A0
+ ldrb r0, [r4, #0xf]
+ add r3, sp, #8
+ mov r1, #0
+ lsl r2, r0, #2
+ ldr r0, _022200A0 ; =0x0222C5E4
+ ldrsh r0, [r0, r2]
+ str r0, [sp]
+ lsl r0, r5, #0x10
+ ldr r5, _022200A4 ; =0x0222C5E2
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldrsh r2, [r5, r2]
+ add r0, r4, #0
+ mov r5, #2
+ ldrsh r1, [r3, r1]
+ ldrsh r3, [r3, r5]
+ add r0, #0x14
+ bl MOD08_02217E80
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ b _02220092
+_02220068:
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ add r0, #0x14
+ bl MOD08_02217F08
+ cmp r0, #0
+ bne _02220092
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200C644
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02220084:
+ ldr r0, [r4, #0x3c]
+ mov r1, #3
+ str r1, [r0]
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+_02220092:
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C5A8
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_0222009C: .word 0x3DCCCCCD
+_022200A0: .word 0x0222C5E4
+_022200A4: .word 0x0222C5E2
+
+ thumb_func_start MOD08_022200A8
+MOD08_022200A8: ; 0x022200A8
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhi _02220164
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022200C0: ; jump table
+ .short _022200C8 - _022200C0 - 2 ; case 0
+ .short _022200F4 - _022200C0 - 2 ; case 1
+ .short _02220116 - _022200C0 - 2 ; case 2
+ .short _02220142 - _022200C0 - 2 ; case 3
+_022200C8:
+ ldrb r6, [r4, #2]
+ mov r3, #1
+ mov r2, #0
+ cmp r6, #0
+ ble _022200E8
+ ldr r0, _0222017C ; =0x00000514
+ add r5, r4, #0
+_022200D6:
+ ldr r1, [r5, r0]
+ cmp r1, #1
+ beq _022200E0
+ mov r3, #0
+ b _022200E8
+_022200E0:
+ add r2, r2, #1
+ add r5, r5, #4
+ cmp r2, r6
+ blt _022200D6
+_022200E8:
+ cmp r3, #1
+ bne _02220174
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _02220174
+_022200F4:
+ ldrb r0, [r4, #2]
+ mov r5, #0
+ cmp r0, #0
+ ble _0222010E
+ ldr r0, _0222017C ; =0x00000514
+ add r3, r4, #0
+ mov r2, #2
+_02220102:
+ str r2, [r3, r0]
+ ldrb r1, [r4, #2]
+ add r5, r5, #1
+ add r3, r3, #4
+ cmp r5, r1
+ blt _02220102
+_0222010E:
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _02220174
+_02220116:
+ ldrb r5, [r4, #2]
+ mov r2, #1
+ mov r6, #0
+ cmp r5, #0
+ ble _02220136
+ ldr r0, _0222017C ; =0x00000514
+ add r3, r4, #0
+_02220124:
+ ldr r1, [r3, r0]
+ cmp r1, #3
+ beq _0222012E
+ mov r2, #0
+ b _02220136
+_0222012E:
+ add r6, r6, #1
+ add r3, r3, #4
+ cmp r6, r5
+ blt _02220124
+_02220136:
+ cmp r2, #1
+ bne _02220174
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _02220174
+_02220142:
+ ldrb r0, [r4, #2]
+ mov r6, #0
+ cmp r0, #0
+ ble _0222015C
+ add r5, r4, #0
+_0222014C:
+ ldr r0, [r5, #0x24]
+ bl FUN_0200C3DC
+ ldrb r0, [r4, #2]
+ add r6, r6, #1
+ add r5, #0x40
+ cmp r6, r0
+ blt _0222014C
+_0222015C:
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _02220174
+_02220164:
+ ldr r0, [r4, #8]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+_02220174:
+ ldr r0, [r4, #0x10]
+ bl FUN_0200BC1C
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222017C: .word 0x00000514
+
+ thumb_func_start MOD08_02220180
+MOD08_02220180: ; 0x02220180
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x50
+ str r0, [sp]
+ add r5, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD08_02212014
+ ldr r1, _022202E8 ; =0x00000564
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _0222019E
+ bl ErrorHandling
+_0222019E:
+ mov r0, #0
+ strb r0, [r4, #1]
+ strb r0, [r4]
+ str r5, [r4, #0xc]
+ ldr r0, [sp]
+ str r6, [r4, #0x10]
+ str r0, [r4, #8]
+ ldr r1, [sp]
+ add r0, sp, #0x1c
+ bl MOD08_02215474
+ mov r1, #0
+ mvn r1, r1
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ bl MOD08_02227994
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD08_02212498
+ strb r0, [r4, #2]
+ mov r0, #0xc
+ strb r0, [r4, #2]
+ mov r0, #0
+ str r7, [r4, #0x24]
+ str r0, [sp, #4]
+ str r0, [sp, #0x14]
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ ble _022202D8
+ ldr r0, _022202EC ; =0x00000514
+ add r5, r4, #0
+ add r0, r4, r0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ str r0, [sp, #8]
+ add r0, #0x14
+ str r0, [sp, #8]
+_022201EC:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _022201FE
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r2, sp, #0x1c
+ bl FUN_0200C154
+ str r0, [r5, #0x24]
+_022201FE:
+ add r1, r5, #0
+ ldr r6, [r5, #0x24]
+ add r1, #0x20
+ mov r0, #0
+ strb r0, [r1]
+ add r1, r5, #0
+ add r1, #0x21
+ strb r0, [r1]
+ bl FUN_0201B9EC
+ mov r1, #0xa
+ bl _s32_div_f
+ ldr r0, [sp, #0x14]
+ add r1, #0xa
+ add r1, r0, r1
+ add r0, r5, #0
+ add r0, #0x22
+ strb r1, [r0]
+ bl FUN_0201B9EC
+ mov r1, #6
+ bl _s32_div_f
+ add r0, r5, #0
+ add r0, #0x23
+ strb r1, [r0]
+ mov r0, #0xfe
+ lsl r0, r0, #0x16
+ str r0, [r5, #0x4c]
+ ldr r0, [r4, #8]
+ ldr r1, _022202F0 ; =0x0222C632
+ str r0, [r5, #0x14]
+ ldr r0, [r4, #0xc]
+ str r0, [r5, #0x18]
+ ldr r0, [r4, #0x10]
+ str r0, [r5, #0x1c]
+ ldr r0, [sp, #0xc]
+ str r0, [r5, #0x50]
+ ldr r0, [sp, #4]
+ lsl r0, r0, #3
+ str r0, [sp, #0x18]
+ add r7, r1, r0
+ bl FUN_0201B9EC
+ mov r1, #6
+ ldrsh r1, [r7, r1]
+ bl _s32_div_f
+ mov r0, #2
+ ldrsh r0, [r7, r0]
+ add r0, r0, r1
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ bl FUN_0201B9EC
+ mov r1, #4
+ ldrsh r1, [r7, r1]
+ bl _s32_div_f
+ ldr r2, _022202F0 ; =0x0222C632
+ ldr r0, [sp, #0x18]
+ ldrsh r0, [r2, r0]
+ add r0, r0, r1
+ lsl r0, r0, #0x10
+ asr r2, r0, #0x10
+ ldr r1, [sp, #0x10]
+ add r0, r6, #0
+ bl FUN_0200C714
+ add r0, r6, #0
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r1, [r5, #0x4c]
+ add r0, r6, #0
+ add r2, r1, #0
+ bl FUN_0200C884
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [sp]
+ ldr r1, _022202F4 ; =MOD08_0221FF1C
+ ldr r2, [sp, #8]
+ ldr r3, _022202F8 ; =0x0000044B
+ bl MOD08_022123E4
+ ldr r0, [sp, #4]
+ mov r1, #6
+ add r0, r0, #1
+ bl _s32_div_f
+ ldr r0, [sp, #0xc]
+ str r1, [sp, #4]
+ add r0, r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #8]
+ ldrb r1, [r4, #2]
+ add r0, #0x40
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x14]
+ add r5, #0x40
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, r1
+ blt _022201EC
+_022202D8:
+ ldr r0, [sp]
+ ldr r1, _022202FC ; =MOD08_022200A8
+ ldr r3, _02220300 ; =0x0000044D
+ add r2, r4, #0
+ bl MOD08_022123E4
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022202E8: .word 0x00000564
+_022202EC: .word 0x00000514
+_022202F0: .word 0x0222C632
+_022202F4: .word MOD08_0221FF1C
+_022202F8: .word 0x0000044B
+_022202FC: .word MOD08_022200A8
+_02220300: .word 0x0000044D
+
+ thumb_func_start MOD08_02220304
+MOD08_02220304: ; 0x02220304
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #4]
+ cmp r0, #3
+ bhi _022203EA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222031E: ; jump table
+ .short _02220326 - _0222031E - 2 ; case 0
+ .short _02220344 - _0222031E - 2 ; case 1
+ .short _02220396 - _0222031E - 2 ; case 2
+ .short _022203C0 - _0222031E - 2 ; case 3
+_02220326:
+ ldr r0, [r4, #8]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_022154D4
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ ldrb r0, [r4, #4]
+ add r0, r0, #1
+ strb r0, [r4, #4]
+ b _02220410
+_02220344:
+ add r0, r4, #0
+ add r0, #0x2c
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02220410
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD08_022155C4
+ add r5, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD08_02218998
+ add r6, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_02212014
+ mov r1, #0xc8
+ str r1, [sp]
+ mov r3, #3
+ str r5, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ str r6, [sp, #0xc]
+ str r0, [sp, #0x10]
+ add r0, r1, #0
+ mov r1, #0xa0
+ add r2, r1, #0
+ add r2, #0xcc
+ lsl r3, r3, #0xe
+ bl MOD08_022188DC
+ str r0, [r4, #0x28]
+ ldrb r0, [r4, #4]
+ add r0, r0, #1
+ strb r0, [r4, #4]
+ b _02220410
+_02220396:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ cmp r0, #0x78
+ blt _02220410
+ ldr r0, [r4, #0x28]
+ bl MOD08_0221894C
+ mov r1, #2
+ mov r2, #0x10
+ str r1, [sp]
+ add r0, r4, #0
+ str r2, [sp, #4]
+ add r0, #0x2c
+ add r3, r2, #0
+ bl MOD08_022186D4
+ ldrb r0, [r4, #4]
+ add r0, r0, #1
+ strb r0, [r4, #4]
+ b _02220410
+_022203C0:
+ add r0, r4, #0
+ add r0, #0x2c
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02220410
+ ldr r0, [r4, #8]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD08_022154D4
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ ldrb r0, [r4, #4]
+ add r0, r0, #1
+ strb r0, [r4, #4]
+ b _02220410
+_022203EA:
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _02220428 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD08_02214850
+ ldr r0, [r4, #8]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+_02220410:
+ ldr r0, [r4, #0x24]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x20]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x10]
+ bl FUN_0200BC1C
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02220428: .word 0xFFFF1FFF
+
+ thumb_func_start MOD08_0222042C
+MOD08_0222042C: ; 0x0222042C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ mov r1, #0x54
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD08_02227B70
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD08_022124D8
+ mov r1, #2
+ str r0, [r4, #0x20]
+ bl FUN_0200C90C
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _022204C0 ; =0xFFFF1FFF
+ and r2, r1
+ lsr r1, r0, #0xb
+ orr r1, r2
+ str r1, [r0]
+ add r0, #0x4a
+ ldrh r2, [r0]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x1b
+ orr r1, r2
+ strh r1, [r0]
+ ldrh r2, [r0]
+ ldr r1, _022204C4 ; =0xFFFFC0FF
+ and r2, r1
+ mov r1, #0x17
+ lsl r1, r1, #8
+ orr r1, r2
+ strh r1, [r0]
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD08_022124D8
+ mov r1, #1
+ str r0, [r4, #0x24]
+ bl FUN_0200C90C
+ mov r1, #0x10
+ str r1, [sp]
+ add r0, r4, #0
+ mov r2, #2
+ str r1, [sp, #4]
+ add r0, #0x2c
+ add r3, r2, #0
+ bl MOD08_022186D4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD08_0221477C
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ ldr r0, [r4, #8]
+ ldr r1, _022204C8 ; =MOD08_02220304
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_022204C0: .word 0xFFFF1FFF
+_022204C4: .word 0xFFFFC0FF
+_022204C8: .word MOD08_02220304
+
+ thumb_func_start MOD08_022204CC
+MOD08_022204CC: ; 0x022204CC
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0200C658
+ cmp r0, #1
+ bne _022204DE
+ add r0, r4, #0
+ bl FUN_0200C5A8
+_022204DE:
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022204E0
+MOD08_022204E0: ; 0x022204E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r1, [sp, #4]
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ mov r1, #0x1c
+ ldrsh r0, [r0, r1]
+ cmp r0, #0
+ bgt _02220504
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x30]
+ bl MOD08_022204CC
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x34]
+ bl MOD08_022204CC
+ b _0222050A
+_02220504:
+ sub r1, r0, #1
+ ldr r0, [sp, #4]
+ strh r1, [r0, #0x1c]
+_0222050A:
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x28]
+ bl MOD08_022204CC
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x2c]
+ bl MOD08_022204CC
+ ldr r4, [sp, #4]
+ mov r6, #0
+ add r7, r6, #0
+ add r5, r4, #0
+_02220522:
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ add r0, r0, #1
+ strh r0, [r4, #0x1e]
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x28
+ blt _0222053C
+ ldr r0, [r5, #0x28]
+ mov r1, #0
+ bl FUN_0200C644
+ add r6, r6, #1
+_0222053C:
+ add r7, r7, #1
+ add r4, r4, #2
+ add r5, r5, #4
+ cmp r7, #4
+ blt _02220522
+ cmp r6, #4
+ bne _02220570
+ ldr r4, [sp, #4]
+ mov r5, #0
+_0222054E:
+ ldr r0, [r4, #0x28]
+ bl FUN_0200C3DC
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #4
+ blt _0222054E
+ ldr r0, [sp, #4]
+ ldr r1, [sp]
+ ldr r0, [r0, #4]
+ bl MOD08_02212438
+ ldr r0, [sp, #4]
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02220570:
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x10]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222057C
+MOD08_0222057C: ; 0x0222057C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ mov r1, #0x38
+ add r5, r0, #0
+ add r4, r3, #0
+ bl MOD08_02228064
+ add r6, r0, #0
+ mov r0, #0xa
+ strh r0, [r6, #0x1c]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02227B70
+ ldr r1, [r6, #4]
+ add r0, sp, #0
+ bl MOD08_02215474
+ str r4, [r6, #0x28]
+ mov r0, #0
+ strh r0, [r6, #0x1e]
+ mov r7, #1
+ add r4, r6, #2
+ add r5, r6, #4
+_022205AC:
+ mov r0, #0
+ strh r0, [r4, #0x1e]
+ ldr r0, [r6, #8]
+ ldr r1, [r6, #0x10]
+ add r2, sp, #0
+ bl FUN_0200C154
+ str r0, [r5, #0x28]
+ add r7, r7, #1
+ add r4, r4, #2
+ add r5, r5, #4
+ cmp r7, #4
+ blt _022205AC
+ ldr r0, [r6, #0x28]
+ mov r1, #1
+ bl FUN_0200C8D0
+ ldr r0, [r6, #0x2c]
+ mov r1, #1
+ bl FUN_0200C8D0
+ mov r1, #0x1f
+ ldr r0, [r6, #0x28]
+ mvn r1, r1
+ mov r2, #0
+ bl FUN_0200C82C
+ mov r1, #0x1f
+ ldr r0, [r6, #0x2c]
+ mvn r1, r1
+ mov r2, #0x20
+ bl FUN_0200C82C
+ ldr r0, [r6, #0x30]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_0200C82C
+ mov r1, #0x20
+ ldr r0, [r6, #0x34]
+ add r2, r1, #0
+ bl FUN_0200C82C
+ ldr r0, [r6, #4]
+ ldr r1, _02220610 ; =MOD08_022204E0
+ add r2, r6, #0
+ bl MOD08_02212400
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02220610: .word MOD08_022204E0
+
+ thumb_func_start MOD08_02220614
+MOD08_02220614: ; 0x02220614
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r1, #0
+ mov r4, #0
+ str r0, [sp, #0x1c]
+ str r4, [sp, #0x20]
+ add r6, r5, #0
+ add r7, r5, #0
+_02220624:
+ mov r0, #0x22
+ ldrsh r0, [r6, r0]
+ add r0, r0, #1
+ strh r0, [r6, #0x22]
+ mov r0, #0x22
+ ldrsh r0, [r6, r0]
+ cmp r0, #0x14
+ blt _02220676
+ ldr r0, [r7, #0x2c]
+ bl MOD08_022204CC
+ mov r0, #0x22
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x6e
+ bne _02220676
+ mov r1, #0
+ mvn r1, r1
+ ldr r0, [r5, #4]
+ add r2, r1, #0
+ bl MOD08_02227994
+ ldr r0, [r5, #0x2c]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r5, #0x34]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r5, #0x38]
+ mov r1, #1
+ bl FUN_0200C90C
+ mov r0, #0xf
+ str r0, [r5, #0x54]
+ mov r0, #0
+ str r0, [r5, #0x58]
+_02220676:
+ add r4, r4, #1
+ add r6, r6, #2
+ add r7, r7, #4
+ cmp r4, #4
+ blt _02220624
+ mov r0, #0x22
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x32
+ bne _022206BA
+ ldr r0, [r5, #4]
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ str r2, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #0xe
+ str r0, [sp, #0x10]
+ ldr r0, _02220894 ; =0x0000FFFF
+ str r0, [sp, #0x14]
+ ldr r0, _02220898 ; =0x000003EA
+ str r0, [sp, #0x18]
+ ldr r3, [r5, #0x1c]
+ ldr r0, [r5, #0x18]
+ lsl r3, r3, #0x14
+ lsr r3, r3, #0x10
+ bl MOD08_02218B20
+ str r0, [r5, #0x3c]
+_022206BA:
+ mov r0, #0x22
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x3c
+ bne _022206F4
+ ldr r0, [r5, #4]
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ str r2, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _02220894 ; =0x0000FFFF
+ str r0, [sp, #0x14]
+ ldr r0, _02220898 ; =0x000003EA
+ str r0, [sp, #0x18]
+ ldr r3, [r5, #0x1c]
+ ldr r0, [r5, #0x18]
+ lsl r3, r3, #0x14
+ lsr r3, r3, #0x10
+ bl MOD08_02218B20
+ str r0, [r5, #0x40]
+_022206F4:
+ mov r0, #0x22
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x46
+ bne _0222072E
+ ldr r0, [r5, #4]
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ str r2, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #0xe
+ str r0, [sp, #0x10]
+ ldr r0, _02220894 ; =0x0000FFFF
+ str r0, [sp, #0x14]
+ ldr r0, _02220898 ; =0x000003EA
+ str r0, [sp, #0x18]
+ ldr r3, [r5, #0x1c]
+ ldr r0, [r5, #0x18]
+ lsl r3, r3, #0x14
+ lsr r3, r3, #0x10
+ bl MOD08_02218B20
+ str r0, [r5, #0x44]
+_0222072E:
+ mov r0, #0x22
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x50
+ bne _02220768
+ ldr r0, [r5, #4]
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ str r2, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _02220894 ; =0x0000FFFF
+ str r0, [sp, #0x14]
+ ldr r0, _02220898 ; =0x000003EA
+ str r0, [sp, #0x18]
+ ldr r3, [r5, #0x1c]
+ ldr r0, [r5, #0x18]
+ lsl r3, r3, #0x14
+ lsr r3, r3, #0x10
+ bl MOD08_02218B20
+ str r0, [r5, #0x48]
+_02220768:
+ mov r0, #0x22
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x5a
+ bne _022207A2
+ ldr r0, [r5, #4]
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ str r2, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #0xe
+ str r0, [sp, #0x10]
+ ldr r0, _02220894 ; =0x0000FFFF
+ str r0, [sp, #0x14]
+ ldr r0, _02220898 ; =0x000003EA
+ str r0, [sp, #0x18]
+ ldr r3, [r5, #0x1c]
+ ldr r0, [r5, #0x18]
+ lsl r3, r3, #0x14
+ lsr r3, r3, #0x10
+ bl MOD08_02218B20
+ str r0, [r5, #0x4c]
+_022207A2:
+ mov r0, #0x22
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x64
+ bne _022207DC
+ ldr r0, [r5, #4]
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ str r2, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _02220894 ; =0x0000FFFF
+ str r0, [sp, #0x14]
+ ldr r0, _02220898 ; =0x000003EA
+ str r0, [sp, #0x18]
+ ldr r3, [r5, #0x1c]
+ ldr r0, [r5, #0x18]
+ lsl r3, r3, #0x14
+ lsr r3, r3, #0x10
+ bl MOD08_02218B20
+ str r0, [r5, #0x50]
+_022207DC:
+ mov r1, #0x22
+ ldrsh r0, [r5, r1]
+ cmp r0, #0x6e
+ bne _02220816
+ sub r1, #0x23
+ ldr r0, [r5, #4]
+ add r2, r1, #0
+ bl MOD08_02227994
+ ldr r0, [r5, #0x2c]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r5, #0x34]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r5, #0x38]
+ mov r1, #1
+ bl FUN_0200C90C
+ mov r0, #0xf
+ str r0, [r5, #0x54]
+ mov r0, #0
+ str r0, [r5, #0x58]
+_02220816:
+ mov r0, #0x22
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x6e
+ blt _0222084E
+ ldr r0, [r5, #0x54]
+ cmp r0, #0
+ ble _02220828
+ sub r0, r0, #1
+ str r0, [r5, #0x54]
+_02220828:
+ ldr r0, [r5, #0x58]
+ cmp r0, #0xf
+ bge _02220832
+ add r0, r0, #1
+ str r0, [r5, #0x58]
+_02220832:
+ ldr r0, [r5, #0x58]
+ ldr r1, [r5, #0x54]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _0222089C ; =0x04000052
+ strh r1, [r0]
+ ldr r0, [r5, #0x54]
+ cmp r0, #0
+ bne _0222084E
+ ldr r0, [r5, #0x58]
+ cmp r0, #0xf
+ bne _0222084E
+ mov r0, #4
+ str r0, [sp, #0x20]
+_0222084E:
+ ldr r0, [sp, #0x20]
+ cmp r0, #4
+ bne _0222088A
+ mov r6, #0
+ add r4, r5, #0
+_02220858:
+ ldr r0, [r4, #0x2c]
+ bl FUN_0200C3DC
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02220858
+ mov r6, #0
+ add r4, r5, #0
+_0222086A:
+ ldr r0, [r4, #0x3c]
+ bl MOD08_02218B08
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #6
+ blt _0222086A
+ ldr r0, [r5, #4]
+ ldr r1, [sp, #0x1c]
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+_0222088A:
+ ldr r0, [r5, #0x10]
+ bl FUN_0200BC1C
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02220894: .word 0x0000FFFF
+_02220898: .word 0x000003EA
+_0222089C: .word 0x04000052
+
+ thumb_func_start MOD08_022208A0
+MOD08_022208A0: ; 0x022208A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ mov r1, #0x5c
+ str r0, [sp]
+ add r5, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0xa
+ strh r0, [r4, #0x20]
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD08_02227B70
+ ldr r1, [r4, #4]
+ add r0, sp, #0xc
+ bl MOD08_02215474
+ str r5, [r4, #0x2c]
+ mov r0, #0
+ strh r0, [r4, #0x22]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r7, #5
+ add r6, r4, #2
+ add r5, r4, #4
+_022208D4:
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r1
+ mov r0, #0x1e
+ ror r2, r0
+ add r0, r1, r2
+ add r0, r7, r0
+ strh r0, [r6, #0x22]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0x10]
+ add r2, sp, #0xc
+ bl FUN_0200C154
+ str r0, [r5, #0x2c]
+ ldr r0, [sp, #8]
+ add r7, r7, #5
+ add r0, r0, #1
+ add r6, r6, #2
+ add r5, r5, #4
+ str r0, [sp, #8]
+ cmp r0, #4
+ blt _022208D4
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_0200C8D0
+ ldr r0, [r4, #0x34]
+ mov r1, #1
+ bl FUN_0200C8D0
+ ldr r0, [sp]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [sp]
+ bl MOD08_022154D4
+ mov r1, #0
+ add r5, r0, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200782C
+ add r0, r5, #0
+ mov r1, #0x29
+ bl FUN_0200782C
+ ldr r0, [sp]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [sp]
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _02220956
+ mov r7, #0x8c
+ b _02220958
+_02220956:
+ mov r7, #0x54
+_02220958:
+ mov r6, #0
+ add r5, r4, #0
+_0222095C:
+ ldr r0, [r5, #0x2c]
+ ldr r1, [sp, #4]
+ add r2, r7, #0
+ bl FUN_0200C714
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _0222095C
+ ldr r0, [sp]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [sp]
+ bl MOD08_02227470
+ cmp r0, #3
+ ldr r0, [r4, #0x2c]
+ bne _022209A2
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x34]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x30]
+ mov r1, #0x12
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x38]
+ mov r1, #0x12
+ bl FUN_0200C6C4
+ b _022209C0
+_022209A2:
+ mov r1, #0x12
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x34]
+ mov r1, #0x12
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x30]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x38]
+ mov r1, #0xa
+ bl FUN_0200C6C4
+_022209C0:
+ mov r1, #0x1f
+ ldr r0, [r4, #0x2c]
+ mvn r1, r1
+ mov r2, #0
+ bl FUN_0200C82C
+ mov r1, #0x27
+ ldr r0, [r4, #0x38]
+ mvn r1, r1
+ mov r2, #4
+ bl FUN_0200C82C
+ ldr r0, [r4, #0x34]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_0200C82C
+ ldr r0, [r4, #0x30]
+ mov r1, #0x28
+ mov r2, #4
+ bl FUN_0200C82C
+ ldr r0, [r4, #0x2c]
+ bl FUN_0200C68C
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #4]
+ ldr r1, _02220A04 ; =MOD08_02220614
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02220A04: .word MOD08_02220614
+
+ thumb_func_start MOD08_02220A08
+MOD08_02220A08: ; 0x02220A08
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ bne _02220A8E
+ add r0, r4, #0
+ add r0, #0x60
+ bl MOD08_02218224
+ cmp r0, #0
+ bne _02220A4C
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl MOD08_02228094
+ add sp, #0xc
+ pop {r4, r5, pc}
+_02220A4C:
+ add r0, r4, #0
+ add r0, #0x60
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x28]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #4]
+ bl FUN_0200C884
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x58
+ mov r2, #0x5a
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x28]
+ ldr r3, [r4, #0x74]
+ bl MOD08_02218314
+ ldr r0, [r4, #0x28]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x3c]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x50]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0xc]
+ bl FUN_0200BC1C
+_02220A8E:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02220A94
+MOD08_02220A94: ; 0x02220A94
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r1, #0x84
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ mov r1, #1
+ str r0, [r4, #0x24]
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x58
+ strh r0, [r1]
+ mov r0, #0x58
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0x5c
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_0221552C
+ add r1, r4, #0
+ add r1, #0x5a
+ strh r0, [r1]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x28]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_022124D8
+ str r0, [r4, #0x3c]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_022124D8
+ str r0, [r4, #0x50]
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl FUN_0200C840
+ add r0, r5, #0
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r4, #0x28]
+ bl FUN_0200C6B0
+ add r0, r5, #0
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r4, #0x3c]
+ bl FUN_0200C6B0
+ add r0, r5, #0
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r4, #0x50]
+ bl FUN_0200C6B0
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02215490
+ sub r0, r0, #3
+ cmp r0, #1
+ ldr r0, [r4, #0x28]
+ bhi _02220B62
+ mov r1, #0x1e
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x3c]
+ mov r1, #0x32
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x50]
+ mov r1, #0x46
+ bl FUN_0200C6C4
+ b _02220B78
+_02220B62:
+ mov r1, #0x3c
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x3c]
+ mov r1, #0x46
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x50]
+ mov r1, #0x32
+ bl FUN_0200C6C4
+_02220B78:
+ mov r2, #0x14
+ mov r1, #0x64
+ str r2, [sp]
+ str r1, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x60
+ add r3, r1, #0
+ bl MOD08_022181A8
+ ldr r0, [r4, #4]
+ ldr r1, _02220B9C ; =MOD08_02220A08
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02220B9C: .word MOD08_02220A08
+
+ thumb_func_start MOD08_02220BA0
+MOD08_02220BA0: ; 0x02220BA0
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _02220BB4
+ cmp r0, #1
+ beq _02220CB2
+ b _02220D00
+_02220BB4:
+ add r0, r4, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02220C2E
+ mov r0, #0x22
+ ldrsh r3, [r4, r0]
+ mov r0, #0x20
+ ldrsh r1, [r4, r0]
+ mov r0, #3
+ add r2, r1, #0
+ str r3, [sp]
+ add r2, #0x30
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ add r0, #0x34
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ mov r0, #0x22
+ ldrsh r1, [r4, r0]
+ mov r0, #0xa4
+ ldrsh r0, [r4, r0]
+ add r2, r1, r0
+ mov r0, #0x20
+ ldrsh r1, [r4, r0]
+ lsl r0, r2, #0x10
+ asr r3, r0, #0x10
+ add r2, r1, #0
+ add r2, #0x30
+ lsl r2, r2, #0x10
+ str r3, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x58
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ mov r0, #0x22
+ ldrsh r1, [r4, r0]
+ mov r0, #0xa4
+ ldrsh r0, [r4, r0]
+ add r2, r1, r0
+ mov r0, #0x20
+ ldrsh r1, [r4, r0]
+ lsl r0, r2, #0x10
+ asr r3, r0, #0x10
+ add r2, r1, #0
+ add r2, #0x30
+ lsl r2, r2, #0x10
+ str r3, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x7c
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ b _02220C9C
+_02220C2E:
+ mov r0, #0x22
+ ldrsh r3, [r4, r0]
+ mov r0, #0x20
+ ldrsh r2, [r4, r0]
+ mov r0, #3
+ add r1, r2, #0
+ str r3, [sp]
+ add r1, #0x30
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ add r0, #0x34
+ asr r1, r1, #0x10
+ bl MOD08_02217E80
+ mov r0, #0x22
+ ldrsh r1, [r4, r0]
+ mov r0, #0xa4
+ ldrsh r0, [r4, r0]
+ add r1, r1, r0
+ mov r0, #0x20
+ ldrsh r2, [r4, r0]
+ lsl r0, r1, #0x10
+ asr r3, r0, #0x10
+ add r1, r2, #0
+ add r1, #0x30
+ lsl r1, r1, #0x10
+ str r3, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x58
+ asr r1, r1, #0x10
+ bl MOD08_02217E80
+ mov r0, #0x22
+ ldrsh r1, [r4, r0]
+ mov r0, #0xa4
+ ldrsh r0, [r4, r0]
+ add r1, r1, r0
+ mov r0, #0x20
+ ldrsh r2, [r4, r0]
+ lsl r0, r1, #0x10
+ asr r3, r0, #0x10
+ add r1, r2, #0
+ add r1, #0x30
+ lsl r1, r1, #0x10
+ str r3, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x7c
+ asr r1, r1, #0x10
+ bl MOD08_02217E80
+_02220C9C:
+ add r0, r4, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa0
+ strb r1, [r0]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _02220D12
+_02220CB2:
+ add r0, r4, #0
+ ldr r1, [r4, #0x28]
+ add r0, #0x58
+ mov r5, #0
+ bl MOD08_02217F08
+ cmp r0, #0
+ bne _02220CC4
+ add r5, r5, #1
+_02220CC4:
+ add r0, r4, #0
+ ldr r1, [r4, #0x24]
+ add r0, #0x34
+ bl MOD08_02217F2C
+ cmp r0, #0
+ bne _02220CD4
+ add r5, r5, #1
+_02220CD4:
+ add r0, r4, #0
+ ldr r1, [r4, #0x30]
+ add r0, #0x7c
+ bl MOD08_02217F08
+ cmp r0, #0
+ bne _02220CE4
+ add r5, r5, #1
+_02220CE4:
+ cmp r5, #3
+ blt _02220D12
+ add r0, r4, #0
+ add r0, #0xa0
+ ldrb r0, [r0]
+ cmp r0, #1
+ ldrb r0, [r4]
+ bne _02220CFA
+ sub r0, r0, #1
+ strb r0, [r4]
+ b _02220D12
+_02220CFA:
+ add r0, r0, #1
+ strb r0, [r4]
+ b _02220D12
+_02220D00:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl MOD08_02228094
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02220D12:
+ ldr r0, [r4, #0x28]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0xc]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02220D24
+MOD08_02220D24: ; 0x02220D24
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ mov r1, #0xa8
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xa1
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0xa2
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa3
+ strb r1, [r0]
+ sub r1, #9
+ ldr r0, [r4, #4]
+ add r2, r1, #0
+ bl MOD08_02227994
+ add r0, r4, #0
+ add r0, #0xa2
+ ldrb r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa3
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _02220E94 ; =0x04000052
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x24]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x20]
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x22]
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD08_022124D8
+ str r0, [r4, #0x30]
+ ldr r0, [r4, #0x24]
+ mov r1, #0x29
+ bl FUN_0200782C
+ neg r1, r0
+ add r0, r4, #0
+ add r0, #0xa4
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_0221550C
+ add r7, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_0221551C
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #4]
+ ldr r5, [r4, #0x28]
+ bl MOD08_02215574
+ add r1, r0, #0
+ add r0, r5, #0
+ add r1, r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r5]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02215504
+ str r0, [sp, #0x1c]
+ ldr r0, [r4, #4]
+ bl MOD08_02212014
+ add r3, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ lsl r0, r6, #0x14
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0xc4
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r2, r7, #0
+ bl FUN_02003B40
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #4]
+ ldr r5, [r4, #0x30]
+ bl MOD08_02215574
+ add r1, r0, #0
+ add r0, r5, #0
+ add r1, r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r5]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02215504
+ str r0, [sp, #0x20]
+ ldr r0, [r4, #4]
+ bl MOD08_02212014
+ add r3, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ lsl r0, r6, #0x14
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0xc4
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x18]
+ add r2, r7, #0
+ bl FUN_02003B40
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #4]
+ ldr r1, _02220E98 ; =MOD08_02220BA0
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02220E94: .word 0x04000052
+_02220E98: .word MOD08_02220BA0
+
+ thumb_func_start MOD08_02220E9C
+MOD08_02220E9C: ; 0x02220E9C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r6, #0
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r7, r6, #0
+ add r4, r1, #0
+ add r5, r1, #0
+_02220EAC:
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ add r0, r0, #1
+ strh r0, [r4, #0x1e]
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x20
+ blt _02220ED4
+ ldr r0, [r5, #0x30]
+ bl MOD08_022204CC
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ cmp r0, #0xa0
+ blt _02220ED4
+ ldr r0, [r5, #0x30]
+ mov r1, #0
+ bl FUN_0200C644
+ add r6, r6, #1
+_02220ED4:
+ add r7, r7, #1
+ add r4, r4, #2
+ add r5, r5, #4
+ cmp r7, #8
+ blt _02220EAC
+ cmp r6, #8
+ bne _02220F08
+ ldr r4, [sp, #4]
+ mov r5, #0
+_02220EE6:
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C3DC
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #8
+ blt _02220EE6
+ ldr r0, [sp, #4]
+ ldr r1, [sp]
+ ldr r0, [r0, #4]
+ bl MOD08_02212438
+ ldr r0, [sp, #4]
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02220F08:
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x10]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02220F14
+MOD08_02220F14: ; 0x02220F14
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ mov r1, #0x74
+ add r6, r0, #0
+ add r5, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ mov r0, #0xa
+ strh r0, [r4, #0x1c]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ ldr r1, [r4, #4]
+ add r0, sp, #0x24
+ bl MOD08_02215474
+ str r5, [r4, #0x30]
+ mov r6, #1
+ add r5, r4, #4
+ mov r7, #0x1f
+_02220F40:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0x10]
+ add r2, sp, #0x24
+ bl FUN_0200C154
+ str r0, [r5, #0x30]
+ lsr r1, r6, #0x1f
+ lsl r0, r6, #0x1f
+ sub r0, r0, r1
+ ror r0, r7
+ add r0, r1, r0
+ beq _02220F60
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_0200C8D0
+_02220F60:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #8
+ blt _02220F40
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ mov r1, #0
+ add r5, r0, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ mov r1, #0
+ str r0, [sp, #0x1c]
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldr r0, [sp, #0x1c]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #0x14
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x50
+ add r1, r7, #0
+ add r2, r6, #0
+ add r3, r5, #0
+ bl MOD08_02217E80
+ mov r7, #0
+ ldr r0, [r4, #4]
+ add r6, r7, #0
+ str r7, [sp, #0x14]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02227470
+ cmp r0, #4
+ bne _02220FE4
+ mov r0, #1
+ str r0, [sp, #0x14]
+_02220FE4:
+ add r0, r4, #0
+ str r0, [sp, #0x20]
+ add r0, #0x50
+ add r5, r4, #0
+ str r0, [sp, #0x20]
+_02220FEE:
+ ldr r0, [sp, #0x20]
+ bl MOD08_02217ECC
+ str r0, [sp, #0x18]
+ lsr r2, r7, #0x1f
+ lsl r1, r7, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ beq _02221026
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ bne _02221022
+ cmp r6, #8
+ bge _02221026
+ mov r1, #0x50
+ mov r2, #0x52
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r5, #0x30]
+ bl FUN_0200C714
+ add r5, r5, #4
+ add r6, r6, #1
+ b _02221026
+_02221022:
+ mov r0, #0
+ str r0, [sp, #0x14]
+_02221026:
+ ldr r0, [sp, #0x18]
+ add r7, r7, #1
+ cmp r0, #1
+ beq _02220FEE
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD08_02215600
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl MOD08_02215600
+ add r7, r0, #0
+ mov r6, #0
+ str r4, [sp, #0xc]
+ add r5, r4, #0
+_02221048:
+ mov r0, #8
+ sub r0, r0, r6
+ str r0, [sp, #8]
+ lsl r1, r0, #2
+ ldr r0, [sp, #0xc]
+ strh r1, [r0, #0x1e]
+ ldr r0, [r4, #4]
+ bl MOD08_02212004
+ cmp r0, #0
+ bne _022210A4
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _02221086
+ cmp r6, #4
+ ldr r0, [r5, #0x30]
+ bge _0222107E
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ b _0222109A
+_0222107E:
+ ldr r1, [sp, #0x10]
+ bl FUN_0200C6B0
+ b _0222109A
+_02221086:
+ cmp r6, #4
+ ldr r0, [r5, #0x30]
+ blt _02221094
+ add r1, r7, #0
+ bl FUN_0200C6B0
+ b _0222109A
+_02221094:
+ ldr r1, [sp, #0x10]
+ bl FUN_0200C6B0
+_0222109A:
+ ldr r0, [r5, #0x30]
+ ldr r1, [sp, #8]
+ bl FUN_0200C6C4
+ b _022210B4
+_022210A4:
+ ldr r0, [r5, #0x30]
+ add r1, r6, #0
+ bl FUN_0200C6C4
+ ldr r0, [r5, #0x30]
+ add r1, r7, #0
+ bl FUN_0200C6B0
+_022210B4:
+ ldr r0, [sp, #0xc]
+ add r6, r6, #1
+ add r0, r0, #2
+ add r5, r5, #4
+ str r0, [sp, #0xc]
+ cmp r6, #8
+ blt _02221048
+ ldr r0, [r4, #4]
+ ldr r1, _022210D0 ; =MOD08_02220E9C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022210D0: .word MOD08_02220E9C
+
+ thumb_func_start MOD08_022210D4
+MOD08_022210D4: ; 0x022210D4
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrb r0, [r5]
+ cmp r0, #0
+ beq _022210EA
+ cmp r0, #1
+ beq _02221178
+ cmp r0, #2
+ b _022211D6
+_022210EA:
+ ldr r0, [r5, #0x28]
+ cmp r0, #0xe
+ ble _02221140
+ ldr r0, [r5, #0x30]
+ ldr r1, _0222121C ; =0x3E4CCCCD
+ bl _fsub
+ str r0, [r5, #0x30]
+ ldr r0, [r5, #0x2c]
+ ldr r1, _0222121C ; =0x3E4CCCCD
+ bl _fadd
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x30]
+ bl _f2d
+ ldr r2, _02221220 ; =0x9999999A
+ ldr r3, _02221224 ; =0x3FC99999
+ bl _dleq
+ bhi _02221124
+ ldrb r0, [r5]
+ mov r1, #0
+ add r0, r0, #1
+ strb r0, [r5]
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200C644
+ b _022211FE
+_02221124:
+ mov r0, #0x36
+ ldrsb r0, [r5, r0]
+ bl _fflt
+ add r1, r0, #0
+ ldr r0, [r5, #0x2c]
+ bl _fmul
+ add r1, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r2, [r5, #0x30]
+ bl FUN_0200C884
+ b _022211FE
+_02221140:
+ add r0, r5, #0
+ add r0, #0x34
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x34
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ sub r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x35
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x34
+ ldrb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _02221228 ; =0x04000052
+ strh r1, [r0]
+ ldr r0, [r5, #0x28]
+ add r0, r0, #1
+ str r0, [r5, #0x28]
+ b _022211FE
+_02221178:
+ ldr r0, [r5, #0x3c]
+ bl MOD08_02218AF8
+ cmp r0, #0
+ bne _022211FE
+ ldr r0, [r5, #0x38]
+ bl MOD08_02218B08
+ ldr r0, [r5, #0x3c]
+ bl MOD08_02218B08
+ ldr r0, [r5, #0x24]
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ lsl r3, r4, #0x14
+ str r2, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, _0222122C ; =0x0000FFFF
+ mov r2, #2
+ str r0, [sp, #0x14]
+ ldr r0, _02221230 ; =0x0000044C
+ lsr r3, r3, #0x10
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x18]
+ bl MOD08_02218B20
+ str r0, [r5, #0x3c]
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _022211FE
+_022211D6:
+ ldr r0, [r5, #0x3c]
+ bl MOD08_02218AF8
+ cmp r0, #0
+ bne _022211FE
+ ldr r0, [r5, #0x20]
+ bl FUN_0200C5A8
+ ldr r0, [r5, #0x3c]
+ bl MOD08_02218B08
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+ add sp, #0x1c
+ pop {r4, r5, pc}
+_022211FE:
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200C5A8
+ ldr r0, [r5, #0x20]
+ bl FUN_0200C5A8
+ ldr r0, [r5, #0x24]
+ bl FUN_0200C5A8
+ ldr r0, [r5, #0xc]
+ bl FUN_0200BC1C
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ nop
+_0222121C: .word 0x3E4CCCCD
+_02221220: .word 0x9999999A
+_02221224: .word 0x3FC99999
+_02221228: .word 0x04000052
+_0222122C: .word 0x0000FFFF
+_02221230: .word 0x0000044C
+
+ thumb_func_start MOD08_02221234
+MOD08_02221234: ; 0x02221234
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ mov r1, #0x40
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD08_022124D8
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl MOD08_022124D8
+ str r0, [r4, #0x24]
+ mov r6, #0
+ str r6, [r4, #0x28]
+ add r0, r5, #0
+ sub r6, #0x20
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02217C1C
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ mul r0, r6
+ add r6, r0, #0
+ mov r0, #0xfe
+ lsl r0, r0, #0x16
+ str r0, [r4, #0x2c]
+ str r0, [r4, #0x30]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02215680
+ cmp r0, #1
+ bne _0222129E
+ mov r1, #0
+ mvn r1, r1
+ b _022212A0
+_0222129E:
+ mov r1, #1
+_022212A0:
+ add r0, r4, #0
+ add r0, #0x36
+ strb r1, [r0]
+ add r1, sp, #0x24
+ ldr r0, [r4, #0x20]
+ add r1, #2
+ add r2, sp, #0x24
+ bl FUN_0200C7A0
+ add r2, sp, #0x24
+ mov r1, #2
+ ldrsh r1, [r2, r1]
+ mov r3, #0
+ ldrsh r2, [r2, r3]
+ add r1, r1, r6
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #0x1c]
+ asr r1, r1, #0x10
+ bl FUN_0200C714
+ ldr r0, [r4, #0x1c]
+ mov r1, #2
+ bl FUN_0200C840
+ mov r0, #0x36
+ ldrsb r0, [r4, r0]
+ bl _fflt
+ add r1, r0, #0
+ ldr r0, [r4, #0x2c]
+ bl _fmul
+ add r1, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r2, [r4, #0x30]
+ bl FUN_0200C884
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ lsl r3, r6, #0x14
+ str r2, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ mov r0, #0xf
+ str r0, [sp, #0x10]
+ ldr r0, _0222147C ; =0x0000FFFF
+ mov r2, #2
+ str r0, [sp, #0x14]
+ ldr r0, _02221480 ; =0x0000044C
+ lsr r3, r3, #0x10
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x18]
+ bl MOD08_02218B20
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x24]
+ ldr r0, [r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_0201E28C
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212014
+ add r1, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ lsl r3, r6, #0x14
+ str r2, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ mov r0, #0xf
+ str r0, [sp, #0x10]
+ ldr r0, _0222147C ; =0x0000FFFF
+ mov r2, #2
+ str r0, [sp, #0x14]
+ ldr r0, _02221480 ; =0x0000044C
+ lsr r3, r3, #0x10
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x18]
+ bl MOD08_02218B20
+ str r0, [r4, #0x3c]
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD08_02227468
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, [r4, #4]
+ bl MOD08_02212004
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, sp, #0x2c
+ bl MOD08_02227564
+ add r2, sp, #0x28
+ ldr r0, [r4, #0x1c]
+ add r1, sp, #0x28
+ add r2, #2
+ bl FUN_0200C7A0
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _022213BC
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ mov r5, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x1c]
+ add r1, r5, #0
+ bl FUN_0200C6C4
+ b _022213CE
+_022213BC:
+ ldr r0, [r4, #0x1c]
+ mov r1, #2
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_0200C6C4
+ mov r5, #2
+_022213CE:
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD08_022154A8
+ add r7, r0, #0
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD08_0221549C
+ str r0, [sp, #0x1c]
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD08_022154B8
+ str r0, [sp, #0x20]
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD08_022154C4
+ ldr r1, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ str r0, [sp]
+ lsl r0, r7, #0x10
+ lsl r1, r1, #0x18
+ lsl r2, r5, #0x18
+ lsl r3, r3, #0x18
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02068E88
+ add r2, r0, #0
+ add r5, sp, #0x24
+ mov r3, #0xa
+ ldrsh r3, [r5, r3]
+ mov r1, #4
+ ldrsh r1, [r5, r1]
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0x1c]
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl FUN_0200C644
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x34
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0xf
+ add r0, #0x35
+ strb r1, [r0]
+ sub r1, #0x10
+ ldr r0, [r4, #4]
+ add r2, r1, #0
+ bl MOD08_02227994
+ add r0, r4, #0
+ add r0, #0x34
+ ldrb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ add r2, r4, #0
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _02221484 ; =0x04000052
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ ldr r1, _02221488 ; =MOD08_022210D4
+ bl MOD08_02212400
+ add r1, r4, #0
+ bl MOD08_022210D4
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222147C: .word 0x0000FFFF
+_02221480: .word 0x0000044C
+_02221484: .word 0x04000052
+_02221488: .word MOD08_022210D4
+
+ thumb_func_start MOD08_0222148C
+MOD08_0222148C: ; 0x0222148C
+ push {r3, r4, r5, lr}
+ sub sp, #0x58
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _022214A0
+ cmp r0, #1
+ beq _022214E6
+ b _02221560
+_022214A0:
+ ldr r0, [r4, #0x68]
+ mov r1, #0x20
+ lsl r0, r0, #2
+ add r2, r4, r0
+ ldr r0, [r2, #0x78]
+ lsl r0, r0, #0x10
+ asr r3, r0, #0x10
+ str r3, [sp]
+ mov r0, #0xf
+ str r0, [sp, #4]
+ ldr r2, [r2, #0x6c]
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ ldrsh r1, [r4, r1]
+ add r0, #0x30
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ ldr r2, [r4, #0x68]
+ ldr r0, [r4, #0x24]
+ lsl r2, r2, #2
+ add r2, r4, r2
+ add r2, #0x84
+ ldr r2, [r2]
+ mov r1, #2
+ bl FUN_02007558
+ ldr r0, [r4, #0x24]
+ mov r1, #0x2c
+ mov r2, #1
+ bl FUN_02007558
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_022214E6:
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD08_02217ECC
+ cmp r0, #0
+ bne _02221544
+ ldr r0, [r4, #0x68]
+ add r0, r0, #1
+ str r0, [r4, #0x68]
+ cmp r0, #2
+ ble _02221504
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _0222153A
+_02221504:
+ ldr r0, [r4, #0x58]
+ cmp r0, #0
+ bne _02221536
+ ldr r0, [r4, #4]
+ add r1, sp, #8
+ mov r2, #3
+ bl MOD08_022127A8
+ ldr r0, [r4, #0x68]
+ cmp r0, #2
+ ldr r0, [r4, #4]
+ bne _0222152A
+ bl MOD08_02212014
+ add r1, r0, #0
+ add r0, sp, #8
+ bl MOD08_0222A494
+ b _02221536
+_0222152A:
+ bl MOD08_02212014
+ add r1, r0, #0
+ add r0, sp, #8
+ bl MOD08_0222A2A4
+_02221536:
+ mov r0, #0
+ strb r0, [r4]
+_0222153A:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x20]
+_02221544:
+ mov r2, #0x30
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x32
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl FUN_02007558
+ add sp, #0x58
+ pop {r3, r4, r5, pc}
+_02221560:
+ ldr r0, [r4, #0x24]
+ mov r1, #0x2c
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x58
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_0222157C
+MOD08_0222157C: ; 0x0222157C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ mov r1, #0x90
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02227B70
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r2, r4, #0
+ ldr r0, [r4, #4]
+ add r2, #0x5c
+ bl MOD08_022275C0
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r2, r4, #0
+ ldr r0, [r4, #4]
+ add r2, #0x60
+ bl MOD08_022275C0
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _022215CE
+ mov r1, #1
+ b _022215D2
+_022215CE:
+ mov r1, #0
+ mvn r1, r1
+_022215D2:
+ add r0, r4, #0
+ add r0, #0x54
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02227470
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02227470
+ cmp r6, r0
+ bne _022215FE
+ mov r0, #1
+ b _02221600
+_022215FE:
+ mov r0, #0
+_02221600:
+ str r0, [r4, #0x58]
+ mov r1, #0
+ add r0, r5, #0
+ str r1, [r4, #0x68]
+ bl MOD08_02212498
+ add r2, r4, #0
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, #0x1c
+ add r3, sp, #0
+ bl MOD08_02227BAC
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl FUN_0200782C
+ mov r1, #0x5e
+ ldrsh r2, [r4, r1]
+ mov r3, #0x54
+ sub r0, r0, r2
+ ldrsh r2, [r4, r3]
+ cmp r2, #0
+ ble _02221672
+ add r2, r3, #0
+ add r2, #0xfb
+ str r2, [r4, #0x6c]
+ sub r3, #0xa4
+ str r3, [r4, #0x70]
+ mov r2, #0x5c
+ ldrsh r2, [r4, r2]
+ str r2, [r4, #0x74]
+ ldrsh r2, [r4, r1]
+ add r2, r2, r0
+ str r2, [r4, #0x78]
+ mov r2, #0x62
+ ldrsh r2, [r4, r2]
+ add r2, r2, r0
+ str r2, [r4, #0x7c]
+ ldrsh r1, [r4, r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ ldr r1, _022216C8 ; =0xFFFFFD76
+ add r0, #0x88
+ str r1, [r0]
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl FUN_0200782C
+ b _022216B2
+_02221672:
+ add r2, r3, #0
+ sub r2, #0xa4
+ str r2, [r4, #0x6c]
+ add r3, #0xfb
+ str r3, [r4, #0x70]
+ mov r2, #0x5c
+ ldrsh r2, [r4, r2]
+ str r2, [r4, #0x74]
+ ldrsh r2, [r4, r1]
+ add r2, r2, r0
+ str r2, [r4, #0x78]
+ mov r2, #0x62
+ ldrsh r2, [r4, r2]
+ add r2, r2, r0
+ str r2, [r4, #0x7c]
+ ldrsh r1, [r4, r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ ldr r1, _022216C8 ; =0xFFFFFD76
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x88
+ str r1, [r0]
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl FUN_0200782C
+_022216B2:
+ add r1, r4, #0
+ add r1, #0x8c
+ str r0, [r1]
+ ldr r0, [r4, #4]
+ ldr r1, _022216CC ; =MOD08_0222148C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_022216C8: .word 0xFFFFFD76
+_022216CC: .word MOD08_0222148C
+
+ thumb_func_start MOD08_022216D0
+MOD08_022216D0: ; 0x022216D0
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r2, #0
+ ldr r2, [sp, #0x10]
+ str r2, [sp]
+ mov r2, #0x50
+ sub r2, r2, r3
+ add r3, r4, #0
+ bl FUN_02007E40
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_022216E8
+MOD08_022216E8: ; 0x022216E8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #3
+ bls _022216FC
+ b _0222181E
+_022216FC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02221708: ; jump table
+ .short _02221710 - _02221708 - 2 ; case 0
+ .short _0222176C - _02221708 - 2 ; case 1
+ .short _022217AE - _02221708 - 2 ; case 2
+ .short _02221804 - _02221708 - 2 ; case 3
+_02221710:
+ ldr r2, [r4, #0x10]
+ add r2, #0x4f
+ str r2, [r4, #0x10]
+ cmp r2, #0x50
+ blt _02221738
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add sp, #4
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x20
+ strb r1, [r0]
+ ldr r1, [r4, #0x14]
+ mov r0, #1
+ eor r0, r1
+ str r0, [r4, #0x14]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, pc}
+_02221738:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _02221754
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, [r4]
+ ldr r0, [r4, #0x1c]
+ add r3, r3, #2
+ mov r1, #0
+ lsl r3, r3, #1
+ bl MOD08_022216D0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_02221754:
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, [r4]
+ mov r1, #0x50
+ add r3, r3, #2
+ ldr r0, [r4, #0x1c]
+ sub r1, r1, r2
+ lsl r3, r3, #1
+ bl MOD08_022216D0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0222176C:
+ ldr r0, [r4, #4]
+ mov r3, #0xff
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ ldr r0, [r4, #0xc]
+ lsl r3, r3, #8
+ add r2, r0, #1
+ str r2, [r4, #0xc]
+ ldr r6, [r4, #8]
+ ldr r1, [r4, #4]
+ lsl r0, r6, #8
+ add r5, r0, #0
+ add r6, #0x50
+ lsl r0, r6, #0x18
+ and r5, r3
+ lsr r0, r0, #0x18
+ lsl r1, r1, #8
+ orr r5, r0
+ ldr r0, _02221868 ; =0x04000040
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ strh r5, [r0]
+ orr r1, r3
+ strh r1, [r0, #4]
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r4, #0x20
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_022217AE:
+ ldr r0, [r4, #4]
+ mov r3, #0xff
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ ldr r0, [r4, #0xc]
+ lsl r3, r3, #8
+ add r2, r0, #1
+ str r2, [r4, #0xc]
+ ldr r6, [r4, #8]
+ ldr r1, [r4, #4]
+ lsl r0, r6, #8
+ add r5, r0, #0
+ add r6, #0x50
+ lsl r0, r6, #0x18
+ and r5, r3
+ lsr r0, r0, #0x18
+ lsl r1, r1, #8
+ orr r5, r0
+ ldr r0, _02221868 ; =0x04000040
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ strh r5, [r0]
+ orr r1, r3
+ strh r1, [r0, #4]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ cmp r0, #0x26
+ ble _022217FA
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r4, #0x20
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_022217FA:
+ mov r0, #0
+ add r4, #0x20
+ add sp, #4
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_02221804:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xe
+ mov r2, #0
+ bl FUN_02007558
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r4, #0x20
+ add sp, #4
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, pc}
+_0222181E:
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r3, [r0]
+ ldr r1, _0222186C ; =0xFFFF1FFF
+ and r1, r3
+ add r3, r0, #0
+ str r1, [r0]
+ add r3, #0x48
+ ldrh r5, [r3]
+ mov r1, #0x3f
+ bic r5, r1
+ strh r5, [r3]
+ add r3, r0, #0
+ add r3, #0x4a
+ ldrh r5, [r3]
+ bic r5, r1
+ add r1, r0, #0
+ strh r5, [r3]
+ mov r3, #0
+ add r1, #0x40
+ strh r3, [r1]
+ add r0, #0x44
+ strh r3, [r0]
+ ldr r0, [r4, #0x24]
+ add r1, r2, #0
+ bl MOD08_02212438
+ ldr r0, [r4, #0x1c]
+ ldr r2, [r4, #0x18]
+ mov r1, #0x17
+ bl FUN_02007558
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02221868: .word 0x04000040
+_0222186C: .word 0xFFFF1FFF
+
+ thumb_func_start MOD08_02221870
+MOD08_02221870: ; 0x02221870
+ push {r4, r5, r6, lr}
+ mov r1, #0x50
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x20
+ bl MOD08_02227B70
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0x1c]
+ mov r0, #0
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227468
+ cmp r0, #3
+ beq _022218B0
+ cmp r0, #4
+ bne _022218C4
+_022218B0:
+ add r0, r5, #0
+ bl MOD08_02215574
+ add r1, r0, #0
+ sub r1, r1, #1
+ lsl r1, r1, #0x18
+ mov r0, #2
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+_022218C4:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r0, r5, r0
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x17
+ bl FUN_0200782C
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x17
+ mov r2, #8
+ bl FUN_02007558
+ sub r6, #0x28
+ str r6, [r4, #8]
+ add r5, #0x28
+ mov r6, #1
+ lsl r6, r6, #0x1a
+ add r3, r6, #0
+ str r5, [r4, #4]
+ mov r1, #0
+ str r1, [r4, #0x10]
+ ldr r0, [r4, #4]
+ add r3, #0x48
+ str r0, [r4, #0xc]
+ str r1, [r4, #0x14]
+ ldr r1, [r6]
+ ldr r0, _0222197C ; =0xFFFF1FFF
+ and r1, r0
+ lsr r0, r6, #0xd
+ orr r0, r1
+ str r0, [r6]
+ ldrh r2, [r3]
+ mov r1, #0x3f
+ mov r0, #0x1f
+ bic r2, r1
+ orr r0, r2
+ mov r2, #0x20
+ orr r0, r2
+ strh r0, [r3]
+ add r3, r6, #0
+ add r3, #0x4a
+ ldrh r5, [r3]
+ mov r0, #0x1b
+ bic r5, r1
+ orr r0, r5
+ orr r0, r2
+ strh r0, [r3]
+ ldr r2, [r4, #8]
+ mov r0, #0xff
+ lsl r1, r2, #8
+ add r2, #0x50
+ lsl r0, r0, #8
+ lsl r2, r2, #0x18
+ and r1, r0
+ lsr r2, r2, #0x18
+ orr r2, r1
+ add r1, r6, #0
+ ldr r5, [r4, #0xc]
+ ldr r3, [r4, #4]
+ add r1, #0x40
+ strh r2, [r1]
+ lsl r1, r3, #8
+ and r1, r0
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ add r6, #0x44
+ strh r0, [r6]
+ ldr r0, [r4, #0x24]
+ ldr r1, _02221980 ; =MOD08_022216E8
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+ nop
+_0222197C: .word 0xFFFF1FFF
+_02221980: .word MOD08_022216E8
+
+ thumb_func_start MOD08_02221984
+MOD08_02221984: ; 0x02221984
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ mov r1, #0xe8
+ mov r2, #0xea
+ add r5, r0, #0
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #8]
+ add r0, #0xc
+ bl MOD08_02217E58
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x38
+ bl MOD08_02218524
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_0200BC1C
+ mov r1, #0
+ add r2, sp, #0
+_022219B8:
+ ldr r0, [r2]
+ cmp r0, #1
+ beq _022219EE
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #3
+ blt _022219B8
+ mov r2, #0xe8
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0xea
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #8]
+ mov r1, #1
+ sub r2, #8
+ bl FUN_02007558
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_022219EE:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022219F4
+MOD08_022219F4: ; 0x022219F4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0xf0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ str r0, [r4, #8]
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0xe8
+ strh r0, [r1]
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0xea
+ strh r0, [r1]
+ ldr r0, [r4, #8]
+ mov r1, #0x29
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0xec
+ strh r0, [r1]
+ mov r0, #0xea
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xea
+ add r1, #8
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc
+ mov r1, #1
+ mov r2, #8
+ bl MOD08_02218654
+ add r0, sp, #0x20
+ mov r1, #1
+ mov r2, #0xa
+ bl MOD08_02218654
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ ldr r1, [r4, #0x18]
+ mov r6, #0
+ add r2, r1, #0
+ mul r2, r0
+ str r2, [r4, #0x18]
+ ldr r1, [sp, #0x2c]
+ add r5, r4, #0
+ mul r0, r1
+ str r0, [sp, #0x2c]
+ mov r7, #0x64
+_02221A8C:
+ ldr r0, [r4]
+ add r1, r6, #0
+ bl MOD08_022124D8
+ str r0, [r5, #0x30]
+ add r1, r7, #0
+ bl FUN_0200C6C4
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_0200C90C
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _02221A8C
+ mov r0, #0xea
+ ldrsh r1, [r4, r0]
+ mov r0, #0xec
+ ldrsh r0, [r4, r0]
+ mov r3, #0xe8
+ ldr r2, _02221B04 ; =MOD08_02217D98
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ ldr r0, [r4, #0x30]
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x34]
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ add r0, r4, #0
+ ldrsh r3, [r4, r3]
+ add r0, #0x38
+ add r1, sp, #0x20
+ bl MOD08_0221847C
+ mov r1, #0
+ mvn r1, r1
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl MOD08_02227994
+ ldr r0, [r4]
+ ldr r1, _02221B08 ; =MOD08_02221984
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02221B04: .word MOD08_02217D98
+_02221B08: .word MOD08_02221984
+
+ thumb_func_start MOD08_02221B0C
+MOD08_02221B0C: ; 0x02221B0C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #6
+ bls _02221B1C
+ b _02221C62
+_02221B1C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02221B28: ; jump table
+ .short _02221B36 - _02221B28 - 2 ; case 0
+ .short _02221B78 - _02221B28 - 2 ; case 1
+ .short _02221BAE - _02221B28 - 2 ; case 2
+ .short _02221BC6 - _02221B28 - 2 ; case 3
+ .short _02221BF6 - _02221B28 - 2 ; case 4
+ .short _02221C0E - _02221B28 - 2 ; case 5
+ .short _02221C32 - _02221B28 - 2 ; case 6
+_02221B36:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _02221B58
+ mov r2, #0x48
+ mov r3, #0x4a
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r4, #0xc]
+ add r0, #0x10
+ bl MOD08_02217CD0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02221B58:
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r1, #0x10
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ add r0, #0x10
+ add r3, r2, #0
+ bl MOD08_02217E80
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_02221B78:
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD08_02218058
+ cmp r0, #0
+ beq _02221B92
+ ldr r0, [r4, #0xc]
+ ldr r2, [r4, #0x34]
+ mov r1, #9
+ bl FUN_02007558
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02221B92:
+ add r0, r4, #0
+ ldr r1, [r4, #0x34]
+ add r0, #0x34
+ mov r2, #0
+ mov r3, #4
+ bl MOD08_02218008
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #2
+ strh r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_02221BAE:
+ mov r0, #8
+ ldrsh r1, [r4, r0]
+ sub r1, r1, #1
+ strh r1, [r4, #8]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _02221C62
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_02221BC6:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _02221BE8
+ mov r2, #0x48
+ mov r3, #0x4a
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r4, #0xc]
+ add r0, #0x10
+ bl MOD08_02217CD0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02221BE8:
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0x20
+ strh r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_02221BF6:
+ mov r0, #8
+ ldrsh r1, [r4, r0]
+ sub r1, r1, #1
+ strh r1, [r4, #8]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _02221C62
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_02221C0E:
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD08_02218058
+ cmp r0, #0
+ beq _02221C28
+ ldr r0, [r4, #0xc]
+ ldr r2, [r4, #0x34]
+ mov r1, #9
+ bl FUN_02007558
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02221C28:
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_02221C32:
+ mov r2, #0x48
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x4a
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_02007558
+ ldr r0, [r4, #0xc]
+ mov r1, #9
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_02221C62:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02221C68
+MOD08_02221C68: ; 0x02221C68
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0xf0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ str r0, [r4, #0xc]
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x48
+ strh r0, [r1]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x4a
+ strh r0, [r1]
+ mov r1, #0
+ add r0, r4, #0
+ str r1, [sp]
+ mov r2, #3
+ str r2, [sp, #4]
+ add r0, #0x10
+ sub r2, #0x23
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add r0, r4, #0
+ ldr r2, _02221D78 ; =0x00000E38
+ add r0, #0x34
+ mov r1, #0
+ mov r3, #8
+ bl MOD08_02218008
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ ldr r1, [r4, #0x18]
+ add r2, r1, #0
+ mul r2, r0
+ str r2, [r4, #0x18]
+ ldr r1, [r4, #0x3c]
+ mul r0, r1
+ str r0, [r4, #0x3c]
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ add r7, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227470
+ add r6, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227470
+ cmp r6, #3
+ bne _02221D36
+ cmp r0, #3
+ bne _02221D36
+ mov r1, #0xa
+ add r2, r1, #0
+ ldr r0, [r4, #0xc]
+ sub r2, #0x32
+ bl FUN_02007558
+ ldr r0, [r4, #0xc]
+ mov r1, #0xb
+ mov r2, #0x28
+ bl FUN_02007558
+ b _02221D6A
+_02221D36:
+ cmp r6, #4
+ bne _02221D54
+ cmp r0, #4
+ bne _02221D54
+ ldr r0, [r4, #0xc]
+ mov r1, #0xa
+ mov r2, #0x28
+ bl FUN_02007558
+ ldr r0, [r4, #0xc]
+ mov r1, #0xb
+ mov r2, #0x28
+ bl FUN_02007558
+ b _02221D6A
+_02221D54:
+ mov r2, #0x28
+ ldr r0, [r4, #0xc]
+ mov r1, #0xa
+ mul r2, r7
+ bl FUN_02007558
+ ldr r0, [r4, #0xc]
+ mov r1, #0xb
+ mov r2, #0x28
+ bl FUN_02007558
+_02221D6A:
+ ldr r0, [r4]
+ ldr r1, _02221D7C ; =MOD08_02221B0C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02221D78: .word 0x00000E38
+_02221D7C: .word MOD08_02221B0C
+
+ thumb_func_start MOD08_02221D80
+MOD08_02221D80: ; 0x02221D80
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ add r2, r3, #0
+ ldr r4, [sp, #0x10]
+ bl FUN_0200C154
+ str r0, [r5]
+ add r6, r4, #4
+ add r3, r5, #4
+ mov r2, #4
+_02221D98:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02221D98
+ ldr r0, [r6]
+ add r2, r5, #0
+ str r0, [r3]
+ add r3, r4, #0
+ add r3, #0x28
+ ldmia r3!, {r0, r1}
+ add r2, #0x28
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ mov r0, #0x3c
+ ldrsh r0, [r4, r0]
+ strh r0, [r5, #0x3c]
+ mov r0, #0x3e
+ ldrsh r0, [r4, r0]
+ strh r0, [r5, #0x3e]
+ mov r0, #0x40
+ ldrsh r1, [r4, r0]
+ add r0, r5, #0
+ add r0, #0x40
+ strh r1, [r0]
+ ldr r0, [r4, #0x44]
+ mov r1, #0
+ str r0, [r5, #0x44]
+ str r1, [r5, #0x48]
+ ldr r0, [r5]
+ bl FUN_0200C644
+ ldr r0, [r5]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_0200C6B0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02221DF0
+MOD08_02221DF0: ; 0x02221DF0
+ ldr r3, _02221DF8 ; =0x0200C3DD
+ ldr r0, [r0]
+ bx r3
+ nop
+_02221DF8: .word 0x0200C3DD
+
+ thumb_func_start MOD08_02221DFC
+MOD08_02221DFC: ; 0x02221DFC
+ ldr r3, _02221E04 ; =0x0200C645
+ ldr r0, [r0]
+ bx r3
+ nop
+_02221E04: .word 0x0200C645
+
+ thumb_func_start MOD08_02221E08
+MOD08_02221E08: ; 0x02221E08
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, [r4, #0x48]
+ cmp r0, #0
+ bne _02221E1A
+ add sp, #0x10
+ mov r0, #1
+ pop {r4, pc}
+_02221E1A:
+ ldr r0, [r4, #0x44]
+ cmp r0, #0
+ beq _02221E2A
+ cmp r0, #1
+ beq _02221E2A
+ cmp r0, #2
+ beq _02221EAC
+ b _02221EB2
+_02221E2A:
+ add r0, r4, #4
+ bl MOD08_02217D98
+ cmp r0, #0
+ beq _02221E6A
+ add r0, r4, #0
+ add r0, #0x28
+ bl MOD08_022180C4
+ mov r0, #0x3c
+ ldrsh r1, [r4, r0]
+ ldr r0, [r4, #0x28]
+ add r0, r1, r0
+ str r0, [r4, #0x1c]
+ mov r1, #0x3e
+ ldrsh r2, [r4, r1]
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ ldr r0, [r4]
+ add r1, r2, r1
+ mov r2, #0x40
+ ldrsh r3, [r4, r2]
+ mov r2, #6
+ ldrsh r2, [r4, r2]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ b _02221EB2
+_02221E6A:
+ ldr r0, [r4, #0x44]
+ cmp r0, #1
+ bge _02221EA4
+ cmp r0, #0
+ bne _02221E92
+ ldr r1, [r4, #0xc]
+ ldr r2, _02221EB8 ; =0x00007FFF
+ lsl r1, r1, #0x10
+ str r2, [sp]
+ ldr r0, [r4, #0x10]
+ lsr r1, r1, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x18]
+ add r3, r1, #0
+ str r0, [sp, #8]
+ ldr r0, _02221EBC ; =0x0000071C
+ str r0, [sp, #0xc]
+ add r0, r4, #4
+ bl MOD08_02217D44
+_02221E92:
+ ldr r0, [r4, #8]
+ ldr r2, _02221EC0 ; =0x0000FFFF
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r3, _02221EC4 ; =0xFFFFF000
+ add r0, #0x28
+ mov r1, #0
+ bl MOD08_022180AC
+_02221EA4:
+ ldr r0, [r4, #0x44]
+ add r0, r0, #1
+ str r0, [r4, #0x44]
+ b _02221EB2
+_02221EAC:
+ add sp, #0x10
+ mov r0, #0
+ pop {r4, pc}
+_02221EB2:
+ mov r0, #1
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_02221EB8: .word 0x00007FFF
+_02221EBC: .word 0x0000071C
+_02221EC0: .word 0x0000FFFF
+_02221EC4: .word 0xFFFFF000
+
+ thumb_func_start MOD08_02221EC8
+MOD08_02221EC8: ; 0x02221EC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r7, r0, #0
+ add r0, r4, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ cmp r0, #6
+ bhi _02221F3C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02221EE4: ; jump table
+ .short _02221EF2 - _02221EE4 - 2 ; case 0
+ .short _02221F0A - _02221EE4 - 2 ; case 1
+ .short _02221F56 - _02221EE4 - 2 ; case 2
+ .short _02221F6C - _02221EE4 - 2 ; case 3
+ .short _0222200C - _02221EE4 - 2 ; case 4
+ .short _02222036 - _02221EE4 - 2 ; case 5
+ .short _02222076 - _02221EE4 - 2 ; case 6
+_02221EF2:
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD08_02221E08
+ add r0, r4, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xf0
+ str r1, [r0]
+ b _022220A0
+_02221F0A:
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r1, #0xa
+ add r0, #0xfc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0xa
+ bl _s32_div_f
+ mov r1, #0x1f
+ sub r1, r1, r0
+ lsl r1, r1, #8
+ orr r1, r0
+ ldr r0, _022220A8 ; =0x04000052
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r1, [r0]
+ ldr r0, _022220AC ; =0x00000136
+ cmp r1, r0
+ bge _02221F3E
+_02221F3C:
+ b _022220A0
+_02221F3E:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_0200C90C
+ add r0, r4, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xf0
+ str r1, [r0]
+ b _022220A0
+_02221F56:
+ ldr r1, _022220B0 ; =0x0000FFFF
+ ldr r0, _022220A8 ; =0x04000052
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xf0
+ str r1, [r0]
+ b _022220A0
+_02221F6C:
+ add r0, r4, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ cmp r0, #0
+ bgt _02221FB0
+ add r0, r4, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ mov r2, #0x4c
+ add r3, r0, #0
+ mul r3, r2
+ add r0, r4, r3
+ mov r1, #1
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ mul r2, r0
+ add r0, r4, r2
+ ldr r0, [r0, #0x58]
+ bl FUN_0200C644
+ add r0, r4, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xf8
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0xf4
+ str r1, [r0]
+_02221FB0:
+ add r0, r4, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ cmp r0, #2
+ bge _02221FC8
+ add r0, r4, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xf4
+ str r1, [r0]
+_02221FC8:
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD08_02221E08
+ add r5, r4, #0
+ add r6, r0, #0
+ mov r7, #0
+ add r5, #0x58
+_02221FD8:
+ add r0, r5, #0
+ bl MOD08_02221E08
+ str r0, [sp]
+ cmp r0, #0
+ bne _02221FEC
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02221DFC
+_02221FEC:
+ ldr r0, [sp]
+ add r7, r7, #1
+ orr r6, r0
+ add r5, #0x4c
+ cmp r7, #2
+ blt _02221FD8
+ cmp r6, #0
+ bne _022220A0
+ add r0, r4, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xf0
+ str r1, [r0]
+ b _022220A0
+_0222200C:
+ ldr r0, [r4, #0xc]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _022220A0
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200C90C
+ add r0, r4, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xf0
+ str r1, [r0]
+ b _022220A0
+_02222036:
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r1, [r0]
+ add r0, r4, #0
+ sub r1, #0xa
+ add r0, #0xfc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0xa
+ bl _s32_div_f
+ mov r1, #0x1f
+ sub r1, r1, r0
+ lsl r1, r1, #8
+ orr r1, r0
+ ldr r0, _022220A8 ; =0x04000052
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ cmp r0, #0
+ bgt _022220A0
+ add r0, r4, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xf0
+ str r1, [r0]
+ b _022220A0
+_02222076:
+ add r5, r4, #0
+ mov r6, #0
+ add r5, #0x58
+_0222207C:
+ add r0, r5, #0
+ bl MOD08_02221DF0
+ add r6, r6, #1
+ add r5, #0x4c
+ cmp r6, #2
+ blt _0222207C
+ ldr r0, [r4, #0xc]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_022220A0:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022220A8: .word 0x04000052
+_022220AC: .word 0x00000136
+_022220B0: .word 0x0000FFFF
+
+ thumb_func_start MOD08_022220B4
+MOD08_022220B4: ; 0x022220B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x48
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp, #0x10]
+ bl MOD08_02212014
+ mov r1, #1
+ lsl r1, r1, #8
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ mov r1, #8
+ add r0, #0xf4
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xf8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xf0
+ str r1, [r0]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C1C
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0x11
+ str r1, [r4, #0xc]
+ mov r1, #0
+ str r1, [r4, #0x50]
+ ldr r2, _022221EC ; =0x0000BFFF
+ neg r0, r0
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r1, _022221F0 ; =0xFFFF8000
+ ldr r0, _022221F4 ; =0x0000071C
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ lsr r1, r1, #0x12
+ add r0, #0x10
+ add r3, r1, #0
+ bl MOD08_02217D44
+ ldr r0, [r4, #0x14]
+ ldr r2, _022221F8 ; =0x0000FFFF
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r3, _022221FC ; =0xFFFFF000
+ add r0, #0x34
+ mov r1, #0
+ bl MOD08_022180AC
+ add r0, r4, #0
+ ldr r1, [r4, #0x28]
+ add r0, #0x48
+ strh r1, [r0]
+ mov r0, #1
+ str r0, [r4, #0x54]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ add r1, r4, #0
+ add r1, #0x4a
+ strh r0, [r1]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ add r1, r4, #0
+ add r1, #0x4c
+ strh r0, [r1]
+ mov r1, #0x4a
+ mov r2, #0x4c
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ bl FUN_0200C714
+ ldr r0, [r4, #0xc]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r1, [r4]
+ add r0, sp, #0x14
+ bl MOD08_02215474
+ mov r0, #0x4a
+ ldrsh r0, [r4, r0]
+ add r1, sp, #0x14
+ add r5, r4, #0
+ strh r0, [r1]
+ mov r0, #0x4c
+ ldrsh r0, [r4, r0]
+ add r7, r4, #0
+ mov r6, #0
+ strh r0, [r1, #2]
+ add r5, #0x58
+ add r7, #0xc
+_0222219A:
+ str r7, [sp]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ add r0, r5, #0
+ add r3, sp, #0x14
+ bl MOD08_02221D80
+ add r6, r6, #1
+ add r5, #0x4c
+ cmp r6, #2
+ blt _0222219A
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xfc
+ str r1, [r0]
+ ldr r0, [r4]
+ mov r2, #0x1f
+ bl MOD08_02227994
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200C90C
+ mov r6, #0
+ add r5, r4, #0
+ mov r7, #1
+_022221CE:
+ ldr r0, [r5, #0x58]
+ add r1, r7, #0
+ bl FUN_0200C90C
+ add r6, r6, #1
+ add r5, #0x4c
+ cmp r6, #2
+ blt _022221CE
+ ldr r0, [r4]
+ ldr r1, _02222200 ; =MOD08_02221EC8
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x48
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022221EC: .word 0x0000BFFF
+_022221F0: .word 0xFFFF8000
+_022221F4: .word 0x0000071C
+_022221F8: .word 0x0000FFFF
+_022221FC: .word 0xFFFFF000
+_02222200: .word MOD08_02221EC8
+
+ thumb_func_start MOD08_02222204
+MOD08_02222204: ; 0x02222204
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r2, #0x60
+ ldrsh r3, [r4, r2]
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ add r2, r3, r2
+ bl FUN_02007558
+ mov r2, #0x62
+ ldrsh r3, [r4, r2]
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x5c]
+ mov r1, #1
+ add r2, r3, r2
+ bl FUN_02007558
+ mov r1, #0x60
+ ldrsh r2, [r4, r1]
+ mov r1, #0x10
+ ldrsh r1, [r4, r1]
+ ldr r0, [r4, #0x58]
+ add r1, r2, r1
+ mov r2, #0x62
+ ldrsh r3, [r4, r2]
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r3, r3, r2
+ mov r2, #0x66
+ ldrsh r2, [r4, r2]
+ sub r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ add r0, r4, #0
+ add r0, #0x34
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD08_0221825C
+ mov r0, #0x64
+ ldrsh r0, [r4, r0]
+ bl _fflt
+ add r1, r0, #0
+ ldr r0, _02222298 ; =0x3DCCCCCD
+ bl _fmul
+ add r1, r0, #0
+ ldr r0, [sp, #4]
+ bl _fadd
+ add r1, r0, #0
+ str r1, [sp, #4]
+ ldr r0, [r4, #0x58]
+ ldr r2, [sp]
+ bl FUN_0200C884
+ mov r0, #0x64
+ ldrsh r1, [r4, r0]
+ sub r0, #0x65
+ add r4, #0x64
+ mul r0, r1
+ strh r0, [r4]
+ add sp, #8
+ pop {r4, pc}
+ nop
+_02222298: .word 0x3DCCCCCD
+
+ thumb_func_start MOD08_0222229C
+MOD08_0222229C: ; 0x0222229C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r2, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _022222B4
+ cmp r0, #1
+ beq _022222EE
+ cmp r0, #2
+ beq _0222232A
+ b _0222233C
+_022222B4:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_022183F0
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD08_02218224
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02222204
+ cmp r5, #0
+ bne _0222233C
+ mov r2, #0xa
+ str r2, [sp]
+ str r2, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x34
+ mov r1, #0xc
+ mov r3, #0xf
+ bl MOD08_022181A8
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _0222233C
+_022222EE:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_022183F0
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD08_02218224
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02222204
+ cmp r5, #0
+ bne _0222233C
+ mov r2, #0x60
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x62
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_02007558
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _0222233C
+_0222232A:
+ ldr r0, [r4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, pc}
+_0222233C:
+ ldr r0, [r4, #4]
+ bl FUN_0200BC1C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02222348
+MOD08_02222348: ; 0x02222348
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x68
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #8]
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ str r0, [r4, #0x5c]
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x60
+ strh r0, [r1]
+ ldr r0, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x62
+ strh r0, [r1]
+ ldr r0, [r4, #0x5c]
+ mov r1, #0x29
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x66
+ strh r0, [r1]
+ mov r0, #6
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x10
+ mov r1, #2
+ mov r2, #0
+ mov r3, #1
+ bl MOD08_022183C0
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x58]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x58]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r4, #0x58]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x58]
+ mov r1, #1
+ bl FUN_0200C6B0
+ mov r0, #0xf
+ str r0, [sp]
+ mov r1, #0xa
+ str r1, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x34
+ mov r2, #0xc
+ add r3, r1, #0
+ bl MOD08_022181A8
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x64
+ strh r1, [r0]
+ ldr r0, [r4]
+ mov r1, #0x1c
+ mov r2, #0xf
+ bl MOD08_02227994
+ ldr r0, [r4]
+ ldr r1, _02222414 ; =MOD08_0222229C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02222414: .word MOD08_0222229C
+
+ thumb_func_start MOD08_02222418
+MOD08_02222418: ; 0x02222418
+ mov r2, #0x12
+ ldrsh r2, [r0, r2]
+ mov r3, #0x10
+ ldrsh r0, [r0, r3]
+ neg r2, r2
+ lsl r2, r2, #0x10
+ neg r0, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ orr r0, r2
+ mov r2, #3
+ ldr r3, _02222434 ; =0x020CE1FC
+ lsl r2, r2, #8
+ bx r3
+ .align 2, 0
+_02222434: .word 0x020CE1FC
+
+ thumb_func_start MOD08_02222438
+MOD08_02222438: ; 0x02222438
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ bl MOD08_02218970
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0xc]
+ add r0, r5, #0
+ bl MOD08_02222418
+ add r0, r5, #0
+ add r0, #0x1c
+ bl MOD08_02217ECC
+ str r0, [sp, #8]
+ mov r0, #0x14
+ ldrsh r4, [r5, r0]
+ mov r0, #0x16
+ ldrsh r0, [r5, r0]
+ cmp r4, r0
+ bgt _022224D8
+ ldr r1, [sp, #0xc]
+ lsl r2, r4, #2
+ add r1, r1, r2
+ str r1, [sp]
+_0222246C:
+ ldr r1, [sp]
+ sub r0, r0, r4
+ ldr r2, [r1]
+ lsl r1, r2, #0x10
+ asr r1, r1, #0x10
+ str r1, [sp, #4]
+ lsr r1, r2, #0x10
+ lsl r1, r1, #0x10
+ asr r7, r1, #0x10
+ mov r1, #0x1e
+ ldrsh r1, [r5, r1]
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ sub r0, r7, r0
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+ mov r0, #0x1c
+ ldrsh r1, [r5, r0]
+ mov r0, #0x14
+ ldrsh r0, [r5, r0]
+ add r0, #0x28
+ sub r0, r0, r4
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r1, [sp, #4]
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ sub r6, r4, #1
+ bpl _022224B4
+ add r6, #0xc0
+_022224B4:
+ ldr r0, [sp, #4]
+ lsl r1, r7, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ bl MOD08_02218998
+ ldr r1, [sp, #0xc]
+ lsl r2, r6, #2
+ str r0, [r1, r2]
+ ldr r0, [sp]
+ add r4, r4, #1
+ add r0, r0, #4
+ str r0, [sp]
+ mov r0, #0x16
+ ldrsh r0, [r5, r0]
+ cmp r4, r0
+ ble _0222246C
+_022224D8:
+ ldr r0, [sp, #8]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022224E0
+MOD08_022224E0: ; 0x022224E0
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #4
+ bhi _02222548
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022224FA: ; jump table
+ .short _02222504 - _022224FA - 2 ; case 0
+ .short _02222536 - _022224FA - 2 ; case 1
+ .short _0222255E - _022224FA - 2 ; case 2
+ .short _022225AE - _022224FA - 2 ; case 3
+ .short _022225CE - _022224FA - 2 ; case 4
+_02222504:
+ add r0, r4, #0
+ bl MOD08_02222438
+ cmp r0, #0
+ bne _02222548
+ ldr r0, [r4, #4]
+ mov r1, #0x1f
+ add r0, r0, #1
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ mov r2, #0
+ bl MOD08_02227A00
+ mov r1, #0x1f
+ mov r2, #0
+ str r1, [sp]
+ mov r0, #0x10
+ add r4, #0x40
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r3, r2, #0
+ bl MOD08_022186D4
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_02222536:
+ add r0, r4, #0
+ bl MOD08_02222438
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD08_02218704
+ cmp r0, #0
+ bne _0222254A
+_02222548:
+ b _02222650
+_0222254A:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x18]
+ bl MOD08_02218984
+ mov r0, #0
+ add sp, #8
+ str r0, [r4, #8]
+ pop {r4, r5, r6, pc}
+_0222255E:
+ ldr r0, [r4]
+ bl MOD08_02212490
+ mov r3, #0x10
+ ldrsh r3, [r4, r3]
+ mov r1, #2
+ mov r2, #0
+ neg r3, r3
+ bl FUN_020179E0
+ ldr r0, [r4]
+ bl MOD08_02212490
+ mov r3, #0x12
+ ldrsh r3, [r4, r3]
+ mov r1, #2
+ mov r2, #3
+ neg r3, r3
+ bl FUN_020179E0
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #8
+ ble _02222650
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ add r0, #0x40
+ add r3, r2, #0
+ bl MOD08_022186D4
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_022225AE:
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02222650
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_022225CE:
+ ldr r0, [r4, #0x18]
+ bl MOD08_0221894C
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r5, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215600
+ add r1, r0, #0
+ lsl r0, r5, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ mov r0, #0
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02212014
+ add r3, r0, #0
+ lsl r0, r5, #0x18
+ mov r1, #1
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0xe
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r0, [r4]
+ bl MOD08_02212490
+ add r5, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ ldr r0, [r4]
+ add r1, r6, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_02222650:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02222654
+MOD08_02222654: ; 0x02222654
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x68
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x68
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ ldr r1, _022227BC ; =MOD08_022224E0
+ str r5, [r4]
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD08_02212400
+ str r0, [sp, #0x14]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x12]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x29
+ bl FUN_0200782C
+ mov r1, #0x12
+ ldrsh r2, [r4, r1]
+ sub r0, r2, r0
+ strh r0, [r4, #0x12]
+ mov r0, #0x10
+ ldrsh r0, [r4, r0]
+ mov r2, #1
+ sub r0, #0x28
+ strh r0, [r4, #0x10]
+ ldrsh r0, [r4, r1]
+ mov r1, #6
+ sub r0, #0x28
+ strh r0, [r4, #0x12]
+ ldr r0, [r4, #0xc]
+ bl FUN_02007558
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ add r6, r0, #0
+ mov r0, #0x12
+ ldrsh r1, [r4, r0]
+ sub r1, #8
+ strh r1, [r4, #0x14]
+ ldrsh r0, [r4, r0]
+ add r0, #0x58
+ strh r0, [r4, #0x16]
+ mov r0, #0x14
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bge _022226F0
+ mov r0, #0
+ strh r0, [r4, #0x14]
+_022226F0:
+ mov r0, #0x16
+ ldrsh r0, [r4, r0]
+ cmp r0, #0xc0
+ ble _022226FC
+ mov r0, #0xc0
+ strh r0, [r4, #0x16]
+_022226FC:
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_022155C4
+ add r7, r0, #0
+ ldr r0, [sp, #0x14]
+ bl FUN_0201B6CC
+ str r0, [sp, #0x18]
+ ldrh r0, [r4, #0x10]
+ ldrh r1, [r4, #0x12]
+ bl MOD08_02218998
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ bl MOD08_02212014
+ mov r1, #0x50
+ str r1, [sp]
+ ldr r1, [sp, #0x18]
+ str r7, [sp, #4]
+ add r1, r1, #1
+ str r1, [sp, #8]
+ ldr r1, [sp, #0x1c]
+ ldr r2, _022227C0 ; =0x0000038E
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ mov r0, #0x14
+ mov r1, #0x16
+ ldrsh r0, [r4, r0]
+ ldrsh r1, [r4, r1]
+ lsl r3, r6, #0xf
+ lsl r0, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl MOD08_022188DC
+ str r0, [r4, #0x18]
+ mov r0, #0x28
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x1c
+ mov r2, #0x50
+ add r3, r1, #0
+ bl MOD08_02217E80
+ ldr r0, [r4, #0x24]
+ add r1, r0, #0
+ mul r1, r6
+ str r1, [r4, #0x24]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02227468
+ sub r0, r0, #3
+ cmp r0, #1
+ bhi _022227AE
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ lsl r0, r5, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ add r1, r1, #1
+ lsl r1, r1, #0x18
+ mov r0, #0
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+_022227AE:
+ ldr r0, [sp, #0x14]
+ add r1, r4, #0
+ bl MOD08_022224E0
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022227BC: .word MOD08_022224E0
+_022227C0: .word 0x0000038E
+
+ thumb_func_start MOD08_022227C4
+MOD08_022227C4: ; 0x022227C4
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r2, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ bhi _02222874
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022227DE: ; jump table
+ .short _022227E6 - _022227DE - 2 ; case 0
+ .short _0222280C - _022227DE - 2 ; case 1
+ .short _0222281E - _022227DE - 2 ; case 2
+ .short _02222862 - _022227DE - 2 ; case 3
+_022227E6:
+ add r0, r4, #0
+ add r0, #0x38
+ bl MOD08_02218080
+ ldr r2, [r4, #0x38]
+ mov r1, #0x1f
+ sub r1, r1, r2
+ lsl r1, r1, #8
+ orr r2, r1
+ ldr r1, _02222880 ; =0x04000052
+ cmp r0, #0
+ strh r2, [r1]
+ bne _02222874
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #0xc]
+ b _02222874
+_0222280C:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #0x20
+ ble _02222874
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02222874
+_0222281E:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x14
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x4c]
+ cmp r0, #1
+ bne _02222844
+ ldr r1, [sp, #4]
+ mov r0, #0
+ bl _fsub
+ str r0, [sp, #4]
+_02222844:
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ bl FUN_0200C884
+ cmp r5, #0
+ bne _02222874
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02222874
+_02222862:
+ ldr r0, [r4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02222874:
+ ldr r0, [r4, #4]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02222880: .word 0x04000052
+
+ thumb_func_start MOD08_02222884
+MOD08_02222884: ; 0x02222884
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r2, r0, #0
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _022228A0
+ cmp r0, #1
+ beq _02222928
+ cmp r0, #2
+ bne _0222289C
+ b _022229B4
+_0222289C:
+ add sp, #0xc
+ pop {r4, r5, pc}
+_022228A0:
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD08_022183F0
+ mov r2, #0x38
+ mov r3, #0x3a
+ add r0, r5, #0
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ ldr r1, [r5, #8]
+ add r0, #0x14
+ bl MOD08_02217CD0
+ ldr r0, [r5, #0x10]
+ cmp r0, #1
+ bne _022228DA
+ mov r3, #0x3a
+ ldrsh r4, [r5, r3]
+ ldr r3, [r5, #0x3c]
+ mov r2, #0x38
+ sub r3, r4, r3
+ add r0, r5, #0
+ lsl r3, r3, #0x10
+ ldrsh r2, [r5, r2]
+ ldr r1, [r5, #0xc]
+ add r0, #0x14
+ asr r3, r3, #0x10
+ bl MOD08_02217C94
+_022228DA:
+ ldr r0, [r5, #8]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _022229C2
+ mov r2, #0
+ str r2, [sp]
+ ldr r0, [r5, #8]
+ mov r1, #0x10
+ add r3, r2, #0
+ bl FUN_02007E68
+ ldr r0, [r5, #0x10]
+ cmp r0, #1
+ bne _0222291E
+ ldr r0, [r5, #0xc]
+ bl MOD08_02217C08
+ mov r1, #1
+ add r4, r1, #0
+ lsl r4, r0
+ ldr r0, [r5]
+ bl MOD08_02215504
+ mov r1, #0x10
+ str r1, [sp]
+ mov r3, #0
+ lsl r2, r4, #0x10
+ str r3, [sp, #4]
+ mov r1, #4
+ lsr r2, r2, #0x10
+ str r3, [sp, #8]
+ bl FUN_02003210
+_0222291E:
+ ldr r0, [r5, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r5, #4]
+ pop {r4, r5, pc}
+_02222928:
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD08_022183F0
+ mov r2, #0x38
+ mov r3, #0x3a
+ add r0, r5, #0
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ ldr r1, [r5, #8]
+ add r0, #0x14
+ bl MOD08_02217CD0
+ ldr r0, [r5, #0x10]
+ cmp r0, #1
+ bne _02222962
+ mov r3, #0x3a
+ ldrsh r4, [r5, r3]
+ ldr r3, [r5, #0x3c]
+ mov r2, #0x38
+ sub r3, r4, r3
+ add r0, r5, #0
+ lsl r3, r3, #0x10
+ ldrsh r2, [r5, r2]
+ ldr r1, [r5, #0xc]
+ add r0, #0x14
+ asr r3, r3, #0x10
+ bl MOD08_02217C94
+_02222962:
+ ldr r0, [r5, #8]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _022229C2
+ mov r2, #0x38
+ ldrsh r2, [r5, r2]
+ ldr r0, [r5, #8]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x3a
+ ldrsh r2, [r5, r2]
+ ldr r0, [r5, #8]
+ mov r1, #1
+ bl FUN_02007558
+ ldr r0, [r5, #0x10]
+ cmp r0, #1
+ bne _022229AA
+ ldr r0, [r5, #8]
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ mov r2, #0x3a
+ ldrsh r3, [r5, r2]
+ ldr r2, [r5, #0x3c]
+ mov r1, #0x38
+ sub r2, r3, r2
+ lsl r2, r2, #0x10
+ ldrsh r1, [r5, r1]
+ ldr r0, [r5, #0xc]
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+_022229AA:
+ ldr r0, [r5, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r5, #4]
+ pop {r4, r5, pc}
+_022229B4:
+ ldr r0, [r5]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r5, #0
+ bl FUN_02016A18
+_022229C2:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022229C8
+MOD08_022229C8: ; 0x022229C8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x50
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x50
+ bl Call_FillMemWithValue
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD08_02212004
+ str r0, [r4, #0x4c]
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x10]
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #0xa
+ add r0, #0x14
+ mov r1, #0xe
+ add r3, r2, #0
+ bl MOD08_02218120
+ add r0, r4, #0
+ add r0, #0x38
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #8
+ bl MOD08_02218030
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4]
+ mov r1, #0
+ mov r2, #0x1f
+ bl MOD08_02227994
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r4, #0x4c]
+ cmp r0, #1
+ ldr r0, [r4, #0x10]
+ bne _02222A48
+ ldr r1, _02222A6C ; =0xBFB33333
+ ldr r2, _02222A70 ; =0x3FB33333
+ bl FUN_0200C884
+ b _02222A50
+_02222A48:
+ ldr r1, _02222A70 ; =0x3FB33333
+ add r2, r1, #0
+ bl FUN_0200C884
+_02222A50:
+ ldr r0, [r4, #0x10]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4]
+ ldr r1, _02222A74 ; =MOD08_022227C4
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02222A6C: .word 0xBFB33333
+_02222A70: .word 0x3FB33333
+_02222A74: .word MOD08_022227C4
+
+ thumb_func_start MOD08_02222A78
+MOD08_02222A78: ; 0x02222A78
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl MOD08_02212014
+ mov r1, #0x40
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x40
+ bl Call_FillMemWithValue
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #8]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x38]
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x3a]
+ ldr r0, [r4, #8]
+ mov r1, #0x29
+ bl FUN_0200782C
+ str r0, [r4, #0x3c]
+ mov r1, #4
+ add r0, r4, #0
+ str r1, [sp]
+ add r0, #0x14
+ mov r2, #0
+ mov r3, #1
+ bl MOD08_022183C0
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ mov r1, #0x14
+ ldrsh r1, [r4, r1]
+ mov r2, #0x10
+ add r0, r1, r0
+ mov r1, #0
+ strh r0, [r4, #0x14]
+ str r1, [sp]
+ ldr r0, [r4, #8]
+ add r3, r1, #0
+ bl FUN_02007E68
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_022124D8
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02227468
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02227468
+ cmp r5, #2
+ bne _02222B24
+ cmp r0, #4
+ beq _02222B2C
+_02222B24:
+ cmp r5, #5
+ bne _02222B5E
+ cmp r0, #3
+ bne _02222B5E
+_02222B2C:
+ ldr r0, [r4, #0xc]
+ bl MOD08_02217C08
+ mov r1, #1
+ add r5, r1, #0
+ lsl r5, r0
+ ldr r0, [r4]
+ bl MOD08_02215504
+ mov r3, #0
+ lsl r2, r5, #0x10
+ str r3, [sp]
+ mov r1, #0x10
+ str r1, [sp, #4]
+ mov r1, #4
+ lsr r2, r2, #0x10
+ str r3, [sp, #8]
+ bl FUN_02003210
+ mov r2, #1
+ str r2, [r4, #0x10]
+ ldr r0, [r4, #8]
+ mov r1, #6
+ bl FUN_02007558
+_02222B5E:
+ ldr r0, [r4]
+ ldr r1, _02222B6C ; =MOD08_02222884
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02222B6C: .word MOD08_02222884
+
+ thumb_func_start MOD08_02222B70
+MOD08_02222B70: ; 0x02222B70
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ mov r5, #0
+ cmp r0, #3
+ bhi _02222BEC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02222B8A: ; jump table
+ .short _02222B92 - _02222B8A - 2 ; case 0
+ .short _02222BAA - _02222B8A - 2 ; case 1
+ .short _02222BD0 - _02222B8A - 2 ; case 2
+ .short _02222BEA - _02222B8A - 2 ; case 3
+_02222B92:
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD08_02218704
+ cmp r0, #1
+ bne _02222BEC
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0x20
+ str r0, [r4, #0x44]
+ b _02222BEC
+_02222BAA:
+ ldr r0, [r4, #0x44]
+ sub r0, r0, #1
+ str r0, [r4, #0x44]
+ bpl _02222BEC
+ ldr r0, [r4, #8]
+ mov r1, #8
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0x18
+ add r4, #0x1c
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ add r3, r1, #0
+ bl MOD08_022186D4
+ b _02222BEC
+_02222BD0:
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD08_02218704
+ cmp r0, #1
+ bne _02222BEC
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x14]
+ bl MOD08_0221894C
+ b _02222BEC
+_02222BEA:
+ mov r5, #1
+_02222BEC:
+ add r0, r5, #0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02222BF4
+MOD08_02222BF4: ; 0x02222BF4
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02222C0A
+ cmp r0, #1
+ beq _02222C2C
+ cmp r0, #2
+ beq _02222C3E
+ pop {r4, r5, r6, pc}
+_02222C0A:
+ ldr r0, [r4, #0x48]
+ bl FUN_0200C658
+ cmp r0, #1
+ bne _02222C1E
+ ldr r0, [r4, #0x10]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+_02222C1E:
+ add r0, r4, #0
+ bl MOD08_02222B70
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_02222C2C:
+ add r0, r4, #0
+ bl MOD08_02222B70
+ cmp r0, #0
+ beq _02222CC4
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_02222C3E:
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r5, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215600
+ add r1, r0, #0
+ lsl r0, r5, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ mov r0, #0
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4, #0x10]
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02212014
+ add r3, r0, #0
+ lsl r0, r5, #0x18
+ mov r1, #1
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0xe
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r0, [r4]
+ bl MOD08_02212490
+ add r5, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ ldr r0, [r4]
+ add r1, r6, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_02222CC4:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02222CC8
+MOD08_02222CC8: ; 0x02222CC8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ mov r1, #0x4c
+ add r7, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r7, [r4]
+ add r0, r7, #0
+ bl MOD08_02215504
+ str r0, [r4, #0x18]
+ ldr r0, [r4]
+ mov r1, #0
+ mov r2, #0x10
+ bl MOD08_02227A00
+ mov r2, #8
+ str r2, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #0
+ mov r3, #0x10
+ bl MOD08_022186D4
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ str r0, [r4, #0x10]
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ ldr r0, [r4, #0x10]
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r0, r5, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ sub r0, #0x28
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x48]
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02227468
+ cmp r0, #5
+ beq _02222D58
+ cmp r0, #2
+ bne _02222D6A
+_02222D58:
+ ldr r0, [r4, #0x48]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, [r4, #0x48]
+ mov r1, #2
+ bl FUN_0200C6B0
+ b _02222DA6
+_02222D6A:
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ str r0, [sp, #0x14]
+ ldr r0, [r4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [sp, #0x14]
+ lsl r1, r1, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ add r1, r1, #1
+ lsl r1, r1, #0x18
+ mov r0, #0
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4, #0x48]
+ mov r1, #0
+ bl FUN_0200C644
+_02222DA6:
+ add r0, r7, #0
+ mov r1, #1
+ bl MOD08_022155C4
+ neg r1, r5
+ lsl r1, r1, #0x10
+ sub r6, #0x28
+ str r0, [sp, #0x18]
+ lsl r0, r6, #0x10
+ asr r0, r0, #0x10
+ neg r0, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ bl MOD08_02218998
+ add r6, r0, #0
+ add r0, r7, #0
+ bl MOD08_02212014
+ mov r1, #0x64
+ str r1, [sp]
+ ldr r1, [sp, #0x18]
+ mov r3, #5
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ str r6, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r0, r5, #0x18
+ add r5, #0x50
+ lsl r1, r5, #0x18
+ ldr r2, _02222E14 ; =0x0000038E
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ lsl r3, r3, #0xc
+ bl MOD08_022188DC
+ mov r2, #1
+ str r0, [r4, #0x14]
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x18]
+ lsl r2, r2, #8
+ mov r3, #8
+ bl FUN_02003A64
+ ldr r0, [r4]
+ ldr r1, _02222E18 ; =MOD08_02222BF4
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02222E14: .word 0x0000038E
+_02222E18: .word MOD08_02222BF4
+
+ thumb_func_start MOD08_02222E1C
+MOD08_02222E1C: ; 0x02222E1C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #3
+ bhi _02222F1E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02222E36: ; jump table
+ .short _02222E3E - _02222E36 - 2 ; case 0
+ .short _02222E8E - _02222E36 - 2 ; case 1
+ .short _02222ECC - _02222E36 - 2 ; case 2
+ .short _02222F06 - _02222E36 - 2 ; case 3
+_02222E3E:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #1
+ bne _02222E70
+ add r0, r4, #0
+ add r0, #0x14
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x54]
+ bl _fflt
+ add r1, r0, #0
+ ldr r0, [sp, #8]
+ bl _fmul
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ ldr r2, [sp, #4]
+ bl FUN_0200C884
+ b _02222F1E
+_02222E70:
+ ldr r0, [r4, #0xc]
+ mov r1, #0xa
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #5
+ str r0, [r4, #0x4c]
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x14
+ add r2, r1, #0
+ mov r3, #1
+ bl MOD08_02218120
+ b _02222F1E
+_02222E8E:
+ add r0, r4, #0
+ add r0, #0x38
+ bl MOD08_02218058
+ ldr r1, [r4, #0x38]
+ add r5, r0, #0
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #0x10]
+ lsr r1, r1, #0x10
+ bl FUN_0200C898
+ cmp r5, #0
+ bne _02222F1E
+ ldr r0, [r4, #0x4c]
+ cmp r0, #0
+ ble _02222EC4
+ sub r0, r0, #1
+ str r0, [r4, #0x4c]
+ add r0, r4, #0
+ ldr r1, [r4, #0x38]
+ ldr r2, [r4, #0x50]
+ add r0, #0x38
+ mov r3, #4
+ str r1, [r4, #0x50]
+ bl MOD08_02218008
+ b _02222F1E
+_02222EC4:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02222F1E
+_02222ECC:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #1
+ bne _02222EFE
+ add r0, r4, #0
+ add r0, #0x14
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x54]
+ bl _fflt
+ add r1, r0, #0
+ ldr r0, [sp, #8]
+ bl _fmul
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ ldr r2, [sp, #4]
+ bl FUN_0200C884
+ b _02222F1E
+_02222EFE:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02222F1E
+_02222F06:
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, pc}
+_02222F1E:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ add sp, #0xc
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD08_02222F28
+MOD08_02222F28: ; 0x02222F28
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r1, #0
+ mov r1, #0x58
+ add r5, r0, #0
+ add r7, r2, #0
+ str r3, [sp, #4]
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ add r7, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD08_02215680
+ cmp r0, #1
+ bne _02222F68
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0x54]
+ neg r6, r7
+ b _02222F6E
+_02222F68:
+ mov r0, #1
+ str r0, [r4, #0x54]
+ add r6, r7, #0
+_02222F6E:
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ mov r1, #2
+ str r0, [r4, #0x10]
+ bl FUN_0200C840
+ mov r1, #0xfe
+ lsl r1, r1, #0x16
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl FUN_0200C884
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #0xc]
+ bl FUN_0200C714
+ mov r1, #0x28
+ mul r1, r7
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #0x10]
+ asr r1, r1, #0x10
+ mov r2, #0
+ bl FUN_0200C82C
+ ldr r0, [r4, #0x10]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C6B0
+ mov r1, #0xb
+ mvn r1, r1
+ mul r1, r6
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #0x10]
+ asr r1, r1, #0x10
+ mov r2, #0xc
+ bl FUN_0200C8DC
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD08_02227470
+ cmp r0, #4
+ ldr r0, [r4, #0x10]
+ bne _02223000
+ mov r1, #1
+ bl FUN_0200C5C0
+ b _02223006
+_02223000:
+ mov r1, #0
+ bl FUN_0200C5C0
+_02223006:
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #0xa
+ add r0, #0x14
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD08_02218120
+ cmp r6, #0
+ blt _0222302E
+ add r0, r4, #0
+ ldr r1, _02223050 ; =0x0000FF48
+ ldr r2, _02223054 ; =0x0000E38D
+ add r0, #0x38
+ mov r3, #4
+ bl MOD08_02218008
+ ldr r0, _02223050 ; =0x0000FF48
+ b _0222303E
+_0222302E:
+ add r0, r4, #0
+ ldr r2, _02223058 ; =0x00001C71
+ add r0, #0x38
+ mov r1, #0
+ mov r3, #4
+ bl MOD08_02218008
+ mov r0, #0
+_0222303E:
+ str r0, [r4, #0x50]
+ ldr r0, [r4]
+ ldr r1, _0222305C ; =MOD08_02222E1C
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02223050: .word 0x0000FF48
+_02223054: .word 0x0000E38D
+_02223058: .word 0x00001C71
+_0222305C: .word MOD08_02222E1C
+
+ thumb_func_start MOD08_02223060
+MOD08_02223060: ; 0x02223060
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ str r1, [r5]
+ add r6, r3, #0
+ mov r3, #8
+ mov r1, #0xa
+ add r4, r2, #0
+ add r0, r5, #4
+ add r2, r1, #0
+ str r3, [sp]
+ bl MOD08_02218120
+ mov r0, #3
+ str r0, [r5, #0x2c]
+ mov r0, #8
+ str r0, [r5, #0x30]
+ mov r0, #0xa
+ str r0, [r5, #0x34]
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0
+ str r0, [r5, #0x28]
+ ldr r0, [r5]
+ add r2, r6, #0
+ bl FUN_0200C714
+ ldr r0, [r5]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_0200C714
+ ldr r0, [r5]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r5]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ beq _022230C8
+ mov r2, #0xfe
+ ldr r0, [r5]
+ ldr r1, _022230D4 ; =0xBF800000
+ lsl r2, r2, #0x16
+ bl FUN_0200C884
+_022230C8:
+ ldr r0, [r5]
+ mov r1, #0
+ bl FUN_0200C644
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_022230D4: .word 0xBF800000
+
+ thumb_func_start MOD08_022230D8
+MOD08_022230D8: ; 0x022230D8
+ ldr r3, _022230E0 ; =0x0200C3DD
+ ldr r0, [r0]
+ bx r3
+ nop
+_022230E0: .word 0x0200C3DD
+
+ thumb_func_start MOD08_022230E4
+MOD08_022230E4: ; 0x022230E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_0200C5E0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022230FC
+MOD08_022230FC: ; 0x022230FC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r0, r4, #4
+ bl MOD08_02218170
+ cmp r0, #1
+ bne _02223140
+ add r0, r4, #4
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD08_0221825C
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _02223132
+ ldr r1, [sp, #8]
+ mov r0, #0
+ bl _fsub
+ add r1, r0, #0
+ mov r2, #0xfe
+ ldr r0, [r4]
+ lsl r2, r2, #0x16
+ bl FUN_0200C884
+ b _02223172
+_02223132:
+ mov r2, #0xfe
+ ldr r0, [r4]
+ ldr r1, [sp, #8]
+ lsl r2, r2, #0x16
+ bl FUN_0200C884
+ b _02223172
+_02223140:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ ble _0222316C
+ sub r0, r0, #1
+ str r0, [r4, #0x2c]
+ mov r0, #8
+ str r0, [sp]
+ ldr r1, [r4, #0x30]
+ ldr r3, [r4, #0x34]
+ lsl r1, r1, #0x10
+ lsl r3, r3, #0x10
+ add r0, r4, #4
+ asr r1, r1, #0x10
+ mov r2, #0xa
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ ldr r1, [r4, #0x30]
+ ldr r0, [r4, #0x34]
+ str r0, [r4, #0x30]
+ str r1, [r4, #0x34]
+ b _02223172
+_0222316C:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_02223172:
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_02223178
+MOD08_02223178: ; 0x02223178
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #3
+ bhi _02223244
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02223190: ; jump table
+ .short _02223198 - _02223190 - 2 ; case 0
+ .short _022231CA - _02223190 - 2 ; case 1
+ .short _022231E8 - _02223190 - 2 ; case 2
+ .short _02223208 - _02223190 - 2 ; case 3
+_02223198:
+ ldr r0, [r4, #0x10]
+ cmp r0, #4
+ blt _022231C2
+ mov r0, #0
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ add r2, r4, #0
+ mov r0, #0x38
+ add r2, #0x44
+ mul r0, r1
+ add r0, r2, r0
+ bl MOD08_022230E4
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ cmp r0, #4
+ blt _022231C2
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+_022231C2:
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ b _02223244
+_022231CA:
+ mov r1, #0x1c
+ mov r2, #0x1e
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x18]
+ add r0, #0x20
+ bl MOD08_02218454
+ cmp r0, #0
+ bne _02223244
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02223244
+_022231E8:
+ add r5, r4, #0
+ mov r6, #0
+ add r5, #0x44
+_022231EE:
+ add r0, r5, #0
+ bl MOD08_022230FC
+ add r6, r6, #1
+ add r5, #0x38
+ cmp r6, #4
+ blt _022231EE
+ cmp r0, #0
+ bne _02223244
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02223244
+_02223208:
+ mov r2, #0x1c
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x1e
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_02007558
+ add r5, r4, #0
+ mov r6, #0
+ add r5, #0x44
+_02223226:
+ add r0, r5, #0
+ bl MOD08_022230D8
+ add r6, r6, #1
+ add r5, #0x38
+ cmp r6, #4
+ blt _02223226
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_02223244:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222324C
+MOD08_0222324C: ; 0x0222324C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x48
+ str r1, [sp, #4]
+ mov r1, #0x4a
+ lsl r1, r1, #2
+ add r4, r0, #0
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ bl MOD08_02228064
+ add r7, r0, #0
+ ldr r0, [sp, #4]
+ str r4, [r7]
+ str r0, [r7, #4]
+ ldr r0, [sp, #8]
+ str r0, [r7, #8]
+ add r0, r4, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r7]
+ bl MOD08_022154D4
+ str r0, [r7, #0x18]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r7, #0x1c]
+ ldr r0, [r7, #0x18]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r7, #0x1e]
+ add r0, r7, #0
+ mov r3, #1
+ add r0, #0x20
+ mov r1, #4
+ mov r2, #0
+ str r3, [sp]
+ bl MOD08_022183C0
+ mov r0, #0x1e
+ ldrsh r4, [r7, r0]
+ ldr r1, [r7]
+ add r0, sp, #0x14
+ add r4, #0x10
+ mov r5, #0
+ bl MOD08_02215474
+ add r0, r5, #0
+ add r6, r7, #0
+ str r0, [sp, #0x10]
+ add r6, #0x44
+_022232B6:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ bne _022232D0
+ str r5, [sp]
+ mov r2, #0x1c
+ lsl r3, r4, #0x10
+ ldrsh r2, [r7, r2]
+ ldr r1, [sp, #0xc]
+ add r0, r6, #0
+ asr r3, r3, #0x10
+ bl MOD08_02223060
+ b _022232EC
+_022232D0:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, sp, #0x14
+ bl FUN_0200C154
+ lsl r3, r4, #0x10
+ add r1, r0, #0
+ str r5, [sp]
+ mov r2, #0x1c
+ ldrsh r2, [r7, r2]
+ add r0, r6, #0
+ asr r3, r3, #0x10
+ bl MOD08_02223060
+_022232EC:
+ mov r0, #1
+ eor r5, r0
+ ldr r0, [sp, #0x10]
+ sub r4, #0xa
+ add r0, r0, #1
+ add r6, #0x38
+ str r0, [sp, #0x10]
+ cmp r0, #4
+ blt _022232B6
+ ldr r0, [r7]
+ ldr r1, _0222330C ; =MOD08_02223178
+ add r2, r7, #0
+ bl MOD08_02212400
+ add sp, #0x48
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222330C: .word MOD08_02223178
+
+ thumb_func_start MOD08_02223310
+MOD08_02223310: ; 0x02223310
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #6
+ bls _02223320
+ b _022234D2
+_02223320:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222332C: ; jump table
+ .short _0222333A - _0222332C - 2 ; case 0
+ .short _0222337C - _0222332C - 2 ; case 1
+ .short _022233DC - _0222332C - 2 ; case 2
+ .short _0222341C - _0222332C - 2 ; case 3
+ .short _0222343C - _0222332C - 2 ; case 4
+ .short _0222347A - _0222332C - 2 ; case 5
+ .short _022234BA - _0222332C - 2 ; case 6
+_0222333A:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _0222335C
+ mov r2, #0x14
+ mov r3, #0x16
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r4, #0x10]
+ add r0, #0x18
+ bl MOD08_02217CD0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_0222335C:
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r1, #0x18
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ add r0, #0x18
+ add r3, r2, #0
+ bl MOD08_02217E80
+ ldr r0, [r4, #0xc]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0222337C:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _0222339E
+ mov r2, #0x14
+ mov r3, #0x16
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r4, #0x10]
+ add r0, #0x18
+ bl MOD08_02217CD0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_0222339E:
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x16
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02007558
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r2, [r4, #0x3c]
+ add r0, r4, #0
+ lsl r2, r2, #5
+ neg r2, r2
+ lsl r2, r2, #0x10
+ add r0, #0x18
+ asr r2, r2, #0x10
+ add r3, r1, #0
+ bl MOD08_02217E80
+ ldr r0, [r4, #0xc]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022233DC:
+ add r0, r4, #0
+ ldr r2, [r4, #0x48]
+ add r0, #0x4c
+ add r1, #0x70
+ bl MOD08_02217FE4
+ cmp r0, #0
+ bne _022234D2
+ mov r0, #0x46
+ ldrsh r0, [r4, r0]
+ add r1, r4, #0
+ mov r2, #0x44
+ str r0, [sp]
+ mov r0, #0x16
+ ldrsh r0, [r4, r0]
+ mov r3, #0x14
+ add r1, #0x70
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ ldr r0, _022234DC ; =0xFFFE0000
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ add r0, #0x4c
+ bl MOD08_02217F50
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _022234D2
+_0222341C:
+ add r0, r4, #0
+ ldr r2, [r4, #0x48]
+ add r0, #0x4c
+ add r1, #0x70
+ bl MOD08_02217FE4
+ cmp r0, #0
+ bne _022234D2
+ ldr r0, [r4, #0x48]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _022234D2
+_0222343C:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _0222345C
+ mov r2, #0x14
+ mov r3, #0x16
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r4, #0x10]
+ add r0, #0x18
+ bl MOD08_02217CD0
+ b _022234D2
+_0222345C:
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r1, #0x18
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ add r0, #0x18
+ add r3, r2, #0
+ bl MOD08_02217E80
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _022234D2
+_0222347A:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _0222349A
+ mov r2, #0x14
+ mov r3, #0x16
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r4, #0x10]
+ add r0, #0x18
+ bl MOD08_02217CD0
+ b _022234D2
+_0222349A:
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x16
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02007558
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _022234D2
+_022234BA:
+ ldr r0, [r4, #0x48]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_022234D2:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022234DC: .word 0xFFFE0000
+
+ thumb_func_start MOD08_022234E0
+MOD08_022234E0: ; 0x022234E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ mov r1, #0x94
+ add r5, r0, #0
+ str r2, [sp, #0x10]
+ add r6, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ ldr r0, [sp, #0x10]
+ str r7, [r4, #4]
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ str r0, [r4, #0x3c]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x16]
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r2, [r4, #0x3c]
+ add r0, r4, #0
+ lsl r2, r2, #4
+ neg r2, r2
+ lsl r2, r2, #0x10
+ add r0, #0x18
+ asr r2, r2, #0x10
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ str r0, [r4, #0x40]
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x44
+ strh r0, [r1]
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x46
+ strh r0, [r1]
+ add r0, r6, #0
+ mov r1, #1
+ str r6, [r4, #0x48]
+ bl FUN_0200C5E0
+ ldr r0, [r4, #0x48]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x48]
+ mov r1, #1
+ bl FUN_0200C6B0
+ mov r0, #0x16
+ ldrsh r0, [r4, r0]
+ add r1, r4, #0
+ mov r2, #0x14
+ str r0, [sp]
+ mov r0, #0x46
+ ldrsh r0, [r4, r0]
+ mov r3, #0x44
+ add r1, #0x70
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ mov r0, #2
+ lsl r0, r0, #0x10
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ add r0, #0x4c
+ bl MOD08_02217F50
+ ldr r0, [r4]
+ ldr r1, _022235C8 ; =MOD08_02223310
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022235C8: .word MOD08_02223310
+
+ thumb_func_start MOD08_022235CC
+MOD08_022235CC: ; 0x022235CC
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r2, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ bhi _02223676
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022235E6: ; jump table
+ .short _022235EE - _022235E6 - 2 ; case 0
+ .short _0222361A - _022235E6 - 2 ; case 1
+ .short _0222363E - _022235E6 - 2 ; case 2
+ .short _02223664 - _022235E6 - 2 ; case 3
+_022235EE:
+ mov r2, #0x1a
+ ldrsh r3, [r4, r2]
+ mov r2, #0x68
+ ldrsh r2, [r4, r2]
+ mov r1, #0x18
+ ldrsh r1, [r4, r1]
+ sub r2, r3, r2
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ ldr r3, [r4, #0x14]
+ add r0, #0x1c
+ asr r2, r2, #0x10
+ bl MOD08_02217E30
+ cmp r0, #0
+ bne _02223676
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0x10
+ str r0, [r4, #0xc]
+ b _02223676
+_0222361A:
+ ldr r0, [r4, #0xc]
+ sub r0, r0, #1
+ str r0, [r4, #0xc]
+ bpl _02223676
+ ldr r0, [r4, #8]
+ mov r2, #0x10
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x40
+ add r3, r2, #0
+ bl MOD08_022186D4
+ b _02223676
+_0222363E:
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02223676
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, [r4, #0x10]
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02223676
+_02223664:
+ ldr r0, [r4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r4, pc}
+_02223676:
+ ldr r0, [r4, #4]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02223680
+MOD08_02223680: ; 0x02223680
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ mov r1, #0x6c
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x18]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x1a]
+ ldr r0, [r4, #0x10]
+ mov r1, #0x29
+ bl FUN_0200782C
+ add r1, r4, #0
+ add r1, #0x68
+ strh r0, [r1]
+ mov r0, #0x1a
+ ldrsh r0, [r4, r0]
+ mov r1, #0
+ add r0, #8
+ strh r0, [r4, #0x1a]
+ ldr r0, [r4]
+ bl MOD08_022124D8
+ str r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x10]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #2
+ mov r2, #0x10
+ bl MOD08_02218654
+ ldr r0, [r4]
+ mov r1, #0x10
+ mov r2, #0
+ bl MOD08_02227994
+ mov r1, #0x10
+ str r1, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x40
+ add r3, r2, #0
+ bl MOD08_022186D4
+ ldr r0, [r4, #0x28]
+ add r2, r4, #0
+ add r1, r0, #0
+ mul r1, r6
+ str r1, [r4, #0x28]
+ ldr r0, [r4]
+ ldr r1, _02223740 ; =MOD08_022235CC
+ bl MOD08_02212400
+ ldr r0, [r4, #4]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02223740: .word MOD08_022235CC
+
+ thumb_func_start MOD08_02223744
+MOD08_02223744: ; 0x02223744
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x38]
+ mov r4, #0
+ cmp r0, #0
+ beq _0222375A
+ cmp r0, #1
+ beq _0222378E
+ cmp r0, #2
+ beq _022237BA
+ b _022237BC
+_0222375A:
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #0
+ beq _02223774
+ mov r2, #0x16
+ ldrsh r2, [r5, r2]
+ ldr r0, [r5, #0x10]
+ mov r1, #0xd
+ bl FUN_02007558
+ b _022237BC
+_02223774:
+ ldr r0, [r5, #0x38]
+ mov r2, #0xa
+ add r0, r0, #1
+ str r0, [r5, #0x38]
+ mov r0, #0xc
+ add r5, #0x14
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl MOD08_02218120
+ b _022237BC
+_0222378E:
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD08_02218170
+ cmp r0, #0
+ ldr r0, [r5, #0x10]
+ beq _022237A8
+ mov r2, #0x16
+ ldrsh r2, [r5, r2]
+ mov r1, #0xd
+ bl FUN_02007558
+ b _022237BC
+_022237A8:
+ mov r1, #0xd
+ add r2, r1, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ ldr r0, [r5, #0x38]
+ add r0, r0, #1
+ str r0, [r5, #0x38]
+ b _022237BC
+_022237BA:
+ mov r4, #1
+_022237BC:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_022237C0
+MOD08_022237C0: ; 0x022237C0
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #0x40]
+ mov r4, #0
+ cmp r0, #0
+ beq _022237D8
+ cmp r0, #1
+ beq _0222381E
+ cmp r0, #2
+ beq _0222383A
+ b _0222383C
+_022237D8:
+ add r0, r5, #0
+ ldr r1, [r5, #0x3c]
+ add r0, #0x44
+ bl MOD08_02218360
+ add r0, r5, #0
+ add r0, #0x68
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _02223802
+ mov r2, #0xb4
+ mov r3, #0xb6
+ add r0, r5, #0
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ ldr r1, [r5, #0x3c]
+ add r0, #0x68
+ bl MOD08_02217C94
+ b _0222383C
+_02223802:
+ ldr r0, [r5, #0x40]
+ mov r1, #0x10
+ add r0, r0, #1
+ str r0, [r5, #0x40]
+ str r1, [sp]
+ mov r0, #8
+ add r5, #0x8c
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r2, r4, #0
+ mov r3, #0xe
+ bl MOD08_022186D4
+ b _0222383C
+_0222381E:
+ add r0, r5, #0
+ add r0, #0x8c
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _0222383C
+ ldr r0, [r5, #0x3c]
+ add r1, r4, #0
+ bl FUN_0200C644
+ ldr r0, [r5, #0x40]
+ add r0, r0, #1
+ str r0, [r5, #0x40]
+ b _0222383C
+_0222383A:
+ mov r4, #1
+_0222383C:
+ add r0, r4, #0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02223844
+MOD08_02223844: ; 0x02223844
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _02223856
+ cmp r0, #1
+ beq _0222386E
+ b _02223884
+_02223856:
+ add r0, r4, #0
+ bl MOD08_02223744
+ add r0, r4, #0
+ bl MOD08_022237C0
+ cmp r0, #0
+ beq _02223884
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02223884
+_0222386E:
+ ldr r0, [r4, #0x3c]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_02223884:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_0222388C
+MOD08_0222388C: ; 0x0222388C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ mov r1, #0xb8
+ add r6, r0, #0
+ add r7, r2, #0
+ str r3, [sp, #8]
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r6, [r4]
+ str r5, [r4, #4]
+ str r7, [r4, #8]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C1C
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02217C44
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ str r0, [r4, #0x10]
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ mov r0, #0xc
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x14
+ add r2, r1, #0
+ mov r3, #0xf
+ bl MOD08_02218120
+ ldr r0, [sp, #8]
+ mov r1, #1
+ str r0, [r4, #0x3c]
+ bl FUN_0200C5E0
+ ldr r0, [r4, #0x3c]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x3c]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [sp, #0xc]
+ lsl r0, r0, #5
+ add r1, r7, r0
+ add r0, r4, #0
+ add r0, #0xb4
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0xb6
+ strh r6, [r0]
+ cmp r5, #0
+ bge _02223942
+ mov r1, #7
+ b _02223944
+_02223942:
+ mov r1, #0x17
+_02223944:
+ mvn r1, r1
+ add r0, r1, #0
+ mul r0, r5
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #0x20
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x68
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD08_02217E80
+ mov r0, #0x20
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x44
+ mov r1, #5
+ mov r2, #0xa
+ mov r3, #0xc
+ bl MOD08_02218120
+ mov r0, #0x1a
+ str r0, [sp]
+ ldr r0, _02223994 ; =0x04000050
+ mov r1, #0
+ mov r2, #0x3f
+ mov r3, #0x1f
+ bl G2x_SetBlendAlpha_
+ ldr r0, [r4]
+ ldr r1, _02223998 ; =MOD08_02223844
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02223994: .word 0x04000050
+_02223998: .word MOD08_02223844
+
+ thumb_func_start MOD08_0222399C
+MOD08_0222399C: ; 0x0222399C
+ push {r3, lr}
+ sub sp, #8
+ ldr r1, [r0, #0x68]
+ cmp r1, #5
+ bhi _02223A50
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022239B2: ; jump table
+ .short _022239BE - _022239B2 - 2 ; case 0
+ .short _022239D4 - _022239B2 - 2 ; case 1
+ .short _022239EE - _022239B2 - 2 ; case 2
+ .short _02223A08 - _022239B2 - 2 ; case 3
+ .short _02223A22 - _022239B2 - 2 ; case 4
+ .short _02223A38 - _022239B2 - 2 ; case 5
+_022239BE:
+ mov r2, #0x28
+ str r2, [sp]
+ mov r1, #8
+ str r1, [sp, #4]
+ mov r1, #0
+ add r0, #0x18
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_022239D4:
+ mov r1, #0x4f
+ mvn r1, r1
+ str r1, [sp]
+ mov r1, #8
+ str r1, [sp, #4]
+ mov r1, #0
+ add r0, #0x18
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_022239EE:
+ mov r1, #0x50
+ str r1, [sp]
+ mov r1, #8
+ str r1, [sp, #4]
+ mov r1, #0
+ add r2, r1, #0
+ add r0, #0x18
+ sub r2, #0x50
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_02223A08:
+ mov r1, #0x4f
+ mvn r1, r1
+ str r1, [sp]
+ mov r1, #8
+ str r1, [sp, #4]
+ mov r1, #0
+ add r0, #0x18
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_02223A22:
+ mov r2, #0x50
+ str r2, [sp]
+ mov r1, #8
+ str r1, [sp, #4]
+ mov r1, #0
+ add r0, #0x18
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_02223A38:
+ mov r2, #0x27
+ mvn r2, r2
+ str r2, [sp]
+ mov r1, #8
+ str r1, [sp, #4]
+ mov r1, #0
+ add r0, #0x18
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_02223A50:
+ bl ErrorHandling
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02223A58
+MOD08_02223A58: ; 0x02223A58
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #4
+ bls _02223A68
+ b _02223B7C
+_02223A68:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02223A74: ; jump table
+ .short _02223A7E - _02223A74 - 2 ; case 0
+ .short _02223A9A - _02223A74 - 2 ; case 1
+ .short _02223B1C - _02223A74 - 2 ; case 2
+ .short _02223B52 - _02223A74 - 2 ; case 3
+ .short _02223B64 - _02223A74 - 2 ; case 4
+_02223A7E:
+ ldr r0, [r4, #0x6c]
+ add r0, r0, #1
+ str r0, [r4, #0x6c]
+ cmp r0, #4
+ ble _02223B7C
+ add r0, r4, #0
+ bl MOD08_0222399C
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x6c]
+ b _02223B7C
+_02223A9A:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _02223ABA
+ mov r2, #0x64
+ mov r3, #0x66
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r4, #0x14]
+ add r0, #0x18
+ bl MOD08_02217C94
+ b _02223B7C
+_02223ABA:
+ ldr r0, [r4, #0x68]
+ add r0, r0, #1
+ str r0, [r4, #0x68]
+ cmp r0, #6
+ bge _02223AEA
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r0, #0x64
+ ldrsh r1, [r4, r0]
+ mov r0, #0x18
+ ldrsh r0, [r4, r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x64
+ strh r1, [r0]
+ mov r0, #0x66
+ ldrsh r1, [r4, r0]
+ mov r0, #0x1a
+ ldrsh r0, [r4, r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x66
+ strh r1, [r0]
+ b _02223B7C
+_02223AEA:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ bl FUN_0200C90C
+ mov r1, #0x10
+ add r0, r4, #0
+ mov r2, #0
+ str r1, [sp]
+ add r0, #0x3c
+ add r3, r2, #0
+ str r1, [sp, #4]
+ bl MOD08_022186D4
+ ldr r0, _02223B88 ; =0x00007FFF
+ mov r1, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x10]
+ mov r2, #0xa
+ add r3, r1, #0
+ bl FUN_02007E68
+ b _02223B7C
+_02223B1C:
+ add r0, r4, #0
+ add r0, #0x3c
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02223B30
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_0200C644
+_02223B30:
+ ldr r0, [r4, #0x10]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _02223B7C
+ ldr r0, [r4, #0xc]
+ mov r2, #0
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ ldr r0, _02223B88 ; =0x00007FFF
+ mov r1, #0xa
+ str r0, [sp]
+ ldr r0, [r4, #0x10]
+ add r3, r2, #0
+ bl FUN_02007E68
+ b _02223B7C
+_02223B52:
+ ldr r0, [r4, #0x10]
+ bl FUN_02007F20
+ cmp r0, #0
+ bne _02223B7C
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02223B7C
+_02223B64:
+ ldr r0, [r4, #0x14]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02223B7C:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02223B88: .word 0x00007FFF
+
+ thumb_func_start MOD08_02223B8C
+MOD08_02223B8C: ; 0x02223B8C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ mov r1, #0x70
+ add r5, r0, #0
+ str r2, [sp]
+ add r6, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ ldr r0, [sp]
+ str r7, [r4, #4]
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ str r6, [r4, #0x14]
+ add r0, r6, #0
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200C6B0
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x14]
+ add r1, #0x64
+ add r2, #0x66
+ bl FUN_0200C7A0
+ ldr r0, [r4]
+ ldr r1, _02223BE4 ; =MOD08_02223A58
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02223BE4: .word MOD08_02223A58
+
+ thumb_func_start MOD08_02223BE8
+MOD08_02223BE8: ; 0x02223BE8
+ push {r3, lr}
+ sub sp, #8
+ ldr r1, [r0, #0x50]
+ cmp r1, #3
+ bhi _02223C6A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02223BFE: ; jump table
+ .short _02223C06 - _02223BFE - 2 ; case 0
+ .short _02223C1C - _02223BFE - 2 ; case 1
+ .short _02223C36 - _02223BFE - 2 ; case 2
+ .short _02223C50 - _02223BFE - 2 ; case 3
+_02223C06:
+ mov r2, #0x50
+ str r2, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ mov r1, #0
+ add r0, #0x28
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_02223C1C:
+ mov r1, #0x4f
+ mvn r1, r1
+ str r1, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ mov r1, #0
+ add r0, #0x28
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_02223C36:
+ mov r1, #0x50
+ str r1, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ mov r1, #0
+ add r2, r1, #0
+ add r0, #0x28
+ sub r2, #0x50
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_02223C50:
+ mov r1, #0x27
+ mvn r1, r1
+ str r1, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ mov r1, #0
+ add r0, #0x28
+ mov r2, #0x28
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_02223C6A:
+ bl ErrorHandling
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02223C74
+MOD08_02223C74: ; 0x02223C74
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #6
+ bhi _02223D7E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02223C8E: ; jump table
+ .short _02223C9C - _02223C8E - 2 ; case 0
+ .short _02223CB8 - _02223C8E - 2 ; case 1
+ .short _02223D24 - _02223C8E - 2 ; case 2
+ .short _02223D80 - _02223C8E - 2 ; case 3
+ .short _02223DE2 - _02223C8E - 2 ; case 4
+ .short _02223E02 - _02223C8E - 2 ; case 5
+ .short _02223E30 - _02223C8E - 2 ; case 6
+_02223C9C:
+ ldr r0, [r4, #0x54]
+ add r0, r0, #1
+ str r0, [r4, #0x54]
+ cmp r0, #1
+ ble _02223D7E
+ add r0, r4, #0
+ bl MOD08_02223BE8
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x54]
+ b _02223E48
+_02223CB8:
+ add r0, r4, #0
+ add r0, #0x28
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _02223CD8
+ mov r2, #0x4c
+ mov r3, #0x4e
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r4, #0x24]
+ add r0, #0x28
+ bl MOD08_02217C94
+ b _02223E48
+_02223CD8:
+ ldr r0, [r4, #0x50]
+ add r0, r0, #1
+ str r0, [r4, #0x50]
+ cmp r0, #4
+ bge _02223D08
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r0, #0x4c
+ ldrsh r1, [r4, r0]
+ mov r0, #0x28
+ ldrsh r0, [r4, r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ mov r0, #0x4e
+ ldrsh r1, [r4, r0]
+ mov r0, #0x2a
+ ldrsh r0, [r4, r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ b _02223E48
+_02223D08:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #8
+ str r0, [r4, #0x54]
+ ldr r0, [r4, #0x24]
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl FUN_0200C5E0
+ b _02223E48
+_02223D24:
+ ldr r0, [r4, #0x54]
+ sub r0, r0, #1
+ str r0, [r4, #0x54]
+ bpl _02223D7E
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ bl MOD08_02215504
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02214540
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, _02223E54 ; =0x0000FFFF
+ mov r1, #1
+ lsl r2, r2, #0x10
+ add r3, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ lsr r2, r2, #0x10
+ sub r3, #9
+ bl FUN_02003210
+ ldr r7, _02223E54 ; =0x0000FFFF
+ mov r6, #0
+ add r5, r4, #0
+_02223D64:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _02223D76
+ mov r1, #0xe
+ mov r2, #0x10
+ mov r3, #0
+ str r7, [sp]
+ bl FUN_02007E68
+_02223D76:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02223D64
+_02223D7E:
+ b _02223E48
+_02223D80:
+ ldr r0, [r4]
+ bl MOD08_02215504
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02223E48
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ bl MOD08_02215504
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02214540
+ add r2, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _02223E54 ; =0x0000FFFF
+ mov r1, #1
+ lsl r2, r2, #0x10
+ add r3, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ lsr r2, r2, #0x10
+ sub r3, #9
+ bl FUN_02003210
+ ldr r7, _02223E54 ; =0x0000FFFF
+ mov r6, #0
+ add r5, r4, #0
+_02223DC6:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _02223DD8
+ mov r2, #0
+ mov r1, #2
+ add r3, r2, #0
+ str r7, [sp]
+ bl FUN_02007E68
+_02223DD8:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02223DC6
+ b _02223E48
+_02223DE2:
+ ldr r0, [r4]
+ bl MOD08_02215504
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02223E48
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #4
+ str r0, [r4, #0x54]
+ str r0, [r4, #0x50]
+ mov r0, #0
+ str r0, [r4, #0x58]
+ b _02223E48
+_02223E02:
+ ldr r0, [r4, #0x54]
+ sub r0, r0, #1
+ str r0, [r4, #0x54]
+ bpl _02223E48
+ mov r0, #4
+ str r0, [r4, #0x54]
+ ldr r0, [r4, #0x50]
+ sub r0, r0, #1
+ str r0, [r4, #0x50]
+ bpl _02223E1E
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02223E48
+_02223E1E:
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x58]
+ bl FUN_0200C644
+ ldr r1, [r4, #0x58]
+ mov r0, #1
+ eor r0, r1
+ str r0, [r4, #0x58]
+ b _02223E48
+_02223E30:
+ ldr r0, [r4, #0x24]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_02223E48:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02223E54: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02223E58
+MOD08_02223E58: ; 0x02223E58
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ mov r1, #0x5c
+ add r5, r0, #0
+ str r2, [sp, #4]
+ add r7, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ ldr r0, [sp, #4]
+ str r6, [r4, #4]
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ mov r6, #0
+ add r5, r4, #0
+_02223E88:
+ ldr r0, [r4]
+ add r1, r6, #0
+ bl MOD08_022154D4
+ str r0, [r5, #0x14]
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02223E88
+ str r7, [r4, #0x24]
+ add r0, r7, #0
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl FUN_0200C6B0
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x24]
+ add r1, #0x4c
+ add r2, #0x4e
+ bl FUN_0200C7A0
+ mov r1, #0x4c
+ ldrsh r2, [r4, r1]
+ add r0, r4, #0
+ add r0, #0x4c
+ sub r2, #0x28
+ strh r2, [r0]
+ mov r2, #0x4e
+ ldrsh r3, [r4, r2]
+ add r0, r4, #0
+ add r0, #0x4e
+ sub r3, #0x28
+ strh r3, [r0]
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x24]
+ bl FUN_0200C714
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl FUN_0200C90C
+ mov r0, #0xf
+ mvn r0, r0
+ str r0, [r4, #0x54]
+ mov r0, #0x1a
+ str r0, [sp]
+ ldr r0, _02223F08 ; =0x04000050
+ mov r1, #0
+ mov r2, #0x3f
+ mov r3, #0x1f
+ bl G2x_SetBlendAlpha_
+ ldr r0, [r4]
+ ldr r1, _02223F0C ; =MOD08_02223C74
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02223F08: .word 0x04000050
+_02223F0C: .word MOD08_02223C74
+
+ thumb_func_start MOD08_02223F10
+MOD08_02223F10: ; 0x02223F10
+ push {r3, r4, r5, lr}
+ ldr r2, _02223F50 ; =0x00000AAA
+ add r4, r0, #0
+ add r5, r1, #0
+ add r0, #0x10
+ mov r1, #0
+ mov r3, #3
+ bl MOD08_02218030
+ cmp r5, #0
+ beq _02223F3C
+ mov r0, #0
+ ldr r1, [r4, #0x18]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #8]
+ mov r1, #0xa
+ mov r2, #0x10
+ bl FUN_02007558
+ b _02223F48
+_02223F3C:
+ mov r1, #0xa
+ add r2, r1, #0
+ ldr r0, [r4, #8]
+ sub r2, #0x1a
+ bl FUN_02007558
+_02223F48:
+ mov r0, #0
+ str r0, [r4, #0x4c]
+ str r0, [r4, #0x50]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02223F50: .word 0x00000AAA
+
+ thumb_func_start MOD08_02223F54
+MOD08_02223F54: ; 0x02223F54
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x4c]
+ mov r5, #0
+ cmp r0, #3
+ bhi _0222405E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02223F6E: ; jump table
+ .short _02223F76 - _02223F6E - 2 ; case 0
+ .short _02223FB6 - _02223F6E - 2 ; case 1
+ .short _02224012 - _02223F6E - 2 ; case 2
+ .short _0222405C - _02223F6E - 2 ; case 3
+_02223F76:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218080
+ ldr r0, [r4, #8]
+ ldr r2, [r4, #0x10]
+ mov r1, #9
+ bl FUN_02007558
+ ldr r0, [r4, #0x50]
+ sub r0, r0, #1
+ str r0, [r4, #0x50]
+ bpl _0222405E
+ ldr r0, [r4, #0x4c]
+ add r0, r0, #1
+ str r0, [r4, #0x4c]
+ mov r0, #0xe
+ ldrsh r3, [r4, r0]
+ mov r0, #0xc
+ ldrsh r1, [r4, r0]
+ add r0, r3, #2
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #2
+ add r4, #0x24
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD08_02217E80
+ b _0222405E
+_02223FB6:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218080
+ cmp r0, #0
+ beq _02223FCC
+ ldr r0, [r4, #8]
+ ldr r2, [r4, #0x10]
+ mov r1, #9
+ bl FUN_02007558
+_02223FCC:
+ add r0, r4, #0
+ ldr r1, [r4, #8]
+ add r0, #0x24
+ bl MOD08_02217F2C
+ cmp r0, #0
+ bne _0222405E
+ ldr r0, [r4, #0x4c]
+ mov r2, #0
+ add r0, r0, #1
+ str r0, [r4, #0x4c]
+ ldr r1, [r4, #0x10]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ add r0, #0x10
+ asr r1, r1, #0x10
+ mov r3, #3
+ bl MOD08_02218030
+ mov r0, #0xe
+ ldrsh r3, [r4, r0]
+ mov r0, #0xc
+ ldrsh r1, [r4, r0]
+ mov r0, #2
+ add r4, #0x24
+ str r3, [sp]
+ add r3, r3, #2
+ lsl r3, r3, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r2, r1, #0
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ b _0222405E
+_02224012:
+ add r0, r4, #0
+ ldr r1, [r4, #8]
+ add r0, #0x24
+ bl MOD08_02217F2C
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02218080
+ cmp r0, #0
+ ldr r0, [r4, #8]
+ beq _02224034
+ ldr r2, [r4, #0x10]
+ mov r1, #9
+ bl FUN_02007558
+ b _0222405E
+_02224034:
+ mov r2, #0xc
+ ldrsh r2, [r4, r2]
+ add r1, r5, #0
+ bl FUN_02007558
+ mov r2, #0xe
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_02007558
+ ldr r0, [r4, #8]
+ mov r1, #9
+ add r2, r5, #0
+ bl FUN_02007558
+ ldr r0, [r4, #0x4c]
+ add r0, r0, #1
+ str r0, [r4, #0x4c]
+ b _0222405E
+_0222405C:
+ mov r5, #1
+_0222405E:
+ add r0, r5, #0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02224064
+MOD08_02224064: ; 0x02224064
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02224076
+ cmp r0, #1
+ beq _022240A8
+ pop {r4, pc}
+_02224076:
+ add r0, r4, #0
+ bl MOD08_02223F54
+ cmp r0, #0
+ beq _022240B6
+ ldr r0, [r4, #0x48]
+ add r0, r0, #1
+ str r0, [r4, #0x48]
+ cmp r0, #4
+ bge _022240A0
+ ldr r1, [r4, #0x54]
+ mov r0, #1
+ eor r1, r0
+ add r0, r4, #0
+ str r1, [r4, #0x54]
+ bl MOD08_02223F10
+ add r0, r4, #0
+ bl MOD08_02223F54
+ pop {r4, pc}
+_022240A0:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022240A8:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_022240B6:
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022240B8
+MOD08_022240B8: ; 0x022240B8
+ push {r4, r5, r6, lr}
+ mov r1, #0x58
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4, #4]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02217C1C
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_02212498
+ cmp r0, #0
+ bne _02224104
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #8]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_0200782C
+ b _02224124
+_02224104:
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #8]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_0200782C
+_02224124:
+ strh r0, [r4, #0xe]
+ ldr r0, [r4, #8]
+ mov r1, #0xb
+ mov r2, #0x32
+ bl FUN_02007558
+ cmp r6, #1
+ bne _02224138
+ mov r0, #0
+ b _0222413A
+_02224138:
+ mov r0, #1
+_0222413A:
+ str r0, [r4, #0x54]
+ ldr r1, [r4, #0x54]
+ add r0, r4, #0
+ bl MOD08_02223F10
+ ldr r0, [r4, #4]
+ ldr r1, _02224150 ; =MOD08_02224064
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02224150: .word MOD08_02224064
+
+ thumb_func_start MOD08_02224154
+MOD08_02224154: ; 0x02224154
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r5, #0
+ cmp r0, #3
+ bhi _02224210
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222416C: ; jump table
+ .short _02224174 - _0222416C - 2 ; case 0
+ .short _022241A4 - _0222416C - 2 ; case 1
+ .short _022241C6 - _0222416C - 2 ; case 2
+ .short _022241F6 - _0222416C - 2 ; case 3
+_02224174:
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x10
+ bl MOD08_02218380
+ cmp r0, #0
+ beq _0222419C
+ add r0, r5, #0
+ str r0, [sp]
+ ldr r1, [r4, #0x3c]
+ ldr r2, [r4, #0x40]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0xc]
+ ldr r3, [r4, #0x24]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_022182DC
+ b _02224210
+_0222419C:
+ ldr r0, [r4, #0x38]
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ b _02224210
+_022241A4:
+ ldr r0, [r4, #0x34]
+ sub r0, r0, #1
+ str r0, [r4, #0x34]
+ bpl _02224210
+ ldr r0, [r4, #0x38]
+ mov r2, #0xa
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ mov r0, #8
+ add r4, #0x10
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl MOD08_02218120
+ b _02224210
+_022241C6:
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x10
+ bl MOD08_02218380
+ cmp r0, #0
+ beq _022241EE
+ add r0, r5, #0
+ str r0, [sp]
+ ldr r1, [r4, #0x3c]
+ ldr r2, [r4, #0x40]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0xc]
+ ldr r3, [r4, #0x24]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_022182DC
+ b _02224210
+_022241EE:
+ ldr r0, [r4, #0x38]
+ add r0, r0, #1
+ str r0, [r4, #0x38]
+ b _02224210
+_022241F6:
+ mov r1, #0xc
+ add r2, r1, #0
+ ldr r0, [r4, #0xc]
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #0xc]
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r5, #1
+_02224210:
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02224214
+MOD08_02224214: ; 0x02224214
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _0222422A
+ cmp r0, #1
+ beq _02224240
+ cmp r0, #2
+ beq _02224250
+ pop {r4, pc}
+_0222422A:
+ add r0, r4, #0
+ bl MOD08_02224154
+ cmp r0, #0
+ beq _0222425E
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0x10
+ str r0, [r4, #8]
+ pop {r4, pc}
+_02224240:
+ ldr r0, [r4, #8]
+ sub r0, r0, #1
+ str r0, [r4, #8]
+ bpl _0222425E
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, pc}
+_02224250:
+ ldr r0, [r4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_0222425E:
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02224260
+MOD08_02224260: ; 0x02224260
+ push {r3, r4, r5, lr}
+ mov r1, #0x44
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x10
+ add r2, r1, #0
+ mov r3, #0xf
+ bl MOD08_02218120
+ mov r0, #4
+ str r0, [r4, #0x34]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_0221552C
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ str r0, [r4, #0x3c]
+ ldr r0, [r4]
+ ldr r1, _022242BC ; =MOD08_02224214
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_022242BC: .word MOD08_02224214
+
+ thumb_func_start MOD08_022242C0
+MOD08_022242C0: ; 0x022242C0
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #0x74]
+ mov r1, #0x64
+ bl _s32_div_f
+ add r4, r0, #0
+ ldr r0, [r5, #0x78]
+ mov r1, #0x64
+ bl _s32_div_f
+ add r6, r0, #0
+ ldr r0, [r5, #0x70]
+ mov r1, #0x64
+ bl _s32_div_f
+ str r0, [sp]
+ add r0, r5, #0
+ lsl r1, r4, #0x10
+ lsl r3, r6, #0x10
+ add r0, #0x18
+ asr r1, r1, #0x10
+ mov r2, #0xa
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ ldr r0, [r5]
+ mov r1, #0x10
+ mov r2, #0
+ bl MOD08_02227994
+ ldr r0, [r5, #0x70]
+ mov r1, #0x64
+ bl _s32_div_f
+ mov r1, #6
+ str r1, [sp]
+ lsl r0, r0, #1
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x3c
+ mov r1, #0x10
+ mov r2, #0xa
+ mov r3, #0
+ bl MOD08_022186D4
+ mov r0, #0
+ str r0, [r5, #0x64]
+ str r0, [r5, #0x68]
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02224328
+MOD08_02224328: ; 0x02224328
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x64]
+ mov r5, #0
+ cmp r0, #3
+ bhi _022243FC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02224340: ; jump table
+ .short _02224348 - _02224340 - 2 ; case 0
+ .short _0222438E - _02224340 - 2 ; case 1
+ .short _022243E4 - _02224340 - 2 ; case 2
+ .short _022243FA - _02224340 - 2 ; case 3
+_02224348:
+ add r0, r4, #0
+ ldr r1, [r4, #0x14]
+ add r0, #0x18
+ bl MOD08_02218360
+ cmp r0, #0
+ bne _022243FC
+ ldr r0, [r4, #0x78]
+ mov r1, #0x64
+ bl _s32_div_f
+ add r6, r0, #0
+ ldr r0, [r4, #0x74]
+ mov r1, #0x64
+ bl _s32_div_f
+ add r7, r0, #0
+ ldr r0, [r4, #0x70]
+ mov r1, #0x64
+ bl _s32_div_f
+ str r0, [sp]
+ add r0, r4, #0
+ lsl r1, r6, #0x10
+ lsl r3, r7, #0x10
+ add r0, #0x18
+ asr r1, r1, #0x10
+ mov r2, #0xa
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ ldr r0, [r4, #0x64]
+ add r0, r0, #1
+ str r0, [r4, #0x64]
+ b _022243FC
+_0222438E:
+ add r0, r4, #0
+ ldr r1, [r4, #0x14]
+ add r0, #0x18
+ bl MOD08_02218360
+ cmp r0, #0
+ bne _022243FC
+ ldr r0, [r4, #0x68]
+ add r0, r0, #1
+ str r0, [r4, #0x68]
+ cmp r0, #2
+ bge _022243DC
+ add r0, r5, #0
+ str r0, [r4, #0x64]
+ ldr r0, [r4, #0x74]
+ mov r1, #0x64
+ bl _s32_div_f
+ add r6, r0, #0
+ ldr r0, [r4, #0x78]
+ mov r1, #0x64
+ bl _s32_div_f
+ add r7, r0, #0
+ ldr r0, [r4, #0x70]
+ mov r1, #0x64
+ bl _s32_div_f
+ lsl r1, r6, #0x10
+ lsl r3, r7, #0x10
+ add r4, #0x18
+ str r0, [sp]
+ add r0, r4, #0
+ asr r1, r1, #0x10
+ mov r2, #0xa
+ asr r3, r3, #0x10
+ bl MOD08_02218120
+ b _022243FC
+_022243DC:
+ ldr r0, [r4, #0x64]
+ add r0, r0, #1
+ str r0, [r4, #0x64]
+ b _022243FC
+_022243E4:
+ add r0, r4, #0
+ add r0, #0x3c
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _022243FC
+ ldr r0, [r4, #0x64]
+ mov r5, #1
+ add r0, r0, #1
+ str r0, [r4, #0x64]
+ b _022243FC
+_022243FA:
+ mov r5, #1
+_022243FC:
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02224400
+MOD08_02224400: ; 0x02224400
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r1, [r5, #0x7c]
+ mov r4, #0
+ cmp r1, #0
+ beq _02224416
+ cmp r1, #1
+ beq _02224428
+ cmp r1, #2
+ beq _02224472
+ b _02224474
+_02224416:
+ bl MOD08_022242C0
+ add r0, r5, #0
+ bl MOD08_02224328
+ ldr r0, [r5, #0x7c]
+ add r0, r0, #1
+ str r0, [r5, #0x7c]
+ b _02224474
+_02224428:
+ bl MOD08_02224328
+ cmp r0, #0
+ beq _02224474
+ ldr r0, [r5, #0x6c]
+ sub r0, r0, #1
+ str r0, [r5, #0x6c]
+ bmi _02224468
+ ldr r0, [r5, #0x70]
+ mov r1, #3
+ bl _s32_div_f
+ ldr r1, [r5, #0x70]
+ sub r0, r1, r0
+ str r0, [r5, #0x70]
+ ldr r0, [r5, #0x74]
+ mov r1, #3
+ bl _s32_div_f
+ ldr r1, [r5, #0x74]
+ sub r0, r1, r0
+ str r0, [r5, #0x74]
+ ldr r0, [r5, #0x78]
+ mov r1, #3
+ bl _s32_div_f
+ ldr r1, [r5, #0x78]
+ sub r0, r1, r0
+ str r0, [r5, #0x78]
+ add r0, r4, #0
+ str r0, [r5, #0x7c]
+ b _02224474
+_02224468:
+ ldr r0, [r5, #0x7c]
+ mov r4, #1
+ add r0, r0, #1
+ str r0, [r5, #0x7c]
+ b _02224474
+_02224472:
+ mov r4, #1
+_02224474:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02224478
+MOD08_02224478: ; 0x02224478
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #4
+ bls _02224488
+ b _022245A8
+_02224488:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02224494: ; jump table
+ .short _0222449E - _02224494 - 2 ; case 0
+ .short _022244E4 - _02224494 - 2 ; case 1
+ .short _02224544 - _02224494 - 2 ; case 2
+ .short _02224574 - _02224494 - 2 ; case 3
+ .short _02224590 - _02224494 - 2 ; case 4
+_0222449E:
+ add r0, r4, #0
+ bl MOD08_02224400
+ cmp r0, #0
+ beq _022245A8
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #0x1e
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200C5E0
+ mov r1, #0xfe
+ lsl r1, r1, #0x16
+ ldr r0, [r4, #0x14]
+ add r2, r1, #0
+ bl FUN_0200C884
+ mov r1, #0
+ mov r2, #0x10
+ str r1, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x3c
+ add r3, r2, #0
+ bl MOD08_022186D4
+ b _022245A8
+_022244E4:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ bne _02224502
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #8
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0x10]
+ b _02224508
+_02224502:
+ ble _02224508
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+_02224508:
+ mov r0, #0
+ ldr r1, [r4, #0x10]
+ mvn r0, r0
+ cmp r1, r0
+ bne _02224532
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _02224532
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #8
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #1
+ mvn r0, r0
+ str r0, [r4, #0x10]
+_02224532:
+ ldr r0, [r4, #0x14]
+ bl FUN_0200C608
+ cmp r0, #0
+ bne _022245A8
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _022245A8
+_02224544:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _022245A8
+ ldr r0, [r4, #0xc]
+ mov r1, #0x10
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ mov r2, #0
+ bl MOD08_02227994
+ mov r1, #0x10
+ mov r2, #0
+ str r1, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x3c
+ add r3, r2, #0
+ bl MOD08_022186D4
+ b _022245A8
+_02224574:
+ add r0, r4, #0
+ add r0, #0x3c
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _022245A8
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _022245A8
+_02224590:
+ ldr r0, [r4, #0x14]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_022245A8:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022245B4
+MOD08_022245B4: ; 0x022245B4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ mov r1, #0x80
+ add r6, r0, #0
+ str r2, [sp]
+ add r5, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r6, [r4]
+ ldr r0, [sp]
+ str r7, [r4, #4]
+ str r0, [r4, #8]
+ str r5, [r4, #0x14]
+ add r0, r5, #0
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl FUN_0200C61C
+ mov r0, #3
+ str r0, [r4, #0x6c]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ str r0, [r4, #0x70]
+ ldr r0, _02224618 ; =0x000005DC
+ ldr r1, _0222461C ; =MOD08_02224478
+ str r0, [r4, #0x74]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [r4, #0x78]
+ ldr r0, [r4]
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02224618: .word 0x000005DC
+_0222461C: .word MOD08_02224478
+
+ thumb_func_start MOD08_02224620
+MOD08_02224620: ; 0x02224620
+ push {r3, lr}
+ sub sp, #8
+ ldr r1, [r0, #0x34]
+ cmp r1, #3
+ bhi _02224668
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02224636: ; jump table
+ .short _0222463E - _02224636 - 2 ; case 0
+ .short _02224656 - _02224636 - 2 ; case 1
+ .short _0222463E - _02224636 - 2 ; case 2
+ .short _02224656 - _02224636 - 2 ; case 3
+_0222463E:
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #6
+ str r1, [sp, #4]
+ mov r1, #0
+ add r0, #0x10
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, pc}
+_02224656:
+ mov r1, #0
+ str r1, [sp]
+ mov r2, #6
+ str r2, [sp, #4]
+ add r0, #0x10
+ add r2, r1, #0
+ mov r3, #0x20
+ bl MOD08_02217E80
+_02224668:
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD08_0222466C
+MOD08_0222466C: ; 0x0222466C
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02224682
+ cmp r0, #1
+ beq _02224690
+ cmp r0, #2
+ beq _022246C8
+ pop {r4, pc}
+_02224682:
+ add r0, r4, #0
+ bl MOD08_02224620
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02224690:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _022246B0
+ mov r2, #0xc
+ mov r3, #0xe
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r4, #8]
+ add r0, #0x10
+ bl MOD08_02217CD0
+ pop {r4, pc}
+_022246B0:
+ ldr r0, [r4, #0x34]
+ add r0, r0, #1
+ str r0, [r4, #0x34]
+ cmp r0, #4
+ bge _022246C0
+ mov r0, #0
+ str r0, [r4]
+ pop {r4, pc}
+_022246C0:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022246C8:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022246D8
+MOD08_022246D8: ; 0x022246D8
+ push {r3, r4, r5, lr}
+ mov r1, #0x38
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4, #4]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #8]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0xe]
+ mov r0, #0
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #4]
+ ldr r1, _02224718 ; =MOD08_0222466C
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02224718: .word MOD08_0222466C
+
+ thumb_func_start MOD08_0222471C
+MOD08_0222471C: ; 0x0222471C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r2, r0, #0
+ ldr r0, [r4]
+ cmp r0, #6
+ bhi _0222477E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02224736: ; jump table
+ .short _02224744 - _02224736 - 2 ; case 0
+ .short _02224762 - _02224736 - 2 ; case 1
+ .short _022247DA - _02224736 - 2 ; case 2
+ .short _0222481E - _02224736 - 2 ; case 3
+ .short _0222485C - _02224736 - 2 ; case 4
+ .short _022248A4 - _02224736 - 2 ; case 5
+ .short _022248D4 - _02224736 - 2 ; case 6
+_02224744:
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #1
+ mov r2, #0x40
+ bl MOD08_02218654
+ ldr r1, [r4, #0x20]
+ ldr r0, [r4, #8]
+ add sp, #8
+ mul r0, r1
+ str r0, [r4, #0x20]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02224762:
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ mov r1, #0x10
+ add r0, r4, #0
+ add r2, #8
+ lsl r2, r2, #0x10
+ ldrsh r1, [r4, r1]
+ ldr r3, [r4, #0xc]
+ add r0, #0x14
+ asr r2, r2, #0x10
+ bl MOD08_02217E58
+ cmp r0, #0
+ beq _02224780
+_0222477E:
+ b _022248E2
+_02224780:
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x12
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_02007558
+ mov r0, #0x10
+ ldrsh r1, [r4, r0]
+ mov r3, #0
+ mov r0, #2
+ add r2, r1, #0
+ str r3, [sp]
+ add r2, #0x20
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ add r0, #0x14
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r4, #8]
+ mul r0, r1
+ str r0, [r4, #0x1c]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02217ECC
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, pc}
+_022247DA:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _022247F6
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, pc}
+_022247F6:
+ mov r0, #0x3c
+ ldrsh r1, [r4, r0]
+ mov r3, #0
+ mov r0, #2
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r2, [r4, #8]
+ add r0, r4, #0
+ lsl r2, r2, #5
+ add r2, r1, r2
+ lsl r2, r2, #0x10
+ add r0, #0x40
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ ldr r0, [r4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_0222481E:
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _0222483A
+ mov r2, #0x40
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, pc}
+_0222483A:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r1, #0x14
+ mov r2, #0x10
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ add r0, #0x14
+ bl MOD08_02217E80
+ ldr r0, [r4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_0222485C:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02217ECC
+ cmp r0, #0
+ ldr r0, [r4, #0xc]
+ beq _02224878
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ mov r1, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, pc}
+_02224878:
+ mov r2, #0x10
+ ldrsh r2, [r4, r2]
+ mov r1, #0
+ bl FUN_02007558
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r1, #0x40
+ mov r2, #0x3c
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ add r0, #0x40
+ bl MOD08_02217E80
+ ldr r0, [r4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022248A4:
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD08_02217ECC
+ cmp r0, #0
+ ldr r0, [r4, #0x38]
+ beq _022248C0
+ mov r2, #0x40
+ ldrsh r2, [r4, r2]
+ mov r1, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, pc}
+_022248C0:
+ mov r2, #0x3c
+ ldrsh r2, [r4, r2]
+ mov r1, #0
+ bl FUN_02007558
+ ldr r0, [r4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022248D4:
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_022248E2:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022248E8
+MOD08_022248E8: ; 0x022248E8
+ push {r3, r4, r5, lr}
+ mov r1, #0x64
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4, #4]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_02217C1C
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x12]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x38]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x3c]
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x3e]
+ ldr r0, [r4, #4]
+ ldr r1, _02224958 ; =MOD08_0222471C
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_02224958: .word MOD08_0222471C
+
+ thumb_func_start MOD08_0222495C
+MOD08_0222495C: ; 0x0222495C
+ push {lr}
+ sub sp, #0xc
+ mov r1, #0
+ str r1, [r0, #0x40]
+ mov r1, #8
+ str r1, [sp]
+ mov r1, #0xa
+ str r1, [sp, #4]
+ mov r2, #2
+ str r2, [sp, #8]
+ add r0, #0x1c
+ mov r2, #9
+ add r3, r1, #0
+ bl MOD08_022181A8
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02224980
+MOD08_02224980: ; 0x02224980
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ mov r5, #0
+ cmp r0, #3
+ bhi _02224A72
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222499A: ; jump table
+ .short _022249A2 - _0222499A - 2 ; case 0
+ .short _022249E8 - _0222499A - 2 ; case 1
+ .short _02224A2A - _0222499A - 2 ; case 2
+ .short _02224A70 - _0222499A - 2 ; case 3
+_022249A2:
+ add r0, r4, #0
+ ldr r1, [r4, #0x18]
+ add r0, #0x1c
+ bl MOD08_022183A0
+ cmp r0, #0
+ beq _022249C6
+ add r0, r5, #0
+ str r0, [sp]
+ mov r1, #0x44
+ mov r2, #0x46
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x18]
+ ldr r3, [r4, #0x30]
+ bl MOD08_022182DC
+ b _02224A72
+_022249C6:
+ ldr r0, [r4, #0x40]
+ mov r1, #9
+ add r0, r0, #1
+ str r0, [r4, #0x40]
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #2
+ add r4, #0x1c
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r2, #0xb
+ mov r3, #8
+ bl MOD08_022181A8
+ b _02224A72
+_022249E8:
+ add r0, r4, #0
+ ldr r1, [r4, #0x18]
+ add r0, #0x1c
+ bl MOD08_022183A0
+ cmp r0, #0
+ beq _02224A0C
+ add r0, r5, #0
+ str r0, [sp]
+ mov r1, #0x44
+ mov r2, #0x46
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x18]
+ ldr r3, [r4, #0x30]
+ bl MOD08_022182DC
+ b _02224A72
+_02224A0C:
+ ldr r0, [r4, #0x40]
+ mov r2, #0xa
+ add r0, r0, #1
+ str r0, [r4, #0x40]
+ str r2, [sp]
+ str r2, [sp, #4]
+ mov r0, #2
+ add r4, #0x1c
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0xb
+ mov r3, #0xf
+ bl MOD08_022181A8
+ b _02224A72
+_02224A2A:
+ add r0, r4, #0
+ ldr r1, [r4, #0x18]
+ add r0, #0x1c
+ bl MOD08_022183A0
+ cmp r0, #0
+ beq _02224A4E
+ add r0, r5, #0
+ str r0, [sp]
+ mov r1, #0x44
+ mov r2, #0x46
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x18]
+ ldr r3, [r4, #0x30]
+ bl MOD08_022182DC
+ b _02224A72
+_02224A4E:
+ mov r1, #0xc
+ add r2, r1, #0
+ ldr r0, [r4, #0x18]
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #0x18]
+ add r2, #0xf3
+ bl FUN_02007558
+ ldr r0, [r4, #0x40]
+ mov r5, #1
+ add r0, r0, #1
+ str r0, [r4, #0x40]
+ b _02224A72
+_02224A70:
+ mov r5, #1
+_02224A72:
+ add r0, r5, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD08_02224A78
+MOD08_02224A78: ; 0x02224A78
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ mov r2, #0
+ str r2, [r1]
+ add r5, r0, #0
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200C6B0
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200C644
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200C5E0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200C5F4
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0200C5C0
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0200C61C
+ mov r1, #0x37
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_0200C5B4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02224AC4
+MOD08_02224AC4: ; 0x02224AC4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ mov r4, #0
+ cmp r1, #0
+ beq _02224AD6
+ cmp r1, #1
+ beq _02224AE8
+ b _02224AEC
+_02224AD6:
+ bl FUN_0200C608
+ cmp r0, #0
+ bne _02224AEE
+ ldr r0, [r5]
+ mov r4, #1
+ add r0, r0, #1
+ str r0, [r5]
+ b _02224AEE
+_02224AE8:
+ mov r4, #1
+ b _02224AEE
+_02224AEC:
+ mov r4, #1
+_02224AEE:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02224AF4
+MOD08_02224AF4: ; 0x02224AF4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #5
+ bls _02224B02
+ b _02224C14
+_02224B02:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02224B0E: ; jump table
+ .short _02224B1A - _02224B0E - 2 ; case 0
+ .short _02224B3E - _02224B0E - 2 ; case 1
+ .short _02224B76 - _02224B0E - 2 ; case 2
+ .short _02224BA6 - _02224B0E - 2 ; case 3
+ .short _02224BCC - _02224B0E - 2 ; case 4
+ .short _02224BF2 - _02224B0E - 2 ; case 5
+_02224B1A:
+ add r0, r4, #0
+ bl MOD08_0222495C
+ ldr r0, [r4, #0x10]
+ add r1, r4, #0
+ lsl r2, r0, #2
+ add r0, r4, r2
+ add r1, #0x60
+ add r1, r1, r2
+ mov r2, #2
+ ldr r0, [r0, #0x48]
+ lsl r2, r2, #0xc
+ bl MOD08_02224A78
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02224C14
+_02224B3E:
+ add r0, r4, #0
+ bl MOD08_02224980
+ add r5, r0, #0
+ ldr r0, [r4, #0x10]
+ add r1, r4, #0
+ lsl r2, r0, #2
+ add r0, r4, r2
+ add r1, #0x60
+ ldr r0, [r0, #0x48]
+ add r1, r1, r2
+ bl MOD08_02224AC4
+ cmp r5, r0
+ bne _02224C14
+ cmp r5, #1
+ bne _02224C14
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x48]
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02224C14
+_02224B76:
+ ldr r0, [r4, #0x10]
+ add r2, r4, #0
+ add r2, #0x78
+ lsl r1, r0, #2
+ ldr r0, [r2, r1]
+ sub r0, r0, #1
+ str r0, [r2, r1]
+ ldr r1, [r4, #0x10]
+ lsl r0, r1, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x78]
+ cmp r0, #0
+ bge _02224C14
+ add r0, r1, #1
+ str r0, [r4, #0x10]
+ cmp r0, #6
+ bge _02224B9E
+ mov r0, #0
+ str r0, [r4, #0xc]
+ b _02224C14
+_02224B9E:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02224C14
+_02224BA6:
+ add r6, r4, #0
+ mov r7, #0
+ add r6, #0x60
+ add r5, r4, #0
+_02224BAE:
+ mov r2, #2
+ ldr r0, [r5, #0x48]
+ add r1, r6, #0
+ lsl r2, r2, #0xc
+ bl MOD08_02224A78
+ add r7, r7, #1
+ add r6, r6, #4
+ add r5, r5, #4
+ cmp r7, #6
+ blt _02224BAE
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02224C14
+_02224BCC:
+ add r6, r4, #0
+ mov r7, #0
+ add r6, #0x60
+ add r5, r4, #0
+_02224BD4:
+ ldr r0, [r5, #0x48]
+ add r1, r6, #0
+ bl MOD08_02224AC4
+ add r7, r7, #1
+ add r6, r6, #4
+ add r5, r5, #4
+ cmp r7, #6
+ blt _02224BD4
+ cmp r0, #1
+ bne _02224C14
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02224C14
+_02224BF2:
+ mov r6, #0
+ add r5, r4, #0
+_02224BF6:
+ ldr r0, [r5, #0x48]
+ bl FUN_0200C3DC
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #6
+ blt _02224BF6
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_02224C14:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02224C1C
+MOD08_02224C1C: ; 0x02224C1C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x50
+ str r1, [sp]
+ mov r1, #0x90
+ add r4, r0, #0
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ bl MOD08_02228064
+ ldr r1, [sp]
+ str r4, [r0]
+ str r1, [r0, #4]
+ ldr r1, [sp, #4]
+ str r0, [sp, #0x14]
+ str r1, [r0, #8]
+ ldr r0, [r0]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0]
+ bl MOD08_022154D4
+ ldr r1, [sp, #0x14]
+ str r0, [r1, #0x18]
+ mov r1, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+ ldr r0, [sp, #0x14]
+ mov r1, #1
+ ldr r0, [r0, #0x18]
+ bl FUN_0200782C
+ ldr r1, [sp, #0x14]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r1, #0x44
+ str r0, [sp, #0xc]
+ strh r0, [r1]
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0]
+ bl MOD08_0221552C
+ ldr r1, [sp, #0x14]
+ add r1, #0x46
+ strh r0, [r1]
+ ldr r1, [sp, #0x14]
+ add r0, sp, #0x1c
+ ldr r1, [r1]
+ bl MOD08_02215474
+ ldr r5, [sp, #0x14]
+ mov r4, #0
+_02224C94:
+ cmp r4, #0
+ bne _02224C9C
+ ldr r0, [sp, #8]
+ b _02224CA6
+_02224C9C:
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r2, sp, #0x1c
+ bl FUN_0200C154
+_02224CA6:
+ str r0, [r5, #0x48]
+ ldr r0, [r5, #0x48]
+ mov r1, #0
+ bl FUN_0200C644
+ lsr r0, r4, #0x1f
+ add r0, r4, r0
+ asr r1, r0, #1
+ ldr r0, _02224D6C ; =0x00001555
+ mov r2, #3
+ mul r0, r1
+ asr r0, r0, #4
+ lsl r0, r0, #2
+ ldr r1, _02224D70 ; =0x020FFA38
+ str r0, [sp, #0x18]
+ add r1, r1, r0
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ lsl r2, r2, #0x10
+ mov r3, #0
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ ldr r0, _02224D74 ; =0x00000000
+ adc r1, r0
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ lsl r0, r1, #4
+ asr r6, r0, #0x10
+ mov r2, #3
+ ldr r1, _02224D70 ; =0x020FFA38
+ ldr r0, [sp, #0x18]
+ lsl r2, r2, #0x10
+ ldrsh r0, [r1, r0]
+ mov r3, #0
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _02224D74 ; =0x00000000
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ lsl r0, r0, #4
+ asr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ lsr r2, r4, #0x1f
+ lsl r1, r4, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ bne _02224D2E
+ add r0, r7, r6
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldr r0, [r5, #0x48]
+ mov r1, #1
+ bl FUN_0200C8D0
+ b _02224D34
+_02224D2E:
+ sub r0, r7, r6
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+_02224D34:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r2, r0, #0x10
+ ldr r0, [r5, #0x48]
+ add r1, r6, #0
+ bl FUN_0200C714
+ cmp r4, #2
+ bge _02224D4E
+ mov r0, #8
+ b _02224D50
+_02224D4E:
+ mov r0, #0
+_02224D50:
+ add r4, r4, #1
+ str r0, [r5, #0x78]
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02224C94
+ ldr r0, [sp, #0x14]
+ ldr r1, _02224D78 ; =MOD08_02224AF4
+ ldr r0, [r0]
+ ldr r2, [sp, #0x14]
+ bl MOD08_02212400
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02224D6C: .word 0x00001555
+_02224D70: .word 0x020FFA38
+_02224D74: .word 0x00000000
+_02224D78: .word MOD08_02224AF4
+
+ thumb_func_start MOD08_02224D7C
+MOD08_02224D7C: ; 0x02224D7C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #5
+ bhi _02224DBC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02224D96: ; jump table
+ .short _02224DA2 - _02224D96 - 2 ; case 0
+ .short _02224DB2 - _02224D96 - 2 ; case 1
+ .short _02224E12 - _02224D96 - 2 ; case 2
+ .short _02224E6E - _02224D96 - 2 ; case 3
+ .short _02224E9E - _02224D96 - 2 ; case 4
+ .short _02224EC2 - _02224D96 - 2 ; case 5
+_02224DA2:
+ ldr r0, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_0200C5E0
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02224EDA
+_02224DB2:
+ ldr r0, [r4, #0x5c]
+ bl FUN_0200C608
+ cmp r0, #0
+ beq _02224DBE
+_02224DBC:
+ b _02224EDA
+_02224DBE:
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl FUN_0200C5E0
+ ldr r0, [r4, #0xc]
+ mov r1, #0xa
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x14
+ add r2, r1, #0
+ mov r3, #0
+ bl MOD08_02218120
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200782C
+ add r5, r0, #0
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ add r3, r0, #0
+ mov r0, #0x8a
+ ldrsh r0, [r4, r0]
+ lsl r1, r5, #0x10
+ lsl r3, r3, #0x10
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r2, #0x88
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ add r0, #0x38
+ asr r1, r1, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ b _02224EDA
+_02224E12:
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ add r0, #0x38
+ bl MOD08_02217F2C
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ add r0, #0x14
+ bl MOD08_02218380
+ cmp r0, #0
+ bne _02224EDA
+ ldr r0, [r4, #0x10]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ mov r1, #0xc
+ add r2, r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, #0xf3
+ bl FUN_02007558
+ ldr r0, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_0200C5C0
+ mov r1, #1
+ ldr r0, [r4, #0x5c]
+ lsl r1, r1, #0xc
+ bl FUN_0200C5F4
+ ldr r0, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_0200C5E0
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02224EDA
+_02224E6E:
+ ldr r0, [r4, #0x5c]
+ bl FUN_0200C608
+ cmp r0, #0
+ bne _02224EDA
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl FUN_0200C5E0
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ str r1, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r3, #0x8a
+ add r0, r4, #0
+ ldrsh r3, [r4, r3]
+ add r0, #0x60
+ add r2, r1, #0
+ bl MOD08_02217E80
+ b _02224EDA
+_02224E9E:
+ add r0, r4, #0
+ add r0, #0x60
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _02224EBA
+ mov r1, #0x88
+ mov r2, #0x62
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x5c]
+ bl FUN_0200C714
+ b _02224EDA
+_02224EBA:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02224EDA
+_02224EC2:
+ ldr r0, [r4, #0x5c]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02224EDA:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02224EE4
+MOD08_02224EE4: ; 0x02224EE4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ mov r1, #0x8c
+ add r5, r0, #0
+ str r2, [sp]
+ add r6, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ ldr r0, [sp]
+ str r7, [r4, #4]
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #6
+ mov r2, #0
+ str r0, [r4, #0x10]
+ bl FUN_02007558
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ add r1, r4, #0
+ add r1, #0x88
+ strh r0, [r1]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ add r1, r4, #0
+ add r1, #0x8a
+ strh r0, [r1]
+ str r6, [r4, #0x5c]
+ add r0, r6, #0
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_0200C6B0
+ mov r1, #0x88
+ mov r2, #0x8a
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x5c]
+ bl FUN_0200C714
+ ldr r0, [r4]
+ ldr r1, _02224F70 ; =MOD08_02224D7C
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02224F70: .word MOD08_02224D7C
+
+ thumb_func_start MOD08_02224F74
+MOD08_02224F74: ; 0x02224F74
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r0, r1, #0
+ bl MOD08_02217C08
+ mov r1, #1
+ add r2, r1, #0
+ lsl r2, r0
+ mov r0, #0
+ lsl r2, r2, #0x10
+ add r4, #0xc4
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r1, #2
+ lsr r2, r2, #0x10
+ mov r3, #8
+ bl FUN_02003A64
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02224FA0
+MOD08_02224FA0: ; 0x02224FA0
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r1, #0xa
+ mov r0, #0x14
+ str r0, [sp]
+ str r1, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x28
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD08_022181A8
+ mov r0, #4
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x4c
+ add r2, r1, #0
+ mov r3, #1
+ bl MOD08_02218120
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x98
+ str r1, [r0]
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02227468
+ add r1, r0, #0
+ lsl r2, r1, #1
+ ldr r1, _0222503C ; =0x0222C664
+ ldr r0, [r4, #0x20]
+ ldrh r1, [r1, r2]
+ bl FUN_0200C644
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_0200C644
+ add r0, r4, #0
+ add r0, #0x28
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD08_0221825C
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _02225024
+ ldr r1, [sp, #0x10]
+ mov r0, #0
+ bl _fsub
+ str r0, [sp, #0x10]
+_02225024:
+ ldr r0, [r4, #0x18]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ bl FUN_0200C884
+ ldr r1, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD08_02224F74
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_0222503C: .word 0x0222C664
+
+ thumb_func_start MOD08_02225040
+MOD08_02225040: ; 0x02225040
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ beq _0222505C
+ cmp r0, #1
+ beq _022250E4
+ cmp r0, #2
+ bne _0222505A
+ b _02225164
+_0222505A:
+ b _02225166
+_0222505C:
+ add r0, r5, #0
+ add r0, #0x28
+ bl MOD08_02218224
+ add r0, r5, #0
+ add r0, #0x28
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD08_0221825C
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _02225084
+ ldr r1, [sp, #0x10]
+ add r0, r4, #0
+ bl _fsub
+ str r0, [sp, #0x10]
+_02225084:
+ ldr r0, [r5, #0x18]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ bl FUN_0200C884
+ mov r0, #0
+ str r0, [sp]
+ ldr r1, [r5, #0x14]
+ ldr r2, [r5, #0x10]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #0x18]
+ ldr r3, [r5, #0x3c]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_02218314
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ bge _02225166
+ add r0, r5, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ mov r3, #0x14
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x94
+ str r1, [r0]
+ str r3, [sp]
+ mov r1, #0xa
+ str r1, [sp, #4]
+ mov r0, #4
+ add r5, #0x28
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r2, #1
+ bl MOD08_022181A8
+ b _02225166
+_022250E4:
+ add r0, r5, #0
+ add r0, #0x28
+ bl MOD08_02218224
+ add r0, r5, #0
+ add r0, #0x4c
+ bl MOD08_02218170
+ cmp r0, #0
+ beq _02225142
+ mov r0, #0x4c
+ ldrsh r0, [r5, r0]
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ strh r0, [r5, #0x28]
+ add r0, r5, #0
+ add r0, #0x28
+ bl MOD08_0221825C
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _0222511E
+ ldr r1, [sp, #0x10]
+ add r0, r4, #0
+ bl _fsub
+ str r0, [sp, #0x10]
+_0222511E:
+ ldr r0, [r5, #0x18]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ bl FUN_0200C884
+ mov r0, #0
+ str r0, [sp]
+ ldr r1, [r5, #0x14]
+ ldr r2, [r5, #0x10]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #0x18]
+ ldr r3, [r5, #0x3c]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD08_02218314
+ b _02225166
+_02225142:
+ add r0, r5, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x94
+ str r1, [r0]
+ ldr r0, [r5, #0x20]
+ add r1, r4, #0
+ bl FUN_0200C644
+ ldr r0, [r5, #0x18]
+ add r1, r4, #0
+ bl FUN_0200C644
+ mov r4, #1
+ b _02225166
+_02225164:
+ mov r4, #1
+_02225166:
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD08_0222516C
+MOD08_0222516C: ; 0x0222516C
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ add r1, sp, #0xc
+ ldr r0, [r4, #0x1c]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ add r1, sp, #0xc
+ mov r0, #0
+ ldrsh r3, [r1, r0]
+ mov r0, #2
+ ldrsh r1, [r1, r0]
+ mov r0, #8
+ str r3, [sp]
+ sub r3, #0x40
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r3, r3, #0x10
+ add r0, #0x70
+ add r2, r1, #0
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ mov r2, #0xa
+ str r2, [sp]
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x28
+ mov r1, #2
+ mov r3, #0x14
+ bl MOD08_022181A8
+ add r0, r4, #0
+ add r0, #0x28
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ bl MOD08_0221825C
+ add r0, r4, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _022251D4
+ ldr r1, [sp, #0x14]
+ mov r0, #0
+ bl _fsub
+ str r0, [sp, #0x14]
+_022251D4:
+ ldr r0, [r4, #0x1c]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ bl FUN_0200C884
+ add r0, r4, #0
+ ldr r1, [r4, #0x1c]
+ add r0, #0x70
+ bl MOD08_02217F08
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x98
+ str r1, [r0]
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02227468
+ add r1, r0, #0
+ lsl r2, r1, #1
+ ldr r1, _02225228 ; =0x0222C664
+ ldr r0, [r4, #0x24]
+ ldrh r1, [r1, r2]
+ bl FUN_0200C644
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r1, [r4, #0x1c]
+ add r0, r4, #0
+ bl MOD08_02224F74
+ add sp, #0x18
+ pop {r4, pc}
+ .align 2, 0
+_02225228: .word 0x0222C664
+
+ thumb_func_start MOD08_0222522C
+MOD08_0222522C: ; 0x0222522C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ beq _02225246
+ cmp r0, #1
+ beq _02225276
+ cmp r0, #2
+ beq _022252C8
+ b _022252CA
+_02225246:
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r5, #0
+ ldr r1, [r5, #0x1c]
+ add r0, #0x70
+ bl MOD08_02217F08
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ bge _022252CA
+ add r0, r5, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r5, #0x94
+ add r0, r0, #1
+ str r0, [r5]
+ b _022252CA
+_02225276:
+ add r0, r5, #0
+ ldr r1, [r5, #0x1c]
+ add r0, #0x70
+ bl MOD08_02217F08
+ add r0, r5, #0
+ add r0, #0x28
+ bl MOD08_02218224
+ add r6, r0, #0
+ add r0, r5, #0
+ add r0, #0x28
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD08_0221825C
+ add r0, r5, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _022252AA
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ bl _fsub
+ str r0, [sp, #4]
+_022252AA:
+ ldr r0, [r5, #0x1c]
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ bl FUN_0200C884
+ cmp r6, #0
+ bne _022252CA
+ add r0, r5, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r5, #0x94
+ add r0, r0, #1
+ str r0, [r5]
+ mov r4, #1
+ b _022252CA
+_022252C8:
+ mov r4, #1
+_022252CA:
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_022252D0
+MOD08_022252D0: ; 0x022252D0
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r2, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #6
+ bhi _022253AA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022252EA: ; jump table
+ .short _022252F8 - _022252EA - 2 ; case 0
+ .short _0222531C - _022252EA - 2 ; case 1
+ .short _02225336 - _022252EA - 2 ; case 2
+ .short _0222534C - _022252EA - 2 ; case 3
+ .short _02225362 - _022252EA - 2 ; case 4
+ .short _02225388 - _022252EA - 2 ; case 5
+ .short _0222539C - _022252EA - 2 ; case 6
+_022252F8:
+ ldr r0, [r4]
+ mov r1, #0
+ mov r2, #0x10
+ bl MOD08_02227994
+ mov r2, #8
+ str r2, [sp]
+ add r0, r4, #0
+ str r2, [sp, #4]
+ add r0, #0x9c
+ mov r1, #0
+ mov r3, #0x10
+ bl MOD08_022186D4
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022253AA
+_0222531C:
+ add r0, r4, #0
+ add r0, #0x9c
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _022253AA
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD08_02224FA0
+ b _022253AA
+_02225336:
+ add r0, r4, #0
+ bl MOD08_02225040
+ cmp r0, #0
+ beq _022253AA
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #2
+ str r0, [r4, #0xc]
+ b _022253AA
+_0222534C:
+ ldr r0, [r4, #0xc]
+ sub r0, r0, #1
+ str r0, [r4, #0xc]
+ bpl _022253AA
+ add r0, r4, #0
+ bl MOD08_0222516C
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022253AA
+_02225362:
+ add r0, r4, #0
+ bl MOD08_0222522C
+ cmp r0, #0
+ beq _022253AA
+ ldr r0, [r4, #8]
+ mov r1, #8
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0x10
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x9c
+ mov r2, #0
+ add r3, r1, #0
+ str r1, [sp, #4]
+ bl MOD08_022186D4
+ b _022253AA
+_02225388:
+ add r0, r4, #0
+ add r0, #0x9c
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _022253AA
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022253AA
+_0222539C:
+ ldr r0, [r4]
+ add r1, r2, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+_022253AA:
+ ldr r0, [r4, #4]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022253B4
+MOD08_022253B4: ; 0x022253B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r1, #0xd0
+ add r6, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r6, [r4]
+ add r0, r6, #0
+ bl MOD08_02212504
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ bl MOD08_02215504
+ add r1, r4, #0
+ add r1, #0xc4
+ str r0, [r1]
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ add r7, r0, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ add r0, r7, #0
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r0, r5, r0
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ str r0, [sp, #4]
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+ ldr r0, [sp, #4]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldr r0, [sp, #4]
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r0, r6, r0
+ lsl r0, r0, #0x10
+ str r5, [r4, #0x14]
+ asr r6, r0, #0x10
+ ldr r0, [r4]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_0221552C
+ str r0, [r4, #0x10]
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x18]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x18]
+ ldr r1, [sp]
+ add r2, r5, #0
+ bl FUN_0200C714
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_022124D8
+ str r0, [r4, #0x1c]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x1c]
+ add r1, r7, #0
+ add r2, r6, #0
+ bl FUN_0200C714
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x1c]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ mov r2, #0x28
+ bl FUN_0200C8DC
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD08_02215680
+ add r1, r4, #0
+ add r1, #0xc8
+ str r0, [r1]
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215680
+ add r1, r4, #0
+ add r1, #0xcc
+ str r0, [r1]
+ ldr r0, [r4]
+ mov r1, #2
+ bl MOD08_022124D8
+ str r0, [r4, #0x20]
+ ldr r0, [r4]
+ mov r1, #3
+ bl MOD08_022124D8
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x20]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4]
+ ldr r1, _02225520 ; =MOD08_022252D0
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02225520: .word MOD08_022252D0
+
+ thumb_func_start MOD08_02225524
+MOD08_02225524: ; 0x02225524
+ push {r4, lr}
+ sub sp, #0x20
+ mov r2, #0xa
+ add r4, r0, #0
+ add r0, #0xf8
+ mov r1, #0x19
+ add r3, r2, #0
+ str r2, [sp]
+ bl MOD08_02218120
+ mov r0, #0x3a
+ ldrsh r0, [r4, r0]
+ add r1, r4, #0
+ mov r3, #0x38
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x44]
+ ldr r2, _02225570 ; =MOD08_02218170
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x40]
+ add r1, #0xf8
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x3c]
+ str r0, [sp, #0x18]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ add r0, r4, #0
+ ldrsh r3, [r4, r3]
+ add r0, #0x48
+ bl MOD08_0221847C
+ add sp, #0x20
+ pop {r4, pc}
+ .align 2, 0
+_02225570: .word MOD08_02218170
+
+ thumb_func_start MOD08_02225574
+MOD08_02225574: ; 0x02225574
+ push {r4, lr}
+ sub sp, #0x20
+ add r4, r0, #0
+ mov r0, #6
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0xf8
+ add r2, r1, #0
+ mov r3, #0x19
+ bl MOD08_02218120
+ mov r0, #0x3a
+ ldrsh r0, [r4, r0]
+ add r1, r4, #0
+ mov r3, #0x38
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x3c]
+ ldr r2, _022255CC ; =MOD08_02218170
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x40]
+ add r1, #0xf8
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x44]
+ str r0, [sp, #0x18]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ add r0, r4, #0
+ ldrsh r3, [r4, r3]
+ add r0, #0x48
+ bl MOD08_0221847C
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl FUN_0200C644
+ add sp, #0x20
+ pop {r4, pc}
+ .align 2, 0
+_022255CC: .word MOD08_02218170
+
+ thumb_func_start MOD08_022255D0
+MOD08_022255D0: ; 0x022255D0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #4
+ bhi _02225688
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022255E8: ; jump table
+ .short _022255F2 - _022255E8 - 2 ; case 0
+ .short _02225600 - _022255E8 - 2 ; case 1
+ .short _0222562E - _022255E8 - 2 ; case 2
+ .short _02225652 - _022255E8 - 2 ; case 3
+ .short _02225666 - _022255E8 - 2 ; case 4
+_022255F2:
+ add r0, r4, #0
+ bl MOD08_02225524
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02225688
+_02225600:
+ add r0, r4, #0
+ add r0, #0x48
+ bl MOD08_02218524
+ cmp r0, #0
+ bne _02225688
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #6
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r2, #0
+ mov r3, #1
+ bl MOD08_022183C0
+ b _02225688
+_0222562E:
+ mov r1, #0x38
+ mov r2, #0x3a
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x10]
+ add r0, #0x14
+ bl MOD08_02218454
+ cmp r0, #0
+ bne _02225688
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ bl MOD08_02225574
+ b _02225688
+_02225652:
+ add r0, r4, #0
+ add r0, #0x48
+ bl MOD08_02218524
+ cmp r0, #0
+ bne _02225688
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02225688
+_02225666:
+ mov r6, #0
+ add r5, r4, #0
+_0222566A:
+ ldr r0, [r5, #0x3c]
+ bl FUN_0200C3DC
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _0222566A
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_02212438
+ pop {r3, r4, r5, r6, r7, pc}
+_02225688:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02225690
+MOD08_02225690: ; 0x02225690
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r6, r1, #0
+ mov r1, #0x47
+ lsl r1, r1, #2
+ add r5, r0, #0
+ str r2, [sp]
+ add r7, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ ldr r0, [sp]
+ str r6, [r4, #4]
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x38]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x3a]
+ ldr r0, [r4, #0x10]
+ mov r1, #0x29
+ bl FUN_0200782C
+ mov r1, #0x3a
+ ldrsh r1, [r4, r1]
+ sub r0, r1, r0
+ strh r0, [r4, #0x3a]
+ add r0, sp, #4
+ add r1, r5, #0
+ bl MOD08_02215474
+ mov r6, #0
+ add r5, r4, #0
+_022256EC:
+ cmp r6, #0
+ bne _022256FC
+ add r0, r7, #0
+ mov r1, #1
+ str r7, [r5, #0x3c]
+ bl FUN_0200C5C0
+ b _0222570E
+_022256FC:
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ add r2, sp, #4
+ bl FUN_0200C154
+ mov r1, #1
+ str r0, [r5, #0x3c]
+ bl FUN_0200C90C
+_0222570E:
+ ldr r0, [r5, #0x3c]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r5, #0x3c]
+ mov r1, #1
+ bl FUN_0200C6B0
+ mov r1, #0x38
+ mov r2, #0x3a
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r5, #0x3c]
+ bl FUN_0200C714
+ ldr r0, [r5, #0x3c]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r5, #0x3c]
+ mov r1, #2
+ bl FUN_0200C840
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _022256EC
+ ldr r0, [r4]
+ ldr r1, _02225754 ; =MOD08_022255D0
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02225754: .word MOD08_022255D0
+
+ thumb_func_start MOD08_02225758
+MOD08_02225758: ; 0x02225758
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r7, #0
+ add r6, r5, #0
+ str r1, [sp, #0x10]
+ add r6, #0x30
+ add r4, r7, #0
+_02225768:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x32
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0
+ str r0, [sp, #0xc]
+ ldr r2, _022257A8 ; =0x00007FFF
+ add r0, r6, #0
+ add r3, r1, #0
+ bl MOD08_02217D14
+ ldr r0, [r5, #0x38]
+ add r7, r7, #1
+ add r0, r0, r4
+ str r0, [r5, #0x38]
+ ldr r1, [r5, #0x48]
+ ldr r0, [sp, #0x10]
+ add r6, #0x24
+ mul r0, r1
+ str r0, [r5, #0x48]
+ ldr r0, _022257AC ; =0x00002AAA
+ add r5, #0x24
+ add r4, r4, r0
+ cmp r7, #6
+ blt _02225768
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022257A8: .word 0x00007FFF
+_022257AC: .word 0x00002AAA
+
+ thumb_func_start MOD08_022257B0
+MOD08_022257B0: ; 0x022257B0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+ add r0, r6, #0
+ str r0, [sp]
+ add r0, #0x30
+ str r0, [sp]
+ add r5, r6, #0
+ add r4, r6, #0
+_022257C6:
+ ldr r0, [sp]
+ bl MOD08_02217D98
+ ldr r1, [r5, #0x38]
+ mov r2, #0xa
+ lsl r0, r1, #2
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _0222586C ; =0x020FFA38
+ ldr r3, [r6, #0x14]
+ ldrsh r0, [r0, r1]
+ lsl r2, r2, #0xc
+ mul r2, r3
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ add r3, r1, #0
+ mov r1, #0x13
+ lsl r1, r1, #4
+ mov r2, #0x30
+ add r7, r0, #0
+ ldrsh r1, [r6, r1]
+ ldrsh r2, [r5, r2]
+ ldr r0, [r4, #0x18]
+ add r1, r1, r2
+ ldr r2, _02225870 ; =0x00000132
+ lsl r1, r1, #0x10
+ ldrsh r2, [r6, r2]
+ asr r1, r1, #0x10
+ mov ip, r2
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r7, r7, r2
+ ldr r2, _02225874 ; =0x00000000
+ adc r3, r2
+ lsl r2, r3, #0x14
+ lsr r3, r7, #0xc
+ orr r3, r2
+ lsl r2, r3, #4
+ asr r2, r2, #0x10
+ mov r3, ip
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r1, [r5, #0x38]
+ ldr r0, _02225878 ; =0x00003FFF
+ cmp r1, r0
+ blt _02225842
+ ldr r0, _0222587C ; =0x0000BF49
+ cmp r1, r0
+ bgt _02225842
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_0200C6B0
+ b _02225852
+_02225842:
+ ldr r0, [r6]
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r4, #0x18]
+ add r1, r1, #1
+ bl FUN_0200C6B0
+_02225852:
+ ldr r0, [sp]
+ add r5, #0x24
+ add r0, #0x24
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r4, r4, #4
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #6
+ blt _022257C6
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222586C: .word 0x020FFA38
+_02225870: .word 0x00000132
+_02225874: .word 0x00000000
+_02225878: .word 0x00003FFF
+_0222587C: .word 0x0000BF49
+
+ thumb_func_start MOD08_02225880
+MOD08_02225880: ; 0x02225880
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #4
+ bhi _02225966
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222589A: ; jump table
+ .short _022258A4 - _0222589A - 2 ; case 0
+ .short _022258DA - _0222589A - 2 ; case 1
+ .short _022258FA - _0222589A - 2 ; case 2
+ .short _02225926 - _0222589A - 2 ; case 3
+ .short _02225942 - _0222589A - 2 ; case 4
+_022258A4:
+ ldr r0, [r4]
+ mov r1, #1
+ mov r2, #0xf
+ bl MOD08_02227994
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, #0xfe
+ add r0, r4, r0
+ mov r1, #1
+ mov r2, #0x10
+ mov r3, #0xf
+ bl MOD08_022186D4
+ ldr r1, [r4, #0x14]
+ add r0, r4, #0
+ bl MOD08_02225758
+ add r0, r4, #0
+ bl MOD08_022257B0
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02225966
+_022258DA:
+ add r0, r4, #0
+ bl MOD08_022257B0
+ mov r0, #0x42
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02225966
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #0x1c
+ str r0, [r4, #0x10]
+ b _02225966
+_022258FA:
+ add r0, r4, #0
+ bl MOD08_022257B0
+ ldr r0, [r4, #0x10]
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+ bpl _02225966
+ ldr r0, [r4, #0xc]
+ mov r1, #0x10
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, #0xfe
+ add r0, r4, r0
+ mov r2, #1
+ mov r3, #0
+ bl MOD08_022186D4
+ b _02225966
+_02225926:
+ add r0, r4, #0
+ bl MOD08_022257B0
+ mov r0, #0x42
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02225966
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02225966
+_02225942:
+ mov r6, #0
+ add r5, r4, #0
+_02225946:
+ ldr r0, [r5, #0x18]
+ bl FUN_0200C3DC
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #6
+ blt _02225946
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_02212438
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02225966:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02225970
+MOD08_02225970: ; 0x02225970
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r1, #0
+ mov r1, #0x4d
+ lsl r1, r1, #2
+ add r4, r0, #0
+ str r2, [sp]
+ add r7, r3, #0
+ bl MOD08_02228064
+ add r6, r0, #0
+ str r4, [r6]
+ ldr r0, [sp]
+ str r5, [r6, #4]
+ str r0, [r6, #8]
+ add r0, r4, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_022154D4
+ mov r1, #0
+ add r5, r0, #0
+ bl FUN_0200782C
+ mov r1, #0x13
+ lsl r1, r1, #4
+ strh r0, [r6, r1]
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200782C
+ ldr r1, _02225A14 ; =0x00000132
+ strh r0, [r6, r1]
+ add r0, sp, #4
+ add r1, r4, #0
+ bl MOD08_02215474
+ mov r4, #0
+ add r5, r6, #0
+_022259C2:
+ cmp r4, #0
+ bne _022259CA
+ str r7, [r5, #0x18]
+ b _022259D6
+_022259CA:
+ ldr r0, [r6, #4]
+ ldr r1, [r6, #8]
+ add r2, sp, #4
+ bl FUN_0200C154
+ str r0, [r5, #0x18]
+_022259D6:
+ ldr r0, [r5, #0x18]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_0200C5E0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _022259C2
+ ldr r0, [r6]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_02217C1C
+ str r0, [r6, #0x14]
+ ldr r0, [r6]
+ ldr r1, _02225A18 ; =MOD08_02225880
+ add r2, r6, #0
+ bl MOD08_02212400
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02225A14: .word 0x00000132
+_02225A18: .word MOD08_02225880
+
+ thumb_func_start MOD08_02225A1C
+MOD08_02225A1C: ; 0x02225A1C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r1, #0
+ add r1, sp, #8
+ add r5, r2, #0
+ add r1, #2
+ add r2, sp, #8
+ add r6, r0, #0
+ add r4, r3, #0
+ bl FUN_0200C7A0
+ add r0, sp, #8
+ mov r1, #0
+ ldrsh r3, [r0, r1]
+ mov r1, #2
+ ldrsh r2, [r0, r1]
+ lsl r0, r4, #7
+ neg r0, r0
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ lsl r1, r2, #0x10
+ lsl r4, r5, #8
+ add r2, r2, r4
+ str r0, [sp]
+ mov r0, #0x3b
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_0200C644
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02225A70
+MOD08_02225A70: ; 0x02225A70
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, r4, #0
+ bl MOD08_02217F08
+ cmp r0, #0
+ beq _02225B2A
+ add r1, sp, #8
+ add r0, r4, #0
+ add r1, #2
+ add r2, sp, #8
+ bl FUN_0200C7A0
+ add r1, sp, #8
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ mov r1, #0x5b
+ lsl r1, r1, #2
+ str r0, [sp]
+ ldr r0, [sp]
+ mov r2, #0xe
+ mul r1, r0
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _02225B30 ; =0x020FFA38
+ lsl r2, r2, #0xc
+ ldrsh r0, [r0, r1]
+ mov r3, #0
+ asr r7, r0, #0x1f
+ add r1, r7, #0
+ str r0, [sp, #4]
+ bl _ll_mul
+ add r3, r0, #0
+ add r5, r1, #0
+ add r6, sp, #8
+ mov r2, #0
+ ldrsh r2, [r6, r2]
+ mov r6, #2
+ lsl r6, r6, #0xa
+ add r0, r4, #0
+ add r6, r3, r6
+ ldr r3, _02225B34 ; =0x00000000
+ ldr r1, [sp]
+ adc r5, r3
+ lsl r3, r5, #0x14
+ lsr r5, r6, #0xc
+ orr r5, r3
+ lsl r3, r5, #4
+ asr r3, r3, #0x10
+ add r2, r2, r3
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r2, #0xae
+ ldr r0, [sp, #4]
+ add r1, r7, #0
+ lsl r2, r2, #2
+ mov r3, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ neg r0, r1
+ bl _fflt
+ ldr r1, _02225B38 ; =0x45800000
+ bl _fdiv
+ add r1, r0, #0
+ mov r0, #0xfe
+ lsl r0, r0, #0x16
+ bl _fadd
+ add r1, r0, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl FUN_0200C884
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02225B2A:
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02225B30: .word 0x020FFA38
+_02225B34: .word 0x00000000
+_02225B38: .word 0x45800000
+
+ thumb_func_start MOD08_02225B3C
+MOD08_02225B3C: ; 0x02225B3C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x9d
+ add r7, r0, #0
+ lsl r1, r1, #2
+ ldr r0, [r7, r1]
+ cmp r0, #0xf
+ bge _02225B84
+ sub r0, r1, #4
+ ldr r0, [r7, r0]
+ add r2, r0, #1
+ sub r0, r1, #4
+ str r2, [r7, r0]
+ ldr r0, [r7, r0]
+ cmp r0, #6
+ ble _02225B84
+ mov r2, #0
+ sub r0, r1, #4
+ str r2, [r7, r0]
+ ldr r1, [r7, r1]
+ add r3, r7, #0
+ lsl r0, r1, #2
+ mov r2, #0x24
+ add r0, r7, r0
+ add r3, #0x54
+ mul r2, r1
+ add r1, r3, r2
+ ldr r0, [r0, #0x18]
+ ldr r2, [r7, #0x10]
+ ldr r3, [r7, #0x14]
+ bl MOD08_02225A1C
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ ldr r1, [r7, r0]
+ add r1, r1, #1
+ str r1, [r7, r0]
+_02225B84:
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _02225BB0
+ add r6, r7, #0
+ add r6, #0x54
+ add r5, r7, #0
+_02225B96:
+ ldr r0, [r5, #0x18]
+ add r1, r6, #0
+ bl MOD08_02225A70
+ str r0, [sp]
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ add r4, r4, #1
+ add r6, #0x24
+ add r5, r5, #4
+ cmp r4, r0
+ blt _02225B96
+_02225BB0:
+ cmp r0, #0xf
+ blt _02225BBE
+ ldr r0, [sp]
+ cmp r0, #1
+ bne _02225BBE
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02225BBE:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02225BC4
+MOD08_02225BC4: ; 0x02225BC4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD08_02225B3C
+ cmp r0, #0
+ beq _02225BF6
+ mov r4, #0
+ add r5, r6, #0
+_02225BD8:
+ ldr r0, [r5, #0x18]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xf
+ blt _02225BD8
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r0, [r6]
+ add r1, r7, #0
+ bl MOD08_02212438
+ pop {r3, r4, r5, r6, r7, pc}
+_02225BF6:
+ ldr r0, [r6, #8]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02225C00
+MOD08_02225C00: ; 0x02225C00
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r5, r1, #0
+ mov r1, #0x9e
+ lsl r1, r1, #2
+ add r4, r0, #0
+ str r2, [sp]
+ add r7, r3, #0
+ bl MOD08_02228064
+ add r6, r0, #0
+ str r4, [r6]
+ ldr r0, [sp]
+ str r5, [r6, #4]
+ str r0, [r6, #8]
+ add r0, r4, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_022154D4
+ mov r1, #0
+ add r5, r0, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ add r0, sp, #0xc
+ add r1, r4, #0
+ bl MOD08_02215474
+ mov r4, #0
+ add r5, r6, #0
+_02225C54:
+ cmp r4, #0
+ bne _02225C5C
+ str r7, [r5, #0x18]
+ b _02225C68
+_02225C5C:
+ ldr r0, [r6, #4]
+ ldr r1, [r6, #8]
+ add r2, sp, #0xc
+ bl FUN_0200C154
+ str r0, [r5, #0x18]
+_02225C68:
+ ldr r0, [r5, #0x18]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r5, #0x18]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r5, #0x18]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #4]
+ bl FUN_0200C714
+ add r0, r4, #0
+ mov r1, #3
+ bl _s32_div_f
+ ldr r0, [r5, #0x18]
+ bl FUN_0200C5C0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xf
+ blt _02225C54
+ ldr r0, [r6]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_02217C1C
+ str r0, [r6, #0x10]
+ ldr r0, [r6]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_02217C44
+ str r0, [r6, #0x14]
+ ldr r0, [r6]
+ ldr r1, _02225CD8 ; =MOD08_02225BC4
+ add r2, r6, #0
+ bl MOD08_02212400
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02225CD8: .word MOD08_02225BC4
+
+ thumb_func_start MOD08_02225CDC
+MOD08_02225CDC: ; 0x02225CDC
+ ldr r1, [r0, #0x2c]
+ cmp r1, #0
+ beq _02225CEC
+ cmp r1, #1
+ beq _02225D00
+ cmp r1, #2
+ beq _02225D14
+ bx lr
+_02225CEC:
+ ldr r1, _02225D28 ; =0x00007FFF
+ str r1, [r0, #0x18]
+ mov r1, #5
+ str r1, [r0, #0x24]
+ mov r1, #1
+ lsl r1, r1, #0x10
+ str r1, [r0, #0x1c]
+ mov r1, #0x10
+ str r1, [r0, #0x28]
+ bx lr
+_02225D00:
+ ldr r1, _02225D28 ; =0x00007FFF
+ str r1, [r0, #0x18]
+ mov r1, #4
+ mvn r1, r1
+ str r1, [r0, #0x24]
+ ldr r1, _02225D2C ; =0xFFFF0000
+ str r1, [r0, #0x1c]
+ mov r1, #0x10
+ str r1, [r0, #0x28]
+ bx lr
+_02225D14:
+ ldr r1, _02225D28 ; =0x00007FFF
+ str r1, [r0, #0x18]
+ mov r1, #0xa
+ str r1, [r0, #0x24]
+ lsl r1, r1, #0xd
+ str r1, [r0, #0x1c]
+ mov r1, #0x10
+ str r1, [r0, #0x28]
+ bx lr
+ nop
+_02225D28: .word 0x00007FFF
+_02225D2C: .word 0xFFFF0000
+
+ thumb_func_start MOD08_02225D30
+MOD08_02225D30: ; 0x02225D30
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ bl MOD08_02218894
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x10]
+ str r0, [sp]
+ str r0, [sp, #4]
+ sub r0, #8
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ add r0, #0x58
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bge _02225D58
+ mov r0, #0
+ str r0, [sp, #4]
+_02225D58:
+ ldr r0, [sp]
+ cmp r0, #0xc0
+ ble _02225D62
+ mov r0, #0xc0
+ str r0, [sp]
+_02225D62:
+ mov r0, #0
+ ldr r1, [r5, #0x20]
+ mvn r0, r0
+ mul r0, r1
+ ldr r4, [sp, #4]
+ str r0, [r5, #0x20]
+ ldr r0, [sp]
+ add r1, r4, #0
+ cmp r1, r0
+ bge _02225E02
+_02225D76:
+ mov r0, #2
+ tst r0, r4
+ ldr r1, [r5, #0x1c]
+ beq _02225D86
+ ldr r0, [r5, #0x20]
+ lsl r0, r0, #0xc
+ add r2, r1, r0
+ b _02225D8C
+_02225D86:
+ ldr r0, [r5, #0x20]
+ lsl r0, r0, #0xc
+ sub r2, r1, r0
+_02225D8C:
+ ldr r1, [sp, #4]
+ ldr r0, [r5, #0x18]
+ sub r3, r4, r1
+ ldr r1, _02225E08 ; =0x00000199
+ mul r1, r3
+ add r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _02225E0C ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ ldr r0, _02225E10 ; =0x00000000
+ adc r1, r0
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ lsl r0, r1, #4
+ asr r7, r0, #0x10
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x24]
+ sub r0, r4, r0
+ mul r0, r1
+ mov r1, #0xa
+ bl _s32_div_f
+ add r0, r7, r0
+ lsl r0, r0, #0x10
+ ldr r1, [r5, #0x30]
+ asr r7, r0, #0x10
+ lsl r0, r1, #0x10
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x10
+ asr r0, r0, #0x10
+ asr r1, r1, #0x10
+ sub r6, r4, #1
+ bpl _02225DE6
+ add r6, #0xc0
+_02225DE6:
+ add r0, r0, r7
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ bl MOD08_02218998
+ ldr r1, [sp, #8]
+ lsl r2, r6, #2
+ str r0, [r1, r2]
+ ldr r0, [sp]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _02225D76
+_02225E02:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02225E08: .word 0x00000199
+_02225E0C: .word 0x020FFA38
+_02225E10: .word 0x00000000
+
+ thumb_func_start MOD08_02225E14
+MOD08_02225E14: ; 0x02225E14
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _02225E2A
+ cmp r0, #1
+ beq _02225E3E
+ cmp r0, #2
+ beq _02225E68
+ pop {r4, r5, r6, pc}
+_02225E2A:
+ add r0, r4, #0
+ bl MOD08_02225CDC
+ add r0, r4, #0
+ bl MOD08_02225D30
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r4, r5, r6, pc}
+_02225E3E:
+ ldr r0, [r4, #0x28]
+ sub r0, r0, #1
+ str r0, [r4, #0x28]
+ add r0, r4, #0
+ bl MOD08_02225D30
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ bge _02225EFA
+ ldr r0, [r4, #0x2c]
+ add r0, r0, #1
+ str r0, [r4, #0x2c]
+ cmp r0, #3
+ bge _02225E60
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, r5, r6, pc}
+_02225E60:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ pop {r4, r5, r6, pc}
+_02225E68:
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4, #4]
+ bl MOD08_022188A8
+ ldr r0, [r4, #4]
+ bl MOD08_02218870
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r5, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215600
+ add r1, r0, #0
+ lsl r0, r5, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ mov r0, #0
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02212014
+ add r3, r0, #0
+ lsl r0, r5, #0x18
+ mov r1, #1
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0xe
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r0, [r4]
+ bl MOD08_02212490
+ add r5, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r6, #0
+ bl MOD08_02212438
+_02225EFA:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02225EFC
+MOD08_02225EFC: ; 0x02225EFC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x34
+ add r7, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r7, [r4]
+ add r0, r7, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ mov r1, #0
+ str r0, [r4, #0xc]
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ ldr r0, [r4, #0xc]
+ mov r1, #0x29
+ bl FUN_0200782C
+ sub r0, r5, r0
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ sub r6, #0x28
+ lsl r0, r6, #0x10
+ str r5, [r4, #0x14]
+ sub r5, #0x28
+ asr r0, r0, #0x10
+ neg r0, r0
+ neg r1, r5
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x10
+ str r5, [r4, #0x10]
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ bl MOD08_02218998
+ str r0, [r4, #0x30]
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_022155C4
+ bl MOD08_022189A0
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02212014
+ add r2, r0, #0
+ ldr r1, [r4, #0x30]
+ add r0, r5, #0
+ bl MOD08_022187F4
+ str r0, [r4, #4]
+ mov r0, #1
+ str r0, [r4, #0x20]
+ add r0, r7, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02227468
+ sub r0, r0, #3
+ cmp r0, #1
+ bhi _02225FD0
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD08_02215588
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ lsl r0, r5, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ ldr r0, [r4]
+ bl MOD08_02215574
+ add r1, r0, #0
+ add r1, r1, #1
+ lsl r1, r1, #0x18
+ mov r0, #0
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+_02225FD0:
+ ldr r0, [r4]
+ ldr r1, _02225FDC ; =MOD08_02225E14
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02225FDC: .word MOD08_02225E14
+
+ thumb_func_start MOD08_02225FE0
+MOD08_02225FE0: ; 0x02225FE0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #5
+ bls _02225FF0
+ b _02226134
+_02225FF0:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02225FFC: ; jump table
+ .short _02226008 - _02225FFC - 2 ; case 0
+ .short _0222604E - _02225FFC - 2 ; case 1
+ .short _02226088 - _02225FFC - 2 ; case 2
+ .short _022260C2 - _02225FFC - 2 ; case 3
+ .short _0222610E - _02225FFC - 2 ; case 4
+ .short _02226126 - _02225FFC - 2 ; case 5
+_02226008:
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xc
+ mov r1, #0x7f
+ add r3, r2, #0
+ bl MOD08_02217E80
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _02226138 ; =0xFFFF1FFF
+ and r1, r0
+ lsr r0, r2, #0xd
+ orr r0, r1
+ str r0, [r2]
+ mov r1, #0
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl MOD08_02227A4C
+ ldr r1, _0222613C ; =0x04000040
+ mov r0, #0xff
+ strh r0, [r1]
+ mov r0, #0xbf
+ strh r0, [r1, #4]
+ mov r0, #7
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_0222604E:
+ ldr r0, [r4, #8]
+ sub r0, r0, #1
+ str r0, [r4, #8]
+ bpl _02226134
+ ldr r0, [r4]
+ bl MOD08_02215504
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02214540
+ add r2, r0, #0
+ mov r3, #0
+ lsl r2, r2, #0x10
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, _02226140 ; =0x0000FFFF
+ mov r1, #1
+ str r0, [sp, #8]
+ add r0, r5, #0
+ lsr r2, r2, #0x10
+ bl FUN_02003210
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_02226088:
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD08_02217ECC
+ cmp r0, #0
+ beq _022260B8
+ mov r0, #0xc
+ ldrsh r2, [r4, r0]
+ mov r0, #0x7f
+ add sp, #0xc
+ sub r0, r0, r2
+ lsl r1, r0, #8
+ mov r0, #0xff
+ lsl r0, r0, #8
+ add r2, #0x80
+ and r1, r0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ ldr r1, _0222613C ; =0x04000040
+ strh r0, [r1]
+ mov r0, #0xbf
+ strh r0, [r1, #4]
+ pop {r4, r5, pc}
+_022260B8:
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_022260C2:
+ ldr r0, [r4]
+ bl MOD08_02215504
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02226134
+ ldr r0, [r4, #4]
+ mov r2, #1
+ add r0, r0, #1
+ str r0, [r4, #4]
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _02226138 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ ldr r0, [r4]
+ bl MOD08_02215504
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl MOD08_02214540
+ add r2, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ lsl r2, r2, #0x10
+ ldr r0, _02226140 ; =0x0000FFFF
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r1, #1
+ lsr r2, r2, #0x10
+ bl FUN_02003210
+ add sp, #0xc
+ pop {r4, r5, pc}
+_0222610E:
+ ldr r0, [r4]
+ bl MOD08_02215504
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02226134
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_02226126:
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+_02226134:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02226138: .word 0xFFFF1FFF
+_0222613C: .word 0x04000040
+_02226140: .word 0x0000FFFF
+
+ thumb_func_start MOD08_02226144
+MOD08_02226144: ; 0x02226144
+ push {r4, lr}
+ mov r1, #0x34
+ add r4, r0, #0
+ bl MOD08_02228064
+ add r2, r0, #0
+ ldr r1, _0222615C ; =MOD08_02225FE0
+ add r0, r4, #0
+ str r4, [r2]
+ bl MOD08_02212400
+ pop {r4, pc}
+ .align 2, 0
+_0222615C: .word MOD08_02225FE0
+
+ thumb_func_start MOD08_02226160
+MOD08_02226160: ; 0x02226160
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #4
+ bhi _02226210
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222617A: ; jump table
+ .short _02226184 - _0222617A - 2 ; case 0
+ .short _022261AA - _0222617A - 2 ; case 1
+ .short _022261BE - _0222617A - 2 ; case 2
+ .short _022261E4 - _0222617A - 2 ; case 3
+ .short _022261F8 - _0222617A - 2 ; case 4
+_02226184:
+ ldr r0, [r4]
+ mov r1, #0
+ mov r2, #0x10
+ bl MOD08_02227994
+ mov r1, #0
+ mov r2, #0x10
+ str r1, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x14
+ add r3, r2, #0
+ bl MOD08_022186D4
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02226210
+_022261AA:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02226210
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02226210
+_022261BE:
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C608
+ cmp r0, #0
+ bne _02226210
+ ldr r0, [r4, #0xc]
+ mov r2, #0
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r1, #0x10
+ str r1, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x14
+ add r3, r2, #0
+ bl MOD08_022186D4
+ b _02226210
+_022261E4:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02226210
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02226210
+_022261F8:
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02226210:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222621C
+MOD08_0222621C: ; 0x0222621C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ mov r1, #0x3c
+ add r6, r0, #0
+ str r2, [sp]
+ add r5, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r6, [r4]
+ ldr r0, [sp]
+ str r7, [r4, #4]
+ str r0, [r4, #8]
+ str r5, [r4, #0x10]
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200C5E0
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4]
+ ldr r1, _02226254 ; =MOD08_02226160
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02226254: .word MOD08_02226160
+
+ thumb_func_start MOD08_02226258
+MOD08_02226258: ; 0x02226258
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #4
+ bhi _0222631C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02226272: ; jump table
+ .short _0222627C - _02226272 - 2 ; case 0
+ .short _022262E6 - _02226272 - 2 ; case 1
+ .short _02226328 - _02226272 - 2 ; case 2
+ .short _02226394 - _02226272 - 2 ; case 3
+ .short _022263E6 - _02226272 - 2 ; case 4
+_0222627C:
+ ldr r0, [r4, #0x68]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [r4, #0x6c]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x74]
+ asr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r1, [r4, #0x5c]
+ ldr r2, [r4, #0x60]
+ ldr r3, [r4, #0x64]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x14
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_022181A8
+ mov r1, #0xa
+ mov r2, #8
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x10]
+ add r0, #0x38
+ bl MOD08_02218454
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ add r0, #0x14
+ bl MOD08_022183A0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #8
+ mov r2, #0xc
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ ldr r3, [r4, #0x28]
+ bl MOD08_022182DC
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_022262E6:
+ mov r1, #0xa
+ mov r2, #8
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x10]
+ add r0, #0x38
+ bl MOD08_02218454
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ add r0, #0x14
+ bl MOD08_022183A0
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #8
+ mov r2, #0xc
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ ldr r3, [r4, #0x28]
+ bl MOD08_022182DC
+ cmp r5, #0
+ beq _0222631E
+_0222631C:
+ b _02226424
+_0222631E:
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_02226328:
+ ldr r0, [r4, #0x64]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [r4, #0x6c]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x74]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r1, [r4, #0x60]
+ ldr r2, [r4, #0x5c]
+ ldr r3, [r4, #0x68]
+ add r0, r4, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x14
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_022181A8
+ mov r1, #0xa
+ mov r2, #8
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x10]
+ add r0, #0x38
+ bl MOD08_02218454
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ add r0, #0x14
+ bl MOD08_022183A0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #8
+ mov r2, #0xc
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ ldr r3, [r4, #0x28]
+ bl MOD08_022182DC
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_02226394:
+ mov r1, #0xa
+ mov r2, #8
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x10]
+ add r0, #0x38
+ bl MOD08_02218454
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ add r0, #0x14
+ bl MOD08_022183A0
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #8
+ mov r2, #0xc
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ ldr r3, [r4, #0x28]
+ bl MOD08_022182DC
+ cmp r5, #0
+ bne _02226424
+ ldr r0, [r4, #0x70]
+ sub r0, r0, #1
+ str r0, [r4, #0x70]
+ cmp r0, #0
+ bgt _022263DE
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_022263DE:
+ mov r0, #0
+ add sp, #0xc
+ str r0, [r4, #4]
+ pop {r4, r5, pc}
+_022263E6:
+ mov r2, #0xa
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #8
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02007558
+ mov r1, #0xc
+ add r2, r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, #0xf3
+ bl FUN_02007558
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+_02226424:
+ add sp, #0xc
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD08_02226428
+MOD08_02226428: ; 0x02226428
+ push {r3, r4, r5, lr}
+ mov r1, #0x78
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_0221552C
+ strh r0, [r4, #0xc]
+ ldr r0, [r4]
+ bl MOD08_02212460
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #8]
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0xa]
+ mov r1, #0xa
+ str r1, [r4, #0x5c]
+ mov r0, #7
+ str r0, [r4, #0x60]
+ str r1, [r4, #0x64]
+ mov r0, #0x1e
+ str r0, [r4, #0x68]
+ str r1, [r4, #0x6c]
+ mov r3, #1
+ ldr r0, _0222649C ; =0x00040003
+ str r3, [r4, #0x70]
+ str r0, [r4, #0x74]
+ mov r1, #2
+ add r0, r4, #0
+ str r1, [sp]
+ add r0, #0x38
+ mov r2, #0
+ bl MOD08_022183C0
+ ldr r0, [r4]
+ ldr r1, _022264A0 ; =MOD08_02226258
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, pc}
+ nop
+_0222649C: .word 0x00040003
+_022264A0: .word MOD08_02226258
+
+ thumb_func_start MOD08_022264A4
+MOD08_022264A4: ; 0x022264A4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ ldr r1, [r4, #0x2c]
+ add r0, #8
+ bl MOD08_02217F08
+ cmp r0, #0
+ bne _022264CE
+ ldr r0, [r4, #0x2c]
+ bl FUN_0200C3DC
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ pop {r3, r4, r5, pc}
+_022264CE:
+ ldr r0, [r4, #4]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022264D8
+MOD08_022264D8: ; 0x022264D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r1, #0x30
+ add r5, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r5, [r4]
+ add r0, r5, #0
+ bl MOD08_02212518
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD08_02212458
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02227470
+ cmp r0, #3
+ bne _0222651C
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_022124B0
+ str r0, [r4, #0x2c]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_022124B0
+ bl FUN_0200C3DC
+ b _02226532
+_0222651C:
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_022124B0
+ str r0, [r4, #0x2c]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_022124B0
+ bl FUN_0200C3DC
+_02226532:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C1C
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C44
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ ldr r1, [sp, #0x10]
+ lsl r2, r7, #6
+ add r6, r1, r2
+ ldr r1, [sp, #0xc]
+ lsl r1, r1, #4
+ neg r1, r1
+ add r5, r0, r1
+ str r1, [sp, #8]
+ lsl r1, r6, #0x10
+ lsl r2, r5, #0x10
+ ldr r0, [r4, #0x2c]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [sp, #8]
+ mov r2, #0x30
+ add r0, r5, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ mul r2, r7
+ str r0, [sp]
+ mov r0, #6
+ add r2, r6, r2
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r1, r6, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r5, #0x10
+ add r0, #8
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ ldr r0, [r4]
+ ldr r1, _022265B0 ; =MOD08_022264A4
+ add r2, r4, #0
+ bl MOD08_02212400
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022265B0: .word MOD08_022264A4
+
+ thumb_func_start MOD08_022265B4
+MOD08_022265B4: ; 0x022265B4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #5
+ bls _022265C4
+ b _022266E0
+_022265C4:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022265D0: ; jump table
+ .short _022265DC - _022265D0 - 2 ; case 0
+ .short _022265F6 - _022265D0 - 2 ; case 1
+ .short _02226644 - _022265D0 - 2 ; case 2
+ .short _02226660 - _022265D0 - 2 ; case 3
+ .short _022266A2 - _022265D0 - 2 ; case 4
+ .short _022266BA - _022265D0 - 2 ; case 5
+_022265DC:
+ mov r1, #4
+ add r0, r4, #0
+ str r1, [sp]
+ add r0, #0x40
+ mov r2, #0
+ mov r3, #1
+ bl MOD08_022183C0
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_022265F6:
+ mov r1, #0x18
+ mov r2, #0x1a
+ add r0, r4, #0
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x14]
+ add r0, #0x40
+ bl MOD08_02218454
+ cmp r0, #0
+ bne _022266E0
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0x1a
+ ldrsh r3, [r4, r0]
+ mov r0, #0x18
+ ldrsh r1, [r4, r0]
+ ldr r2, [r4, #0x10]
+ sub r0, #0x1f
+ mul r0, r2
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ add r0, r4, #0
+ ldr r4, [r4, #0xc]
+ mov r2, #0x28
+ mul r2, r4
+ add r2, r1, r2
+ lsl r2, r2, #0x10
+ add r0, #0x1c
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_02226644:
+ add r0, r4, #0
+ ldr r1, [r4, #0x14]
+ add r0, #0x1c
+ bl MOD08_02217F2C
+ cmp r0, #0
+ bne _022266E0
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #8
+ str r0, [r4, #8]
+ pop {r4, r5, r6, pc}
+_02226660:
+ ldr r0, [r4, #8]
+ sub r0, r0, #1
+ str r0, [r4, #8]
+ bpl _022266E0
+ ldr r0, [r4, #4]
+ mov r5, #0x28
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0x1a
+ ldrsh r3, [r4, r0]
+ mov r0, #0x18
+ ldrsh r2, [r4, r0]
+ mov r0, #4
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r1, [r4, #0xc]
+ add r0, r4, #0
+ add r6, r1, #0
+ mul r6, r5
+ add r1, r2, r6
+ lsl r1, r1, #0x10
+ ldr r4, [r4, #0x10]
+ sub r5, #0x2f
+ mul r5, r4
+ add r3, r3, r5
+ lsl r3, r3, #0x10
+ add r0, #0x1c
+ asr r1, r1, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_022266A2:
+ add r0, r4, #0
+ ldr r1, [r4, #0x14]
+ add r0, #0x1c
+ bl MOD08_02217F2C
+ cmp r0, #0
+ bne _022266E0
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_022266BA:
+ mov r2, #0x18
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x1a
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_02007558
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+_022266E0:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_022266E4
+MOD08_022266E4: ; 0x022266E4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r1, #0x64
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ str r5, [r4]
+ bl MOD08_02212458
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x1a]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C1C
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C44
+ str r0, [r4, #0x10]
+ ldr r0, [r4]
+ ldr r1, _02226738 ; =MOD08_022265B4
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+ nop
+_02226738: .word MOD08_022265B4
+
+ thumb_func_start MOD08_0222673C
+MOD08_0222673C: ; 0x0222673C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #4
+ bls _0222674C
+ b _0222685C
+_0222674C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02226758: ; jump table
+ .short _02226762 - _02226758 - 2 ; case 0
+ .short _02226798 - _02226758 - 2 ; case 1
+ .short _022267C0 - _02226758 - 2 ; case 2
+ .short _0222681E - _02226758 - 2 ; case 3
+ .short _02226836 - _02226758 - 2 ; case 4
+_02226762:
+ mov r0, #0x16
+ ldrsh r3, [r4, r0]
+ mov r0, #0x14
+ ldrsh r1, [r4, r0]
+ ldr r0, [r4, #0xc]
+ mov r5, #4
+ lsl r0, r0, #4
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ str r5, [sp, #4]
+ ldr r2, [r4, #8]
+ sub r5, #0x2c
+ mul r5, r2
+ add r2, r1, r5
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ add r0, #0x18
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_02226798:
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ add r0, #0x18
+ bl MOD08_02217F2C
+ cmp r0, #0
+ bne _0222685C
+ ldr r0, [r4, #4]
+ mov r1, #4
+ add r0, r0, #1
+ str r0, [r4, #4]
+ add r4, #0x3c
+ add r0, r4, #0
+ mov r2, #0
+ mov r3, #1
+ str r1, [sp]
+ bl MOD08_022183C0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_022267C0:
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r5, r0, #0x10
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #0x10
+ asr r2, r0, #0x10
+ add r0, r4, #0
+ ldr r3, [r4, #0x10]
+ add r0, #0x3c
+ add r1, r5, #0
+ bl MOD08_02218454
+ cmp r0, #0
+ bne _0222685C
+ ldr r0, [r4, #4]
+ mov r5, #4
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0x16
+ ldrsh r3, [r4, r0]
+ mov r0, #0x14
+ ldrsh r2, [r4, r0]
+ add r0, r4, #0
+ add r0, #0x18
+ str r3, [sp]
+ str r5, [sp, #4]
+ ldr r1, [r4, #8]
+ ldr r4, [r4, #0xc]
+ sub r5, #0x2c
+ mul r5, r1
+ lsl r4, r4, #4
+ add r1, r2, r5
+ add r3, r3, r4
+ lsl r1, r1, #0x10
+ lsl r3, r3, #0x10
+ asr r1, r1, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_0222681E:
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ add r0, #0x18
+ bl MOD08_02217F2C
+ cmp r0, #0
+ bne _0222685C
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_02226836:
+ mov r2, #0x14
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_02007558
+ mov r2, #0x16
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02007558
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+_0222685C:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02226860
+MOD08_02226860: ; 0x02226860
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r1, #0x60
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r0, r5, #0
+ str r5, [r4]
+ bl MOD08_02212460
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_022154D4
+ str r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #0x16]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C1C
+ str r0, [r4, #8]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD08_02217C44
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ ldr r1, _022268B4 ; =MOD08_0222673C
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+ nop
+_022268B4: .word MOD08_0222673C
+
+ thumb_func_start MOD08_022268B8
+MOD08_022268B8: ; 0x022268B8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r7, r1, #0
+ add r4, r0, #0
+ mov r1, #0xac
+ add r6, r2, #0
+ str r3, [sp]
+ bl MOD08_02228064
+ str r4, [r0]
+ str r0, [sp, #4]
+ str r6, [r0, #0xc]
+ add r0, r4, #0
+ bl MOD08_02212458
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02217C1C
+ ldr r1, [sp, #4]
+ str r0, [r1, #0x10]
+ ldr r1, [r1]
+ add r0, sp, #8
+ bl MOD08_02215474
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ add r1, sp, #8
+ strh r0, [r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ add r1, sp, #8
+ ldr r5, [sp, #4]
+ strh r0, [r1, #2]
+ mov r4, #0
+_0222690C:
+ cmp r4, #0
+ add r2, sp, #8
+ bne _02226926
+ ldr r0, [sp]
+ mov r1, #0
+ str r0, [r5, #0x14]
+ ldrsh r1, [r2, r1]
+ add r3, r2, #0
+ mov r2, #2
+ ldrsh r2, [r3, r2]
+ bl FUN_0200C714
+ b _02226930
+_02226926:
+ add r0, r7, #0
+ add r1, r6, #0
+ bl FUN_0200C154
+ str r0, [r5, #0x14]
+_02226930:
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r5, #0x14]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ bl FUN_0200C6B0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _0222690C
+ ldr r0, [sp, #4]
+ ldr r1, _02226960 ; =MOD08_02226964
+ ldr r0, [r0]
+ ldr r2, [sp, #4]
+ bl MOD08_02212400
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02226960: .word MOD08_02226964
+
+ thumb_func_start MOD08_02226964
+MOD08_02226964: ; 0x02226964
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #4
+ bhi _02226A48
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222697C: ; jump table
+ .short _02226986 - _0222697C - 2 ; case 0
+ .short _022269AE - _0222697C - 2 ; case 1
+ .short _022269CE - _0222697C - 2 ; case 2
+ .short _02226A00 - _0222697C - 2 ; case 3
+ .short _02226A26 - _0222697C - 2 ; case 4
+_02226986:
+ add r2, r4, #0
+ ldr r0, [r4, #0x14]
+ ldr r3, [r4, #0x10]
+ add r1, #0x1c
+ add r2, #0x64
+ bl MOD08_02226A50
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x14]
+ add r1, #0x1c
+ add r2, #0x64
+ bl MOD08_02226AB0
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #8
+ str r0, [r4, #8]
+ b _02226A48
+_022269AE:
+ ldr r0, [r4, #8]
+ add r2, r4, #0
+ sub r0, r0, #1
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x14]
+ add r1, #0x1c
+ add r2, #0x64
+ bl MOD08_02226AB0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bge _02226A48
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ b _02226A48
+_022269CE:
+ add r2, r4, #0
+ ldr r0, [r4, #0x18]
+ ldr r3, [r4, #0x10]
+ add r1, #0x40
+ add r2, #0x88
+ bl MOD08_02226A50
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x18]
+ add r1, #0x40
+ add r2, #0x88
+ bl MOD08_02226AB0
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x14]
+ add r1, #0x1c
+ add r2, #0x64
+ bl MOD08_02226AB0
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ b _02226A48
+_02226A00:
+ add r2, r4, #0
+ ldr r0, [r4, #0x14]
+ add r1, #0x1c
+ add r2, #0x64
+ bl MOD08_02226AB0
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x18]
+ add r1, #0x40
+ add r2, #0x88
+ bl MOD08_02226AB0
+ cmp r0, #0
+ beq _02226A48
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ b _02226A48
+_02226A26:
+ mov r6, #0
+ add r5, r4, #0
+_02226A2A:
+ ldr r0, [r5, #0x14]
+ bl FUN_0200C3DC
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #2
+ blt _02226A2A
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_02226A48:
+ ldr r0, [r4, #0xc]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02226A50
+MOD08_02226A50: ; 0x02226A50
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ add r5, r0, #0
+ mov r1, #2
+ add r7, r2, #0
+ add r4, r3, #0
+ bl FUN_0200C840
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200C644
+ add r1, sp, #8
+ add r0, r5, #0
+ add r1, #2
+ add r2, sp, #8
+ bl FUN_0200C7A0
+ add r1, sp, #8
+ mov r0, #0
+ ldrsh r3, [r1, r0]
+ mov r0, #2
+ ldrsh r1, [r1, r0]
+ add r0, r3, #0
+ sub r0, #0x20
+ lsl r0, r0, #0x10
+ lsl r2, r4, #4
+ asr r0, r0, #0x10
+ add r2, r1, r2
+ str r0, [sp]
+ mov r0, #0x20
+ lsl r2, r2, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ mov r0, #0x20
+ mov r2, #0xa
+ str r0, [sp]
+ add r0, r7, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD08_02218120
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02226AB0
+MOD08_02226AB0: ; 0x02226AB0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r4, r2, #0
+ add r1, r5, #0
+ bl MOD08_02217F08
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02218360
+ cmp r0, #0
+ beq _02226ACE
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02226ACE:
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02226ADC
+MOD08_02226ADC: ; 0x02226ADC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x3c
+ add r6, r0, #0
+ add r7, r2, #0
+ add r5, r3, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ str r6, [r4]
+ str r7, [r4, #0xc]
+ str r5, [r4, #0x10]
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #0x10]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C68C
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ ldr r1, _02226B28 ; =MOD08_02226B2C
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02226B28: .word MOD08_02226B2C
+
+ thumb_func_start MOD08_02226B2C
+MOD08_02226B2C: ; 0x02226B2C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #4
+ bhi _02226C18
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02226B46: ; jump table
+ .short _02226B50 - _02226B46 - 2 ; case 0
+ .short _02226B80 - _02226B46 - 2 ; case 1
+ .short _02226BA6 - _02226B46 - 2 ; case 2
+ .short _02226BE4 - _02226B46 - 2 ; case 3
+ .short _02226C00 - _02226B46 - 2 ; case 4
+_02226B50:
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #0x14
+ bl MOD08_022186D4
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, [r4]
+ mov r1, #0
+ mov r2, #0x14
+ bl MOD08_02227994
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ b _02226C18
+_02226B80:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02226C18
+ ldr r0, [r4, #4]
+ mov r1, #1
+ add r0, r0, #1
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C5E0
+ mov r1, #1
+ ldr r0, [r4, #0x10]
+ lsl r1, r1, #0xc
+ bl FUN_0200C5F4
+ b _02226C18
+_02226BA6:
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C630
+ mov r1, #3
+ bl _s32_div_f
+ ldr r2, [r4, #8]
+ ldr r0, [r4, #0x10]
+ add r1, r2, r1
+ bl FUN_0200C680
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C608
+ cmp r0, #0
+ bne _02226C18
+ ldr r0, [r4, #4]
+ mov r1, #0x10
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r2, #0
+ mov r3, #4
+ bl MOD08_022186D4
+ b _02226C18
+_02226BE4:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02226C18
+ ldr r0, [r4, #4]
+ mov r1, #0
+ add r0, r0, #1
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C644
+ b _02226C18
+_02226C00:
+ ldr r0, [r4, #0x10]
+ bl FUN_0200C3DC
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02226C18:
+ ldr r0, [r4, #0xc]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02226C24
+MOD08_02226C24: ; 0x02226C24
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ mov r1, #0x54
+ add r5, r0, #0
+ str r3, [sp, #0xc]
+ bl MOD08_02228064
+ ldr r1, [sp, #8]
+ str r5, [r0]
+ str r0, [sp, #0x14]
+ str r1, [r0, #8]
+ ldr r0, [r0]
+ bl MOD08_02212458
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_02217C1C
+ ldr r1, [sp, #0x14]
+ str r0, [sp, #0x10]
+ ldr r1, [r1]
+ add r0, sp, #0x18
+ bl MOD08_02215474
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD08_02217B98
+ add r1, sp, #0x18
+ strh r0, [r1]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD08_02217B98
+ ldr r7, [sp, #0x14]
+ ldr r6, [sp, #0x14]
+ ldr r5, [sp, #0x14]
+ add r1, sp, #0x18
+ add r7, #0x3c
+ add r6, #0x24
+ strh r0, [r1, #2]
+ mov r4, #5
+ add r5, #0x14
+ add r7, #0x14
+ add r6, #0x14
+_02226C88:
+ cmp r4, #5
+ add r2, sp, #0x18
+ bne _02226CA2
+ ldr r0, [sp, #0xc]
+ mov r1, #0
+ str r0, [r5, #0xc]
+ ldrsh r1, [r2, r1]
+ add r3, r2, #0
+ mov r2, #2
+ ldrsh r2, [r3, r2]
+ bl FUN_0200C714
+ b _02226CAC
+_02226CA2:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ bl FUN_0200C154
+ str r0, [r5, #0xc]
+_02226CAC:
+ ldr r0, [r5, #0xc]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r5, #0xc]
+ mov r1, #1
+ bl FUN_0200C6B0
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [sp, #0x10]
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r0, [r5, #0xc]
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD08_02226CF4
+ sub r5, r5, #4
+ sub r7, r7, #4
+ sub r6, r6, #4
+ sub r4, r4, #1
+ bpl _02226C88
+ ldr r0, [sp, #0x14]
+ ldr r1, _02226CF0 ; =MOD08_02226D78
+ ldr r0, [r0]
+ ldr r2, [sp, #0x14]
+ bl MOD08_02212400
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02226CF0: .word MOD08_02226D78
+
+ thumb_func_start MOD08_02226CF4
+MOD08_02226CF4: ; 0x02226CF4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r3, #0
+ add r6, r1, #0
+ lsr r1, r4, #0x1f
+ add r1, r4, r1
+ asr r1, r1, #1
+ add r5, r0, #0
+ add r7, r2, #0
+ bl FUN_0200C5C0
+ lsl r0, r4, #1
+ str r0, [r7]
+ mov r0, #0x10
+ add r1, sp, #0
+ str r0, [r6]
+ add r0, r5, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ mov r1, #2
+ add r6, r1, #0
+ add r2, sp, #0
+ sub r6, #0xe
+ mul r6, r4
+ ldr r0, [sp, #0x18]
+ ldrsh r3, [r2, r1]
+ add r6, #0x28
+ add r4, r0, #0
+ mul r4, r6
+ add r0, r3, r4
+ mov r3, #0
+ strh r0, [r2, #2]
+ ldrsh r0, [r2, r3]
+ add r0, #0x28
+ strh r0, [r2]
+ ldrsh r1, [r2, r1]
+ ldrsh r2, [r2, r3]
+ add r0, r5, #0
+ bl FUN_0200C714
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02226D48
+MOD08_02226D48: ; 0x02226D48
+ push {r3, lr}
+ ldr r3, [r2]
+ cmp r3, #0
+ ble _02226D5E
+ sub r1, r3, #1
+ str r1, [r2]
+ bne _02226D74
+ mov r1, #1
+ bl FUN_0200C644
+ b _02226D74
+_02226D5E:
+ ldr r2, [r1]
+ cmp r2, #0
+ ble _02226D6A
+ sub r0, r2, #1
+ str r0, [r1]
+ b _02226D74
+_02226D6A:
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #1
+ pop {r3, pc}
+_02226D74:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02226D78
+MOD08_02226D78: ; 0x02226D78
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r1, #4]
+ str r1, [sp]
+ cmp r0, #0
+ beq _02226D8A
+ cmp r0, #1
+ beq _02226DBC
+ b _02226DE0
+_02226D8A:
+ add r6, r1, #0
+ add r4, r1, #0
+ mov r7, #0
+ add r6, #0x3c
+ add r4, #0x24
+ add r5, r1, #0
+_02226D96:
+ ldr r0, [r5, #0xc]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD08_02226D48
+ add r7, r7, #1
+ add r6, r6, #4
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r7, #6
+ blt _02226D96
+ cmp r0, #0
+ beq _02226DE0
+ ldr r0, [sp]
+ ldr r0, [r0, #4]
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [r0, #4]
+ b _02226DE0
+_02226DBC:
+ mov r5, #0
+ add r4, r1, #0
+_02226DC0:
+ ldr r0, [r4, #0xc]
+ bl FUN_0200C3DC
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #6
+ blt _02226DC0
+ ldr r0, [sp]
+ add r1, r6, #0
+ ldr r0, [r0]
+ bl MOD08_02212438
+ ldr r0, [sp]
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_02226DE0:
+ ldr r0, [sp]
+ ldr r0, [r0, #8]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02226DEC
+MOD08_02226DEC: ; 0x02226DEC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r7, #0
+ add r6, r5, #0
+ str r1, [sp, #0x10]
+ add r6, #0x30
+ add r4, r7, #0
+_02226DFC:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x32
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0
+ str r0, [sp, #0xc]
+ ldr r2, _02226E3C ; =0x00007FFF
+ add r0, r6, #0
+ add r3, r1, #0
+ bl MOD08_02217D14
+ ldr r0, [r5, #0x38]
+ add r7, r7, #1
+ add r0, r0, r4
+ str r0, [r5, #0x38]
+ ldr r1, [r5, #0x48]
+ ldr r0, [sp, #0x10]
+ add r6, #0x24
+ mul r0, r1
+ str r0, [r5, #0x48]
+ ldr r0, _02226E40 ; =0x00002AAA
+ add r5, #0x24
+ add r4, r4, r0
+ cmp r7, #6
+ blt _02226DFC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02226E3C: .word 0x00007FFF
+_02226E40: .word 0x00002AAA
+
+ thumb_func_start MOD08_02226E44
+MOD08_02226E44: ; 0x02226E44
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0
+ add r7, r6, #0
+ str r0, [sp]
+ add r7, #0x30
+ add r4, r6, #0
+ add r5, r6, #0
+_02226E54:
+ add r0, r7, #0
+ bl MOD08_02217D98
+ mov r1, #0x13
+ lsl r1, r1, #4
+ mov r2, #0x30
+ ldrsh r1, [r6, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [r5, #0x18]
+ add r1, r1, r2
+ ldr r2, _02226EB0 ; =0x00000132
+ lsl r1, r1, #0x10
+ ldrsh r2, [r6, r2]
+ asr r1, r1, #0x10
+ bl FUN_0200C714
+ ldr r1, [r4, #0x38]
+ ldr r0, _02226EB4 ; =0x00003FFF
+ cmp r1, r0
+ blt _02226E8C
+ ldr r0, _02226EB8 ; =0x0000BF49
+ cmp r1, r0
+ bgt _02226E8C
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_0200C6B0
+ b _02226E9C
+_02226E8C:
+ ldr r0, [r6]
+ bl MOD08_02215574
+ add r1, r0, #0
+ ldr r0, [r5, #0x18]
+ add r1, r1, #1
+ bl FUN_0200C6B0
+_02226E9C:
+ ldr r0, [sp]
+ add r7, #0x24
+ add r0, r0, #1
+ add r4, #0x24
+ add r5, r5, #4
+ str r0, [sp]
+ cmp r0, #6
+ blt _02226E54
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02226EB0: .word 0x00000132
+_02226EB4: .word 0x00003FFF
+_02226EB8: .word 0x0000BF49
+
+ thumb_func_start MOD08_02226EBC
+MOD08_02226EBC: ; 0x02226EBC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #4
+ bhi _02226FA2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02226ED6: ; jump table
+ .short _02226EE0 - _02226ED6 - 2 ; case 0
+ .short _02226F16 - _02226ED6 - 2 ; case 1
+ .short _02226F36 - _02226ED6 - 2 ; case 2
+ .short _02226F62 - _02226ED6 - 2 ; case 3
+ .short _02226F7E - _02226ED6 - 2 ; case 4
+_02226EE0:
+ ldr r0, [r4]
+ mov r1, #1
+ mov r2, #0xf
+ bl MOD08_02227994
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, #0xfe
+ add r0, r4, r0
+ mov r1, #1
+ mov r2, #0x10
+ mov r3, #0xf
+ bl MOD08_022186D4
+ ldr r1, [r4, #0x14]
+ add r0, r4, #0
+ bl MOD08_02226DEC
+ add r0, r4, #0
+ bl MOD08_02226E44
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02226FA2
+_02226F16:
+ add r0, r4, #0
+ bl MOD08_02226E44
+ mov r0, #0x42
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02226FA2
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #0x1c
+ str r0, [r4, #0x10]
+ b _02226FA2
+_02226F36:
+ add r0, r4, #0
+ bl MOD08_02226E44
+ ldr r0, [r4, #0x10]
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+ bpl _02226FA2
+ ldr r0, [r4, #0xc]
+ mov r1, #0x10
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, #0xfe
+ add r0, r4, r0
+ mov r2, #1
+ mov r3, #0
+ bl MOD08_022186D4
+ b _02226FA2
+_02226F62:
+ add r0, r4, #0
+ bl MOD08_02226E44
+ mov r0, #0x42
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD08_02218704
+ cmp r0, #0
+ beq _02226FA2
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02226FA2
+_02226F7E:
+ mov r6, #0
+ add r5, r4, #0
+_02226F82:
+ ldr r0, [r5, #0x18]
+ bl FUN_0200C3DC
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #6
+ blt _02226F82
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD08_02212438
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02226FA2:
+ ldr r0, [r4, #8]
+ bl FUN_0200BC1C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02226FAC
+MOD08_02226FAC: ; 0x02226FAC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r1, #0
+ mov r1, #0x4d
+ lsl r1, r1, #2
+ add r4, r0, #0
+ str r2, [sp]
+ add r7, r3, #0
+ bl MOD08_02228064
+ add r6, r0, #0
+ str r4, [r6]
+ ldr r0, [sp]
+ str r5, [r6, #4]
+ str r0, [r6, #8]
+ add r0, r4, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_022154D4
+ mov r1, #0
+ add r5, r0, #0
+ bl FUN_0200782C
+ mov r1, #0x13
+ lsl r1, r1, #4
+ strh r0, [r6, r1]
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200782C
+ ldr r1, _02227050 ; =0x00000132
+ strh r0, [r6, r1]
+ add r0, sp, #4
+ add r1, r4, #0
+ bl MOD08_02215474
+ mov r4, #0
+ add r5, r6, #0
+_02226FFE:
+ cmp r4, #0
+ bne _02227006
+ str r7, [r5, #0x18]
+ b _02227012
+_02227006:
+ ldr r0, [r6, #4]
+ ldr r1, [r6, #8]
+ add r2, sp, #4
+ bl FUN_0200C154
+ str r0, [r5, #0x18]
+_02227012:
+ ldr r0, [r5, #0x18]
+ mov r1, #0x64
+ bl FUN_0200C6C4
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_0200C5E0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02226FFE
+ ldr r0, [r6]
+ bl MOD08_02212458
+ add r1, r0, #0
+ ldr r0, [r6]
+ bl MOD08_02217C1C
+ str r0, [r6, #0x14]
+ ldr r0, [r6]
+ ldr r1, _02227054 ; =MOD08_02226EBC
+ add r2, r6, #0
+ bl MOD08_02212400
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02227050: .word 0x00000132
+_02227054: .word MOD08_02226EBC
+
+ thumb_func_start MOD08_02227058
+MOD08_02227058: ; 0x02227058
+ strh r1, [r0, #0xc]
+ strh r2, [r0, #0xe]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02227060
+MOD08_02227060: ; 0x02227060
+ strh r1, [r0, #0x14]
+ strh r2, [r0, #0x16]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02227068
+MOD08_02227068: ; 0x02227068
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ add r4, r1, #0
+ bl MOD08_02212014
+ add r6, r0, #0
+ ldr r0, [r5, #0x1c]
+ mov r1, #3
+ bl MOD08_02215600
+ add r1, r0, #0
+ lsl r0, r4, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldr r1, [r5, #4]
+ ldr r0, [r5]
+ lsl r2, r1, #4
+ ldr r1, _022270F8 ; =0x0222C670
+ add r3, r4, #0
+ ldr r1, [r1, r2]
+ ldr r2, [r5, #0x2c]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x80
+ str r0, [sp, #8]
+ ldr r2, [r5, #4]
+ ldr r0, [r5, #0x30]
+ lsl r3, r2, #4
+ ldr r2, _022270FC ; =0x0222C674
+ ldr r1, [r5]
+ ldr r2, [r2, r3]
+ add r3, r6, #0
+ bl FUN_020030E8
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x2c]
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldr r1, [r5, #4]
+ ldr r0, [r5]
+ lsl r2, r1, #4
+ ldr r1, _02227100 ; =0x0222C678
+ add r3, r4, #0
+ ldr r1, [r1, r2]
+ ldr r2, [r5, #0x2c]
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_022270F8: .word 0x0222C670
+_022270FC: .word 0x0222C674
+_02227100: .word 0x0222C678
+
+ thumb_func_start MOD08_02227104
+MOD08_02227104: ; 0x02227104
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x18]
+ cmp r0, #3
+ bhi _022271C0
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0222711C: ; jump table
+ .short _02227124 - _0222711C - 2 ; case 0
+ .short _02227134 - _0222711C - 2 ; case 1
+ .short _0222714C - _0222711C - 2 ; case 2
+ .short _0222716C - _0222711C - 2 ; case 3
+_02227124:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD08_02227068
+ ldrb r0, [r4, #0x18]
+ add r0, r0, #1
+ strb r0, [r4, #0x18]
+ b _0222720E
+_02227134:
+ ldrh r0, [r4, #0x16]
+ mov r1, #4
+ mov r2, #0x39
+ str r0, [sp]
+ ldrh r3, [r4, #0x14]
+ ldr r0, _0222725C ; =0x04000050
+ bl G2x_SetBlendAlpha_
+ ldrb r0, [r4, #0x18]
+ add r0, r0, #1
+ strb r0, [r4, #0x18]
+ b _0222720E
+_0222714C:
+ add r1, r4, #0
+ add r1, #0x40
+ ldrb r1, [r1]
+ cmp r1, #0x14
+ bls _0222715C
+ add r0, r0, #1
+ strb r0, [r4, #0x18]
+ b _0222720E
+_0222715C:
+ add r0, r4, #0
+ add r0, #0x40
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x40
+ strb r1, [r0]
+ b _0222720E
+_0222716C:
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02227176
+ sub r0, r0, #1
+ strh r0, [r4, #0x14]
+_02227176:
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0x10
+ bhs _02227180
+ add r0, r0, #1
+ strh r0, [r4, #0x16]
+_02227180:
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0
+ bne _022271B2
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0x10
+ bne _022271B2
+ ldr r0, [r4, #0x2c]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_0200C644
+ ldrb r0, [r4, #0x18]
+ add r0, r0, #1
+ strb r0, [r4, #0x18]
+_022271B2:
+ ldrh r0, [r4, #0x16]
+ ldrh r1, [r4, #0x14]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _02227260 ; =0x04000052
+ strh r1, [r0]
+ b _0222720E
+_022271C0:
+ ldr r0, _02227264 ; =0x0400004A
+ mov r1, #0x3f
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #0x1f
+ orr r2, r1
+ strh r2, [r0]
+ ldrh r3, [r0]
+ ldr r2, _02227268 ; =0xFFFFC0FF
+ lsl r1, r1, #8
+ and r2, r3
+ orr r1, r2
+ strh r1, [r0]
+ mov r2, #0
+ ldr r0, [r4, #0x2c]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x2c]
+ mov r1, #2
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _0222726C ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ ldr r0, [r4, #0x1c]
+ add r1, r5, #0
+ bl MOD08_02212438
+ add r0, r4, #0
+ bl MOD08_02228094
+ pop {r3, r4, r5, pc}
+_0222720E:
+ mov r3, #0x10
+ mov r0, #0xc
+ ldrsh r1, [r4, r3]
+ ldrsh r0, [r4, r0]
+ mov r2, #0
+ add r0, r1, r0
+ strh r0, [r4, #0x10]
+ mov r0, #0x12
+ ldrsh r1, [r4, r0]
+ mov r0, #0xe
+ ldrsh r0, [r4, r0]
+ add r0, r1, r0
+ strh r0, [r4, #0x12]
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x2c]
+ mov r1, #2
+ bl FUN_020179E0
+ mov r3, #0x12
+ ldrsh r3, [r4, r3]
+ ldr r0, [r4, #0x2c]
+ mov r1, #2
+ mov r2, #3
+ bl FUN_020179E0
+ ldr r0, [r4, #0x34]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x38]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x3c]
+ bl FUN_0200C5A8
+ ldr r0, [r4, #0x24]
+ bl FUN_0200BC1C
+ pop {r3, r4, r5, pc}
+ nop
+_0222725C: .word 0x04000050
+_02227260: .word 0x04000052
+_02227264: .word 0x0400004A
+_02227268: .word 0xFFFFC0FF
+_0222726C: .word 0xFFFF1FFF
+
+ thumb_func_start MOD08_02227270
+MOD08_02227270: ; 0x02227270
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #7
+ str r1, [r4]
+ add r5, r0, #0
+ mov r1, #0
+ bl MOD08_02212498
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_02212498
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02227290
+MOD08_02227290: ; 0x02227290
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x44
+ add r6, r0, #0
+ bl MOD08_02228064
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, r6, #0
+ add r1, #0x18
+ bl MOD08_02227B70
+ add r2, r4, #0
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl MOD08_022124D8
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl MOD08_022124D8
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x1c]
+ mov r1, #2
+ bl MOD08_022124D8
+ str r0, [r4, #0x3c]
+ ldr r0, [r4, #0x1c]
+ mov r1, #2
+ bl MOD08_02215600
+ ldr r0, [r4, #0x34]
+ mov r1, #2
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x38]
+ mov r1, #2
+ bl FUN_0200C6B0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _022272FA
+ add r0, r6, #0
+ bl MOD08_02212458
+ b _02227300
+_022272FA:
+ add r0, r6, #0
+ bl MOD08_02212460
+_02227300:
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD08_02212004
+ cmp r0, #1
+ bne _02227338
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4, #0x1c]
+ mov r1, #2
+ bl MOD08_02215600
+ add r5, r0, #0
+ ldr r0, [r4, #0x34]
+ add r1, r5, #0
+ bl FUN_0200C6B0
+ ldr r0, [r4, #0x38]
+ add r1, r5, #0
+ bl FUN_0200C6B0
+ b _0222735C
+_02227338:
+ cmp r5, #1
+ bhi _02227346
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_0200C644
+ b _0222735C
+_02227346:
+ sub r0, r5, #3
+ cmp r0, #1
+ ldr r0, [r4, #0x3c]
+ bhi _02227356
+ mov r1, #3
+ bl FUN_0200C6B0
+ b _0222735C
+_02227356:
+ mov r1, #1
+ bl FUN_0200C6B0
+_0222735C:
+ ldr r0, _022273A8 ; =0x0400004A
+ ldr r1, _022273AC ; =0xFFFFC0FF
+ ldrh r2, [r0]
+ and r2, r1
+ mov r1, #0x16
+ lsl r1, r1, #8
+ orr r2, r1
+ lsr r1, r0, #0xd
+ orr r1, r2
+ strh r1, [r0]
+ ldrh r2, [r0]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x1b
+ orr r2, r1
+ mov r1, #0x20
+ orr r2, r1
+ strh r2, [r0]
+ lsl r3, r1, #0x15
+ ldr r2, [r3]
+ ldr r0, _022273B0 ; =0xFFFF1FFF
+ and r2, r0
+ lsl r0, r1, #0xa
+ orr r0, r2
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r1, #2
+ bl FUN_0200C90C
+ mov r0, #0
+ strh r0, [r4, #0x10]
+ strh r0, [r4, #0x12]
+ ldr r0, [r4, #0x1c]
+ ldr r1, _022273B4 ; =MOD08_02227104
+ add r2, r4, #0
+ bl MOD08_02212400
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022273A8: .word 0x0400004A
+_022273AC: .word 0xFFFFC0FF
+_022273B0: .word 0xFFFF1FFF
+_022273B4: .word MOD08_02227104
+
+ thumb_func_start MOD08_022273B8
+MOD08_022273B8: ; 0x022273B8
+ push {r4, lr}
+ sub sp, #0x18
+ add r1, sp, #0
+ add r4, r0, #0
+ bl MOD08_02227270
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #3
+ bl MOD08_02227058
+ add r0, sp, #0
+ mov r1, #0xc
+ mov r2, #4
+ bl MOD08_02227060
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD08_02227290
+ add sp, #0x18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022273E4
+MOD08_022273E4: ; 0x022273E4
+ push {r4, lr}
+ sub sp, #0x18
+ add r1, sp, #0
+ add r4, r0, #0
+ bl MOD08_02227270
+ mov r1, #0
+ add r0, sp, #0
+ sub r2, r1, #3
+ bl MOD08_02227058
+ add r0, sp, #0
+ mov r1, #0xc
+ mov r2, #4
+ bl MOD08_02227060
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD08_02227290
+ add sp, #0x18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02227410
+MOD08_02227410: ; 0x02227410
+ push {r4, lr}
+ sub sp, #0x18
+ add r1, sp, #0
+ add r4, r0, #0
+ bl MOD08_02227270
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #3
+ bl MOD08_02227058
+ add r0, sp, #0
+ mov r1, #0xc
+ mov r2, #4
+ bl MOD08_02227060
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD08_02227290
+ add sp, #0x18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_0222743C
+MOD08_0222743C: ; 0x0222743C
+ push {r4, lr}
+ sub sp, #0x18
+ add r1, sp, #0
+ add r4, r0, #0
+ bl MOD08_02227270
+ mov r1, #0
+ add r0, sp, #0
+ sub r2, r1, #6
+ bl MOD08_02227058
+ add r0, sp, #0
+ mov r1, #0xc
+ mov r2, #4
+ bl MOD08_02227060
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD08_02227290
+ add sp, #0x18
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02227468
+MOD08_02227468: ; 0x02227468
+ ldr r3, _0222746C ; =MOD08_02215490
+ bx r3
+ .align 2, 0
+_0222746C: .word MOD08_02215490
+
+ thumb_func_start MOD08_02227470
+MOD08_02227470: ; 0x02227470
+ push {r4, lr}
+ bl MOD08_02215490
+ cmp r0, #5
+ bhi _02227498
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02227486: ; jump table
+ .short _02227492 - _02227486 - 2 ; case 0
+ .short _02227496 - _02227486 - 2 ; case 1
+ .short _02227492 - _02227486 - 2 ; case 2
+ .short _02227496 - _02227486 - 2 ; case 3
+ .short _02227492 - _02227486 - 2 ; case 4
+ .short _02227496 - _02227486 - 2 ; case 5
+_02227492:
+ mov r4, #3
+ b _02227498
+_02227496:
+ mov r4, #4
+_02227498:
+ add r0, r4, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD08_0222749C
+MOD08_0222749C: ; 0x0222749C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r4, #0
+_022274A4:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD08_02215490
+ cmp r0, r5
+ bne _022274B4
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_022274B4:
+ add r4, r4, #1
+ cmp r4, #4
+ blt _022274A4
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022274C0
+MOD08_022274C0: ; 0x022274C0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl MOD08_02215490
+ add r5, r0, #0
+ cmp r5, #1
+ bls _02227520
+ mov r4, #0
+_022274D0:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD08_02215490
+ cmp r5, #5
+ bhi _02227514
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022274E8: ; jump table
+ .short _02227514 - _022274E8 - 2 ; case 0
+ .short _02227514 - _022274E8 - 2 ; case 1
+ .short _022274F4 - _022274E8 - 2 ; case 2
+ .short _02227504 - _022274E8 - 2 ; case 3
+ .short _022274FC - _022274E8 - 2 ; case 4
+ .short _0222750C - _022274E8 - 2 ; case 5
+_022274F4:
+ cmp r0, #4
+ bne _02227514
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_022274FC:
+ cmp r0, #2
+ bne _02227514
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02227504:
+ cmp r0, #5
+ bne _02227514
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_0222750C:
+ cmp r0, #3
+ bne _02227514
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02227514:
+ add r4, r4, #1
+ cmp r4, #4
+ blt _022274D0
+ bl ErrorHandling
+ add r0, r5, #0
+_02227520:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02227524
+MOD08_02227524: ; 0x02227524
+ push {r3, lr}
+ cmp r0, #5
+ bhi _0222755A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02227536: ; jump table
+ .short _02227542 - _02227536 - 2 ; case 0
+ .short _02227546 - _02227536 - 2 ; case 1
+ .short _0222754A - _02227536 - 2 ; case 2
+ .short _0222754E - _02227536 - 2 ; case 3
+ .short _02227552 - _02227536 - 2 ; case 4
+ .short _02227556 - _02227536 - 2 ; case 5
+_02227542:
+ mov r0, #1
+ pop {r3, pc}
+_02227546:
+ mov r0, #0
+ pop {r3, pc}
+_0222754A:
+ mov r0, #3
+ pop {r3, pc}
+_0222754E:
+ mov r0, #2
+ pop {r3, pc}
+_02227552:
+ mov r0, #5
+ pop {r3, pc}
+_02227556:
+ mov r0, #4
+ pop {r3, pc}
+_0222755A:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02227564
+MOD08_02227564: ; 0x02227564
+ push {r3, r4, r5, r6}
+ sub sp, #0x30
+ ldr r6, _022275B8 ; =0x0222C6C8
+ add r5, sp, #0x18
+ mov r4, #0xc
+_0222756E:
+ ldrh r3, [r6]
+ add r6, r6, #2
+ strh r3, [r5]
+ add r5, r5, #2
+ sub r4, r4, #1
+ bne _0222756E
+ ldr r6, _022275BC ; =0x0222C6E0
+ add r5, sp, #0
+ mov r4, #0xc
+_02227580:
+ ldrh r3, [r6]
+ add r6, r6, #2
+ strh r3, [r5]
+ add r5, r5, #2
+ sub r4, r4, #1
+ bne _02227580
+ cmp r1, #0
+ beq _022275A4
+ lsl r3, r0, #2
+ add r0, sp, #0
+ add r1, r0, r3
+ ldrh r0, [r0, r3]
+ add sp, #0x30
+ strh r0, [r2]
+ ldrh r0, [r1, #2]
+ strh r0, [r2, #2]
+ pop {r3, r4, r5, r6}
+ bx lr
+_022275A4:
+ lsl r3, r0, #2
+ add r0, sp, #0x18
+ add r1, r0, r3
+ ldrh r0, [r0, r3]
+ strh r0, [r2]
+ ldrh r0, [r1, #2]
+ strh r0, [r2, #2]
+ add sp, #0x30
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+_022275B8: .word 0x0222C6C8
+_022275BC: .word 0x0222C6E0
+
+ thumb_func_start MOD08_022275C0
+MOD08_022275C0: ; 0x022275C0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ bl MOD08_02227468
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD08_02212004
+ add r1, r0, #0
+ add r0, r6, #0
+ add r2, r4, #0
+ bl MOD08_02227564
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022275E0
+MOD08_022275E0: ; 0x022275E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x1fc
+ sub sp, #0x114
+ add r7, r2, #0
+ mov r2, #0x12
+ str r3, [sp]
+ ldr r6, _02227654 ; =0x0222C6F8
+ add r5, r0, #0
+ add r4, r1, #0
+ add r3, sp, #4
+ lsl r2, r2, #4
+_022275FC:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022275FC
+ cmp r7, #1
+ bne _0222761E
+ cmp r5, #0
+ beq _02227612
+ cmp r5, #1
+ beq _02227616
+ b _0222761A
+_02227612:
+ mov r5, #6
+ b _0222761E
+_02227616:
+ mov r5, #7
+ b _0222761E
+_0222761A:
+ bl ErrorHandling
+_0222761E:
+ mov r0, #0x12
+ lsl r0, r0, #4
+ add r1, sp, #4
+ mul r0, r5
+ add r0, r1, r0
+ ldr r1, _02227658 ; =0x00000908
+ add r1, sp
+ ldr r1, [r1, #0x10]
+ lsl r2, r1, #1
+ ldr r1, [sp]
+ add r2, r1, r2
+ mov r1, #0xc
+ add r3, r2, #0
+ mul r3, r1
+ add r1, r0, r3
+ ldr r2, [r1, #8]
+ ldr r1, [r1, #4]
+ ldr r0, [r0, r3]
+ str r0, [r4]
+ str r1, [r4, #4]
+ str r2, [r4, #8]
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x1fc
+ add sp, #0x114
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02227654: .word 0x0222C6F8
+_02227658: .word 0x00000908
+
+ thumb_func_start MOD08_0222765C
+MOD08_0222765C: ; 0x0222765C
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #0
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_0222766C
+MOD08_0222766C: ; 0x0222766C
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #1
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_0222767C
+MOD08_0222767C: ; 0x0222767C
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #2
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_0222768C
+MOD08_0222768C: ; 0x0222768C
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #3
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_0222769C
+MOD08_0222769C: ; 0x0222769C
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #4
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_022276AC
+MOD08_022276AC: ; 0x022276AC
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #5
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_022276BC
+MOD08_022276BC: ; 0x022276BC
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #6
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_022276CC
+MOD08_022276CC: ; 0x022276CC
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #7
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_022276DC
+MOD08_022276DC: ; 0x022276DC
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #8
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_022276EC
+MOD08_022276EC: ; 0x022276EC
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #9
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_022276FC
+MOD08_022276FC: ; 0x022276FC
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #0xa
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_0222770C
+MOD08_0222770C: ; 0x0222770C
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r4, #0xb
+ str r4, [sp]
+ bl MOD08_022275E0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_0222771C
+MOD08_0222771C: ; 0x0222771C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_0222765C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222774C
+MOD08_0222774C: ; 0x0222774C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_0222766C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222777C
+MOD08_0222777C: ; 0x0222777C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_0222767C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_022277AC
+MOD08_022277AC: ; 0x022277AC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_0222768C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_022277DC
+MOD08_022277DC: ; 0x022277DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_0222769C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222780C
+MOD08_0222780C: ; 0x0222780C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_022276AC
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222783C
+MOD08_0222783C: ; 0x0222783C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_022276BC
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222786C
+MOD08_0222786C: ; 0x0222786C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_022276CC
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222789C
+MOD08_0222789C: ; 0x0222789C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_022276DC
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_022278CC
+MOD08_022278CC: ; 0x022278CC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_022276EC
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_022278FC
+MOD08_022278FC: ; 0x022278FC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_022276FC
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222792C
+MOD08_0222792C: ; 0x0222792C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD08_02212468
+ bl FUN_02013448
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD08_02227468
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD08_02212004
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD08_0222770C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222795C
+MOD08_0222795C: ; 0x0222795C
+ mov r2, #0
+ ldr r1, _02227968 ; =0x000068D0
+ str r2, [r0]
+ str r1, [r0, #4]
+ str r2, [r0, #8]
+ bx lr
+ .align 2, 0
+_02227968: .word 0x000068D0
+
+ thumb_func_start MOD08_0222796C
+MOD08_0222796C: ; 0x0222796C
+ push {r3, lr}
+ bl MOD08_0222765C
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02227974
+MOD08_02227974: ; 0x02227974
+ push {r3, lr}
+ add r3, r1, #0
+ cmp r0, #0
+ bne _02227984
+ add r0, r3, #0
+ bl FUN_02013428
+ pop {r3, pc}
+_02227984:
+ ldr r2, _02227990 ; =0x0222C6BC
+ ldmia r2!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r3]
+ pop {r3, pc}
+ .align 2, 0
+_02227990: .word 0x0222C6BC
+
+ thumb_func_start MOD08_02227994
+MOD08_02227994: ; 0x02227994
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0
+ mvn r1, r1
+ add r4, r2, #0
+ cmp r5, r1
+ bne _022279A4
+ mov r5, #0x1a
+_022279A4:
+ mov r1, #0
+ mvn r1, r1
+ cmp r4, r1
+ bne _022279AE
+ mov r4, #5
+_022279AE:
+ mov r1, #2
+ bl MOD08_022155C4
+ mov r1, #1
+ add r2, r1, #0
+ lsl r2, r0
+ orr r2, r1
+ ldr r0, _022279CC ; =0x04000050
+ mov r1, #0
+ add r3, r5, #0
+ str r4, [sp]
+ bl G2x_SetBlendAlpha_
+ pop {r3, r4, r5, pc}
+ nop
+_022279CC: .word 0x04000050
+
+ thumb_func_start MOD08_022279D0
+MOD08_022279D0: ; 0x022279D0
+ push {r3, r4, r5, lr}
+ mov r0, #0
+ add r4, r2, #0
+ mvn r0, r0
+ add r5, r1, #0
+ cmp r4, r0
+ bne _022279E0
+ mov r4, #0x1a
+_022279E0:
+ mov r0, #0
+ mvn r0, r0
+ cmp r3, r0
+ bne _022279EA
+ mov r3, #5
+_022279EA:
+ ldr r0, _022279FC ; =0x04000050
+ str r3, [sp]
+ mov r1, #0
+ add r2, r5, #0
+ add r3, r4, #0
+ bl G2x_SetBlendAlpha_
+ pop {r3, r4, r5, pc}
+ nop
+_022279FC: .word 0x04000050
+
+ thumb_func_start MOD08_02227A00
+MOD08_02227A00: ; 0x02227A00
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0
+ add r5, r1, #0
+ mvn r0, r0
+ add r4, r2, #0
+ cmp r5, r0
+ bne _02227A12
+ mov r5, #0x1a
+_02227A12:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02227A1C
+ mov r4, #5
+_02227A1C:
+ add r0, r6, #0
+ mov r1, #2
+ bl MOD08_022155C4
+ mov r1, #1
+ add r2, r1, #0
+ lsl r2, r0
+ mov r0, #0x11
+ add r7, r2, #0
+ orr r7, r0
+ add r0, r6, #0
+ bl MOD08_022155C4
+ mov r1, #1
+ lsl r1, r0
+ ldr r0, _02227A48 ; =0x04000050
+ add r2, r7, #0
+ add r3, r5, #0
+ str r4, [sp]
+ bl G2x_SetBlendAlpha_
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02227A48: .word 0x04000050
+
+ thumb_func_start MOD08_02227A4C
+MOD08_02227A4C: ; 0x02227A4C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ cmp r1, #0
+ bne _02227AA0
+ mov r1, #1
+ bl MOD08_022155C4
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_022155C4
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_022155C4
+ add r2, r0, #0
+ mov r0, #1
+ add r3, r0, #0
+ add r1, r0, #0
+ lsl r3, r7
+ lsl r0, r2
+ lsl r1, r6
+ orr r0, r3
+ orr r1, r0
+ mov r0, #0x11
+ add r2, r1, #0
+ orr r2, r0
+ ldr r0, _02227B20 ; =0x04000048
+ ldrh r1, [r0]
+ mov r0, #0x3f
+ bic r1, r0
+ orr r1, r2
+ cmp r4, #0
+ beq _02227A9A
+ mov r0, #0x20
+ orr r1, r0
+_02227A9A:
+ ldr r0, _02227B20 ; =0x04000048
+ strh r1, [r0]
+ b _02227AEA
+_02227AA0:
+ mov r1, #1
+ bl MOD08_022155C4
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD08_022155C4
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_022155C4
+ add r2, r0, #0
+ mov r0, #1
+ add r3, r0, #0
+ add r1, r0, #0
+ lsl r0, r2
+ lsl r3, r7
+ lsl r1, r6
+ orr r0, r3
+ orr r1, r0
+ ldr r2, _02227B20 ; =0x04000048
+ add r3, r1, #0
+ mov r0, #0x11
+ orr r3, r0
+ ldrh r1, [r2]
+ ldr r0, _02227B24 ; =0xFFFFC0FF
+ and r1, r0
+ lsl r0, r3, #8
+ orr r1, r0
+ cmp r4, #0
+ beq _02227AE6
+ lsr r0, r2, #0xd
+ orr r1, r0
+_02227AE6:
+ ldr r0, _02227B20 ; =0x04000048
+ strh r1, [r0]
+_02227AEA:
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD08_022155C4
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD08_022155C4
+ mov r1, #1
+ add r2, r1, #0
+ lsl r1, r0
+ lsl r2, r4
+ orr r1, r2
+ add r3, r1, #0
+ ldr r1, _02227B28 ; =0x0400004A
+ mov r0, #0x11
+ orr r3, r0
+ ldrh r2, [r1]
+ mov r0, #0x3f
+ bic r2, r0
+ orr r2, r3
+ mov r0, #0x20
+ orr r0, r2
+ strh r0, [r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02227B20: .word 0x04000048
+_02227B24: .word 0xFFFFC0FF
+_02227B28: .word 0x0400004A
+
+ thumb_func_start MOD08_02227B2C
+MOD08_02227B2C: ; 0x02227B2C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0
+ bne _02227B3E
+ mov r0, #0
+ strh r0, [r4]
+ strh r0, [r4, #2]
+ pop {r3, r4, r5, pc}
+_02227B3E:
+ bl FUN_02008268
+ cmp r0, #0
+ bne _02227B4E
+ mov r0, #0
+ strh r0, [r4]
+ strh r0, [r4, #2]
+ pop {r3, r4, r5, pc}
+_02227B4E:
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0200782C
+ strh r0, [r4]
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200782C
+ strh r0, [r4, #2]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02227B64
+MOD08_02227B64: ; 0x02227B64
+ ldr r3, _02227B6C ; =0x0200C7A1
+ add r2, r1, #2
+ bx r3
+ nop
+_02227B6C: .word 0x0200C7A1
+
+ thumb_func_start MOD08_02227B70
+MOD08_02227B70: ; 0x02227B70
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0
+ strb r1, [r4]
+ strb r1, [r4, #1]
+ strb r1, [r4, #2]
+ add r5, r0, #0
+ strb r1, [r4, #3]
+ str r5, [r4, #4]
+ bl MOD08_02212520
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD08_02212504
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD08_02212518
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ bl MOD08_02212490
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ bl MOD08_02215504
+ str r0, [r4, #0x18]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02227BAC
+MOD08_02227BAC: ; 0x02227BAC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r1, #0
+ add r4, r3, #0
+ mov r1, #0
+ str r1, [r4]
+ mov r1, #0x40
+ and r1, r7
+ add r6, r0, #0
+ add r5, r2, #0
+ cmp r1, #0x40
+ beq _02227BC6
+ b _02227CE8
+_02227BC6:
+ bl MOD08_02212458
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_022154D4
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #8]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ cmp r0, #0
+ beq _02227C08
+ str r7, [r1, #0x10]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227C08:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_022274C0
+ str r0, [sp, #4]
+ ldr r1, [sp, #4]
+ add r0, r6, #0
+ bl MOD08_022154D4
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #8]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ ldr r1, [r0, #8]
+ cmp r1, #0
+ beq _02227C50
+ ldr r1, [sp, #4]
+ str r1, [r0, #0x10]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227C50:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_02215490
+ bl MOD08_02227524
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_0222749C
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_022154D4
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #8]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ cmp r0, #0
+ beq _02227CA2
+ str r7, [r1, #0x10]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227CA2:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_022274C0
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_022154D4
+ ldr r2, [r4]
+ mov r1, #0x14
+ add r3, r2, #0
+ mul r3, r1
+ add r2, r5, r3
+ str r0, [r2, #8]
+ ldr r0, [r4]
+ add r2, r0, #0
+ mul r2, r1
+ add r2, r5, r2
+ ldr r0, [r2, #8]
+ cmp r0, #0
+ beq _02227DCA
+ str r7, [r2, #0x10]
+ ldr r0, [r4]
+ mul r1, r0
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02227CE8:
+ mov r1, #0x20
+ and r1, r7
+ cmp r1, #0x20
+ bne _02227DE8
+ bl MOD08_02212458
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_022274C0
+ str r0, [sp, #8]
+ cmp r0, r7
+ beq _02227D42
+ ldr r1, [sp, #8]
+ add r0, r6, #0
+ bl MOD08_022154D4
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #8]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ ldr r1, [r0, #8]
+ cmp r1, #0
+ beq _02227D42
+ ldr r1, [sp, #8]
+ str r1, [r0, #0x10]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227D42:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD08_02215490
+ bl MOD08_02227524
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_0222749C
+ str r0, [sp]
+ cmp r0, r7
+ beq _02227D9A
+ ldr r1, [sp]
+ add r0, r6, #0
+ bl MOD08_022154D4
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #8]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ ldr r1, [r0, #8]
+ cmp r1, #0
+ beq _02227D9A
+ ldr r1, [sp]
+ str r1, [r0, #0x10]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227D9A:
+ ldr r1, [sp]
+ add r0, r6, #0
+ bl MOD08_022274C0
+ str r0, [sp, #0xc]
+ cmp r0, r7
+ beq _02227DCA
+ ldr r1, [sp, #0xc]
+ add r0, r6, #0
+ bl MOD08_022154D4
+ ldr r2, [r4]
+ mov r1, #0x14
+ add r3, r2, #0
+ mul r3, r1
+ add r2, r5, r3
+ str r0, [r2, #8]
+ ldr r0, [r4]
+ add r2, r0, #0
+ mul r2, r1
+ add r2, r5, r2
+ ldr r0, [r2, #8]
+ cmp r0, #0
+ bne _02227DCC
+_02227DCA:
+ b _02227F82
+_02227DCC:
+ ldr r0, [sp, #0xc]
+ str r0, [r2, #0x10]
+ ldr r0, [r4]
+ mul r1, r0
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02227DE8:
+ mov r1, #2
+ and r1, r7
+ cmp r1, #2
+ bne _02227E42
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022154D4
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #8]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _02227E42
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #0x10]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227E42:
+ add r0, r6, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _02227EB8
+ mov r0, #4
+ and r0, r7
+ cmp r0, #4
+ bne _02227EB8
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022274C0
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022154D4
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #8]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _02227EB8
+ add r0, r6, #0
+ bl MOD08_02212458
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022274C0
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #0x10]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227EB8:
+ mov r0, #8
+ and r0, r7
+ cmp r0, #8
+ bne _02227F14
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022154D4
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #8]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _02227F14
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #0x10]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227F14:
+ add r0, r6, #0
+ bl MOD08_0221553C
+ cmp r0, #1
+ bne _02227F82
+ mov r0, #0x10
+ and r0, r7
+ cmp r0, #0x10
+ bne _02227F82
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022274C0
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022154D4
+ ldr r2, [r4]
+ mov r1, #0x14
+ add r3, r2, #0
+ mul r3, r1
+ add r2, r5, r3
+ str r0, [r2, #8]
+ ldr r0, [r4]
+ mul r1, r0
+ add r0, r5, r1
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _02227F82
+ add r0, r6, #0
+ bl MOD08_02212460
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD08_022274C0
+ ldr r2, [r4]
+ mov r1, #0x14
+ add r3, r2, #0
+ mul r3, r1
+ add r2, r5, r3
+ str r0, [r2, #0x10]
+ ldr r0, [r4]
+ mul r1, r0
+ add r1, r5, r1
+ ldr r0, [r1, #8]
+ add r1, r1, #4
+ bl MOD08_02227B2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227F82:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02227F88
+MOD08_02227F88: ; 0x02227F88
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r4, r3, #0
+ mov r1, #0
+ str r1, [r4]
+ mov r1, #2
+ and r1, r6
+ add r7, r0, #0
+ add r5, r2, #0
+ cmp r1, #2
+ bne _02227FC8
+ ldr r1, [r4]
+ bl MOD08_022124D8
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #0xc]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #0xc]
+ add r1, r1, #4
+ bl MOD08_02227B64
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227FC8:
+ mov r0, #4
+ and r0, r6
+ cmp r0, #4
+ bne _02227FFC
+ ldr r1, [r4]
+ add r0, r7, #0
+ bl MOD08_022124D8
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #0xc]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #0xc]
+ add r1, r1, #4
+ bl MOD08_02227B64
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02227FFC:
+ mov r0, #8
+ and r0, r6
+ cmp r0, #8
+ bne _02228030
+ ldr r1, [r4]
+ add r0, r7, #0
+ bl MOD08_022124D8
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x14
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r2, [r0, #0xc]
+ ldr r0, [r4]
+ add r1, r0, #0
+ mul r1, r3
+ add r1, r5, r1
+ ldr r0, [r1, #0xc]
+ add r1, r1, #4
+ bl MOD08_02227B64
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02228030:
+ mov r0, #0x10
+ and r0, r6
+ cmp r0, #0x10
+ bne _02228060
+ ldr r1, [r4]
+ add r0, r7, #0
+ bl MOD08_022124D8
+ ldr r2, [r4]
+ mov r1, #0x14
+ add r3, r2, #0
+ mul r3, r1
+ add r2, r5, r3
+ str r0, [r2, #0xc]
+ ldr r0, [r4]
+ mul r1, r0
+ add r1, r5, r1
+ ldr r0, [r1, #0xc]
+ add r1, r1, #4
+ bl MOD08_02227B64
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_02228060:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02228064
+MOD08_02228064: ; 0x02228064
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ cmp r4, #0
+ bne _02228072
+ bl ErrorHandling
+_02228072:
+ add r0, r4, #0
+ bl MOD08_02212014
+ add r1, r5, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _02228086
+ bl ErrorHandling
+_02228086:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r5, #0
+ bl Call_FillMemWithValue
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02228094
+MOD08_02228094: ; 0x02228094
+ push {r4, lr}
+ add r4, r0, #0
+ bne _0222809E
+ bl ErrorHandling
+_0222809E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022280A8
+MOD08_022280A8: ; 0x022280A8
+ cmp r0, #1
+ blt _022280B2
+ ldr r1, _022280C0 ; =0x00000113
+ cmp r0, r1
+ ble _022280B6
+_022280B2:
+ mov r0, #4
+ b _022280BC
+_022280B6:
+ cmp r0, #0xff
+ blt _022280BC
+ sub r0, #0xff
+_022280BC:
+ sub r0, r0, #1
+ bx lr
+ .align 2, 0
+_022280C0: .word 0x00000113
+
+ thumb_func_start MOD08_022280C4
+MOD08_022280C4: ; 0x022280C4
+ push {r3, r4, r5}
+ sub sp, #0x2c
+ ldr r5, _02228100 ; =0x0222D0A4
+ add r2, r0, #0
+ add r4, sp, #0
+ mov r3, #5
+_022280D0:
+ ldmia r5!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r3, r3, #1
+ bne _022280D0
+ ldr r0, [r5]
+ str r0, [r4]
+ mov r0, #0
+ add r3, r0, #0
+ add r4, sp, #0
+_022280E2:
+ ldr r1, [r4]
+ cmp r2, r1
+ bne _022280F0
+ add sp, #0x2c
+ mov r0, #1
+ pop {r3, r4, r5}
+ bx lr
+_022280F0:
+ add r3, r3, #1
+ add r4, r4, #4
+ cmp r3, #0xb
+ blo _022280E2
+ add sp, #0x2c
+ pop {r3, r4, r5}
+ bx lr
+ nop
+_02228100: .word 0x0222D0A4
+
+ thumb_func_start MOD08_02228104
+MOD08_02228104: ; 0x02228104
+ push {r4, r5}
+ sub sp, #0x18
+ ldr r3, _0222813C ; =0x0222D004
+ add r2, sp, #0
+ add r5, r0, #0
+ add r4, r2, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r0, #0
+ add r2, r0, #0
+_02228120:
+ ldr r1, [r4]
+ cmp r5, r1
+ bne _0222812E
+ add sp, #0x18
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+_0222812E:
+ add r2, r2, #1
+ add r4, r4, #4
+ cmp r2, #6
+ blo _02228120
+ add sp, #0x18
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_0222813C: .word 0x0222D004
+
+ thumb_func_start MOD08_02228140
+MOD08_02228140: ; 0x02228140
+ push {r3, r4, r5}
+ sub sp, #0xc
+ ldr r5, _02228174 ; =0x0222CFF8
+ add r3, r0, #0
+ ldmia r5!, {r0, r1}
+ add r4, sp, #0
+ add r2, r4, #0
+ stmia r4!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r4]
+ mov r0, #1
+ mov r4, #0
+_02228158:
+ ldr r1, [r2]
+ cmp r3, r1
+ bne _02228166
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, r5}
+ bx lr
+_02228166:
+ add r4, r4, #1
+ add r2, r2, #4
+ cmp r4, #3
+ blo _02228158
+ add sp, #0xc
+ pop {r3, r4, r5}
+ bx lr
+ .align 2, 0
+_02228174: .word 0x0222CFF8
+
+ thumb_func_start MOD08_02228178
+MOD08_02228178: ; 0x02228178
+ push {r3, lr}
+ bl MOD08_022280A8
+ lsl r1, r0, #3
+ ldr r0, _02228188 ; =0x0222D208
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ nop
+_02228188: .word 0x0222D208
+
+ thumb_func_start MOD08_0222818C
+MOD08_0222818C: ; 0x0222818C
+ push {r3, lr}
+ bl MOD08_022280A8
+ lsl r1, r0, #3
+ ldr r0, _0222819C ; =0x0222D20C
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ nop
+_0222819C: .word 0x0222D20C
+
+ thumb_func_start MOD08_022281A0
+MOD08_022281A0: ; 0x022281A0
+ push {r3, lr}
+ bl MOD08_022280A8
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _022281B0 ; =0x0222D2A8
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ .align 2, 0
+_022281B0: .word 0x0222D2A8
+
+ thumb_func_start MOD08_022281B4
+MOD08_022281B4: ; 0x022281B4
+ push {r3, lr}
+ bl MOD08_022280A8
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _022281C4 ; =0x0222D2B0
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ .align 2, 0
+_022281C4: .word 0x0222D2B0
+
+ thumb_func_start MOD08_022281C8
+MOD08_022281C8: ; 0x022281C8
+ push {r3, lr}
+ bl MOD08_022280A8
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, _022281D8 ; =0x0222D2AC
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ .align 2, 0
+_022281D8: .word 0x0222D2AC
+
+ thumb_func_start MOD08_022281DC
+MOD08_022281DC: ; 0x022281DC
+ push {r4, lr}
+ add r4, r1, #0
+ bl MOD08_022280A8
+ lsl r2, r0, #4
+ ldr r0, _022281F0 ; =0x0222D398
+ lsl r1, r4, #2
+ add r0, r0, r2
+ ldr r0, [r1, r0]
+ pop {r4, pc}
+ .align 2, 0
+_022281F0: .word 0x0222D398
+
+ thumb_func_start MOD08_022281F4
+MOD08_022281F4: ; 0x022281F4
+ push {r4, lr}
+ mov r1, #0xb8
+ add r4, r0, #0
+ bl FUN_02016998
+ cmp r0, #0
+ bne _0222820A
+ bl ErrorHandling
+ mov r0, #0
+ pop {r4, pc}
+_0222820A:
+ add r1, r0, #0
+ str r4, [r0]
+ mov r2, #0
+ add r1, #0x88
+ str r2, [r1]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02228218
+MOD08_02228218: ; 0x02228218
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl MOD08_022281F4
+ add r1, r5, #0
+ add r4, r0, #0
+ bl MOD08_02228244
+ mov r1, #0
+ str r1, [r4, #0x10]
+ add r2, r4, #0
+ add r0, r1, #0
+_02228230:
+ str r0, [r2, #0x14]
+ str r0, [r2, #0x38]
+ str r0, [r2, #0x5c]
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #9
+ blt _02228230
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02228244
+MOD08_02228244: ; 0x02228244
+ push {r4, lr}
+ add r3, r1, #0
+ add r4, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, r4, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #0xa1
+ str r0, [r2]
+ ldr r0, [r4, #0xc]
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r4, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ cmp r0, #0xd
+ blt _02228272
+ bl ErrorHandling
+_02228272:
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0222829E
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x94
+ str r2, [r0]
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _02228290
+ add r4, #0x98
+ str r0, [r4]
+ pop {r4, pc}
+_02228290:
+ ldr r0, [r4, #0xc]
+ mov r1, #0x9a
+ bl FUN_020671BC
+ add r4, #0x98
+ str r0, [r4]
+ pop {r4, pc}
+_0222829E:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x94
+ str r1, [r0]
+ ldr r0, [r4, #0xc]
+ add r4, #0xa0
+ mov r1, #0xaa
+ add r2, r4, #0
+ bl FUN_020671BC
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022282B4
+MOD08_022282B4: ; 0x022282B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r4, r1, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #3
+ bls _022282C8
+ b _02228520
+_022282C8:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022282D4: ; jump table
+ .short _022282DC - _022282D4 - 2 ; case 0
+ .short _02228376 - _022282D4 - 2 ; case 1
+ .short _02228402 - _022282D4 - 2 ; case 2
+ .short _0222848E - _022282D4 - 2 ; case 3
+_022282DC:
+ ldr r1, [r4]
+ mov r0, #0x63
+ bl FUN_02006670
+ add r1, r4, #0
+ add r1, #0x8c
+ str r0, [r1]
+ add r0, r4, #0
+ add r6, r4, #0
+ str r0, [sp, #0x14]
+ add r0, #0xa0
+ mov r5, #0
+ add r6, #0x10
+ str r0, [sp, #0x14]
+_022282F8:
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0
+ bl FUN_02029CC8
+ add r7, r0, #0
+ beq _02228360
+ bl FUN_02029CE0
+ cmp r0, #0
+ beq _02228360
+ cmp r0, #0x51
+ bge _02228360
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02085FF4
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r7, [r0, #0x38]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ beq _02228332
+ bl ErrorHandling
+_02228332:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ ldr r1, [r4]
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ bl MOD08_02215B00
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #2
+ add r1, r4, r1
+ str r0, [r1, #0x14]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _0222835A
+ bl ErrorHandling
+_0222835A:
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_02228360:
+ add r5, r5, #1
+ cmp r5, #2
+ blt _022282F8
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ add r4, #0x90
+ add r0, r0, #1
+ add sp, #0x24
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_02228376:
+ add r0, r4, #0
+ add r6, r4, #0
+ str r0, [sp, #0x18]
+ add r0, #0xa0
+ mov r5, #2
+ add r6, #0x10
+ str r0, [sp, #0x18]
+_02228384:
+ ldr r0, [sp, #0x18]
+ add r1, r5, #0
+ bl FUN_02029CC8
+ add r7, r0, #0
+ beq _022283EC
+ bl FUN_02029CE0
+ cmp r0, #0
+ beq _022283EC
+ cmp r0, #0x51
+ bge _022283EC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02085FF4
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r7, [r0, #0x38]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ beq _022283BE
+ bl ErrorHandling
+_022283BE:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ ldr r1, [r4]
+ ldr r2, [sp, #4]
+ mov r3, #0
+ bl MOD08_02215B00
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #2
+ add r1, r4, r1
+ str r0, [r1, #0x14]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _022283E6
+ bl ErrorHandling
+_022283E6:
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_022283EC:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02228384
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ add r4, #0x90
+ add r0, r0, #1
+ add sp, #0x24
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_02228402:
+ add r0, r4, #0
+ add r6, r4, #0
+ str r0, [sp, #0x1c]
+ add r0, #0xa0
+ mov r5, #4
+ add r6, #0x10
+ str r0, [sp, #0x1c]
+_02228410:
+ ldr r0, [sp, #0x1c]
+ add r1, r5, #0
+ bl FUN_02029CC8
+ add r7, r0, #0
+ beq _02228478
+ bl FUN_02029CE0
+ cmp r0, #0
+ beq _02228478
+ cmp r0, #0x51
+ bge _02228478
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02085FF4
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r7, [r0, #0x38]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ beq _0222844A
+ bl ErrorHandling
+_0222844A:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ ldr r1, [r4]
+ ldr r2, [sp, #8]
+ mov r3, #0
+ bl MOD08_02215B00
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #2
+ add r1, r4, r1
+ str r0, [r1, #0x14]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _02228472
+ bl ErrorHandling
+_02228472:
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_02228478:
+ add r5, r5, #1
+ cmp r5, #6
+ blt _02228410
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ add r4, #0x90
+ add r0, r0, #1
+ add sp, #0x24
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0222848E:
+ add r0, r4, #0
+ add r6, r4, #0
+ str r0, [sp, #0x20]
+ add r0, #0xa0
+ mov r5, #6
+ add r6, #0x10
+ str r0, [sp, #0x20]
+_0222849C:
+ ldr r0, [sp, #0x20]
+ add r1, r5, #0
+ bl FUN_02029CC8
+ add r7, r0, #0
+ beq _02228504
+ bl FUN_02029CE0
+ cmp r0, #0
+ beq _02228504
+ cmp r0, #0x51
+ bge _02228504
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02085FF4
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r7, [r0, #0x38]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ beq _022284D6
+ bl ErrorHandling
+_022284D6:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ ldr r1, [r4]
+ ldr r2, [sp, #0xc]
+ mov r3, #0
+ bl MOD08_02215B00
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #2
+ add r1, r4, r1
+ str r0, [r1, #0x14]
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _022284FE
+ bl ErrorHandling
+_022284FE:
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_02228504:
+ add r5, r5, #1
+ cmp r5, #8
+ blt _0222849C
+ add r0, r4, #0
+ mov r1, #0xff
+ add r0, #0x90
+ add r4, #0x8c
+ str r1, [r0]
+ ldr r0, [r4]
+ bl FUN_020066F4
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+_02228520:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02228524
+MOD08_02228524: ; 0x02228524
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0222854E
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ bl MOD08_02228178
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [r4, #0x10]
+ ldr r0, [r4]
+ mov r1, #0x63
+ mov r3, #0
+ bl MOD08_02215ACC
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+_0222854E:
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #0xfa
+ str r1, [r4, #0x10]
+ add r0, #0x90
+ str r1, [r0]
+ ldr r0, _0222856C ; =MOD08_022282B4
+ add r1, r4, #0
+ lsl r2, r2, #2
+ bl FUN_0200CA44
+ add r1, r4, #0
+ bl MOD08_022282B4
+ pop {r4, pc}
+ .align 2, 0
+_0222856C: .word MOD08_022282B4
+
+ thumb_func_start MOD08_02228570
+MOD08_02228570: ; 0x02228570
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_02228574
+MOD08_02228574: ; 0x02228574
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #1
+ add r0, #0x88
+ str r1, [r0]
+ bl MOD08_0221268C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD08_0222865C
+ mov r2, #0xfa
+ ldr r0, _022285A0 ; =MOD08_022285BC
+ add r1, r5, #0
+ lsl r2, r2, #2
+ bl FUN_0200CA44
+ add r5, #0x84
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+ nop
+_022285A0: .word MOD08_022285BC
+
+ thumb_func_start MOD08_022285A4
+MOD08_022285A4: ; 0x022285A4
+ ldr r3, _022285AC ; =MOD08_02228574
+ ldr r1, _022285B0 ; =MOD08_02228788
+ bx r3
+ nop
+_022285AC: .word MOD08_02228574
+_022285B0: .word MOD08_02228788
+
+ thumb_func_start MOD08_022285B4
+MOD08_022285B4: ; 0x022285B4
+ add r0, #0x88
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_022285BC
+MOD08_022285BC: ; 0x022285BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ str r0, [sp]
+ ldr r0, [r6, #0x10]
+ mov r7, #0
+ cmp r0, #9
+ ble _022285CE
+ bl ErrorHandling
+_022285CE:
+ ldr r0, [r6, #0x10]
+ mov r4, #0
+ cmp r0, #0
+ ble _02228606
+ add r5, r6, #0
+_022285D8:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _022285FC
+ bl FUN_020133C8
+ cmp r0, #0
+ bne _022285FA
+ ldr r0, [r5, #0x5c]
+ cmp r0, #0
+ beq _022285FA
+ ldr r0, [r5, #0x14]
+ bl MOD08_02215B40
+ mov r0, #0
+ str r0, [r5, #0x14]
+ str r0, [r5, #0x5c]
+ b _022285FC
+_022285FA:
+ mov r7, #1
+_022285FC:
+ ldr r0, [r6, #0x10]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _022285D8
+_02228606:
+ cmp r7, #0
+ bne _02228616
+ mov r0, #0
+ add r6, #0x88
+ str r0, [r6]
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+_02228616:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_02228618
+MOD08_02228618: ; 0x02228618
+ ldr r3, _0222861C ; =0x02016A19
+ bx r3
+ .align 2, 0
+_0222861C: .word 0x02016A19
+
+ thumb_func_start MOD08_02228620
+MOD08_02228620: ; 0x02228620
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _02228654
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ str r1, [r0]
+ ldr r0, [r4, #0x10]
+ ldr r2, [r4, #0x18]
+ mov r1, #0
+ add r3, r4, #0
+ bl FUN_020133AC
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02013440
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_02228654:
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222865C
+MOD08_0222865C: ; 0x0222865C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r7, r1, #0
+ cmp r0, #0
+ bne _0222869A
+ add r0, r6, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ bl MOD08_0222818C
+ add r5, r0, #0
+ mov r4, #0
+ cmp r5, #0
+ ble _0222868E
+_0222867C:
+ ldr r0, [r6, #0x14]
+ add r1, r4, #0
+ add r2, r7, #0
+ add r3, r6, #0
+ bl FUN_020133AC
+ add r4, r4, #1
+ cmp r4, r5
+ blt _0222867C
+_0222868E:
+ mov r1, #1
+ str r1, [r6, #0x5c]
+ ldr r0, [r6, #0x14]
+ bl FUN_02013440
+ pop {r3, r4, r5, r6, r7, pc}
+_0222869A:
+ ldr r0, [r6, #0x10]
+ mov r7, #0
+ cmp r0, #0
+ ble _02228700
+ add r0, r6, #0
+ str r0, [sp]
+ add r0, #0x5c
+ add r5, r6, #0
+ str r0, [sp]
+_022286AC:
+ ldr r0, [r6]
+ mov r1, #0x1c
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _022286BC
+ bl ErrorHandling
+_022286BC:
+ str r7, [r4]
+ ldr r0, [r6, #4]
+ str r0, [r4, #8]
+ ldr r0, _02228704 ; =MOD08_022287C4
+ str r0, [r4, #0x18]
+ mov r0, #0
+ str r0, [r5, #0x5c]
+ ldr r0, [sp]
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x14]
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x38]
+ str r0, [r4, #0x14]
+ cmp r0, #0
+ bne _022286DE
+ bl ErrorHandling
+_022286DE:
+ ldr r0, [r4, #0x14]
+ bl MOD08_0222A078
+ str r0, [r4, #4]
+ ldr r0, _02228708 ; =MOD08_02228620
+ ldr r2, _0222870C ; =0x000003E9
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r0, [sp]
+ add r7, r7, #1
+ add r0, r0, #4
+ str r0, [sp]
+ ldr r0, [r6, #0x10]
+ add r5, r5, #4
+ cmp r7, r0
+ blt _022286AC
+_02228700:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02228704: .word MOD08_022287C4
+_02228708: .word MOD08_02228620
+_0222870C: .word 0x000003E9
+
+ thumb_func_start MOD08_02228710
+MOD08_02228710: ; 0x02228710
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r3, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD08_0222796C
+ cmp r5, #5
+ bhi _02228766
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222872E: ; jump table
+ .short _0222873A - _0222872E - 2 ; case 0
+ .short _02228742 - _0222872E - 2 ; case 1
+ .short _0222874C - _0222872E - 2 ; case 2
+ .short _02228754 - _0222872E - 2 ; case 3
+ .short _0222875E - _0222872E - 2 ; case 4
+ .short _02228766 - _0222872E - 2 ; case 5
+_0222873A:
+ mov r5, #0
+ add r0, r5, #0
+ sub r0, #0x10
+ b _0222876E
+_02228742:
+ mov r5, #0xe
+ mvn r5, r5
+ add r0, r5, #0
+ sub r0, #0xa
+ b _0222876E
+_0222874C:
+ mov r5, #7
+ mvn r5, r5
+ sub r0, r5, #4
+ b _0222876E
+_02228754:
+ mov r5, #0xd
+ mvn r5, r5
+ add r0, r5, #0
+ sub r0, #0xb
+ b _0222876E
+_0222875E:
+ mov r5, #7
+ mvn r5, r5
+ sub r0, r5, #4
+ b _0222876E
+_02228766:
+ mov r5, #0xf
+ mvn r5, r5
+ add r0, r5, #0
+ sub r0, #0xd
+_0222876E:
+ add r5, #0xa
+ ldr r3, [r4]
+ mov r1, #0xac
+ add r2, r5, #0
+ mul r2, r1
+ sub r2, r3, r2
+ str r2, [r4]
+ add r0, #0x20
+ ldr r2, [r4, #4]
+ mul r1, r0
+ sub r0, r2, r1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02228788
+MOD08_02228788: ; 0x02228788
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl FUN_0201341C
+ ldr r0, [r0, #4]
+ add r1, sp, #0
+ bl MOD08_02228710
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r4, #0x2c]
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r4, #0x30]
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022287C4
+MOD08_022287C4: ; 0x022287C4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl FUN_0201341C
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ add r1, sp, #0
+ bl MOD08_02228710
+ ldr r0, [r4, #0x14]
+ bl FUN_02029CE0
+ bl FUN_02086018
+ ldr r0, [r4, #0x14]
+ bl FUN_02029CE4
+ add r6, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_02029CE8
+ sub r6, #0xbe
+ lsl r1, r6, #0x10
+ asr r3, r1, #0x10
+ ldr r2, [sp]
+ mov r1, #0xac
+ add r4, r3, #0
+ mul r4, r1
+ add r3, r2, r4
+ mov r4, #0x64
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ ldr r2, [sp, #4]
+ mul r1, r0
+ add r0, r2, r1
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x20]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r3, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD08_02228838
+MOD08_02228838: ; 0x02228838
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0201341C
+ mov r1, #2
+ ldrsh r2, [r0, r1]
+ mov r1, #0x64
+ mov r3, #0xac
+ sub r1, r1, r2
+ lsl r1, r1, #0x10
+ asr r2, r1, #0x10
+ add r1, r2, #0
+ mov r2, #0
+ ldrsh r0, [r0, r2]
+ mul r1, r3
+ sub r0, #0x81
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r2, r0, #0
+ ldr r0, [r4, #0x20]
+ mul r2, r3
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r2, r0
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x20]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r4, #0x2c]
+ ldr r0, [r4, #0x20]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ str r0, [r4, #0x30]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02228880
+MOD08_02228880: ; 0x02228880
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ mov r1, #0x24
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _02228894
+ bl ErrorHandling
+_02228894:
+ ldmia r5!, {r0, r1}
+ add r2, r4, #0
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r2]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _022288B8
+ ldr r0, _022288DC ; =0x00000113
+ bl MOD08_022281A0
+ str r0, [r4, #0x20]
+ ldr r0, _022288DC ; =0x00000113
+ bl MOD08_022281B4
+ b _022288C6
+_022288B8:
+ ldr r0, [r4, #4]
+ bl MOD08_022281A0
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #4]
+ bl MOD08_022281B4
+_022288C6:
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #8]
+ ldr r2, [r4, #0x20]
+ mov r1, #0x63
+ mov r3, #0
+ bl MOD08_02215ACC
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022288DC: .word 0x00000113
+
+ thumb_func_start MOD08_022288E0
+MOD08_022288E0: ; 0x022288E0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r1, [r5, #0xc]
+ cmp r1, #0xff
+ bne _0222893A
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ beq _02228910
+ ldr r0, [r5, #0x1c]
+ mov r4, #0
+ cmp r0, #0
+ ble _02228944
+ ldr r6, _02228950 ; =MOD08_02228838
+_022288FA:
+ ldr r0, [r5, #0x18]
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r5, #0
+ bl FUN_020133AC
+ ldr r0, [r5, #0x1c]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _022288FA
+ b _02228944
+_02228910:
+ ldr r0, [r5, #0x1c]
+ mov r4, #0
+ cmp r0, #0
+ ble _02228944
+ ldr r6, _02228950 ; =MOD08_02228838
+_0222891A:
+ ldr r0, [r5, #4]
+ bl MOD08_022281C8
+ cmp r4, r0
+ beq _02228930
+ ldr r0, [r5, #0x18]
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r5, #0
+ bl FUN_020133AC
+_02228930:
+ ldr r0, [r5, #0x1c]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _0222891A
+ b _02228944
+_0222893A:
+ ldr r0, [r5, #0x18]
+ ldr r2, _02228950 ; =MOD08_02228838
+ add r3, r5, #0
+ bl FUN_020133AC
+_02228944:
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_02013440
+ pop {r4, r5, r6, pc}
+ nop
+_02228950: .word MOD08_02228838
+
+ thumb_func_start MOD08_02228954
+MOD08_02228954: ; 0x02228954
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ bl FUN_020133C8
+ cmp r0, #0
+ bne _0222896C
+ ldr r0, [r4, #0x18]
+ bl MOD08_02215B40
+ mov r0, #0
+ pop {r4, pc}
+_0222896C:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02228970
+MOD08_02228970: ; 0x02228970
+ ldr r3, _02228974 ; =0x02016A19
+ bx r3
+ .align 2, 0
+_02228974: .word 0x02016A19
+
+ thumb_func_start MOD08_02228978
+MOD08_02228978: ; 0x02228978
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ bne _0222898C
+ add r1, r1, #1
+ str r1, [r4, #4]
+ mov r1, #1
+ bl MOD08_02229A18
+_0222898C:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD08_02229A1C
+ cmp r0, #1
+ bne _0222899C
+ mov r0, #0
+ pop {r4, pc}
+_0222899C:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022289A0
+MOD08_022289A0: ; 0x022289A0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ bne _022289B4
+ add r1, r1, #1
+ str r1, [r4, #4]
+ mov r1, #3
+ bl MOD08_02229A18
+_022289B4:
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD08_02229A1C
+ cmp r0, #1
+ bne _022289C4
+ mov r0, #0
+ pop {r4, pc}
+_022289C4:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022289C8
+MOD08_022289C8: ; 0x022289C8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ bne _022289DC
+ add r1, r1, #1
+ str r1, [r4, #4]
+ mov r1, #5
+ bl MOD08_02229A18
+_022289DC:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD08_02229A1C
+ cmp r0, #1
+ bne _022289EC
+ mov r0, #0
+ pop {r4, pc}
+_022289EC:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_022289F0
+MOD08_022289F0: ; 0x022289F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ bne _02228A04
+ add r1, r1, #1
+ str r1, [r4, #4]
+ mov r1, #7
+ bl MOD08_02229A18
+_02228A04:
+ add r0, r4, #0
+ mov r1, #0xe
+ bl MOD08_02229A1C
+ cmp r0, #1
+ bne _02228A14
+ mov r0, #0
+ pop {r4, pc}
+_02228A14:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02228A18
+MOD08_02228A18: ; 0x02228A18
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ bne _02228A2C
+ add r1, r1, #1
+ str r1, [r4, #4]
+ mov r1, #0xf
+ bl MOD08_02229A18
+_02228A2C:
+ add r0, r4, #0
+ mov r1, #0x12
+ bl MOD08_02229A1C
+ cmp r0, #1
+ bne _02228A3C
+ mov r0, #0
+ pop {r4, pc}
+_02228A3C:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02228A40
+MOD08_02228A40: ; 0x02228A40
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ bne _02228A54
+ add r1, r1, #1
+ str r1, [r4, #4]
+ mov r1, #0x13
+ bl MOD08_02229A18
+_02228A54:
+ add r0, r4, #0
+ mov r1, #0x1b
+ bl MOD08_02229A1C
+ cmp r0, #1
+ bne _02228A64
+ mov r0, #0
+ pop {r4, pc}
+_02228A64:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02228A68
+MOD08_02228A68: ; 0x02228A68
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ bne _02228A7C
+ add r1, r1, #1
+ str r1, [r4, #4]
+ mov r1, #0x15
+ bl MOD08_02229A18
+_02228A7C:
+ add r0, r4, #0
+ mov r1, #0x16
+ bl MOD08_02229A1C
+ cmp r0, #1
+ bne _02228A8C
+ mov r0, #0
+ pop {r4, pc}
+_02228A8C:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02228A90
+MOD08_02228A90: ; 0x02228A90
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ bne _02228AA4
+ add r1, r1, #1
+ str r1, [r4, #4]
+ mov r1, #0x17
+ bl MOD08_02229A18
+_02228AA4:
+ add r0, r4, #0
+ mov r1, #0x1b
+ bl MOD08_02229A1C
+ cmp r0, #1
+ bne _02228AB4
+ mov r0, #0
+ pop {r4, pc}
+_02228AB4:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02228AB8
+MOD08_02228AB8: ; 0x02228AB8
+ str r1, [r0]
+ mov r1, #0
+ str r1, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD08_02228AC0
+MOD08_02228AC0: ; 0x02228AC0
+ push {r3, lr}
+ ldr r1, [r0]
+ lsl r2, r1, #2
+ ldr r1, _02228AD0 ; =0x0222D034
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_02228AD0: .word 0x0222D034
+
+ thumb_func_start MOD08_02228AD4
+MOD08_02228AD4: ; 0x02228AD4
+ str r1, [r0, #0x14]
+ mov r1, #0
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ str r1, [r0, #0x10]
+ bx lr
+
+ thumb_func_start MOD08_02228AE0
+MOD08_02228AE0: ; 0x02228AE0
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_02228AE4
+MOD08_02228AE4: ; 0x02228AE4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD08_02229114
+ cmp r0, #0
+ bne _02228AF8
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD08_02228AD4
+_02228AF8:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02228AFC
+MOD08_02228AFC: ; 0x02228AFC
+ push {r3, lr}
+ mov r1, #3
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02228B08
+MOD08_02228B08: ; 0x02228B08
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ bhi _02228BD8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02228B20: ; jump table
+ .short _02228B28 - _02228B20 - 2 ; case 0
+ .short _02228B7E - _02228B20 - 2 ; case 1
+ .short _02228B94 - _02228B20 - 2 ; case 2
+ .short _02228BB0 - _02228B20 - 2 ; case 3
+_02228B28:
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_0200C5C0
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r2, sp, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, sp, #0
+ str r0, [sp, #8]
+ mov r0, #0xff
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x30]
+ add r2, #2
+ bl FUN_0200C7A0
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xb4
+ add r1, #0x94
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD08_0221590C
+ add r1, r4, #0
+ add r1, #0xd8
+ str r0, [r1]
+ add r0, sp, #0
+ bl MOD08_02228880
+ add r1, r4, #0
+ add r1, #0xd0
+ str r0, [r1]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228BE0
+_02228B7E:
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C630
+ cmp r0, #2
+ blt _02228BE0
+ mov r0, #0
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228BE0
+_02228B94:
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl MOD08_022288E0
+ add r0, r4, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ bl MOD08_02215918
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228BE0
+_02228BB0:
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl MOD08_02228954
+ cmp r0, #0
+ bne _02228BE0
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_0200C61C
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl MOD08_02228970
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228BE0
+_02228BD8:
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD08_02228AD4
+_02228BE0:
+ mov r0, #1
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02228BE8
+MOD08_02228BE8: ; 0x02228BE8
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_02228BEC
+MOD08_02228BEC: ; 0x02228BEC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0
+ bne _02228C2C
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0xb8
+ add r2, #0xba
+ bl FUN_0200C7A0
+ add r0, r4, #0
+ mov r1, #0x3c
+ add r0, #0xbc
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r1, #0xb4
+ add r0, #0xbe
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0xc0
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #0xc
+ add r0, #0xc8
+ str r1, [r0]
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02228C3C
+_02228C2C:
+ bl MOD08_02229114
+ cmp r0, #0
+ bne _02228C3C
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD08_02228AD4
+_02228C3C:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02228C40
+MOD08_02228C40: ; 0x02228C40
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_02228C44
+MOD08_02228C44: ; 0x02228C44
+ push {r3, lr}
+ mov r1, #8
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02228C50
+MOD08_02228C50: ; 0x02228C50
+ push {r3, lr}
+ mov r1, #9
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02228C5C
+MOD08_02228C5C: ; 0x02228C5C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _02228C6E
+ cmp r0, #1
+ beq _02228CA2
+ b _02228CE4
+_02228C6E:
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C68C
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ ldr r0, _02228D00 ; =0x0000037F
+ mov r3, #1
+ add r5, r3, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ lsl r5, r2
+ add r0, #0xb0
+ lsl r2, r5, #0x10
+ ldr r0, [r0]
+ mov r1, #4
+ lsr r2, r2, #0x10
+ sub r3, r3, #2
+ bl FUN_02003210
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228CFA
+_02228CA2:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02228CFA
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C68C
+ add r2, r0, #0
+ mov r0, #0xc
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _02228D00 ; =0x0000037F
+ mov r3, #1
+ add r5, r3, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ lsl r5, r2
+ add r0, #0xb0
+ lsl r2, r5, #0x10
+ ldr r0, [r0]
+ mov r1, #4
+ lsr r2, r2, #0x10
+ sub r3, r3, #2
+ bl FUN_02003210
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228CFA
+_02228CE4:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02228CFA
+ add r0, r4, #0
+ mov r1, #0xa
+ bl MOD08_02228AD4
+_02228CFA:
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02228D00: .word 0x0000037F
+
+ thumb_func_start MOD08_02228D04
+MOD08_02228D04: ; 0x02228D04
+ push {r3, lr}
+ mov r1, #0xb
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02228D10
+MOD08_02228D10: ; 0x02228D10
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _02228D22
+ cmp r0, #1
+ beq _02228D62
+ b _02228D7E
+_02228D22:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #1
+ blt _02228D7E
+ add r1, sp, #8
+ ldr r0, [r4, #0x30]
+ add r1, #2
+ add r2, sp, #8
+ bl FUN_0200C7A0
+ add r1, sp, #8
+ mov r0, #0
+ ldrsh r3, [r1, r0]
+ mov r0, #2
+ ldrsh r1, [r1, r0]
+ add r0, r3, #0
+ add r0, #0x20
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x48
+ add r2, r1, #0
+ bl MOD08_02217E80
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228D7E
+_02228D62:
+ add r0, r4, #0
+ ldr r1, [r4, #0x30]
+ add r0, #0x48
+ bl MOD08_02217F08
+ cmp r0, #0
+ bne _02228D7E
+ ldr r0, [r4, #8]
+ mov r1, #0xd
+ add r0, r0, #1
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD08_02228AD4
+_02228D7E:
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_02228D84
+MOD08_02228D84: ; 0x02228D84
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_02228D88
+MOD08_02228D88: ; 0x02228D88
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r1, [r5, #8]
+ cmp r1, #0
+ beq _02228D98
+ cmp r1, #1
+ beq _02228DAE
+ b _02228E0E
+_02228D98:
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_0200C5C0
+ ldr r0, [r5, #0x30]
+ mov r1, #0
+ bl FUN_0200C61C
+ ldr r0, [r5, #8]
+ add r0, r0, #1
+ str r0, [r5, #8]
+_02228DAE:
+ ldr r1, [r5, #0xc]
+ mov r0, #6
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, _02228E18 ; =0x0222D18A
+ ldr r1, _02228E1C ; =0x0222D18C
+ ldrsh r0, [r0, r2]
+ ldrh r1, [r1, r2]
+ str r0, [sp]
+ ldr r0, [r5, #0x30]
+ bl FUN_0200C61C
+ ldr r0, [r5, #0xc]
+ ldr r4, _02228E20 ; =0x0222D07C
+ add r0, r0, #1
+ str r0, [r5, #0xc]
+ mov r6, #0
+ mov r7, #0x75
+_02228DD2:
+ ldr r1, [r5, #0xc]
+ ldr r0, [r4]
+ cmp r1, r0
+ bne _02228DE6
+ ldr r0, [r4, #4]
+ add r1, r7, #0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054A8
+_02228DE6:
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, #5
+ blt _02228DD2
+ ldr r0, [r5, #0xc]
+ cmp r0, #0x14
+ bgt _02228DFA
+ ldr r0, [sp]
+ cmp r0, #0xff
+ bne _02228E02
+_02228DFA:
+ ldr r0, [r5, #8]
+ add r0, r0, #1
+ str r0, [r5, #8]
+ b _02228E14
+_02228E02:
+ ldr r0, [r5, #0x30]
+ ldr r2, [sp]
+ mov r1, #0
+ bl FUN_0200C82C
+ b _02228E14
+_02228E0E:
+ mov r1, #0xe
+ bl MOD08_02228AD4
+_02228E14:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02228E18: .word 0x0222D18A
+_02228E1C: .word 0x0222D18C
+_02228E20: .word 0x0222D07C
+
+ thumb_func_start MOD08_02228E24
+MOD08_02228E24: ; 0x02228E24
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_02228E28
+MOD08_02228E28: ; 0x02228E28
+ push {r3, lr}
+ ldr r1, [r0, #0xc]
+ add r1, r1, #1
+ str r1, [r0, #0xc]
+ cmp r1, #0xe
+ blt _02228E44
+ ldr r1, [r0, #8]
+ add r1, r1, #1
+ str r1, [r0, #8]
+ mov r1, #0
+ str r1, [r0, #0xc]
+ mov r1, #0x10
+ bl MOD08_02228AD4
+_02228E44:
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02228E48
+MOD08_02228E48: ; 0x02228E48
+ push {r3, lr}
+ mov r1, #0x11
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02228E54
+MOD08_02228E54: ; 0x02228E54
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _02228E64
+ cmp r0, #1
+ beq _02228E74
+ b _02228EDC
+_02228E64:
+ ldr r0, [r5, #0x18]
+ cmp r0, #3
+ blt _02228E6E
+ bl ErrorHandling
+_02228E6E:
+ ldr r0, [r5, #8]
+ add r0, r0, #1
+ str r0, [r5, #8]
+_02228E74:
+ ldr r1, [r5, #0x18]
+ mov r0, #0x18
+ add r3, r1, #0
+ mul r3, r0
+ ldr r0, _02228EE0 ; =0x0222D0D0
+ ldr r1, [r5, #0xc]
+ add r0, r0, r3
+ lsl r2, r1, #1
+ ldrsh r4, [r2, r0]
+ add r0, r1, #1
+ str r0, [r5, #0xc]
+ cmp r0, #0xb
+ bgt _02228E92
+ cmp r4, #0xff
+ bne _02228EB2
+_02228E92:
+ ldr r0, [r5, #8]
+ mov r1, #0
+ add r0, r0, #1
+ str r0, [r5, #8]
+ ldr r0, [r5, #0x18]
+ add r0, r0, #1
+ str r0, [r5, #0x18]
+ ldr r0, [r5, #0x30]
+ bl FUN_0200C898
+ add r0, r5, #0
+ mov r1, #0x12
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02228EB2:
+ cmp r0, #5
+ bne _02228EBE
+ ldr r0, _02228EE4 ; =0x000005FE
+ mov r1, #0x75
+ bl FUN_020054A8
+_02228EBE:
+ ldr r0, [r5, #0x30]
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200C82C
+ ldr r0, _02228EE8 ; =0x0001FFFE
+ mov r1, #0x5a
+ mul r0, r4
+ lsl r1, r1, #2
+ bl _s32_div_f
+ add r1, r0, #0
+ ldr r0, [r5, #0x30]
+ bl FUN_0200C8BC
+_02228EDC:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02228EE0: .word 0x0222D0D0
+_02228EE4: .word 0x000005FE
+_02228EE8: .word 0x0001FFFE
+
+ thumb_func_start MOD08_02228EEC
+MOD08_02228EEC: ; 0x02228EEC
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_02228EF0
+MOD08_02228EF0: ; 0x02228EF0
+ push {r3, lr}
+ mov r1, #0x14
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02228EFC
+MOD08_02228EFC: ; 0x02228EFC
+ push {r3, lr}
+ mov r1, #0x1b
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_02228F08
+MOD08_02228F08: ; 0x02228F08
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ bhi _02228FDC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02228F20: ; jump table
+ .short _02228F28 - _02228F20 - 2 ; case 0
+ .short _02228F5A - _02228F20 - 2 ; case 1
+ .short _02228FA2 - _02228F20 - 2 ; case 2
+ .short _02228FB4 - _02228F20 - 2 ; case 3
+_02228F28:
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C68C
+ mov r1, #0
+ mov r3, #1
+ add r2, r0, #0
+ add r5, r3, #0
+ lsl r5, r2
+ lsl r2, r5, #0x10
+ str r1, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r1, [sp, #8]
+ add r0, #0xb0
+ ldr r0, [r0]
+ mov r1, #4
+ lsr r2, r2, #0x10
+ sub r3, r3, #6
+ bl FUN_02003210
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228FF2
+_02228F5A:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02228FF2
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ add r1, #0x94
+ ldr r1, [r1]
+ str r1, [sp, #0x14]
+ bl MOD08_022281C8
+ str r0, [sp, #0x18]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ add r2, sp, #0xc
+ ldr r0, [r4, #0x30]
+ add r1, sp, #0xc
+ add r2, #2
+ bl FUN_0200C7A0
+ add r0, sp, #0xc
+ bl MOD08_02228880
+ add r1, r4, #0
+ add r1, #0xd0
+ str r0, [r1]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228FF2
+_02228FA2:
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl MOD08_022288E0
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228FF2
+_02228FB4:
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl MOD08_02228954
+ cmp r0, #0
+ bne _02228FF2
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_0200C61C
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl MOD08_02228970
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02228FF2
+_02228FDC:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02228FF2
+ add r0, r4, #0
+ mov r1, #0x16
+ bl MOD08_02228AD4
+_02228FF2:
+ mov r0, #1
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD08_02228FF8
+MOD08_02228FF8: ; 0x02228FF8
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD08_02228FFC
+MOD08_02228FFC: ; 0x02228FFC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #0
+ beq _0222900E
+ cmp r1, #1
+ beq _02229040
+ b _02229054
+_0222900E:
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C68C
+ add r2, r0, #0
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #0
+ mov r3, #1
+ add r5, r3, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ lsl r5, r2
+ add r0, #0xb0
+ lsl r2, r5, #0x10
+ ldr r0, [r0]
+ mov r1, #4
+ lsr r2, r2, #0x10
+ sub r3, r3, #6
+ bl FUN_02003210
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _0222905A
+_02229040:
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _0222905A
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _0222905A
+_02229054:
+ mov r1, #0x18
+ bl MOD08_02228AD4
+_0222905A:
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD08_02229060
+MOD08_02229060: ; 0x02229060
+ push {r3, lr}
+ mov r1, #0x19
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_0222906C
+MOD08_0222906C: ; 0x0222906C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #0
+ beq _0222907C
+ cmp r1, #1
+ beq _0222908A
+ b _022290E2
+_0222907C:
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_0200C90C
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+_0222908A:
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _022290B2
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x20
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x21
+ strb r1, [r0]
+ b _022290CE
+_022290B2:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x20
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r2, #0xf
+ add r0, #0x21
+ strb r2, [r0]
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C644
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+_022290CE:
+ add r0, r4, #0
+ add r0, #0x20
+ add r4, #0x21
+ ldrb r1, [r0]
+ ldrb r0, [r4]
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _022290EC ; =0x04000052
+ strh r1, [r0]
+ b _022290E8
+_022290E2:
+ mov r1, #0x1a
+ bl MOD08_02228AD4
+_022290E8:
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_022290EC: .word 0x04000052
+
+ thumb_func_start MOD08_022290F0
+MOD08_022290F0: ; 0x022290F0
+ push {r3, lr}
+ mov r1, #0x1b
+ bl MOD08_02228AD4
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD08_022290FC
+MOD08_022290FC: ; 0x022290FC
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD08_02229100
+MOD08_02229100: ; 0x02229100
+ push {r3, lr}
+ ldr r1, [r0, #0x14]
+ lsl r2, r1, #2
+ ldr r1, _02229110 ; =0x0222D118
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_02229110: .word 0x0222D118
+
+ thumb_func_start MOD08_02229114
+MOD08_02229114: ; 0x02229114
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ bls _02229122
+ b _02229322
+_02229122:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222912E: ; jump table
+ .short _02229136 - _0222912E - 2 ; case 0
+ .short _022291A4 - _0222912E - 2 ; case 1
+ .short _0222929E - _0222912E - 2 ; case 2
+ .short _02229302 - _0222912E - 2 ; case 3
+_02229136:
+ mov r0, #0xba
+ ldrsh r0, [r4, r0]
+ add r1, r4, #0
+ mov r2, #0xb8
+ str r0, [sp]
+ mov r0, #0xbe
+ ldrsh r0, [r4, r0]
+ mov r3, #0xbc
+ add r1, #0x6c
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ add r0, #0x48
+ bl MOD08_02217F50
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ add r0, r4, #0
+ add r0, #0xd4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD08_022280C4
+ cmp r0, #1
+ bne _0222928C
+ bl FUN_0201B9EC
+ mov r1, #0x14
+ bl _s32_div_f
+ add r1, #0xa
+ ldr r0, [r4, #0x30]
+ lsl r1, r1, #0xd
+ bl FUN_0200C8BC
+ b _022293BE
+_022291A4:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD08_022280C4
+ cmp r0, #1
+ bne _02229242
+ mov r1, #2
+ ldr r0, [r4, #0x30]
+ lsl r1, r1, #0xc
+ bl FUN_0200C8BC
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, #0xa
+ cmp r2, r0
+ ble _022291DE
+ mov r1, #2
+ ldr r0, [r4, #0x30]
+ lsl r1, r1, #0xc
+ bl FUN_0200C8BC
+_022291DE:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD08_02228104
+ cmp r0, #1
+ bne _02229242
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, #0xa
+ cmp r2, r0
+ bne _02229242
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C68C
+ add r3, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ add r1, r4, #0
+ lsl r3, r3, #0x14
+ str r2, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #0xe
+ str r0, [sp, #0x10]
+ ldr r0, _022293C4 ; =0x0000FFFF
+ add r1, #0x94
+ str r0, [sp, #0x14]
+ ldr r0, _022293C8 ; =0x000003EA
+ lsr r3, r3, #0x10
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD08_02218B20
+ add r1, r4, #0
+ add r1, #0xd4
+ str r0, [r1]
+_02229242:
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #6
+ blt _0222927A
+ cmp r0, #8
+ bgt _0222927A
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r2, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r1, [r0]
+ cmp r1, r2
+ ble _0222927A
+ add r0, r2, #5
+ cmp r1, r0
+ blt _0222928C
+_0222927A:
+ add r0, r4, #0
+ add r1, r4, #0
+ ldr r2, [r4, #0x30]
+ add r0, #0x48
+ add r1, #0x6c
+ bl MOD08_02217FE4
+ cmp r0, #0
+ beq _0222928E
+_0222928C:
+ b _022293BE
+_0222928E:
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD08_02229FFC
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022293BE
+_0222929E:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD08_02228104
+ cmp r0, #1
+ bne _022292D2
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022292D2
+ bl MOD08_02218AF8
+ cmp r0, #1
+ beq _022293BE
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl MOD08_02218B08
+ mov r0, #1
+ str r0, [r4, #0x28]
+ add sp, #0x1c
+ mov r0, #0
+ pop {r3, r4, pc}
+_022292D2:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0xf
+ blt _022292E6
+ mov r0, #1
+ str r0, [r4, #0x28]
+ add sp, #0x1c
+ mov r0, #0
+ pop {r3, r4, pc}
+_022292E6:
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r1, [r0]
+ ldr r0, _022293CC ; =0x00000111
+ cmp r1, r0
+ bne _022292FA
+ ldr r0, _022293D0 ; =0x000007E8
+ mov r1, #0x75
+ bl FUN_020054A8
+_022292FA:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022293BE
+_02229302:
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_0200C5C0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD08_0222A008
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022293BE
+_02229322:
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0xf
+ bne _0222937C
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0xc
+ beq _02229378
+ cmp r0, #0xd
+ beq _02229378
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C68C
+ add r3, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ add r1, r4, #0
+ lsl r3, r3, #0x14
+ str r2, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #0xe
+ str r0, [sp, #0x10]
+ ldr r0, _022293C4 ; =0x0000FFFF
+ add r1, #0x94
+ str r0, [sp, #0x14]
+ ldr r0, _022293C8 ; =0x000003EA
+ lsr r3, r3, #0x10
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD08_02218B20
+ add r1, r4, #0
+ add r1, #0xd4
+ str r0, [r1]
+_02229378:
+ mov r0, #1
+ str r0, [r4, #0x28]
+_0222937C:
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0xf
+ ble _022293BE
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0xc
+ beq _022293B8
+ cmp r0, #0xd
+ beq _022293B8
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl MOD08_02218AF8
+ cmp r0, #1
+ beq _022293BE
+ add r4, #0xd4
+ ldr r0, [r4]
+ bl MOD08_02218B08
+_022293B8:
+ add sp, #0x1c
+ mov r0, #0
+ pop {r3, r4, pc}
+_022293BE:
+ mov r0, #1
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+_022293C4: .word 0x0000FFFF
+_022293C8: .word 0x000003EA
+_022293CC: .word 0x00000111
+_022293D0: .word 0x000007E8
+
+ thumb_func_start MOD08_022293D4
+MOD08_022293D4: ; 0x022293D4
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ bls _022293E2
+ b _022295CE
+_022293E2:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022293EE: ; jump table
+ .short _022293F6 - _022293EE - 2 ; case 0
+ .short _02229464 - _022293EE - 2 ; case 1
+ .short _0222955E - _022293EE - 2 ; case 2
+ .short _022295AE - _022293EE - 2 ; case 3
+_022293F6:
+ mov r0, #0xba
+ ldrsh r0, [r4, r0]
+ add r1, r4, #0
+ mov r2, #0xb8
+ str r0, [sp]
+ mov r0, #0xbe
+ ldrsh r0, [r4, r0]
+ mov r3, #0xbc
+ add r1, #0x6c
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ add r0, #0x48
+ bl MOD08_02217F50
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ add r0, r4, #0
+ add r0, #0xd4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD08_022280C4
+ cmp r0, #1
+ bne _0222954C
+ bl FUN_0201B9EC
+ mov r1, #0x14
+ bl _s32_div_f
+ add r1, #0xa
+ ldr r0, [r4, #0x30]
+ lsl r1, r1, #0xd
+ bl FUN_0200C8BC
+ b _02229656
+_02229464:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD08_022280C4
+ cmp r0, #1
+ bne _02229502
+ mov r1, #2
+ ldr r0, [r4, #0x30]
+ lsl r1, r1, #0xc
+ bl FUN_0200C8BC
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, #0xa
+ cmp r2, r0
+ ble _0222949E
+ mov r1, #2
+ ldr r0, [r4, #0x30]
+ lsl r1, r1, #0xc
+ bl FUN_0200C8BC
+_0222949E:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD08_02228104
+ cmp r0, #1
+ bne _02229502
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, #0xa
+ cmp r2, r0
+ bne _02229502
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C68C
+ add r3, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ add r1, r4, #0
+ lsl r3, r3, #0x14
+ str r2, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #0xe
+ str r0, [sp, #0x10]
+ ldr r0, _0222965C ; =0x0000FFFF
+ add r1, #0x94
+ str r0, [sp, #0x14]
+ ldr r0, _02229660 ; =0x000003EA
+ lsr r3, r3, #0x10
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD08_02218B20
+ add r1, r4, #0
+ add r1, #0xd4
+ str r0, [r1]
+_02229502:
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #6
+ blt _0222953A
+ cmp r0, #8
+ bgt _0222953A
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r2, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r1, [r0]
+ cmp r1, r2
+ ble _0222953A
+ add r0, r2, #5
+ cmp r1, r0
+ blt _0222954C
+_0222953A:
+ add r0, r4, #0
+ add r1, r4, #0
+ ldr r2, [r4, #0x30]
+ add r0, #0x48
+ add r1, #0x6c
+ bl MOD08_02217FE4
+ cmp r0, #0
+ beq _0222954E
+_0222954C:
+ b _02229656
+_0222954E:
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD08_02229FFC
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02229656
+_0222955E:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD08_02228104
+ cmp r0, #1
+ bne _02229592
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02229592
+ bl MOD08_02218AF8
+ cmp r0, #1
+ beq _02229656
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl MOD08_02218B08
+ mov r0, #1
+ str r0, [r4, #0x28]
+ add sp, #0x1c
+ mov r0, #0
+ pop {r3, r4, pc}
+_02229592:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0xf
+ blt _022295A6
+ mov r0, #1
+ str r0, [r4, #0x28]
+ add sp, #0x1c
+ mov r0, #0
+ pop {r3, r4, pc}
+_022295A6:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02229656
+_022295AE:
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_0200C5C0
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD08_0222A008
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02229656
+_022295CE:
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0xf
+ bne _02229622
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_0200C61C
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C68C
+ add r3, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ sub r0, #0x12
+ str r0, [sp, #4]
+ mov r2, #2
+ add r1, r4, #0
+ lsl r3, r3, #0x14
+ str r2, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #0xe
+ str r0, [sp, #0x10]
+ ldr r0, _0222965C ; =0x0000FFFF
+ add r1, #0x94
+ str r0, [sp, #0x14]
+ ldr r0, _02229660 ; =0x000003EA
+ lsr r3, r3, #0x10
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD08_02218B20
+ add r1, r4, #0
+ add r1, #0xd4
+ str r0, [r1]
+ mov r0, #1
+ str r0, [r4, #0x28]
+_02229622:
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0xf
+ ble _02229656
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl MOD08_02218AF8
+ cmp r0, #1
+ beq _02229656
+ add r4, #0xd4
+ ldr r0, [r4]
+ bl MOD08_02218B08
+ add sp, #0x1c
+ mov r0, #0
+ pop {r3, r4, pc}
+_02229656:
+ mov r0, #1
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+_0222965C: .word 0x0000FFFF
+_02229660: .word 0x000003EA
+
+ thumb_func_start MOD08_02229664
+MOD08_02229664: ; 0x02229664
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #7
+ bls _02229672
+ b _022297EA
+_02229672:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0222967E: ; jump table
+ .short _0222968E - _0222967E - 2 ; case 0
+ .short _022296CC - _0222967E - 2 ; case 1
+ .short _022296FC - _0222967E - 2 ; case 2
+ .short _02229732 - _0222967E - 2 ; case 3
+ .short _02229742 - _0222967E - 2 ; case 4
+ .short _02229770 - _0222967E - 2 ; case 5
+ .short _0222979E - _0222967E - 2 ; case 6
+ .short _022297CC - _0222967E - 2 ; case 7
+_0222968E:
+ mov r1, #0
+ bl MOD08_0222A008
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_0200C5C0
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #2
+ blt _022296E2
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_0200C61C
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022297F0
+_022296CC:
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #2
+ bge _022296E4
+_022296E2:
+ b _022297F0
+_022296E4:
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_0200C61C
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022297F0
+_022296FC:
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r2, sp, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, sp, #0
+ str r0, [sp, #8]
+ mov r0, #0xff
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x30]
+ add r2, #2
+ bl FUN_0200C7A0
+ add r0, sp, #0
+ bl MOD08_02228880
+ add r1, r4, #0
+ add r1, #0xd0
+ str r0, [r1]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022297F0
+_02229732:
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl MOD08_022288E0
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022297F0
+_02229742:
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #6
+ blt _022297F0
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_0200C61C
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022297F0
+_02229770:
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #6
+ blt _022297F0
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_0200C61C
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022297F0
+_0222979E:
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #6
+ blt _022297F0
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_0200C61C
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022297F0
+_022297CC:
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl MOD08_02228954
+ cmp r0, #0
+ bne _022297F0
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl MOD08_02228970
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _022297F0
+_022297EA:
+ add sp, #0x14
+ mov r0, #0
+ pop {r3, r4, pc}
+_022297F0:
+ mov r0, #1
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_022297F8
+MOD08_022297F8: ; 0x022297F8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _02229808
+ cmp r0, #1
+ beq _0222983C
+ b _0222986E
+_02229808:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ bne _0222981E
+ ldr r1, _0222987C ; =0xFFFFE001
+ add r0, r4, #0
+ add r0, #0x34
+ lsr r2, r1, #0x13
+ mov r3, #0xa
+ bl MOD08_02218008
+ b _0222982C
+_0222981E:
+ add r0, r4, #0
+ ldr r1, _02229880 ; =0x00001FFF
+ ldr r2, _0222987C ; =0xFFFFE001
+ add r0, #0x34
+ mov r3, #0xa
+ bl MOD08_02218008
+_0222982C:
+ ldr r1, [r4, #0x10]
+ mov r0, #1
+ eor r0, r1
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02229876
+_0222983C:
+ ldr r1, [r4, #0x34]
+ ldr r0, [r4, #0x30]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0200C898
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD08_02218058
+ cmp r0, #0
+ bne _02229876
+ ldr r0, [r4, #0xc]
+ cmp r0, #1
+ blt _02229862
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _02229876
+_02229862:
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ sub r0, r0, #1
+ str r0, [r4, #8]
+ b _02229876
+_0222986E:
+ mov r0, #0
+ add r4, #0xc4
+ str r0, [r4]
+ pop {r4, pc}
+_02229876:
+ mov r0, #1
+ pop {r4, pc}
+ nop
+_0222987C: .word 0xFFFFE001
+_02229880: .word 0x00001FFF
+
+ thumb_func_start MOD08_02229884
+MOD08_02229884: ; 0x02229884
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0xff
+ bne _02229896
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, pc}
+_02229896:
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _022298BA
+ add r1, sp, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r1, sp, #0
+ mov r0, #2
+ ldrsh r2, [r1, r0]
+ add r0, r4, #0
+ add r0, #0xb8
+ strh r2, [r0]
+ mov r0, #0
+ ldrsh r0, [r1, r0]
+ add r4, #0xba
+ strh r0, [r4]
+_022298BA:
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD08_022298C0
+MOD08_022298C0: ; 0x022298C0
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _02229912
+ add r0, r4, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _022298EA
+ add r0, r4, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xdc
+ str r1, [r0]
+ ldr r0, [r4, #0x2c]
+ bl FUN_0200BC1C
+ pop {r4, pc}
+_022298EA:
+ add r1, #0x98
+ ldr r1, [r1]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02229914 ; =0x0222D01C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ bne _02229900
+ mov r0, #0
+ str r0, [r4, #0x1c]
+_02229900:
+ ldr r0, [r4, #0x24]
+ cmp r0, #1
+ bne _0222990C
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C5A8
+_0222990C:
+ ldr r0, [r4, #0x2c]
+ bl FUN_0200BC1C
+_02229912:
+ pop {r4, pc}
+ .align 2, 0
+_02229914: .word 0x0222D01C
+
+ thumb_func_start MOD08_02229918
+MOD08_02229918: ; 0x02229918
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ mov r1, #0xe0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0xe0
+ add r4, r0, #0
+ bl MI_CpuFill8
+ cmp r4, #0
+ bne _02229936
+ bl ErrorHandling
+_02229936:
+ add r3, r4, #0
+ add r3, #0x90
+ mov r2, #5
+_0222993C:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222993C
+ mov r0, #0
+ str r0, [r4, #8]
+ str r0, [r4, #0x10]
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4]
+ str r0, [r4, #4]
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_0200BB34
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xdc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD08_02228140
+ str r0, [r4, #0x24]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0xc4
+ str r2, [r0]
+ add r0, r4, #0
+ mov r1, #0x10
+ add r0, #0x20
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x21
+ strb r2, [r0]
+ bl MOD08_0221268C
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r0, r0, #0x1f
+ sub r0, r0, r1
+ mov r2, #0x1f
+ ror r0, r2
+ add r0, r1, r0
+ beq _022299AA
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x22
+ strb r1, [r0]
+ b _022299B2
+_022299AA:
+ add r0, r4, #0
+ sub r2, #0x20
+ add r0, #0x22
+ strb r2, [r0]
+_022299B2:
+ add r0, r4, #0
+ bl MOD08_02229E40
+ add r0, r4, #0
+ bl MOD08_02229F64
+ add r0, r4, #0
+ bl MOD08_02229A90
+ mov r0, #1
+ str r0, [r4, #0x1c]
+ mov r0, #0
+ str r0, [r4, #0x28]
+ mov r2, #0xfa
+ ldr r0, _022299E4 ; =MOD08_022298C0
+ add r1, r4, #0
+ lsl r2, r2, #2
+ bl FUN_0200CA44
+ add r1, r4, #0
+ add r1, #0xcc
+ str r0, [r1]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022299E4: .word MOD08_022298C0
+
+ thumb_func_start MOD08_022299E8
+MOD08_022299E8: ; 0x022299E8
+ push {r4, lr}
+ add r4, r0, #0
+ bne _022299F2
+ bl ErrorHandling
+_022299F2:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _022299FC
+ mov r0, #1
+ pop {r4, pc}
+_022299FC:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02229A00
+MOD08_02229A00: ; 0x02229A00
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02229A0A
+ bl ErrorHandling
+_02229A0A:
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _02229A14
+ mov r0, #1
+ pop {r4, pc}
+_02229A14:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02229A18
+MOD08_02229A18: ; 0x02229A18
+ str r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start MOD08_02229A1C
+MOD08_02229A1C: ; 0x02229A1C
+ ldr r0, [r0, #0x14]
+ cmp r0, r1
+ bne _02229A26
+ mov r0, #1
+ bx lr
+_02229A26:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_02229A2C
+MOD08_02229A2C: ; 0x02229A2C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02229A36
+ bl ErrorHandling
+_02229A36:
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r4, #0x2c]
+ bl FUN_0200C398
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C3DC
+ add r0, r4, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02229A5C
+MOD08_02229A5C: ; 0x02229A5C
+ add r2, r0, #0
+ add r0, #0x98
+ str r1, [r0]
+ mov r0, #0
+ str r0, [r2, #8]
+ str r0, [r2, #0xc]
+ str r0, [r2, #0x10]
+ mov r0, #1
+ add r1, r2, #0
+ str r0, [r2, #0x1c]
+ ldr r0, [r2, #0x30]
+ ldr r3, _02229A7C ; =0x0200C7A1
+ add r1, #0xb8
+ add r2, #0xba
+ bx r3
+ nop
+_02229A7C: .word 0x0200C7A1
+
+ thumb_func_start MOD08_02229A80
+MOD08_02229A80: ; 0x02229A80
+ push {r4, lr}
+ add r4, r0, #0
+ bne _02229A8A
+ bl ErrorHandling
+_02229A8A:
+ add r4, #0x98
+ ldr r0, [r4]
+ pop {r4, pc}
+
+ thumb_func_start MOD08_02229A90
+MOD08_02229A90: ; 0x02229A90
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0xb8
+ add r2, #0xba
+ bl FUN_0200C7A0
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0x11
+ bls _02229AAE
+ b _02229CF6
+_02229AAE:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02229ABA: ; jump table
+ .short _02229ADE - _02229ABA - 2 ; case 0
+ .short _02229ADE - _02229ABA - 2 ; case 1
+ .short _02229ADE - _02229ABA - 2 ; case 2
+ .short _02229ADE - _02229ABA - 2 ; case 3
+ .short _02229ADE - _02229ABA - 2 ; case 4
+ .short _02229ADE - _02229ABA - 2 ; case 5
+ .short _02229AF6 - _02229ABA - 2 ; case 6
+ .short _02229B1C - _02229ABA - 2 ; case 7
+ .short _02229B50 - _02229ABA - 2 ; case 8
+ .short _02229B76 - _02229ABA - 2 ; case 9
+ .short _02229B9C - _02229ABA - 2 ; case 10
+ .short _02229BC2 - _02229ABA - 2 ; case 11
+ .short _02229BE8 - _02229ABA - 2 ; case 12
+ .short _02229C14 - _02229ABA - 2 ; case 13
+ .short _02229C4C - _02229ABA - 2 ; case 14
+ .short _02229C72 - _02229ABA - 2 ; case 15
+ .short _02229C9E - _02229ABA - 2 ; case 16
+ .short _02229CCA - _02229ABA - 2 ; case 17
+_02229ADE:
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0xbc
+ add r2, #0xbe
+ bl FUN_0200C7A0
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc8
+ str r1, [r0]
+ b _02229CF6
+_02229AF6:
+ mov r0, #0
+ add r2, r4, #0
+ add r3, r4, #0
+ add r1, r0, #0
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x30
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #0x20
+ strh r1, [r0]
+ b _02229CF6
+_02229B1C:
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0xb8
+ add r2, #0xba
+ bl FUN_0200C7A0
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #1
+ mov r1, #4
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x30
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #0x20
+ strh r1, [r0]
+ b _02229CF6
+_02229B50:
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #1
+ mov r1, #2
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x30
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #0x20
+ strh r1, [r0]
+ b _02229CF6
+_02229B76:
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #0
+ mov r1, #1
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x30
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #0x20
+ strh r1, [r0]
+ b _02229CF6
+_02229B9C:
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #1
+ mov r1, #3
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x30
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #0x20
+ strh r1, [r0]
+ b _02229CF6
+_02229BC2:
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #1
+ mov r1, #5
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x30
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #0x20
+ strh r1, [r0]
+ b _02229CF6
+_02229BE8:
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #0
+ mov r1, #1
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x10
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #0x10
+ strh r1, [r0]
+ mov r0, #0xc
+ add r4, #0xc0
+ str r0, [r4]
+ pop {r4, pc}
+_02229C14:
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #0
+ mov r1, #1
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x20
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbc
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ sub r1, #0x14
+ strh r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #0x26
+ strh r1, [r0]
+ mov r0, #0x10
+ add r4, #0xc0
+ str r0, [r4]
+ pop {r4, pc}
+_02229C4C:
+ add r0, r4, #0
+ mov r1, #0x80
+ add r0, #0xbc
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x40
+ add r0, #0xbe
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x20
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #0x20
+ strh r1, [r0]
+ b _02229CF6
+_02229C72:
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #0
+ mov r1, #1
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x40
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #8
+ strh r1, [r0]
+ mov r0, #0x10
+ add r4, #0xc0
+ str r0, [r4]
+ pop {r4, pc}
+_02229C9E:
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #1
+ mov r1, #3
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x40
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #8
+ strh r1, [r0]
+ mov r0, #0x10
+ add r4, #0xc0
+ str r0, [r4]
+ pop {r4, pc}
+_02229CCA:
+ add r2, r4, #0
+ add r3, r4, #0
+ mov r0, #1
+ mov r1, #5
+ add r2, #0xbc
+ add r3, #0xbe
+ bl MOD08_02217B1C
+ add r0, r4, #0
+ mov r1, #0x40
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0xbe
+ ldrsh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xbe
+ add r1, #8
+ strh r1, [r0]
+ mov r0, #0x10
+ add r4, #0xc0
+ str r0, [r4]
+ pop {r4, pc}
+_02229CF6:
+ mov r0, #0x14
+ add r4, #0xc0
+ str r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02229D00
+MOD08_02229D00: ; 0x02229D00
+ push {r4, lr}
+ add r0, #0x90
+ ldr r0, [r0]
+ add r3, r1, #0
+ add r4, r2, #0
+ cmp r0, #0x11
+ bls _02229D10
+ b _02229E3C
+_02229D10:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02229D1C: ; jump table
+ .short _02229D40 - _02229D1C - 2 ; case 0
+ .short _02229D56 - _02229D1C - 2 ; case 1
+ .short _02229D6C - _02229D1C - 2 ; case 2
+ .short _02229D98 - _02229D1C - 2 ; case 3
+ .short _02229D82 - _02229D1C - 2 ; case 4
+ .short _02229DAE - _02229D1C - 2 ; case 5
+ .short _02229DC4 - _02229D1C - 2 ; case 6
+ .short _02229DCE - _02229D1C - 2 ; case 7
+ .short _02229DD8 - _02229D1C - 2 ; case 8
+ .short _02229DE2 - _02229D1C - 2 ; case 9
+ .short _02229DF0 - _02229D1C - 2 ; case 10
+ .short _02229DFE - _02229D1C - 2 ; case 11
+ .short _02229E0C - _02229D1C - 2 ; case 12
+ .short _02229E1A - _02229D1C - 2 ; case 13
+ .short _02229E28 - _02229D1C - 2 ; case 14
+ .short _02229E32 - _02229D1C - 2 ; case 15
+ .short _02229E32 - _02229D1C - 2 ; case 16
+ .short _02229E32 - _02229D1C - 2 ; case 17
+_02229D40:
+ mov r0, #0
+ add r2, r3, #0
+ add r1, r0, #0
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r0, #0x20
+ strh r0, [r4]
+ pop {r4, pc}
+_02229D56:
+ add r2, r3, #0
+ mov r0, #0
+ mov r1, #1
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r0, #0x26
+ strh r0, [r4]
+ pop {r4, pc}
+_02229D6C:
+ add r2, r3, #0
+ mov r0, #1
+ mov r1, #2
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r0, #0x20
+ strh r0, [r4]
+ pop {r4, pc}
+_02229D82:
+ add r2, r3, #0
+ mov r0, #1
+ mov r1, #4
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r0, #0x20
+ strh r0, [r4]
+ pop {r4, pc}
+_02229D98:
+ add r2, r3, #0
+ mov r0, #1
+ mov r1, #3
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r0, #0x26
+ strh r0, [r4]
+ pop {r4, pc}
+_02229DAE:
+ add r2, r3, #0
+ mov r0, #1
+ mov r1, #5
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r0, #0x26
+ strh r0, [r4]
+ pop {r4, pc}
+_02229DC4:
+ mov r0, #0xa
+ strh r0, [r3]
+ mov r0, #0x64
+ strh r0, [r4]
+ pop {r4, pc}
+_02229DCE:
+ mov r0, #0xa
+ strh r0, [r3]
+ mov r0, #0x64
+ strh r0, [r4]
+ pop {r4, pc}
+_02229DD8:
+ mov r0, #0xa
+ strh r0, [r3]
+ mov r0, #0x64
+ strh r0, [r4]
+ pop {r4, pc}
+_02229DE2:
+ mov r0, #0
+ add r2, r3, #0
+ add r1, r0, #0
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ pop {r4, pc}
+_02229DF0:
+ mov r0, #0
+ add r2, r3, #0
+ add r1, r0, #0
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ pop {r4, pc}
+_02229DFE:
+ mov r0, #0
+ add r2, r3, #0
+ add r1, r0, #0
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ pop {r4, pc}
+_02229E0C:
+ mov r0, #0
+ add r2, r3, #0
+ add r1, r0, #0
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ pop {r4, pc}
+_02229E1A:
+ mov r0, #0
+ add r2, r3, #0
+ add r1, r0, #0
+ add r3, r4, #0
+ bl MOD08_02217B1C
+ pop {r4, pc}
+_02229E28:
+ mov r0, #0xe6
+ strh r0, [r3]
+ mov r0, #0x20
+ strh r0, [r4]
+ pop {r4, pc}
+_02229E32:
+ mov r0, #0x1d
+ mvn r0, r0
+ strh r0, [r3]
+ mov r0, #0xa0
+ strh r0, [r4]
+_02229E3C:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_02229E40
+MOD08_02229E40: ; 0x02229E40
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r5, #0x2c]
+ mov r2, #0xa
+ bl FUN_0200BBF0
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02229E70
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_0200BB68
+ mov r2, #0x11
+ mov r1, #0
+ lsl r2, r2, #0x10
+ bl FUN_02008D24
+_02229E70:
+ mov r1, #0
+ add r2, sp, #0x1c
+ mov r0, #0xa
+_02229E76:
+ add r1, r1, #1
+ stmia r2!, {r0}
+ cmp r1, #6
+ blt _02229E76
+ mov r0, #0
+ str r0, [sp, #0x2c]
+ str r0, [sp, #0x30]
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r5, #0x2c]
+ add r2, sp, #0x1c
+ bl FUN_0200BF60
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD08_022281DC
+ add r6, r0, #0
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ mov r1, #1
+ bl MOD08_022281DC
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ mov r1, #2
+ bl MOD08_022281DC
+ add r7, r0, #0
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ mov r1, #3
+ bl MOD08_022281DC
+ str r0, [sp, #0x18]
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r1, [r0]
+ ldr r0, _02229F60 ; =0x00001770
+ mov r2, #0x1b
+ add r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r5, #0x2c]
+ add r3, r6, #0
+ bl FUN_0200C00C
+ mov r0, #0x1b
+ str r0, [sp]
+ add r2, r5, #0
+ str r4, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r1, [r0]
+ ldr r0, _02229F60 ; =0x00001770
+ add r2, #0xac
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r2, [r2]
+ ldr r3, [r5, #0x2c]
+ mov r1, #2
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r1, [r0]
+ ldr r0, _02229F60 ; =0x00001770
+ mov r2, #0x1b
+ add r0, r1, r0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r5, #0x2c]
+ add r3, r7, #0
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r1, [r0]
+ ldr r0, _02229F60 ; =0x00001770
+ ldr r3, [sp, #0x18]
+ add r0, r1, r0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r5, #0x2c]
+ mov r2, #0x1b
+ bl FUN_0200C13C
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02229F60: .word 0x00001770
+
+ thumb_func_start MOD08_02229F64
+MOD08_02229F64: ; 0x02229F64
+ push {r3, r4, lr}
+ sub sp, #0x34
+ add r2, sp, #0
+ add r1, sp, #0
+ add r2, #2
+ add r4, r0, #0
+ bl MOD08_02229D00
+ mov r0, #0
+ add r1, sp, #0
+ strh r0, [r1, #4]
+ strh r0, [r1, #6]
+ mov r1, #1
+ str r1, [sp, #0x10]
+ add r1, r4, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r1, #0xa4
+ ldr r1, [r1]
+ ldr r2, _02229FE0 ; =0x00001770
+ str r1, [sp, #0x2c]
+ str r0, [sp, #0x30]
+ add r3, sp, #0
+_02229F92:
+ add r1, r4, #0
+ add r1, #0x9c
+ ldr r1, [r1]
+ add r0, r0, #1
+ add r1, r1, r2
+ str r1, [r3, #0x14]
+ add r3, r3, #4
+ cmp r0, #6
+ blt _02229F92
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ ldr r1, [r4, #0x2c]
+ add r2, sp, #0
+ bl FUN_0200C154
+ str r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_0200C61C
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_0200C5C0
+ ldr r0, [r4, #0x30]
+ bl FUN_0200C5A8
+ bl MOD08_0221268C
+ add sp, #0x34
+ pop {r3, r4, pc}
+ .align 2, 0
+_02229FE0: .word 0x00001770
+
+ thumb_func_start MOD08_02229FE4
+MOD08_02229FE4: ; 0x02229FE4
+ ldr r3, _02229FEC ; =0x0200C645
+ ldr r0, [r0, #0x30]
+ bx r3
+ nop
+_02229FEC: .word 0x0200C645
+
+ thumb_func_start MOD08_02229FF0
+MOD08_02229FF0: ; 0x02229FF0
+ ldr r3, _02229FF8 ; =0x0200C715
+ ldr r0, [r0, #0x30]
+ bx r3
+ nop
+_02229FF8: .word 0x0200C715
+
+ thumb_func_start MOD08_02229FFC
+MOD08_02229FFC: ; 0x02229FFC
+ ldr r3, _0222A004 ; =0x0200C899
+ ldr r0, [r0, #0x30]
+ bx r3
+ nop
+_0222A004: .word 0x0200C899
+
+ thumb_func_start MOD08_0222A008
+MOD08_0222A008: ; 0x0222A008
+ str r1, [r0, #0x24]
+ bx lr
+
+ thumb_func_start MOD08_0222A00C
+MOD08_0222A00C: ; 0x0222A00C
+ ldr r3, _0222A014 ; =0x0200C6C5
+ ldr r0, [r0, #0x30]
+ bx r3
+ nop
+_0222A014: .word 0x0200C6C5
+
+ thumb_func_start MOD08_0222A018
+MOD08_0222A018: ; 0x0222A018
+ ldr r3, _0222A020 ; =0x0200C6B1
+ ldr r0, [r0, #0x30]
+ bx r3
+ nop
+_0222A020: .word 0x0200C6B1
+
+ thumb_func_start MOD08_0222A024
+MOD08_0222A024: ; 0x0222A024
+ add r0, #0xdc
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A02C
+MOD08_0222A02C: ; 0x0222A02C
+ push {r3, lr}
+ sub r1, r1, r3
+ neg r1, r1
+ sub r0, r0, r2
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ asr r1, r1, #0x10
+ add r2, r1, #0
+ asr r0, r0, #0x10
+ mul r2, r1
+ add r1, r0, #0
+ mul r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0xc
+ bl FX_Sqrt
+ asr r1, r0, #0xb
+ lsr r1, r1, #0x14
+ add r1, r0, r1
+ asr r0, r1, #0xc
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A058
+MOD08_0222A058: ; 0x0222A058
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02029CE4
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_02029CE8
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #0xbe
+ mov r3, #0x46
+ bl MOD08_0222A02C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A078
+MOD08_0222A078: ; 0x0222A078
+ push {r4, lr}
+ sub sp, #8
+ ldr r3, _0222A0D0 ; =0x0222D4D8
+ add r4, r0, #0
+ add r2, sp, #0
+ mov r1, #7
+_0222A084:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _0222A084
+ add r0, r4, #0
+ bl FUN_02029CE0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02086018
+ cmp r0, #0
+ bne _0222A0C6
+ add r0, r4, #0
+ bl MOD08_0222A058
+ cmp r0, #0x38
+ blt _0222A0B0
+ mov r0, #3
+ b _0222A0BE
+_0222A0B0:
+ add r0, r0, #1
+ mov r1, #0x14
+ bl _s32_div_f
+ cmp r0, #3
+ blt _0222A0BE
+ mov r0, #3
+_0222A0BE:
+ add r1, sp, #0
+ add sp, #8
+ ldrb r0, [r1, r0]
+ pop {r4, pc}
+_0222A0C6:
+ add r0, sp, #0
+ ldrb r0, [r0, #1]
+ add sp, #8
+ pop {r4, pc}
+ nop
+_0222A0D0: .word 0x0222D4D8
+
+ thumb_func_start MOD08_0222A0D4
+MOD08_0222A0D4: ; 0x0222A0D4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x48
+ add r6, r0, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _0222A0EC
+ bl ErrorHandling
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0222A0EC:
+ bl MOD08_0221268C
+ str r6, [r4]
+ cmp r5, #0
+ beq _0222A0FA
+ ldr r0, [r5]
+ str r0, [r4, #4]
+_0222A0FA:
+ mov r1, #0
+ add r2, r4, #0
+ add r0, r1, #0
+_0222A100:
+ add r1, r1, #1
+ str r0, [r2, #8]
+ add r2, r2, #4
+ cmp r1, #0x10
+ blt _0222A100
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A110
+MOD08_0222A110: ; 0x0222A110
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r4, #0
+ add r3, r0, #0
+_0222A118:
+ ldr r2, [r3, #8]
+ cmp r2, #0
+ bne _0222A138
+ add r4, r0, #0
+ ldr r0, [r0]
+ add r4, #8
+ lsl r6, r5, #2
+ bl MOD08_0222A1A0
+ str r0, [r4, r6]
+ ldr r0, [r4, r6]
+ mov r1, #0
+ str r1, [r0, #0x18]
+ ldr r4, [r4, r6]
+ str r5, [r4]
+ b _0222A140
+_0222A138:
+ add r5, r5, #1
+ add r3, r3, #4
+ cmp r5, #0x10
+ blt _0222A118
+_0222A140:
+ cmp r4, #0
+ bne _0222A148
+ bl ErrorHandling
+_0222A148:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_0222A14C
+MOD08_0222A14C: ; 0x0222A14C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_0222A154:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _0222A15E
+ bl FUN_02016A18
+_0222A15E:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x10
+ blt _0222A154
+ add r0, r6, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A170
+MOD08_0222A170: ; 0x0222A170
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_0222A176:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _0222A194
+ ldr r0, [r0, #0x10]
+ bl MOD08_02215B40
+ ldr r1, [r5, #8]
+ ldr r0, [r1, #0x20]
+ cmp r0, #0
+ beq _0222A194
+ ldr r0, [r1, #0x18]
+ cmp r0, #0
+ beq _0222A194
+ bl FUN_0200CAB4
+_0222A194:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x10
+ blt _0222A176
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A1A0
+MOD08_0222A1A0: ; 0x0222A1A0
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r1, #0x24
+ add r5, r0, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _0222A1B8
+ bl ErrorHandling
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0222A1B8:
+ str r5, [r4, #4]
+ ldr r1, [r6]
+ ldr r0, [r6, #4]
+ str r1, [r4, #8]
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ bl MOD08_0222A260
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #8]
+ mov r2, #1
+ bl MOD08_02215AA4
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A1DC
+MOD08_0222A1DC: ; 0x0222A1DC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #1
+ str r1, [r4, #0x20]
+ ldr r1, _0222A1FC ; =MOD08_0222A258
+ bl MOD08_0222A22C
+ mov r2, #0xfa
+ ldr r0, _0222A200 ; =MOD08_0222A208
+ add r1, r4, #0
+ lsl r2, r2, #2
+ bl FUN_0200CA44
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+ nop
+_0222A1FC: .word MOD08_0222A258
+_0222A200: .word MOD08_0222A208
+
+ thumb_func_start MOD08_0222A204
+MOD08_0222A204: ; 0x0222A204
+ ldr r0, [r0, #0x20]
+ bx lr
+
+ thumb_func_start MOD08_0222A208
+MOD08_0222A208: ; 0x0222A208
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x10]
+ bl FUN_020133C8
+ cmp r0, #0
+ bne _0222A228
+ mov r0, #0
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #0x10]
+ bl MOD08_02215B40
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0222A228:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A22C
+MOD08_0222A22C: ; 0x0222A22C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ add r6, r1, #0
+ mov r4, #0
+ cmp r0, #0
+ ble _0222A24E
+_0222A23A:
+ ldr r0, [r5, #0x10]
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r5, #0
+ bl FUN_020133AC
+ ldr r0, [r5, #0x1c]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _0222A23A
+_0222A24E:
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0xc]
+ bl FUN_02013440
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD08_0222A258
+MOD08_0222A258: ; 0x0222A258
+ ldr r3, _0222A25C ; =0x0201341D
+ bx r3
+ .align 2, 0
+_0222A25C: .word 0x0201341D
+
+ thumb_func_start MOD08_0222A260
+MOD08_0222A260: ; 0x0222A260
+ push {r3, r4, r5, lr}
+ sub sp, #0x58
+ ldr r4, _0222A290 ; =0x0222D4E0
+ add r5, r0, #0
+ add r3, sp, #0
+ mov r2, #0xb
+_0222A26C:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222A26C
+ sub r0, r5, #5
+ cmp r0, #0x16
+ blo _0222A284
+ bl ErrorHandling
+ add sp, #0x58
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0222A284:
+ lsl r1, r0, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ add sp, #0x58
+ pop {r3, r4, r5, pc}
+ nop
+_0222A290: .word 0x0222D4E0
+
+ thumb_func_start MOD08_0222A294
+MOD08_0222A294: ; 0x0222A294
+ push {r3, lr}
+ add r3, r1, #0
+ ldr r1, [r0]
+ mov r2, #0
+ bl MOD08_0222A2B4
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A2A4
+MOD08_0222A2A4: ; 0x0222A2A4
+ push {r3, lr}
+ add r3, r1, #0
+ ldr r1, [r0, #4]
+ mov r2, #1
+ bl MOD08_0222A2B4
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A2B4
+MOD08_0222A2B4: ; 0x0222A2B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ add r7, r2, #0
+ str r3, [sp, #0x10]
+ bl FUN_020080E0
+ ldr r0, [r5, #4]
+ lsl r1, r0, #1
+ add r1, r5, r1
+ ldrh r6, [r1, #0x28]
+ add r1, r5, r0
+ add r1, #0x30
+ ldrb r1, [r1]
+ add r2, r5, r0
+ add r2, #0x38
+ str r1, [sp, #0x1c]
+ add r1, r5, r0
+ lsl r0, r0, #2
+ ldrb r2, [r2]
+ add r0, r5, r0
+ add r1, #0x34
+ ldr r0, [r0, #0x3c]
+ ldrb r1, [r1]
+ str r2, [sp, #0x18]
+ str r0, [sp, #0x14]
+ cmp r7, #0
+ beq _0222A30A
+ add r0, r5, r4
+ add r0, #0x4c
+ ldrb r2, [r0]
+ mov r0, #1
+ tst r0, r2
+ beq _0222A306
+ mov r4, #0
+ b _0222A31C
+_0222A306:
+ mov r4, #2
+ b _0222A31C
+_0222A30A:
+ add r0, r5, r4
+ add r0, #0x4c
+ ldrb r2, [r0]
+ mov r0, #1
+ tst r0, r2
+ beq _0222A31A
+ mov r4, #2
+ b _0222A31C
+_0222A31A:
+ mov r4, #0
+_0222A31C:
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0x1c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x14]
+ lsl r1, r6, #0x10
+ lsl r2, r2, #0x18
+ lsl r3, r4, #0x18
+ str r0, [sp, #8]
+ add r0, sp, #0x28
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02068C00
+ ldr r0, [r5]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ bl FUN_020081C0
+ add r7, r0, #0
+ add r3, sp, #0x28
+ add r2, r7, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r5]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ bl FUN_020080D0
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ ldrh r0, [r7, #6]
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ ldrh r0, [r7]
+ lsl r3, r3, #2
+ add r3, r5, r3
+ ldr r3, [r3, #8]
+ ldrh r1, [r7, #2]
+ ldr r3, [r3]
+ bl FUN_02012560
+ ldr r1, [r5]
+ ldr r3, [sp, #0x18]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ lsl r2, r4, #0x18
+ lsl r3, r3, #0x18
+ ldrh r0, [r7]
+ ldr r1, [r1, #8]
+ lsr r2, r2, #0x18
+ str r0, [r1, #4]
+ ldr r1, [r5]
+ ldrh r0, [r7, #4]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ ldr r1, [r1, #8]
+ lsr r3, r3, #0x18
+ str r0, [r1, #8]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp]
+ lsl r0, r6, #0x10
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x18
+ bl FUN_02068E88
+ ldr r1, [r5]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ ldr r1, [r1, #8]
+ str r0, [r1, #0xc]
+ ldr r0, [r5]
+ lsl r1, r0, #2
+ add r1, r5, r1
+ ldr r1, [r1, #8]
+ add r0, r5, r0
+ ldr r1, [r1, #0xc]
+ add r0, #0x4c
+ lsl r1, r1, #0x18
+ asr r7, r1, #0x18
+ ldrb r0, [r0]
+ mov r1, #1
+ bl MOD08_0222A6A4
+ str r0, [sp, #0x20]
+ ldr r0, [r5]
+ ldr r2, [sp, #0x20]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ mov r1, #1
+ add r2, r2, r7
+ bl FUN_02007558
+ cmp r4, #2
+ bne _0222A48E
+ mov r0, #1
+ str r0, [sp]
+ add r0, sp, #0x24
+ add r0, #2
+ mov r1, #0x8a
+ mov r2, #0
+ add r3, r6, #0
+ bl FUN_02006548
+ mov r0, #1
+ str r0, [sp]
+ add r0, sp, #0x24
+ add r0, #1
+ mov r1, #0x90
+ mov r2, #0
+ add r3, r6, #0
+ bl FUN_02006548
+ mov r0, #1
+ str r0, [sp]
+ add r0, sp, #0x24
+ mov r1, #0x8e
+ mov r2, #0
+ add r3, r6, #0
+ bl FUN_02006548
+ ldr r0, [r5]
+ add r2, sp, #0x24
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldrb r2, [r2]
+ ldr r0, [r0, #0x18]
+ mov r1, #0x2e
+ bl FUN_02007558
+ ldr r0, [r5]
+ ldr r2, [sp, #0x20]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r2, #0x24
+ ldr r0, [r0, #0x18]
+ mov r1, #0x14
+ str r2, [sp, #0x20]
+ bl FUN_02007558
+ ldr r0, [r5]
+ add r3, sp, #0x24
+ lsl r0, r0, #2
+ mov r2, #1
+ add r0, r5, r0
+ ldrsb r2, [r3, r2]
+ ldr r0, [r0, #0x18]
+ mov r1, #0x15
+ bl FUN_02007558
+ ldr r0, [r5]
+ mov r2, #0x24
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ mov r1, #0x16
+ sub r2, r2, r7
+ bl FUN_02007558
+ ldr r0, [r5]
+ add r3, sp, #0x24
+ lsl r0, r0, #2
+ mov r2, #2
+ add r0, r5, r0
+ ldrsb r2, [r3, r2]
+ ldr r0, [r0, #0x18]
+ mov r1, #0x29
+ bl FUN_02007558
+_0222A48E:
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A494
+MOD08_0222A494: ; 0x0222A494
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ ldr r0, [r5]
+ str r1, [sp, #0x10]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ bl FUN_0200813C
+ ldr r0, [r5]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ bl FUN_020081C0
+ add r4, r0, #0
+ ldr r0, [r5]
+ lsl r1, r0, #1
+ add r1, r5, r1
+ ldrh r1, [r1, #0x28]
+ lsl r3, r0, #2
+ str r1, [sp, #0x1c]
+ add r1, r5, r0
+ add r1, #0x30
+ ldrb r1, [r1]
+ str r1, [sp, #0x18]
+ add r1, r5, r0
+ add r1, #0x38
+ ldrb r1, [r1]
+ add r0, r5, r0
+ add r0, #0x4c
+ str r1, [sp, #0x14]
+ add r1, r5, r3
+ ldr r7, [r1, #0x3c]
+ ldrb r1, [r0]
+ mov r0, #1
+ tst r0, r1
+ beq _0222A4E6
+ mov r6, #2
+ b _0222A4E8
+_0222A4E6:
+ mov r6, #0
+_0222A4E8:
+ str r7, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldrh r0, [r4, #6]
+ add r3, r5, r3
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #0xc]
+ ldr r3, [r3, #8]
+ ldrh r0, [r4]
+ ldrh r1, [r4, #2]
+ ldr r3, [r3]
+ bl FUN_02012560
+ ldr r1, [r5]
+ ldrh r0, [r4]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ ldr r1, [r1, #8]
+ ldr r3, [sp, #0x14]
+ str r0, [r1, #4]
+ ldr r1, [r5]
+ lsl r2, r6, #0x18
+ lsl r1, r1, #2
+ add r1, r5, r1
+ lsl r3, r3, #0x18
+ ldrh r0, [r4, #4]
+ ldr r1, [r1, #8]
+ lsr r2, r2, #0x18
+ str r0, [r1, #8]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x18
+ str r7, [sp]
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02068E88
+ ldr r1, [r5]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ ldr r1, [r1, #8]
+ str r0, [r1, #0xc]
+ ldr r0, [r5]
+ mov r1, #1
+ lsl r4, r0, #2
+ add r0, r5, r0
+ add r0, #0x4c
+ ldrb r0, [r0]
+ bl MOD08_0222A6A4
+ add r1, r5, r4
+ add r2, r0, #0
+ ldr r0, [r1, #8]
+ ldr r3, [r0, #0xc]
+ ldr r0, [r1, #0x18]
+ mov r1, #1
+ add r2, r3, r2
+ bl FUN_02007558
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD08_0222A568
+MOD08_0222A568: ; 0x0222A568
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r1, #0
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ bl FUN_020080E0
+ mov r0, #0x75
+ add r2, sp, #0
+ strh r0, [r2, #4]
+ mov r0, #0xd2
+ strh r0, [r2, #8]
+ mov r0, #0
+ strh r0, [r2, #0xa]
+ strb r0, [r2, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ add r1, r5, r0
+ add r1, #0x4c
+ ldrb r3, [r1]
+ mov r1, #1
+ tst r1, r3
+ beq _0222A5A4
+ mov r1, #0xd1
+ strh r1, [r2, #6]
+ mov r4, #0x87
+ b _0222A5AA
+_0222A5A4:
+ mov r1, #0xd0
+ strh r1, [r2, #6]
+ mov r4, #0x86
+_0222A5AA:
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ bl FUN_020081C0
+ add r7, r0, #0
+ add r3, sp, #4
+ add r2, r7, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r5]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ bl FUN_020080D0
+ ldr r3, [r5]
+ ldrh r0, [r7]
+ lsl r3, r3, #2
+ add r3, r5, r3
+ ldr r3, [r3, #8]
+ ldrh r1, [r7, #2]
+ ldr r3, [r3]
+ add r2, r6, #0
+ bl FUN_02012420
+ ldr r2, [r5]
+ add r1, sp, #0
+ lsl r2, r2, #2
+ add r2, r5, r2
+ ldrh r0, [r1, #4]
+ ldr r2, [r2, #8]
+ str r0, [r2, #4]
+ ldr r0, [r5]
+ ldrh r1, [r1, #8]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #8]
+ add r2, r4, #0
+ str r1, [r0, #8]
+ add r0, sp, #0
+ mov r1, #0x79
+ bl LoadFromNARC
+ add r0, sp, #0
+ ldrb r1, [r0]
+ ldr r0, [r5]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #8]
+ str r1, [r0, #0xc]
+ ldr r0, [r5]
+ mov r1, #1
+ lsl r4, r0, #2
+ add r0, r5, r0
+ add r0, #0x4c
+ ldrb r0, [r0]
+ bl MOD08_0222A6A4
+ add r2, r5, r4
+ ldr r1, [r2, #8]
+ ldr r1, [r1, #0xc]
+ add r4, r1, r0
+ ldr r0, [r2, #0x18]
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_02007558
+ ldr r1, [r5]
+ mov r2, #1
+ add r0, r5, r1
+ add r0, #0x4c
+ ldrb r0, [r0]
+ tst r0, r2
+ beq _0222A69E
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ mov r1, #0x2e
+ bl FUN_02007558
+ ldr r0, [r5]
+ add r2, sp, #0
+ ldrb r3, [r2]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r2, #0x24
+ sub r2, r2, r3
+ ldr r0, [r0, #0x18]
+ mov r1, #0x14
+ add r2, r4, r2
+ bl FUN_02007558
+ ldr r0, [r5]
+ mov r1, #0x15
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r5]
+ add r2, sp, #0
+ lsl r0, r0, #2
+ ldrb r3, [r2]
+ add r0, r5, r0
+ mov r2, #0x24
+ ldr r0, [r0, #0x18]
+ mov r1, #0x16
+ sub r2, r2, r3
+ bl FUN_02007558
+ ldr r0, [r5]
+ mov r1, #0x29
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ mov r2, #0
+ bl FUN_02007558
+_0222A69E:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD08_0222A6A4
+MOD08_0222A6A4: ; 0x0222A6A4
+ cmp r1, #0
+ bne _0222A6B0
+ lsl r1, r0, #2
+ ldr r0, _0222A6C0 ; =0x0222D538
+ ldrsh r0, [r0, r1]
+ bx lr
+_0222A6B0:
+ mov r2, #6
+ mul r2, r0
+ ldr r0, _0222A6C4 ; =0x0222D550
+ lsl r1, r1, #1
+ add r0, r0, r2
+ ldrsh r0, [r1, r0]
+ bx lr
+ nop
+_0222A6C0: .word 0x0222D538
+_0222A6C4: .word 0x0222D550
+
+ thumb_func_start MOD08_0222A6C8
+MOD08_0222A6C8: ; 0x0222A6C8
+ ldr r1, _0222A75C ; =0x0000013B
+ cmp r0, r1
+ bhi _0222A6F6
+ bhs _0222A754
+ cmp r0, #0x7d
+ bhi _0222A6E4
+ bhs _0222A754
+ cmp r0, #0x63
+ bhi _0222A6DE
+ beq _0222A754
+ b _0222A758
+_0222A6DE:
+ cmp r0, #0x78
+ beq _0222A754
+ b _0222A758
+_0222A6E4:
+ cmp r0, #0xc9
+ bhi _0222A6F0
+ bhs _0222A754
+ cmp r0, #0x9f
+ beq _0222A754
+ b _0222A758
+_0222A6F0:
+ cmp r0, #0xd7
+ beq _0222A754
+ b _0222A758
+_0222A6F6:
+ add r2, r1, #0
+ add r2, #0x4a
+ cmp r0, r2
+ bhi _0222A71E
+ add r2, r1, #0
+ add r2, #0x4a
+ cmp r0, r2
+ bhs _0222A754
+ add r2, r1, #0
+ add r2, #0x14
+ cmp r0, r2
+ bhi _0222A716
+ add r1, #0x14
+ cmp r0, r1
+ beq _0222A754
+ b _0222A758
+_0222A716:
+ add r1, #0x2c
+ cmp r0, r1
+ beq _0222A754
+ b _0222A758
+_0222A71E:
+ add r2, r1, #0
+ add r2, #0x98
+ cmp r0, r2
+ bhi _0222A74E
+ add r2, r1, #0
+ add r2, #0x98
+ cmp r0, r2
+ bhs _0222A754
+ add r2, r1, #0
+ add r2, #0x5c
+ cmp r0, r2
+ bhi _0222A758
+ add r2, r1, #0
+ add r2, #0x5b
+ cmp r0, r2
+ blo _0222A758
+ add r2, r1, #0
+ add r2, #0x5b
+ cmp r0, r2
+ beq _0222A754
+ add r1, #0x5c
+ cmp r0, r1
+ beq _0222A754
+ b _0222A758
+_0222A74E:
+ add r1, #0x99
+ cmp r0, r1
+ bne _0222A758
+_0222A754:
+ mov r0, #0
+ bx lr
+_0222A758:
+ mov r0, #1
+ bx lr
+ .align 2, 0
+_0222A75C: .word 0x0000013B
+
+ .section .data
+ ; 0x0222A760
+ .incbin "baserom.nds", 0x1A0100, 0x2E60
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 021deaa1..5626ffc3 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -344,6 +344,14 @@ FUN_0222F440 = 0x0222F440; FUN_0222F480 = 0x0222F480; FUN_0222F7E0 = 0x0222F7E0; FUN_0222F990 = 0x0222F990; +FUN_02230078 = 0x02230078; +FUN_02230080 = 0x02230080; +FUN_022300CC = 0x022300CC; +FUN_022312D0 = 0x022312D0; +FUN_02231504 = 0x02231504; +FUN_02231534 = 0x02231534; +FUN_02231678 = 0x02231678; +FUN_02233560 = 0x02233560; FUN_022300D4 = 0x022300D4; FUN_022300DC = 0x022300DC; FUN_022300E4 = 0x022300E4; |