diff options
-rw-r--r-- | arm9/arm9.lcf | 16 | ||||
-rw-r--r-- | arm9/global.inc | 73 | ||||
-rw-r--r-- | arm9/modules/09/asm/module_09.s | 17663 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 30 |
4 files changed, 17780 insertions, 2 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 2fa78f43..5a8a9a55 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -19,7 +19,7 @@ MEMORY { MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_09 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_09 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_10 (RWX) : ORIGIN=0, LENGTH=0 MODULE_11 (RWX) : ORIGIN=0, LENGTH=0 MODULE_12 (RWX) : ORIGIN=0, LENGTH=0 @@ -457,7 +457,19 @@ SECTIONS { module_08.o (.bss) } >> MODULE_08 - OVERLAY_FILE(09, 0x19F000, FILE_1A3000.o) + .MODULE.09 : AT (0x19F000) + { + module_09.o (.text) + module_09.o (.sdata) + module_09.o (.data) + } > MODULE_09 + + .MODULE.09.bss : + { + module_09.o (.sbss) + module_09.o (.bss) + } >> MODULE_09 + OVERLAY_FILE(10, 0x1A9200, FILE_1AD200.o) OVERLAY_FILE(11, 0x1A9400, FILE_1AD400.o) OVERLAY_FILE(12, 0x1DBE00, FILE_1DFE00.o) diff --git a/arm9/global.inc b/arm9/global.inc index 9dee371a..f4a01650 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4664,3 +4664,76 @@ .extern FUN_02231678
.extern FUN_02233560
.extern FX_Modf
+.extern FUN_02002F40
+.extern FUN_0200B144
+.extern FUN_0200C5CC
+.extern FUN_0200CD60
+.extern FUN_02016BF4
+.extern FUN_0201878C
+.extern FUN_0201C62C
+.extern FUN_02020AA4
+.extern FUN_0206AB18
+.extern FUN_0206AB30
+.extern FUN_0206B334
+.extern FUN_0206E0F0
+.extern FUN_0206E114
+.extern FUN_0206E12C
+.extern FUN_0206E130
+.extern FUN_0206E198
+.extern FUN_0206E1D4
+.extern FUN_0206E278
+.extern FUN_0206E290
+.extern FUN_0206E2A8
+.extern FUN_0206E2AC
+.extern FUN_0206E708
+.extern FUN_0206E70C
+.extern FUN_0206E710
+.extern FUN_0206E7DC
+.extern FUN_0206F0D8
+.extern FUN_0206F1A0
+.extern FUN_0206F1AC
+.extern FUN_0206F1B0
+.extern FUN_0206F1B4
+.extern FUN_0206F1B8
+.extern FUN_0206F1E4
+.extern FUN_0206F1EC
+.extern FUN_020724C4
+.extern FUN_020724C8
+.extern FUN_020724CC
+.extern FUN_020724D0
+.extern FUN_0207C2C4
+.extern FUN_0207C2C8
+.extern FUN_0207C2CC
+.extern FUN_0207C2D0
+.extern FUN_02083114
+.extern FUN_0208315C
+.extern FUN_0222FF68
+.extern FUN_0222FF74
+.extern FUN_0222FF78
+.extern FUN_0222FF88
+.extern FUN_02230014
+.extern FUN_02230188
+.extern FUN_02230214
+.extern FUN_02230218
+.extern FUN_02230260
+.extern FUN_02230290
+.extern FUN_022302BC
+.extern FUN_02230370
+.extern FUN_02230E44
+.extern FUN_02230E54
+.extern FUN_02231238
+.extern FUN_0224C474
+.extern FUN_0225D3EC
+.extern FUN_0225D45C
+.extern FUN_0225D484
+.extern FUN_0225D508
+.extern FUN_0225D5DC
+.extern FUN_0225D648
+.extern FUN_0225D6A4
+.extern FUN_0225D714
+.extern FUN_0225D73C
+.extern FUN_0225D7B8
+.extern FUN_0225D800
+.extern FUN_0225D80C
+.extern FUN_0225D820
+.extern FUN_0225D824
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s new file mode 100644 index 00000000..7e5ad9c1 --- /dev/null +++ b/arm9/modules/09/asm/module_09.s @@ -0,0 +1,17663 @@ + .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD09_02211E60
+MOD09_02211E60: ; 0x02211E60
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrb r0, [r5, #0x11]
+ cmp r0, #5
+ bls _02211E6E
+ mov r0, #0
+ strb r0, [r5, #0x11]
+_02211E6E:
+ ldr r0, _02211ED8 ; =MOD09_02211EEC
+ ldr r1, _02211EDC ; =0x00002090
+ ldr r3, [r5, #0xc]
+ mov r2, #0
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ ldr r2, _02211EDC ; =0x00002090
+ add r4, r0, #0
+ mov r1, #0
+ bl Call_FillMemWithValue
+ str r5, [r4]
+ ldr r0, [r5, #8]
+ bl FUN_0222FF68
+ mov r1, #0x79
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r5, #8]
+ bl FUN_022300CC
+ mov r1, #0x7a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, _02211EE0 ; =0x00002078
+ mov r1, #0
+ strb r1, [r4, r0]
+ ldrb r1, [r5, #0x11]
+ sub r0, r0, #2
+ strb r1, [r4, r0]
+ ldr r0, [r5, #8]
+ bl FUN_02231238
+ ldr r3, _02211EE4 ; =0x00002077
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1c
+ ldrb r1, [r4, r3]
+ mov r2, #0xf0
+ lsr r0, r0, #0x18
+ bic r1, r2
+ orr r0, r1
+ strb r0, [r4, r3]
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #0x28]
+ bl FUN_02230260
+ ldr r1, _02211EE8 ; =0x0000208F
+ strb r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+ nop
+_02211ED8: .word MOD09_02211EEC
+_02211EDC: .word 0x00002090
+_02211EE0: .word 0x00002078
+_02211EE4: .word 0x00002077
+_02211EE8: .word 0x0000208F
+
+ thumb_func_start MOD09_02211EEC
+MOD09_02211EEC: ; 0x02211EEC
+ push {r4, lr}
+ ldr r2, _02212094 ; =0x00002078
+ add r4, r1, #0
+ ldrb r2, [r4, r2]
+ cmp r2, #0x1a
+ bls _02211EFA
+ b _0221207C
+_02211EFA:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02211F06: ; jump table
+ .short _02211F3C - _02211F06 - 2 ; case 0
+ .short _02211F48 - _02211F06 - 2 ; case 1
+ .short _02211F54 - _02211F06 - 2 ; case 2
+ .short _02211F60 - _02211F06 - 2 ; case 3
+ .short _02211F6C - _02211F06 - 2 ; case 4
+ .short _02211F78 - _02211F06 - 2 ; case 5
+ .short _02211F84 - _02211F06 - 2 ; case 6
+ .short _02211F90 - _02211F06 - 2 ; case 7
+ .short _02211F9C - _02211F06 - 2 ; case 8
+ .short _02211FA8 - _02211F06 - 2 ; case 9
+ .short _02211FB4 - _02211F06 - 2 ; case 10
+ .short _02211FC0 - _02211F06 - 2 ; case 11
+ .short _02211FCC - _02211F06 - 2 ; case 12
+ .short _02211FD8 - _02211F06 - 2 ; case 13
+ .short _02211FE4 - _02211F06 - 2 ; case 14
+ .short _02211FF0 - _02211F06 - 2 ; case 15
+ .short _02211FFC - _02211F06 - 2 ; case 16
+ .short _02212008 - _02211F06 - 2 ; case 17
+ .short _02212014 - _02211F06 - 2 ; case 18
+ .short _02212020 - _02211F06 - 2 ; case 19
+ .short _0221202C - _02211F06 - 2 ; case 20
+ .short _02212038 - _02211F06 - 2 ; case 21
+ .short _02212044 - _02211F06 - 2 ; case 22
+ .short _02212050 - _02211F06 - 2 ; case 23
+ .short _0221205C - _02211F06 - 2 ; case 24
+ .short _02212068 - _02211F06 - 2 ; case 25
+ .short _02212074 - _02211F06 - 2 ; case 26
+_02211F3C:
+ add r0, r4, #0
+ bl MOD09_0221209C
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211F48:
+ add r0, r4, #0
+ bl MOD09_022121A0
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211F54:
+ add r0, r4, #0
+ bl MOD09_0221236C
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211F60:
+ add r0, r4, #0
+ bl MOD09_0221241C
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211F6C:
+ add r0, r4, #0
+ bl MOD09_022124DC
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211F78:
+ add r0, r4, #0
+ bl MOD09_022125E0
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211F84:
+ add r0, r4, #0
+ bl MOD09_0221296C
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211F90:
+ add r0, r4, #0
+ bl MOD09_02212978
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211F9C:
+ add r0, r4, #0
+ bl MOD09_02212984
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211FA8:
+ add r0, r4, #0
+ bl MOD09_02212990
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211FB4:
+ add r0, r4, #0
+ bl MOD09_0221299C
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211FC0:
+ add r0, r4, #0
+ bl MOD09_022129A8
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211FCC:
+ add r0, r4, #0
+ bl MOD09_022129CC
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211FD8:
+ add r0, r4, #0
+ bl MOD09_022129F8
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211FE4:
+ add r0, r4, #0
+ bl MOD09_02212A1C
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211FF0:
+ add r0, r4, #0
+ bl MOD09_02212A5C
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02211FFC:
+ add r0, r4, #0
+ bl MOD09_02212A74
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02212008:
+ add r0, r4, #0
+ bl MOD09_02212A88
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02212014:
+ add r0, r4, #0
+ bl MOD09_02212AA4
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02212020:
+ add r0, r4, #0
+ bl MOD09_02212658
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_0221202C:
+ add r0, r4, #0
+ bl MOD09_0221274C
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02212038:
+ add r0, r4, #0
+ bl MOD09_02212868
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02212044:
+ add r0, r4, #0
+ bl MOD09_02212ACC
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02212050:
+ add r0, r4, #0
+ bl MOD09_02212AE4
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_0221205C:
+ add r0, r4, #0
+ bl MOD09_02212C8C
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02212068:
+ add r0, r4, #0
+ bl MOD09_02212DB8
+ ldr r1, _02212094 ; =0x00002078
+ strb r0, [r4, r1]
+ b _0221207C
+_02212074:
+ bl MOD09_02212DE4
+ cmp r0, #1
+ beq _02212090
+_0221207C:
+ add r0, r4, #0
+ bl MOD09_02217580
+ ldr r0, _02212098 ; =0x00001FB4
+ ldr r0, [r4, r0]
+ bl FUN_0200BC1C
+ add r0, r4, #0
+ bl MOD09_02218218
+_02212090:
+ pop {r4, pc}
+ nop
+_02212094: .word 0x00002078
+_02212098: .word 0x00001FB4
+
+ thumb_func_start MOD09_0221209C
+MOD09_0221209C: ; 0x0221209C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _02212190 ; =0x04001050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, [r5]
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #3
+ ldr r0, _02212194 ; =0x0000207A
+ bne _022120BC
+ mov r1, #6
+ strb r1, [r5, r0]
+ mov r4, #0x13
+ b _022120C0
+_022120BC:
+ strb r1, [r5, r0]
+ mov r4, #1
+_022120C0:
+ ldr r0, [r5]
+ ldr r0, [r0, #0xc]
+ bl MOD09_0221AC04
+ ldr r1, _02212198 ; =0x00002088
+ str r0, [r5, r1]
+ add r0, r5, #0
+ bl MOD09_022131C8
+ add r0, r5, #0
+ bl MOD09_02212E4C
+ add r0, r5, #0
+ bl MOD09_02212F8C
+ add r0, r5, #0
+ bl MOD09_02213138
+ ldr r1, [r5]
+ mov r0, #2
+ ldr r1, [r1, #0xc]
+ bl FUN_02002C50
+ ldr r1, _02212194 ; =0x0000207A
+ add r0, r5, #0
+ ldrb r1, [r5, r1]
+ bl MOD09_02213968
+ ldr r1, _02212194 ; =0x0000207A
+ add r0, r5, #0
+ ldrb r1, [r5, r1]
+ bl MOD09_022182E8
+ ldr r1, _02212194 ; =0x0000207A
+ add r0, r5, #0
+ ldrb r1, [r5, r1]
+ bl MOD09_02218640
+ add r0, r5, #0
+ bl MOD09_02216734
+ ldr r1, _02212194 ; =0x0000207A
+ add r0, r5, #0
+ ldrb r1, [r5, r1]
+ bl MOD09_02216D80
+ add r0, r5, #0
+ bl MOD09_02213CB8
+ ldr r1, _02212194 ; =0x0000207A
+ add r0, r5, #0
+ ldrb r1, [r5, r1]
+ bl MOD09_02213E28
+ ldr r0, [r5]
+ add r0, #0x32
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02212140
+ ldr r0, _02212198 ; =0x00002088
+ mov r1, #1
+ ldr r0, [r5, r0]
+ bl MOD09_0221AC2C
+_02212140:
+ ldr r0, _02212194 ; =0x0000207A
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ bne _0221215A
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD09_02213BDC
+ cmp r0, #1
+ bne _0221215A
+ ldr r0, [r5]
+ mov r1, #1
+ strb r1, [r0, #0x11]
+_0221215A:
+ ldr r1, _02212194 ; =0x0000207A
+ add r0, r5, #0
+ ldrb r1, [r5, r1]
+ bl MOD09_02217838
+ ldr r1, _02212194 ; =0x0000207A
+ add r0, r5, #0
+ ldrb r1, [r5, r1]
+ bl MOD09_02213710
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ mov r1, #0xa
+ add r3, r1, #0
+ ldr r0, [r5, r0]
+ ldr r2, _0221219C ; =0x0000FFFF
+ sub r3, #0x12
+ bl FUN_02003210
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02212190: .word 0x04001050
+_02212194: .word 0x0000207A
+_02212198: .word 0x00002088
+_0221219C: .word 0x0000FFFF
+
+ thumb_func_start MOD09_022121A0
+MOD09_022121A0: ; 0x022121A0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _022121B6
+ mov r0, #1
+ pop {r4, pc}
+_022121B6:
+ add r0, r4, #0
+ bl MOD09_0221347C
+ cmp r0, #1
+ bne _0221220E
+ ldr r1, [r4]
+ ldrb r0, [r1, #0x11]
+ cmp r0, #6
+ bne _022121E2
+ add r1, #0x35
+ ldrb r0, [r1]
+ cmp r0, #1
+ beq _0221220E
+ ldr r0, _02212214 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD09_022181C8
+ mov r0, #0x19
+ pop {r4, pc}
+_022121E2:
+ ldr r0, _02212214 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_022181C8
+ ldr r0, [r4]
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #2
+ bne _02212204
+ add r0, r4, #0
+ bl MOD09_0221221C
+ pop {r4, pc}
+_02212204:
+ ldr r0, _02212218 ; =0x00002079
+ mov r1, #7
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r4, pc}
+_0221220E:
+ mov r0, #1
+ pop {r4, pc}
+ nop
+_02212214: .word 0x000005DD
+_02212218: .word 0x00002079
+
+ thumb_func_start MOD09_0221221C
+MOD09_0221221C: ; 0x0221221C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5]
+ ldrb r1, [r4, #0x11]
+ cmp r1, #0
+ bne _0221222E
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _02212238
+_0221222E:
+ cmp r1, #1
+ bne _02212254
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _02212254
+_02212238:
+ add r0, r5, #0
+ bl MOD09_022166D0
+ add r0, r5, #0
+ bl MOD09_02216314
+ ldr r0, [r5]
+ mov r1, #6
+ strb r1, [r0, #0x11]
+ ldr r0, _02212360 ; =0x00002079
+ mov r1, #0x19
+ strb r1, [r5, r0]
+ mov r0, #0x11
+ pop {r3, r4, r5, pc}
+_02212254:
+ ldrh r0, [r4, #0x22]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x24
+ bl FUN_0206E7B8
+ cmp r0, #0
+ beq _0221228A
+ ldrh r0, [r4, #0x22]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x25
+ bl FUN_0206E7B8
+ cmp r0, #0
+ bne _0221228A
+ ldrb r1, [r4, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r0, r5, r0
+ ldrb r0, [r0, #0x1b]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _0221228A
+ ldr r0, _02212360 ; =0x00002079
+ mov r1, #0xd
+ strb r1, [r5, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_0221228A:
+ ldrh r0, [r4, #0x22]
+ mov r3, #0
+ str r0, [sp]
+ ldrb r2, [r4, #0x11]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0x28]
+ add r2, r4, r2
+ add r2, #0x2c
+ ldrb r2, [r2]
+ bl FUN_02230370
+ cmp r0, #1
+ bne _0221233A
+ ldrh r0, [r4, #0x22]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x25
+ bl FUN_0206E7B8
+ cmp r0, #0
+ beq _022122BA
+ ldr r0, _02212360 ; =0x00002079
+ mov r1, #0xd
+ strb r1, [r5, r0]
+ b _02212330
+_022122BA:
+ ldrb r1, [r4, #0x11]
+ add r0, r5, #0
+ bl MOD09_02213620
+ cmp r0, #1
+ bne _0221232A
+ ldrh r0, [r4, #0x22]
+ ldr r2, [r4, #0xc]
+ mov r1, #0x17
+ bl FUN_0206E7B8
+ cmp r0, #0
+ bne _0221232A
+ add r2, r4, #0
+ add r2, #0x33
+ ldrh r1, [r4, #0x22]
+ ldrb r2, [r2]
+ ldr r0, [r4, #8]
+ ldr r3, [r4, #0xc]
+ bl MOD09_02213C84
+ ldrb r2, [r4, #0x11]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0x28]
+ add r2, r4, r2
+ add r2, #0x2c
+ ldrb r2, [r2]
+ bl FUN_02230014
+ ldrb r2, [r4, #0x11]
+ mov r1, #0x50
+ add r3, r2, #0
+ mul r3, r1
+ add r2, r5, r3
+ str r0, [r2, #4]
+ ldrb r0, [r4, #0x11]
+ mov r2, #0
+ mul r1, r0
+ add r0, r5, r1
+ ldr r0, [r0, #4]
+ mov r1, #0xa2
+ bl FUN_020671BC
+ strh r0, [r4, #0x20]
+ ldrb r1, [r4, #0x11]
+ mov r0, #0x50
+ ldrh r2, [r4, #0x20]
+ mul r0, r1
+ add r0, r5, r0
+ ldrh r0, [r0, #0x14]
+ mov r1, #0x19
+ sub r0, r2, r0
+ strh r0, [r4, #0x20]
+ ldr r0, _02212360 ; =0x00002079
+ strb r1, [r5, r0]
+ b _02212330
+_0221232A:
+ ldr r0, _02212360 ; =0x00002079
+ mov r1, #0x17
+ strb r1, [r5, r0]
+_02212330:
+ ldr r0, _02212364 ; =0x0000207C
+ mov r1, #0
+ strb r1, [r5, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_0221233A:
+ ldr r2, _02212368 ; =0x00001FA8
+ mov r1, #0x51
+ ldr r0, [r5, r2]
+ add r2, #8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ bl MOD09_02216314
+ ldr r0, [r5]
+ mov r1, #6
+ strb r1, [r0, #0x11]
+ ldr r0, _02212360 ; =0x00002079
+ mov r1, #0x19
+ strb r1, [r5, r0]
+ mov r0, #0x11
+ pop {r3, r4, r5, pc}
+ nop
+_02212360: .word 0x00002079
+_02212364: .word 0x0000207C
+_02212368: .word 0x00001FA8
+
+ thumb_func_start MOD09_0221236C
+MOD09_0221236C: ; 0x0221236C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD09_022134F4
+ cmp r0, #3
+ bhi _0221240E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02212384: ; jump table
+ .short _0221238C - _02212384 - 2 ; case 0
+ .short _022123B2 - _02212384 - 2 ; case 1
+ .short _022123D4 - _02212384 - 2 ; case 2
+ .short _022123F6 - _02212384 - 2 ; case 3
+_0221238C:
+ ldr r0, _02212414 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD09_022181C8
+ add r0, r4, #0
+ bl MOD09_022139D4
+ cmp r0, #1
+ bne _022123A8
+ mov r0, #0x19
+ pop {r4, pc}
+_022123A8:
+ ldr r0, _02212418 ; =0x00002079
+ mov r1, #0xf
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r4, pc}
+_022123B2:
+ add r0, r4, #0
+ bl MOD09_02213B7C
+ cmp r0, #1
+ beq _0221240E
+ ldr r0, _02212414 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #8
+ bl MOD09_022181C8
+ ldr r0, _02212418 ; =0x00002079
+ mov r1, #8
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r4, pc}
+_022123D4:
+ add r0, r4, #0
+ bl MOD09_02213B7C
+ cmp r0, #1
+ beq _0221240E
+ ldr r0, _02212414 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xa
+ bl MOD09_022181C8
+ ldr r0, _02212418 ; =0x00002079
+ mov r1, #9
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r4, pc}
+_022123F6:
+ ldr r0, _02212414 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD09_022181C8
+ ldr r0, _02212418 ; =0x00002079
+ mov r1, #6
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r4, pc}
+_0221240E:
+ mov r0, #2
+ pop {r4, pc}
+ nop
+_02212414: .word 0x000005DD
+_02212418: .word 0x00002079
+
+ thumb_func_start MOD09_0221241C
+MOD09_0221241C: ; 0x0221241C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD09_0221353C
+ cmp r0, #3
+ bhi _022124CC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02212434: ; jump table
+ .short _0221243C - _02212434 - 2 ; case 0
+ .short _0221246A - _02212434 - 2 ; case 1
+ .short _02212496 - _02212434 - 2 ; case 2
+ .short _022124AE - _02212434 - 2 ; case 3
+_0221243C:
+ ldr r1, [r4]
+ mov r2, #0
+ ldrb r1, [r1, #0x11]
+ add r0, r4, #0
+ mvn r2, r2
+ bl MOD09_02213658
+ cmp r0, #0xff
+ beq _022124CC
+ ldr r1, [r4]
+ strb r0, [r1, #0x11]
+ ldr r0, _022124D0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xc
+ bl MOD09_022181C8
+ ldr r0, _022124D4 ; =0x00002079
+ mov r1, #0xe
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r4, pc}
+_0221246A:
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrb r1, [r1, #0x11]
+ mov r2, #1
+ bl MOD09_02213658
+ cmp r0, #0xff
+ beq _022124CC
+ ldr r1, [r4]
+ strb r0, [r1, #0x11]
+ ldr r0, _022124D0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xd
+ bl MOD09_022181C8
+ ldr r0, _022124D4 ; =0x00002079
+ mov r1, #0xe
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r4, pc}
+_02212496:
+ ldr r0, _022124D0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xb
+ bl MOD09_022181C8
+ ldr r0, _022124D4 ; =0x00002079
+ mov r1, #9
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r4, pc}
+_022124AE:
+ ldr r0, _022124D0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD09_022181C8
+ ldr r0, _022124D8 ; =0x0000208C
+ mov r1, #1
+ strb r1, [r4, r0]
+ mov r1, #7
+ sub r0, #0x13
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r4, pc}
+_022124CC:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_022124D0: .word 0x000005DD
+_022124D4: .word 0x00002079
+_022124D8: .word 0x0000208C
+
+ thumb_func_start MOD09_022124DC
+MOD09_022124DC: ; 0x022124DC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl MOD09_02213584
+ add r5, r0, #0
+ cmp r5, #7
+ bhi _022125CE
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022124F6: ; jump table
+ .short _02212506 - _022124F6 - 2 ; case 0
+ .short _02212506 - _022124F6 - 2 ; case 1
+ .short _02212506 - _022124F6 - 2 ; case 2
+ .short _02212506 - _022124F6 - 2 ; case 3
+ .short _0221253E - _022124F6 - 2 ; case 4
+ .short _0221256C - _022124F6 - 2 ; case 5
+ .short _02212598 - _022124F6 - 2 ; case 6
+ .short _022125B0 - _022124F6 - 2 ; case 7
+_02212506:
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r1, r4, r0
+ lsl r0, r5, #3
+ add r0, r1, r0
+ ldrh r0, [r0, #0x34]
+ cmp r0, #0
+ beq _022125CE
+ ldr r0, _022125D4 ; =0x000005DD
+ bl FUN_020054C8
+ add r1, r5, #0
+ add r1, #0xe
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD09_022181C8
+ ldr r0, [r4]
+ mov r1, #0xa
+ add r0, #0x34
+ strb r5, [r0]
+ ldr r0, _022125D8 ; =0x00002079
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_0221253E:
+ ldr r1, [r4]
+ mov r2, #0
+ ldrb r1, [r1, #0x11]
+ add r0, r4, #0
+ mvn r2, r2
+ bl MOD09_02213658
+ cmp r0, #0xff
+ beq _022125CE
+ ldr r1, [r4]
+ strb r0, [r1, #0x11]
+ ldr r0, _022125D4 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xc
+ bl MOD09_022181C8
+ ldr r0, _022125D8 ; =0x00002079
+ mov r1, #0xe
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_0221256C:
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrb r1, [r1, #0x11]
+ mov r2, #1
+ bl MOD09_02213658
+ cmp r0, #0xff
+ beq _022125CE
+ ldr r1, [r4]
+ strb r0, [r1, #0x11]
+ ldr r0, _022125D4 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xd
+ bl MOD09_022181C8
+ ldr r0, _022125D8 ; =0x00002079
+ mov r1, #0xe
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_02212598:
+ ldr r0, _022125D4 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD09_022181C8
+ ldr r0, _022125D8 ; =0x00002079
+ mov r1, #8
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_022125B0:
+ ldr r0, _022125D4 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD09_022181C8
+ ldr r0, _022125DC ; =0x0000208C
+ mov r1, #2
+ strb r1, [r4, r0]
+ mov r1, #7
+ sub r0, #0x13
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_022125CE:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+ nop
+_022125D4: .word 0x000005DD
+_022125D8: .word 0x00002079
+_022125DC: .word 0x0000208C
+
+ thumb_func_start MOD09_022125E0
+MOD09_022125E0: ; 0x022125E0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl MOD09_022135CC
+ add r5, r0, #0
+ cmp r5, #4
+ bhi _0221264A
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022125FA: ; jump table
+ .short _02212604 - _022125FA - 2 ; case 0
+ .short _02212604 - _022125FA - 2 ; case 1
+ .short _02212604 - _022125FA - 2 ; case 2
+ .short _02212604 - _022125FA - 2 ; case 3
+ .short _02212632 - _022125FA - 2 ; case 4
+_02212604:
+ ldr r1, [r4]
+ add r0, r1, #0
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, r5
+ beq _02212622
+ ldrb r1, [r1, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r1, r4, r0
+ lsl r0, r5, #3
+ add r0, r1, r0
+ ldrh r0, [r0, #0x34]
+ cmp r0, #0
+ beq _0221264A
+_02212622:
+ ldr r0, _02212650 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, #0x34
+ strb r5, [r0]
+ mov r0, #0xa
+ pop {r3, r4, r5, pc}
+_02212632:
+ ldr r0, _02212650 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD09_022181C8
+ ldr r0, _02212654 ; =0x00002079
+ mov r1, #9
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_0221264A:
+ mov r0, #5
+ pop {r3, r4, r5, pc}
+ nop
+_02212650: .word 0x000005DD
+_02212654: .word 0x00002079
+
+ thumb_func_start MOD09_02212658
+MOD09_02212658: ; 0x02212658
+ push {r3, r4, r5, lr}
+ ldr r1, _02212734 ; =0x0221AFD8
+ add r4, r0, #0
+ bl MOD09_02213614
+ add r5, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ bne _02212682
+ ldr r0, _02212738 ; =0x00002088
+ ldr r0, [r4, r0]
+ bl MOD09_0221AD30
+ add r5, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ bne _02212688
+ mov r5, #6
+ b _02212688
+_02212682:
+ add r0, r4, #0
+ bl MOD09_022178E4
+_02212688:
+ cmp r5, #6
+ bhi _02212730
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02212698: ; jump table
+ .short _022126A6 - _02212698 - 2 ; case 0
+ .short _022126A6 - _02212698 - 2 ; case 1
+ .short _022126A6 - _02212698 - 2 ; case 2
+ .short _022126A6 - _02212698 - 2 ; case 3
+ .short _022126A6 - _02212698 - 2 ; case 4
+ .short _022126D0 - _02212698 - 2 ; case 5
+ .short _02212710 - _02212698 - 2 ; case 6
+_022126A6:
+ lsl r0, r5, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, [r4]
+ add r0, #0x34
+ strb r1, [r0]
+ ldr r0, _0221273C ; =0x0000208D
+ strb r1, [r4, r0]
+ ldr r0, _02212740 ; =0x000005DD
+ bl FUN_020054C8
+ add r5, #0x17
+ lsl r1, r5, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD09_022181C8
+ ldr r0, _02212744 ; =0x00002079
+ mov r1, #0xc
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_022126D0:
+ ldr r0, _02212748 ; =0x00002077
+ ldrb r3, [r4, r0]
+ lsl r1, r3, #0x18
+ lsr r1, r1, #0x1c
+ beq _02212730
+ mov r2, #0xf
+ add r1, r3, #0
+ bic r1, r2
+ lsl r2, r3, #0x1c
+ lsr r3, r2, #0x1c
+ mov r2, #1
+ eor r2, r3
+ lsl r2, r2, #0x18
+ lsr r3, r2, #0x18
+ mov r2, #0xf
+ and r2, r3
+ orr r1, r2
+ strb r1, [r4, r0]
+ add r0, #0x16
+ strb r5, [r4, r0]
+ ldr r0, _02212740 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x12
+ bl MOD09_022181C8
+ ldr r0, _02212744 ; =0x00002079
+ mov r1, #0xb
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_02212710:
+ ldr r0, [r4]
+ mov r1, #4
+ add r0, #0x34
+ strb r1, [r0]
+ ldr r0, _02212740 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD09_022181C8
+ ldr r0, _02212744 ; =0x00002079
+ mov r1, #0x19
+ strb r1, [r4, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_02212730:
+ mov r0, #0x13
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02212734: .word 0x0221AFD8
+_02212738: .word 0x00002088
+_0221273C: .word 0x0000208D
+_02212740: .word 0x000005DD
+_02212744: .word 0x00002079
+_02212748: .word 0x00002077
+
+ thumb_func_start MOD09_0221274C
+MOD09_0221274C: ; 0x0221274C
+ push {r3, r4, r5, lr}
+ ldr r1, _02212850 ; =0x0221AEE0
+ add r5, r0, #0
+ bl MOD09_02213614
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02212776
+ ldr r0, _02212854 ; =0x00002088
+ ldr r0, [r5, r0]
+ bl MOD09_0221AD30
+ add r4, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0221277C
+ mov r4, #2
+ b _0221277C
+_02212776:
+ add r0, r5, #0
+ bl MOD09_022178E4
+_0221277C:
+ cmp r4, #0
+ beq _0221278A
+ cmp r4, #1
+ beq _022127E6
+ cmp r4, #2
+ beq _0221282C
+ b _0221284A
+_0221278A:
+ ldr r0, _02212858 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _0221285C ; =0x00002077
+ ldrb r0, [r5, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bne _022127A4
+ add r0, r5, #0
+ mov r1, #0x1c
+ bl MOD09_022181C8
+ b _022127AC
+_022127A4:
+ add r0, r5, #0
+ mov r1, #0x1d
+ bl MOD09_022181C8
+_022127AC:
+ add r0, r5, #0
+ bl MOD09_02213C0C
+ cmp r0, #1
+ bne _022127DC
+ add r0, r5, #0
+ bl MOD09_0221534C
+ ldr r0, _0221285C ; =0x00002077
+ ldrb r0, [r5, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bne _022127CE
+ add r0, r5, #0
+ bl MOD09_02213C34
+ b _022127D4
+_022127CE:
+ add r0, r5, #0
+ bl MOD09_02213C6C
+_022127D4:
+ ldr r0, _02212860 ; =0x00002079
+ mov r1, #0x14
+ strb r1, [r5, r0]
+ b _022127E2
+_022127DC:
+ ldr r0, _02212860 ; =0x00002079
+ mov r1, #0x19
+ strb r1, [r5, r0]
+_022127E2:
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_022127E6:
+ ldr r0, _0221285C ; =0x00002077
+ ldrb r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ beq _0221284A
+ ldr r0, _02212858 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0x12
+ bl MOD09_022181C8
+ ldr r2, _0221285C ; =0x00002077
+ mov r1, #0xf
+ ldrb r3, [r5, r2]
+ add r0, r3, #0
+ bic r0, r1
+ lsl r1, r3, #0x1c
+ lsr r3, r1, #0x1c
+ mov r1, #1
+ eor r1, r3
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ mov r1, #0xf
+ and r1, r3
+ orr r0, r1
+ strb r0, [r5, r2]
+ add r0, r2, #0
+ add r0, #0x17
+ strb r4, [r5, r0]
+ mov r1, #0xc
+ add r0, r2, #2
+ strb r1, [r5, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_0221282C:
+ ldr r0, _02212858 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD09_022181C8
+ ldr r0, _02212864 ; =0x0000208E
+ mov r1, #0
+ strb r1, [r5, r0]
+ mov r1, #0xb
+ sub r0, #0x15
+ strb r1, [r5, r0]
+ mov r0, #0x16
+ pop {r3, r4, r5, pc}
+_0221284A:
+ mov r0, #0x14
+ pop {r3, r4, r5, pc}
+ nop
+_02212850: .word 0x0221AEE0
+_02212854: .word 0x00002088
+_02212858: .word 0x000005DD
+_0221285C: .word 0x00002077
+_02212860: .word 0x00002079
+_02212864: .word 0x0000208E
+
+ thumb_func_start MOD09_02212868
+MOD09_02212868: ; 0x02212868
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ ldr r1, _02212954 ; =0x0221AF30
+ add r4, r0, #0
+ ldr r6, [r4]
+ bl MOD09_02213614
+ add r5, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ bne _02212896
+ ldr r0, _02212958 ; =0x00002088
+ ldr r0, [r4, r0]
+ bl MOD09_0221AD30
+ add r5, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ bne _0221289C
+ mov r5, #4
+ b _0221289C
+_02212896:
+ add r0, r4, #0
+ bl MOD09_022178E4
+_0221289C:
+ cmp r5, #4
+ bhi _0221294E
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022128AC: ; jump table
+ .short _022128B6 - _022128AC - 2 ; case 0
+ .short _022128B6 - _022128AC - 2 ; case 1
+ .short _022128B6 - _022128AC - 2 ; case 2
+ .short _022128B6 - _022128AC - 2 ; case 3
+ .short _02212934 - _022128AC - 2 ; case 4
+_022128B6:
+ ldrb r1, [r6, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r1, r4, r0
+ lsl r0, r5, #3
+ add r0, r1, r0
+ ldrh r0, [r0, #0x34]
+ cmp r0, #0
+ beq _0221294E
+ ldr r0, [r4]
+ add r0, #0x34
+ strb r5, [r0]
+ ldr r0, _0221295C ; =0x000005DD
+ bl FUN_020054C8
+ add r1, r5, #0
+ add r1, #0x13
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD09_022181C8
+ ldrh r0, [r6, #0x22]
+ add r3, r5, #0
+ str r0, [sp]
+ ldrb r2, [r6, #0x11]
+ ldr r0, [r6, #8]
+ ldr r1, [r6, #0x28]
+ add r2, r6, r2
+ add r2, #0x2c
+ ldrb r2, [r2]
+ bl FUN_02230370
+ cmp r0, #1
+ bne _0221290E
+ ldr r0, _02212960 ; =0x0000207C
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r1, #0x17
+ sub r0, r0, #3
+ strb r1, [r4, r0]
+ add sp, #4
+ mov r0, #0x16
+ pop {r3, r4, r5, r6, pc}
+_0221290E:
+ ldr r2, _02212964 ; =0x00001FA8
+ mov r1, #0x51
+ ldr r0, [r4, r2]
+ add r2, #8
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ add r0, r4, #0
+ bl MOD09_02216314
+ ldr r0, [r4]
+ mov r1, #6
+ strb r1, [r0, #0x11]
+ ldr r0, _02212968 ; =0x00002079
+ mov r1, #0x19
+ strb r1, [r4, r0]
+ add sp, #4
+ mov r0, #0x11
+ pop {r3, r4, r5, r6, pc}
+_02212934:
+ ldr r0, _0221295C ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD09_022181C8
+ ldr r0, _02212968 ; =0x00002079
+ mov r1, #6
+ strb r1, [r4, r0]
+ add sp, #4
+ mov r0, #0x16
+ pop {r3, r4, r5, r6, pc}
+_0221294E:
+ mov r0, #0x15
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02212954: .word 0x0221AF30
+_02212958: .word 0x00002088
+_0221295C: .word 0x000005DD
+_02212960: .word 0x0000207C
+_02212964: .word 0x00001FA8
+_02212968: .word 0x00002079
+
+ thumb_func_start MOD09_0221296C
+MOD09_0221296C: ; 0x0221296C
+ push {r3, lr}
+ mov r1, #0
+ bl MOD09_022138F0
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD09_02212978
+MOD09_02212978: ; 0x02212978
+ push {r3, lr}
+ mov r1, #1
+ bl MOD09_022138F0
+ mov r0, #2
+ pop {r3, pc}
+
+ thumb_func_start MOD09_02212984
+MOD09_02212984: ; 0x02212984
+ push {r3, lr}
+ mov r1, #2
+ bl MOD09_022138F0
+ mov r0, #3
+ pop {r3, pc}
+
+ thumb_func_start MOD09_02212990
+MOD09_02212990: ; 0x02212990
+ push {r3, lr}
+ mov r1, #3
+ bl MOD09_022138F0
+ mov r0, #4
+ pop {r3, pc}
+
+ thumb_func_start MOD09_0221299C
+MOD09_0221299C: ; 0x0221299C
+ push {r3, lr}
+ mov r1, #4
+ bl MOD09_022138F0
+ mov r0, #5
+ pop {r3, pc}
+
+ thumb_func_start MOD09_022129A8
+MOD09_022129A8: ; 0x022129A8
+ push {r3, lr}
+ ldr r1, _022129C8 ; =0x00002077
+ ldrb r1, [r0, r1]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bne _022129BC
+ mov r1, #6
+ bl MOD09_022138F0
+ b _022129C2
+_022129BC:
+ mov r1, #8
+ bl MOD09_022138F0
+_022129C2:
+ mov r0, #0x13
+ pop {r3, pc}
+ nop
+_022129C8: .word 0x00002077
+
+ thumb_func_start MOD09_022129CC
+MOD09_022129CC: ; 0x022129CC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD09_022174EC
+ ldr r0, _022129F4 ; =0x00002077
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bne _022129E8
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD09_022138F0
+ b _022129F0
+_022129E8:
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD09_022138F0
+_022129F0:
+ mov r0, #0x14
+ pop {r4, pc}
+ .align 2, 0
+_022129F4: .word 0x00002077
+
+ thumb_func_start MOD09_022129F8
+MOD09_022129F8: ; 0x022129F8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #5
+ bl MOD09_022138F0
+ ldr r2, [r4]
+ mov r1, #0x25
+ ldrh r0, [r2, #0x22]
+ ldr r2, [r2, #0xc]
+ bl FUN_0206E7B8
+ cmp r0, #0
+ beq _02212A16
+ mov r0, #0x18
+ pop {r4, pc}
+_02212A16:
+ mov r0, #0x15
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02212A1C
+MOD09_02212A1C: ; 0x02212A1C
+ push {r4, lr}
+ ldr r1, _02212A58 ; =0x0000207A
+ add r4, r0, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_02216D80
+ ldr r1, _02212A58 ; =0x0000207A
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_02213E28
+ ldr r1, _02212A58 ; =0x0000207A
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_022182E8
+ ldr r1, _02212A58 ; =0x0000207A
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_02213710
+ ldr r0, _02212A58 ; =0x0000207A
+ ldrb r0, [r4, r0]
+ cmp r0, #2
+ bne _02212A52
+ mov r0, #3
+ pop {r4, pc}
+_02212A52:
+ mov r0, #4
+ pop {r4, pc}
+ nop
+_02212A58: .word 0x0000207A
+
+ thumb_func_start MOD09_02212A5C
+MOD09_02212A5C: ; 0x02212A5C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD09_02216314
+ ldr r0, _02212A70 ; =0x00002079
+ mov r1, #0x10
+ strb r1, [r4, r0]
+ mov r0, #0x11
+ pop {r4, pc}
+ nop
+_02212A70: .word 0x00002079
+
+ thumb_func_start MOD09_02212A74
+MOD09_02212A74: ; 0x02212A74
+ push {r3, lr}
+ ldr r1, _02212A84 ; =0x00002060
+ add r0, r0, r1
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #2
+ pop {r3, pc}
+ .align 2, 0
+_02212A84: .word 0x00002060
+
+ thumb_func_start MOD09_02212A88
+MOD09_02212A88: ; 0x02212A88
+ push {r3, lr}
+ ldr r1, _02212AA0 ; =0x0000207B
+ ldrb r0, [r0, r1]
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02212A9A
+ mov r0, #0x12
+ pop {r3, pc}
+_02212A9A:
+ mov r0, #0x11
+ pop {r3, pc}
+ nop
+_02212AA0: .word 0x0000207B
+
+ thumb_func_start MOD09_02212AA4
+MOD09_02212AA4: ; 0x02212AA4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02212AC4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _02212ABA
+ bl FUN_02020AA4
+ cmp r0, #1
+ bne _02212AC0
+_02212ABA:
+ ldr r0, _02212AC8 ; =0x00002079
+ ldrb r0, [r4, r0]
+ pop {r4, pc}
+_02212AC0:
+ mov r0, #0x12
+ pop {r4, pc}
+ .align 2, 0
+_02212AC4: .word 0x021C48B8
+_02212AC8: .word 0x00002079
+
+ thumb_func_start MOD09_02212ACC
+MOD09_02212ACC: ; 0x02212ACC
+ ldr r1, _02212AE0 ; =0x00001FA3
+ ldrb r2, [r0, r1]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1f
+ bne _02212ADC
+ add r1, #0xd6
+ ldrb r0, [r0, r1]
+ bx lr
+_02212ADC:
+ mov r0, #0x16
+ bx lr
+ .align 2, 0
+_02212AE0: .word 0x00001FA3
+
+ thumb_func_start MOD09_02212AE4
+MOD09_02212AE4: ; 0x02212AE4
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r7, _02212C7C ; =0x0000207C
+ add r4, r0, #0
+ ldrb r1, [r4, r7]
+ ldr r5, [r4]
+ cmp r1, #4
+ bls _02212AF4
+ b _02212C78
+_02212AF4:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02212B00: ; jump table
+ .short _02212B0A - _02212B00 - 2 ; case 0
+ .short _02212BCE - _02212B00 - 2 ; case 1
+ .short _02212BF6 - _02212B00 - 2 ; case 2
+ .short _02212C2E - _02212B00 - 2 ; case 3
+ .short _02212C4E - _02212B00 - 2 ; case 4
+_02212B0A:
+ ldrb r2, [r5, #0x11]
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #0x28]
+ add r2, r5, r2
+ add r2, #0x2c
+ ldrb r2, [r2]
+ bl FUN_02230014
+ ldrb r2, [r5, #0x11]
+ mov r1, #0x50
+ mul r1, r2
+ add r1, r4, r1
+ str r0, [r1, #4]
+ add r0, r4, #0
+ bl MOD09_02216378
+ sub r0, r7, #2
+ ldrb r0, [r4, r0]
+ ldrb r1, [r5, #0x11]
+ cmp r0, #5
+ bne _02212B54
+ mov r0, #0x50
+ mul r0, r1
+ add r5, #0x34
+ ldrb r1, [r5]
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ add r1, #0x3a
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r7, #4
+ strh r0, [r4, r1]
+ mov r2, #2
+ sub r0, r1, #4
+ strb r2, [r4, r0]
+ b _02212BC6
+_02212B54:
+ mov r0, #0x50
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ bl FUN_0207C2D4
+ add r6, r0, #0
+ ldrb r0, [r5, #0x11]
+ add r3, r4, #0
+ mov r7, #0x50
+ add r2, r0, #0
+ add r3, #0x1b
+ mul r2, r7
+ ldrb r1, [r3, r2]
+ mov r0, #0x78
+ bic r1, r0
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x19
+ orr r0, r1
+ strb r0, [r3, r2]
+ ldrb r0, [r5, #0x11]
+ add r1, r0, #0
+ mul r1, r7
+ add r1, r4, r1
+ ldrb r1, [r1, #0x1b]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ cmp r1, #7
+ bne _02212BAA
+ add r0, #0xd
+ lsl r0, r0, #2
+ add r1, r4, r0
+ ldr r0, _02212C80 ; =0x00001FB8
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ ldrb r1, [r5, #0x11]
+ add r0, r4, #0
+ bl MOD09_022156DC
+_02212BAA:
+ ldrb r1, [r5, #0x11]
+ mov r0, #0x50
+ mov r2, #0
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ mov r1, #0xa2
+ bl FUN_020671BC
+ ldr r1, _02212C84 ; =0x0000207E
+ mov r2, #4
+ strh r0, [r4, r1]
+ sub r0, r1, #2
+ strb r2, [r4, r0]
+_02212BC6:
+ ldr r0, _02212C88 ; =0x000005EC
+ bl FUN_020054C8
+ b _02212C78
+_02212BCE:
+ ldrb r1, [r5, #0x11]
+ add r6, r4, #0
+ mov r2, #0x50
+ add r3, r1, #0
+ add r6, #0x14
+ mul r3, r2
+ add r1, r7, #2
+ ldrh r2, [r4, r1]
+ ldrh r1, [r6, r3]
+ cmp r2, r1
+ beq _02212BF0
+ add r1, r1, #1
+ strh r1, [r6, r3]
+ ldrb r1, [r5, #0x11]
+ bl MOD09_0221567C
+ b _02212C78
+_02212BF0:
+ mov r0, #3
+ strb r0, [r4, r7]
+ b _02212C78
+_02212BF6:
+ ldrb r3, [r5, #0x11]
+ add r1, r4, #0
+ mov r2, #0x50
+ add r1, #0x36
+ mul r2, r3
+ add r6, r1, r2
+ add r1, r5, #0
+ add r1, #0x34
+ ldrb r1, [r1]
+ lsl r3, r1, #3
+ add r1, r7, #4
+ ldrh r2, [r4, r1]
+ ldrb r1, [r6, r3]
+ cmp r2, r1
+ beq _02212C28
+ add r1, r1, #1
+ strb r1, [r6, r3]
+ add r5, #0x34
+ ldrb r2, [r5]
+ add r1, r2, #1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl MOD09_02216190
+ b _02212C78
+_02212C28:
+ mov r0, #3
+ strb r0, [r4, r7]
+ b _02212C78
+_02212C2E:
+ add r2, r5, #0
+ add r2, #0x33
+ ldrh r1, [r5, #0x22]
+ ldrb r2, [r2]
+ ldr r0, [r5, #8]
+ ldr r3, [r5, #0xc]
+ bl MOD09_02213C84
+ add r0, r4, #0
+ bl MOD09_02216314
+ mov r1, #0x19
+ sub r0, r7, #3
+ strb r1, [r4, r0]
+ mov r0, #0x11
+ pop {r3, r4, r5, r6, r7, pc}
+_02212C4E:
+ ldrb r1, [r5, #0x11]
+ add r3, r4, #0
+ mov r2, #0x50
+ mul r2, r1
+ add r1, r7, #2
+ add r3, #0x14
+ ldrh r6, [r4, r1]
+ ldrh r1, [r3, r2]
+ cmp r6, r1
+ beq _02212C72
+ add r1, r1, #1
+ strh r1, [r3, r2]
+ ldrb r1, [r5, #0x11]
+ bl MOD09_0221567C
+ add r0, r4, #0
+ bl MOD09_022186C0
+_02212C72:
+ ldr r0, _02212C7C ; =0x0000207C
+ mov r1, #1
+ strb r1, [r4, r0]
+_02212C78:
+ mov r0, #0x17
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02212C7C: .word 0x0000207C
+_02212C80: .word 0x00001FB8
+_02212C84: .word 0x0000207E
+_02212C88: .word 0x000005EC
+
+ thumb_func_start MOD09_02212C8C
+MOD09_02212C8C: ; 0x02212C8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ str r0, [sp, #4]
+ ldr r0, _02212DAC ; =0x0000207C
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _02212CA8
+ cmp r0, #1
+ beq _02212D12
+ cmp r0, #2
+ beq _02212D7C
+ b _02212DA4
+_02212CA8:
+ ldr r2, [sp, #4]
+ ldr r0, [sp, #4]
+ ldrb r3, [r2, #0x11]
+ ldr r1, [sp, #4]
+ ldr r0, [r0, #8]
+ add r2, r2, r3
+ add r2, #0x2c
+ ldrb r2, [r2]
+ ldr r1, [r1, #0x28]
+ bl FUN_02230014
+ ldr r1, [sp, #4]
+ mov r7, #0
+ ldrb r2, [r1, #0x11]
+ mov r1, #0x50
+ add r6, r7, #0
+ mul r1, r2
+ add r1, r5, r1
+ str r0, [r1, #4]
+ add r4, r5, #0
+_02212CD0:
+ ldr r0, [sp, #4]
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r1, r5, r0
+ add r0, r1, r6
+ ldrh r0, [r0, #0x34]
+ cmp r0, #0
+ beq _02212CF4
+ ldr r0, [r1, #4]
+ add r1, r7, #0
+ add r1, #0x3a
+ mov r2, #0
+ bl FUN_020671BC
+ mov r1, #0x82
+ lsl r1, r1, #6
+ strh r0, [r4, r1]
+_02212CF4:
+ add r7, r7, #1
+ add r6, #8
+ add r4, r4, #2
+ cmp r7, #4
+ blo _02212CD0
+ add r0, r5, #0
+ bl MOD09_02216378
+ ldr r0, _02212DB0 ; =0x000005EC
+ bl FUN_020054C8
+ ldr r0, _02212DAC ; =0x0000207C
+ mov r1, #1
+ strb r1, [r5, r0]
+ b _02212DA4
+_02212D12:
+ mov r6, #0
+ add r4, r6, #0
+ str r6, [sp]
+ add r7, r5, #0
+_02212D1A:
+ ldr r0, [sp, #4]
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r1, r5, r0
+ ldr r0, [sp]
+ add r1, r1, r0
+ ldrh r0, [r1, #0x34]
+ cmp r0, #0
+ bne _02212D32
+ add r6, r6, #1
+ b _02212D62
+_02212D32:
+ mov r0, #0x82
+ add r2, r1, #0
+ lsl r0, r0, #6
+ add r2, #0x36
+ ldrh r0, [r7, r0]
+ ldrb r2, [r2]
+ cmp r0, r2
+ beq _02212D60
+ add r0, r1, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ lsl r2, r4, #0x10
+ add r1, #0x36
+ add r0, r0, #1
+ strb r0, [r1]
+ add r1, r4, #1
+ lsl r1, r1, #0x10
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl MOD09_02216190
+ b _02212D62
+_02212D60:
+ add r6, r6, #1
+_02212D62:
+ ldr r0, [sp]
+ add r4, r4, #1
+ add r0, #8
+ add r7, r7, #2
+ str r0, [sp]
+ cmp r4, #4
+ blo _02212D1A
+ cmp r6, #4
+ bne _02212DA4
+ ldr r0, _02212DAC ; =0x0000207C
+ mov r1, #2
+ strb r1, [r5, r0]
+ b _02212DA4
+_02212D7C:
+ ldr r2, [sp, #4]
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #4]
+ add r2, #0x33
+ ldr r3, [sp, #4]
+ ldrh r1, [r1, #0x22]
+ ldrb r2, [r2]
+ ldr r0, [r0, #8]
+ ldr r3, [r3, #0xc]
+ bl MOD09_02213C84
+ add r0, r5, #0
+ bl MOD09_02216314
+ ldr r0, _02212DB4 ; =0x00002079
+ mov r1, #0x19
+ strb r1, [r5, r0]
+ add sp, #8
+ mov r0, #0x11
+ pop {r3, r4, r5, r6, r7, pc}
+_02212DA4:
+ mov r0, #0x18
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02212DAC: .word 0x0000207C
+_02212DB0: .word 0x000005EC
+_02212DB4: .word 0x00002079
+
+ thumb_func_start MOD09_02212DB8
+MOD09_02212DB8: ; 0x02212DB8
+ push {lr}
+ sub sp, #0xc
+ mov r2, #0
+ str r2, [sp]
+ mov r1, #0x10
+ str r1, [sp, #4]
+ mov r1, #0x7a
+ str r2, [sp, #8]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0xa
+ add r3, r1, #0
+ ldr r2, _02212DE0 ; =0x0000FFFF
+ sub r3, #0x12
+ bl FUN_02003210
+ mov r0, #0x1a
+ add sp, #0xc
+ pop {pc}
+ nop
+_02212DE0: .word 0x0000FFFF
+
+ thumb_func_start MOD09_02212DE4
+MOD09_02212DE4: ; 0x02212DE4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x7a
+ add r4, r1, #0
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _02212DFC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02212DFC:
+ add r0, r4, #0
+ bl MOD09_02213190
+ add r0, r4, #0
+ bl MOD09_02216B74
+ add r0, r4, #0
+ bl MOD09_02213DF8
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD09_02212F5C
+ ldr r0, _02212E48 ; =0x00002088
+ ldr r0, [r4, r0]
+ bl MOD09_0221AC28
+ ldr r1, [r4]
+ add r1, #0x32
+ strb r0, [r1]
+ ldr r0, _02212E48 ; =0x00002088
+ ldr r0, [r4, r0]
+ bl MOD09_0221AC1C
+ mov r0, #2
+ bl FUN_02002CF8
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0x36
+ strb r1, [r0]
+ add r0, r5, #0
+ bl FUN_0200621C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_02212E48: .word 0x00002088
+
+ thumb_func_start MOD09_02212E4C
+MOD09_02212E4C: ; 0x02212E4C
+ push {r3, r4, r5, lr}
+ sub sp, #0x80
+ ldr r5, _02212F48 ; =0x0221AED0
+ add r3, sp, #0x70
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ mov r1, #1
+ bl FUN_02016BF4
+ ldr r5, _02212F4C ; =0x0221AF48
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [r3]
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _02212F50 ; =0x0221AF80
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [r3]
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _02212F54 ; =0x0221AF9C
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl FUN_02018744
+ ldr r5, _02212F58 ; =0x0221AF64
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl FUN_02018744
+ ldr r3, [r4]
+ mov r0, #5
+ ldr r3, [r3, #0xc]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #4
+ ldr r3, [r3, #0xc]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl FUN_0201AC68
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl FUN_0201AC68
+ add sp, #0x80
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02212F48: .word 0x0221AED0
+_02212F4C: .word 0x0221AF48
+_02212F50: .word 0x0221AF80
+_02212F54: .word 0x0221AF9C
+_02212F58: .word 0x0221AF64
+
+ thumb_func_start MOD09_02212F5C
+MOD09_02212F5C: ; 0x02212F5C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x1f
+ mov r1, #0
+ bl FUN_0201E74C
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_020178A0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02212F8C
+MOD09_02212F8C: ; 0x02212F8C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ mov r2, #0x79
+ ldr r0, [r0, #0xc]
+ lsl r2, r2, #2
+ str r0, [sp, #0xc]
+ ldr r2, [r5, r2]
+ mov r0, #0x48
+ mov r1, #0x16
+ mov r3, #7
+ bl FUN_0200687C
+ ldr r2, [r5]
+ mov r0, #0x48
+ ldr r2, [r2, #0xc]
+ mov r1, #0x14
+ bl LoadFromNarc_2
+ add r1, sp, #0x10
+ add r4, r0, #0
+ bl FUN_020B0180
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ add r1, #0xc
+ bl MOD09_0221790C
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r2, [r5]
+ mov r0, #0x48
+ ldr r2, [r2, #0xc]
+ mov r1, #0x15
+ bl LoadFromNarc_2
+ add r1, sp, #0x10
+ add r4, r0, #0
+ bl FUN_020B0180
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ add r1, #0xc
+ bl MOD09_02217C38
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ str r0, [sp]
+ lsl r0, r0, #9
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #0x7a
+ ldr r3, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r3, [r3, #0xc]
+ mov r1, #0x48
+ mov r2, #0x17
+ bl FUN_020030E8
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020031FC
+ add r2, r0, #0
+ ldr r0, _02213134 ; =0x00001F60
+ mov r1, #6
+ lsl r1, r1, #6
+ add r1, r2, r1
+ add r0, r5, r0
+ mov r2, #0x40
+ bl memcpy
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xd0
+ str r0, [sp, #8]
+ mov r0, #0x7a
+ ldr r3, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r3, [r3, #0xc]
+ mov r1, #0xe
+ mov r2, #6
+ bl FUN_020030E8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xf0
+ str r0, [sp, #8]
+ ldr r3, [r5]
+ add r0, #0xf8
+ ldr r0, [r5, r0]
+ ldr r3, [r3, #0xc]
+ mov r1, #0xe
+ mov r2, #7
+ bl FUN_020030E8
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_02230E44
+ add r4, r0, #0
+ bl FUN_0200CD60
+ add r1, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ mov r2, #0x79
+ ldr r0, [r0, #0xc]
+ lsl r2, r2, #2
+ str r0, [sp, #0xc]
+ ldr r2, [r5, r2]
+ mov r0, #0x26
+ mov r3, #4
+ bl FUN_0200687C
+ add r0, r4, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ mov r0, #0x7a
+ ldr r3, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r3, [r3, #0xc]
+ mov r1, #0x26
+ bl FUN_020030E8
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020031FC
+ add r6, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x20
+ ldr r0, [r0, #0xc]
+ bl FUN_02016998
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ add r1, r6, r1
+ mov r2, #0x20
+ add r4, r0, #0
+ bl memcpy
+ mov r2, #0x4d
+ lsl r2, r2, #2
+ add r0, r6, r2
+ ldrb r3, [r0]
+ add r1, r4, #0
+ add r1, #0xe
+ strb r3, [r4, #0xe]
+ ldrb r3, [r0, #1]
+ strb r3, [r1, #1]
+ ldrb r3, [r0, #2]
+ strb r3, [r1, #2]
+ ldrb r0, [r0, #3]
+ mov r3, #0xd0
+ strb r0, [r1, #3]
+ add r1, r2, #4
+ add r0, r2, #4
+ ldrb r1, [r6, r1]
+ add r0, r6, r0
+ add r2, #0xb4
+ strb r1, [r4, #6]
+ ldrb r1, [r0, #1]
+ strb r1, [r4, #7]
+ ldrb r1, [r0, #2]
+ strb r1, [r4, #8]
+ ldrb r0, [r0, #3]
+ add r1, r4, #0
+ strb r0, [r4, #9]
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, [r5, r2]
+ mov r2, #1
+ bl FUN_02003054
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02213134: .word 0x00001F60
+
+ thumb_func_start MOD09_02213138
+MOD09_02213138: ; 0x02213138
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r3, [r4]
+ mov r0, #0
+ ldr r3, [r3, #0xc]
+ mov r1, #0x1a
+ mov r2, #3
+ bl FUN_0200A86C
+ ldr r1, _02213180 ; =0x00001FA8
+ mov r2, #0
+ str r0, [r4, r1]
+ ldr r3, [r4]
+ mov r0, #0xf
+ ldr r3, [r3, #0xc]
+ mov r1, #0xe
+ bl FUN_0200B870
+ ldr r1, _02213184 ; =0x00001FA4
+ str r0, [r4, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, #0xc]
+ bl FUN_0200AA80
+ ldr r1, _02213188 ; =0x00001FAC
+ str r0, [r4, r1]
+ ldr r1, [r4]
+ mov r0, #2
+ ldr r1, [r1, #0xc]
+ lsl r0, r0, #8
+ bl FUN_020219F4
+ ldr r1, _0221318C ; =0x00001FB0
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_02213180: .word 0x00001FA8
+_02213184: .word 0x00001FA4
+_02213188: .word 0x00001FAC
+_0221318C: .word 0x00001FB0
+
+ thumb_func_start MOD09_02213190
+MOD09_02213190: ; 0x02213190
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _022131B8 ; =0x00001FA8
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ ldr r0, _022131BC ; =0x00001FA4
+ ldr r0, [r4, r0]
+ bl FUN_0200B990
+ ldr r0, _022131C0 ; =0x00001FAC
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ ldr r0, _022131C4 ; =0x00001FB0
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ nop
+_022131B8: .word 0x00001FA8
+_022131BC: .word 0x00001FA4
+_022131C0: .word 0x00001FAC
+_022131C4: .word 0x00001FB0
+
+ thumb_func_start MOD09_022131C8
+MOD09_022131C8: ; 0x022131C8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_0206B9AC
+ cmp r0, #0
+ bgt _022131E2
+ b _02213476
+_022131E2:
+ ldr r0, [sp, #8]
+ mov r1, #0x50
+ mul r1, r0
+ ldr r0, [sp]
+ str r1, [sp, #4]
+ add r4, r0, r1
+ ldr r0, [r0]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ bl FUN_0206B9B0
+ str r0, [r4, #4]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #8]
+ ldrh r0, [r4, #8]
+ cmp r0, #0
+ bne _0221320C
+ b _0221345A
+_0221320C:
+ ldr r0, [sp, #8]
+ mov r1, #0x50
+ add r5, r0, #0
+ mul r5, r1
+ ldr r0, [sp]
+ mov r1, #0xa4
+ add r4, r0, r5
+ ldr r0, [r4, #4]
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0xa]
+ ldr r0, [r4, #4]
+ mov r1, #0xa5
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0xc]
+ ldr r0, [r4, #4]
+ mov r1, #0xa6
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0xe]
+ ldr r0, [r4, #4]
+ mov r1, #0xa7
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x10]
+ ldr r0, [r4, #4]
+ mov r1, #0xa8
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x12]
+ ldr r0, [r4, #4]
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x14]
+ ldr r0, [r4, #4]
+ mov r1, #0xa3
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x16]
+ ldr r0, [r4, #4]
+ mov r1, #0xb0
+ mov r2, #0
+ bl FUN_020671BC
+ strb r0, [r4, #0x18]
+ ldr r0, [r4, #4]
+ mov r1, #0xb1
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r6, [sp]
+ strb r0, [r4, #0x19]
+ ldr r0, [r4, #4]
+ add r6, #0x1a
+ mov r1, #0xa0
+ mov r2, #0
+ bl FUN_020671BC
+ ldrb r1, [r6, r5]
+ mov r2, #0x7f
+ lsl r0, r0, #0x18
+ bic r1, r2
+ lsr r2, r0, #0x18
+ mov r0, #0x7f
+ and r0, r2
+ orr r0, r1
+ strb r0, [r6, r5]
+ ldr r0, [r4, #4]
+ mov r1, #0xaf
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #1
+ ldrb r1, [r6, r5]
+ bne _022132BC
+ mov r0, #0x80
+ bic r1, r0
+ strb r1, [r6, r5]
+ b _022132C2
+_022132BC:
+ mov r0, #0x80
+ orr r0, r1
+ strb r0, [r6, r5]
+_022132C2:
+ ldr r0, [sp]
+ add r4, r0, r5
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ add r6, #0x1b
+ bl FUN_020689E0
+ ldrb r1, [r6, r5]
+ mov r2, #7
+ bic r1, r2
+ mov r2, #7
+ and r0, r2
+ orr r0, r1
+ strb r0, [r6, r5]
+ ldr r0, [r4, #4]
+ bl FUN_0207C2D4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1c
+ ldrb r1, [r6, r5]
+ mov r2, #0x78
+ lsr r0, r0, #0x19
+ bic r1, r2
+ orr r0, r1
+ strb r0, [r6, r5]
+ ldr r0, [r4, #4]
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1f
+ ldrb r1, [r6, r5]
+ mov r2, #0x80
+ lsr r0, r0, #0x18
+ bic r1, r2
+ orr r0, r1
+ strb r0, [r6, r5]
+ ldr r0, [r4, #4]
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x1c]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x1e]
+ ldr r0, [r4, #4]
+ mov r1, #8
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r6, [sp]
+ str r0, [r4, #0x20]
+ add r6, #0x1a
+ ldrb r1, [r6, r5]
+ ldrh r0, [r4, #8]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x19
+ bl FUN_02068758
+ str r0, [r4, #0x24]
+ ldrb r0, [r6, r5]
+ lsl r0, r0, #0x19
+ lsr r1, r0, #0x19
+ cmp r1, #0x64
+ bne _0221335A
+ ldr r0, [sp]
+ add r4, r0, r5
+ ldr r0, [r4, #0x24]
+ b _02213366
+_0221335A:
+ ldr r0, [sp]
+ add r1, r1, #1
+ add r4, r0, r5
+ ldrh r0, [r4, #8]
+ bl FUN_02068758
+_02213366:
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #4]
+ mov r1, #0x13
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r4, #0
+ add r1, #0x2c
+ strb r0, [r1]
+ ldr r0, [r4, #4]
+ mov r1, #0x14
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r4, #0
+ add r1, #0x2d
+ strb r0, [r1]
+ ldr r0, [r4, #4]
+ mov r1, #0x15
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r4, #0
+ add r1, #0x2e
+ strb r0, [r1]
+ ldr r0, [r4, #4]
+ mov r1, #0x16
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r4, #0
+ add r1, #0x2f
+ strb r0, [r1]
+ ldr r0, [r4, #4]
+ mov r1, #0x17
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r4, #0
+ add r1, #0x30
+ strb r0, [r1]
+ ldr r0, [r4, #4]
+ mov r1, #0xa1
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r4, #0
+ add r1, #0x31
+ strb r0, [r1]
+ ldr r0, [r4, #4]
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020671BC
+ add r4, #0x32
+ strb r0, [r4]
+ ldr r1, [sp]
+ ldr r0, [sp, #4]
+ add r1, #0x34
+ add r7, r1, r0
+ ldr r1, [sp]
+ mov r4, #0
+ add r6, r1, r0
+_022133E4:
+ lsl r0, r4, #3
+ add r1, r4, #0
+ str r0, [sp, #0xc]
+ add r5, r7, r0
+ ldr r0, [r6, #4]
+ add r1, #0x36
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, [sp, #0xc]
+ strh r0, [r7, r1]
+ add r0, r1, #0
+ ldrh r0, [r7, r0]
+ cmp r0, #0
+ beq _02213450
+ add r1, r4, #0
+ ldr r0, [r6, #4]
+ add r1, #0x3a
+ mov r2, #0
+ bl FUN_020671BC
+ strb r0, [r5, #2]
+ add r1, r4, #0
+ ldr r0, [r6, #4]
+ add r1, #0x3e
+ mov r2, #0
+ bl FUN_020671BC
+ strb r0, [r5, #3]
+ ldrh r0, [r5]
+ ldrb r1, [r5, #3]
+ bl FUN_0206AB30
+ strb r0, [r5, #3]
+ ldrh r0, [r5]
+ mov r1, #3
+ bl FUN_0206AB18
+ strb r0, [r5, #4]
+ ldrh r0, [r5]
+ mov r1, #1
+ bl FUN_0206AB18
+ strb r0, [r5, #5]
+ ldrh r0, [r5]
+ mov r1, #4
+ bl FUN_0206AB18
+ strb r0, [r5, #6]
+ ldrh r0, [r5]
+ mov r1, #2
+ bl FUN_0206AB18
+ strb r0, [r5, #7]
+_02213450:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #4
+ blo _022133E4
+_0221345A:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_0206B9AC
+ ldr r1, [sp, #8]
+ cmp r1, r0
+ bge _02213476
+ b _022131E2
+_02213476:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_0221347C
+MOD09_0221347C: ; 0x0221347C
+ push {r3, r4, r5, lr}
+ ldr r1, _022134EC ; =0x0221AFB8
+ add r4, r0, #0
+ bl MOD09_02213614
+ add r5, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ bne _022134C8
+ ldr r0, _022134F0 ; =0x00002088
+ ldr r0, [r4, r0]
+ bl MOD09_0221AD30
+ add r5, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ bne _022134A6
+ mov r5, #6
+ b _022134B0
+_022134A6:
+ add r0, r0, #1
+ cmp r5, r0
+ bne _022134B0
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_022134B0:
+ cmp r5, #6
+ beq _022134C0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD09_02213620
+ cmp r0, #0
+ beq _022134E6
+_022134C0:
+ ldr r0, [r4]
+ strb r5, [r0, #0x11]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022134C8:
+ cmp r5, #6
+ beq _022134D8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD09_02213620
+ cmp r0, #0
+ beq _022134E6
+_022134D8:
+ ldr r0, [r4]
+ strb r5, [r0, #0x11]
+ add r0, r4, #0
+ bl MOD09_022178E4
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022134E6:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022134EC: .word 0x0221AFB8
+_022134F0: .word 0x00002088
+
+ thumb_func_start MOD09_022134F4
+MOD09_022134F4: ; 0x022134F4
+ push {r3, r4, r5, lr}
+ ldr r1, _02213534 ; =0x0221AEF0
+ add r5, r0, #0
+ bl MOD09_02213614
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02213528
+ ldr r0, _02213538 ; =0x00002088
+ ldr r0, [r5, r0]
+ bl MOD09_0221AD30
+ add r4, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0221351E
+ mov r4, #3
+ b _0221352E
+_0221351E:
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0221352E
+ mov r0, #0xff
+ pop {r3, r4, r5, pc}
+_02213528:
+ add r0, r5, #0
+ bl MOD09_022178E4
+_0221352E:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02213534: .word 0x0221AEF0
+_02213538: .word 0x00002088
+
+ thumb_func_start MOD09_0221353C
+MOD09_0221353C: ; 0x0221353C
+ push {r3, r4, r5, lr}
+ ldr r1, _0221357C ; =0x0221AF04
+ add r5, r0, #0
+ bl MOD09_02213614
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02213570
+ ldr r0, _02213580 ; =0x00002088
+ ldr r0, [r5, r0]
+ bl MOD09_0221AD30
+ add r4, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _02213566
+ mov r4, #3
+ b _02213576
+_02213566:
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02213576
+ mov r0, #0xff
+ pop {r3, r4, r5, pc}
+_02213570:
+ add r0, r5, #0
+ bl MOD09_022178E4
+_02213576:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221357C: .word 0x0221AF04
+_02213580: .word 0x00002088
+
+ thumb_func_start MOD09_02213584
+MOD09_02213584: ; 0x02213584
+ push {r3, r4, r5, lr}
+ ldr r1, _022135C4 ; =0x0221AFF8
+ add r5, r0, #0
+ bl MOD09_02213614
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _022135B8
+ ldr r0, _022135C8 ; =0x00002088
+ ldr r0, [r5, r0]
+ bl MOD09_0221AD30
+ add r4, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _022135AE
+ mov r4, #7
+ b _022135BE
+_022135AE:
+ add r0, r0, #1
+ cmp r4, r0
+ bne _022135BE
+ mov r0, #0xff
+ pop {r3, r4, r5, pc}
+_022135B8:
+ add r0, r5, #0
+ bl MOD09_022178E4
+_022135BE:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022135C4: .word 0x0221AFF8
+_022135C8: .word 0x00002088
+
+ thumb_func_start MOD09_022135CC
+MOD09_022135CC: ; 0x022135CC
+ push {r3, r4, r5, lr}
+ ldr r1, _0221360C ; =0x0221AF18
+ add r5, r0, #0
+ bl MOD09_02213614
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02213600
+ ldr r0, _02213610 ; =0x00002088
+ ldr r0, [r5, r0]
+ bl MOD09_0221AD30
+ add r4, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _022135F6
+ mov r4, #4
+ b _02213606
+_022135F6:
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02213606
+ mov r0, #0xff
+ pop {r3, r4, r5, pc}
+_02213600:
+ add r0, r5, #0
+ bl MOD09_022178E4
+_02213606:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221360C: .word 0x0221AF18
+_02213610: .word 0x00002088
+
+ thumb_func_start MOD09_02213614
+MOD09_02213614: ; 0x02213614
+ ldr r3, _0221361C ; =0x02020989
+ add r0, r1, #0
+ bx r3
+ nop
+_0221361C: .word 0x02020989
+
+ thumb_func_start MOD09_02213620
+MOD09_02213620: ; 0x02213620
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0x50
+ add r5, r0, #0
+ mul r1, r4
+ add r1, r5, r1
+ ldrh r1, [r1, #8]
+ cmp r1, #0
+ bne _02213636
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02213636:
+ cmp r4, #0
+ beq _02213650
+ bl MOD09_02213B9C
+ cmp r0, #0
+ bne _0221364C
+ add r0, r5, #0
+ bl MOD09_02213BBC
+ cmp r0, #0
+ beq _02213654
+_0221364C:
+ cmp r4, #1
+ bne _02213654
+_02213650:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02213654:
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD09_02213658
+MOD09_02213658: ; 0x02213658
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ add r7, r2, #0
+ add r6, r4, #0
+ bl MOD09_02213BBC
+ cmp r0, #1
+ bne _022136D0
+ ldr r2, _0221370C ; =0x0221AEC8
+ add r1, sp, #0
+ ldrb r3, [r2]
+ add r0, sp, #0
+ mov r4, #0
+ strb r3, [r1]
+ ldrb r3, [r2, #1]
+ strb r3, [r1, #1]
+ ldrb r3, [r2, #2]
+ strb r3, [r1, #2]
+ ldrb r3, [r2, #3]
+ strb r3, [r1, #3]
+ ldrb r3, [r2, #4]
+ ldrb r2, [r2, #5]
+ strb r3, [r1, #4]
+ strb r2, [r1, #5]
+_0221368C:
+ ldrb r1, [r0]
+ cmp r6, r1
+ beq _0221369A
+ add r4, r4, #1
+ add r0, r0, #1
+ cmp r4, #6
+ blt _0221368C
+_0221369A:
+ add r4, r4, r7
+ bpl _022136A2
+ mov r4, #5
+ b _022136A8
+_022136A2:
+ cmp r4, #6
+ blt _022136A8
+ mov r4, #0
+_022136A8:
+ add r0, sp, #0
+ ldrb r1, [r0, r4]
+ cmp r6, r1
+ beq _02213704
+ add r0, r5, #0
+ bl MOD09_02213620
+ cmp r0, #0
+ beq _0221369A
+ add r0, sp, #0
+ ldrb r0, [r0, r4]
+ mov r1, #0x50
+ mul r1, r0
+ add r1, r5, r1
+ ldrb r1, [r1, #0x1b]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1f
+ bne _0221369A
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_022136D0:
+ add r4, r4, r7
+ bpl _022136D8
+ mov r4, #5
+ b _022136DE
+_022136D8:
+ cmp r4, #6
+ blt _022136DE
+ mov r4, #0
+_022136DE:
+ cmp r6, r4
+ beq _02213704
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02213620
+ cmp r0, #0
+ beq _022136D0
+ mov r0, #0x50
+ mul r0, r4
+ add r0, r5, r0
+ ldrb r0, [r0, #0x1b]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _022136D0
+ lsl r0, r4, #0x18
+ add sp, #8
+ lsr r0, r0, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_02213704:
+ mov r0, #0xff
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221370C: .word 0x0221AEC8
+
+ thumb_func_start MOD09_02213710
+MOD09_02213710: ; 0x02213710
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ cmp r1, #2
+ bne _0221378E
+ ldr r0, [r6]
+ add r2, r6, #4
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r0, r2, r0
+ ldrb r1, [r0, #0x16]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x19
+ cmp r1, #0x64
+ bhs _0221373A
+ ldr r2, [r0, #0x20]
+ ldr r1, [r0, #0x24]
+ ldr r0, [r0, #0x1c]
+ sub r1, r1, r2
+ sub r0, r0, r2
+ b _0221373E
+_0221373A:
+ mov r1, #0
+ add r0, r1, #0
+_0221373E:
+ mov r2, #0x40
+ bl FUN_02079A0C
+ add r4, r0, #0
+ mov r5, #0
+ mov r7, #0x1e
+_0221374A:
+ cmp r4, #8
+ blo _02213752
+ add r1, r7, #0
+ b _0221375A
+_02213752:
+ add r0, r4, #0
+ add r0, #0x16
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+_0221375A:
+ add r2, r5, #0
+ add r2, #0xa
+ lsl r2, r2, #0x10
+ add r0, r6, #0
+ lsr r2, r2, #0x10
+ mov r3, #8
+ bl MOD09_02213790
+ cmp r4, #8
+ bhs _02213772
+ mov r4, #0
+ b _02213778
+_02213772:
+ sub r4, #8
+ lsl r0, r4, #0x18
+ lsr r4, r0, #0x18
+_02213778:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #8
+ blo _0221374A
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r1, #7
+ bl FUN_0201AC68
+_0221378E:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD09_02213790
+MOD09_02213790: ; 0x02213790
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ lsl r1, r3, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ add r4, r2, #0
+ str r1, [sp, #8]
+ mov r1, #0x10
+ str r1, [sp, #0xc]
+ mov r1, #0x79
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ lsl r3, r4, #0x18
+ mov r1, #7
+ add r2, r5, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_022137C0
+MOD09_022137C0: ; 0x022137C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x10
+ lsl r6, r2, #1
+ add r4, r1, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x79
+ add r7, r6, #2
+ lsl r0, r0, #2
+ lsl r3, r7, #0x18
+ ldr r0, [r5, r0]
+ mov r1, #7
+ add r2, r4, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ mov r0, #0x79
+ add r6, r6, #3
+ lsl r0, r0, #2
+ add r2, r4, #1
+ lsl r2, r2, #0x10
+ lsl r3, r6, #0x18
+ ldr r0, [r5, r0]
+ mov r1, #7
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ mov r0, #0x79
+ add r2, r4, #0
+ lsl r0, r0, #2
+ add r2, #0x20
+ lsl r2, r2, #0x10
+ lsl r3, r7, #0x18
+ ldr r0, [r5, r0]
+ mov r1, #7
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ mov r0, #0x79
+ lsl r0, r0, #2
+ add r4, #0x21
+ lsl r2, r4, #0x10
+ lsl r3, r6, #0x18
+ ldr r0, [r5, r0]
+ mov r1, #7
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD09_02213860
+MOD09_02213860: ; 0x02213860
+ push {r4, r5, r6, lr}
+ ldr r6, _02213880 ; =0x00000125
+ add r5, r0, #0
+ mov r4, #0
+_02213868:
+ lsl r2, r4, #0x18
+ add r0, r5, #0
+ add r1, r6, #0
+ lsr r2, r2, #0x18
+ bl MOD09_022137C0
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #6
+ blo _02213868
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02213880: .word 0x00000125
+
+ thumb_func_start MOD09_02213884
+MOD09_02213884: ; 0x02213884
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ cmp r1, #9
+ bne _022138EE
+ bl MOD09_02213860
+ ldr r1, [r5]
+ add r0, r1, #0
+ add r0, #0x34
+ ldrb r2, [r0]
+ cmp r2, #4
+ bhs _022138AC
+ ldrb r1, [r1, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r1, r5, r0
+ lsl r0, r2, #3
+ add r0, r1, r0
+ ldrh r0, [r0, #0x34]
+ b _022138AE
+_022138AC:
+ ldrh r0, [r1, #0x24]
+_022138AE:
+ mov r1, #0xa
+ bl FUN_0206AB18
+ bl FUN_02083114
+ mov r1, #0xa
+ bl _s32_div_f
+ lsl r0, r0, #0x18
+ asr r6, r0, #0x18
+ mov r4, #0
+ cmp r6, #0
+ ble _022138E2
+ mov r7, #5
+ lsl r7, r7, #6
+_022138CC:
+ lsl r2, r4, #0x18
+ add r0, r5, #0
+ add r1, r7, #0
+ lsr r2, r2, #0x18
+ bl MOD09_022137C0
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r6
+ blt _022138CC
+_022138E2:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #7
+ bl FUN_0201AC68
+_022138EE:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD09_022138F0
+MOD09_022138F0: ; 0x022138F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD09_02213968
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #4
+ mov r2, #0
+ bl FUN_0201878C
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_0201878C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02216D80
+ add r0, r5, #0
+ bl MOD09_02213DE0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02213CF4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02213E28
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02213710
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02213884
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02217838
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_022182E8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02218640
+ ldr r0, _02213964 ; =0x0000207A
+ strb r4, [r5, r0]
+ pop {r3, r4, r5, pc}
+ nop
+_02213964: .word 0x0000207A
+
+ thumb_func_start MOD09_02213968
+MOD09_02213968: ; 0x02213968
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r2, _022139D0 ; =0x0221B01C
+ add r5, r0, #0
+ lsl r0, r1, #3
+ mov r4, #0
+ add r6, r2, r0
+_02213976:
+ ldr r2, [r5]
+ ldr r1, [r6]
+ ldr r2, [r2, #0xc]
+ mov r0, #0x48
+ bl LoadFromNarc_2
+ add r1, sp, #0xc
+ add r7, r0, #0
+ bl FUN_020B0180
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0x79
+ lsl r0, r0, #2
+ add r1, r4, #6
+ ldr r2, [sp, #0xc]
+ lsl r1, r1, #0x18
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x18
+ add r2, #0xc
+ mov r3, #0
+ bl FUN_02018148
+ mov r0, #0x79
+ lsl r0, r0, #2
+ add r1, r4, #6
+ lsl r1, r1, #0x18
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x18
+ bl FUN_0201AC68
+ add r0, r7, #0
+ bl FUN_02016A18
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r4, #2
+ blo _02213976
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022139D0: .word 0x0221B01C
+
+ thumb_func_start MOD09_022139D4
+MOD09_022139D4: ; 0x022139D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r2, #0x50
+ ldrb r1, [r1, #0x11]
+ add r3, r5, #4
+ mul r2, r1
+ add r4, r3, r2
+ bl MOD09_02213BDC
+ cmp r0, #1
+ bne _02213A30
+ ldr r0, _02213B70 ; =0x00001FA8
+ mov r1, #0x50
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ add r4, r0, #0
+ ldr r0, [r1, #8]
+ ldr r1, [r1, #0x28]
+ bl FUN_022302BC
+ add r1, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_02230188
+ add r2, r0, #0
+ ldr r0, _02213B74 ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200B144
+ ldr r1, _02213B74 ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02213A30:
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0
+ bne _02213A6C
+ ldr r0, _02213B70 ; =0x00001FA8
+ mov r1, #0x4d
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r0, [r4]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _02213B74 ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _02213B74 ; =0x00001FAC
+ add r2, r6, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02213A6C:
+ ldr r2, [r5]
+ ldrb r0, [r2, #0x11]
+ add r0, r2, r0
+ add r0, #0x2c
+ ldrb r1, [r0]
+ ldrb r0, [r2, #0x14]
+ cmp r0, r1
+ beq _02213A82
+ ldrb r0, [r2, #0x15]
+ cmp r0, r1
+ bne _02213AB8
+_02213A82:
+ ldr r0, _02213B70 ; =0x00001FA8
+ mov r1, #0x4c
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r0, [r4]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _02213B74 ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _02213B74 ; =0x00001FAC
+ add r2, r6, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02213AB8:
+ add r0, r5, #0
+ bl MOD09_02213B7C
+ cmp r0, #1
+ bne _02213AD4
+ ldr r2, _02213B70 ; =0x00001FA8
+ mov r1, #0x4f
+ ldr r0, [r5, r2]
+ add r2, #8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02213AD4:
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x12]
+ cmp r1, #6
+ beq _02213B24
+ ldrb r4, [r2, #0x11]
+ add r0, r2, r4
+ add r0, #0x2c
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _02213B24
+ ldr r0, _02213B70 ; =0x00001FA8
+ mov r1, #0x5d
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r6, r0, #0
+ mov r0, #0x50
+ mul r0, r4
+ add r0, r5, r0
+ ldr r0, [r0, #4]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _02213B74 ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _02213B74 ; =0x00001FAC
+ add r2, r6, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02213B24:
+ ldrh r0, [r2, #0x24]
+ cmp r0, #0
+ beq _02213B6C
+ ldr r1, _02213B78 ; =0x00002076
+ mov r0, #0x50
+ ldrb r2, [r5, r1]
+ sub r1, #0xce
+ add r4, r5, #4
+ add r6, r2, #0
+ mul r6, r0
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ bl FUN_0200A914
+ add r7, r0, #0
+ ldr r0, [r4, r6]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _02213B74 ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _02213B74 ; =0x00001FAC
+ add r2, r7, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r7, #0
+ bl FUN_02021A20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02213B6C:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02213B70: .word 0x00001FA8
+_02213B74: .word 0x00001FAC
+_02213B78: .word 0x00002076
+
+ thumb_func_start MOD09_02213B7C
+MOD09_02213B7C: ; 0x02213B7C
+ ldr r1, [r0]
+ ldrb r2, [r1, #0x11]
+ mov r1, #0x50
+ mul r1, r2
+ add r0, r0, r1
+ ldrb r0, [r0, #0x1b]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ beq _02213B92
+ mov r0, #1
+ b _02213B94
+_02213B92:
+ mov r0, #0
+_02213B94:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD09_02213B9C
+MOD09_02213B9C: ; 0x02213B9C
+ push {r3, lr}
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ bl FUN_0222FF74
+ cmp r0, #0x4a
+ beq _02213BB8
+ cmp r0, #0x4b
+ beq _02213BB8
+ mov r1, #0x12
+ tst r0, r1
+ beq _02213BB8
+ mov r0, #1
+ pop {r3, pc}
+_02213BB8:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD09_02213BBC
+MOD09_02213BBC: ; 0x02213BBC
+ push {r3, lr}
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ bl FUN_0222FF74
+ cmp r0, #0x4a
+ beq _02213BD8
+ cmp r0, #0x4b
+ beq _02213BD8
+ mov r1, #8
+ tst r0, r1
+ beq _02213BD8
+ mov r0, #1
+ pop {r3, pc}
+_02213BD8:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD09_02213BDC
+MOD09_02213BDC: ; 0x02213BDC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD09_02213BBC
+ cmp r0, #1
+ bne _02213C04
+ ldr r0, _02213C08 ; =0x0000208F
+ ldrb r0, [r5, r0]
+ cmp r0, #2
+ bne _02213BFC
+ mov r0, #1
+ add r1, r4, #0
+ tst r1, r0
+ beq _02213C04
+ pop {r3, r4, r5, pc}
+_02213BFC:
+ mov r0, #1
+ add r1, r4, #0
+ tst r1, r0
+ beq _02213C06
+_02213C04:
+ mov r0, #0
+_02213C06:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02213C08: .word 0x0000208F
+
+ thumb_func_start MOD09_02213C0C
+MOD09_02213C0C: ; 0x02213C0C
+ ldr r2, [r0]
+ add r1, r2, #0
+ add r1, #0x34
+ ldrb r3, [r1]
+ cmp r3, #4
+ bne _02213C1C
+ ldrh r0, [r2, #0x24]
+ b _02213C2A
+_02213C1C:
+ ldrb r2, [r2, #0x11]
+ mov r1, #0x50
+ mul r1, r2
+ add r1, r0, r1
+ lsl r0, r3, #3
+ add r0, r1, r0
+ ldrh r0, [r0, #0x34]
+_02213C2A:
+ ldr r3, _02213C30 ; =0x0206EA55
+ bx r3
+ nop
+_02213C30: .word 0x0206EA55
+
+ thumb_func_start MOD09_02213C34
+MOD09_02213C34: ; 0x02213C34
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02213C64 ; =0x00002020
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_0200C644
+ ldr r0, _02213C68 ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, #0xa0
+ bl FUN_0201958C
+ ldr r0, _02213C68 ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, #0x60
+ bl FUN_0201958C
+ ldr r0, _02213C68 ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, #0x70
+ bl FUN_0201958C
+ pop {r4, pc}
+ nop
+_02213C64: .word 0x00002020
+_02213C68: .word 0x00002070
+
+ thumb_func_start MOD09_02213C6C
+MOD09_02213C6C: ; 0x02213C6C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD09_02213860
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #7
+ bl FUN_0201AC68
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02213C84
+MOD09_02213C84: ; 0x02213C84
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r4, #0x41
+ beq _02213CA8
+ cmp r4, #0x43
+ beq _02213CA8
+ cmp r4, #0x42
+ beq _02213CA8
+ bl FUN_02230214
+ add r1, r4, #0
+ mov r2, #1
+ add r3, r7, #0
+ bl FUN_0206EDD4
+_02213CA8:
+ add r0, r5, #0
+ bl FUN_02230218
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_0206F1E4
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD09_02213CB8
+MOD09_02213CB8: ; 0x02213CB8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, _02213CE8 ; =0x00002050
+ ldr r4, _02213CEC ; =0x0221B06C
+ mov r6, #0
+ add r5, r7, r0
+_02213CC4:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ add r1, r5, #0
+ add r2, r4, #0
+ bl FUN_02019150
+ add r6, r6, #1
+ add r4, #8
+ add r5, #0x10
+ cmp r6, #2
+ blo _02213CC4
+ ldr r1, _02213CF0 ; =0x0000207A
+ add r0, r7, #0
+ ldrb r1, [r7, r1]
+ bl MOD09_02213CF4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02213CE8: .word 0x00002050
+_02213CEC: .word 0x0221B06C
+_02213CF0: .word 0x0000207A
+
+ thumb_func_start MOD09_02213CF4
+MOD09_02213CF4: ; 0x02213CF4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ cmp r1, #9
+ bhi _02213D74
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02213D08: ; jump table
+ .short _02213D1C - _02213D08 - 2 ; case 0
+ .short _02213D26 - _02213D08 - 2 ; case 1
+ .short _02213D30 - _02213D08 - 2 ; case 2
+ .short _02213D3A - _02213D08 - 2 ; case 3
+ .short _02213D44 - _02213D08 - 2 ; case 4
+ .short _02213D4E - _02213D08 - 2 ; case 5
+ .short _02213D58 - _02213D08 - 2 ; case 6
+ .short _02213D62 - _02213D08 - 2 ; case 7
+ .short _02213D58 - _02213D08 - 2 ; case 8
+ .short _02213D6C - _02213D08 - 2 ; case 9
+_02213D1C:
+ ldr r0, _02213DB4 ; =0x00002074
+ mov r1, #6
+ ldr r6, _02213DB8 ; =0x0221B120
+ strb r1, [r4, r0]
+ b _02213D74
+_02213D26:
+ ldr r0, _02213DB4 ; =0x00002074
+ mov r1, #4
+ ldr r6, _02213DBC ; =0x0221B0A8
+ strb r1, [r4, r0]
+ b _02213D74
+_02213D30:
+ ldr r0, _02213DB4 ; =0x00002074
+ mov r1, #0x23
+ ldr r6, _02213DC0 ; =0x0221B2C8
+ strb r1, [r4, r0]
+ b _02213D74
+_02213D3A:
+ ldr r0, _02213DB4 ; =0x00002074
+ mov r1, #0xb
+ ldr r6, _02213DC4 ; =0x0221B188
+ strb r1, [r4, r0]
+ b _02213D74
+_02213D44:
+ ldr r0, _02213DB4 ; =0x00002074
+ mov r1, #0x11
+ ldr r6, _02213DC8 ; =0x0221B240
+ strb r1, [r4, r0]
+ b _02213D74
+_02213D4E:
+ ldr r0, _02213DB4 ; =0x00002074
+ mov r1, #5
+ ldr r6, _02213DCC ; =0x0221B0C8
+ strb r1, [r4, r0]
+ b _02213D74
+_02213D58:
+ ldr r0, _02213DB4 ; =0x00002074
+ mov r1, #6
+ ldr r6, _02213DD0 ; =0x0221B0F0
+ strb r1, [r4, r0]
+ b _02213D74
+_02213D62:
+ ldr r0, _02213DB4 ; =0x00002074
+ mov r1, #0xc
+ ldr r6, _02213DD4 ; =0x0221B1E0
+ strb r1, [r4, r0]
+ b _02213D74
+_02213D6C:
+ ldr r0, _02213DB4 ; =0x00002074
+ mov r1, #7
+ ldr r6, _02213DD8 ; =0x0221B150
+ strb r1, [r4, r0]
+_02213D74:
+ ldr r1, _02213DB4 ; =0x00002074
+ ldr r0, [r4]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0, #0xc]
+ bl FUN_02018FF4
+ ldr r1, _02213DDC ; =0x00002070
+ mov r5, #0
+ str r0, [r4, r1]
+ add r0, r1, #4
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bls _02213DB2
+ add r7, r1, #4
+_02213D90:
+ ldr r1, _02213DDC ; =0x00002070
+ mov r0, #0x79
+ ldr r2, [r4, r1]
+ lsl r0, r0, #2
+ lsl r1, r5, #4
+ add r1, r2, r1
+ lsl r2, r5, #3
+ ldr r0, [r4, r0]
+ add r2, r6, r2
+ bl FUN_02019150
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldrb r0, [r4, r7]
+ cmp r5, r0
+ blo _02213D90
+_02213DB2:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02213DB4: .word 0x00002074
+_02213DB8: .word 0x0221B120
+_02213DBC: .word 0x0221B0A8
+_02213DC0: .word 0x0221B2C8
+_02213DC4: .word 0x0221B188
+_02213DC8: .word 0x0221B240
+_02213DCC: .word 0x0221B0C8
+_02213DD0: .word 0x0221B0F0
+_02213DD4: .word 0x0221B1E0
+_02213DD8: .word 0x0221B150
+_02213DDC: .word 0x00002070
+
+ thumb_func_start MOD09_02213DE0
+MOD09_02213DE0: ; 0x02213DE0
+ ldr r1, _02213DF0 ; =0x00002070
+ add r2, r0, #0
+ ldr r0, [r2, r1]
+ add r1, r1, #4
+ ldr r3, _02213DF4 ; =0x020191A5
+ ldrb r1, [r2, r1]
+ bx r3
+ nop
+_02213DF0: .word 0x00002070
+_02213DF4: .word 0x020191A5
+
+ thumb_func_start MOD09_02213DF8
+MOD09_02213DF8: ; 0x02213DF8
+ push {r3, r4, r5, lr}
+ ldr r1, _02213E20 ; =0x00002070
+ add r5, r0, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldrb r1, [r5, r1]
+ bl FUN_020191A4
+ ldr r0, _02213E24 ; =0x00002050
+ mov r4, #0
+ add r5, r5, r0
+_02213E0E:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #2
+ blo _02213E0E
+ pop {r3, r4, r5, pc}
+ nop
+_02213E20: .word 0x00002070
+_02213E24: .word 0x00002050
+
+ thumb_func_start MOD09_02213E28
+MOD09_02213E28: ; 0x02213E28
+ push {r3, lr}
+ cmp r1, #9
+ bhi _02213E82
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02213E3A: ; jump table
+ .short _02213E4E - _02213E3A - 2 ; case 0
+ .short _02213E54 - _02213E3A - 2 ; case 1
+ .short _02213E5A - _02213E3A - 2 ; case 2
+ .short _02213E60 - _02213E3A - 2 ; case 3
+ .short _02213E66 - _02213E3A - 2 ; case 4
+ .short _02213E6C - _02213E3A - 2 ; case 5
+ .short _02213E72 - _02213E3A - 2 ; case 6
+ .short _02213E78 - _02213E3A - 2 ; case 7
+ .short _02213E72 - _02213E3A - 2 ; case 8
+ .short _02213E7E - _02213E3A - 2 ; case 9
+_02213E4E:
+ bl MOD09_022155D0
+ pop {r3, pc}
+_02213E54:
+ bl MOD09_022156FC
+ pop {r3, pc}
+_02213E5A:
+ bl MOD09_02215A2C
+ pop {r3, pc}
+_02213E60:
+ bl MOD09_022158EC
+ pop {r3, pc}
+_02213E66:
+ bl MOD09_02215C44
+ pop {r3, pc}
+_02213E6C:
+ bl MOD09_0221609C
+ pop {r3, pc}
+_02213E72:
+ bl MOD09_02215DA8
+ pop {r3, pc}
+_02213E78:
+ bl MOD09_02215ED0
+ pop {r3, pc}
+_02213E7E:
+ bl MOD09_022161B0
+_02213E82:
+ pop {r3, pc}
+
+ thumb_func_start MOD09_02213E84
+MOD09_02213E84: ; 0x02213E84
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r6, r0, #0
+ ldr r0, _02214014 ; =0x00002070
+ str r3, [sp, #0x14]
+ ldr r5, [r6, r0]
+ lsl r4, r1, #4
+ ldr r0, [sp, #0x14]
+ mov r1, #0x50
+ mul r1, r0
+ add r7, r6, #4
+ add r0, r7, r1
+ str r1, [sp, #0x24]
+ ldr r1, [r6]
+ str r0, [sp, #0x20]
+ ldr r1, [r1, #0xc]
+ mov r0, #0xc
+ str r2, [sp, #0x10]
+ bl FUN_020219F4
+ ldr r1, [sp, #0x14]
+ str r0, [sp, #0x1c]
+ ldr r0, _02214018 ; =0x00001FA8
+ lsl r2, r1, #2
+ ldr r1, _0221401C ; =0x0221B090
+ ldr r0, [r6, r0]
+ ldr r1, [r1, r2]
+ bl FUN_0200A914
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x24]
+ ldr r0, [r7, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _02214020 ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r6, r0]
+ bl FUN_0200ACF8
+ ldr r0, _02214020 ; =0x00001FAC
+ ldr r1, [sp, #0x1c]
+ ldr r0, [r6, r0]
+ ldr r2, [sp, #0x18]
+ bl FUN_0200B7B8
+ ldr r0, [sp, #0x10]
+ add r3, sp, #0x38
+ cmp r0, #0
+ bne _02213F06
+ ldrb r7, [r3, #0x14]
+ mov r0, #0xff
+ ldr r1, [sp, #0x10]
+ str r7, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02214024 ; =0x000F0E00
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r3, [r3, #0x10]
+ add r0, r5, r4
+ bl FUN_0201BDE0
+ b _02213F22
+_02213F06:
+ ldrb r7, [r3, #0x14]
+ mov r0, #0xff
+ ldr r1, [sp, #0x10]
+ str r7, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02214028 ; =0x00070809
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r3, [r3, #0x10]
+ add r0, r5, r4
+ bl FUN_0201BDE0
+_02213F22:
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x20]
+ ldrb r0, [r0, #0x16]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _02214008
+ ldr r0, [sp, #0x20]
+ ldrb r0, [r0, #0x17]
+ lsl r1, r0, #0x18
+ lsr r1, r1, #0x1f
+ bne _02214008
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1d
+ bne _02213FA6
+ ldr r0, _02214018 ; =0x00001FA8
+ mov r1, #0x10
+ ldr r0, [r6, r0]
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r5, r4
+ bl FUN_0201AB0C
+ str r0, [sp, #0x28]
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldr r1, [sp, #0x28]
+ str r7, [sp]
+ lsl r1, r1, #3
+ sub r3, r1, r0
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ bne _02213F8A
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0221402C ; =0x00070800
+ mov r1, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ add r2, r6, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ b _02213F9E
+_02213F8A:
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214030 ; =0x000A0B00
+ mov r1, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ add r2, r6, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+_02213F9E:
+ add r0, r6, #0
+ bl FUN_02021A20
+ b _02214008
+_02213FA6:
+ cmp r0, #1
+ bne _02214008
+ ldr r0, _02214018 ; =0x00001FA8
+ mov r1, #0x11
+ ldr r0, [r6, r0]
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r5, r4
+ bl FUN_0201AB0C
+ str r0, [sp, #0x2c]
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldr r1, [sp, #0x2c]
+ str r7, [sp]
+ lsl r1, r1, #3
+ sub r3, r1, r0
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ bne _02213FEE
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0xc1
+ lsl r0, r0, #0xa
+ str r0, [sp, #8]
+ mov r1, #0
+ add r0, r5, r4
+ add r2, r6, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ b _02214002
+_02213FEE:
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214034 ; =0x000C0D00
+ mov r1, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ add r2, r6, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+_02214002:
+ add r0, r6, #0
+ bl FUN_02021A20
+_02214008:
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02214014: .word 0x00002070
+_02214018: .word 0x00001FA8
+_0221401C: .word 0x0221B090
+_02214020: .word 0x00001FAC
+_02214024: .word 0x000F0E00
+_02214028: .word 0x00070809
+_0221402C: .word 0x00070800
+_02214030: .word 0x000A0B00
+_02214034: .word 0x000C0D00
+
+ thumb_func_start MOD09_02214038
+MOD09_02214038: ; 0x02214038
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0221407C ; =0x00002070
+ lsl r4, r1, #4
+ ldr r1, [r5, r0]
+ add r3, #8
+ add r1, r1, r4
+ str r1, [sp, #4]
+ str r3, [sp, #8]
+ add r1, sp, #0x10
+ ldrb r1, [r1, #0x10]
+ mov r3, #0x50
+ mul r3, r2
+ str r1, [sp, #0xc]
+ add r2, r5, r3
+ ldrb r2, [r2, #0x1a]
+ sub r0, #0xcc
+ ldr r0, [r5, r0]
+ lsl r2, r2, #0x19
+ mov r1, #1
+ lsr r2, r2, #0x19
+ mov r3, #3
+ bl FUN_0200BA78
+ ldr r0, _0221407C ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221407C: .word 0x00002070
+
+ thumb_func_start MOD09_02214080
+MOD09_02214080: ; 0x02214080
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x50
+ add r7, r3, #0
+ mul r0, r2
+ add r3, r5, #4
+ add r0, r3, r0
+ str r0, [sp, #0xc]
+ add r0, sp, #0x18
+ ldrb r6, [r0, #0x10]
+ ldr r0, _022140F8 ; =0x00002070
+ lsl r4, r1, #4
+ ldr r1, [r5, r0]
+ sub r0, #0xcc
+ add r1, r1, r4
+ str r1, [sp]
+ str r7, [sp, #4]
+ str r6, [sp, #8]
+ ldr r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ ldrh r1, [r1, #0x10]
+ mov r2, #3
+ mov r3, #1
+ bl FUN_0200B9EC
+ add r3, r7, #0
+ ldr r2, _022140FC ; =0x00001FA4
+ str r6, [sp]
+ ldr r0, [r5, r2]
+ add r2, #0xcc
+ ldr r2, [r5, r2]
+ mov r1, #0
+ add r2, r2, r4
+ add r3, #0x18
+ bl FUN_0200B9A8
+ ldr r0, _022140F8 ; =0x00002070
+ add r7, #0x20
+ ldr r1, [r5, r0]
+ sub r0, #0xcc
+ add r1, r1, r4
+ str r1, [sp]
+ str r7, [sp, #4]
+ str r6, [sp, #8]
+ ldr r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ ldrh r1, [r1, #0x12]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_0200B9EC
+ ldr r0, _022140F8 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022140F8: .word 0x00002070
+_022140FC: .word 0x00001FA4
+
+ thumb_func_start MOD09_02214100
+MOD09_02214100: ; 0x02214100
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0x50
+ str r1, [sp, #8]
+ mul r0, r2
+ add r1, r4, #4
+ str r3, [sp, #0xc]
+ add r5, r1, r0
+ ldrh r0, [r5, #0x10]
+ ldrh r1, [r5, #0x12]
+ mov r2, #0x30
+ mov r7, #1
+ bl FUN_02079A0C
+ str r0, [sp, #0x14]
+ ldrh r0, [r5, #0x10]
+ ldrh r1, [r5, #0x12]
+ mov r2, #0x30
+ bl FUN_02079A54
+ cmp r0, #4
+ bhi _0221415E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221413A: ; jump table
+ .short _02214144 - _0221413A - 2 ; case 0
+ .short _0221415C - _0221413A - 2 ; case 1
+ .short _02214158 - _0221413A - 2 ; case 2
+ .short _02214156 - _0221413A - 2 ; case 3
+ .short _02214156 - _0221413A - 2 ; case 4
+_02214144:
+ ldr r0, _022141D4 ; =0x00002070
+ ldr r1, [r4, r0]
+ ldr r0, [sp, #8]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl FUN_02019220
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_02214156:
+ b _0221415E
+_02214158:
+ mov r7, #3
+ b _0221415E
+_0221415C:
+ mov r7, #5
+_0221415E:
+ add r0, sp, #0x20
+ ldrb r6, [r0, #0x10]
+ add r0, r7, #1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0x10]
+ lsl r5, r0, #4
+ ldr r0, [sp, #0x14]
+ add r3, r6, #1
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _022141D4 ; =0x00002070
+ lsl r1, r1, #0x18
+ ldr r0, [r4, r0]
+ lsl r3, r3, #0x10
+ ldr r2, [sp, #0xc]
+ add r0, r0, r5
+ lsr r1, r1, #0x18
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r0, [sp, #0x14]
+ add r3, r6, #2
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _022141D4 ; =0x00002070
+ lsl r3, r3, #0x10
+ ldr r0, [r4, r0]
+ ldr r2, [sp, #0xc]
+ add r0, r0, r5
+ add r1, r7, #0
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _022141D4 ; =0x00002070
+ add r3, r6, #4
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0x18
+ lsl r3, r3, #0x10
+ ldr r2, [sp, #0xc]
+ add r0, r0, r5
+ lsr r1, r1, #0x18
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r0, _022141D4 ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, r0, r5
+ bl FUN_02019220
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022141D4: .word 0x00002070
+
+ thumb_func_start MOD09_022141D8
+MOD09_022141D8: ; 0x022141D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5]
+ mov r0, #0x10
+ ldr r1, [r1, #0xc]
+ add r7, r2, #0
+ bl FUN_020219F4
+ add r6, r0, #0
+ ldr r0, _02214250 ; =0x00001FA8
+ mov r1, #8
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r2, #0x50
+ mul r2, r7
+ str r0, [sp, #0x10]
+ ldr r0, _02214254 ; =0x00001FAC
+ add r2, r5, r2
+ ldrh r2, [r2, #0x1c]
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200ADCC
+ ldr r0, _02214254 ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_0200B7B8
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214258 ; =0x000F0E00
+ lsl r4, r4, #4
+ str r0, [sp, #8]
+ ldr r0, _0221425C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r2, r6, #0
+ add r0, r0, r4
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _0221425C ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02214250: .word 0x00001FA8
+_02214254: .word 0x00001FAC
+_02214258: .word 0x000F0E00
+_0221425C: .word 0x00002070
+
+ thumb_func_start MOD09_02214260
+MOD09_02214260: ; 0x02214260
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0x50
+ add r7, r1, #0
+ add r1, r4, #4
+ mul r0, r2
+ add r5, r1, r0
+ ldrh r0, [r5, #0x1a]
+ cmp r0, #0
+ bne _02214284
+ ldr r0, _022142EC ; =0x00001FA8
+ mov r1, #0x14
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r6, r0, #0
+ b _022142BA
+_02214284:
+ ldr r1, [r4]
+ mov r0, #0x12
+ ldr r1, [r1, #0xc]
+ bl FUN_020219F4
+ add r6, r0, #0
+ ldr r0, _022142EC ; =0x00001FA8
+ mov r1, #9
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x10]
+ ldr r0, _022142F0 ; =0x00001FAC
+ ldrh r2, [r5, #0x1a]
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200AE38
+ ldr r0, _022142F0 ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r4, r0]
+ add r1, r6, #0
+ bl FUN_0200B7B8
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+_022142BA:
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022142F4 ; =0x000F0E00
+ lsl r5, r7, #4
+ str r0, [sp, #8]
+ ldr r0, _022142F8 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r4, r0]
+ add r2, r6, #0
+ add r0, r0, r5
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _022142F8 ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, r0, r5
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022142EC: .word 0x00001FA8
+_022142F0: .word 0x00001FAC
+_022142F4: .word 0x000F0E00
+_022142F8: .word 0x00002070
+
+ thumb_func_start MOD09_022142FC
+MOD09_022142FC: ; 0x022142FC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ str r1, [sp, #0x10]
+ ldr r1, [r5]
+ ldr r0, _02214394 ; =0x00002070
+ ldr r1, [r1, #0xc]
+ ldr r4, [r5, r0]
+ mov r0, #0x10
+ str r3, [sp, #0x14]
+ lsl r6, r2, #4
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r0, _02214398 ; =0x00001FA8
+ ldr r1, [sp, #0x14]
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x18]
+ ldr r0, _0221439C ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200AD5C
+ ldr r0, _0221439C ; =0x00001FAC
+ ldr r2, [sp, #0x18]
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl FUN_0200B7B8
+ add r0, sp, #0x20
+ ldrh r0, [r0, #0x10]
+ cmp r0, #2
+ bne _02214360
+ add r0, r4, r6
+ bl FUN_0201AB0C
+ add r5, r0, #0
+ add r0, sp, #0x20
+ ldrh r0, [r0, #0x10]
+ add r1, r7, #0
+ mov r2, #0
+ bl FUN_02002E14
+ lsl r1, r5, #3
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ b _02214362
+_02214360:
+ mov r3, #0
+_02214362:
+ add r1, sp, #0x20
+ ldrh r0, [r1, #0x14]
+ add r2, r7, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x38]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrh r1, [r1, #0x10]
+ add r0, r4, r6
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02214394: .word 0x00002070
+_02214398: .word 0x00001FA8
+_0221439C: .word 0x00001FAC
+
+ thumb_func_start MOD09_022143A0
+MOD09_022143A0: ; 0x022143A0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, _022143EC ; =0x00001FA8
+ str r2, [sp, #0x10]
+ add r5, r1, #0
+ ldr r0, [r4, r0]
+ add r6, r3, #0
+ mov r1, #0xe
+ bl FUN_0200A914
+ add r7, r0, #0
+ str r6, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022143F0 ; =0x000F0E00
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, _022143F4 ; =0x00002070
+ lsl r5, r5, #4
+ ldr r0, [r4, r0]
+ ldr r3, [sp, #0x10]
+ add r0, r0, r5
+ add r2, r7, #0
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, _022143F4 ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, r0, r5
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022143EC: .word 0x00001FA8
+_022143F0: .word 0x000F0E00
+_022143F4: .word 0x00002070
+
+ thumb_func_start MOD09_022143F8
+MOD09_022143F8: ; 0x022143F8
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, _02214450 ; =0x00002050
+ add r5, r1, #0
+ mov r1, #1
+ add r0, r4, r0
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_0200D0BC
+ ldr r0, _02214450 ; =0x00002050
+ mov r1, #0xf
+ add r0, r4, r0
+ bl FUN_02019620
+ ldr r0, _02214454 ; =0x00001FA8
+ add r1, r5, #0
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214458 ; =0x00010200
+ mov r1, #1
+ str r0, [sp, #8]
+ ldr r0, _02214450 ; =0x00002050
+ add r2, r5, #0
+ add r0, r4, r0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_02021A20
+ ldr r0, _02214450 ; =0x00002050
+ add r0, r4, r0
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02214450: .word 0x00002050
+_02214454: .word 0x00001FA8
+_02214458: .word 0x00010200
+
+ thumb_func_start MOD09_0221445C
+MOD09_0221445C: ; 0x0221445C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r3, _022144B8 ; =0x00002070
+ lsl r4, r1, #4
+ ldr r5, [r0, r3]
+ sub r3, #0xc8
+ ldr r0, [r0, r3]
+ add r1, r2, #0
+ bl FUN_0200A914
+ add r7, r0, #0
+ mov r0, #2
+ add r1, r7, #0
+ mov r2, #0
+ bl FUN_02002E14
+ add r6, r0, #0
+ add r0, r5, r4
+ bl FUN_0201AB0C
+ add r3, r0, #0
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022144BC ; =0x00070809
+ lsl r3, r3, #3
+ str r0, [sp, #8]
+ mov r0, #0
+ sub r3, r3, r6
+ str r0, [sp, #0xc]
+ add r0, r5, r4
+ mov r1, #2
+ add r2, r7, #0
+ lsr r3, r3, #1
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022144B8: .word 0x00002070
+_022144BC: .word 0x00070809
+
+ thumb_func_start MOD09_022144C0
+MOD09_022144C0: ; 0x022144C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ mov r0, #0x50
+ mul r0, r1
+ add r2, r5, #4
+ add r4, r2, r0
+ ldr r1, _0221467C ; =0x00002075
+ mov r0, #0x16
+ ldrb r2, [r5, r1]
+ sub r1, #0xcd
+ mul r0, r2
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ ldr r0, [r5, r1]
+ mov r1, #0x17
+ bl FUN_0200A914
+ mov r1, #0
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r2, _02214680 ; =0x000F0E00
+ add r0, #0x31
+ str r2, [sp, #8]
+ ldr r2, _02214684 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r2, [r5, r2]
+ add r3, r1, #0
+ add r0, r2, r0
+ add r2, r7, #0
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, _02214688 ; =0x00001FA8
+ mov r1, #0x18
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x18]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ mov r1, #0
+ str r0, [sp, #0x1c]
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldrb r2, [r4, #0x16]
+ ldr r0, _0221468C ; =0x00001FAC
+ mov r3, #3
+ lsl r2, r2, #0x19
+ ldr r0, [r5, r0]
+ lsr r2, r2, #0x19
+ bl FUN_0200AD38
+ ldr r0, _0221468C ; =0x00001FAC
+ ldr r1, [sp, #0x1c]
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x18]
+ bl FUN_0200B7B8
+ mov r1, #0
+ add r0, r6, #0
+ add r0, #0xb
+ lsl r7, r0, #4
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214680 ; =0x000F0E00
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #8]
+ ldr r0, _02214684 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r3, r1, #0
+ add r0, r0, r7
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r0, _02214688 ; =0x00001FA8
+ mov r1, #0x19
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0
+ str r0, [sp, #0x20]
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r2, _02214680 ; =0x000F0E00
+ add r0, #0x41
+ str r2, [sp, #8]
+ ldr r2, _02214684 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r2, [r5, r2]
+ add r3, r1, #0
+ add r0, r2, r0
+ ldr r2, [sp, #0x20]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x20]
+ bl FUN_02021A20
+ ldr r0, _02214688 ; =0x00001FA8
+ mov r1, #0x1a
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x14]
+ ldr r1, [r1, #0xc]
+ mov r0, #0xe
+ bl FUN_020219F4
+ str r0, [sp, #0x10]
+ ldrb r0, [r4, #0x16]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x19
+ cmp r0, #0x64
+ bhs _022145E0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221468C ; =0x00001FAC
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x1c]
+ ldr r0, [r5, r0]
+ sub r2, r2, r3
+ mov r1, #0
+ mov r3, #6
+ bl FUN_0200AD38
+ b _022145F4
+_022145E0:
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221468C ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ mov r3, #6
+ bl FUN_0200AD38
+_022145F4:
+ ldr r0, _0221468C ; =0x00001FAC
+ ldr r1, [sp, #0x10]
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x14]
+ bl FUN_0200B7B8
+ ldr r0, _02214684 ; =0x00002070
+ add r6, #0xc
+ ldr r0, [r5, r0]
+ lsl r4, r6, #4
+ add r0, r0, r4
+ bl FUN_0201AB0C
+ add r6, r0, #0
+ mov r0, #0
+ ldr r1, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r1, r6, #3
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ mov r1, #0
+ lsr r3, r0, #0x10
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214690 ; =0x00010200
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ ldr r0, _02214684 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ ldr r0, _02214684 ; =0x00002070
+ ldr r1, [r5, r0]
+ mov r0, #0x13
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, _02214684 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r7
+ bl FUN_02019220
+ ldr r0, _02214684 ; =0x00002070
+ ldr r1, [r5, r0]
+ mov r0, #5
+ lsl r0, r0, #6
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, _02214684 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221467C: .word 0x00002075
+_02214680: .word 0x000F0E00
+_02214684: .word 0x00002070
+_02214688: .word 0x00001FA8
+_0221468C: .word 0x00001FAC
+_02214690: .word 0x00010200
+
+ thumb_func_start MOD09_02214694
+MOD09_02214694: ; 0x02214694
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ add r5, r0, #0
+ ldr r1, _02214778 ; =0x00002075
+ mov r0, #0x16
+ ldrb r2, [r5, r1]
+ sub r1, #0xcd
+ mul r0, r2
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, r1]
+ mov r1, #0x20
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0221477C ; =0x000F0E00
+ add r2, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _02214780 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r3, r1, #0
+ add r0, #0xe0
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02214784 ; =0x00001FA8
+ mov r1, #0x21
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x10]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ mov r1, #0
+ mov r2, #0x50
+ add r6, r0, #0
+ mul r2, r7
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02214788 ; =0x00001FAC
+ add r2, r5, r2
+ ldrh r2, [r2, #0xa]
+ ldr r0, [r5, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _02214788 ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ add r0, r4, #5
+ lsl r4, r0, #4
+ ldr r0, _02214780 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r7
+ lsl r0, r0, #0x18
+ mov r1, #0
+ lsr r3, r0, #0x18
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0221478C ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _02214780 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02214780 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0xe0
+ bl FUN_02019220
+ ldr r0, _02214780 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02214778: .word 0x00002075
+_0221477C: .word 0x000F0E00
+_02214780: .word 0x00002070
+_02214784: .word 0x00001FA8
+_02214788: .word 0x00001FAC
+_0221478C: .word 0x00010200
+
+ thumb_func_start MOD09_02214790
+MOD09_02214790: ; 0x02214790
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ add r5, r0, #0
+ ldr r1, _02214874 ; =0x00002075
+ mov r0, #0x16
+ ldrb r2, [r5, r1]
+ sub r1, #0xcd
+ mul r0, r2
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, r1]
+ mov r1, #0x22
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214878 ; =0x000F0E00
+ add r2, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _0221487C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r3, r1, #0
+ add r0, #0xf0
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02214880 ; =0x00001FA8
+ mov r1, #0x23
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x10]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ mov r1, #0
+ mov r2, #0x50
+ add r6, r0, #0
+ mul r2, r7
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02214884 ; =0x00001FAC
+ add r2, r5, r2
+ ldrh r2, [r2, #0xc]
+ ldr r0, [r5, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _02214884 ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ add r0, r4, #6
+ lsl r4, r0, #4
+ ldr r0, _0221487C ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r7
+ lsl r0, r0, #0x18
+ mov r1, #0
+ lsr r3, r0, #0x18
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214888 ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _0221487C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _0221487C ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0xf0
+ bl FUN_02019220
+ ldr r0, _0221487C ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02214874: .word 0x00002075
+_02214878: .word 0x000F0E00
+_0221487C: .word 0x00002070
+_02214880: .word 0x00001FA8
+_02214884: .word 0x00001FAC
+_02214888: .word 0x00010200
+
+ thumb_func_start MOD09_0221488C
+MOD09_0221488C: ; 0x0221488C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ add r5, r0, #0
+ ldr r1, _02214974 ; =0x00002075
+ mov r0, #0x16
+ ldrb r2, [r5, r1]
+ sub r1, #0xcd
+ mul r0, r2
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, r1]
+ mov r1, #0x28
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02214978 ; =0x000F0E00
+ add r2, r2, #1
+ str r0, [sp, #8]
+ ldr r0, _0221497C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r3, r1, #0
+ add r0, r0, r2
+ add r2, r6, #0
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02214980 ; =0x00001FA8
+ mov r1, #0x29
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x10]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ mov r1, #0
+ mov r2, #0x50
+ add r6, r0, #0
+ mul r2, r7
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02214984 ; =0x00001FAC
+ add r2, r5, r2
+ ldrh r2, [r2, #0xe]
+ ldr r0, [r5, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _02214984 ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ add r0, r4, #7
+ lsl r4, r0, #4
+ ldr r0, _0221497C ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r7
+ lsl r0, r0, #0x18
+ mov r1, #0
+ lsr r3, r0, #0x18
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214988 ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _0221497C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _0221497C ; =0x00002070
+ ldr r1, [r5, r0]
+ mov r0, #1
+ lsl r0, r0, #8
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, _0221497C ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02214974: .word 0x00002075
+_02214978: .word 0x000F0E00
+_0221497C: .word 0x00002070
+_02214980: .word 0x00001FA8
+_02214984: .word 0x00001FAC
+_02214988: .word 0x00010200
+
+ thumb_func_start MOD09_0221498C
+MOD09_0221498C: ; 0x0221498C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ add r4, r0, #0
+ ldr r1, _02214A74 ; =0x00002075
+ mov r0, #0x16
+ ldrb r2, [r4, r1]
+ sub r1, #0xcd
+ mul r0, r2
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r0, [r4, r1]
+ mov r1, #0x24
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r2, _02214A78 ; =0x000F0E00
+ add r0, #0x11
+ str r2, [sp, #8]
+ ldr r2, _02214A7C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r2, [r4, r2]
+ add r3, r1, #0
+ add r0, r2, r0
+ add r2, r6, #0
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02214A80 ; =0x00001FA8
+ mov r1, #0x25
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ ldr r1, [r4]
+ str r0, [sp, #0x10]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ mov r1, #0
+ mov r2, #0x50
+ add r6, r0, #0
+ mul r2, r7
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02214A84 ; =0x00001FAC
+ add r2, r4, r2
+ ldrh r2, [r2, #0x10]
+ ldr r0, [r4, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _02214A84 ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r4, r0]
+ add r1, r6, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, _02214A7C ; =0x00002070
+ add r5, #8
+ ldr r0, [r4, r0]
+ lsl r5, r5, #4
+ add r0, r0, r5
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r7
+ lsl r0, r0, #0x18
+ mov r1, #0
+ lsr r3, r0, #0x18
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214A88 ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _02214A7C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r4, r0]
+ add r0, r0, r5
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02214A7C ; =0x00002070
+ ldr r1, [r4, r0]
+ mov r0, #0x11
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, _02214A7C ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, r0, r5
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02214A74: .word 0x00002075
+_02214A78: .word 0x000F0E00
+_02214A7C: .word 0x00002070
+_02214A80: .word 0x00001FA8
+_02214A84: .word 0x00001FAC
+_02214A88: .word 0x00010200
+
+ thumb_func_start MOD09_02214A8C
+MOD09_02214A8C: ; 0x02214A8C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ add r4, r0, #0
+ ldr r1, _02214B74 ; =0x00002075
+ mov r0, #0x16
+ ldrb r2, [r4, r1]
+ sub r1, #0xcd
+ mul r0, r2
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r0, [r4, r1]
+ mov r1, #0x26
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r2, _02214B78 ; =0x000F0E00
+ add r0, #0x21
+ str r2, [sp, #8]
+ ldr r2, _02214B7C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r2, [r4, r2]
+ add r3, r1, #0
+ add r0, r2, r0
+ add r2, r6, #0
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02214B80 ; =0x00001FA8
+ mov r1, #0x27
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ ldr r1, [r4]
+ str r0, [sp, #0x10]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ mov r1, #0
+ mov r2, #0x50
+ add r6, r0, #0
+ mul r2, r7
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02214B84 ; =0x00001FAC
+ add r2, r4, r2
+ ldrh r2, [r2, #0x12]
+ ldr r0, [r4, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _02214B84 ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r4, r0]
+ add r1, r6, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, _02214B7C ; =0x00002070
+ add r5, #9
+ ldr r0, [r4, r0]
+ lsl r5, r5, #4
+ add r0, r0, r5
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r7
+ lsl r0, r0, #0x18
+ mov r1, #0
+ lsr r3, r0, #0x18
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214B88 ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _02214B7C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r4, r0]
+ add r0, r0, r5
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02214B7C ; =0x00002070
+ ldr r1, [r4, r0]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, _02214B7C ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, r0, r5
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02214B74: .word 0x00002075
+_02214B78: .word 0x000F0E00
+_02214B7C: .word 0x00002070
+_02214B80: .word 0x00001FA8
+_02214B84: .word 0x00001FAC
+_02214B88: .word 0x00010200
+
+ thumb_func_start MOD09_02214B8C
+MOD09_02214B8C: ; 0x02214B8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ mov r0, #0x50
+ mul r0, r1
+ add r2, r5, #4
+ add r7, r2, r0
+ ldr r1, _02214D0C ; =0x00002075
+ mov r0, #0x16
+ ldrb r2, [r5, r1]
+ sub r1, #0xcd
+ mul r0, r2
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, r1]
+ mov r1, #0x1c
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214D10 ; =0x000F0E00
+ add r2, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _02214D14 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r3, r1, #0
+ add r0, #0xd0
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02214D18 ; =0x00001FA8
+ mov r1, #0x1f
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x10]
+ mov r0, #0
+ ldr r1, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02002E14
+ str r0, [sp, #0x14]
+ ldr r0, _02214D14 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x40
+ bl FUN_0201AB0C
+ lsl r1, r0, #3
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ sub r0, r1, r0
+ lsl r0, r0, #0xf
+ lsr r6, r0, #0x10
+ add r0, r4, #4
+ mov r1, #0
+ lsl r4, r0, #4
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214D1C ; =0x00010200
+ add r3, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _02214D14 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ ldr r0, _02214D18 ; =0x00001FA8
+ mov r1, #0x1d
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x18]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ str r0, [sp, #0x1c]
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02214D20 ; =0x00001FAC
+ ldrh r2, [r7, #0x10]
+ ldr r0, [r5, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _02214D20 ; =0x00001FAC
+ ldr r1, [sp, #0x1c]
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x18]
+ bl FUN_0200B7B8
+ mov r0, #0
+ ldr r1, [sp, #0x1c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214D1C ; =0x00010200
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #8]
+ ldr r0, _02214D14 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ sub r3, r6, r3
+ add r0, r0, r4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r0, _02214D18 ; =0x00001FA8
+ mov r1, #0x1e
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x20]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ mov r1, #0
+ str r0, [sp, #0x24]
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02214D20 ; =0x00001FAC
+ ldrh r2, [r7, #0x12]
+ ldr r0, [r5, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _02214D20 ; =0x00001FAC
+ ldr r1, [sp, #0x24]
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x20]
+ bl FUN_0200B7B8
+ mov r1, #0
+ ldr r3, [sp, #0x14]
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214D1C ; =0x00010200
+ ldr r2, [sp, #0x24]
+ str r0, [sp, #8]
+ ldr r0, _02214D14 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r3, r6, r3
+ add r0, r0, r4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x20]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x24]
+ bl FUN_02021A20
+ ldr r0, _02214D14 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0xd0
+ bl FUN_02019220
+ ldr r0, _02214D14 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02214D0C: .word 0x00002075
+_02214D10: .word 0x000F0E00
+_02214D14: .word 0x00002070
+_02214D18: .word 0x00001FA8
+_02214D1C: .word 0x00010200
+_02214D20: .word 0x00001FAC
+
+ thumb_func_start MOD09_02214D24
+MOD09_02214D24: ; 0x02214D24
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, _02214D90 ; =0x00002075
+ add r6, r1, #0
+ ldrb r1, [r5, r0]
+ ldr r3, [r5]
+ mov r0, #0x16
+ add r4, r1, #0
+ mul r4, r0
+ ldr r2, _02214D94 ; =0x0000022A
+ ldr r3, [r3, #0xc]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ mov r1, #0x50
+ mul r1, r6
+ add r1, r5, r1
+ ldrh r1, [r1, #0x1c]
+ add r7, r0, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ mov r1, #0
+ add r0, r4, #2
+ lsl r4, r0, #4
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214D98 ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ ldr r0, _02214D9C ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r3, r1, #0
+ add r0, r0, r4
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ ldr r0, _02214D9C ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, r0, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02214D90: .word 0x00002075
+_02214D94: .word 0x0000022A
+_02214D98: .word 0x00010200
+_02214D9C: .word 0x00002070
+
+ thumb_func_start MOD09_02214DA0
+MOD09_02214DA0: ; 0x02214DA0
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ ldr r2, _02214DE0 ; =0x00002070
+ lsl r4, r1, #4
+ ldr r5, [r0, r2]
+ sub r2, #0xc8
+ ldr r0, [r0, r2]
+ mov r1, #0x33
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214DE4 ; =0x000F0E00
+ add r2, r6, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_02214DE0: .word 0x00002070
+_02214DE4: .word 0x000F0E00
+
+ thumb_func_start MOD09_02214DE8
+MOD09_02214DE8: ; 0x02214DE8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r2, [sp, #0x10]
+ add r5, r0, #0
+ ldr r2, _02214EC4 ; =0x00002070
+ ldr r0, [sp, #0x10]
+ lsl r6, r1, #4
+ ldr r4, [r5, r2]
+ cmp r0, #0
+ bne _02214E42
+ sub r2, #0xc8
+ ldr r0, [r5, r2]
+ mov r1, #0x32
+ bl FUN_0200A914
+ add r7, r0, #0
+ mov r0, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, r6
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r5
+ lsl r0, r0, #0x10
+ mov r1, #0
+ lsr r3, r0, #0x10
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214EC8 ; =0x00010200
+ add r2, r7, #0
+ str r0, [sp, #8]
+ add r0, r4, r6
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ b _02214EB8
+_02214E42:
+ sub r2, #0xc8
+ ldr r0, [r5, r2]
+ mov r1, #0x34
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x14]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ mov r1, #0
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02214ECC ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r5, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _02214ECC ; =0x00001FAC
+ ldr r2, [sp, #0x14]
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, r6
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r5
+ lsl r0, r0, #0x10
+ mov r1, #0
+ lsr r3, r0, #0x10
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214EC8 ; =0x00010200
+ add r2, r7, #0
+ str r0, [sp, #8]
+ add r0, r4, r6
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+_02214EB8:
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02214EC4: .word 0x00002070
+_02214EC8: .word 0x00010200
+_02214ECC: .word 0x00001FAC
+
+ thumb_func_start MOD09_02214ED0
+MOD09_02214ED0: ; 0x02214ED0
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ ldr r2, _02214F10 ; =0x00002070
+ lsl r4, r1, #4
+ ldr r5, [r0, r2]
+ sub r2, #0xc8
+ ldr r0, [r0, r2]
+ mov r1, #0x30
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214F14 ; =0x000F0E00
+ add r2, r6, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_02214F10: .word 0x00002070
+_02214F14: .word 0x000F0E00
+
+ thumb_func_start MOD09_02214F18
+MOD09_02214F18: ; 0x02214F18
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r2, [sp, #0x10]
+ add r5, r0, #0
+ ldr r2, _02214FF4 ; =0x00002070
+ ldr r0, [sp, #0x10]
+ lsl r6, r1, #4
+ ldr r4, [r5, r2]
+ cmp r0, #1
+ bhi _02214F72
+ sub r2, #0xc8
+ ldr r0, [r5, r2]
+ mov r1, #0x32
+ bl FUN_0200A914
+ add r7, r0, #0
+ mov r0, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, r6
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r5
+ lsl r0, r0, #0x10
+ mov r1, #0
+ lsr r3, r0, #0x10
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214FF8 ; =0x00010200
+ add r2, r7, #0
+ str r0, [sp, #8]
+ add r0, r4, r6
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ b _02214FE8
+_02214F72:
+ sub r2, #0xc8
+ ldr r0, [r5, r2]
+ mov r1, #0x31
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x14]
+ ldr r1, [r1, #0xc]
+ mov r0, #8
+ bl FUN_020219F4
+ mov r1, #0
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02214FFC ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r5, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _02214FFC ; =0x00001FAC
+ ldr r2, [sp, #0x14]
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, r6
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r5
+ lsl r0, r0, #0x10
+ mov r1, #0
+ lsr r3, r0, #0x10
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02214FF8 ; =0x00010200
+ add r2, r7, #0
+ str r0, [sp, #8]
+ add r0, r4, r6
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+_02214FE8:
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02214FF4: .word 0x00002070
+_02214FF8: .word 0x00010200
+_02214FFC: .word 0x00001FAC
+
+ thumb_func_start MOD09_02215000
+MOD09_02215000: ; 0x02215000
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r3, r0, #0
+ ldr r0, _02215054 ; =0x00002070
+ add r6, r2, #0
+ ldr r5, [r3, r0]
+ ldr r3, [r3]
+ lsl r4, r1, #4
+ ldr r2, _02215058 ; =0x0000024B
+ ldr r3, [r3, #0xc]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r1, r6, #0
+ add r7, r0, #0
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0221505C ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02215054: .word 0x00002070
+_02215058: .word 0x0000024B
+_0221505C: .word 0x00010200
+
+ thumb_func_start MOD09_02215060
+MOD09_02215060: ; 0x02215060
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ ldr r0, _022150C0 ; =0x00002070
+ lsl r4, r1, #4
+ ldr r5, [r6, r0]
+ add r0, r2, #0
+ mov r1, #0xa
+ bl FUN_0206AB18
+ bl FUN_0208315C
+ ldr r3, [r6]
+ add r7, r0, #0
+ ldr r3, [r3, #0xc]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xc5
+ bl FUN_0200A86C
+ add r1, r7, #0
+ str r0, [sp, #0x10]
+ bl FUN_0200A914
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022150C4 ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022150C0: .word 0x00002070
+_022150C4: .word 0x00010200
+
+ thumb_func_start MOD09_022150C8
+MOD09_022150C8: ; 0x022150C8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r2, _02215124 ; =0x00002070
+ lsl r4, r1, #4
+ ldr r5, [r0, r2]
+ sub r2, #0xc8
+ ldr r0, [r0, r2]
+ mov r1, #0x35
+ bl FUN_0200A914
+ add r7, r0, #0
+ mov r0, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ add r0, r5, r4
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r1, r0, r6
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ lsl r0, r0, #0xf
+ mov r1, #0
+ lsr r3, r0, #0x10
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02215128 ; =0x000F0E00
+ add r2, r7, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02215124: .word 0x00002070
+_02215128: .word 0x000F0E00
+
+ thumb_func_start MOD09_0221512C
+MOD09_0221512C: ; 0x0221512C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ ldr r3, _022151A0 ; =0x00002070
+ lsl r4, r1, #4
+ ldr r5, [r0, r3]
+ cmp r2, #0
+ beq _02215144
+ cmp r2, #1
+ beq _02215152
+ cmp r2, #2
+ beq _02215160
+ b _0221516C
+_02215144:
+ sub r3, #0xc8
+ ldr r0, [r0, r3]
+ mov r1, #0x36
+ bl FUN_0200A914
+ add r6, r0, #0
+ b _0221516C
+_02215152:
+ sub r3, #0xc8
+ ldr r0, [r0, r3]
+ mov r1, #0x38
+ bl FUN_0200A914
+ add r6, r0, #0
+ b _0221516C
+_02215160:
+ sub r3, #0xc8
+ ldr r0, [r0, r3]
+ mov r1, #0x37
+ bl FUN_0200A914
+ add r6, r0, #0
+_0221516C:
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ mov r3, #0x38
+ bl FUN_02002F40
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022151A4 ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022151A0: .word 0x00002070
+_022151A4: .word 0x00010200
+
+ thumb_func_start MOD09_022151A8
+MOD09_022151A8: ; 0x022151A8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, _022152CC ; =0x00002070
+ lsl r6, r1, #4
+ ldr r4, [r5, r0]
+ sub r0, #0xc8
+ ldr r0, [r5, r0]
+ mov r1, #0x2e
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ bl FUN_0200A914
+ str r0, [sp, #0x18]
+ mov r0, #0
+ ldr r1, [sp, #0x18]
+ add r2, r0, #0
+ bl FUN_02002E14
+ str r0, [sp, #0x1c]
+ add r0, r4, r6
+ bl FUN_0201AB0C
+ lsl r1, r0, #3
+ ldr r0, [sp, #0x1c]
+ ldr r2, [sp, #0x18]
+ sub r0, r1, r0
+ lsr r7, r0, #1
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022152D0 ; =0x000F0E00
+ add r3, r7, #0
+ str r0, [sp, #8]
+ add r0, r4, r6
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, _022152D4 ; =0x00001FA8
+ mov r1, #0x2c
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x20]
+ ldr r1, [r1, #0xc]
+ mov r0, #6
+ bl FUN_020219F4
+ mov r1, #0
+ str r0, [sp, #0x24]
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _022152D8 ; =0x00001FAC
+ ldr r2, [sp, #0x10]
+ ldr r0, [r5, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _022152D8 ; =0x00001FAC
+ ldr r1, [sp, #0x24]
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x20]
+ bl FUN_0200B7B8
+ mov r0, #0
+ ldr r1, [sp, #0x24]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022152D0 ; =0x000F0E00
+ ldr r2, [sp, #0x24]
+ str r0, [sp, #8]
+ add r0, r4, r6
+ sub r3, r7, r3
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x20]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x24]
+ bl FUN_02021A20
+ ldr r0, _022152D4 ; =0x00001FA8
+ mov r1, #0x2d
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ ldr r1, [r5]
+ str r0, [sp, #0x28]
+ ldr r1, [r1, #0xc]
+ mov r0, #6
+ bl FUN_020219F4
+ mov r1, #0
+ str r0, [sp, #0x2c]
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _022152D8 ; =0x00001FAC
+ ldr r2, [sp, #0x14]
+ ldr r0, [r5, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, _022152D8 ; =0x00001FAC
+ ldr r1, [sp, #0x2c]
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x28]
+ bl FUN_0200B7B8
+ mov r1, #0
+ ldr r3, [sp, #0x1c]
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022152D0 ; =0x000F0E00
+ ldr r2, [sp, #0x2c]
+ str r0, [sp, #8]
+ add r0, r4, r6
+ add r3, r7, r3
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x28]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x2c]
+ bl FUN_02021A20
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022152CC: .word 0x00002070
+_022152D0: .word 0x000F0E00
+_022152D4: .word 0x00001FA8
+_022152D8: .word 0x00001FAC
+
+ thumb_func_start MOD09_022152DC
+MOD09_022152DC: ; 0x022152DC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ lsl r4, r1, #4
+ ldr r1, [r0]
+ ldr r2, _02215344 ; =0x00002070
+ add r1, #0x34
+ ldrb r1, [r1]
+ ldr r5, [r0, r2]
+ cmp r1, #4
+ bne _022152FC
+ sub r2, #0xc8
+ ldr r0, [r0, r2]
+ mov r1, #0x3b
+ bl FUN_0200A914
+ b _02215306
+_022152FC:
+ sub r2, #0xc8
+ ldr r0, [r0, r2]
+ mov r1, #0x3a
+ bl FUN_0200A914
+_02215306:
+ add r6, r0, #0
+ mov r0, #2
+ add r1, r6, #0
+ mov r2, #0
+ bl FUN_02002E14
+ add r7, r0, #0
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02215348 ; =0x00070809
+ mov r3, #0x60
+ str r0, [sp, #8]
+ mov r0, #0
+ sub r3, r3, r7
+ str r0, [sp, #0xc]
+ add r0, r5, r4
+ mov r1, #2
+ add r2, r6, #0
+ lsr r3, r3, #1
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02215344: .word 0x00002070
+_02215348: .word 0x00070809
+
+ thumb_func_start MOD09_0221534C
+MOD09_0221534C: ; 0x0221534C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, _022153A4 ; =0x0000207A
+ ldrb r1, [r4, r0]
+ cmp r1, #7
+ bne _02215362
+ sub r0, #0xa
+ ldr r5, [r4, r0]
+ add r5, #0x80
+ b _02215368
+_02215362:
+ sub r0, #0xa
+ ldr r5, [r4, r0]
+ add r5, #0x50
+_02215368:
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _022153A8 ; =0x00001FA8
+ mov r1, #0x3c
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ mov r1, #0
+ add r4, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022153AC ; =0x00010200
+ add r2, r4, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r5, #0
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022153A4: .word 0x0000207A
+_022153A8: .word 0x00001FA8
+_022153AC: .word 0x00010200
+
+ thumb_func_start MOD09_022153B0
+MOD09_022153B0: ; 0x022153B0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ str r1, [sp, #0x10]
+ ldr r1, [r5]
+ ldr r0, _022154EC ; =0x00002070
+ ldr r1, [r1, #0xc]
+ ldr r4, [r5, r0]
+ mov r0, #6
+ lsl r6, r2, #4
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r0, _022154F0 ; =0x00001FA8
+ mov r1, #0x2b
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x14]
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022154F4 ; =0x000F0E00
+ ldr r2, [sp, #0x14]
+ str r0, [sp, #8]
+ mov r1, #0
+ add r0, r4, r6
+ mov r3, #0x28
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ ldr r0, _022154F0 ; =0x00001FA8
+ mov r1, #0x2e
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x18]
+ mov r0, #0
+ ldr r1, [sp, #0x18]
+ add r2, r0, #0
+ bl FUN_02002E14
+ str r0, [sp, #0x1c]
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022154F4 ; =0x000F0E00
+ ldr r2, [sp, #0x18]
+ str r0, [sp, #8]
+ mov r1, #0
+ add r0, r4, r6
+ mov r3, #0x50
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, _022154F0 ; =0x00001FA8
+ mov r1, #0x2d
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0
+ str r0, [sp, #0x20]
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x10]
+ ldr r0, _022154F8 ; =0x00001FAC
+ ldrb r2, [r2, #3]
+ ldr r0, [r5, r0]
+ mov r3, #2
+ bl FUN_0200AD38
+ ldr r0, _022154F8 ; =0x00001FAC
+ ldr r2, [sp, #0x20]
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl FUN_0200B7B8
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022154F4 ; =0x000F0E00
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #8]
+ mov r1, #0
+ add r3, #0x50
+ add r0, r4, r6
+ add r2, r7, #0
+ str r1, [sp, #0xc]
+ str r3, [sp, #0x1c]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x20]
+ bl FUN_02021A20
+ ldr r0, _022154F0 ; =0x00001FA8
+ mov r1, #0x2c
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0
+ str r0, [sp, #0x24]
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x10]
+ ldr r0, _022154F8 ; =0x00001FAC
+ ldrb r2, [r2, #2]
+ ldr r0, [r5, r0]
+ mov r3, #2
+ bl FUN_0200AD38
+ ldr r0, _022154F8 ; =0x00001FAC
+ ldr r2, [sp, #0x24]
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r5, r0, #0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022154F4 ; =0x000F0E00
+ mov r3, #0x50
+ str r0, [sp, #8]
+ mov r1, #0
+ add r0, r4, r6
+ add r2, r7, #0
+ sub r3, r3, r5
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x24]
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022154EC: .word 0x00002070
+_022154F0: .word 0x00001FA8
+_022154F4: .word 0x000F0E00
+_022154F8: .word 0x00001FAC
+
+ thumb_func_start MOD09_022154FC
+MOD09_022154FC: ; 0x022154FC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ str r1, [sp, #0x10]
+ ldr r1, [r5]
+ ldr r0, _022155C0 ; =0x00002070
+ ldr r1, [r1, #0xc]
+ ldr r4, [r5, r0]
+ mov r0, #6
+ lsl r6, r2, #4
+ bl FUN_020219F4
+ str r0, [sp, #0x14]
+ ldr r0, _022155C4 ; =0x00001FA8
+ mov r1, #0x2b
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [sp, #0x18]
+ mov r0, #0
+ ldr r1, [sp, #0x18]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r7, r0, #0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ add r7, #0x28
+ mov r0, #0x50
+ sub r0, r0, r7
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #0x10
+ lsl r2, r7, #0x10
+ str r0, [sp, #4]
+ add r0, r4, r6
+ mov r1, #0
+ lsr r2, r2, #0x10
+ mov r3, #0x18
+ bl FUN_020196F4
+ ldr r0, _022155C4 ; =0x00001FA8
+ mov r1, #0x2c
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x10]
+ ldr r0, _022155C8 ; =0x00001FAC
+ ldrb r2, [r2, #2]
+ ldr r0, [r5, r0]
+ mov r3, #2
+ bl FUN_0200AD38
+ ldr r0, _022155C8 ; =0x00001FAC
+ ldr r1, [sp, #0x14]
+ ldr r0, [r5, r0]
+ add r2, r7, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ ldr r1, [sp, #0x14]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r5, r0, #0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022155CC ; =0x000F0E00
+ mov r3, #0x50
+ str r0, [sp, #8]
+ mov r1, #0
+ ldr r2, [sp, #0x14]
+ add r0, r4, r6
+ sub r3, r3, r5
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022155C0: .word 0x00002070
+_022155C4: .word 0x00001FA8
+_022155C8: .word 0x00001FAC
+_022155CC: .word 0x000F0E00
+
+ thumb_func_start MOD09_022155D0
+MOD09_022155D0: ; 0x022155D0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r4, #0
+ ldr r0, [r0]
+ bl FUN_0206B9AC
+ cmp r0, #0
+ ble _02215656
+ add r0, r4, #0
+ add r7, r5, #0
+ str r0, [sp, #8]
+ add r6, r5, #0
+ add r7, #0x1b
+_022155EE:
+ ldr r0, _02215678 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldrh r0, [r6, #8]
+ cmp r0, #0
+ beq _0221563E
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ lsl r3, r4, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #2
+ lsr r3, r3, #0x10
+ bl MOD09_02213E84
+ ldrb r0, [r7]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _0221562A
+ lsl r1, r4, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD09_0221567C
+_0221562A:
+ ldr r0, [r6, #4]
+ bl FUN_0207C2D4
+ cmp r0, #7
+ bne _0221563E
+ lsl r1, r4, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD09_022156DC
+_0221563E:
+ ldr r0, [sp, #8]
+ add r6, #0x50
+ add r0, #0x10
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ add r7, #0x50
+ ldr r0, [r0]
+ add r4, r4, #1
+ bl FUN_0206B9AC
+ cmp r4, r0
+ blt _022155EE
+_02215656:
+ ldr r0, [r5]
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #2
+ bne _0221566C
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD09_022143F8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0221566C:
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD09_022143F8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02215678: .word 0x00002070
+
+ thumb_func_start MOD09_0221567C
+MOD09_0221567C: ; 0x0221567C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #8
+ add r6, r1, #0
+ str r0, [sp, #4]
+ ldr r0, _022156D8 ; =0x00002070
+ lsl r4, r6, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ add r0, r0, r4
+ mov r2, #0x38
+ mov r3, #0x20
+ bl FUN_020196F4
+ mov r2, #0x40
+ str r2, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ ldr r0, _022156D8 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ mov r3, #0x18
+ add r0, r0, r4
+ bl FUN_020196F4
+ mov r0, #0x20
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r6, #0
+ mov r3, #0x38
+ bl MOD09_02214080
+ mov r0, #0x18
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r6, #0
+ mov r3, #0x40
+ bl MOD09_02214100
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022156D8: .word 0x00002070
+
+ thumb_func_start MOD09_022156DC
+MOD09_022156DC: ; 0x022156DC
+ push {r3, lr}
+ mov r2, #0x50
+ mul r2, r1
+ add r2, r0, r2
+ ldrb r2, [r2, #0x1b]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1f
+ bne _022156F8
+ mov r2, #0x20
+ str r2, [sp]
+ add r2, r1, #0
+ mov r3, #0
+ bl MOD09_02214038
+_022156F8:
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_022156FC
+MOD09_022156FC: ; 0x022156FC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02215780 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_02019620
+ ldr r0, _02215780 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r4, r0]
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r0, _02215780 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ bl FUN_02019620
+ ldr r0, _02215780 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r4, r0]
+ add r0, #0x30
+ bl FUN_02019620
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_02215784
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0xf
+ bl MOD09_0221445C
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r0, r4, r0
+ ldrb r0, [r0, #0x1b]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _0221576A
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #0x12
+ bl MOD09_0221445C
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #0x13
+ bl MOD09_0221445C
+ pop {r4, pc}
+_0221576A:
+ ldr r0, _02215780 ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, #0x20
+ bl FUN_02019220
+ ldr r0, _02215780 ; =0x00002070
+ ldr r0, [r4, r0]
+ add r0, #0x30
+ bl FUN_02019220
+ pop {r4, pc}
+ .align 2, 0
+_02215780: .word 0x00002070
+
+ thumb_func_start MOD09_02215784
+MOD09_02215784: ; 0x02215784
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ ldr r0, _022158D0 ; =0x00002070
+ add r6, r1, #0
+ ldr r0, [r4, r0]
+ ldr r1, [r4]
+ str r0, [sp, #0x18]
+ mov r0, #0x50
+ add r7, r6, #0
+ add r5, r4, #4
+ mul r7, r0
+ add r0, r5, r7
+ str r0, [sp, #0x14]
+ ldr r1, [r1, #0xc]
+ mov r0, #0xc
+ bl FUN_020219F4
+ str r0, [sp, #0x10]
+ ldr r0, _022158D4 ; =0x00001FA8
+ ldr r1, _022158D8 ; =0x0221B090
+ lsl r2, r6, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r1, r2]
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r0, [r5, r7]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022158DC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_0200ACF8
+ ldr r0, _022158DC ; =0x00001FAC
+ ldr r1, [sp, #0x10]
+ ldr r0, [r4, r0]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ mov r5, #0
+ ldrb r0, [r0, #0x16]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _02215818
+ ldr r0, [sp, #0x14]
+ ldrb r0, [r0, #0x17]
+ lsl r1, r0, #0x18
+ lsr r1, r1, #0x1f
+ bne _02215818
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1d
+ bne _02215808
+ ldr r0, _022158D4 ; =0x00001FA8
+ mov r1, #0x10
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0
+ b _02215818
+_02215808:
+ cmp r0, #1
+ bne _02215818
+ ldr r0, _022158D4 ; =0x00001FA8
+ mov r1, #0x11
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ add r5, r0, #0
+_02215818:
+ ldr r1, [sp, #0x10]
+ mov r0, #2
+ mov r2, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r5, #0
+ bne _02215830
+ mov r7, #0
+ add r4, r7, #0
+ b _02215840
+_02215830:
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ mov r4, #8
+_02215840:
+ ldr r0, [sp, #0x18]
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r6
+ sub r0, r0, r7
+ sub r1, r0, r4
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ lsl r0, r0, #0x17
+ lsr r7, r0, #0x18
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022158E0 ; =0x00070809
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x18]
+ mov r1, #2
+ add r3, r7, #0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ cmp r5, #0
+ beq _022158C6
+ ldr r0, [sp, #0x14]
+ ldrb r0, [r0, #0x17]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1d
+ bne _022158A4
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022158E4 ; =0x000A0B00
+ add r3, r7, r6
+ str r0, [sp, #8]
+ mov r1, #0
+ ldr r0, [sp, #0x18]
+ add r2, r5, #0
+ add r3, r4, r3
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ b _022158C0
+_022158A4:
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022158E8 ; =0x000C0D00
+ add r3, r7, r6
+ str r0, [sp, #8]
+ mov r1, #0
+ ldr r0, [sp, #0x18]
+ add r2, r5, #0
+ add r3, r4, r3
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+_022158C0:
+ add r0, r5, #0
+ bl FUN_02021A20
+_022158C6:
+ ldr r0, [sp, #0x18]
+ bl FUN_02019220
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022158D0: .word 0x00002070
+_022158D4: .word 0x00001FA8
+_022158D8: .word 0x0221B090
+_022158DC: .word 0x00001FAC
+_022158E0: .word 0x00070809
+_022158E4: .word 0x000A0B00
+_022158E8: .word 0x000C0D00
+
+ thumb_func_start MOD09_022158EC
+MOD09_022158EC: ; 0x022158EC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ ldr r0, _02215A1C ; =0x00002075
+ mov r1, #6
+ ldrb r2, [r5, r0]
+ sub r0, r0, #5
+ mul r1, r2
+ lsl r1, r1, #0x10
+ lsr r6, r1, #0x10
+ ldr r1, [r5, r0]
+ lsl r0, r6, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r6, #1
+ lsl r0, r0, #4
+ str r0, [sp, #0x18]
+ ldr r0, _02215A20 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0x18]
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r6, #2
+ lsl r0, r0, #4
+ str r0, [sp, #0x14]
+ ldr r0, _02215A20 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0x14]
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r6, #3
+ lsl r0, r0, #4
+ str r0, [sp, #0x10]
+ ldr r0, _02215A20 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0x10]
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r6, #4
+ lsl r0, r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, _02215A20 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0xc]
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215A20 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x50
+ bl FUN_02019620
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r3, [r5]
+ add r0, r5, #0
+ ldrb r3, [r3, #0x11]
+ add r1, r6, #0
+ bl MOD09_02213E84
+ add r0, r5, #0
+ str r0, [sp, #0x1c]
+ add r0, #0x34
+ mov r4, #0
+ add r7, r6, #1
+ str r0, [sp, #0x1c]
+_02215986:
+ ldr r0, [r5]
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, [sp, #0x1c]
+ lsl r1, r4, #3
+ add r0, r0, r2
+ str r1, [sp, #0x20]
+ ldrh r1, [r0, r1]
+ str r0, [sp, #0x24]
+ cmp r1, #0
+ beq _022159C8
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ ldr r0, _02215A24 ; =0x00070809
+ ldr r3, _02215A28 ; =0x0221B07C
+ lsl r6, r4, #2
+ str r0, [sp, #8]
+ ldr r3, [r3, r6]
+ add r0, r5, #0
+ add r2, r7, r4
+ bl MOD09_022142FC
+ ldr r2, [sp, #0x20]
+ ldr r1, [sp, #0x24]
+ add r0, r5, #0
+ add r1, r1, r2
+ add r2, r7, r4
+ bl MOD09_022153B0
+_022159C8:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #4
+ blo _02215986
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0x12
+ bl MOD09_0221445C
+ ldr r0, _02215A20 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0x18]
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, _02215A20 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0x14]
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, _02215A20 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0x10]
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r0, _02215A20 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0xc]
+ add r0, r1, r0
+ bl FUN_02019220
+ ldr r1, _02215A1C ; =0x00002075
+ mov r0, #1
+ ldrb r2, [r5, r1]
+ eor r0, r2
+ strb r0, [r5, r1]
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02215A1C: .word 0x00002075
+_02215A20: .word 0x00002070
+_02215A24: .word 0x00070809
+_02215A28: .word 0x0221B07C
+
+ thumb_func_start MOD09_02215A2C
+MOD09_02215A2C: ; 0x02215A2C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, _02215C3C ; =0x00002075
+ mov r1, #0x16
+ ldrb r2, [r5, r0]
+ sub r0, r0, #5
+ add r4, r2, #0
+ mul r4, r1
+ ldr r1, [r5, r0]
+ mov r0, #0x13
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ mov r0, #5
+ lsl r0, r0, #6
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0xe0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0xf0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ mov r0, #1
+ lsl r0, r0, #8
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ mov r0, #0x11
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0xd0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ lsl r0, r4, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #0
+ add r0, #0xa
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #0
+ add r0, #0xb
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #0
+ add r0, #0xc
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #5
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #6
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #7
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #0
+ add r0, #8
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #0
+ add r0, #9
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #4
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #1
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #2
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215C40 ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #3
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r3, [r5]
+ add r0, r5, #0
+ ldrb r3, [r3, #0x11]
+ add r1, r4, #0
+ bl MOD09_02213E84
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_02214B8C
+ mov r3, #0
+ str r3, [sp]
+ ldr r2, [r5]
+ add r1, r4, #0
+ ldrb r2, [r2, #0x11]
+ add r0, r5, #0
+ add r1, #0xa
+ bl MOD09_02214100
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_022144C0
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_02214694
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_02214790
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_0221488C
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_0221498C
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_02214A8C
+ ldr r2, [r5]
+ add r0, r5, #0
+ ldrb r2, [r2, #0x11]
+ add r1, r4, #1
+ bl MOD09_022141D8
+ ldr r2, [r5]
+ add r0, r5, #0
+ ldrb r2, [r2, #0x11]
+ add r1, r4, #3
+ bl MOD09_02214260
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrb r1, [r1, #0x11]
+ bl MOD09_02214D24
+ add r0, r5, #0
+ mov r1, #0x15
+ mov r2, #0x13
+ bl MOD09_0221445C
+ ldr r1, _02215C3C ; =0x00002075
+ mov r0, #1
+ ldrb r2, [r5, r1]
+ eor r0, r2
+ strb r0, [r5, r1]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02215C3C: .word 0x00002075
+_02215C40: .word 0x00002070
+
+ thumb_func_start MOD09_02215C44
+MOD09_02215C44: ; 0x02215C44
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _02215D98 ; =0x00002075
+ mov r1, #0xb
+ ldrb r2, [r5, r0]
+ sub r0, r0, #5
+ ldr r0, [r5, r0]
+ add r4, r2, #0
+ mul r4, r1
+ add r0, #0x60
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x70
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x80
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x90
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0xa0
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #1
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ ldr r1, [r5, r0]
+ lsl r0, r4, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #2
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #3
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #5
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02215D9C ; =0x00002070
+ ldr r1, [r5, r0]
+ add r0, r4, #4
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r5]
+ add r2, r5, #0
+ ldrb r3, [r0, #0x11]
+ add r0, #0x34
+ ldrb r0, [r0]
+ mov r1, #0x50
+ add r2, #0x34
+ mul r1, r3
+ add r1, r2, r1
+ lsl r0, r0, #3
+ add r7, r1, r0
+ mov r2, #0
+ str r2, [sp]
+ add r0, r5, #0
+ mov r1, #6
+ str r2, [sp, #4]
+ bl MOD09_02213E84
+ mov r2, #0
+ add r0, r5, #0
+ mov r1, #7
+ add r3, r2, #0
+ bl MOD09_022143A0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02215DA0 ; =0x000F0E00
+ add r2, r4, #0
+ str r0, [sp, #8]
+ ldr r3, [r5]
+ ldrh r1, [r7]
+ add r3, #0x34
+ ldrb r3, [r3]
+ add r0, r5, #0
+ lsl r6, r3, #2
+ ldr r3, _02215DA4 ; =0x0221B07C
+ ldr r3, [r3, r6]
+ bl MOD09_022142FC
+ add r0, r5, #0
+ mov r1, #8
+ bl MOD09_02214DA0
+ ldrb r2, [r7, #6]
+ add r0, r5, #0
+ add r1, r4, #2
+ bl MOD09_02214DE8
+ add r0, r5, #0
+ mov r1, #9
+ bl MOD09_02214ED0
+ ldrb r2, [r7, #7]
+ add r0, r5, #0
+ add r1, r4, #3
+ bl MOD09_02214F18
+ ldrh r2, [r7]
+ add r0, r5, #0
+ add r1, r4, #4
+ bl MOD09_02215000
+ add r0, r5, #0
+ mov r1, #0xa
+ bl MOD09_022150C8
+ ldrb r2, [r7, #5]
+ add r0, r5, #0
+ add r1, r4, #5
+ bl MOD09_0221512C
+ ldrb r2, [r7, #2]
+ ldrb r3, [r7, #3]
+ add r0, r5, #0
+ add r1, r4, #1
+ bl MOD09_022151A8
+ ldr r1, _02215D98 ; =0x00002075
+ mov r0, #1
+ ldrb r2, [r5, r1]
+ eor r0, r2
+ strb r0, [r5, r1]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02215D98: .word 0x00002075
+_02215D9C: .word 0x00002070
+_02215DA0: .word 0x000F0E00
+_02215DA4: .word 0x0221B07C
+
+ thumb_func_start MOD09_02215DA8
+MOD09_02215DA8: ; 0x02215DA8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r0, _02215EC4 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_02019620
+ ldr r0, _02215EC4 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r0, _02215EC4 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ bl FUN_02019620
+ ldr r0, _02215EC4 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x30
+ bl FUN_02019620
+ ldr r0, _02215EC4 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x40
+ bl FUN_02019620
+ ldr r0, _02215EC4 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x50
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ ldr r3, [r5]
+ add r0, r5, #0
+ ldrb r3, [r3, #0x11]
+ add r2, r1, #0
+ bl MOD09_02213E84
+ add r0, r5, #0
+ mov r6, #0
+ str r0, [sp, #0x10]
+ add r0, #0x34
+ ldr r7, _02215EC8 ; =0x0221B07C
+ add r4, r6, #0
+ str r0, [sp, #0x10]
+_02215E14:
+ ldr r0, [r5]
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, [sp, #0x10]
+ add r0, r0, r2
+ ldrh r1, [r0, r4]
+ str r0, [sp, #0xc]
+ cmp r1, #0
+ beq _02215E4C
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ ldr r0, _02215ECC ; =0x00070809
+ add r2, r6, #1
+ str r0, [sp, #8]
+ ldr r3, [r7]
+ add r0, r5, #0
+ bl MOD09_022142FC
+ ldr r1, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r1, r4
+ add r2, r6, #1
+ bl MOD09_022153B0
+_02215E4C:
+ add r6, r6, #1
+ add r4, #8
+ add r7, r7, #4
+ cmp r6, #4
+ blo _02215E14
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ ldr r0, _02215ECC ; =0x00070809
+ mov r2, #5
+ str r0, [sp, #8]
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrh r1, [r1, #0x24]
+ mov r3, #0x49
+ bl MOD09_022142FC
+ ldr r0, [r5]
+ mov r1, #5
+ ldrh r0, [r0, #0x24]
+ bl FUN_0206AB18
+ add r1, sp, #0x14
+ strb r0, [r1, #2]
+ ldrb r0, [r1, #2]
+ mov r2, #5
+ strb r0, [r1, #3]
+ add r0, r5, #0
+ add r1, sp, #0x14
+ bl MOD09_022153B0
+ ldr r0, _02215EC4 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x10
+ bl FUN_02019220
+ ldr r0, _02215EC4 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ bl FUN_02019220
+ ldr r0, _02215EC4 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x30
+ bl FUN_02019220
+ ldr r0, _02215EC4 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x40
+ bl FUN_02019220
+ ldr r0, _02215EC4 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x50
+ bl FUN_02019220
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02215EC4: .word 0x00002070
+_02215EC8: .word 0x0221B07C
+_02215ECC: .word 0x00070809
+
+ thumb_func_start MOD09_02215ED0
+MOD09_02215ED0: ; 0x02215ED0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x30
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x40
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x60
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x50
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x70
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x90
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0xa0
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x80
+ bl FUN_02019620
+ ldr r0, _02216090 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0xb0
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ ldr r3, [r5]
+ add r0, r5, #0
+ ldrb r3, [r3, #0x11]
+ add r2, r1, #0
+ bl MOD09_02213E84
+ mov r2, #0
+ add r0, r5, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD09_022143A0
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD09_02214DA0
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD09_02214ED0
+ add r0, r5, #0
+ mov r1, #9
+ bl MOD09_022150C8
+ ldr r1, [r5]
+ add r0, r1, #0
+ add r0, #0x34
+ ldrb r3, [r0]
+ cmp r3, #4
+ bhs _0221600C
+ ldrb r1, [r1, #0x11]
+ add r2, r5, #0
+ mov r0, #0x50
+ add r2, #0x34
+ mul r0, r1
+ add r7, r2, r0
+ lsl r0, r3, #3
+ str r0, [sp, #0xc]
+ add r4, r7, r0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02216094 ; =0x000F0E00
+ lsl r6, r3, #2
+ str r0, [sp, #8]
+ ldr r1, [sp, #0xc]
+ ldr r3, _02216098 ; =0x0221B07C
+ ldrh r1, [r7, r1]
+ ldr r3, [r3, r6]
+ add r0, r5, #0
+ mov r2, #1
+ bl MOD09_022142FC
+ ldrb r2, [r4, #6]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD09_02214DE8
+ ldrb r2, [r4, #7]
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD09_02214F18
+ ldr r2, [sp, #0xc]
+ add r0, r5, #0
+ ldrh r2, [r7, r2]
+ mov r1, #8
+ bl MOD09_02215000
+ ldrb r2, [r4, #5]
+ add r0, r5, #0
+ mov r1, #0xa
+ bl MOD09_0221512C
+ ldrb r2, [r4, #2]
+ ldrb r3, [r4, #3]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD09_022151A8
+ b _02216082
+_0221600C:
+ ldrh r0, [r1, #0x24]
+ mov r1, #5
+ bl FUN_0206AB18
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02216094 ; =0x000F0E00
+ mov r2, #1
+ str r0, [sp, #8]
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrh r1, [r1, #0x24]
+ mov r3, #0x49
+ bl MOD09_022142FC
+ ldr r2, [r5]
+ add r0, r5, #0
+ ldrh r2, [r2, #0x24]
+ mov r1, #8
+ bl MOD09_02215000
+ ldr r0, [r5]
+ mov r1, #4
+ ldrh r0, [r0, #0x24]
+ bl FUN_0206AB18
+ add r2, r0, #0
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD09_02214DE8
+ ldr r0, [r5]
+ mov r1, #2
+ ldrh r0, [r0, #0x24]
+ bl FUN_0206AB18
+ add r2, r0, #0
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD09_02214F18
+ ldr r0, [r5]
+ mov r1, #1
+ ldrh r0, [r0, #0x24]
+ bl FUN_0206AB18
+ add r2, r0, #0
+ add r0, r5, #0
+ mov r1, #0xa
+ bl MOD09_0221512C
+ add r0, r5, #0
+ mov r1, #3
+ add r2, r4, #0
+ add r3, r4, #0
+ bl MOD09_022151A8
+_02216082:
+ add r0, r5, #0
+ mov r1, #0xb
+ bl MOD09_022152DC
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02216090: .word 0x00002070
+_02216094: .word 0x000F0E00
+_02216098: .word 0x0221B07C
+
+ thumb_func_start MOD09_0221609C
+MOD09_0221609C: ; 0x0221609C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, _02216184 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_02019620
+ ldr r0, _02216184 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r0, _02216184 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ bl FUN_02019620
+ ldr r0, _02216184 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x30
+ bl FUN_02019620
+ ldr r0, _02216184 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x40
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ ldr r3, [r5]
+ add r0, r5, #0
+ ldrb r3, [r3, #0x11]
+ add r2, r1, #0
+ bl MOD09_02213E84
+ add r0, r5, #0
+ mov r6, #0
+ str r0, [sp, #0x10]
+ add r0, #0x34
+ ldr r7, _02216188 ; =0x0221B07C
+ add r4, r6, #0
+ str r0, [sp, #0x10]
+_022160FC:
+ ldr r0, [r5]
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, [sp, #0x10]
+ add r0, r0, r2
+ ldrh r1, [r0, r4]
+ str r0, [sp, #0xc]
+ cmp r1, #0
+ beq _02216134
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ ldr r0, _0221618C ; =0x00070809
+ add r2, r6, #1
+ str r0, [sp, #8]
+ ldr r3, [r7]
+ add r0, r5, #0
+ bl MOD09_022142FC
+ ldr r1, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r1, r4
+ add r2, r6, #1
+ bl MOD09_022153B0
+_02216134:
+ add r6, r6, #1
+ add r4, #8
+ add r7, r7, #4
+ cmp r6, #4
+ blo _022160FC
+ ldr r2, [r5]
+ mov r1, #0x25
+ ldrh r0, [r2, #0x22]
+ ldr r2, [r2, #0xc]
+ bl FUN_0206E7B8
+ cmp r0, #0
+ bne _02216156
+ add r0, r5, #0
+ mov r1, #0x5e
+ bl MOD09_022143F8
+_02216156:
+ ldr r0, _02216184 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x10
+ bl FUN_02019220
+ ldr r0, _02216184 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ bl FUN_02019220
+ ldr r0, _02216184 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x30
+ bl FUN_02019220
+ ldr r0, _02216184 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x40
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02216184: .word 0x00002070
+_02216188: .word 0x0221B07C
+_0221618C: .word 0x00070809
+
+ thumb_func_start MOD09_02216190
+MOD09_02216190: ; 0x02216190
+ push {r3, r4, r5, lr}
+ ldr r4, [r0]
+ add r3, r1, #0
+ ldrb r5, [r4, #0x11]
+ add r1, r0, #0
+ mov r4, #0x50
+ add r1, #0x34
+ mul r4, r5
+ add r4, r1, r4
+ lsl r1, r2, #3
+ add r1, r4, r1
+ add r2, r3, #0
+ bl MOD09_022154FC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_022161B0
+MOD09_022161B0: ; 0x022161B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, _02216304 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_02019620
+ ldr r0, _02216304 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x20
+ bl FUN_02019620
+ ldr r0, _02216304 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x30
+ bl FUN_02019620
+ ldr r0, _02216304 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r0, _02216304 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x40
+ bl FUN_02019620
+ ldr r0, _02216304 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x50
+ bl FUN_02019620
+ ldr r0, _02216304 ; =0x00002070
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r0, #0x60
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ ldr r3, [r5]
+ add r0, r5, #0
+ ldrb r3, [r3, #0x11]
+ add r2, r1, #0
+ bl MOD09_02213E84
+ mov r2, #0
+ add r0, r5, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD09_022143A0
+ ldr r0, _02216308 ; =0x00001FA8
+ mov r1, #0x39
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ mov r3, #0x60
+ bl FUN_02002F40
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0221630C ; =0x000F0E00
+ add r2, r4, #0
+ str r0, [sp, #8]
+ ldr r0, _02216304 ; =0x00002070
+ str r1, [sp, #0xc]
+ ldr r0, [r5, r0]
+ add r0, #0x40
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, _02216304 ; =0x00002070
+ ldr r0, [r5, r0]
+ add r0, #0x40
+ bl FUN_02019220
+ ldr r1, [r5]
+ add r0, r1, #0
+ add r0, #0x34
+ ldrb r3, [r0]
+ cmp r3, #4
+ bhs _022162BE
+ ldrb r1, [r1, #0x11]
+ add r2, r5, #0
+ mov r0, #0x50
+ add r2, #0x34
+ mul r0, r1
+ add r4, r2, r0
+ lsl r7, r3, #3
+ add r0, r4, r7
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221630C ; =0x000F0E00
+ lsl r6, r3, #2
+ str r0, [sp, #8]
+ ldr r3, _02216310 ; =0x0221B07C
+ ldrh r1, [r4, r7]
+ ldr r3, [r3, r6]
+ add r0, r5, #0
+ mov r2, #1
+ bl MOD09_022142FC
+ ldrh r2, [r4, r7]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD09_02215060
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x10]
+ ldrb r2, [r2, #2]
+ ldrb r3, [r3, #3]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD09_022151A8
+ b _022162F8
+_022162BE:
+ ldrh r0, [r1, #0x24]
+ mov r1, #5
+ bl FUN_0206AB18
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221630C ; =0x000F0E00
+ mov r2, #1
+ str r0, [sp, #8]
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrh r1, [r1, #0x24]
+ mov r3, #0x49
+ bl MOD09_022142FC
+ ldr r2, [r5]
+ add r0, r5, #0
+ ldrh r2, [r2, #0x24]
+ mov r1, #5
+ bl MOD09_02215060
+ add r0, r5, #0
+ mov r1, #3
+ add r2, r4, #0
+ add r3, r4, #0
+ bl MOD09_022151A8
+_022162F8:
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD09_022152DC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02216304: .word 0x00002070
+_02216308: .word 0x00001FA8
+_0221630C: .word 0x000F0E00
+_02216310: .word 0x0221B07C
+
+ thumb_func_start MOD09_02216314
+MOD09_02216314: ; 0x02216314
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02216338 ; =0x00002060
+ mov r1, #1
+ add r0, r4, r0
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_0200D0BC
+ ldr r0, _02216338 ; =0x00002060
+ mov r1, #0xf
+ add r0, r4, r0
+ bl FUN_02019620
+ add r0, r4, #0
+ bl MOD09_0221633C
+ pop {r4, pc}
+ .align 2, 0
+_02216338: .word 0x00002060
+
+ thumb_func_start MOD09_0221633C
+MOD09_0221633C: ; 0x0221633C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #1
+ bl FUN_02002B60
+ ldr r0, [r4]
+ ldr r0, [r0, #8]
+ bl FUN_02230E54
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r2, _02216370 ; =0x00002060
+ str r3, [sp, #8]
+ add r0, r4, r2
+ sub r2, #0xb0
+ ldr r2, [r4, r2]
+ mov r1, #1
+ bl FUN_0201BD84
+ ldr r1, _02216374 ; =0x0000207B
+ strb r0, [r4, r1]
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02216370: .word 0x00002060
+_02216374: .word 0x0000207B
+
+ thumb_func_start MOD09_02216378
+MOD09_02216378: ; 0x02216378
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0xc]
+ ldrh r0, [r0, #0x22]
+ ldr r2, [r2, #0xc]
+ bl FUN_0206E710
+ ldr r2, [sp, #0xc]
+ add r6, r0, #0
+ ldrb r3, [r2, #0x11]
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0xc]
+ add r2, r2, r3
+ add r2, #0x2c
+ ldrb r2, [r2]
+ ldr r0, [r0, #8]
+ ldr r1, [r1, #0x28]
+ bl FUN_02230014
+ mov r1, #0xa2
+ mov r2, #0
+ add r7, r0, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ add r0, r6, #0
+ mov r1, #0xf
+ mov r4, #0
+ bl FUN_0206E7DC
+ cmp r0, #0
+ beq _022163CC
+ mov r0, #1
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_022163CC:
+ add r0, r6, #0
+ mov r1, #0x10
+ bl FUN_0206E7DC
+ cmp r0, #0
+ beq _022163E0
+ mov r0, #2
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_022163E0:
+ add r0, r6, #0
+ mov r1, #0x11
+ bl FUN_0206E7DC
+ cmp r0, #0
+ beq _022163F4
+ mov r0, #4
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_022163F4:
+ add r0, r6, #0
+ mov r1, #0x12
+ bl FUN_0206E7DC
+ cmp r0, #0
+ beq _02216408
+ mov r0, #8
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02216408:
+ add r0, r6, #0
+ mov r1, #0x13
+ bl FUN_0206E7DC
+ cmp r0, #0
+ beq _0221641C
+ mov r0, #0x10
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_0221641C:
+ add r0, r6, #0
+ mov r1, #0x14
+ bl FUN_0206E7DC
+ cmp r0, #0
+ beq _02216430
+ mov r0, #0x20
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02216430:
+ add r0, r6, #0
+ mov r1, #0x15
+ bl FUN_0206E7DC
+ cmp r0, #0
+ beq _02216444
+ mov r0, #0x40
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_02216444:
+ ldr r0, [sp, #0xc]
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r0, r5, r0
+ ldrh r1, [r0, #0x14]
+ cmp r1, #0
+ bne _0221648E
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ beq _0221648E
+ ldr r0, _022166C8 ; =0x00001FA8
+ mov r1, #0x58
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _022166BE
+_0221648E:
+ ldr r0, [sp, #8]
+ cmp r0, r1
+ beq _022164EA
+ ldr r0, _022166C8 ; =0x00001FA8
+ mov r1, #0x52
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #1
+ ldr r2, [sp, #0xc]
+ str r1, [sp, #4]
+ ldrb r3, [r2, #0x11]
+ mov r2, #0x50
+ ldr r0, _022166CC ; =0x00001FAC
+ mul r2, r3
+ add r2, r5, r2
+ ldrh r3, [r2, #0x14]
+ ldr r2, [sp, #8]
+ ldr r0, [r5, r0]
+ sub r2, r2, r3
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _022166BE
+_022164EA:
+ add r0, r6, #0
+ mov r1, #0x24
+ bl FUN_0206E7DC
+ cmp r0, #0
+ bne _02216502
+ add r0, r6, #0
+ mov r1, #0x25
+ bl FUN_0206E7DC
+ cmp r0, #0
+ beq _02216512
+_02216502:
+ ldr r2, _022166C8 ; =0x00001FA8
+ mov r1, #0x57
+ ldr r0, [r5, r2]
+ add r2, #8
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ b _022166BE
+_02216512:
+ cmp r4, #1
+ ldr r0, _022166C8 ; =0x00001FA8
+ bne _0221654A
+ ldr r0, [r5, r0]
+ mov r1, #0x5c
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _022166BE
+_0221654A:
+ cmp r4, #2
+ bne _02216580
+ ldr r0, [r5, r0]
+ mov r1, #0x53
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _022166BE
+_02216580:
+ cmp r4, #4
+ bne _022165B6
+ ldr r0, [r5, r0]
+ mov r1, #0x55
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _022166BE
+_022165B6:
+ cmp r4, #8
+ bne _022165EC
+ ldr r0, [r5, r0]
+ mov r1, #0x56
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _022166BE
+_022165EC:
+ cmp r4, #0x10
+ bne _02216622
+ ldr r0, [r5, r0]
+ mov r1, #0x54
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _022166BE
+_02216622:
+ cmp r4, #0x20
+ bne _02216658
+ ldr r0, [r5, r0]
+ mov r1, #0x5a
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _022166BE
+_02216658:
+ cmp r4, #0x40
+ bne _0221668E
+ ldr r0, [r5, r0]
+ mov r1, #0x5b
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _022166BE
+_0221668E:
+ ldr r0, [r5, r0]
+ mov r1, #0x59
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _022166CC ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r1, _022166CC ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+_022166BE:
+ add r0, r6, #0
+ bl FUN_02016A18
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022166C8: .word 0x00001FA8
+_022166CC: .word 0x00001FAC
+
+ thumb_func_start MOD09_022166D0
+MOD09_022166D0: ; 0x022166D0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r3, [r5]
+ ldrb r2, [r3, #0x11]
+ ldr r0, [r3, #8]
+ ldr r1, [r3, #0x28]
+ add r2, r3, r2
+ add r2, #0x2c
+ ldrb r2, [r2]
+ bl FUN_02230014
+ add r6, r0, #0
+ ldr r0, _02216728 ; =0x00001FA8
+ mov r1, #0x5f
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r6, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, _0221672C ; =0x00001FAC
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200ACF8
+ ldr r0, _0221672C ; =0x00001FAC
+ ldr r2, _02216730 ; =0x00000175
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ ldr r1, _0221672C ; =0x00001FAC
+ add r2, r4, #0
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02216728: .word 0x00001FA8
+_0221672C: .word 0x00001FAC
+_02216730: .word 0x00000175
+
+ thumb_func_start MOD09_02216734
+MOD09_02216734: ; 0x02216734
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD09_02216770
+ add r0, r4, #0
+ bl MOD09_022167BC
+ add r0, r4, #0
+ bl MOD09_02216894
+ add r0, r4, #0
+ bl MOD09_02216934
+ add r0, r4, #0
+ bl MOD09_022169AC
+ add r0, r4, #0
+ bl MOD09_02216A4C
+ add r0, r4, #0
+ bl MOD09_02216B4C
+ add r0, r4, #0
+ bl MOD09_02217750
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ pop {r4, pc}
+
+ thumb_func_start MOD09_02216770
+MOD09_02216770: ; 0x02216770
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ ldr r3, _022167B4 ; =0x0221B4B8
+ add r2, sp, #0
+ add r5, 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, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_02230078
+ add r4, r0, #0
+ bl FUN_0200BB34
+ ldr r1, _022167B8 ; =0x00001FB4
+ mov r2, #0x2b
+ str r0, [r5, r1]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ bl FUN_0200BBF0
+ ldr r1, _022167B8 ; =0x00001FB4
+ add r0, r4, #0
+ ldr r1, [r5, r1]
+ add r2, sp, #0
+ bl FUN_0200BF60
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_022167B4: .word 0x0221B4B8
+_022167B8: .word 0x00001FB4
+
+ thumb_func_start MOD09_022167BC
+MOD09_022167BC: ; 0x022167BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ ldr r0, [r6]
+ ldr r0, [r0, #8]
+ bl FUN_02230078
+ add r7, r0, #0
+ bl FUN_0206B888
+ mov r1, #0x13
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r1, #3
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _0221688C ; =0x0000B007
+ ldr r3, _02216890 ; =0x00001FB4
+ str r0, [sp, #0x14]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r3, [r6, r3]
+ add r2, r7, #0
+ bl FUN_0200C0DC
+ bl FUN_0206B890
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0221688C ; =0x0000B007
+ ldr r1, _02216890 ; =0x00001FB4
+ str r0, [sp, #4]
+ ldr r1, [r6, r1]
+ add r0, r7, #0
+ mov r2, #0x13
+ bl FUN_0200C124
+ bl FUN_0206B89C
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0221688C ; =0x0000B007
+ ldr r1, _02216890 ; =0x00001FB4
+ str r0, [sp, #4]
+ ldr r1, [r6, r1]
+ add r0, r7, #0
+ mov r2, #0x13
+ bl FUN_0200C13C
+ mov r4, #0
+ add r5, r6, #0
+_0221682E:
+ ldrh r0, [r5, #8]
+ cmp r0, #0
+ beq _02216858
+ ldr r0, [r5, #4]
+ bl FUN_0206B6C8
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0221688C ; =0x0000B007
+ ldr r1, _02216890 ; =0x00001FB4
+ add r0, r4, r0
+ str r0, [sp, #8]
+ ldr r1, [r6, r1]
+ add r0, r7, #0
+ mov r2, #0x13
+ bl FUN_0200C00C
+ b _0221687E
+_02216858:
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_0206B6D4
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0221688C ; =0x0000B007
+ ldr r1, _02216890 ; =0x00001FB4
+ add r0, r4, r0
+ str r0, [sp, #8]
+ ldr r1, [r6, r1]
+ add r0, r7, #0
+ mov r2, #0x13
+ bl FUN_0200C00C
+_0221687E:
+ add r4, r4, #1
+ add r5, #0x50
+ cmp r4, #6
+ blo _0221682E
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221688C: .word 0x0000B007
+_02216890: .word 0x00001FB4
+
+ thumb_func_start MOD09_02216894
+MOD09_02216894: ; 0x02216894
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_02230078
+ add r4, r0, #0
+ bl FUN_0207C2C8
+ mov r1, #0x27
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _02216928 ; =0x0000B008
+ ldr r3, _0221692C ; =0x00001FB4
+ str r0, [sp, #0x14]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r3, [r5, r3]
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200C0DC
+ bl FUN_0207C2CC
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02216928 ; =0x0000B008
+ ldr r1, _0221692C ; =0x00001FB4
+ str r0, [sp, #4]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0x27
+ bl FUN_0200C124
+ bl FUN_0207C2D0
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02216928 ; =0x0000B008
+ ldr r1, _0221692C ; =0x00001FB4
+ str r0, [sp, #4]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0x27
+ bl FUN_0200C13C
+ bl FUN_0207C2C4
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _02216930 ; =0x0000B00D
+ ldr r1, _0221692C ; =0x00001FB4
+ str r0, [sp, #8]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0x27
+ bl FUN_0200C00C
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_02216928: .word 0x0000B008
+_0221692C: .word 0x00001FB4
+_02216930: .word 0x0000B00D
+
+ thumb_func_start MOD09_02216934
+MOD09_02216934: ; 0x02216934
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_02230078
+ add r6, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _0221699C ; =0x0000B009
+ ldr r3, _022169A0 ; =0x00001FB4
+ str r0, [sp, #4]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r3, [r5, r3]
+ mov r1, #3
+ add r2, r6, #0
+ bl FUN_0206E198
+ ldr r1, _022169A0 ; =0x00001FB4
+ ldr r2, _0221699C ; =0x0000B009
+ ldr r1, [r5, r1]
+ add r0, r6, #0
+ add r3, r2, #0
+ bl FUN_0206E1D4
+ ldr r4, _022169A4 ; =0x0000B00E
+ add r7, r4, #6
+_02216970:
+ ldr r1, _022169A0 ; =0x00001FB4
+ str r4, [sp]
+ ldr r1, [r5, r1]
+ add r0, r6, #0
+ mov r2, #2
+ mov r3, #0
+ bl FUN_0206E130
+ add r4, r4, #1
+ cmp r4, r7
+ bls _02216970
+ ldr r0, _022169A8 ; =0x0000B015
+ ldr r1, _022169A0 ; =0x00001FB4
+ str r0, [sp]
+ ldr r1, [r5, r1]
+ add r0, r6, #0
+ mov r2, #2
+ mov r3, #0
+ bl FUN_0206E2AC
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221699C: .word 0x0000B009
+_022169A0: .word 0x00001FB4
+_022169A4: .word 0x0000B00E
+_022169A8: .word 0x0000B015
+
+ thumb_func_start MOD09_022169AC
+MOD09_022169AC: ; 0x022169AC
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_02230078
+ add r4, r0, #0
+ bl FUN_020724C8
+ mov r1, #0x14
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _02216A40 ; =0x0000B00A
+ ldr r3, _02216A44 ; =0x00001FB4
+ str r0, [sp, #0x14]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r3, [r5, r3]
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200C0DC
+ bl FUN_020724CC
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02216A40 ; =0x0000B00A
+ ldr r1, _02216A44 ; =0x00001FB4
+ str r0, [sp, #4]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0x14
+ bl FUN_0200C124
+ bl FUN_020724D0
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02216A40 ; =0x0000B00A
+ ldr r1, _02216A44 ; =0x00001FB4
+ str r0, [sp, #4]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0x14
+ bl FUN_0200C13C
+ bl FUN_020724C4
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _02216A48 ; =0x0000B016
+ ldr r1, _02216A44 ; =0x00001FB4
+ str r0, [sp, #8]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0x14
+ bl FUN_0200C00C
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_02216A40: .word 0x0000B00A
+_02216A44: .word 0x00001FB4
+_02216A48: .word 0x0000B016
+
+ thumb_func_start MOD09_02216A4C
+MOD09_02216A4C: ; 0x02216A4C
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_02230078
+ add r4, r0, #0
+ mov r0, #0x48
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _02216AD0 ; =0x0000B00B
+ ldr r3, _02216AD4 ; =0x00001FB4
+ str r0, [sp, #0x14]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r3, [r5, r3]
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200C0DC
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02216AD0 ; =0x0000B00B
+ ldr r1, _02216AD4 ; =0x00001FB4
+ str r0, [sp, #4]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0x48
+ mov r3, #0x19
+ bl FUN_0200C124
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02216AD0 ; =0x0000B00B
+ ldr r1, _02216AD4 ; =0x00001FB4
+ str r0, [sp, #4]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0x48
+ mov r3, #0x18
+ bl FUN_0200C13C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _02216AD8 ; =0x0000B017
+ ldr r1, _02216AD4 ; =0x00001FB4
+ str r0, [sp, #8]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0x48
+ mov r3, #0x1a
+ bl FUN_0200C00C
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02216AD0: .word 0x0000B00B
+_02216AD4: .word 0x00001FB4
+_02216AD8: .word 0x0000B017
+
+ thumb_func_start MOD09_02216ADC
+MOD09_02216ADC: ; 0x02216ADC
+ push {r4, r5, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ ldr r0, [r0, #8]
+ bl FUN_02230078
+ mov r2, #0
+ add r1, sp, #0
+ strh r2, [r1]
+ strh r2, [r1, #2]
+ strh r2, [r1, #4]
+ strh r2, [r1, #6]
+ mov r1, #0x14
+ ldr r3, _02216B34 ; =0x0221B6F0
+ mul r1, r4
+ ldr r3, [r3, r1]
+ str r2, [sp, #0xc]
+ str r3, [sp, #8]
+ mov r3, #2
+ str r3, [sp, #0x10]
+ ldr r3, _02216B38 ; =0x0221B6E0
+ str r2, [sp, #0x30]
+ ldr r3, [r3, r1]
+ add r2, sp, #0
+ str r3, [sp, #0x14]
+ ldr r3, _02216B3C ; =0x0221B6E4
+ ldr r3, [r3, r1]
+ str r3, [sp, #0x18]
+ ldr r3, _02216B40 ; =0x0221B6E8
+ ldr r3, [r3, r1]
+ str r3, [sp, #0x1c]
+ ldr r3, _02216B44 ; =0x0221B6EC
+ ldr r1, [r3, r1]
+ str r1, [sp, #0x20]
+ mov r1, #1
+ str r1, [sp, #0x2c]
+ ldr r1, _02216B48 ; =0x00001FB4
+ ldr r1, [r5, r1]
+ bl FUN_0200C154
+ add sp, #0x34
+ pop {r4, r5, pc}
+ .align 2, 0
+_02216B34: .word 0x0221B6F0
+_02216B38: .word 0x0221B6E0
+_02216B3C: .word 0x0221B6E4
+_02216B40: .word 0x0221B6E8
+_02216B44: .word 0x0221B6EC
+_02216B48: .word 0x00001FB4
+
+ thumb_func_start MOD09_02216B4C
+MOD09_02216B4C: ; 0x02216B4C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r7, _02216B70 ; =0x00001FB8
+ mov r4, #0
+ add r5, r6, #0
+_02216B56:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD09_02216ADC
+ str r0, [r5, r7]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x26
+ blo _02216B56
+ add r0, r6, #0
+ bl MOD09_02216BD0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02216B70: .word 0x00001FB8
+
+ thumb_func_start MOD09_02216B74
+MOD09_02216B74: ; 0x02216B74
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, [r7]
+ ldr r0, [r0, #8]
+ bl FUN_02230078
+ ldr r6, _02216BA8 ; =0x00001FB8
+ str r0, [sp]
+ mov r4, #0
+ add r5, r7, #0
+_02216B88:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x26
+ blo _02216B88
+ add r0, r7, #0
+ bl MOD09_022177B4
+ ldr r1, _02216BAC ; =0x00001FB4
+ ldr r0, [sp]
+ ldr r1, [r7, r1]
+ bl FUN_0200C398
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02216BA8: .word 0x00001FB8
+_02216BAC: .word 0x00001FB4
+
+ thumb_func_start MOD09_02216BB0
+MOD09_02216BB0: ; 0x02216BB0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ mov r1, #1
+ add r6, r0, #0
+ bl FUN_0200C644
+ lsl r1, r5, #0x10
+ lsl r2, r4, #0x10
+ add r0, r6, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02216BD0
+MOD09_02216BD0: ; 0x02216BD0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ mov r7, #0
+ add r4, #0x1b
+ add r6, r5, #0
+_02216BDC:
+ ldrh r0, [r5, #8]
+ cmp r0, #0
+ beq _02216BFC
+ add r1, r5, #0
+ ldrb r2, [r4]
+ add r1, #0x32
+ ldrb r1, [r1]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1f
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, _02216C0C ; =0x00001FD4
+ ldr r0, [r6, r0]
+ bl FUN_0200C66C
+_02216BFC:
+ add r7, r7, #1
+ add r5, #0x50
+ add r4, #0x50
+ add r6, r6, #4
+ cmp r7, #6
+ blt _02216BDC
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02216C0C: .word 0x00001FD4
+
+ thumb_func_start MOD09_02216C10
+MOD09_02216C10: ; 0x02216C10
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r3, #0
+ ldr r0, [r0, #8]
+ add r7, r1, #0
+ add r4, r2, #0
+ bl FUN_02230078
+ str r0, [sp, #8]
+ bl FUN_0206E12C
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ bl FUN_0206E0F0
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r1, _02216C5C ; =0x00001FB4
+ str r4, [sp, #4]
+ ldr r0, [sp, #8]
+ ldr r1, [r5, r1]
+ ldr r2, [sp, #0xc]
+ bl FUN_0200C9D8
+ add r0, r6, #0
+ bl FUN_0206E114
+ add r1, r0, #0
+ add r0, r7, #0
+ add r1, r1, #4
+ bl FUN_0200C66C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02216C5C: .word 0x00001FB4
+
+ thumb_func_start MOD09_02216C60
+MOD09_02216C60: ; 0x02216C60
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r2, #0
+ ldr r0, [r0, #8]
+ add r6, r1, #0
+ bl FUN_02230078
+ add r7, r0, #0
+ bl FUN_0206E2A8
+ str r0, [sp, #8]
+ add r0, r4, #0
+ bl FUN_0206E278
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02216CAC ; =0x0000B015
+ ldr r1, _02216CB0 ; =0x00001FB4
+ str r0, [sp, #4]
+ ldr r1, [r5, r1]
+ ldr r2, [sp, #8]
+ add r0, r7, #0
+ bl FUN_0200C9D8
+ add r0, r4, #0
+ bl FUN_0206E290
+ add r1, r0, #0
+ add r0, r6, #0
+ add r1, r1, #4
+ bl FUN_0200C66C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02216CAC: .word 0x0000B015
+_02216CB0: .word 0x00001FB4
+
+ thumb_func_start MOD09_02216CB4
+MOD09_02216CB4: ; 0x02216CB4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ add r7, r3, #0
+ cmp r6, #7
+ beq _02216CD4
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0200C5C0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD09_02216BB0
+_02216CD4:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02216CD8
+MOD09_02216CD8: ; 0x02216CD8
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ ldr r1, _02216D1C ; =0x00002004
+ add r5, r0, #0
+ add r6, r2, #0
+ ldrb r3, [r4, #0x14]
+ ldr r1, [r5, r1]
+ ldr r2, _02216D20 ; =0x0000B00E
+ bl MOD09_02216C10
+ ldr r0, _02216D1C ; =0x00002004
+ ldr r1, [r6]
+ ldr r0, [r5, r0]
+ ldr r2, [r6, #4]
+ bl MOD09_02216BB0
+ ldrb r3, [r4, #0x15]
+ ldrb r0, [r4, #0x14]
+ cmp r0, r3
+ beq _02216D18
+ ldr r1, _02216D24 ; =0x00002008
+ ldr r2, _02216D28 ; =0x0000B00F
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ bl MOD09_02216C10
+ ldr r0, _02216D24 ; =0x00002008
+ ldr r1, [r6, #8]
+ ldr r0, [r5, r0]
+ ldr r2, [r6, #0xc]
+ bl MOD09_02216BB0
+_02216D18:
+ pop {r4, r5, r6, pc}
+ nop
+_02216D1C: .word 0x00002004
+_02216D20: .word 0x0000B00E
+_02216D24: .word 0x00002008
+_02216D28: .word 0x0000B00F
+
+ thumb_func_start MOD09_02216D2C
+MOD09_02216D2C: ; 0x02216D2C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ cmp r0, #0
+ beq _02216D5C
+ bl FUN_0206EA98
+ cmp r0, #1
+ bne _02216D4A
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200C5C0
+ b _02216D52
+_02216D4A:
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0200C5C0
+_02216D52:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD09_02216BB0
+_02216D5C:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02216D60
+MOD09_02216D60: ; 0x02216D60
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ cmp r0, #0
+ beq _02216D7E
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_0200C5C0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD09_02216BB0
+_02216D7E:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD09_02216D80
+MOD09_02216D80: ; 0x02216D80
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r7, _02216E14 ; =0x00001FB8
+ str r1, [sp]
+ mov r5, #0
+ add r4, r6, #0
+_02216D8C:
+ ldr r0, [r4, r7]
+ mov r1, #0
+ bl FUN_0200C644
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #0x26
+ blo _02216D8C
+ ldr r0, [sp]
+ cmp r0, #9
+ bhi _02216E10
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02216DAE: ; jump table
+ .short _02216DC2 - _02216DAE - 2 ; case 0
+ .short _02216DCA - _02216DAE - 2 ; case 1
+ .short _02216DD2 - _02216DAE - 2 ; case 2
+ .short _02216DDA - _02216DAE - 2 ; case 3
+ .short _02216DE2 - _02216DAE - 2 ; case 4
+ .short _02216DEA - _02216DAE - 2 ; case 5
+ .short _02216DF2 - _02216DAE - 2 ; case 6
+ .short _02216DFA - _02216DAE - 2 ; case 7
+ .short _02216E02 - _02216DAE - 2 ; case 8
+ .short _02216E0A - _02216DAE - 2 ; case 9
+_02216DC2:
+ add r0, r6, #0
+ bl MOD09_02216E18
+ pop {r3, r4, r5, r6, r7, pc}
+_02216DCA:
+ add r0, r6, #0
+ bl MOD09_02216EB4
+ pop {r3, r4, r5, r6, r7, pc}
+_02216DD2:
+ add r0, r6, #0
+ bl MOD09_02216F0C
+ pop {r3, r4, r5, r6, r7, pc}
+_02216DDA:
+ add r0, r6, #0
+ bl MOD09_02216FA4
+ pop {r3, r4, r5, r6, r7, pc}
+_02216DE2:
+ add r0, r6, #0
+ bl MOD09_0221707C
+ pop {r3, r4, r5, r6, r7, pc}
+_02216DEA:
+ add r0, r6, #0
+ bl MOD09_02217270
+ pop {r3, r4, r5, r6, r7, pc}
+_02216DF2:
+ add r0, r6, #0
+ bl MOD09_02217140
+ pop {r3, r4, r5, r6, r7, pc}
+_02216DFA:
+ add r0, r6, #0
+ bl MOD09_022171AC
+ pop {r3, r4, r5, r6, r7, pc}
+_02216E02:
+ add r0, r6, #0
+ bl MOD09_02217354
+ pop {r3, r4, r5, r6, r7, pc}
+_02216E0A:
+ add r0, r6, #0
+ bl MOD09_022172DC
+_02216E10:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02216E14: .word 0x00001FB8
+
+ thumb_func_start MOD09_02216E18
+MOD09_02216E18: ; 0x02216E18
+ 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, #0x1b
+ ldr r4, _02216E9C ; =0x0221B5D0
+ ldr r7, _02216EA0 ; =0x0221B600
+ add r5, r6, #0
+ str r0, [sp]
+_02216E30:
+ ldrh r0, [r6, #8]
+ cmp r0, #0
+ beq _02216E7E
+ ldr r0, _02216EA4 ; =0x00001FD4
+ ldr r1, [r4]
+ ldr r0, [r5, r0]
+ ldr r2, [r4, #4]
+ bl MOD09_02216BB0
+ ldr r0, [sp]
+ ldr r1, _02216EA8 ; =0x00001FEC
+ ldrb r0, [r0]
+ ldr r1, [r5, r1]
+ ldr r2, [r7]
+ lsl r0, r0, #0x19
+ ldr r3, [r7, #4]
+ lsr r0, r0, #0x1c
+ bl MOD09_02216CB4
+ ldr r1, _02216EAC ; =0x00001FB8
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ ldrh r0, [r6, #0x1e]
+ ldr r1, [r5, r1]
+ add r2, #8
+ add r3, #8
+ bl MOD09_02216D2C
+ add r0, r6, #0
+ add r0, #0x31
+ ldr r1, _02216EB0 ; =0x00002038
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ ldrb r0, [r0]
+ ldr r1, [r5, r1]
+ add r2, #0x10
+ add r3, #8
+ bl MOD09_02216D60
+_02216E7E:
+ ldr r0, [sp]
+ add r6, #0x50
+ add r0, #0x50
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r4, #8
+ add r0, r0, #1
+ add r5, r5, #4
+ add r7, #8
+ str r0, [sp, #4]
+ cmp r0, #6
+ blt _02216E30
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02216E9C: .word 0x0221B5D0
+_02216EA0: .word 0x0221B600
+_02216EA4: .word 0x00001FD4
+_02216EA8: .word 0x00001FEC
+_02216EAC: .word 0x00001FB8
+_02216EB0: .word 0x00002038
+
+ thumb_func_start MOD09_02216EB4
+MOD09_02216EB4: ; 0x02216EB4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r1, r5, #4
+ ldrb r2, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r2
+ add r4, r1, r0
+ add r0, r2, #7
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _02216F08 ; =0x00001FB8
+ mov r2, #0x48
+ ldr r0, [r1, r0]
+ mov r1, #0x80
+ bl MOD09_02216BB0
+ ldr r1, [r5]
+ ldrh r0, [r4, #0x1a]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x50
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02216F08 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x88
+ bl MOD09_02216D2C
+ ldr r1, [r5]
+ add r4, #0x2d
+ ldrb r1, [r1, #0x11]
+ ldrb r0, [r4]
+ mov r3, #0x50
+ add r1, #0x20
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02216F08 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x90
+ bl MOD09_02216D60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02216F08: .word 0x00001FB8
+
+ thumb_func_start MOD09_02216F0C
+MOD09_02216F0C: ; 0x02216F0C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r1, r5, #4
+ ldrb r2, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r2
+ add r4, r1, r0
+ add r0, r2, #7
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _02216F98 ; =0x00001FB8
+ mov r2, #0xc
+ ldr r0, [r1, r0]
+ mov r1, #0x18
+ bl MOD09_02216BB0
+ ldr r1, [r5]
+ ldrb r0, [r4, #0x17]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x14
+ lsl r0, r0, #0x19
+ add r1, #0xd
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02216F98 ; =0x00001FB8
+ lsr r0, r0, #0x1c
+ ldr r1, [r2, r1]
+ mov r2, #0xc6
+ bl MOD09_02216CB4
+ ldr r2, _02216F9C ; =0x0221B490
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02216CD8
+ ldr r1, [r5]
+ ldrh r0, [r4, #0x1a]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x14
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02216F98 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x20
+ bl MOD09_02216D2C
+ ldr r1, [r5]
+ add r0, r4, #0
+ ldrb r1, [r1, #0x11]
+ add r0, #0x2d
+ ldrb r0, [r0]
+ add r1, #0x20
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02216F98 ; =0x00001FB8
+ mov r3, #0x14
+ ldr r1, [r2, r1]
+ mov r2, #0x28
+ bl MOD09_02216D60
+ ldr r1, _02216FA0 ; =0x00001FD0
+ ldrh r0, [r4, #0x1a]
+ ldr r1, [r5, r1]
+ mov r2, #0x14
+ mov r3, #0x84
+ bl MOD09_02216D2C
+ pop {r3, r4, r5, pc}
+ nop
+_02216F98: .word 0x00001FB8
+_02216F9C: .word 0x0221B490
+_02216FA0: .word 0x00001FD0
+
+ thumb_func_start MOD09_02216FA4
+MOD09_02216FA4: ; 0x02216FA4
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ ldr r0, [r0]
+ ldrb r2, [r0, #0x11]
+ ldr r0, [sp]
+ add r1, r0, #4
+ mov r0, #0x50
+ mul r0, r2
+ add r4, r1, r0
+ add r0, r2, #7
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ mov r2, #0xc
+ add r1, r0, r1
+ ldr r0, _02217068 ; =0x00001FB8
+ ldr r0, [r1, r0]
+ mov r1, #0x18
+ bl MOD09_02216BB0
+ ldr r1, [sp]
+ ldrb r0, [r4, #0x17]
+ ldr r1, [r1]
+ mov r3, #0x14
+ ldrb r1, [r1, #0x11]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1c
+ add r1, #0xd
+ lsl r2, r1, #2
+ ldr r1, [sp]
+ add r2, r1, r2
+ ldr r1, _02217068 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0xc6
+ bl MOD09_02216CB4
+ ldr r0, [sp]
+ ldr r2, _0221706C ; =0x0221B470
+ add r1, r4, #0
+ bl MOD09_02216CD8
+ ldr r1, [sp]
+ ldrh r0, [r4, #0x1a]
+ ldr r1, [r1]
+ mov r3, #0x14
+ ldrb r1, [r1, #0x11]
+ lsl r2, r1, #2
+ ldr r1, [sp]
+ add r2, r1, r2
+ ldr r1, _02217068 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x20
+ bl MOD09_02216D2C
+ ldr r1, [sp]
+ add r0, r4, #0
+ ldr r1, [r1]
+ add r0, #0x2d
+ ldrb r1, [r1, #0x11]
+ ldrb r0, [r0]
+ mov r3, #0x14
+ add r1, #0x20
+ lsl r2, r1, #2
+ ldr r1, [sp]
+ add r2, r1, r2
+ ldr r1, _02217068 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x28
+ bl MOD09_02216D60
+ ldr r5, [sp]
+ ldr r6, _02217070 ; =0x0221B4F0
+ mov r7, #0
+_02217034:
+ ldrh r0, [r4, #0x30]
+ cmp r0, #0
+ beq _0221705A
+ add r3, r4, #0
+ ldr r1, _02217074 ; =0x0000200C
+ add r3, #0x34
+ ldr r2, _02217078 ; =0x0000B010
+ ldrb r3, [r3]
+ ldr r0, [sp]
+ ldr r1, [r5, r1]
+ add r2, r7, r2
+ bl MOD09_02216C10
+ ldr r0, _02217074 ; =0x0000200C
+ ldr r1, [r6]
+ ldr r0, [r5, r0]
+ ldr r2, [r6, #4]
+ bl MOD09_02216BB0
+_0221705A:
+ add r7, r7, #1
+ add r4, #8
+ add r5, r5, #4
+ add r6, #8
+ cmp r7, #4
+ blo _02217034
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02217068: .word 0x00001FB8
+_0221706C: .word 0x0221B470
+_02217070: .word 0x0221B4F0
+_02217074: .word 0x0000200C
+_02217078: .word 0x0000B010
+
+ thumb_func_start MOD09_0221707C
+MOD09_0221707C: ; 0x0221707C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r1, r5, #4
+ ldrb r2, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r2
+ add r4, r1, r0
+ add r0, r2, #7
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _02217134 ; =0x00001FB8
+ mov r2, #0xc
+ ldr r0, [r1, r0]
+ mov r1, #0x18
+ bl MOD09_02216BB0
+ ldr r1, [r5]
+ ldrb r0, [r4, #0x17]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x14
+ lsl r0, r0, #0x19
+ add r1, #0xd
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02217134 ; =0x00001FB8
+ lsr r0, r0, #0x1c
+ ldr r1, [r2, r1]
+ mov r2, #0xc6
+ bl MOD09_02216CB4
+ ldr r2, _02217138 ; =0x0221B480
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02216CD8
+ ldr r0, [r5]
+ mov r2, #0x30
+ add r0, #0x34
+ ldrb r0, [r0]
+ add r0, #0x15
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _02217134 ; =0x00001FB8
+ ldr r0, [r1, r0]
+ mov r1, #0x88
+ bl MOD09_02216BB0
+ ldr r1, [r5]
+ ldrh r0, [r4, #0x1a]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x14
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02217134 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x20
+ bl MOD09_02216D2C
+ ldr r1, [r5]
+ add r0, r4, #0
+ ldrb r1, [r1, #0x11]
+ add r0, #0x2d
+ ldrb r0, [r0]
+ add r1, #0x20
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02217134 ; =0x00001FB8
+ mov r3, #0x14
+ ldr r1, [r2, r1]
+ mov r2, #0x28
+ bl MOD09_02216D60
+ ldr r2, [r5]
+ ldr r1, _0221713C ; =0x00002020
+ add r2, #0x34
+ ldrb r2, [r2]
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ lsl r2, r2, #3
+ add r2, r4, r2
+ add r2, #0x35
+ ldrb r2, [r2]
+ bl MOD09_02216C60
+ ldr r0, _0221713C ; =0x00002020
+ mov r1, #0x18
+ ldr r0, [r5, r0]
+ mov r2, #0x58
+ bl MOD09_02216BB0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02217134: .word 0x00001FB8
+_02217138: .word 0x0221B480
+_0221713C: .word 0x00002020
+
+ thumb_func_start MOD09_02217140
+MOD09_02217140: ; 0x02217140
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r1, r5, #4
+ ldrb r2, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r2
+ add r4, r1, r0
+ add r0, r2, #7
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _022171A4 ; =0x00001FB8
+ mov r2, #0xc
+ ldr r0, [r1, r0]
+ mov r1, #0x18
+ bl MOD09_02216BB0
+ ldr r2, _022171A8 ; =0x0221B460
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02216CD8
+ ldr r1, [r5]
+ ldrh r0, [r4, #0x1a]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x14
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _022171A4 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x20
+ bl MOD09_02216D2C
+ ldr r1, [r5]
+ add r4, #0x2d
+ ldrb r1, [r1, #0x11]
+ ldrb r0, [r4]
+ mov r3, #0x14
+ add r1, #0x20
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _022171A4 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x28
+ bl MOD09_02216D60
+ add r0, r5, #0
+ bl MOD09_022174EC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022171A4: .word 0x00001FB8
+_022171A8: .word 0x0221B460
+
+ thumb_func_start MOD09_022171AC
+MOD09_022171AC: ; 0x022171AC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r1, r5, #4
+ ldrb r2, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r2
+ add r4, r1, r0
+ add r0, r2, #7
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _02217264 ; =0x00001FB8
+ mov r2, #0xc
+ ldr r0, [r1, r0]
+ mov r1, #0x18
+ bl MOD09_02216BB0
+ ldr r2, _02217268 ; =0x0221B450
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02216CD8
+ ldr r0, [r5]
+ mov r2, #0x30
+ add r0, #0x34
+ ldrb r0, [r0]
+ add r0, #0x15
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _02217264 ; =0x00001FB8
+ ldr r0, [r1, r0]
+ mov r1, #0x88
+ bl MOD09_02216BB0
+ ldr r1, [r5]
+ ldrh r0, [r4, #0x1a]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x14
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02217264 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x20
+ bl MOD09_02216D2C
+ ldr r1, [r5]
+ add r0, r4, #0
+ ldrb r1, [r1, #0x11]
+ add r0, #0x2d
+ ldrb r0, [r0]
+ add r1, #0x20
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02217264 ; =0x00001FB8
+ mov r3, #0x14
+ ldr r1, [r2, r1]
+ mov r2, #0x28
+ bl MOD09_02216D60
+ ldr r1, [r5]
+ add r0, r1, #0
+ add r0, #0x34
+ ldrb r2, [r0]
+ cmp r2, #4
+ bhs _02217242
+ lsl r2, r2, #3
+ add r2, r4, r2
+ ldr r1, _0221726C ; =0x00002020
+ add r2, #0x35
+ ldrb r2, [r2]
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ bl MOD09_02216C60
+ b _02217256
+_02217242:
+ ldrh r0, [r1, #0x24]
+ mov r1, #1
+ bl FUN_0206AB18
+ ldr r1, _0221726C ; =0x00002020
+ add r2, r0, #0
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ bl MOD09_02216C60
+_02217256:
+ ldr r0, _0221726C ; =0x00002020
+ mov r1, #0x18
+ ldr r0, [r5, r0]
+ mov r2, #0x58
+ bl MOD09_02216BB0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02217264: .word 0x00001FB8
+_02217268: .word 0x0221B450
+_0221726C: .word 0x00002020
+
+ thumb_func_start MOD09_02217270
+MOD09_02217270: ; 0x02217270
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r1, r5, #4
+ ldrb r2, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r2
+ add r4, r1, r0
+ add r0, r2, #7
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _022172D4 ; =0x00001FB8
+ mov r2, #0xc
+ ldr r0, [r1, r0]
+ mov r1, #0x18
+ bl MOD09_02216BB0
+ ldr r2, _022172D8 ; =0x0221B460
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02216CD8
+ ldr r1, [r5]
+ ldrh r0, [r4, #0x1a]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x14
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _022172D4 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x20
+ bl MOD09_02216D2C
+ ldr r1, [r5]
+ add r4, #0x2d
+ ldrb r1, [r1, #0x11]
+ ldrb r0, [r4]
+ mov r3, #0x14
+ add r1, #0x20
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _022172D4 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x28
+ bl MOD09_02216D60
+ add r0, r5, #0
+ bl MOD09_022174EC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022172D4: .word 0x00001FB8
+_022172D8: .word 0x0221B460
+
+ thumb_func_start MOD09_022172DC
+MOD09_022172DC: ; 0x022172DC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r1, r5, #4
+ ldrb r2, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r2
+ add r4, r1, r0
+ add r0, r2, #7
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _02217350 ; =0x00001FB8
+ mov r2, #0xc
+ ldr r0, [r1, r0]
+ mov r1, #0x18
+ bl MOD09_02216BB0
+ ldr r0, [r5]
+ mov r2, #0x48
+ add r0, #0x34
+ ldrb r0, [r0]
+ add r0, #0x15
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _02217350 ; =0x00001FB8
+ ldr r0, [r1, r0]
+ mov r1, #0x88
+ bl MOD09_02216BB0
+ ldr r1, [r5]
+ ldrh r0, [r4, #0x1a]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x14
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02217350 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x20
+ bl MOD09_02216D2C
+ ldr r1, [r5]
+ add r4, #0x2d
+ ldrb r1, [r1, #0x11]
+ ldrb r0, [r4]
+ mov r3, #0x14
+ add r1, #0x20
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _02217350 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x28
+ bl MOD09_02216D60
+ add r0, r5, #0
+ bl MOD09_02217624
+ pop {r3, r4, r5, pc}
+ nop
+_02217350: .word 0x00001FB8
+
+ thumb_func_start MOD09_02217354
+MOD09_02217354: ; 0x02217354
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r1, r5, #4
+ ldrb r2, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r2
+ add r4, r1, r0
+ add r0, r2, #7
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _022173B4 ; =0x00001FB8
+ mov r2, #0xc
+ ldr r0, [r1, r0]
+ mov r1, #0x18
+ bl MOD09_02216BB0
+ ldr r1, [r5]
+ ldrh r0, [r4, #0x1a]
+ ldrb r1, [r1, #0x11]
+ mov r3, #0x14
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _022173B4 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x20
+ bl MOD09_02216D2C
+ ldr r1, [r5]
+ add r4, #0x2d
+ ldrb r1, [r1, #0x11]
+ ldrb r0, [r4]
+ mov r3, #0x14
+ add r1, #0x20
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _022173B4 ; =0x00001FB8
+ ldr r1, [r2, r1]
+ mov r2, #0x28
+ bl MOD09_02216D60
+ add r0, r5, #0
+ bl MOD09_022174EC
+ add r0, r5, #0
+ bl MOD09_02217624
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022173B4: .word 0x00001FB8
+
+ thumb_func_start MOD09_022173B8
+MOD09_022173B8: ; 0x022173B8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ add r2, r6, #4
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ mov r4, #0
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [sp]
+_022173CC:
+ ldr r0, [sp]
+ lsl r5, r4, #3
+ add r3, r0, r5
+ ldrh r0, [r3, #0x30]
+ cmp r0, #0
+ beq _02217400
+ lsl r0, r4, #2
+ add r3, #0x34
+ add r7, r6, r0
+ ldr r1, _02217438 ; =0x0000200C
+ ldr r2, _0221743C ; =0x0000B010
+ ldrb r3, [r3]
+ ldr r1, [r7, r1]
+ add r0, r6, #0
+ add r2, r4, r2
+ bl MOD09_02216C10
+ ldr r0, _02217440 ; =0x0221B5A8
+ ldr r1, _02217440 ; =0x0221B5A8
+ add r2, r0, r5
+ ldr r0, _02217438 ; =0x0000200C
+ ldr r1, [r1, r5]
+ ldr r0, [r7, r0]
+ ldr r2, [r2, #4]
+ bl MOD09_02216BB0
+_02217400:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #4
+ blo _022173CC
+ ldr r0, [r6]
+ ldrh r0, [r0, #0x24]
+ cmp r0, #0
+ beq _02217436
+ mov r1, #3
+ bl FUN_0206AB18
+ add r3, r0, #0
+ ldr r1, _02217444 ; =0x0000201C
+ lsl r3, r3, #0x18
+ ldr r1, [r6, r1]
+ ldr r2, _02217448 ; =0x0000B014
+ add r0, r6, #0
+ lsr r3, r3, #0x18
+ bl MOD09_02216C10
+ ldr r0, _02217444 ; =0x0000201C
+ mov r1, #0x58
+ ldr r0, [r6, r0]
+ mov r2, #0xb0
+ bl MOD09_02216BB0
+_02217436:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02217438: .word 0x0000200C
+_0221743C: .word 0x0000B010
+_02217440: .word 0x0221B5A8
+_02217444: .word 0x0000201C
+_02217448: .word 0x0000B014
+
+ thumb_func_start MOD09_0221744C
+MOD09_0221744C: ; 0x0221744C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, [r7]
+ add r2, r7, #4
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ mov r4, #0
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [sp]
+_02217460:
+ ldr r0, [sp]
+ lsl r5, r4, #3
+ add r0, r0, r5
+ ldrh r0, [r0, #0x30]
+ cmp r0, #0
+ beq _0221749E
+ lsl r1, r4, #2
+ add r6, r7, r1
+ mov r1, #0xb
+ bl FUN_0206AB18
+ add r3, r0, #0
+ ldr r1, _022174D8 ; =0x0000200C
+ ldr r2, _022174DC ; =0x0000B010
+ add r3, #0x12
+ lsl r3, r3, #0x18
+ ldr r1, [r6, r1]
+ add r0, r7, #0
+ add r2, r4, r2
+ lsr r3, r3, #0x18
+ bl MOD09_02216C10
+ ldr r0, _022174E0 ; =0x0221B5A8
+ ldr r1, _022174E0 ; =0x0221B5A8
+ add r2, r0, r5
+ ldr r0, _022174D8 ; =0x0000200C
+ ldr r1, [r1, r5]
+ ldr r0, [r6, r0]
+ ldr r2, [r2, #4]
+ bl MOD09_02216BB0
+_0221749E:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #4
+ blo _02217460
+ ldr r0, [r7]
+ ldrh r0, [r0, #0x24]
+ cmp r0, #0
+ beq _022174D6
+ mov r1, #0xb
+ bl FUN_0206AB18
+ add r3, r0, #0
+ ldr r1, _022174E4 ; =0x0000201C
+ add r3, #0x12
+ lsl r3, r3, #0x18
+ ldr r1, [r7, r1]
+ ldr r2, _022174E8 ; =0x0000B014
+ add r0, r7, #0
+ lsr r3, r3, #0x18
+ bl MOD09_02216C10
+ ldr r0, _022174E4 ; =0x0000201C
+ mov r1, #0x58
+ ldr r0, [r7, r0]
+ mov r2, #0xb0
+ bl MOD09_02216BB0
+_022174D6:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022174D8: .word 0x0000200C
+_022174DC: .word 0x0000B010
+_022174E0: .word 0x0221B5A8
+_022174E4: .word 0x0000201C
+_022174E8: .word 0x0000B014
+
+ thumb_func_start MOD09_022174EC
+MOD09_022174EC: ; 0x022174EC
+ push {r3, lr}
+ ldr r1, _02217504 ; =0x00002077
+ ldrb r1, [r0, r1]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bne _022174FE
+ bl MOD09_022173B8
+ pop {r3, pc}
+_022174FE:
+ bl MOD09_0221744C
+ pop {r3, pc}
+ .align 2, 0
+_02217504: .word 0x00002077
+
+ thumb_func_start MOD09_02217508
+MOD09_02217508: ; 0x02217508
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C5CC
+ cmp r4, r0
+ beq _02217526
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0200C61C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200C5C0
+_02217526:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD09_02217528
+MOD09_02217528: ; 0x02217528
+ push {r3, lr}
+ add r2, r0, #0
+ ldrh r0, [r2, #0x10]
+ cmp r0, #0
+ bne _02217536
+ mov r0, #0
+ pop {r3, pc}
+_02217536:
+ ldrb r1, [r2, #0x17]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ cmp r1, #7
+ beq _02217548
+ cmp r1, #6
+ beq _02217548
+ mov r0, #5
+ pop {r3, pc}
+_02217548:
+ ldrh r1, [r2, #0x12]
+ mov r2, #0x30
+ bl FUN_02079A54
+ cmp r0, #4
+ bhi _0221757A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02217560: ; jump table
+ .short _0221757A - _02217560 - 2 ; case 0
+ .short _02217576 - _02217560 - 2 ; case 1
+ .short _02217572 - _02217560 - 2 ; case 2
+ .short _0221756E - _02217560 - 2 ; case 3
+ .short _0221756A - _02217560 - 2 ; case 4
+_0221756A:
+ mov r0, #1
+ pop {r3, pc}
+_0221756E:
+ mov r0, #2
+ pop {r3, pc}
+_02217572:
+ mov r0, #3
+ pop {r3, pc}
+_02217576:
+ mov r0, #4
+ pop {r3, pc}
+_0221757A:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02217580
+MOD09_02217580: ; 0x02217580
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r4, #0
+ ldr r0, [r0]
+ bl FUN_0206B9AC
+ cmp r0, #0
+ ble _022175D8
+ add r7, r5, #4
+_02217594:
+ mov r0, #0x50
+ add r1, r4, #0
+ mul r1, r0
+ add r0, r5, r1
+ ldrh r0, [r0, #8]
+ cmp r0, #0
+ beq _022175C6
+ add r0, r7, r1
+ bl MOD09_02217528
+ add r1, r0, #0
+ lsl r0, r4, #2
+ add r6, r5, r0
+ ldr r0, _022175DC ; =0x00001FD4
+ lsl r1, r1, #0x18
+ ldr r0, [r6, r0]
+ lsr r1, r1, #0x18
+ bl MOD09_02217508
+ ldr r0, _022175DC ; =0x00001FD4
+ mov r1, #1
+ ldr r0, [r6, r0]
+ lsl r1, r1, #0xc
+ bl FUN_0200C5B4
+_022175C6:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_0206B9AC
+ cmp r4, r0
+ blt _02217594
+_022175D8:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022175DC: .word 0x00001FD4
+
+ thumb_func_start MOD09_022175E0
+MOD09_022175E0: ; 0x022175E0
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r4, r1
+ ble _02217606
+ add r0, #0x2c
+ sub r1, r4, r1
+ mul r1, r0
+ lsl r0, r1, #0x10
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ bl _u32_div_f
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ sub r0, r4, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ pop {r4, pc}
+_02217606:
+ add r0, #0x2c
+ sub r1, r1, r4
+ mul r1, r0
+ lsl r0, r1, #0x10
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ bl _u32_div_f
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, r4, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ pop {r4, pc}
+
+ thumb_func_start MOD09_02217624
+MOD09_02217624: ; 0x02217624
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ add r5, r6, #4
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ add r4, r1, #0
+ mul r4, r0
+ ldr r0, _0221773C ; =0x00002024
+ mov r1, #0
+ ldr r0, [r6, r0]
+ bl MOD09_02217508
+ ldr r0, _02217740 ; =0x00002028
+ mov r1, #1
+ ldr r0, [r6, r0]
+ bl MOD09_02217508
+ ldr r0, _02217744 ; =0x0000202C
+ mov r1, #3
+ ldr r0, [r6, r0]
+ bl MOD09_02217508
+ ldr r0, _02217748 ; =0x00002030
+ mov r1, #4
+ ldr r0, [r6, r0]
+ bl MOD09_02217508
+ ldr r0, _0221774C ; =0x00002034
+ mov r1, #2
+ ldr r0, [r6, r0]
+ bl MOD09_02217508
+ add r0, r5, r4
+ add r0, #0x28
+ mov r1, #0x90
+ ldrb r0, [r0]
+ add r2, r1, #0
+ bl MOD09_022175E0
+ add r7, r0, #0
+ add r0, r5, r4
+ add r0, #0x28
+ ldrb r0, [r0]
+ mov r1, #2
+ mov r2, #0x18
+ bl MOD09_022175E0
+ add r2, r0, #0
+ ldr r0, _0221773C ; =0x00002024
+ add r1, r7, #0
+ ldr r0, [r6, r0]
+ bl MOD09_02216BB0
+ add r0, r5, r4
+ add r0, #0x29
+ ldrb r0, [r0]
+ mov r1, #0xa7
+ mov r2, #0x90
+ bl MOD09_022175E0
+ add r7, r0, #0
+ add r0, r5, r4
+ add r0, #0x29
+ ldrb r0, [r0]
+ mov r1, #0x12
+ mov r2, #0x18
+ bl MOD09_022175E0
+ add r2, r0, #0
+ ldr r0, _02217740 ; =0x00002028
+ add r1, r7, #0
+ ldr r0, [r6, r0]
+ bl MOD09_02216BB0
+ add r0, r5, r4
+ add r0, #0x2a
+ ldrb r0, [r0]
+ mov r1, #0x9f
+ mov r2, #0x90
+ bl MOD09_022175E0
+ add r7, r0, #0
+ add r0, r5, r4
+ add r0, #0x2a
+ ldrb r0, [r0]
+ mov r1, #0x2f
+ mov r2, #0x18
+ bl MOD09_022175E0
+ add r2, r0, #0
+ ldr r0, _02217744 ; =0x0000202C
+ add r1, r7, #0
+ ldr r0, [r6, r0]
+ bl MOD09_02216BB0
+ add r0, r5, r4
+ add r0, #0x2b
+ ldrb r0, [r0]
+ mov r1, #0x80
+ mov r2, #0x8f
+ bl MOD09_022175E0
+ add r7, r0, #0
+ add r0, r5, r4
+ add r0, #0x2b
+ ldrb r0, [r0]
+ mov r1, #0x2f
+ mov r2, #0x18
+ bl MOD09_022175E0
+ add r2, r0, #0
+ ldr r0, _02217748 ; =0x00002030
+ add r1, r7, #0
+ ldr r0, [r6, r0]
+ bl MOD09_02216BB0
+ add r0, r5, r4
+ add r0, #0x2c
+ ldrb r0, [r0]
+ mov r1, #0x78
+ mov r2, #0x8f
+ bl MOD09_022175E0
+ add r7, r0, #0
+ add r0, r5, r4
+ add r0, #0x2c
+ ldrb r0, [r0]
+ mov r1, #0x12
+ mov r2, #0x18
+ bl MOD09_022175E0
+ add r2, r0, #0
+ ldr r0, _0221774C ; =0x00002034
+ add r1, r7, #0
+ ldr r0, [r6, r0]
+ bl MOD09_02216BB0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221773C: .word 0x00002024
+_02217740: .word 0x00002028
+_02217744: .word 0x0000202C
+_02217748: .word 0x00002030
+_0221774C: .word 0x00002034
+
+ thumb_func_start MOD09_02217750
+MOD09_02217750: ; 0x02217750
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_02230078
+ ldr r3, _022177A8 ; =0x0000B00C
+ mov r2, #0x7a
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ ldr r1, _022177AC ; =0x00001FB4
+ lsl r2, r2, #2
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ add r3, #0xc
+ add r4, r0, #0
+ bl FUN_0225D3EC
+ ldr r3, _022177A8 ; =0x0000B00C
+ mov r0, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r1, _022177AC ; =0x00001FB4
+ ldr r2, [r5]
+ ldr r1, [r5, r1]
+ ldr r2, [r2, #0xc]
+ add r0, r4, #0
+ add r3, #0xc
+ bl FUN_0225D484
+ add r1, r0, #0
+ ldr r0, _022177B0 ; =0x00002088
+ ldr r0, [r5, r0]
+ bl MOD09_0221AC30
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_022177A8: .word 0x0000B00C
+_022177AC: .word 0x00001FB4
+_022177B0: .word 0x00002088
+
+ thumb_func_start MOD09_022177B4
+MOD09_022177B4: ; 0x022177B4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _022177DC ; =0x00002088
+ ldr r0, [r4, r0]
+ bl MOD09_0221AC24
+ bl FUN_0225D508
+ ldr r2, _022177E0 ; =0x0000B00C
+ ldr r0, _022177E4 ; =0x00001FB4
+ str r2, [sp]
+ add r1, r2, #0
+ ldr r0, [r4, r0]
+ add r1, #0xc
+ add r3, r2, #0
+ bl FUN_0225D45C
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_022177DC: .word 0x00002088
+_022177E0: .word 0x0000B00C
+_022177E4: .word 0x00001FB4
+
+ thumb_func_start MOD09_022177E8
+MOD09_022177E8: ; 0x022177E8
+ push {r3, lr}
+ ldr r1, _0221780C ; =0x00002077
+ ldrb r2, [r0, r1]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1c
+ bne _02217800
+ add r1, #0x11
+ ldr r0, [r0, r1]
+ mov r1, #0x5f
+ bl MOD09_0221AC94
+ pop {r3, pc}
+_02217800:
+ add r1, #0x11
+ ldr r0, [r0, r1]
+ mov r1, #0x7f
+ bl MOD09_0221AC94
+ pop {r3, pc}
+ .align 2, 0
+_0221780C: .word 0x00002077
+
+ thumb_func_start MOD09_02217810
+MOD09_02217810: ; 0x02217810
+ push {r3, lr}
+ ldr r1, _02217834 ; =0x00002077
+ ldrb r2, [r0, r1]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1c
+ bne _02217828
+ add r1, #0x11
+ ldr r0, [r0, r1]
+ mov r1, #5
+ bl MOD09_0221AC94
+ pop {r3, pc}
+_02217828:
+ add r1, #0x11
+ ldr r0, [r0, r1]
+ mov r1, #7
+ bl MOD09_0221AC94
+ pop {r3, pc}
+ .align 2, 0
+_02217834: .word 0x00002077
+
+ thumb_func_start MOD09_02217838
+MOD09_02217838: ; 0x02217838
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, _022178D8 ; =0x00002088
+ ldr r1, _022178DC ; =0x0221B558
+ lsl r2, r5, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r1, r2]
+ bl MOD09_0221AC68
+ cmp r5, #9
+ bhi _022178D6
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0221785C: ; jump table
+ .short _02217870 - _0221785C - 2 ; case 0
+ .short _0221788A - _0221785C - 2 ; case 1
+ .short _022178D6 - _0221785C - 2 ; case 2
+ .short _022178A0 - _0221785C - 2 ; case 3
+ .short _022178A0 - _0221785C - 2 ; case 4
+ .short _022178D6 - _0221785C - 2 ; case 5
+ .short _022178B0 - _0221785C - 2 ; case 6
+ .short _022178C4 - _0221785C - 2 ; case 7
+ .short _022178B0 - _0221785C - 2 ; case 8
+ .short _022178C4 - _0221785C - 2 ; case 9
+_02217870:
+ ldr r1, [r4]
+ ldr r0, _022178D8 ; =0x00002088
+ ldrb r1, [r1, #0x11]
+ ldr r0, [r4, r0]
+ bl MOD09_0221AC34
+ ldr r0, _022178E0 ; =0x0000208C
+ mov r1, #0
+ strb r1, [r4, r0]
+ ldr r0, [r4]
+ add r0, #0x34
+ strb r1, [r0]
+ pop {r3, r4, r5, pc}
+_0221788A:
+ ldr r1, _022178D8 ; =0x00002088
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldrb r1, [r4, r1]
+ bl MOD09_0221AC34
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, #0x34
+ strb r1, [r0]
+ pop {r3, r4, r5, pc}
+_022178A0:
+ ldr r1, [r4]
+ ldr r0, _022178D8 ; =0x00002088
+ add r1, #0x34
+ ldrb r1, [r1]
+ ldr r0, [r4, r0]
+ bl MOD09_0221AC34
+ pop {r3, r4, r5, pc}
+_022178B0:
+ add r0, r4, #0
+ bl MOD09_022177E8
+ ldr r1, _022178D8 ; =0x00002088
+ ldr r0, [r4, r1]
+ add r1, r1, #5
+ ldrb r1, [r4, r1]
+ bl MOD09_0221AC34
+ pop {r3, r4, r5, pc}
+_022178C4:
+ add r0, r4, #0
+ bl MOD09_02217810
+ ldr r1, _022178D8 ; =0x00002088
+ ldr r0, [r4, r1]
+ add r1, r1, #6
+ ldrb r1, [r4, r1]
+ bl MOD09_0221AC34
+_022178D6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022178D8: .word 0x00002088
+_022178DC: .word 0x0221B558
+_022178E0: .word 0x0000208C
+
+ thumb_func_start MOD09_022178E4
+MOD09_022178E4: ; 0x022178E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02217908 ; =0x00002088
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD09_0221AC2C
+ ldr r0, _02217908 ; =0x00002088
+ ldr r0, [r4, r0]
+ bl MOD09_0221AC5C
+ ldr r0, _02217908 ; =0x00002088
+ ldr r0, [r4, r0]
+ bl MOD09_0221AC24
+ bl FUN_0225D648
+ pop {r4, pc}
+ .align 2, 0
+_02217908: .word 0x00002088
+
+ thumb_func_start MOD09_0221790C
+MOD09_0221790C: ; 0x0221790C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ mov r2, #0
+ add r0, r5, r0
+ add r3, r2, #0
+ add r4, r1, #0
+ bl MOD09_02217CEC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xab
+ lsl r0, r0, #2
+ mov r3, #6
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ str r3, [sp, #4]
+ bl MOD09_02217CEC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ mov r3, #0xc
+ bl MOD09_02217CEC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ ldr r0, _02217BCC ; =0x0000042C
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x12
+ bl MOD09_02217CEC
+ mov r2, #0x10
+ str r2, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ ldr r0, _02217BD0 ; =0x000004EC
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r3, #0
+ bl MOD09_02217CEC
+ ldr r0, _02217BD4 ; =0x000005AC
+ mov r2, #0x10
+ str r2, [sp]
+ mov r3, #6
+ add r0, r5, r0
+ add r1, r4, #0
+ str r3, [sp, #4]
+ bl MOD09_02217CEC
+ mov r2, #0x10
+ str r2, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ ldr r0, _02217BD8 ; =0x0000066C
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r3, #0xc
+ bl MOD09_02217CEC
+ mov r2, #0x10
+ str r2, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ ldr r0, _02217BDC ; =0x0000072C
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r3, #0x12
+ bl MOD09_02217CEC
+ mov r0, #0xd
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r0, _02217BE0 ; =0x000007EC
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x27
+ bl MOD09_02217CEC
+ mov r0, #0xd
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r0, _02217BE4 ; =0x0000086E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x2c
+ bl MOD09_02217CEC
+ mov r2, #0xd
+ str r2, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ mov r0, #0x8f
+ lsl r0, r0, #4
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r3, #0x27
+ bl MOD09_02217CEC
+ mov r2, #0xd
+ str r2, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r0, _02217BE8 ; =0x00000972
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r3, #0x2c
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02217BEC ; =0x000009F4
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x31
+ bl MOD09_02217CEC
+ ldr r0, _02217BF0 ; =0x00000A26
+ mov r2, #5
+ str r2, [sp]
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r3, #0x31
+ str r2, [sp, #4]
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02217BF4 ; =0x00000A58
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0xa
+ mov r3, #0x31
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02217BF8 ; =0x00000A8A
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0xf
+ mov r3, #0x31
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02217BFC ; =0x00000ABC
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x36
+ bl MOD09_02217CEC
+ ldr r0, _02217C00 ; =0x00000AEE
+ mov r2, #5
+ str r2, [sp]
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r3, #0x36
+ str r2, [sp, #4]
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0xb2
+ lsl r0, r0, #4
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0xa
+ mov r3, #0x36
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02217C04 ; =0x00000B52
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0xf
+ mov r3, #0x36
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02217C08 ; =0x00000B84
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x1a
+ mov r3, #0x18
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02217C0C ; =0x00000BB6
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x1a
+ mov r3, #0x1d
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02217C10 ; =0x00000BE8
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x1a
+ mov r3, #0x22
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02217C14 ; =0x00000C1A
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x1a
+ mov r3, #0x27
+ bl MOD09_02217CEC
+ mov r0, #0x1a
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ mov r0, #0x6d
+ lsl r0, r0, #6
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ mov r3, #0x18
+ bl MOD09_02217CEC
+ mov r0, #0x1a
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r0, _02217C18 ; =0x00001C44
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x1d
+ bl MOD09_02217CEC
+ mov r0, #0x1a
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r0, _02217C1C ; =0x00001D48
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x22
+ bl MOD09_02217CEC
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, _02217C20 ; =0x00001E4C
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x14
+ mov r3, #0x31
+ bl MOD09_02217CEC
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, _02217C24 ; =0x00001E94
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x14
+ mov r3, #0x35
+ bl MOD09_02217CEC
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, _02217C28 ; =0x00001EDC
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x14
+ mov r3, #0x39
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _02217C2C ; =0x00001F24
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x3b
+ bl MOD09_02217CEC
+ mov r2, #5
+ str r2, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _02217C30 ; =0x00001F38
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r3, #0x3b
+ bl MOD09_02217CEC
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _02217C34 ; =0x00001F4C
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0xa
+ mov r3, #0x3b
+ bl MOD09_02217CEC
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02217BCC: .word 0x0000042C
+_02217BD0: .word 0x000004EC
+_02217BD4: .word 0x000005AC
+_02217BD8: .word 0x0000066C
+_02217BDC: .word 0x0000072C
+_02217BE0: .word 0x000007EC
+_02217BE4: .word 0x0000086E
+_02217BE8: .word 0x00000972
+_02217BEC: .word 0x000009F4
+_02217BF0: .word 0x00000A26
+_02217BF4: .word 0x00000A58
+_02217BF8: .word 0x00000A8A
+_02217BFC: .word 0x00000ABC
+_02217C00: .word 0x00000AEE
+_02217C04: .word 0x00000B52
+_02217C08: .word 0x00000B84
+_02217C0C: .word 0x00000BB6
+_02217C10: .word 0x00000BE8
+_02217C14: .word 0x00000C1A
+_02217C18: .word 0x00001C44
+_02217C1C: .word 0x00001D48
+_02217C20: .word 0x00001E4C
+_02217C24: .word 0x00001E94
+_02217C28: .word 0x00001EDC
+_02217C2C: .word 0x00001F24
+_02217C30: .word 0x00001F38
+_02217C34: .word 0x00001F4C
+
+ thumb_func_start MOD09_02217C38
+MOD09_02217C38: ; 0x02217C38
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0x1e
+ str r0, [sp]
+ mov r0, #0x11
+ str r0, [sp, #4]
+ ldr r0, _02217CE0 ; =0x00000C4C
+ mov r2, #0
+ add r0, r5, r0
+ add r3, r2, #0
+ add r4, r1, #0
+ bl MOD09_02217CEC
+ mov r0, #0x1e
+ str r0, [sp]
+ ldr r0, _02217CE4 ; =0x00001048
+ mov r3, #0x11
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ str r3, [sp, #4]
+ bl MOD09_02217CEC
+ mov r0, #0x1e
+ str r0, [sp]
+ mov r0, #0x11
+ str r0, [sp, #4]
+ ldr r0, _02217CE8 ; =0x00001444
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x22
+ bl MOD09_02217CEC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0x61
+ lsl r0, r0, #6
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ mov r3, #0x33
+ bl MOD09_02217CEC
+ mov r2, #0x10
+ str r2, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0x19
+ lsl r0, r0, #8
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r3, #0x33
+ bl MOD09_02217CEC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0x67
+ lsl r0, r0, #6
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ mov r3, #0x39
+ bl MOD09_02217CEC
+ mov r2, #0x10
+ str r2, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0x6a
+ lsl r0, r0, #6
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r3, #0x39
+ bl MOD09_02217CEC
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02217CE0: .word 0x00000C4C
+_02217CE4: .word 0x00001048
+_02217CE8: .word 0x00001444
+
+ thumb_func_start MOD09_02217CEC
+MOD09_02217CEC: ; 0x02217CEC
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r0, sp, #8
+ mov lr, r3
+ ldrb r3, [r0, #0x14]
+ mov r6, #0
+ mov ip, r3
+ cmp r3, #0
+ ble _02217D38
+ ldrb r3, [r0, #0x10]
+ lsl r2, r2, #1
+ add r7, r1, r2
+_02217D04:
+ mov r2, #0
+ cmp r3, #0
+ ble _02217D2C
+ mov r0, lr
+ add r0, r0, r6
+ lsl r0, r0, #6
+ add r5, r7, r0
+ add r0, r6, #0
+ mul r0, r3
+ lsl r1, r0, #1
+ ldr r0, [sp]
+ add r4, r0, r1
+_02217D1C:
+ lsl r1, r2, #1
+ ldrh r0, [r5, r1]
+ strh r0, [r4, r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ cmp r2, r3
+ blt _02217D1C
+_02217D2C:
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ mov r0, ip
+ cmp r6, r0
+ blt _02217D04
+_02217D38:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02217D3C
+MOD09_02217D3C: ; 0x02217D3C
+ cmp r1, #0x21
+ bhi _02217E22
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02217D4C: ; jump table
+ .short _02217D90 - _02217D4C - 2 ; case 0
+ .short _02217D90 - _02217D4C - 2 ; case 1
+ .short _02217D90 - _02217D4C - 2 ; case 2
+ .short _02217D90 - _02217D4C - 2 ; case 3
+ .short _02217D90 - _02217D4C - 2 ; case 4
+ .short _02217D90 - _02217D4C - 2 ; case 5
+ .short _02217DAE - _02217D4C - 2 ; case 6
+ .short _02217DBA - _02217D4C - 2 ; case 7
+ .short _02217DC8 - _02217D4C - 2 ; case 8
+ .short _02217DC8 - _02217D4C - 2 ; case 9
+ .short _02217DC8 - _02217D4C - 2 ; case 10
+ .short _02217DC8 - _02217D4C - 2 ; case 11
+ .short _02217DD4 - _02217D4C - 2 ; case 12
+ .short _02217DE0 - _02217D4C - 2 ; case 13
+ .short _02217DEC - _02217D4C - 2 ; case 14
+ .short _02217DEC - _02217D4C - 2 ; case 15
+ .short _02217DEC - _02217D4C - 2 ; case 16
+ .short _02217DEC - _02217D4C - 2 ; case 17
+ .short _02217E0A - _02217D4C - 2 ; case 18
+ .short _02217DEC - _02217D4C - 2 ; case 19
+ .short _02217DEC - _02217D4C - 2 ; case 20
+ .short _02217DEC - _02217D4C - 2 ; case 21
+ .short _02217DEC - _02217D4C - 2 ; case 22
+ .short _02217DEC - _02217D4C - 2 ; case 23
+ .short _02217DEC - _02217D4C - 2 ; case 24
+ .short _02217DEC - _02217D4C - 2 ; case 25
+ .short _02217DEC - _02217D4C - 2 ; case 26
+ .short _02217DEC - _02217D4C - 2 ; case 27
+ .short _02217DFA - _02217D4C - 2 ; case 28
+ .short _02217DFA - _02217D4C - 2 ; case 29
+ .short _02217E16 - _02217D4C - 2 ; case 30
+ .short _02217E16 - _02217D4C - 2 ; case 31
+ .short _02217E16 - _02217D4C - 2 ; case 32
+ .short _02217E16 - _02217D4C - 2 ; case 33
+_02217D90:
+ cmp r3, #0
+ bne _02217DA2
+ mov r1, #0x7b
+ lsl r1, r1, #2
+ add r1, r0, r1
+ mov r0, #0xc0
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217DA2:
+ ldr r1, _02217E28 ; =0x000004EC
+ add r1, r0, r1
+ mov r0, #0xc0
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217DAE:
+ ldr r1, _02217E2C ; =0x00000B84
+ add r1, r0, r1
+ mov r0, #0x32
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217DBA:
+ ldr r1, _02217E30 ; =0x00000C4C
+ add r1, r0, r1
+ mov r0, #0xff
+ lsl r0, r0, #2
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217DC8:
+ ldr r1, _02217E34 ; =0x000007EC
+ add r1, r0, r1
+ mov r0, #0x82
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217DD4:
+ ldr r1, _02217E38 ; =0x000009F4
+ add r1, r0, r1
+ mov r0, #0x32
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217DE0:
+ ldr r1, _02217E3C ; =0x00000ABC
+ add r1, r0, r1
+ mov r0, #0x32
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217DEC:
+ mov r1, #0x61
+ lsl r1, r1, #6
+ add r1, r0, r1
+ mov r0, #0xc0
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217DFA:
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r1, r0, r1
+ lsl r0, r2, #6
+ add r0, r2, r0
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bx lr
+_02217E0A:
+ ldr r1, _02217E40 ; =0x00001E4C
+ add r1, r0, r1
+ mov r0, #0x48
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217E16:
+ ldr r1, _02217E44 ; =0x00001F24
+ add r1, r0, r1
+ mov r0, #0x14
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_02217E22:
+ mov r0, #0
+ bx lr
+ nop
+_02217E28: .word 0x000004EC
+_02217E2C: .word 0x00000B84
+_02217E30: .word 0x00000C4C
+_02217E34: .word 0x000007EC
+_02217E38: .word 0x000009F4
+_02217E3C: .word 0x00000ABC
+_02217E40: .word 0x00001E4C
+_02217E44: .word 0x00001F24
+
+ thumb_func_start MOD09_02217E48
+MOD09_02217E48: ; 0x02217E48
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r2, #0
+ add r2, r3, #0
+ add r3, sp, #0x10
+ add r4, r1, #0
+ ldrb r3, [r3, #0x10]
+ add r1, r7, #0
+ str r0, [sp]
+ bl MOD09_02217D3C
+ add r1, r0, #0
+ ldr r2, _02217F7C ; =0x0221BAF2
+ lsl r0, r7, #2
+ ldrb r6, [r2, r0]
+ ldr r2, _02217F80 ; =0x0221BAF3
+ ldrb r0, [r2, r0]
+ add r5, r6, #0
+ mul r5, r0
+ add r0, r4, #0
+ lsl r2, r5, #1
+ bl memcpy
+ cmp r7, #5
+ bgt _02217E96
+ cmp r7, #0
+ blt _02217F78
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02217E8A: ; jump table
+ .short _02217E9E - _02217E8A - 2 ; case 0
+ .short _02217E9E - _02217E8A - 2 ; case 1
+ .short _02217E9E - _02217E8A - 2 ; case 2
+ .short _02217E9E - _02217E8A - 2 ; case 3
+ .short _02217E9E - _02217E8A - 2 ; case 4
+ .short _02217E9E - _02217E8A - 2 ; case 5
+_02217E96:
+ cmp r7, #0x1b
+ beq _02217F58
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02217E9E:
+ mov r0, #0x50
+ add r1, r7, #0
+ mul r1, r0
+ ldr r0, [sp]
+ add r0, r0, r1
+ ldrh r1, [r0, #8]
+ cmp r1, #0
+ beq _02217F78
+ ldrb r1, [r0, #0x1b]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1f
+ beq _02217EFE
+ lsl r2, r6, #1
+ add r0, r2, #5
+ lsl r0, r0, #1
+ ldrh r1, [r4, r0]
+ add r0, sp, #4
+ strh r1, [r0]
+ add r1, r6, r2
+ add r1, r1, #5
+ lsl r1, r1, #1
+ ldrh r1, [r4, r1]
+ strh r1, [r0, #2]
+ mov r1, #0
+ add r0, sp, #4
+_02217ED0:
+ add r5, r1, #2
+ lsl r3, r1, #1
+ add r7, r5, #0
+ mul r7, r6
+ lsl r5, r7, #1
+ ldrh r3, [r0, r3]
+ mov r2, #0
+ add r5, r4, r5
+_02217EE0:
+ lsl r7, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #0x18
+ add r7, r5, r7
+ lsr r2, r2, #0x18
+ strh r3, [r7, #0xc]
+ cmp r2, #9
+ blo _02217EE0
+ add r1, r1, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #2
+ blo _02217ED0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02217EFE:
+ ldrh r0, [r0, #0x14]
+ cmp r0, #0
+ bne _02217F28
+ mov r1, #0
+ cmp r5, #0
+ ble _02217F78
+ mov r3, #2
+ ldr r2, _02217F84 ; =0x00000FFF
+ lsl r3, r3, #0xc
+_02217F10:
+ lsl r0, r1, #1
+ ldrh r6, [r4, r0]
+ and r6, r2
+ orr r6, r3
+ strh r6, [r4, r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, r5
+ blt _02217F10
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02217F28:
+ lsl r1, r7, #0x18
+ ldr r0, [sp]
+ lsr r1, r1, #0x18
+ bl MOD09_02213BDC
+ cmp r0, #1
+ bne _02217F78
+ mov r1, #0
+ cmp r5, #0
+ ble _02217F78
+ ldr r2, _02217F84 ; =0x00000FFF
+ add r3, r2, #1
+_02217F40:
+ lsl r0, r1, #1
+ ldrh r6, [r4, r0]
+ and r6, r2
+ orr r6, r3
+ strh r6, [r4, r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, r5
+ blt _02217F40
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02217F58:
+ mov r1, #0
+ cmp r5, #0
+ ble _02217F78
+ mov r3, #0xa
+ ldr r2, _02217F84 ; =0x00000FFF
+ lsl r3, r3, #0xc
+_02217F64:
+ lsl r0, r1, #1
+ ldrh r6, [r4, r0]
+ and r6, r2
+ orr r6, r3
+ strh r6, [r4, r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, r5
+ blt _02217F64
+_02217F78:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02217F7C: .word 0x0221BAF2
+_02217F80: .word 0x0221BAF3
+_02217F84: .word 0x00000FFF
+
+ thumb_func_start MOD09_02217F88
+MOD09_02217F88: ; 0x02217F88
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r1, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ add r5, r0, #0
+ ldr r0, [sp, #0xc]
+ lsl r4, r0, #2
+ ldr r0, _02217FF4 ; =0x0221BAF3
+ ldrb r7, [r0, r4]
+ ldr r0, _02217FF8 ; =0x0221BAF2
+ ldrb r6, [r0, r4]
+ ldr r0, [r5]
+ add r1, r6, #0
+ mul r1, r7
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #1
+ bl FUN_02016998
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ str r0, [sp]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ add r0, r5, #0
+ bl MOD09_02217E48
+ ldr r0, _02217FFC ; =0x0221BAF1
+ ldr r3, _02218000 ; =0x0221BAF0
+ ldrb r0, [r0, r4]
+ ldrb r3, [r3, r4]
+ ldr r2, [sp, #0x18]
+ str r0, [sp]
+ str r6, [sp, #4]
+ mov r0, #0x79
+ str r7, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #6
+ bl FUN_02018148
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #6
+ bl FUN_0201AC68
+ ldr r0, [sp, #0x18]
+ bl FUN_02016A18
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02217FF4: .word 0x0221BAF3
+_02217FF8: .word 0x0221BAF2
+_02217FFC: .word 0x0221BAF1
+_02218000: .word 0x0221BAF0
+
+ thumb_func_start MOD09_02218004
+MOD09_02218004: ; 0x02218004
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _022180A4 ; =0x0221BA68
+ lsl r3, r1, #2
+ ldr r6, [r0, r3]
+ cmp r6, #0
+ beq _022180A2
+ cmp r1, #5
+ bhi _0221801E
+ ldr r0, _022180A8 ; =0x0221BA58
+ ldrb r0, [r0, r2]
+ str r0, [sp]
+ b _02218024
+_0221801E:
+ ldr r0, _022180AC ; =0x0221BA48
+ ldrb r0, [r0, r2]
+ str r0, [sp]
+_02218024:
+ cmp r2, #0
+ beq _02218032
+ cmp r2, #1
+ beq _02218036
+ cmp r2, #2
+ beq _0221803A
+ b _0221803C
+_02218032:
+ mov r7, #1
+ b _0221803C
+_02218036:
+ mov r7, #0
+ b _0221803C
+_0221803A:
+ mov r7, #1
+_0221803C:
+ cmp r1, #0xe
+ blo _02218070
+ cmp r1, #0x11
+ bhi _02218070
+ ldr r1, _022180B0 ; =0x00002070
+ ldr r2, [sp]
+ ldr r0, [r5, r1]
+ add r1, r1, #5
+ ldrb r1, [r5, r1]
+ mov r3, #0
+ ldrb r1, [r6, r1]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ add r1, r7, #0
+ bl FUN_0201A8C8
+ ldr r1, _022180B0 ; =0x00002070
+ ldr r0, [r5, r1]
+ add r1, r1, #5
+ ldrb r1, [r5, r1]
+ ldrb r1, [r6, r1]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ bl FUN_02019220
+ pop {r3, r4, r5, r6, r7, pc}
+_02218070:
+ mov r4, #0
+_02218072:
+ ldrb r2, [r6, r4]
+ cmp r2, #0xff
+ beq _022180A2
+ ldr r0, _022180B0 ; =0x00002070
+ mov r3, #0
+ ldr r1, [r5, r0]
+ lsl r0, r2, #4
+ add r0, r1, r0
+ ldr r2, [sp]
+ add r1, r7, #0
+ bl FUN_0201A8C8
+ ldr r0, _022180B0 ; =0x00002070
+ ldr r1, [r5, r0]
+ ldrb r0, [r6, r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl FUN_02019220
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #8
+ blo _02218072
+_022180A2:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022180A4: .word 0x0221BA68
+_022180A8: .word 0x0221BA58
+_022180AC: .word 0x0221BA48
+_022180B0: .word 0x00002070
+
+ thumb_func_start MOD09_022180B4
+MOD09_022180B4: ; 0x022180B4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0x1b
+ bhi _022181B8
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022180CA: ; jump table
+ .short _02218102 - _022180CA - 2 ; case 0
+ .short _02218102 - _022180CA - 2 ; case 1
+ .short _02218102 - _022180CA - 2 ; case 2
+ .short _02218102 - _022180CA - 2 ; case 3
+ .short _02218102 - _022180CA - 2 ; case 4
+ .short _02218102 - _022180CA - 2 ; case 5
+ .short _022181B8 - _022180CA - 2 ; case 6
+ .short _02218140 - _022180CA - 2 ; case 7
+ .short _022181B8 - _022180CA - 2 ; case 8
+ .short _022181B8 - _022180CA - 2 ; case 9
+ .short _022181B8 - _022180CA - 2 ; case 10
+ .short _022181B8 - _022180CA - 2 ; case 11
+ .short _022181B8 - _022180CA - 2 ; case 12
+ .short _022181B8 - _022180CA - 2 ; case 13
+ .short _02218172 - _022180CA - 2 ; case 14
+ .short _02218172 - _022180CA - 2 ; case 15
+ .short _02218172 - _022180CA - 2 ; case 16
+ .short _02218172 - _022180CA - 2 ; case 17
+ .short _022181B8 - _022180CA - 2 ; case 18
+ .short _0221818A - _022180CA - 2 ; case 19
+ .short _0221818A - _022180CA - 2 ; case 20
+ .short _0221818A - _022180CA - 2 ; case 21
+ .short _0221818A - _022180CA - 2 ; case 22
+ .short _022181A2 - _022180CA - 2 ; case 23
+ .short _022181A2 - _022180CA - 2 ; case 24
+ .short _022181A2 - _022180CA - 2 ; case 25
+ .short _022181A2 - _022180CA - 2 ; case 26
+ .short _022181A2 - _022180CA - 2 ; case 27
+_02218102:
+ ldr r0, _022181BC ; =0x0221BA62
+ lsl r1, r2, #1
+ ldrsh r6, [r0, r1]
+ add r0, r5, #0
+ add r0, #0xd
+ lsl r0, r0, #2
+ add r1, r4, r0
+ ldr r0, _022181C0 ; =0x00001FB8
+ add r2, r6, #0
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C82C
+ lsl r0, r5, #2
+ add r1, r4, r0
+ ldr r0, _022181C0 ; =0x00001FB8
+ add r2, r6, #0
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C82C
+ add r0, r5, #7
+ lsl r0, r0, #2
+ add r1, r4, r0
+ ldr r0, _022181C0 ; =0x00001FB8
+ add r2, r6, #0
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C82C
+ pop {r4, r5, r6, pc}
+_02218140:
+ ldr r0, _022181C4 ; =0x0221BA5C
+ lsl r1, r2, #1
+ ldrsh r5, [r0, r1]
+ ldr r0, [r4]
+ ldrb r0, [r0, #0x11]
+ add r2, r5, #0
+ lsl r0, r0, #2
+ add r1, r4, r0
+ ldr r0, _022181C0 ; =0x00001FB8
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C82C
+ ldr r0, [r4]
+ add r2, r5, #0
+ ldrb r0, [r0, #0x11]
+ add r0, r0, #7
+ lsl r0, r0, #2
+ add r1, r4, r0
+ ldr r0, _022181C0 ; =0x00001FB8
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C82C
+ pop {r4, r5, r6, pc}
+_02218172:
+ add r0, r5, #7
+ lsl r0, r0, #2
+ lsl r3, r2, #1
+ ldr r2, _022181C4 ; =0x0221BA5C
+ add r1, r4, r0
+ ldr r0, _022181C0 ; =0x00001FB8
+ ldrsh r2, [r2, r3]
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C82C
+ pop {r4, r5, r6, pc}
+_0221818A:
+ add r0, r5, #2
+ lsl r0, r0, #2
+ lsl r3, r2, #1
+ ldr r2, _022181C4 ; =0x0221BA5C
+ add r1, r4, r0
+ ldr r0, _022181C0 ; =0x00001FB8
+ ldrsh r2, [r2, r3]
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C82C
+ pop {r4, r5, r6, pc}
+_022181A2:
+ sub r0, r5, #2
+ lsl r0, r0, #2
+ lsl r3, r2, #1
+ ldr r2, _022181C4 ; =0x0221BA5C
+ add r1, r4, r0
+ ldr r0, _022181C0 ; =0x00001FB8
+ ldrsh r2, [r2, r3]
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C82C
+_022181B8:
+ pop {r4, r5, r6, pc}
+ nop
+_022181BC: .word 0x0221BA62
+_022181C0: .word 0x00001FB8
+_022181C4: .word 0x0221BA5C
+
+ thumb_func_start MOD09_022181C8
+MOD09_022181C8: ; 0x022181C8
+ push {r4, r5, r6, lr}
+ ldr r3, _02218210 ; =0x00001FA3
+ add r5, r0, #0
+ ldrb r6, [r5, r3]
+ mov r2, #0x70
+ add r4, r1, #0
+ bic r6, r2
+ strb r6, [r5, r3]
+ cmp r4, #5
+ bhi _022181F2
+ bl MOD09_02213620
+ cmp r0, #2
+ bne _022181F2
+ ldr r1, _02218210 ; =0x00001FA3
+ mov r0, #0x70
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ mov r0, #0x10
+ orr r0, r2
+ strb r0, [r5, r1]
+_022181F2:
+ ldr r0, _02218214 ; =0x00001FA0
+ mov r2, #0
+ strb r2, [r5, r0]
+ add r1, r0, #1
+ strb r2, [r5, r1]
+ add r1, r0, #2
+ strb r4, [r5, r1]
+ add r1, r0, #3
+ ldrb r2, [r5, r1]
+ mov r1, #0x80
+ add r0, r0, #3
+ orr r1, r2
+ strb r1, [r5, r0]
+ pop {r4, r5, r6, pc}
+ nop
+_02218210: .word 0x00001FA3
+_02218214: .word 0x00001FA0
+
+ thumb_func_start MOD09_02218218
+MOD09_02218218: ; 0x02218218
+ push {r4, lr}
+ ldr r2, _022182DC ; =0x00001FA3
+ add r4, r0, #0
+ ldrb r3, [r4, r2]
+ lsl r1, r3, #0x18
+ lsr r1, r1, #0x1f
+ beq _022182D8
+ sub r1, r2, #3
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ beq _02218238
+ cmp r1, #1
+ beq _0221826C
+ cmp r1, #2
+ beq _022182A0
+ pop {r4, pc}
+_02218238:
+ sub r1, r2, #1
+ ldrb r1, [r4, r1]
+ lsl r3, r3, #0x19
+ mov r2, #1
+ lsr r3, r3, #0x1d
+ bl MOD09_02217F88
+ ldr r1, _022182E0 ; =0x00001FA2
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ mov r2, #1
+ bl MOD09_02218004
+ ldr r1, _022182E0 ; =0x00001FA2
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ mov r2, #1
+ bl MOD09_022180B4
+ ldr r0, _022182E4 ; =0x00001FA1
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r1, #1
+ sub r0, r0, #1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_0221826C:
+ sub r1, r2, #1
+ ldrb r1, [r4, r1]
+ lsl r3, r3, #0x19
+ mov r2, #2
+ lsr r3, r3, #0x1d
+ bl MOD09_02217F88
+ ldr r1, _022182E0 ; =0x00001FA2
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ mov r2, #2
+ bl MOD09_02218004
+ ldr r1, _022182E0 ; =0x00001FA2
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ mov r2, #2
+ bl MOD09_022180B4
+ ldr r0, _022182E4 ; =0x00001FA1
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r1, #2
+ sub r0, r0, #1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_022182A0:
+ sub r1, r2, #1
+ ldrb r1, [r4, r1]
+ lsl r3, r3, #0x19
+ mov r2, #0
+ lsr r3, r3, #0x1d
+ bl MOD09_02217F88
+ ldr r1, _022182E0 ; =0x00001FA2
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ mov r2, #0
+ bl MOD09_02218004
+ ldr r1, _022182E0 ; =0x00001FA2
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ mov r2, #0
+ bl MOD09_022180B4
+ ldr r0, _022182E4 ; =0x00001FA1
+ mov r1, #0
+ strb r1, [r4, r0]
+ add r1, r0, #2
+ ldrb r2, [r4, r1]
+ mov r1, #0x80
+ add r0, r0, #2
+ bic r2, r1
+ strb r2, [r4, r0]
+_022182D8:
+ pop {r4, pc}
+ nop
+_022182DC: .word 0x00001FA3
+_022182E0: .word 0x00001FA2
+_022182E4: .word 0x00001FA1
+
+ thumb_func_start MOD09_022182E8
+MOD09_022182E8: ; 0x022182E8
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ cmp r1, #9
+ bls _022182F2
+ b _0221863A
+_022182F2:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022182FE: ; jump table
+ .short _02218312 - _022182FE - 2 ; case 0
+ .short _0221838A - _022182FE - 2 ; case 1
+ .short _022183E6 - _022182FE - 2 ; case 2
+ .short _0221843A - _022182FE - 2 ; case 3
+ .short _022184D8 - _022182FE - 2 ; case 4
+ .short _02218524 - _022182FE - 2 ; case 5
+ .short _0221857C - _022182FE - 2 ; case 6
+ .short _022185DC - _022182FE - 2 ; case 7
+ .short _0221857C - _022182FE - 2 ; case 8
+ .short _0221860C - _022182FE - 2 ; case 9
+_02218312:
+ mov r5, #0
+ mov r6, #3
+ mov r7, #1
+_02218318:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD09_02213620
+ cmp r0, #0
+ bne _02218334
+ lsl r1, r5, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD09_02217F88
+ b _0221835A
+_02218334:
+ cmp r0, #1
+ bne _02218348
+ lsl r1, r5, #0x18
+ mov r2, #0
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl MOD09_02217F88
+ b _0221835A
+_02218348:
+ cmp r0, #2
+ bne _0221835A
+ lsl r1, r5, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ mov r3, #1
+ bl MOD09_02217F88
+_0221835A:
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #6
+ blo _02218318
+ ldr r0, [r4]
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _0221837C
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #3
+ mov r3, #0
+ bl MOD09_02217F88
+ pop {r3, r4, r5, r6, r7, pc}
+_0221837C:
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD09_02217F88
+ pop {r3, r4, r5, r6, r7, pc}
+_0221838A:
+ mov r2, #0
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #7
+ add r3, r2, #0
+ bl MOD09_02217F88
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x11]
+ mov r0, #0x50
+ mul r0, r1
+ add r0, r4, r0
+ ldrb r0, [r0, #0x1b]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ beq _022183CC
+ add r0, r4, #0
+ mov r1, #8
+ mov r2, #3
+ mov r3, #0
+ bl MOD09_02217F88
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #3
+ mov r3, #0
+ bl MOD09_02217F88
+ pop {r3, r4, r5, r6, r7, pc}
+_022183CC:
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #8
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0xa
+ add r3, r2, #0
+ bl MOD09_02217F88
+ pop {r3, r4, r5, r6, r7, pc}
+_022183E6:
+ bl MOD09_02218680
+ cmp r0, #1
+ bne _02218408
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0xc
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0xd
+ add r3, r2, #0
+ bl MOD09_02217F88
+ b _02218420
+_02218408:
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #0
+ bl MOD09_02217F88
+ add r0, r4, #0
+ mov r1, #0xd
+ mov r2, #3
+ mov r3, #0
+ bl MOD09_02217F88
+_02218420:
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0xb
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD09_02217F88
+ pop {r3, r4, r5, r6, r7, pc}
+_0221843A:
+ bl MOD09_02218680
+ cmp r0, #1
+ bne _0221845C
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0xc
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0xd
+ add r3, r2, #0
+ bl MOD09_02217F88
+ b _02218474
+_0221845C:
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #0
+ bl MOD09_02217F88
+ add r0, r4, #0
+ mov r1, #0xd
+ mov r2, #3
+ mov r3, #0
+ bl MOD09_02217F88
+_02218474:
+ mov r5, #0
+ mov r7, #3
+ mov r6, #0x50
+_0221847A:
+ ldr r0, [r4]
+ lsl r1, r5, #3
+ ldrb r0, [r0, #0x11]
+ add r2, r0, #0
+ mul r2, r6
+ add r0, r4, r2
+ add r0, r1, r0
+ ldrh r0, [r0, #0x34]
+ cmp r0, #0
+ beq _022184A2
+ add r1, r5, #0
+ add r1, #0xe
+ lsl r1, r1, #0x18
+ mov r2, #0
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl MOD09_02217F88
+ b _022184B4
+_022184A2:
+ add r1, r5, #0
+ add r1, #0xe
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD09_02217F88
+_022184B4:
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #4
+ blo _0221847A
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #9
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD09_02217F88
+ pop {r3, r4, r5, r6, r7, pc}
+_022184D8:
+ mov r2, #0
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r5, #0
+ mov r6, #2
+ add r7, r5, #0
+_022184E8:
+ ldr r0, [r4]
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, r5
+ bne _02218506
+ add r1, r5, #0
+ add r1, #0x1e
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD09_02217F88
+ b _02218518
+_02218506:
+ add r1, r5, #0
+ add r1, #0x1e
+ lsl r1, r1, #0x18
+ mov r2, #0
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl MOD09_02217F88
+_02218518:
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #4
+ blo _022184E8
+ pop {r3, r4, r5, r6, r7, pc}
+_02218524:
+ mov r5, #0
+ mov r7, #3
+ mov r6, #0x50
+_0221852A:
+ ldr r0, [r4]
+ lsl r1, r5, #3
+ ldrb r0, [r0, #0x11]
+ add r2, r0, #0
+ mul r2, r6
+ add r0, r4, r2
+ add r0, r1, r0
+ ldrh r0, [r0, #0x34]
+ cmp r0, #0
+ beq _02218552
+ add r1, r5, #0
+ add r1, #0x13
+ lsl r1, r1, #0x18
+ mov r2, #0
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl MOD09_02217F88
+ b _02218564
+_02218552:
+ add r1, r5, #0
+ add r1, #0x13
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD09_02217F88
+_02218564:
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #4
+ blo _0221852A
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD09_02217F88
+ pop {r3, r4, r5, r6, r7, pc}
+_0221857C:
+ mov r2, #0
+ mov r1, #0x17
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0x18
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0x19
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0x1a
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0x1b
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD09_02217F88
+ ldr r0, _0221863C ; =0x00002077
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ cmp r0, #1
+ bne _0221863A
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0x12
+ add r3, r2, #0
+ bl MOD09_02217F88
+ pop {r3, r4, r5, r6, r7, pc}
+_022185DC:
+ mov r2, #0
+ mov r1, #0x1c
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD09_02217F88
+ ldr r0, _0221863C ; =0x00002077
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ cmp r0, #1
+ bne _0221863A
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0x12
+ add r3, r2, #0
+ bl MOD09_02217F88
+ pop {r3, r4, r5, r6, r7, pc}
+_0221860C:
+ mov r2, #0
+ mov r1, #0x1d
+ add r3, r2, #0
+ bl MOD09_02217F88
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD09_02217F88
+ ldr r0, _0221863C ; =0x00002077
+ ldrb r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ cmp r0, #1
+ bne _0221863A
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #0x12
+ add r3, r2, #0
+ bl MOD09_02217F88
+_0221863A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221863C: .word 0x00002077
+
+ thumb_func_start MOD09_02218640
+MOD09_02218640: ; 0x02218640
+ push {r3, lr}
+ add r2, r0, #0
+ cmp r1, #3
+ bne _02218662
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ mov r1, #0x7e
+ lsl r1, r1, #6
+ ldr r0, [r2, r0]
+ add r1, r2, r1
+ mov r2, #1
+ mov r3, #0xc0
+ bl FUN_02003054
+ pop {r3, pc}
+_02218662:
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r1, _0221867C ; =0x00001F60
+ ldr r0, [r2, r0]
+ add r1, r2, r1
+ mov r2, #1
+ mov r3, #0xc0
+ bl FUN_02003054
+ pop {r3, pc}
+ nop
+_0221867C: .word 0x00001F60
+
+ thumb_func_start MOD09_02218680
+MOD09_02218680: ; 0x02218680
+ push {r4, r5}
+ mov r2, #0
+ add r1, r2, #0
+ mov r3, #0x50
+_02218688:
+ add r4, r1, #0
+ mul r4, r3
+ add r5, r0, r4
+ ldrh r4, [r5, #8]
+ cmp r4, #0
+ beq _022186A2
+ ldrb r4, [r5, #0x1b]
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x1f
+ bne _022186A2
+ add r2, r2, #1
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+_022186A2:
+ add r1, r1, #1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ cmp r1, #6
+ blo _02218688
+ cmp r2, #2
+ blo _022186B4
+ mov r0, #1
+ b _022186B6
+_022186B4:
+ mov r0, #0
+_022186B6:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD09_022186C0
+MOD09_022186C0: ; 0x022186C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x11]
+ bl MOD09_02213620
+ cmp r0, #2
+ bne _022186E0
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrb r1, [r1, #0x11]
+ mov r2, #0
+ mov r3, #1
+ bl MOD09_02217F88
+ pop {r4, pc}
+_022186E0:
+ ldr r1, [r4]
+ mov r2, #0
+ ldrb r1, [r1, #0x11]
+ add r0, r4, #0
+ add r3, r2, #0
+ bl MOD09_02217F88
+ pop {r4, pc}
+
+ thumb_func_start MOD09_022186F0
+MOD09_022186F0: ; 0x022186F0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _02218780 ; =MOD09_0221878C
+ ldr r1, _02218784 ; =0x0000115C
+ ldr r3, [r5, #0xc]
+ mov r2, #0x64
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ ldr r2, _02218784 ; =0x0000115C
+ add r4, r0, #0
+ mov r1, #0
+ bl Call_FillMemWithValue
+ str r5, [r4]
+ ldr r0, [r5]
+ bl FUN_0222FF68
+ str r0, [r4, #4]
+ ldr r0, [r5]
+ bl FUN_022300CC
+ str r0, [r4, #8]
+ ldr r0, _02218788 ; =0x0000114A
+ mov r1, #0
+ strb r1, [r4, r0]
+ ldr r0, [r5]
+ bl FUN_02230218
+ add r6, r0, #0
+ mov r5, #0
+_02218730:
+ ldr r3, [r4]
+ add r0, r6, #0
+ add r2, r3, #0
+ add r2, #0x27
+ add r3, #0x2c
+ add r1, r5, #0
+ add r2, r2, r5
+ add r3, r3, r5
+ bl FUN_0206F1A0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #5
+ blo _02218730
+ add r0, r6, #0
+ bl FUN_0206F1AC
+ ldr r1, [r4]
+ strh r0, [r1, #0x20]
+ add r0, r6, #0
+ bl FUN_0206F1B0
+ ldr r1, [r4]
+ strb r0, [r1, #0x1f]
+ add r0, r4, #0
+ bl MOD09_02219C38
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_0222FF74
+ mov r1, #1
+ lsl r1, r1, #0xa
+ tst r0, r1
+ beq _0221877E
+ ldr r0, [r4]
+ mov r1, #1
+ str r1, [r0, #0x14]
+_0221877E:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02218780: .word MOD09_0221878C
+_02218784: .word 0x0000115C
+_02218788: .word 0x0000114A
+
+ thumb_func_start MOD09_0221878C
+MOD09_0221878C: ; 0x0221878C
+ push {r4, lr}
+ ldr r2, _02218884 ; =0x0000114A
+ add r4, r1, #0
+ ldrb r2, [r4, r2]
+ cmp r2, #0xe
+ bhi _02218872
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_022187A4: ; jump table
+ .short _022187C2 - _022187A4 - 2 ; case 0
+ .short _022187CE - _022187A4 - 2 ; case 1
+ .short _022187DA - _022187A4 - 2 ; case 2
+ .short _022187E6 - _022187A4 - 2 ; case 3
+ .short _022187F2 - _022187A4 - 2 ; case 4
+ .short _022187FE - _022187A4 - 2 ; case 5
+ .short _0221880A - _022187A4 - 2 ; case 6
+ .short _02218816 - _022187A4 - 2 ; case 7
+ .short _02218822 - _022187A4 - 2 ; case 8
+ .short _0221882E - _022187A4 - 2 ; case 9
+ .short _0221883A - _022187A4 - 2 ; case 10
+ .short _02218846 - _022187A4 - 2 ; case 11
+ .short _02218852 - _022187A4 - 2 ; case 12
+ .short _0221885E - _022187A4 - 2 ; case 13
+ .short _0221886A - _022187A4 - 2 ; case 14
+_022187C2:
+ add r0, r4, #0
+ bl MOD09_02218888
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_022187CE:
+ add r0, r4, #0
+ bl MOD09_0221895C
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_022187DA:
+ add r0, r4, #0
+ bl MOD09_02218A34
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_022187E6:
+ add r0, r4, #0
+ bl MOD09_02218BBC
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_022187F2:
+ add r0, r4, #0
+ bl MOD09_02218E44
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_022187FE:
+ add r0, r4, #0
+ bl MOD09_02218E50
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_0221880A:
+ add r0, r4, #0
+ bl MOD09_02218E5C
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_02218816:
+ add r0, r4, #0
+ bl MOD09_02218B44
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_02218822:
+ add r0, r4, #0
+ bl MOD09_02218E68
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_0221882E:
+ add r0, r4, #0
+ bl MOD09_02218E78
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_0221883A:
+ add r0, r4, #0
+ bl MOD09_02218E90
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_02218846:
+ add r0, r4, #0
+ bl MOD09_02218EB8
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_02218852:
+ add r0, r4, #0
+ bl MOD09_02218F90
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_0221885E:
+ add r0, r4, #0
+ bl MOD09_02218ED0
+ ldr r1, _02218884 ; =0x0000114A
+ strb r0, [r4, r1]
+ b _02218872
+_0221886A:
+ bl MOD09_02218EF8
+ cmp r0, #1
+ beq _02218882
+_02218872:
+ add r0, r4, #0
+ bl MOD09_0221AA14
+ mov r0, #0xc3
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200BC1C
+_02218882:
+ pop {r4, pc}
+ .align 2, 0
+_02218884: .word 0x0000114A
+
+ thumb_func_start MOD09_02218888
+MOD09_02218888: ; 0x02218888
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, _0221894C ; =0x04001050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, [r4]
+ ldr r0, [r0, #0xc]
+ bl MOD09_0221AC04
+ str r0, [r4, #0x34]
+ add r0, r4, #0
+ bl MOD09_022190CC
+ add r0, r4, #0
+ bl MOD09_022191C0
+ add r0, r4, #0
+ bl MOD09_022192A4
+ ldr r1, [r4]
+ mov r0, #2
+ ldr r1, [r1, #0xc]
+ bl FUN_02002C50
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02230218
+ bl FUN_0206F1B4
+ ldr r1, _02218950 ; =0x0000114D
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD09_02219CB4
+ ldr r1, _02218954 ; =0x0000114C
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_0221AAF0
+ add r0, r4, #0
+ bl MOD09_02219474
+ ldr r1, _02218954 ; =0x0000114C
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_0221953C
+ add r0, r4, #0
+ bl MOD09_02219DC8
+ ldr r1, _02218954 ; =0x0000114C
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_0221A044
+ ldr r0, [r4]
+ add r0, #0x25
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0221890C
+ ldr r0, [r4, #0x34]
+ mov r1, #1
+ bl MOD09_0221AC2C
+_0221890C:
+ ldr r1, _02218954 ; =0x0000114C
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_0221A1DC
+ ldr r1, _02218954 ; =0x0000114C
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_0221A2BC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r1, #0xa
+ str r0, [sp, #8]
+ add r3, r1, #0
+ ldr r0, [r4, #8]
+ ldr r2, _02218958 ; =0x0000FFFF
+ sub r3, #0x12
+ bl FUN_02003210
+ ldr r0, [r4]
+ ldr r0, [r0, #0x14]
+ cmp r0, #1
+ bne _02218946
+ add sp, #0xc
+ mov r0, #0xc
+ pop {r3, r4, pc}
+_02218946:
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_0221894C: .word 0x04001050
+_02218950: .word 0x0000114D
+_02218954: .word 0x0000114C
+_02218958: .word 0x0000FFFF
+
+ thumb_func_start MOD09_0221895C
+MOD09_0221895C: ; 0x0221895C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _0221896E
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0221896E:
+ ldr r1, _02218A28 ; =0x0221BBE8
+ add r0, r4, #0
+ bl MOD09_02219424
+ add r5, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ bne _02218994
+ ldr r0, [r4, #0x34]
+ bl MOD09_0221AD30
+ add r5, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ bne _0221899A
+ mov r5, #5
+ b _0221899A
+_02218994:
+ add r0, r4, #0
+ bl MOD09_0221A224
+_0221899A:
+ cmp r5, #5
+ bhi _02218A24
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022189AA: ; jump table
+ .short _022189B6 - _022189AA - 2 ; case 0
+ .short _022189B6 - _022189AA - 2 ; case 1
+ .short _022189B6 - _022189AA - 2 ; case 2
+ .short _022189B6 - _022189AA - 2 ; case 3
+ .short _022189D6 - _022189AA - 2 ; case 4
+ .short _02218A06 - _022189AA - 2 ; case 5
+_022189B6:
+ ldr r0, _02218A2C ; =0x000005DD
+ bl FUN_020054C8
+ lsl r0, r5, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, _02218A30 ; =0x0000114D
+ mov r2, #5
+ strb r1, [r4, r0]
+ sub r0, r0, #2
+ strb r2, [r4, r0]
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD09_0221A9D8
+ mov r0, #0xb
+ pop {r3, r4, r5, pc}
+_022189D6:
+ ldr r0, [r4]
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ beq _02218A24
+ ldr r0, _02218A2C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x1f]
+ ldr r0, _02218A30 ; =0x0000114D
+ strb r1, [r4, r0]
+ mov r1, #6
+ sub r0, r0, #2
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD09_02219C68
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #0
+ bl MOD09_0221A9D8
+ mov r0, #0xb
+ pop {r3, r4, r5, pc}
+_02218A06:
+ ldr r0, _02218A2C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, [r4]
+ mov r2, #0
+ strh r2, [r0, #0x1c]
+ ldr r0, [r4]
+ mov r1, #4
+ strb r1, [r0, #0x1e]
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD09_0221A9D8
+ mov r0, #0xd
+ pop {r3, r4, r5, pc}
+_02218A24:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02218A28: .word 0x0221BBE8
+_02218A2C: .word 0x000005DD
+_02218A30: .word 0x0000114D
+
+ thumb_func_start MOD09_02218A34
+MOD09_02218A34: ; 0x02218A34
+ push {r3, r4, r5, lr}
+ ldr r1, _02218B34 ; =0x0221BC04
+ add r4, r0, #0
+ bl MOD09_02219424
+ add r5, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ bne _02218A5C
+ ldr r0, [r4, #0x34]
+ bl MOD09_0221AD30
+ add r5, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ bne _02218A62
+ mov r5, #8
+ b _02218A62
+_02218A5C:
+ add r0, r4, #0
+ bl MOD09_0221A224
+_02218A62:
+ cmp r5, #8
+ bhi _02218B30
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02218A72: ; jump table
+ .short _02218A84 - _02218A72 - 2 ; case 0
+ .short _02218A84 - _02218A72 - 2 ; case 1
+ .short _02218A84 - _02218A72 - 2 ; case 2
+ .short _02218A84 - _02218A72 - 2 ; case 3
+ .short _02218A84 - _02218A72 - 2 ; case 4
+ .short _02218A84 - _02218A72 - 2 ; case 5
+ .short _02218ABA - _02218A72 - 2 ; case 6
+ .short _02218AE8 - _02218A72 - 2 ; case 7
+ .short _02218B16 - _02218A72 - 2 ; case 8
+_02218A84:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD09_02219D94
+ cmp r0, #0
+ beq _02218B30
+ ldr r0, _02218B38 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _02218B3C ; =0x0000114D
+ ldr r2, [r4]
+ ldrb r1, [r4, r0]
+ sub r0, r0, #2
+ add r1, r2, r1
+ add r1, #0x27
+ strb r5, [r1]
+ mov r1, #6
+ strb r1, [r4, r0]
+ add r1, r5, #6
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl MOD09_0221A9D8
+ mov r0, #0xb
+ pop {r3, r4, r5, pc}
+_02218ABA:
+ ldr r0, _02218B3C ; =0x0000114D
+ ldrb r1, [r4, r0]
+ add r0, r0, #7
+ add r1, r4, r1
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _02218B30
+ ldr r0, _02218B38 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _02218B40 ; =0x0000114B
+ mov r1, #7
+ strb r1, [r4, r0]
+ sub r1, #8
+ add r0, r0, #3
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0
+ bl MOD09_0221A9D8
+ mov r0, #0xb
+ pop {r3, r4, r5, pc}
+_02218AE8:
+ ldr r0, _02218B3C ; =0x0000114D
+ ldrb r1, [r4, r0]
+ add r0, r0, #7
+ add r1, r4, r1
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _02218B30
+ ldr r0, _02218B38 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _02218B40 ; =0x0000114B
+ mov r1, #7
+ strb r1, [r4, r0]
+ mov r1, #1
+ add r0, r0, #3
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #0xd
+ mov r2, #0
+ bl MOD09_0221A9D8
+ mov r0, #0xb
+ pop {r3, r4, r5, pc}
+_02218B16:
+ ldr r0, _02218B38 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _02218B40 ; =0x0000114B
+ mov r1, #4
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD09_0221A9D8
+ mov r0, #0xb
+ pop {r3, r4, r5, pc}
+_02218B30:
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02218B34: .word 0x0221BC04
+_02218B38: .word 0x000005DD
+_02218B3C: .word 0x0000114D
+_02218B40: .word 0x0000114B
+
+ thumb_func_start MOD09_02218B44
+MOD09_02218B44: ; 0x02218B44
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, _02218BB4 ; =0x0000114D
+ ldr r1, [r4]
+ ldrb r2, [r4, r0]
+ mov r3, #0
+ add r5, r1, r2
+ mov r1, #0x2c
+ ldrsb r2, [r5, r1]
+ add r5, #0x27
+ add r1, r0, #1
+ strb r3, [r5]
+ ldrsb r1, [r4, r1]
+ add r1, r2, r1
+ lsl r1, r1, #0x18
+ asr r2, r1, #0x18
+ ldrb r1, [r4, r0]
+ add r0, r0, #7
+ add r5, r4, r1
+ ldrb r5, [r5, r0]
+ cmp r2, r5
+ ble _02218B7A
+ ldr r0, [r4]
+ add r0, r0, r1
+ add r0, #0x2c
+ strb r3, [r0]
+ b _02218B8E
+_02218B7A:
+ cmp r2, #0
+ ldr r0, [r4]
+ bge _02218B88
+ add r0, r0, r1
+ add r0, #0x2c
+ strb r5, [r0]
+ b _02218B8E
+_02218B88:
+ add r0, r0, r1
+ add r0, #0x2c
+ strb r2, [r0]
+_02218B8E:
+ add r0, r4, #0
+ bl MOD09_0221983C
+ add r0, r4, #0
+ bl MOD09_02219884
+ ldr r1, _02218BB8 ; =0x0000114C
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_0221A044
+ ldr r1, _02218BB8 ; =0x0000114C
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_0221AAF0
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+ nop
+_02218BB4: .word 0x0000114D
+_02218BB8: .word 0x0000114C
+
+ thumb_func_start MOD09_02218BBC
+MOD09_02218BBC: ; 0x02218BBC
+ push {r3, r4, r5, lr}
+ ldr r1, _02218C48 ; =0x0221BB78
+ add r5, r0, #0
+ bl MOD09_02219424
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02218BE4
+ ldr r0, [r5, #0x34]
+ bl MOD09_0221AD30
+ add r4, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _02218BEA
+ mov r4, #1
+ b _02218BEA
+_02218BE4:
+ add r0, r5, #0
+ bl MOD09_0221A224
+_02218BEA:
+ cmp r4, #0
+ beq _02218BF4
+ cmp r4, #1
+ beq _02218C2A
+ b _02218C44
+_02218BF4:
+ ldr r0, _02218C4C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r1, _02218C50 ; =0x0000114D
+ ldr r2, [r5]
+ ldrb r1, [r5, r1]
+ add r0, r5, #0
+ add r1, r2, r1
+ add r1, #0x27
+ ldrb r1, [r1]
+ bl MOD09_02219D94
+ ldr r1, [r5]
+ mov r2, #0
+ strh r0, [r1, #0x1c]
+ ldr r0, _02218C50 ; =0x0000114D
+ ldrb r1, [r5, r0]
+ ldr r0, [r5]
+ strb r1, [r0, #0x1e]
+ add r0, r5, #0
+ mov r1, #0xf
+ bl MOD09_0221A9D8
+ add r0, r5, #0
+ bl MOD09_02218C58
+ pop {r3, r4, r5, pc}
+_02218C2A:
+ ldr r0, _02218C4C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _02218C54 ; =0x0000114B
+ mov r1, #5
+ strb r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #0x10
+ mov r2, #0
+ bl MOD09_0221A9D8
+ mov r0, #0xb
+ pop {r3, r4, r5, pc}
+_02218C44:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02218C48: .word 0x0221BB78
+_02218C4C: .word 0x000005DD
+_02218C50: .word 0x0000114D
+_02218C54: .word 0x0000114B
+
+ thumb_func_start MOD09_02218C58
+MOD09_02218C58: ; 0x02218C58
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r1, _02218E38 ; =0x0000114D
+ add r5, r0, #0
+ ldrb r1, [r5, r1]
+ ldr r4, [r5]
+ cmp r1, #3
+ beq _02218C68
+ b _02218D82
+_02218C68:
+ bl MOD09_02219430
+ add r7, r0, #0
+ ldrh r0, [r4, #0x1c]
+ ldr r2, [r4, #0xc]
+ mov r1, #7
+ bl FUN_0206E7B8
+ add r6, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _02218CDA
+ ldrh r0, [r4, #0x1c]
+ cmp r0, #0x37
+ beq _02218CDA
+ cmp r6, #3
+ beq _02218CDA
+ ldr r0, [r4]
+ ldr r1, [r4, #0x10]
+ add r2, r7, #0
+ bl FUN_02230014
+ add r6, r0, #0
+ ldr r0, [r5, #0x10]
+ mov r1, #0x2e
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r6, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldr r0, [r5, #0x14]
+ ldr r2, _02218E3C ; =0x00000175
+ mov r1, #1
+ bl FUN_0200AD5C
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r5, #0
+ bl MOD09_02219BE0
+ ldr r0, _02218E40 ; =0x0000114B
+ mov r1, #8
+ strb r1, [r5, r0]
+ mov r0, #9
+ pop {r3, r4, r5, r6, r7, pc}
+_02218CDA:
+ ldrh r0, [r4, #0x1c]
+ add r2, r7, #0
+ mov r3, #0
+ str r0, [sp]
+ ldr r0, [r4]
+ ldr r1, [r4, #0x10]
+ bl FUN_02230370
+ cmp r0, #1
+ bne _02218D00
+ ldr r2, _02218E38 ; =0x0000114D
+ ldrh r1, [r4, #0x1c]
+ ldrb r2, [r5, r2]
+ ldr r0, [r4]
+ ldr r3, [r4, #0xc]
+ bl MOD09_0221944C
+ mov r0, #0xd
+ pop {r3, r4, r5, r6, r7, pc}
+_02218D00:
+ cmp r6, #3
+ bne _02218D68
+ ldr r0, [r4]
+ bl FUN_0222FF74
+ mov r1, #1
+ tst r0, r1
+ bne _02218D22
+ ldr r2, _02218E38 ; =0x0000114D
+ ldrh r1, [r4, #0x1c]
+ ldrb r2, [r5, r2]
+ ldr r0, [r4]
+ ldr r3, [r4, #0xc]
+ bl MOD09_0221944C
+ mov r0, #0xd
+ pop {r3, r4, r5, r6, r7, pc}
+_02218D22:
+ ldr r3, [r4, #0xc]
+ add r0, r1, #0
+ mov r1, #0x1a
+ mov r2, #0xc7
+ bl FUN_0200A86C
+ mov r1, #0x24
+ add r7, r0, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r0, [r5, #0x14]
+ ldr r2, [r4, #4]
+ mov r1, #0
+ bl FUN_0200ABC0
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ add r0, r5, #0
+ bl MOD09_02219BE0
+ ldr r0, _02218E40 ; =0x0000114B
+ mov r1, #8
+ strb r1, [r5, r0]
+ mov r0, #9
+ pop {r3, r4, r5, r6, r7, pc}
+_02218D68:
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x18]
+ mov r1, #0x22
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ bl MOD09_02219BE0
+ ldr r0, _02218E40 ; =0x0000114B
+ mov r1, #8
+ strb r1, [r5, r0]
+ mov r0, #9
+ pop {r3, r4, r5, r6, r7, pc}
+_02218D82:
+ cmp r1, #2
+ bne _02218E32
+ add r0, r4, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _02218DAA
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x18]
+ mov r1, #0x2c
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ bl MOD09_02219BE0
+ ldr r0, _02218E40 ; =0x0000114B
+ mov r1, #8
+ strb r1, [r5, r0]
+ mov r0, #9
+ pop {r3, r4, r5, r6, r7, pc}
+_02218DAA:
+ add r0, r4, #0
+ add r0, #0x23
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _02218DCE
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x18]
+ mov r1, #0x2f
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ bl MOD09_02219BE0
+ ldr r0, _02218E40 ; =0x0000114B
+ mov r1, #8
+ strb r1, [r5, r0]
+ mov r0, #9
+ pop {r3, r4, r5, r6, r7, pc}
+_02218DCE:
+ add r0, r4, #0
+ add r0, #0x24
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _02218DF2
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x18]
+ mov r1, #0x30
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ bl MOD09_02219BE0
+ ldr r0, _02218E40 ; =0x0000114B
+ mov r1, #8
+ strb r1, [r5, r0]
+ mov r0, #9
+ pop {r3, r4, r5, r6, r7, pc}
+_02218DF2:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x10]
+ bl FUN_0222FF88
+ add r6, r0, #0
+ ldr r0, [r4]
+ bl FUN_02230290
+ add r4, r0, #0
+ add r0, r6, #0
+ bl FUN_0206B9AC
+ cmp r0, #6
+ bne _02218E32
+ add r0, r4, #0
+ bl FUN_0206B334
+ cmp r0, #0x12
+ bne _02218E32
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x18]
+ mov r1, #0x2d
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ bl MOD09_02219BE0
+ ldr r0, _02218E40 ; =0x0000114B
+ mov r1, #8
+ strb r1, [r5, r0]
+ mov r0, #9
+ pop {r3, r4, r5, r6, r7, pc}
+_02218E32:
+ mov r0, #0xd
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02218E38: .word 0x0000114D
+_02218E3C: .word 0x00000175
+_02218E40: .word 0x0000114B
+
+ thumb_func_start MOD09_02218E44
+MOD09_02218E44: ; 0x02218E44
+ push {r3, lr}
+ mov r1, #0
+ bl MOD09_022193BC
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD09_02218E50
+MOD09_02218E50: ; 0x02218E50
+ push {r3, lr}
+ mov r1, #1
+ bl MOD09_022193BC
+ mov r0, #2
+ pop {r3, pc}
+
+ thumb_func_start MOD09_02218E5C
+MOD09_02218E5C: ; 0x02218E5C
+ push {r3, lr}
+ mov r1, #2
+ bl MOD09_022193BC
+ mov r0, #3
+ pop {r3, pc}
+
+ thumb_func_start MOD09_02218E68
+MOD09_02218E68: ; 0x02218E68
+ push {r3, lr}
+ add r0, #0x1c
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #3
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02218E78
+MOD09_02218E78: ; 0x02218E78
+ push {r3, lr}
+ add r0, #0x32
+ ldrb r0, [r0]
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02218E8A
+ mov r0, #0xa
+ pop {r3, pc}
+_02218E8A:
+ mov r0, #9
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02218E90
+MOD09_02218E90: ; 0x02218E90
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02218EB0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _02218EA6
+ bl FUN_02020AA4
+ cmp r0, #1
+ bne _02218EAC
+_02218EA6:
+ ldr r0, _02218EB4 ; =0x0000114B
+ ldrb r0, [r4, r0]
+ pop {r4, pc}
+_02218EAC:
+ mov r0, #0xa
+ pop {r4, pc}
+ .align 2, 0
+_02218EB0: .word 0x021C48B8
+_02218EB4: .word 0x0000114B
+
+ thumb_func_start MOD09_02218EB8
+MOD09_02218EB8: ; 0x02218EB8
+ ldr r1, _02218ECC ; =0x0000113E
+ ldrb r2, [r0, r1]
+ cmp r2, #2
+ bne _02218EC6
+ add r1, #0xd
+ ldrb r0, [r0, r1]
+ bx lr
+_02218EC6:
+ mov r0, #0xb
+ bx lr
+ nop
+_02218ECC: .word 0x0000113E
+
+ thumb_func_start MOD09_02218ED0
+MOD09_02218ED0: ; 0x02218ED0
+ push {lr}
+ sub sp, #0xc
+ mov r2, #0
+ str r2, [sp]
+ mov r1, #0x10
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ mov r1, #0xa
+ add r3, r1, #0
+ ldr r0, [r0, #8]
+ ldr r2, _02218EF4 ; =0x0000FFFF
+ sub r3, #0x12
+ bl FUN_02003210
+ mov r0, #0xe
+ add sp, #0xc
+ pop {pc}
+ nop
+_02218EF4: .word 0x0000FFFF
+
+ thumb_func_start MOD09_02218EF8
+MOD09_02218EF8: ; 0x02218EF8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r0, [r5, #8]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _02218F0C
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02218F0C:
+ add r0, r5, #0
+ bl MOD09_02219FE4
+ add r0, r5, #0
+ bl MOD09_02219520
+ add r0, r5, #0
+ bl MOD09_022192E4
+ ldr r0, [r5, #4]
+ bl MOD09_02219198
+ ldr r0, [r5, #0x34]
+ bl MOD09_0221AC28
+ ldr r1, [r5]
+ add r1, #0x25
+ strb r0, [r1]
+ ldr r0, [r5, #0x34]
+ bl MOD09_0221AC1C
+ mov r0, #2
+ bl FUN_02002CF8
+ ldr r1, [r5]
+ ldrh r0, [r1, #0x1c]
+ cmp r0, #0
+ beq _02218F78
+ ldr r0, [r1]
+ bl FUN_02230218
+ add r6, r0, #0
+ mov r4, #0
+_02218F4E:
+ ldr r3, [r5]
+ add r0, r6, #0
+ add r2, r3, r4
+ add r3, r3, r4
+ add r2, #0x27
+ add r3, #0x2c
+ ldrb r2, [r2]
+ ldrb r3, [r3]
+ add r1, r4, #0
+ bl FUN_0206F1B8
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #5
+ blo _02218F4E
+ ldr r1, _02218F8C ; =0x0000114D
+ add r0, r6, #0
+ ldrb r1, [r5, r1]
+ bl FUN_0206F1EC
+_02218F78:
+ ldr r0, [r5]
+ mov r1, #1
+ add r0, #0x26
+ strb r1, [r0]
+ add r0, r7, #0
+ bl FUN_0200621C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02218F8C: .word 0x0000114D
+
+ thumb_func_start MOD09_02218F90
+MOD09_02218F90: ; 0x02218F90
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _02218FA2
+ mov r0, #0xc
+ pop {r4, pc}
+_02218FA2:
+ ldr r0, _022190BC ; =0x00001159
+ ldrb r0, [r4, r0]
+ cmp r0, #4
+ bls _02218FAC
+ b _022190B6
+_02218FAC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02218FB8: ; jump table
+ .short _02218FC2 - _02218FB8 - 2 ; case 0
+ .short _02219004 - _02218FB8 - 2 ; case 1
+ .short _02219014 - _02218FB8 - 2 ; case 2
+ .short _0221905E - _02218FB8 - 2 ; case 3
+ .short _0221906E - _02218FB8 - 2 ; case 4
+_02218FC2:
+ ldr r0, [r4, #0x38]
+ bl FUN_0225D824
+ cmp r0, #1
+ bne _02218FFA
+ ldr r0, _022190C0 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _022190C4 ; =0x0000114D
+ mov r1, #2
+ strb r1, [r4, r0]
+ mov r2, #0xc
+ sub r0, r0, #2
+ strb r2, [r4, r0]
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD09_0221A9D8
+ ldr r0, _022190C8 ; =0x0000115A
+ mov r1, #0
+ strb r1, [r4, r0]
+ sub r1, r0, #1
+ ldrb r1, [r4, r1]
+ sub r0, r0, #1
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ mov r0, #0xb
+ pop {r4, pc}
+_02218FFA:
+ ldr r0, _022190C8 ; =0x0000115A
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ b _022190B6
+_02219004:
+ add r0, r4, #0
+ bl MOD09_02218E50
+ ldr r0, _022190BC ; =0x00001159
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ b _022190B6
+_02219014:
+ ldr r0, [r4, #0x38]
+ bl FUN_0225D824
+ cmp r0, #1
+ bne _02219054
+ ldr r0, _022190C0 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _022190C4 ; =0x0000114D
+ ldr r3, [r4]
+ ldrb r1, [r4, r0]
+ mov r2, #0
+ sub r0, r0, #2
+ add r1, r3, r1
+ add r1, #0x27
+ strb r2, [r1]
+ mov r1, #0xc
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD09_0221A9D8
+ ldr r0, _022190C8 ; =0x0000115A
+ mov r1, #0
+ strb r1, [r4, r0]
+ sub r1, r0, #1
+ ldrb r1, [r4, r1]
+ sub r0, r0, #1
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ mov r0, #0xb
+ pop {r4, pc}
+_02219054:
+ ldr r0, _022190C8 ; =0x0000115A
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ b _022190B6
+_0221905E:
+ add r0, r4, #0
+ bl MOD09_02218E5C
+ ldr r0, _022190BC ; =0x00001159
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ b _022190B6
+_0221906E:
+ ldr r0, [r4, #0x38]
+ bl FUN_0225D824
+ cmp r0, #1
+ bne _022190AE
+ ldr r0, _022190C0 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r1, _022190C4 ; =0x0000114D
+ ldr r2, [r4]
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ add r1, r2, r1
+ add r1, #0x27
+ ldrb r1, [r1]
+ bl MOD09_02219D94
+ ldr r1, [r4]
+ mov r2, #0
+ strh r0, [r1, #0x1c]
+ ldr r0, _022190C4 ; =0x0000114D
+ ldrb r1, [r4, r0]
+ ldr r0, [r4]
+ strb r1, [r0, #0x1e]
+ add r0, r4, #0
+ mov r1, #0xf
+ bl MOD09_0221A9D8
+ add r0, r4, #0
+ bl MOD09_02218C58
+ pop {r4, pc}
+_022190AE:
+ ldr r0, _022190C8 ; =0x0000115A
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+_022190B6:
+ mov r0, #0xc
+ pop {r4, pc}
+ nop
+_022190BC: .word 0x00001159
+_022190C0: .word 0x000005DD
+_022190C4: .word 0x0000114D
+_022190C8: .word 0x0000115A
+
+ thumb_func_start MOD09_022190CC
+MOD09_022190CC: ; 0x022190CC
+ push {r4, r5, lr}
+ sub sp, #0x64
+ ldr r5, _02219188 ; =0x0221BB84
+ add r3, sp, #0x54
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ mov r1, #1
+ bl FUN_02016BF4
+ ldr r5, _0221918C ; =0x0221BBCC
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _02219190 ; =0x0221BBB0
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #4]
+ mov r1, #5
+ bl FUN_02018744
+ ldr r5, _02219194 ; =0x0221BB94
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_02018744
+ ldr r3, [r4]
+ mov r0, #5
+ ldr r3, [r3, #0xc]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #4
+ ldr r3, [r3, #0xc]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r0, [r4, #4]
+ mov r1, #5
+ bl FUN_0201AC68
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_0201AC68
+ add sp, #0x64
+ pop {r4, r5, pc}
+ .align 2, 0
+_02219188: .word 0x0221BB84
+_0221918C: .word 0x0221BBCC
+_02219190: .word 0x0221BBB0
+_02219194: .word 0x0221BB94
+
+ thumb_func_start MOD09_02219198
+MOD09_02219198: ; 0x02219198
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x17
+ mov r1, #0
+ bl FUN_0201E74C
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_020178A0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_022191C0
+MOD09_022191C0: ; 0x022191C0
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ mov r3, #6
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x4d
+ bl FUN_0200687C
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r5]
+ mov r3, #6
+ ldr r0, [r0, #0xc]
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x4d
+ bl FUN_020068C8
+ ldr r2, [r5]
+ mov r0, #0x4d
+ ldr r2, [r2, #0xc]
+ mov r1, #1
+ bl LoadFromNarc_2
+ add r1, sp, #0x10
+ add r4, r0, #0
+ bl FUN_020B0180
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ add r1, #0xc
+ bl MOD09_0221A2F4
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #6
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r3, [r5]
+ ldr r0, [r5, #8]
+ ldr r3, [r3, #0xc]
+ mov r1, #0x4d
+ mov r2, #3
+ bl FUN_020030E8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xf0
+ str r0, [sp, #8]
+ ldr r3, [r5]
+ ldr r0, [r5, #8]
+ ldr r3, [r3, #0xc]
+ mov r1, #0xe
+ mov r2, #7
+ bl FUN_020030E8
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02230E44
+ add r4, r0, #0
+ bl FUN_0200CD60
+ add r1, r0, #0
+ ldr r0, _022192A0 ; =0x000003E2
+ mov r3, #4
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0, #0xc]
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x26
+ bl FUN_0200687C
+ add r0, r4, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ ldr r3, [r5]
+ ldr r0, [r5, #8]
+ ldr r3, [r3, #0xc]
+ mov r1, #0x26
+ bl FUN_020030E8
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_022192A0: .word 0x000003E2
+
+ thumb_func_start MOD09_022192A4
+MOD09_022192A4: ; 0x022192A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r3, [r4]
+ mov r0, #0
+ ldr r3, [r3, #0xc]
+ mov r1, #0x1a
+ mov r2, #2
+ bl FUN_0200A86C
+ str r0, [r4, #0x10]
+ ldr r3, [r4]
+ mov r0, #0xf
+ ldr r3, [r3, #0xc]
+ mov r1, #0xe
+ mov r2, #0
+ bl FUN_0200B870
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ ldr r0, [r0, #0xc]
+ bl FUN_0200AA80
+ str r0, [r4, #0x14]
+ ldr r1, [r4]
+ mov r0, #2
+ ldr r1, [r1, #0xc]
+ lsl r0, r0, #8
+ bl FUN_020219F4
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_022192E4
+MOD09_022192E4: ; 0x022192E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0xc]
+ bl FUN_0200B990
+ ldr r0, [r4, #0x14]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x18]
+ bl FUN_02021A20
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02219304
+MOD09_02219304: ; 0x02219304
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #0
+ beq _02219316
+ cmp r1, #1
+ beq _02219330
+ cmp r1, #2
+ beq _0221934C
+ pop {r4, pc}
+_02219316:
+ mov r2, #0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_0201AEE4
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #3
+ mov r3, #0
+ bl FUN_0201AEE4
+ pop {r4, pc}
+_02219330:
+ mov r1, #6
+ add r3, r1, #0
+ ldr r0, [r4, #4]
+ mov r2, #0
+ add r3, #0xfa
+ bl FUN_0201AEE4
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #3
+ mov r3, #0
+ bl FUN_0201AEE4
+ pop {r4, pc}
+_0221934C:
+ mov r2, #0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_0201AEE4
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ add r3, #0xfd
+ bl FUN_0201AEE4
+ pop {r4, pc}
+
+ thumb_func_start MOD09_02219368
+MOD09_02219368: ; 0x02219368
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ cmp r1, #2
+ bne _022193B2
+ mov r0, #0x1c
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, _022193B8 ; =0x0000114D
+ mov r1, #6
+ ldrb r0, [r4, r0]
+ mov r2, #2
+ mov r3, #0x23
+ add r0, #8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_020186B4
+ mov r0, #0x1c
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ ldr r0, _022193B8 ; =0x0000114D
+ mov r1, #6
+ ldrb r0, [r4, r0]
+ mov r2, #2
+ mov r3, #0x28
+ add r0, #8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_020186B4
+_022193B2:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_022193B8: .word 0x0000114D
+
+ thumb_func_start MOD09_022193BC
+MOD09_022193BC: ; 0x022193BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD09_02219368
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02219304
+ ldr r0, [r5, #4]
+ mov r1, #4
+ mov r2, #0
+ bl FUN_0201878C
+ ldr r0, [r5, #4]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_0201878C
+ add r0, r5, #0
+ bl MOD09_02219510
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02219498
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_0221953C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_0221AAF0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_0221A1DC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_0221A2BC
+ ldr r1, _02219420 ; =0x0000114C
+ add r0, r5, #0
+ strb r4, [r5, r1]
+ ldrb r1, [r5, r1]
+ bl MOD09_0221A044
+ pop {r3, r4, r5, pc}
+ nop
+_02219420: .word 0x0000114C
+
+ thumb_func_start MOD09_02219424
+MOD09_02219424: ; 0x02219424
+ ldr r3, _0221942C ; =0x02020989
+ add r0, r1, #0
+ bx r3
+ nop
+_0221942C: .word 0x02020989
+
+ thumb_func_start MOD09_02219430
+MOD09_02219430: ; 0x02219430
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5]
+ ldr r0, [r4]
+ bl FUN_0222FF78
+ add r1, r0, #0
+ ldr r0, [r5]
+ ldr r3, [r4, #0x10]
+ ldr r0, [r0]
+ mov r2, #2
+ bl FUN_0224C474
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD09_0221944C
+MOD09_0221944C: ; 0x0221944C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r7, r3, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ bl FUN_02230214
+ add r1, r4, #0
+ mov r2, #1
+ add r3, r7, #0
+ bl FUN_0206EDD4
+ add r0, r5, #0
+ bl FUN_02230218
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_0206F1E4
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD09_02219474
+MOD09_02219474: ; 0x02219474
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ ldr r2, _02219490 ; =0x0221BC2C
+ add r1, #0x1c
+ bl FUN_02019150
+ ldr r1, _02219494 ; =0x0000114C
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ bl MOD09_02219498
+ pop {r4, pc}
+ .align 2, 0
+_02219490: .word 0x0221BC2C
+_02219494: .word 0x0000114C
+
+ thumb_func_start MOD09_02219498
+MOD09_02219498: ; 0x02219498
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ cmp r1, #0
+ beq _022194AA
+ cmp r1, #1
+ beq _022194B4
+ cmp r1, #2
+ beq _022194BE
+ b _022194C6
+_022194AA:
+ mov r1, #5
+ add r0, #0x30
+ ldr r6, _02219504 ; =0x0221BC54
+ strb r1, [r0]
+ b _022194C6
+_022194B4:
+ mov r1, #0x1a
+ add r0, #0x30
+ ldr r6, _02219508 ; =0x0221BCAC
+ strb r1, [r0]
+ b _022194C6
+_022194BE:
+ ldr r6, _0221950C ; =0x0221BC34
+ mov r1, #4
+ add r0, #0x30
+ strb r1, [r0]
+_022194C6:
+ add r1, r5, #0
+ ldr r0, [r5]
+ add r1, #0x30
+ ldrb r1, [r1]
+ ldr r0, [r0, #0xc]
+ bl FUN_02018FF4
+ str r0, [r5, #0x2c]
+ add r0, r5, #0
+ add r0, #0x30
+ ldrb r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ bls _02219502
+_022194E2:
+ ldr r2, [r5, #0x2c]
+ lsl r1, r4, #4
+ add r1, r2, r1
+ lsl r2, r4, #3
+ ldr r0, [r5, #4]
+ add r2, r6, r2
+ bl FUN_02019150
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, r5, #0
+ add r0, #0x30
+ ldrb r0, [r0]
+ cmp r4, r0
+ blo _022194E2
+_02219502:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02219504: .word 0x0221BC54
+_02219508: .word 0x0221BCAC
+_0221950C: .word 0x0221BC34
+
+ thumb_func_start MOD09_02219510
+MOD09_02219510: ; 0x02219510
+ add r1, r0, #0
+ ldr r0, [r1, #0x2c]
+ add r1, #0x30
+ ldr r3, _0221951C ; =0x020191A5
+ ldrb r1, [r1]
+ bx r3
+ .align 2, 0
+_0221951C: .word 0x020191A5
+
+ thumb_func_start MOD09_02219520
+MOD09_02219520: ; 0x02219520
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r1, #0x30
+ ldrb r1, [r1]
+ ldr r0, [r4, #0x2c]
+ bl FUN_020191A4
+ add r4, #0x1c
+ add r0, r4, #0
+ bl FUN_02019178
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_0221953C
+MOD09_0221953C: ; 0x0221953C
+ push {r3, lr}
+ cmp r1, #0
+ beq _0221954C
+ cmp r1, #1
+ beq _02219552
+ cmp r1, #2
+ beq _02219558
+ pop {r3, pc}
+_0221954C:
+ bl MOD09_022195B8
+ pop {r3, pc}
+_02219552:
+ bl MOD09_02219A74
+ pop {r3, pc}
+_02219558:
+ bl MOD09_02219B60
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02219560
+MOD09_02219560: ; 0x02219560
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r5, [r0, #0x2c]
+ lsl r4, r1, #4
+ ldr r0, [r0, #0x10]
+ add r1, r2, #0
+ add r6, r3, #0
+ bl FUN_0200A914
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x10]
+ add r0, r6, #0
+ mov r2, #0
+ bl FUN_02002E14
+ add r7, r0, #0
+ add r0, r5, r4
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r7
+ lsr r3, r0, #1
+ ldr r0, [sp, #0x28]
+ ldr r2, [sp, #0x10]
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x2c]
+ add r1, r6, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r5, r4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_022195B8
+MOD09_022195B8: ; 0x022195B8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r6, #0
+ add r5, r0, #0
+ add r4, r6, #0
+ add r7, r6, #0
+_022195C4:
+ ldr r0, [r5, #0x2c]
+ add r1, r7, #0
+ add r0, r0, r4
+ bl FUN_02019620
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, #5
+ blo _022195C4
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02219690 ; =0x00030201
+ mov r1, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r2, r1, #0
+ mov r3, #2
+ bl MOD09_02219560
+ mov r0, #0x18
+ str r0, [sp]
+ ldr r0, _02219690 ; =0x00030201
+ mov r1, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #1
+ mov r3, #2
+ bl MOD09_02219560
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02219690 ; =0x00030201
+ mov r2, #2
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD09_02219560
+ mov r0, #0x18
+ str r0, [sp]
+ ldr r0, _02219690 ; =0x00030201
+ mov r1, #1
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #3
+ mov r3, #2
+ bl MOD09_02219560
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02219690 ; =0x00030201
+ mov r1, #2
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #7
+ add r3, r1, #0
+ bl MOD09_02219560
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02219690 ; =0x00030201
+ mov r1, #3
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #6
+ mov r3, #2
+ bl MOD09_02219560
+ ldr r0, [r5]
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ beq _0221968A
+ ldr r0, [r5, #0x10]
+ mov r1, #8
+ bl FUN_0200A914
+ add r4, r0, #0
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02219690 ; =0x00030201
+ mov r3, #0
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [r5, #0x2c]
+ mov r1, #2
+ add r0, #0x40
+ add r2, r4, #0
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [r5, #0x2c]
+ add r0, #0x40
+ bl FUN_02019220
+_0221968A:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02219690: .word 0x00030201
+
+ thumb_func_start MOD09_02219694
+MOD09_02219694: ; 0x02219694
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r4, [r5, #0x2c]
+ lsl r6, r3, #4
+ add r7, r1, #0
+ add r0, r4, r6
+ mov r1, #0
+ str r2, [sp, #0x10]
+ bl FUN_02019620
+ ldr r0, _02219730 ; =0x0000114D
+ lsl r7, r7, #2
+ ldrb r1, [r5, r0]
+ mov r0, #0x90
+ mul r0, r1
+ add r0, r5, r0
+ add r0, r0, r7
+ ldrh r0, [r0, #0x3c]
+ cmp r0, #0
+ beq _02219726
+ ldr r1, [sp, #0x10]
+ ldr r0, [r5, #0x10]
+ lsl r2, r1, #3
+ ldr r1, _02219734 ; =0x0221BC7C
+ ldr r1, [r1, r2]
+ bl FUN_0200A914
+ ldr r2, _02219730 ; =0x0000114D
+ str r0, [sp, #0x14]
+ ldrb r3, [r5, r2]
+ mov r2, #0x90
+ ldr r0, [r5, #0x14]
+ mul r2, r3
+ add r2, r5, r2
+ add r2, r2, r7
+ ldrh r2, [r2, #0x3c]
+ mov r1, #0
+ bl FUN_0200AE38
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ ldr r2, [sp, #0x14]
+ bl FUN_0200B7B8
+ ldr r0, [sp, #0x30]
+ ldr r1, [r5, #0x18]
+ mov r2, #0
+ bl FUN_02002E14
+ add r7, r0, #0
+ add r0, r4, r6
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r7
+ lsr r3, r0, #1
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x34]
+ ldr r1, [sp, #0x30]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x18]
+ add r0, r4, r6
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+_02219726:
+ add r0, r4, r6
+ bl FUN_02019220
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02219730: .word 0x0000114D
+_02219734: .word 0x0221BC7C
+
+ thumb_func_start MOD09_02219738
+MOD09_02219738: ; 0x02219738
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r4, [r5, #0x2c]
+ lsl r7, r3, #4
+ add r6, r1, #0
+ add r0, r4, r7
+ mov r1, #0
+ str r2, [sp, #0x10]
+ bl FUN_02019620
+ ldr r0, _022197C4 ; =0x0000114D
+ lsl r6, r6, #2
+ ldrb r1, [r5, r0]
+ mov r0, #0x90
+ mul r0, r1
+ add r0, r5, r0
+ add r0, r0, r6
+ ldrh r0, [r0, #0x3e]
+ cmp r0, #0
+ beq _022197BA
+ ldr r1, [sp, #0x10]
+ ldr r0, [r5, #0x10]
+ lsl r2, r1, #3
+ ldr r1, _022197C8 ; =0x0221BC80
+ ldr r1, [r1, r2]
+ bl FUN_0200A914
+ mov r1, #0
+ str r0, [sp, #0x14]
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, _022197C4 ; =0x0000114D
+ ldr r0, [r5, #0x14]
+ ldrb r3, [r5, r2]
+ mov r2, #0x90
+ mul r2, r3
+ add r2, r5, r2
+ add r2, r2, r6
+ ldrh r2, [r2, #0x3e]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ ldr r2, [sp, #0x14]
+ bl FUN_0200B7B8
+ ldr r0, [sp, #0x34]
+ mov r3, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x38]
+ ldr r1, [sp, #0x30]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r2, [r5, #0x18]
+ add r0, r4, r7
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+_022197BA:
+ add r0, r4, r7
+ bl FUN_02019220
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022197C4: .word 0x0000114D
+_022197C8: .word 0x0221BC80
+
+ thumb_func_start MOD09_022197CC
+MOD09_022197CC: ; 0x022197CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ ldr r0, _02219830 ; =0x0000114D
+ add r5, r1, #0
+ ldrb r0, [r6, r0]
+ ldr r1, [r6]
+ add r0, r1, r0
+ add r0, #0x2c
+ ldrb r1, [r0]
+ mov r0, #6
+ mul r0, r1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0x31
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022197F4
+ mov r4, #0
+ b _022197F6
+_022197F4:
+ mov r4, #0xc
+_022197F6:
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _02219834 ; =0x00030201
+ ldr r1, [sp, #0xc]
+ lsl r7, r5, #1
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r1, r5, r1
+ add r2, r5, #0
+ add r3, r4, r7
+ bl MOD09_02219694
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, _02219838 ; =0x00010200
+ ldr r1, [sp, #0xc]
+ add r3, r4, #1
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r5, r1
+ add r2, r5, #0
+ add r3, r3, r7
+ bl MOD09_02219738
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02219830: .word 0x0000114D
+_02219834: .word 0x00030201
+_02219838: .word 0x00010200
+
+ thumb_func_start MOD09_0221983C
+MOD09_0221983C: ; 0x0221983C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ mov r2, #0
+ add r4, r0, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x13
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #4]
+ mov r1, #5
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r5, #0
+_0221985E:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD09_022197CC
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #6
+ blo _0221985E
+ add r0, r4, #0
+ add r0, #0x31
+ ldrb r1, [r0]
+ mov r0, #1
+ add r4, #0x31
+ eor r0, r1
+ strb r0, [r4]
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02219884
+MOD09_02219884: ; 0x02219884
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #0x19
+ ldr r1, [r5, #0x2c]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r5, #0x10]
+ mov r1, #0x1c
+ ldr r4, [r5, #0x2c]
+ bl FUN_0200A914
+ str r0, [sp, #0x10]
+ mov r0, #0
+ ldr r1, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r7, r0, #0
+ mov r0, #0x19
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl FUN_0201AB0C
+ lsl r0, r0, #3
+ sub r0, r0, r7
+ lsr r6, r0, #1
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022199AC ; =0x00010200
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ mov r1, #0
+ add r0, r4, r0
+ add r3, r6, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ ldr r0, [r5, #0x10]
+ mov r1, #0x1d
+ bl FUN_0200A914
+ mov r1, #0
+ str r0, [sp, #0x14]
+ ldr r3, _022199B0 ; =0x0000114D
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, _022199B0 ; =0x0000114D
+ add r3, r3, #7
+ ldrb r2, [r5, r2]
+ ldr r0, [r5, #0x14]
+ add r2, r5, r2
+ ldrb r2, [r2, r3]
+ mov r3, #2
+ add r2, r2, #1
+ bl FUN_0200AD38
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ ldr r2, [sp, #0x14]
+ bl FUN_0200B7B8
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022199AC ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r2, [r5, #0x18]
+ add r0, r4, r0
+ add r3, r6, r7
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ ldr r0, [r5, #0x10]
+ mov r1, #0x1e
+ bl FUN_0200A914
+ mov r1, #0
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r3, _022199B0 ; =0x0000114D
+ ldr r2, [r5]
+ ldrb r3, [r5, r3]
+ ldr r0, [r5, #0x14]
+ add r2, r2, r3
+ add r2, #0x2c
+ ldrb r2, [r2]
+ mov r3, #2
+ add r2, r2, #1
+ bl FUN_0200AD38
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ add r2, r7, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ ldr r1, [r5, #0x18]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022199AC ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r2, [r5, #0x18]
+ add r0, r4, r0
+ sub r3, r6, r3
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ mov r0, #0x19
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl FUN_02019220
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022199AC: .word 0x00010200
+_022199B0: .word 0x0000114D
+
+ thumb_func_start MOD09_022199B4
+MOD09_022199B4: ; 0x022199B4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #6
+ ldr r1, [r4, #0x2c]
+ lsl r0, r0, #6
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _02219A6C ; =0x0000114D
+ ldrb r0, [r4, r0]
+ cmp r0, #3
+ bhi _02219A68
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022199DC: ; jump table
+ .short _022199E4 - _022199DC - 2 ; case 0
+ .short _02219A10 - _022199DC - 2 ; case 1
+ .short _02219A3C - _022199DC - 2 ; case 2
+ .short _02219A54 - _022199DC - 2 ; case 3
+_022199E4:
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, _02219A70 ; =0x00010200
+ mov r1, #0x18
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x16
+ mov r3, #0
+ bl MOD09_02219560
+ mov r0, #0x14
+ str r0, [sp]
+ ldr r0, _02219A70 ; =0x00010200
+ mov r1, #0x18
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x17
+ mov r3, #0
+ bl MOD09_02219560
+ add sp, #8
+ pop {r4, pc}
+_02219A10:
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, _02219A70 ; =0x00010200
+ mov r1, #0x18
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r2, r1, #0
+ mov r3, #0
+ bl MOD09_02219560
+ mov r0, #0x14
+ str r0, [sp]
+ ldr r0, _02219A70 ; =0x00010200
+ mov r1, #0x18
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x19
+ mov r3, #0
+ bl MOD09_02219560
+ add sp, #8
+ pop {r4, pc}
+_02219A3C:
+ mov r0, #0xc
+ str r0, [sp]
+ ldr r0, _02219A70 ; =0x00010200
+ mov r1, #0x18
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1a
+ mov r3, #0
+ bl MOD09_02219560
+ add sp, #8
+ pop {r4, pc}
+_02219A54:
+ mov r0, #0xc
+ str r0, [sp]
+ ldr r0, _02219A70 ; =0x00010200
+ mov r1, #0x18
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD09_02219560
+_02219A68:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_02219A6C: .word 0x0000114D
+_02219A70: .word 0x00010200
+
+ thumb_func_start MOD09_02219A74
+MOD09_02219A74: ; 0x02219A74
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD09_0221983C
+ add r0, r4, #0
+ bl MOD09_022199B4
+ add r0, r4, #0
+ bl MOD09_02219884
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02219A8C
+MOD09_02219A8C: ; 0x02219A8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ add r6, r1, #0
+ mov r1, #9
+ ldr r4, [r5, #0x2c]
+ bl FUN_0200A914
+ ldr r2, _02219AF4 ; =0x0000114D
+ add r7, r0, #0
+ ldrb r3, [r5, r2]
+ mov r2, #0x90
+ ldr r0, [r5, #0x14]
+ mul r2, r3
+ add r2, r5, r2
+ lsl r3, r6, #2
+ add r2, r2, r3
+ ldrh r2, [r2, #0x3c]
+ mov r1, #0
+ bl FUN_0200AE38
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ add r2, r7, #0
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02219AF8 ; =0x00010200
+ add r3, r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #0x18]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02219AF4: .word 0x0000114D
+_02219AF8: .word 0x00010200
+
+ thumb_func_start MOD09_02219AFC
+MOD09_02219AFC: ; 0x02219AFC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r1, [r5]
+ ldr r4, [r5, #0x2c]
+ ldr r1, [r1, #0xc]
+ mov r0, #0x82
+ add r4, #0x20
+ bl FUN_020219F4
+ ldr r1, _02219B58 ; =0x0000114D
+ add r7, r0, #0
+ ldrb r2, [r5, r1]
+ mov r1, #0x90
+ mul r1, r2
+ add r2, r5, r1
+ lsl r1, r6, #2
+ add r1, r2, r1
+ ldr r2, [r5]
+ ldrh r1, [r1, #0x3c]
+ ldr r2, [r2, #0xc]
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_0206E790
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02219B5C ; =0x00010200
+ add r2, r7, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r3, #4
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02219B58: .word 0x0000114D
+_02219B5C: .word 0x00010200
+
+ thumb_func_start MOD09_02219B60
+MOD09_02219B60: ; 0x02219B60
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov r6, #0
+ add r5, r0, #0
+ add r4, r6, #0
+ add r7, r6, #0
+_02219B6C:
+ ldr r0, [r5, #0x2c]
+ add r1, r7, #0
+ add r0, r0, r4
+ bl FUN_02019620
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, #4
+ blo _02219B6C
+ ldr r0, _02219BD4 ; =0x0000114D
+ ldr r1, [r5]
+ ldrb r2, [r5, r0]
+ add r0, r1, r2
+ add r0, #0x27
+ ldrb r4, [r0]
+ add r0, r1, r2
+ add r0, #0x2c
+ ldrb r1, [r0]
+ mov r0, #6
+ add r6, r1, #0
+ mul r6, r0
+ add r0, r5, #0
+ add r1, r4, r6
+ bl MOD09_02219A8C
+ mov r2, #0
+ str r2, [sp]
+ ldr r0, _02219BD8 ; =0x00010200
+ str r2, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, r4, r6
+ mov r3, #1
+ bl MOD09_02219738
+ add r0, r5, #0
+ add r1, r4, r6
+ bl MOD09_02219AFC
+ mov r0, #6
+ str r0, [sp]
+ ldr r0, _02219BDC ; =0x00030201
+ mov r1, #3
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x1f
+ mov r3, #2
+ bl MOD09_02219560
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02219BD4: .word 0x0000114D
+_02219BD8: .word 0x00010200
+_02219BDC: .word 0x00030201
+
+ thumb_func_start MOD09_02219BE0
+MOD09_02219BE0: ; 0x02219BE0
+ push {r4, lr}
+ ldr r2, _02219C04 ; =0x000003E2
+ add r4, r0, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r3, #0xe
+ bl FUN_0200D0BC
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ bl MOD09_02219C08
+ pop {r4, pc}
+ nop
+_02219C04: .word 0x000003E2
+
+ thumb_func_start MOD09_02219C08
+MOD09_02219C08: ; 0x02219C08
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #1
+ bl FUN_02002B60
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02230E54
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r4, #0
+ ldr r2, [r4, #0x18]
+ add r0, #0x1c
+ mov r1, #1
+ bl FUN_0201BD84
+ add r4, #0x32
+ strb r0, [r4]
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD09_02219C38
+MOD09_02219C38: ; 0x02219C38
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r3, [r4]
+ ldrh r1, [r3, #0x20]
+ cmp r1, #0
+ bne _02219C48
+ mov r0, #0
+ pop {r4, pc}
+_02219C48:
+ ldr r0, [r3, #8]
+ ldr r3, [r3, #0xc]
+ mov r2, #1
+ bl FUN_0206EE50
+ cmp r0, #0
+ bne _02219C62
+ ldr r1, [r4]
+ mov r0, #0
+ strh r0, [r1, #0x20]
+ ldr r1, [r4]
+ strb r0, [r1, #0x1f]
+ pop {r4, pc}
+_02219C62:
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02219C68
+MOD09_02219C68: ; 0x02219C68
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _02219CB0 ; =0x0000114D
+ ldr r6, [r5]
+ ldrb r7, [r5, r0]
+ mov r0, #0x90
+ ldrh r2, [r6, #0x20]
+ mul r0, r7
+ mov r4, #0
+ add r1, r5, r0
+_02219C7C:
+ ldrh r0, [r1, #0x3c]
+ cmp r2, r0
+ bne _02219CA6
+ add r0, r4, #0
+ mov r1, #6
+ bl _u32_div_f
+ add r0, r6, r7
+ add r0, #0x27
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #6
+ bl _u32_div_f
+ ldr r1, _02219CB0 ; =0x0000114D
+ ldr r2, [r5]
+ ldrb r1, [r5, r1]
+ add r1, r2, r1
+ add r1, #0x2c
+ strb r0, [r1]
+ pop {r3, r4, r5, r6, r7, pc}
+_02219CA6:
+ add r4, r4, #1
+ add r1, r1, #4
+ cmp r4, #0x24
+ blo _02219C7C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02219CB0: .word 0x0000114D
+
+ thumb_func_start MOD09_02219CB4
+MOD09_02219CB4: ; 0x02219CB4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+_02219CBE:
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+_02219CCA:
+ ldr r0, [r4]
+ ldr r2, [sp]
+ ldr r0, [r0, #8]
+ lsl r2, r2, #0x10
+ ldr r1, [sp, #8]
+ lsr r2, r2, #0x10
+ bl FUN_0206F0D8
+ add r5, r0, #0
+ beq _02219D3C
+ ldrh r0, [r5]
+ cmp r0, #0
+ beq _02219D34
+ ldrh r1, [r5, #2]
+ cmp r1, #0
+ beq _02219D34
+ ldr r2, [r4]
+ mov r1, #0xd
+ ldr r2, [r2, #0xc]
+ bl FUN_0206E7B8
+ add r7, r0, #0
+ ldr r1, _02219D88 ; =0x0221BD7C
+ mov r0, #0
+_02219CFA:
+ mov r2, #1
+ lsl r2, r0
+ tst r2, r7
+ beq _02219D2C
+ ldrb r2, [r1]
+ mov r3, #0x90
+ add r6, r2, #0
+ mul r6, r3
+ add r3, r4, r2
+ ldr r2, _02219D8C ; =0x0000114F
+ ldrb r2, [r3, r2]
+ add r3, r4, r6
+ lsl r2, r2, #2
+ add r2, r2, r3
+ ldrh r3, [r5]
+ strh r3, [r2, #0x3c]
+ ldrh r3, [r5, #2]
+ strh r3, [r2, #0x3e]
+ ldrb r2, [r1]
+ add r6, r4, r2
+ ldr r2, _02219D8C ; =0x0000114F
+ ldrb r2, [r6, r2]
+ add r3, r2, #1
+ ldr r2, _02219D8C ; =0x0000114F
+ strb r3, [r6, r2]
+_02219D2C:
+ add r0, r0, #1
+ add r1, r1, #1
+ cmp r0, #5
+ blo _02219CFA
+_02219D34:
+ ldr r0, [sp]
+ add r0, r0, #1
+ str r0, [sp]
+ b _02219CCA
+_02219D3C:
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #8
+ blo _02219CBE
+ mov r5, #0
+ add r7, r5, #0
+_02219D4A:
+ ldr r0, _02219D8C ; =0x0000114F
+ add r6, r4, r5
+ ldrb r0, [r6, r0]
+ cmp r0, #0
+ bne _02219D5A
+ ldr r0, _02219D90 ; =0x00001154
+ strb r7, [r6, r0]
+ b _02219D66
+_02219D5A:
+ sub r0, r0, #1
+ mov r1, #6
+ bl _s32_div_f
+ ldr r1, _02219D90 ; =0x00001154
+ strb r0, [r6, r1]
+_02219D66:
+ ldr r1, [r4]
+ ldr r0, _02219D90 ; =0x00001154
+ add r2, r1, r5
+ add r2, #0x2c
+ ldrb r0, [r6, r0]
+ ldrb r2, [r2]
+ cmp r0, r2
+ bhs _02219D7C
+ add r1, r1, r5
+ add r1, #0x2c
+ strb r0, [r1]
+_02219D7C:
+ add r5, r5, #1
+ cmp r5, #5
+ blo _02219D4A
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02219D88: .word 0x0221BD7C
+_02219D8C: .word 0x0000114F
+_02219D90: .word 0x00001154
+
+ thumb_func_start MOD09_02219D94
+MOD09_02219D94: ; 0x02219D94
+ push {r3, r4}
+ ldr r2, _02219DC4 ; =0x0000114D
+ ldr r3, [r0]
+ ldrb r2, [r0, r2]
+ add r3, r3, r2
+ add r3, #0x2c
+ ldrb r4, [r3]
+ mov r3, #6
+ mul r3, r4
+ add r1, r1, r3
+ lsl r3, r1, #2
+ mov r1, #0x90
+ mul r1, r2
+ add r0, r0, r1
+ add r1, r0, r3
+ ldrh r0, [r1, #0x3c]
+ cmp r0, #0
+ beq _02219DBE
+ ldrh r1, [r1, #0x3e]
+ cmp r1, #0
+ bne _02219DC0
+_02219DBE:
+ mov r0, #0
+_02219DC0:
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_02219DC4: .word 0x0000114D
+
+ thumb_func_start MOD09_02219DC8
+MOD09_02219DC8: ; 0x02219DC8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD09_02219DF4
+ add r0, r4, #0
+ bl MOD09_02219E40
+ add r0, r4, #0
+ bl MOD09_02219FC4
+ add r0, r4, #0
+ bl MOD09_0221A158
+ add r0, r4, #0
+ bl MOD09_0221A244
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02219DF4
+MOD09_02219DF4: ; 0x02219DF4
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ ldr r3, _02219E3C ; =0x0221BDB0
+ add r2, sp, #0
+ add r5, 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, [r5]
+ ldr r0, [r0]
+ bl FUN_02230078
+ add r4, r0, #0
+ bl FUN_0200BB34
+ mov r1, #0xc3
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ mov r2, #0xc
+ bl FUN_0200BBF0
+ mov r1, #0xc3
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ add r0, r4, #0
+ add r2, sp, #0
+ bl FUN_0200BF60
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_02219E3C: .word 0x0221BDB0
+
+ thumb_func_start MOD09_02219E40
+MOD09_02219E40: ; 0x02219E40
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ ldr r0, [r6]
+ ldr r0, [r0]
+ bl FUN_02230078
+ add r7, r0, #0
+ mov r4, #0
+_02219E52:
+ ldr r0, _02219EE8 ; =0x0000B4B7
+ add r5, r4, r0
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0206E640
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r1, #0xc3
+ str r5, [sp, #8]
+ lsl r1, r1, #2
+ ldr r1, [r6, r1]
+ add r0, r7, #0
+ mov r2, #0x10
+ bl FUN_0200C00C
+ mov r0, #1
+ mov r1, #2
+ bl FUN_0206E640
+ mov r1, #0x10
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r3, #0xc3
+ str r5, [sp, #0x14]
+ lsl r3, r3, #2
+ ldr r0, [r6, #8]
+ ldr r3, [r6, r3]
+ mov r1, #3
+ add r2, r7, #0
+ bl FUN_0200C0DC
+ add r4, r4, #1
+ cmp r4, #6
+ blo _02219E52
+ bl FUN_0206E708
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02219EE8 ; =0x0000B4B7
+ mov r1, #0xc3
+ str r0, [sp, #4]
+ lsl r1, r1, #2
+ ldr r1, [r6, r1]
+ add r0, r7, #0
+ mov r2, #0x10
+ bl FUN_0200C124
+ bl FUN_0206E70C
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02219EE8 ; =0x0000B4B7
+ mov r1, #0xc3
+ str r0, [sp, #4]
+ lsl r1, r1, #2
+ ldr r1, [r6, r1]
+ add r0, r7, #0
+ mov r2, #0x10
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02219EE8: .word 0x0000B4B7
+
+ thumb_func_start MOD09_02219EEC
+MOD09_02219EEC: ; 0x02219EEC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r1, #0
+ ldr r0, [r0]
+ add r4, r2, #0
+ bl FUN_02230078
+ add r7, r0, #0
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_0206E640
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0xc3
+ str r4, [sp, #4]
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ add r0, r7, #0
+ mov r2, #0x10
+ bl FUN_0200C9D8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_02219F24
+MOD09_02219F24: ; 0x02219F24
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r0, r1, #0
+ mov r1, #2
+ add r4, r2, #0
+ bl FUN_0206E640
+ add r2, r0, #0
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ lsl r0, r4, #0x14
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r3, [r5]
+ ldr r0, [r5, #8]
+ ldr r3, [r3, #0xc]
+ mov r1, #0x10
+ bl FUN_020030E8
+ add sp, #0xc
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD09_02219F54
+MOD09_02219F54: ; 0x02219F54
+ push {r4, r5, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ ldr r0, [r0]
+ bl FUN_02230078
+ mov r2, #0
+ add r1, sp, #0
+ strh r2, [r1]
+ strh r2, [r1, #2]
+ strh r2, [r1, #4]
+ strh r2, [r1, #6]
+ mov r1, #0x14
+ ldr r3, _02219FB0 ; =0x0221BE98
+ mul r1, r4
+ ldr r3, [r3, r1]
+ str r2, [sp, #0xc]
+ str r3, [sp, #8]
+ mov r3, #2
+ str r3, [sp, #0x10]
+ ldr r3, _02219FB4 ; =0x0221BE88
+ str r2, [sp, #0x30]
+ ldr r3, [r3, r1]
+ add r2, sp, #0
+ str r3, [sp, #0x14]
+ ldr r3, _02219FB8 ; =0x0221BE8C
+ ldr r3, [r3, r1]
+ str r3, [sp, #0x18]
+ ldr r3, _02219FBC ; =0x0221BE90
+ ldr r3, [r3, r1]
+ str r3, [sp, #0x1c]
+ ldr r3, _02219FC0 ; =0x0221BE94
+ ldr r1, [r3, r1]
+ str r1, [sp, #0x20]
+ mov r1, #1
+ str r1, [sp, #0x2c]
+ mov r1, #0xc3
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ bl FUN_0200C154
+ add sp, #0x34
+ pop {r4, r5, pc}
+ nop
+_02219FB0: .word 0x0221BE98
+_02219FB4: .word 0x0221BE88
+_02219FB8: .word 0x0221BE8C
+_02219FBC: .word 0x0221BE90
+_02219FC0: .word 0x0221BE94
+
+ thumb_func_start MOD09_02219FC4
+MOD09_02219FC4: ; 0x02219FC4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r7, #0x31
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #4
+_02219FD0:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD09_02219F54
+ str r0, [r5, r7]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blo _02219FD0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD09_02219FE4
+MOD09_02219FE4: ; 0x02219FE4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, [r7]
+ ldr r0, [r0]
+ bl FUN_02230078
+ mov r6, #0x31
+ str r0, [sp]
+ mov r4, #0
+ add r5, r7, #0
+ lsl r6, r6, #4
+_02219FFA:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blo _02219FFA
+ add r0, r7, #0
+ bl MOD09_0221A1B0
+ add r0, r7, #0
+ bl MOD09_0221A294
+ mov r1, #0xc3
+ lsl r1, r1, #2
+ ldr r0, [sp]
+ ldr r1, [r7, r1]
+ bl FUN_0200C398
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_0221A024
+MOD09_0221A024: ; 0x0221A024
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ mov r1, #1
+ add r6, r0, #0
+ bl FUN_0200C644
+ lsl r1, r5, #0x10
+ lsl r2, r4, #0x10
+ add r0, r6, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_0221A044
+MOD09_0221A044: ; 0x0221A044
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #0x31
+ str r0, [sp]
+ add r7, r1, #0
+ mov r4, #0
+ add r5, r0, #0
+ lsl r6, r6, #4
+_0221A052:
+ ldr r0, [r5, r6]
+ mov r1, #0
+ bl FUN_0200C644
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blo _0221A052
+ cmp r7, #0
+ beq _0221A070
+ cmp r7, #1
+ beq _0221A078
+ cmp r7, #2
+ beq _0221A080
+ pop {r3, r4, r5, r6, r7, pc}
+_0221A070:
+ ldr r0, [sp]
+ bl MOD09_0221A088
+ pop {r3, r4, r5, r6, r7, pc}
+_0221A078:
+ ldr r0, [sp]
+ bl MOD09_0221A0BC
+ pop {r3, r4, r5, r6, r7, pc}
+_0221A080:
+ ldr r0, [sp]
+ bl MOD09_0221A114
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD09_0221A088
+MOD09_0221A088: ; 0x0221A088
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ ldrh r1, [r1, #0x20]
+ cmp r1, #0
+ beq _0221A0B6
+ ldr r2, _0221A0B8 ; =0x0000B4B7
+ bl MOD09_02219EEC
+ ldr r1, [r4]
+ ldr r3, _0221A0B8 ; =0x0000B4B7
+ ldrh r1, [r1, #0x20]
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD09_02219F24
+ mov r0, #0x31
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ mov r2, #0xb2
+ bl MOD09_0221A024
+_0221A0B6:
+ pop {r4, pc}
+ .align 2, 0
+_0221A0B8: .word 0x0000B4B7
+
+ thumb_func_start MOD09_0221A0BC
+MOD09_0221A0BC: ; 0x0221A0BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r6, _0221A10C ; =0x0221BE10
+ mov r4, #0
+ add r7, r5, #0
+_0221A0C6:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02219D94
+ str r0, [sp]
+ cmp r0, #0
+ beq _0221A0FE
+ ldr r2, _0221A110 ; =0x0000B4B7
+ ldr r1, [sp]
+ add r0, r5, #0
+ add r2, r4, r2
+ bl MOD09_02219EEC
+ ldr r3, _0221A110 ; =0x0000B4B7
+ lsl r2, r4, #0x10
+ ldr r1, [sp]
+ add r0, r5, #0
+ lsr r2, r2, #0x10
+ add r3, r4, r3
+ bl MOD09_02219F24
+ mov r0, #0x31
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ ldr r1, [r6]
+ ldr r2, [r6, #4]
+ bl MOD09_0221A024
+_0221A0FE:
+ add r4, r4, #1
+ add r6, #8
+ add r7, r7, #4
+ cmp r4, #6
+ blo _0221A0C6
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221A10C: .word 0x0221BE10
+_0221A110: .word 0x0000B4B7
+
+ thumb_func_start MOD09_0221A114
+MOD09_0221A114: ; 0x0221A114
+ push {r3, r4, r5, lr}
+ ldr r1, _0221A150 ; =0x0000114D
+ add r4, r0, #0
+ ldrb r1, [r4, r1]
+ ldr r2, [r4]
+ add r1, r2, r1
+ add r1, #0x27
+ ldrb r1, [r1]
+ bl MOD09_02219D94
+ add r5, r0, #0
+ ldr r2, _0221A154 ; =0x0000B4B7
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD09_02219EEC
+ ldr r3, _0221A154 ; =0x0000B4B7
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD09_02219F24
+ mov r0, #0x31
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0x28
+ mov r2, #0x2c
+ bl MOD09_0221A024
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221A150: .word 0x0000114D
+_0221A154: .word 0x0000B4B7
+
+ thumb_func_start MOD09_0221A158
+MOD09_0221A158: ; 0x0221A158
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02230078
+ ldr r3, _0221A1AC ; =0x0000B4BE
+ add r4, r0, #0
+ str r3, [sp]
+ sub r1, r3, #5
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #0xc3
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ ldr r2, [r5, #8]
+ bl FUN_0225D3EC
+ ldr r3, _0221A1AC ; =0x0000B4BE
+ mov r1, #0xc3
+ str r3, [sp]
+ sub r0, r3, #5
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r2, [r5]
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ ldr r2, [r2, #0xc]
+ add r0, r4, #0
+ bl FUN_0225D484
+ add r1, r0, #0
+ ldr r0, [r5, #0x34]
+ bl MOD09_0221AC30
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_0221A1AC: .word 0x0000B4BE
+
+ thumb_func_start MOD09_0221A1B0
+MOD09_0221A1B0: ; 0x0221A1B0
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ bl MOD09_0221AC24
+ bl FUN_0225D508
+ ldr r3, _0221A1D8 ; =0x0000B4B9
+ mov r0, #0xc3
+ add r1, r3, #5
+ str r3, [sp]
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r2, r1, #0
+ bl FUN_0225D45C
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_0221A1D8: .word 0x0000B4B9
+
+ thumb_func_start MOD09_0221A1DC
+MOD09_0221A1DC: ; 0x0221A1DC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, _0221A21C ; =0x0221BD94
+ lsl r2, r4, #2
+ ldr r0, [r5, #0x34]
+ ldr r1, [r1, r2]
+ bl MOD09_0221AC68
+ cmp r4, #0
+ beq _0221A1FA
+ cmp r4, #1
+ beq _0221A206
+ cmp r4, #2
+ pop {r3, r4, r5, pc}
+_0221A1FA:
+ ldr r1, _0221A220 ; =0x0000114D
+ ldr r0, [r5, #0x34]
+ ldrb r1, [r5, r1]
+ bl MOD09_0221AC34
+ pop {r3, r4, r5, pc}
+_0221A206:
+ ldr r1, _0221A220 ; =0x0000114D
+ ldr r2, [r5]
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, #0x34]
+ add r1, r2, r1
+ add r1, #0x27
+ ldrb r1, [r1]
+ bl MOD09_0221AC34
+ pop {r3, r4, r5, pc}
+ nop
+_0221A21C: .word 0x0221BD94
+_0221A220: .word 0x0000114D
+
+ thumb_func_start MOD09_0221A224
+MOD09_0221A224: ; 0x0221A224
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD09_0221AC2C
+ ldr r0, [r4, #0x34]
+ bl MOD09_0221AC5C
+ ldr r0, [r4, #0x34]
+ bl MOD09_0221AC24
+ bl FUN_0225D648
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_0221A244
+MOD09_0221A244: ; 0x0221A244
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02230078
+ ldr r3, _0221A290 ; =0x0000B4BD
+ add r4, r0, #0
+ str r3, [sp]
+ sub r1, r3, #5
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #0xc3
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ ldr r2, [r5, #8]
+ bl FUN_0225D6A4
+ ldr r3, _0221A290 ; =0x0000B4BD
+ mov r1, #0xc3
+ str r3, [sp]
+ sub r0, r3, #5
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r2, [r5]
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ ldr r2, [r2, #0xc]
+ add r0, r4, #0
+ bl FUN_0225D73C
+ str r0, [r5, #0x38]
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_0221A290: .word 0x0000B4BD
+
+ thumb_func_start MOD09_0221A294
+MOD09_0221A294: ; 0x0221A294
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_0225D7B8
+ ldr r3, _0221A2B8 ; =0x0000B4B8
+ mov r0, #0xc3
+ add r1, r3, #5
+ str r3, [sp]
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r2, r1, #0
+ bl FUN_0225D714
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_0221A2B8: .word 0x0000B4B8
+
+ thumb_func_start MOD09_0221A2BC
+MOD09_0221A2BC: ; 0x0221A2BC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0, #0x14]
+ cmp r0, #1
+ bne _0221A2E2
+ lsl r3, r1, #3
+ ldr r1, _0221A2EC ; =0x0221BDC8
+ ldr r2, _0221A2F0 ; =0x0221BDCC
+ ldr r0, [r4, #0x38]
+ ldr r1, [r1, r3]
+ ldr r2, [r2, r3]
+ bl FUN_0225D800
+ ldr r0, [r4, #0x38]
+ mov r1, #0x3c
+ bl FUN_0225D820
+ pop {r4, pc}
+_0221A2E2:
+ ldr r0, [r4, #0x38]
+ bl FUN_0225D80C
+ pop {r4, pc}
+ nop
+_0221A2EC: .word 0x0221BDC8
+_0221A2F0: .word 0x0221BDCC
+
+ thumb_func_start MOD09_0221A2F4
+MOD09_0221A2F4: ; 0x0221A2F4
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ mov r0, #0xca
+ lsl r0, r0, #2
+ mov r2, #0
+ add r0, r5, r0
+ add r3, r2, #0
+ add r4, r1, #0
+ bl MOD09_0221A62C
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _0221A5B0 ; =0x00000448
+ mov r3, #9
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ str r3, [sp, #4]
+ bl MOD09_0221A62C
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ ldr r0, _0221A5B4 ; =0x00000568
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x12
+ bl MOD09_0221A62C
+ mov r0, #0x1a
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r0, _0221A5B8 ; =0x00000688
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x1b
+ bl MOD09_0221A62C
+ mov r0, #0x1a
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r0, _0221A5BC ; =0x0000078C
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x20
+ bl MOD09_0221A62C
+ mov r0, #0x1a
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ mov r0, #0x89
+ lsl r0, r0, #4
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ mov r3, #0x25
+ bl MOD09_0221A62C
+ mov r0, #0x1a
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r0, _0221A5C0 ; =0x00000994
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x25
+ bl MOD09_0221A62C
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A5C4 ; =0x00000A98
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x39
+ bl MOD09_0221A62C
+ ldr r0, _0221A5C8 ; =0x00000ACA
+ mov r2, #5
+ str r2, [sp]
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r3, #0x39
+ str r2, [sp, #4]
+ bl MOD09_0221A62C
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A5CC ; =0x00000AFC
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0xa
+ mov r3, #0x39
+ bl MOD09_0221A62C
+ mov r2, #0x10
+ str r2, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ ldr r0, _0221A5D0 ; =0x00000B2E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r3, #0
+ bl MOD09_0221A62C
+ ldr r0, _0221A5D4 ; =0x00000BEE
+ mov r2, #0x10
+ str r2, [sp]
+ mov r3, #6
+ add r0, r5, r0
+ add r1, r4, #0
+ str r3, [sp, #4]
+ bl MOD09_0221A62C
+ mov r2, #0x10
+ str r2, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ ldr r0, _0221A5D8 ; =0x00000CAE
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r3, #0xc
+ bl MOD09_0221A62C
+ mov r2, #0x10
+ str r2, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ ldr r0, _0221A5DC ; =0x00000D6E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r3, #0x12
+ bl MOD09_0221A62C
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A5E0 ; =0x00000E2E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x2f
+ bl MOD09_0221A62C
+ mov r0, #0xe6
+ mov r2, #5
+ lsl r0, r0, #4
+ str r2, [sp]
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r3, #0x2f
+ str r2, [sp, #4]
+ bl MOD09_0221A62C
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A5E4 ; =0x00000E92
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0xa
+ mov r3, #0x2f
+ bl MOD09_0221A62C
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A5E8 ; =0x00000EC4
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0xf
+ mov r3, #0x2f
+ bl MOD09_0221A62C
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A5EC ; =0x00000EF6
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #0x34
+ bl MOD09_0221A62C
+ ldr r0, _0221A5F0 ; =0x00000F28
+ mov r2, #5
+ str r2, [sp]
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r3, #0x34
+ str r2, [sp, #4]
+ bl MOD09_0221A62C
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A5F4 ; =0x00000F5A
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0xa
+ mov r3, #0x34
+ bl MOD09_0221A62C
+ mov r0, #5
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A5F8 ; =0x00000F8C
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0xf
+ mov r3, #0x34
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A5FC ; =0x00000FBE
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x14
+ mov r3, #0x2f
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A600 ; =0x00000FDE
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x18
+ mov r3, #0x2f
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A604 ; =0x00000FFE
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x1c
+ mov r3, #0x2f
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A608 ; =0x0000101E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x14
+ mov r3, #0x33
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A60C ; =0x0000103E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x18
+ mov r3, #0x33
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A610 ; =0x0000105E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x1c
+ mov r3, #0x33
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A614 ; =0x0000107E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x14
+ mov r3, #0x37
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A618 ; =0x0000109E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x18
+ mov r3, #0x37
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A61C ; =0x000010BE
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x1c
+ mov r3, #0x37
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A620 ; =0x000010DE
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x14
+ mov r3, #0x3b
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A624 ; =0x000010FE
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x18
+ mov r3, #0x3b
+ bl MOD09_0221A62C
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0221A628 ; =0x0000111E
+ add r1, r4, #0
+ add r0, r5, r0
+ mov r2, #0x1c
+ mov r3, #0x3b
+ bl MOD09_0221A62C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0221A5B0: .word 0x00000448
+_0221A5B4: .word 0x00000568
+_0221A5B8: .word 0x00000688
+_0221A5BC: .word 0x0000078C
+_0221A5C0: .word 0x00000994
+_0221A5C4: .word 0x00000A98
+_0221A5C8: .word 0x00000ACA
+_0221A5CC: .word 0x00000AFC
+_0221A5D0: .word 0x00000B2E
+_0221A5D4: .word 0x00000BEE
+_0221A5D8: .word 0x00000CAE
+_0221A5DC: .word 0x00000D6E
+_0221A5E0: .word 0x00000E2E
+_0221A5E4: .word 0x00000E92
+_0221A5E8: .word 0x00000EC4
+_0221A5EC: .word 0x00000EF6
+_0221A5F0: .word 0x00000F28
+_0221A5F4: .word 0x00000F5A
+_0221A5F8: .word 0x00000F8C
+_0221A5FC: .word 0x00000FBE
+_0221A600: .word 0x00000FDE
+_0221A604: .word 0x00000FFE
+_0221A608: .word 0x0000101E
+_0221A60C: .word 0x0000103E
+_0221A610: .word 0x0000105E
+_0221A614: .word 0x0000107E
+_0221A618: .word 0x0000109E
+_0221A61C: .word 0x000010BE
+_0221A620: .word 0x000010DE
+_0221A624: .word 0x000010FE
+_0221A628: .word 0x0000111E
+
+ thumb_func_start MOD09_0221A62C
+MOD09_0221A62C: ; 0x0221A62C
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r0, sp, #8
+ mov lr, r3
+ ldrb r3, [r0, #0x14]
+ mov r6, #0
+ mov ip, r3
+ cmp r3, #0
+ ble _0221A678
+ ldrb r3, [r0, #0x10]
+ lsl r2, r2, #1
+ add r7, r1, r2
+_0221A644:
+ mov r2, #0
+ cmp r3, #0
+ ble _0221A66C
+ mov r0, lr
+ add r0, r0, r6
+ lsl r0, r0, #6
+ add r5, r7, r0
+ add r0, r6, #0
+ mul r0, r3
+ lsl r1, r0, #1
+ ldr r0, [sp]
+ add r4, r0, r1
+_0221A65C:
+ lsl r1, r2, #1
+ ldrh r0, [r5, r1]
+ strh r0, [r4, r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ cmp r2, r3
+ blt _0221A65C
+_0221A66C:
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ mov r0, ip
+ cmp r6, r0
+ blt _0221A644
+_0221A678:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_0221A67C
+MOD09_0221A67C: ; 0x0221A67C
+ cmp r1, #0x10
+ bhi _0221A70A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0221A68C: ; jump table
+ .short _0221A6AE - _0221A68C - 2 ; case 0
+ .short _0221A6AE - _0221A68C - 2 ; case 1
+ .short _0221A6AE - _0221A68C - 2 ; case 2
+ .short _0221A6AE - _0221A68C - 2 ; case 3
+ .short _0221A6BE - _0221A68C - 2 ; case 4
+ .short _0221A6CC - _0221A68C - 2 ; case 5
+ .short _0221A6D8 - _0221A68C - 2 ; case 6
+ .short _0221A6D8 - _0221A68C - 2 ; case 7
+ .short _0221A6D8 - _0221A68C - 2 ; case 8
+ .short _0221A6D8 - _0221A68C - 2 ; case 9
+ .short _0221A6D8 - _0221A68C - 2 ; case 10
+ .short _0221A6D8 - _0221A68C - 2 ; case 11
+ .short _0221A6E4 - _0221A68C - 2 ; case 12
+ .short _0221A6F0 - _0221A68C - 2 ; case 13
+ .short _0221A6CC - _0221A68C - 2 ; case 14
+ .short _0221A6FC - _0221A68C - 2 ; case 15
+ .short _0221A6CC - _0221A68C - 2 ; case 16
+_0221A6AE:
+ mov r1, #0xca
+ lsl r1, r1, #2
+ add r1, r0, r1
+ mov r0, #0x12
+ lsl r0, r0, #4
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_0221A6BE:
+ ldr r1, _0221A710 ; =0x00000688
+ add r1, r0, r1
+ lsl r0, r2, #6
+ add r0, r2, r0
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bx lr
+_0221A6CC:
+ ldr r1, _0221A714 ; =0x00000A98
+ add r1, r0, r1
+ mov r0, #0x32
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_0221A6D8:
+ ldr r1, _0221A718 ; =0x00000B2E
+ add r1, r0, r1
+ mov r0, #0xc0
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_0221A6E4:
+ ldr r1, _0221A71C ; =0x00000E2E
+ add r1, r0, r1
+ mov r0, #0x32
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_0221A6F0:
+ ldr r1, _0221A720 ; =0x00000EF6
+ add r1, r0, r1
+ mov r0, #0x32
+ mul r0, r2
+ add r0, r1, r0
+ bx lr
+_0221A6FC:
+ ldr r1, _0221A710 ; =0x00000688
+ add r1, r0, r1
+ lsl r0, r2, #6
+ add r0, r2, r0
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bx lr
+_0221A70A:
+ mov r0, #0
+ bx lr
+ nop
+_0221A710: .word 0x00000688
+_0221A714: .word 0x00000A98
+_0221A718: .word 0x00000B2E
+_0221A71C: .word 0x00000E2E
+_0221A720: .word 0x00000EF6
+
+ thumb_func_start MOD09_0221A724
+MOD09_0221A724: ; 0x0221A724
+ cmp r2, #3
+ bne _0221A72C
+ mov r0, #5
+ bx lr
+_0221A72C:
+ cmp r1, #0x10
+ bhi _0221A78A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0221A73C: ; jump table
+ .short _0221A75E - _0221A73C - 2 ; case 0
+ .short _0221A75E - _0221A73C - 2 ; case 1
+ .short _0221A75E - _0221A73C - 2 ; case 2
+ .short _0221A75E - _0221A73C - 2 ; case 3
+ .short _0221A762 - _0221A73C - 2 ; case 4
+ .short _0221A766 - _0221A73C - 2 ; case 5
+ .short _0221A76A - _0221A73C - 2 ; case 6
+ .short _0221A76A - _0221A73C - 2 ; case 7
+ .short _0221A76A - _0221A73C - 2 ; case 8
+ .short _0221A76A - _0221A73C - 2 ; case 9
+ .short _0221A76A - _0221A73C - 2 ; case 10
+ .short _0221A76A - _0221A73C - 2 ; case 11
+ .short _0221A766 - _0221A73C - 2 ; case 12
+ .short _0221A766 - _0221A73C - 2 ; case 13
+ .short _0221A766 - _0221A73C - 2 ; case 14
+ .short _0221A776 - _0221A73C - 2 ; case 15
+ .short _0221A766 - _0221A73C - 2 ; case 16
+_0221A75E:
+ mov r0, #0
+ bx lr
+_0221A762:
+ mov r0, #3
+ bx lr
+_0221A766:
+ mov r0, #2
+ bx lr
+_0221A76A:
+ ldr r1, _0221A790 ; =0x0000114D
+ ldrb r0, [r0, r1]
+ add r0, #8
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+_0221A776:
+ cmp r3, #2
+ bne _0221A786
+ ldr r1, _0221A790 ; =0x0000114D
+ ldrb r0, [r0, r1]
+ add r0, #8
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+_0221A786:
+ mov r0, #1
+ bx lr
+_0221A78A:
+ mov r0, #0
+ bx lr
+ nop
+_0221A790: .word 0x0000114D
+
+ thumb_func_start MOD09_0221A794
+MOD09_0221A794: ; 0x0221A794
+ push {r4, r5, r6, r7}
+ cmp r2, #0
+ bne _0221A7A4
+ ldr r2, _0221A7F8 ; =0x00000FBE
+ add r2, r0, r2
+ lsl r0, r3, #5
+ add r0, r2, r0
+ b _0221A7CC
+_0221A7A4:
+ cmp r2, #1
+ bne _0221A7B2
+ ldr r2, _0221A7FC ; =0x0000101E
+ add r2, r0, r2
+ lsl r0, r3, #5
+ add r0, r2, r0
+ b _0221A7CC
+_0221A7B2:
+ cmp r2, #2
+ bne _0221A7C0
+ ldr r2, _0221A800 ; =0x0000107E
+ add r2, r0, r2
+ lsl r0, r3, #5
+ add r0, r2, r0
+ b _0221A7CC
+_0221A7C0:
+ cmp r2, #3
+ bne _0221A7F4
+ ldr r2, _0221A804 ; =0x000010DE
+ add r2, r0, r2
+ lsl r0, r3, #5
+ add r0, r2, r0
+_0221A7CC:
+ mov r2, #0
+_0221A7CE:
+ lsl r4, r2, #3
+ lsl r5, r2, #5
+ mov r3, #0
+ add r4, r0, r4
+ add r5, r1, r5
+_0221A7D8:
+ lsl r6, r3, #1
+ ldrh r7, [r4, r6]
+ add r3, r3, #1
+ lsl r3, r3, #0x10
+ add r6, r5, r6
+ lsr r3, r3, #0x10
+ strh r7, [r6, #0xc]
+ cmp r3, #4
+ blo _0221A7D8
+ add r2, r2, #1
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ cmp r2, #4
+ blo _0221A7CE
+_0221A7F4:
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_0221A7F8: .word 0x00000FBE
+_0221A7FC: .word 0x0000101E
+_0221A800: .word 0x0000107E
+_0221A804: .word 0x000010DE
+
+ thumb_func_start MOD09_0221A808
+MOD09_0221A808: ; 0x0221A808
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ add r5, r1, #0
+ ldr r1, [sp, #4]
+ ldr r2, [sp, #8]
+ str r0, [sp]
+ bl MOD09_0221A67C
+ add r3, sp, #0x10
+ add r4, r0, #0
+ ldrb r3, [r3, #0x10]
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r2, [sp, #8]
+ bl MOD09_0221A724
+ lsl r0, r0, #0x1c
+ lsr r2, r0, #0x10
+ ldr r0, [sp, #4]
+ ldr r6, _0221A874 ; =0x0221BF4B
+ lsl r3, r0, #2
+ ldr r0, _0221A878 ; =0x0221BF4A
+ ldrb r6, [r6, r3]
+ ldrb r0, [r0, r3]
+ mov r1, #0
+ mul r6, r0
+ cmp r6, #0
+ ble _0221A864
+ ldr r0, _0221A87C ; =0x0221BF48
+ ldr r7, _0221A880 ; =0x00000FFF
+ add r3, r0, r3
+_0221A84A:
+ lsl r0, r1, #1
+ ldrh r6, [r4, r0]
+ and r6, r7
+ orr r6, r2
+ strh r6, [r5, r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldrb r6, [r3, #2]
+ ldrb r0, [r3, #3]
+ mul r0, r6
+ cmp r1, r0
+ blt _0221A84A
+_0221A864:
+ ldr r0, [sp]
+ ldr r2, [sp, #4]
+ ldr r3, [sp, #8]
+ add r1, r5, #0
+ bl MOD09_0221A794
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221A874: .word 0x0221BF4B
+_0221A878: .word 0x0221BF4A
+_0221A87C: .word 0x0221BF48
+_0221A880: .word 0x00000FFF
+
+ thumb_func_start MOD09_0221A884
+MOD09_0221A884: ; 0x0221A884
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r1, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ add r5, r0, #0
+ ldr r0, [sp, #0xc]
+ lsl r4, r0, #2
+ ldr r0, _0221A8E8 ; =0x0221BF4B
+ ldrb r7, [r0, r4]
+ ldr r0, _0221A8EC ; =0x0221BF4A
+ ldrb r6, [r0, r4]
+ ldr r0, [r5]
+ add r1, r6, #0
+ mul r1, r7
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #1
+ bl FUN_02016998
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ str r0, [sp]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ add r0, r5, #0
+ bl MOD09_0221A808
+ ldr r0, _0221A8F0 ; =0x0221BF49
+ ldr r3, _0221A8F4 ; =0x0221BF48
+ ldrb r0, [r0, r4]
+ ldrb r3, [r3, r4]
+ ldr r2, [sp, #0x18]
+ str r0, [sp]
+ str r6, [sp, #4]
+ str r7, [sp, #8]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02018148
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_0201AC68
+ ldr r0, [sp, #0x18]
+ bl FUN_02016A18
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0221A8E8: .word 0x0221BF4B
+_0221A8EC: .word 0x0221BF4A
+_0221A8F0: .word 0x0221BF49
+_0221A8F4: .word 0x0221BF48
+
+ thumb_func_start MOD09_0221A8F8
+MOD09_0221A8F8: ; 0x0221A8F8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ cmp r1, #6
+ blo _0221A916
+ cmp r1, #0xb
+ bhi _0221A916
+ add r0, #0x31
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0221A916
+ add r1, #0xb
+ ldr r0, _0221A96C ; =0x0221BF8C
+ lsl r1, r1, #2
+ ldr r4, [r0, r1]
+ b _0221A91C
+_0221A916:
+ ldr r0, _0221A96C ; =0x0221BF8C
+ lsl r1, r1, #2
+ ldr r4, [r0, r1]
+_0221A91C:
+ cmp r4, #0
+ beq _0221A968
+ cmp r2, #0
+ beq _0221A92C
+ cmp r2, #1
+ beq _0221A934
+ cmp r2, #2
+ bne _0221A93A
+_0221A92C:
+ mov r0, #1
+ str r0, [sp]
+ mov r7, #2
+ b _0221A93A
+_0221A934:
+ mov r0, #0
+ str r0, [sp]
+ mov r7, #4
+_0221A93A:
+ mov r5, #0
+_0221A93C:
+ ldrb r0, [r4, r5]
+ cmp r0, #0xff
+ beq _0221A968
+ ldr r1, [r6, #0x2c]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ ldr r1, [sp]
+ add r2, r7, #0
+ mov r3, #0
+ bl FUN_0201A8C8
+ ldrb r0, [r4, r5]
+ ldr r1, [r6, #0x2c]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl FUN_02019220
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #8
+ blo _0221A93C
+_0221A968:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221A96C: .word 0x0221BF8C
+
+ thumb_func_start MOD09_0221A970
+MOD09_0221A970: ; 0x0221A970
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ cmp r1, #6
+ blo _0221A98C
+ cmp r1, #0xb
+ bhi _0221A98C
+ sub r0, r1, #6
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x31
+ lsl r0, r0, #4
+ ldr r6, [r1, r0]
+ b _0221A9B0
+_0221A98C:
+ cmp r1, #4
+ bne _0221A9D4
+ mov r7, #0x31
+ mov r4, #0
+ lsl r7, r7, #4
+_0221A996:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r6, [r0, r7]
+ add r0, r6, #0
+ bl FUN_0200C658
+ cmp r0, #0
+ bne _0221A9B0
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #6
+ blo _0221A996
+_0221A9B0:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _0221A9BE
+ cmp r0, #1
+ beq _0221A9CA
+ cmp r0, #2
+ bne _0221A9D4
+_0221A9BE:
+ add r0, r6, #0
+ mov r1, #0
+ mov r2, #2
+ bl FUN_0200C82C
+ pop {r3, r4, r5, r6, r7, pc}
+_0221A9CA:
+ mov r1, #0
+ add r0, r6, #0
+ sub r2, r1, #4
+ bl FUN_0200C82C
+_0221A9D4:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD09_0221A9D8
+MOD09_0221A9D8: ; 0x0221A9D8
+ push {r4, r5}
+ ldr r3, _0221AA10 ; =0x0000113E
+ mov r5, #0
+ strb r5, [r0, r3]
+ add r4, r3, #1
+ strb r5, [r0, r4]
+ add r4, r3, #2
+ strb r1, [r0, r4]
+ add r1, r3, #3
+ ldrb r4, [r0, r1]
+ mov r1, #0xf0
+ bic r4, r1
+ lsl r1, r2, #0x1c
+ lsr r1, r1, #0x18
+ add r2, r4, #0
+ orr r2, r1
+ add r1, r3, #3
+ strb r2, [r0, r1]
+ ldrb r2, [r0, r1]
+ mov r1, #0xf
+ bic r2, r1
+ mov r1, #1
+ orr r2, r1
+ add r1, r3, #3
+ strb r2, [r0, r1]
+ pop {r4, r5}
+ bx lr
+ nop
+_0221AA10: .word 0x0000113E
+
+ thumb_func_start MOD09_0221AA14
+MOD09_0221AA14: ; 0x0221AA14
+ push {r4, lr}
+ ldr r3, _0221AAE8 ; =0x00001141
+ add r4, r0, #0
+ ldrb r1, [r4, r3]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ beq _0221AAE4
+ sub r1, r3, #3
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ beq _0221AA34
+ cmp r1, #1
+ beq _0221AA6C
+ cmp r1, #2
+ beq _0221AAA4
+ pop {r4, pc}
+_0221AA34:
+ sub r1, r3, #1
+ add r3, #0xb
+ ldrb r1, [r4, r1]
+ ldrb r3, [r4, r3]
+ mov r2, #1
+ bl MOD09_0221A884
+ mov r1, #0x45
+ lsl r1, r1, #6
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD09_0221A8F8
+ mov r1, #0x45
+ lsl r1, r1, #6
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD09_0221A970
+ ldr r0, _0221AAEC ; =0x0000113F
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r1, #1
+ sub r0, r0, #1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_0221AA6C:
+ sub r1, r3, #1
+ add r3, #0xb
+ ldrb r1, [r4, r1]
+ ldrb r3, [r4, r3]
+ mov r2, #2
+ bl MOD09_0221A884
+ mov r1, #0x45
+ lsl r1, r1, #6
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #2
+ bl MOD09_0221A8F8
+ mov r1, #0x45
+ lsl r1, r1, #6
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #2
+ bl MOD09_0221A970
+ ldr r0, _0221AAEC ; =0x0000113F
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r1, #2
+ sub r0, r0, #1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_0221AAA4:
+ sub r1, r3, #1
+ add r3, #0xb
+ ldrb r1, [r4, r1]
+ ldrb r3, [r4, r3]
+ mov r2, #0
+ bl MOD09_0221A884
+ mov r1, #0x45
+ lsl r1, r1, #6
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD09_0221A8F8
+ mov r1, #0x45
+ lsl r1, r1, #6
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD09_0221A970
+ ldr r0, _0221AAEC ; =0x0000113F
+ mov r2, #0
+ strb r2, [r4, r0]
+ sub r1, r0, #1
+ strb r2, [r4, r1]
+ add r1, r0, #2
+ ldrb r2, [r4, r1]
+ mov r1, #0xf
+ add r0, r0, #2
+ bic r2, r1
+ strb r2, [r4, r0]
+_0221AAE4:
+ pop {r4, pc}
+ nop
+_0221AAE8: .word 0x00001141
+_0221AAEC: .word 0x0000113F
+
+ thumb_func_start MOD09_0221AAF0
+MOD09_0221AAF0: ; 0x0221AAF0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ beq _0221AB02
+ cmp r6, #1
+ beq _0221AB60
+ cmp r6, #2
+ beq _0221ABE6
+ pop {r3, r4, r5, r6, r7, pc}
+_0221AB02:
+ mov r1, #0
+ add r2, r1, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ add r0, r5, #0
+ mov r1, #1
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ add r0, r5, #0
+ mov r1, #2
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ add r0, r5, #0
+ mov r1, #3
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ ldr r0, [r5]
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ bne _0221AB46
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #3
+ add r3, r6, #0
+ bl MOD09_0221A884
+ b _0221AB52
+_0221AB46:
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+_0221AB52:
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ pop {r3, r4, r5, r6, r7, pc}
+_0221AB60:
+ mov r4, #0
+ mov r7, #3
+_0221AB64:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD09_02219D94
+ cmp r0, #0
+ bne _0221AB82
+ add r1, r4, #6
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ add r2, r7, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ b _0221AB92
+_0221AB82:
+ add r1, r4, #6
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+_0221AB92:
+ add r4, r4, #1
+ cmp r4, #6
+ blo _0221AB64
+ ldr r0, _0221AC00 ; =0x0000114D
+ ldrb r1, [r5, r0]
+ add r0, r0, #7
+ add r1, r5, r1
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0221ABC0
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #3
+ add r3, r6, #0
+ bl MOD09_0221A884
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #3
+ add r3, r6, #0
+ bl MOD09_0221A884
+ b _0221ABD8
+_0221ABC0:
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+_0221ABD8:
+ add r0, r5, #0
+ mov r1, #0xe
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ pop {r3, r4, r5, r6, r7, pc}
+_0221ABE6:
+ mov r1, #0xf
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ add r0, r5, #0
+ mov r1, #0x10
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD09_0221A884
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0221AC00: .word 0x0000114D
+
+ thumb_func_start MOD09_0221AC04
+MOD09_0221AC04: ; 0x0221AC04
+ push {r3, lr}
+ mov r1, #0x10
+ bl FUN_02016998
+ add r3, r0, #0
+ mov r2, #0x10
+ mov r1, #0
+_0221AC12:
+ strb r1, [r3]
+ add r3, r3, #1
+ sub r2, r2, #1
+ bne _0221AC12
+ pop {r3, pc}
+
+ thumb_func_start MOD09_0221AC1C
+MOD09_0221AC1C: ; 0x0221AC1C
+ ldr r3, _0221AC20 ; =0x02016A19
+ bx r3
+ .align 2, 0
+_0221AC20: .word 0x02016A19
+
+ thumb_func_start MOD09_0221AC24
+MOD09_0221AC24: ; 0x0221AC24
+ ldr r0, [r0]
+ bx lr
+
+ thumb_func_start MOD09_0221AC28
+MOD09_0221AC28: ; 0x0221AC28
+ ldrb r0, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD09_0221AC2C
+MOD09_0221AC2C: ; 0x0221AC2C
+ strb r1, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD09_0221AC30
+MOD09_0221AC30: ; 0x0221AC30
+ str r1, [r0]
+ bx lr
+
+ thumb_func_start MOD09_0221AC34
+MOD09_0221AC34: ; 0x0221AC34
+ push {r3, r4, lr}
+ sub sp, #4
+ strb r1, [r0, #9]
+ ldrb r1, [r0, #8]
+ cmp r1, #1
+ bne _0221AC58
+ ldrb r1, [r0, #9]
+ ldr r2, [r0, #4]
+ lsl r4, r1, #3
+ add r3, r2, r4
+ ldrb r1, [r3, #3]
+ str r1, [sp]
+ ldrb r1, [r2, r4]
+ ldrb r2, [r3, #2]
+ ldrb r3, [r3, #1]
+ ldr r0, [r0]
+ bl FUN_0225D5DC
+_0221AC58:
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD09_0221AC5C
+MOD09_0221AC5C: ; 0x0221AC5C
+ mov r1, #0
+ strb r1, [r0, #9]
+ mov r1, #0xff
+ strb r1, [r0, #0xa]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD09_0221AC68
+MOD09_0221AC68: ; 0x0221AC68
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ bl MOD09_0221AC5C
+ mov r0, #0
+ str r5, [r4, #4]
+ mvn r0, r0
+ str r0, [r4, #0xc]
+ ldrb r0, [r4, #8]
+ cmp r0, #1
+ bne _0221AC92
+ ldr r3, [r4, #4]
+ ldrb r0, [r3, #3]
+ str r0, [sp]
+ ldrb r1, [r3]
+ ldrb r2, [r3, #2]
+ ldrb r3, [r3, #1]
+ ldr r0, [r4]
+ bl FUN_0225D5DC
+_0221AC92:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD09_0221AC94
+MOD09_0221AC94: ; 0x0221AC94
+ str r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start MOD09_0221AC98
+MOD09_0221AC98: ; 0x0221AC98
+ push {r3, r4, lr}
+ sub sp, #4
+ ldrb r1, [r0, #8]
+ cmp r1, #1
+ bne _0221ACA8
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, pc}
+_0221ACA8:
+ ldr r1, _0221ACDC ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0xf3
+ tst r1, r2
+ beq _0221ACD4
+ mov r1, #1
+ strb r1, [r0, #8]
+ ldrb r1, [r0, #9]
+ ldr r2, [r0, #4]
+ lsl r4, r1, #3
+ add r3, r2, r4
+ ldrb r1, [r3, #3]
+ str r1, [sp]
+ ldrb r1, [r2, r4]
+ ldrb r2, [r3, #2]
+ ldrb r3, [r3, #1]
+ ldr r0, [r0]
+ bl FUN_0225D5DC
+ ldr r0, _0221ACE0 ; =0x000005DC
+ bl FUN_020054C8
+_0221ACD4:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_0221ACDC: .word 0x021C48B8
+_0221ACE0: .word 0x000005DC
+
+ thumb_func_start MOD09_0221ACE4
+MOD09_0221ACE4: ; 0x0221ACE4
+ cmp r1, #3
+ bhi _0221AD2C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0221ACF4: ; jump table
+ .short _0221ACFC - _0221ACF4 - 2 ; case 0
+ .short _0221AD08 - _0221ACF4 - 2 ; case 1
+ .short _0221AD14 - _0221ACF4 - 2 ; case 2
+ .short _0221AD20 - _0221ACF4 - 2 ; case 3
+_0221ACFC:
+ ldrb r1, [r0, #5]
+ mov r0, #0x80
+ tst r0, r1
+ beq _0221AD2C
+ mov r0, #1
+ bx lr
+_0221AD08:
+ ldrb r1, [r0, #4]
+ mov r0, #0x80
+ tst r0, r1
+ beq _0221AD2C
+ mov r0, #1
+ bx lr
+_0221AD14:
+ ldrb r1, [r0, #7]
+ mov r0, #0x80
+ tst r0, r1
+ beq _0221AD2C
+ mov r0, #1
+ bx lr
+_0221AD20:
+ ldrb r1, [r0, #6]
+ mov r0, #0x80
+ tst r0, r1
+ beq _0221AD2C
+ mov r0, #1
+ bx lr
+_0221AD2C:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD09_0221AD30
+MOD09_0221AD30: ; 0x0221AD30
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ bl MOD09_0221AC98
+ cmp r0, #0
+ bne _0221AD46
+ mov r0, #0
+ add sp, #0x14
+ mvn r0, r0
+ pop {r4, r5, r6, r7, pc}
+_0221AD46:
+ ldr r0, _0221AEBC ; =0x021C48B8
+ mov r1, #0x40
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _0221AD6A
+ mov r1, #0
+ str r1, [sp]
+ ldrb r0, [r5, #9]
+ add r2, r1, #0
+ add r3, r1, #0
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r5, #4]
+ bl FUN_0201C638
+ add r4, r0, #0
+ mov r6, #0
+ b _0221ADD2
+_0221AD6A:
+ mov r1, #0x80
+ tst r1, r0
+ beq _0221AD8C
+ mov r1, #0
+ str r1, [sp]
+ ldrb r0, [r5, #9]
+ add r2, r1, #0
+ add r3, r1, #0
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [r5, #4]
+ bl FUN_0201C638
+ add r4, r0, #0
+ mov r6, #1
+ b _0221ADD2
+_0221AD8C:
+ mov r1, #0x20
+ tst r1, r0
+ beq _0221ADAE
+ mov r1, #0
+ str r1, [sp]
+ ldrb r0, [r5, #9]
+ add r2, r1, #0
+ add r3, r1, #0
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ ldr r0, [r5, #4]
+ bl FUN_0201C638
+ add r4, r0, #0
+ mov r6, #2
+ b _0221ADD2
+_0221ADAE:
+ mov r1, #0x10
+ tst r0, r1
+ beq _0221ADD0
+ mov r1, #0
+ str r1, [sp]
+ ldrb r0, [r5, #9]
+ add r2, r1, #0
+ add r3, r1, #0
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ ldr r0, [r5, #4]
+ bl FUN_0201C638
+ add r4, r0, #0
+ mov r6, #3
+ b _0221ADD2
+_0221ADD0:
+ mov r4, #0xff
+_0221ADD2:
+ cmp r4, #0xff
+ beq _0221AE92
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #0x80
+ add r1, r4, #0
+ tst r1, r0
+ beq _0221ADF2
+ ldrb r1, [r5, #0xa]
+ cmp r1, #0xff
+ beq _0221ADEC
+ add r4, r1, #0
+ b _0221ADF2
+_0221ADEC:
+ eor r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_0221ADF2:
+ mov r7, #0
+_0221ADF4:
+ mov r0, #1
+ ldr r1, [r5, #0xc]
+ lsl r0, r4
+ tst r0, r1
+ bne _0221AE2C
+ str r7, [sp, #0xc]
+ str r7, [sp]
+ str r4, [sp, #4]
+ str r6, [sp, #8]
+ ldr r0, [r5, #4]
+ add r1, r7, #0
+ add r2, r7, #0
+ add r3, r7, #0
+ bl FUN_0201C638
+ mov r1, #0x7f
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, r4
+ beq _0221AE24
+ ldrb r0, [r5, #9]
+ cmp r1, r0
+ bne _0221AE28
+_0221AE24:
+ ldrb r4, [r5, #9]
+ b _0221AE2C
+_0221AE28:
+ add r4, r1, #0
+ b _0221ADF4
+_0221AE2C:
+ ldrb r0, [r5, #9]
+ cmp r0, r4
+ beq _0221AE8A
+ ldr r0, [r5, #4]
+ lsl r7, r4, #3
+ add r1, sp, #0x10
+ add r2, sp, #0x10
+ add r0, r0, r7
+ add r1, #3
+ add r2, #2
+ bl FUN_0201C620
+ ldr r0, [r5, #4]
+ add r1, sp, #0x10
+ add r0, r0, r7
+ add r1, #1
+ add r2, sp, #0x10
+ bl FUN_0201C62C
+ ldr r0, [r5, #4]
+ add r1, r6, #0
+ add r0, r0, r7
+ bl MOD09_0221ACE4
+ cmp r0, #1
+ bne _0221AE6C
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ beq _0221AE6C
+ ldrb r0, [r5, #9]
+ strb r0, [r5, #0xa]
+ b _0221AE70
+_0221AE6C:
+ mov r0, #0xff
+ strb r0, [r5, #0xa]
+_0221AE70:
+ strb r4, [r5, #9]
+ add r3, sp, #0x10
+ ldrb r0, [r3]
+ str r0, [sp]
+ ldrb r1, [r3, #3]
+ ldrb r2, [r3, #1]
+ ldrb r3, [r3, #2]
+ ldr r0, [r5]
+ bl FUN_0225D5DC
+ ldr r0, _0221AEC0 ; =0x000005DC
+ bl FUN_020054C8
+_0221AE8A:
+ mov r0, #0
+ add sp, #0x14
+ mvn r0, r0
+ pop {r4, r5, r6, r7, pc}
+_0221AE92:
+ ldr r0, _0221AEBC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _0221AEA2
+ add sp, #0x14
+ ldrb r0, [r5, #9]
+ pop {r4, r5, r6, r7, pc}
+_0221AEA2:
+ mov r0, #2
+ tst r1, r0
+ beq _0221AEB6
+ ldr r0, _0221AEC4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ add sp, #0x14
+ mvn r0, r0
+ pop {r4, r5, r6, r7, pc}
+_0221AEB6:
+ sub r0, r0, #3
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221AEBC: .word 0x021C48B8
+_0221AEC0: .word 0x000005DC
+_0221AEC4: .word 0x000005DD
+
+ .section .data
+ ; 0x0221AEC8
+ .incbin "baserom.nds", 0x1AC068, 0x1138
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 5626ffc3..d94acc27 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -624,6 +624,36 @@ FUN_02252504 = 0x02252504; FUN_02254A68 = 0x02254A68; FUN_02254AB8 = 0x02254AB8; FUN_0223BD14 = 0x0223BD14; +FUN_0222FF68 = 0x0222FF68; +FUN_0222FF74 = 0x0222FF74; +FUN_0222FF78 = 0x0222FF78; +FUN_0222FF88 = 0x0222FF88; +FUN_02230014 = 0x02230014; +FUN_02230188 = 0x02230188; +FUN_02230214 = 0x02230214; +FUN_02230218 = 0x02230218; +FUN_02230260 = 0x02230260; +FUN_02230290 = 0x02230290; +FUN_022302BC = 0x022302BC; +FUN_02230370 = 0x02230370; +FUN_02230E44 = 0x02230E44; +FUN_02230E54 = 0x02230E54; +FUN_02231238 = 0x02231238; +FUN_0224C474 = 0x0224C474; +FUN_0225D3EC = 0x0225D3EC; +FUN_0225D45C = 0x0225D45C; +FUN_0225D484 = 0x0225D484; +FUN_0225D508 = 0x0225D508; +FUN_0225D5DC = 0x0225D5DC; +FUN_0225D648 = 0x0225D648; +FUN_0225D6A4 = 0x0225D6A4; +FUN_0225D714 = 0x0225D714; +FUN_0225D73C = 0x0225D73C; +FUN_0225D7B8 = 0x0225D7B8; +FUN_0225D800 = 0x0225D800; +FUN_0225D80C = 0x0225D80C; +FUN_0225D820 = 0x0225D820; +FUN_0225D824 = 0x0225D824; // ??? SDK_MAIN_ARENA_LO = 0x0225FFA0; |