summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-05 09:22:22 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-05 09:22:22 -0400
commit605b15e3f32fd42aff0cf1e5fe3f7f3b90797074 (patch)
tree6aecb1fedd19a4fb6917490cc2b3f588e1648892
parent25fa2a19d4fbec4f6a0f379d47616838b62bbdc0 (diff)
Disassemble module 17
-rw-r--r--arm9/arm9.lcf16
-rw-r--r--arm9/global.inc52
-rw-r--r--arm9/modules/16/asm/module_16.s350
-rw-r--r--arm9/modules/17/asm/module_17.s14606
4 files changed, 14847 insertions, 177 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 1ab91bbb..e1ad11e3 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -27,7 +27,7 @@ MEMORY {
MODULE_14 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
MODULE_15 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
MODULE_16 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_17 (RWX) : ORIGIN=0, LENGTH=0
+ MODULE_17 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
MODULE_18 (RWX) : ORIGIN=0, LENGTH=0
MODULE_19 (RWX) : ORIGIN=0, LENGTH=0
MODULE_20 (RWX) : ORIGIN=0, LENGTH=0
@@ -577,7 +577,19 @@ SECTIONS {
module_16.o (.bss)
} >> MODULE_16
- OVERLAY_FILE(17, 0x260200, FILE_264200.o)
+ .MODULE.17 : AT (0x260200)
+ {
+ module_17.o (.text)
+ module_17.o (.sdata)
+ module_17.o (.data)
+ } > MODULE_17
+
+ .MODULE.17.bss :
+ {
+ module_17.o (.sbss)
+ module_17.o (.bss)
+ } >> MODULE_17
+
OVERLAY_FILE(18, 0x267200, FILE_26B200.o)
OVERLAY_FILE(19, 0x27F000, FILE_283000.o)
OVERLAY_FILE(20, 0x27F200, FILE_283200.o)
diff --git a/arm9/global.inc b/arm9/global.inc
index bb90bd2c..3c2d00ba 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -5179,6 +5179,58 @@
.extern FUN_0206E768
.extern FUN_020B1A1C
.extern G3X_ResetMtxStack_2
+.extern FUN_0200825C
+.extern FUN_02013DEC
+.extern FUN_02013E5C
+.extern FUN_02013ECC
+.extern FUN_02013EF0
+.extern FUN_02013F0C
+.extern FUN_02014590
+.extern FUN_020145A8
+.extern FUN_020145C8
+.extern FUN_0201466C
+.extern FUN_020146C4
+.extern FUN_0201D324
+.extern FUN_0201E1C8
+.extern FUN_0201FD98
+.extern FUN_02020AE8
+.extern FUN_02020C44
+.extern FUN_02020C90
+.extern FUN_02020CB0
+.extern FUN_02020CD4
+.extern FUN_0202714C
+.extern FUN_020272D4
+.extern FUN_02027310
+.extern FUN_02027348
+.extern FUN_02027380
+.extern FUN_02027448
+.extern FUN_020274F0
+.extern FUN_02027528
+.extern FUN_02027564
+.extern FUN_02027590
+.extern FUN_0202766C
+.extern FUN_02027778
+.extern FUN_020277B4
+.extern FUN_02027A58
+.extern FUN_02027A94
+.extern FUN_02027AC4
+.extern FUN_02027B0C
+.extern FUN_02027B44
+.extern FUN_02027B78
+.extern FUN_02027C28
+.extern FUN_02027C58
+.extern FUN_02027CA0
+.extern FUN_02027CA8
+.extern FUN_02027CB0
+.extern FUN_02027CB8
+.extern FUN_02027CF8
+.extern FUN_02027CFC
+.extern FUN_02027D00
+.extern FUN_02027D04
+.extern FUN_02083268
+.extern FUN_02083298
+.extern FUN_02083A34
+.extern FUN_02083A7C
.extern SDK_MODULE_00_ID
.extern SDK_MODULE_01_ID
.extern SDK_MODULE_02_ID
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index 8f1060c8..7d62c0f0 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -250,7 +250,7 @@ _021D76C2:
ldr r2, _021D77D0 ; =0x00001D10
add r0, r4, #0
mov r1, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r7, [r4, #4]
ldr r0, [r5, #0x1c]
str r0, [r4, #8]
@@ -1072,13 +1072,13 @@ MOD16_021D7CC8: ; 0x021D7CC8
ldr r4, [r5, #0x20]
mul r0, r6
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r5, #0x18]
add r7, r0, #0
add r0, r1, #0
mul r0, r6
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r5, #0xc]
ldr r2, [r5, #0x10]
add r1, r7, r1
@@ -1996,7 +1996,7 @@ MOD16_021D8424: ; 0x021D8424
push {r4, r5, lr}
sub sp, #0x24
add r4, r0, #0
- blx FUN_020B0FC0
+ bl FUN_020B0FC0
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -2053,8 +2053,8 @@ _021D849C: .word 0x000019FC
thumb_func_start MOD16_021D84A0
MOD16_021D84A0: ; 0x021D84A0
push {r3, lr}
- blx FUN_020BB7F4
- blx G3X_InitMtxStack
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
ldr r0, _021D8500 ; =0x04000060
ldr r2, _021D8504 ; =0xFFFFCFFD
ldrh r1, [r0]
@@ -2081,7 +2081,7 @@ MOD16_021D84A0: ; 0x021D84A0
add r1, r0, #0
mov r3, #0x3f
str r0, [sp]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _021D850C ; =0x04000540
mov r0, #2
str r0, [r1]
@@ -2089,11 +2089,11 @@ MOD16_021D84A0: ; 0x021D84A0
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- blx FUN_020AEB70
+ bl FUN_020AEB70
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- blx FUN_020AEDF4
+ bl FUN_020AEDF4
pop {r3, pc}
.align 2, 0
_021D8500: .word 0x04000060
@@ -2106,8 +2106,8 @@ _021D8510: .word 0xBFFF0000
thumb_func_start MOD16_021D8514
MOD16_021D8514: ; 0x021D8514
push {r3, lr}
- blx FUN_020AEAF4
- blx FUN_020AEC60
+ bl FUN_020AEAF4
+ bl FUN_020AEC60
pop {r3, pc}
thumb_func_end MOD16_021D8514
@@ -2301,7 +2301,7 @@ MOD16_021D8628: ; 0x021D8628
add r0, r4, #0
mov r1, #0
lsl r2, r2, #6
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
pop {r4, pc}
thumb_func_end MOD16_021D8628
@@ -2313,7 +2313,7 @@ MOD16_021D86B4: ; 0x021D86B4
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FUN_0201FDEC
- blx FUN_020B02C8
+ bl FUN_020B02C8
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2766,7 +2766,7 @@ MOD16_021D89B4: ; 0x021D89B4
ldr r1, [r5, #4]
ldr r2, [r5, #8]
add r3, r4, #0
- blx G2x_SetBlendBrightnessExt_
+ bl G2x_SetBlendBrightnessExt_
b _021D89FC
_021D89EA:
mov r1, #0
@@ -2776,7 +2776,7 @@ _021D89EA:
ldr r1, [r5, #4]
ldr r2, [r5, #8]
add r3, r4, #0
- blx G2x_SetBlendBrightnessExt_
+ bl G2x_SetBlendBrightnessExt_
_021D89FC:
ldr r0, [r5, #0x20]
add r0, r0, #1
@@ -2801,7 +2801,7 @@ MOD16_021D8A14: ; 0x021D8A14
lsl r2, r2, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -2812,7 +2812,7 @@ MOD16_021D8A14: ; 0x021D8A14
orr r0, r1
ldr r1, [r4, #0x1c]
lsl r1, r1, #0xc
- blx FX_Div
+ bl FX_Div
asr r1, r0, #0xc
ldr r0, [r4, #0x14]
add r0, r1, r0
@@ -2829,7 +2829,7 @@ MOD16_021D8A48: ; 0x021D8A48
lsl r2, r2, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -2840,7 +2840,7 @@ MOD16_021D8A48: ; 0x021D8A48
orr r0, r1
ldr r1, [r4, #0x1c]
lsl r1, r1, #0xc
- blx FX_Div
+ bl FX_Div
asr r1, r0, #0xc
ldr r0, [r4, #0xc]
add r0, r1, r0
@@ -3076,7 +3076,7 @@ MOD16_021D8BF4: ; 0x021D8BF4
lsl r2, r2, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -3087,7 +3087,7 @@ MOD16_021D8BF4: ; 0x021D8BF4
orr r0, r1
ldr r1, [r5, #0x1c]
lsl r1, r1, #0xc
- blx FX_Div
+ bl FX_Div
add r4, r0, #0
ldr r0, [r5, #0x14]
ldr r2, [r5, #0x18]
@@ -3095,7 +3095,7 @@ MOD16_021D8BF4: ; 0x021D8BF4
lsl r2, r2, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -3106,7 +3106,7 @@ MOD16_021D8BF4: ; 0x021D8BF4
orr r0, r1
ldr r1, [r5, #0x1c]
lsl r1, r1, #0xc
- blx FX_Div
+ bl FX_Div
ldr r1, [r5, #8]
asr r2, r4, #0xc
add r1, r2, r1
@@ -3159,7 +3159,7 @@ MOD16_021D8C78: ; 0x021D8C78
beq _021D8CAE
add r0, r4, #0
add r1, r5, #0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0
bl FUN_02016A18
_021D8CAE:
@@ -3182,7 +3182,7 @@ MOD16_021D8CB4: ; 0x021D8CB4
add r7, r0, #0
beq _021D8CF6
add r1, sp, #4
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0
beq _021D8CF0
cmp r4, #0
@@ -3220,7 +3220,7 @@ MOD16_021D8CFC: ; 0x021D8CFC
add r7, r0, #0
beq _021D8D42
add r1, sp, #0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0
beq _021D8D3C
cmp r4, #0
@@ -3231,7 +3231,7 @@ _021D8D22:
ldr r0, [sp]
add r1, r4, #0
ldr r0, [r0, #0xc]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp]
add r2, r4, #0
ldr r3, _021D8D44 ; =0x021FF548
@@ -3258,7 +3258,7 @@ MOD16_021D8D48: ; 0x021D8D48
add r4, r0, #0
beq _021D8D6A
add r1, r5, #0
- blx FUN_020B0180
+ bl FUN_020B0180
cmp r0, #0
bne _021D8D6A
add r0, r4, #0
@@ -3280,7 +3280,7 @@ MOD16_021D8D70: ; 0x021D8D70
add r4, r0, #0
beq _021D8D92
add r1, r5, #0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0
bne _021D8D92
add r0, r4, #0
@@ -3302,7 +3302,7 @@ MOD16_021D8D98: ; 0x021D8D98
add r4, r0, #0
beq _021D8DBA
add r1, r5, #0
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0
bne _021D8DBA
add r0, r4, #0
@@ -4375,7 +4375,7 @@ _021D962C:
lsr r0, r5, #0xc
orr r0, r2
lsl r1, r1, #6
- blx FX_Div
+ bl FX_Div
asr r3, r0, #0xc
ldr r0, [r4, #0x2c]
add r0, r0, r3
@@ -4566,7 +4566,7 @@ MOD16_021D9798: ; 0x021D9798
ldr r2, _021D988C ; =0x00001770
mov r1, #0
add r5, r0, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
str r0, [r5]
ldr r1, [r4, #8]
@@ -5017,7 +5017,7 @@ _021D9AAE:
ldr r2, _021D9CA8 ; =0x000003DA
add r0, r6, #0
mov r1, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0
str r0, [sp, #0x24]
ldr r1, _021D9CA8 ; =0x000003DA
@@ -5030,7 +5030,7 @@ _021D9ACC:
ldr r2, _021D9CA8 ; =0x000003DA
add r0, r4, #0
mov r1, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r1, #0
ldr r0, [sp, #0x48]
str r1, [sp, #0x20]
@@ -5075,13 +5075,13 @@ _021D9B16:
add r0, r6, #0
add r1, r4, #0
lsl r2, r2, #1
- blx memcpy
+ bl memcpy
ldr r2, [sp, #0x20]
add r0, r4, #0
str r2, [sp, #0x24]
mov r1, #0
lsl r2, r2, #1
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0
str r0, [sp, #0x20]
ldr r0, [sp, #0x24]
@@ -5103,13 +5103,13 @@ _021D9B6A:
add r0, r6, #0
add r1, r4, #0
lsl r2, r2, #1
- blx memcpy
+ bl memcpy
ldr r2, [sp, #0x20]
add r0, r4, #0
str r2, [sp, #0x24]
mov r1, #0
lsl r2, r2, #1
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0
str r0, [sp, #0x20]
ldr r0, [sp, #0x24]
@@ -5131,13 +5131,13 @@ _021D9BA6:
add r0, r6, #0
add r1, r4, #0
lsl r2, r2, #1
- blx memcpy
+ bl memcpy
ldr r2, [sp, #0x20]
add r0, r4, #0
str r2, [sp, #0x24]
mov r1, #0
lsl r2, r2, #1
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0
str r0, [sp, #0x20]
ldr r0, [sp, #0x24]
@@ -5159,13 +5159,13 @@ _021D9BE2:
add r0, r6, #0
add r1, r4, #0
lsl r2, r2, #1
- blx memcpy
+ bl memcpy
ldr r2, [sp, #0x20]
add r0, r4, #0
str r2, [sp, #0x24]
mov r1, #0
lsl r2, r2, #1
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0
str r0, [sp, #0x20]
ldr r0, [sp, #0x24]
@@ -5187,13 +5187,13 @@ _021D9C1E:
add r0, r6, #0
add r1, r4, #0
lsl r2, r2, #1
- blx memcpy
+ bl memcpy
ldr r2, [sp, #0x20]
add r0, r4, #0
str r2, [sp, #0x24]
mov r1, #0
lsl r2, r2, #1
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0
str r0, [sp, #0x20]
ldr r1, [r5]
@@ -6120,7 +6120,7 @@ _021DA24E:
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
lsl r2, r2, #1
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x30]
str r0, [r7]
add sp, #0x1c
@@ -6239,7 +6239,7 @@ _021DA332:
ldr r1, [sp, #0x10]
add r0, r7, #0
lsl r2, r2, #1
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x30]
str r0, [r6]
add sp, #0x18
@@ -6414,7 +6414,7 @@ _021DA486:
ldr r1, [sp, #0x10]
add r0, r7, #0
lsl r2, r2, #1
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x30]
str r0, [r6]
add sp, #0x18
@@ -6568,7 +6568,7 @@ _021DA5B0:
ldr r1, [sp, #0x10]
add r0, r7, #0
lsl r2, r2, #1
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x30]
str r0, [r6]
add sp, #0x18
@@ -6623,7 +6623,7 @@ _021DA60E:
add r0, r4, #0
mov r1, #0
mov r2, #0x48
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #5
str r0, [r4, #8]
str r5, [r4, #0x44]
@@ -7584,7 +7584,7 @@ _021DACB2:
add r0, r4, #0
mov r1, #0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl MOD16_021D7A38
str r0, [r4]
@@ -7686,7 +7686,7 @@ _021DAD92:
add r0, r4, #0
mov r1, #0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl MOD16_021D7A38
str r0, [r4]
@@ -7750,7 +7750,7 @@ _021DAE26:
add r0, r4, #0
mov r1, #0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl MOD16_021D7A38
str r0, [r4]
@@ -8271,7 +8271,7 @@ _021DB268:
ldr r0, [r4, #0xc]
mov r1, #0
lsl r2, r2, #4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #8]
str r0, [r4, #0x10]
ldr r0, [r5]
@@ -8901,7 +8901,7 @@ _021DB698:
_021DB69A:
add r0, r1, #0
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
add r7, r0, #0
mov r4, #0
cmp r5, #0
@@ -8931,7 +8931,7 @@ _021DB6C8:
_021DB6CA:
add r0, r1, #0
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
add r7, r0, #0
mov r4, #0
cmp r5, #0
@@ -8966,11 +8966,11 @@ _021DB700:
bne _021DB71C
add r0, r5, #0
add r1, r2, #0
- blx _s32_div_f
+ bl _s32_div_f
str r1, [r4, #0xc]
ldr r1, [r4, #4]
add r0, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4, #0x10]
pop {r4, r5, r6, pc}
_021DB71C:
@@ -9115,11 +9115,11 @@ MOD16_021DB7F4: ; 0x021DB7F4
mul r4, r0
add r0, r4, #0
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
add r7, r0, #0
add r0, r4, #0
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
str r5, [sp]
add r4, r1, #0
str r6, [sp, #4]
@@ -10018,7 +10018,7 @@ MOD16_021DBE0C: ; 0x021DBE0C
beq _021DBE34
ldr r0, [sp, #8]
mov r1, #0x24
- blx _u32_div_f
+ bl _u32_div_f
str r0, [r4]
_021DBE34:
add r0, r5, #0
@@ -10427,7 +10427,7 @@ _021DC11E:
add r0, r4, #0
mov r1, #0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl MOD16_021D7AD8
str r0, [r4]
@@ -10585,7 +10585,7 @@ _021DC24C:
ldr r0, [r5, #8]
mov r1, #0
mov r2, #0x24
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r1, [r5, #8]
add r0, r4, #0
bl MOD16_021DC4D4
@@ -10758,7 +10758,7 @@ _021DC388:
mov r1, #1
mov r2, #8
mov r3, #0
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021DC39C:
@@ -11136,10 +11136,10 @@ _021DC638:
pop {r4, pc}
_021DC650:
ldr r0, [r4, #4]
- blx _fflt
+ bl _fflt
ldr r1, _021DC674 ; =0x3FCCCCCD
- blx _fmul
- blx _ffix
+ bl _fmul
+ bl _ffix
str r0, [r4, #4]
ldr r0, [r4, #0xc]
sub r1, r0, #1
@@ -11297,14 +11297,14 @@ MOD16_021DC770: ; 0x021DC770
ldr r0, [r0, #0xc]
lsl r1, r1, #8
str r0, [sp, #8]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #8]
mov r2, #0x1e
add r0, #0x20
mov r1, #0x20
lsl r2, r2, #4
str r0, [sp, #8]
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
ldr r0, [sp, #0xc]
bl FUN_02016A18
add r0, r7, #0
@@ -12076,7 +12076,7 @@ _021DCE20:
_021DCE24:
add r0, r6, #1
mov r1, #9
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0x14]
add r6, r1, #0
add r0, r0, #1
@@ -12289,7 +12289,7 @@ _021DCFB6:
ldr r0, [sp, #4]
mov r1, #9
add r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
add r4, r4, #1
str r1, [sp, #4]
cmp r4, #9
@@ -12327,7 +12327,7 @@ _021DCFFC:
ldr r0, [r5, #0x24]
mov r1, #9
add r0, #8
- blx _s32_div_f
+ bl _s32_div_f
add r0, r6, #4
cmp r0, r7
blt _021DD01A
@@ -12395,7 +12395,7 @@ _021DD07E:
mov r1, #9
ldr r0, [r0, #0x24]
add r0, r0, r4
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #8]
add r5, r1, #0
mov r6, #0
@@ -12468,7 +12468,7 @@ MOD16_021DD110: ; 0x021DD110
mov r0, #0x36
lsl r0, r0, #0xc
lsl r1, r1, #0xc
- blx FX_Div
+ bl FX_Div
str r0, [r4, #0x78]
pop {r4, pc}
.align 2, 0
@@ -12486,7 +12486,7 @@ MOD16_021DD12C: ; 0x021DD12C
lsl r2, r2, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -12520,7 +12520,7 @@ MOD16_021DD174: ; 0x021DD174
lsl r2, r3, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -12530,7 +12530,7 @@ MOD16_021DD174: ; 0x021DD174
lsr r0, r0, #0xc
orr r0, r1
lsl r1, r4, #0xc
- blx FX_Div
+ bl FX_Div
add r0, r0, r5
pop {r3, r4, r5, pc}
thumb_func_end MOD16_021DD174
@@ -12543,7 +12543,7 @@ MOD16_021DD1A0: ; 0x021DD1A0
mov r1, #0
lsl r2, r2, #2
add r4, r0, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #4]
bl MOD16_021D9EC4
mov r1, #0x51
@@ -12591,7 +12591,7 @@ _021DD1CA:
_021DD20C:
add r0, r5, #1
mov r1, #9
- blx _s32_div_f
+ bl _s32_div_f
add r6, r6, #1
add r5, r1, #0
cmp r6, #9
@@ -12664,7 +12664,7 @@ _021DD27C:
_021DD290:
add r0, r6, #0
mov r1, #9
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0x10]
add r6, r1, #0
cmp r7, r0
@@ -12909,7 +12909,7 @@ _021DD47E:
_021DD488:
add r0, r5, #1
mov r1, #9
- blx _s32_div_f
+ bl _s32_div_f
add r7, r7, #1
add r5, r1, #0
add r4, r4, #1
@@ -12931,7 +12931,7 @@ MOD16_021DD49C: ; 0x021DD49C
asr r1, r0, #0x1f
lsl r2, r2, #0xc
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -12942,7 +12942,7 @@ MOD16_021DD49C: ; 0x021DD49C
orr r0, r1
mov r1, #0xa
lsl r1, r1, #0x12
- blx FX_Div
+ bl FX_Div
add r5, r0, #0
add r0, r4, #0
bl MOD16_021D8700
@@ -12984,7 +12984,7 @@ MOD16_021DD4F0: ; 0x021DD4F0
lsr r0, r0, #0xc
orr r0, r2
lsl r1, r1, #0xc
- blx FX_Div
+ bl FX_Div
asr r1, r0, #0xc
mov r0, #0x10
sub r0, r0, r1
@@ -13094,7 +13094,7 @@ MOD16_021DD5C0: ; 0x021DD5C0
mov r1, #1
lsl r1, r1, #8
ldr r1, [r5, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r5, #0xf0
ldr r1, [r5]
add r0, r0, r1
@@ -13239,7 +13239,7 @@ MOD16_021DD6DC: ; 0x021DD6DC
mov r1, #9
add r5, r2, #0
add r7, r3, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #2
ldr r0, [r4, r0]
bl FUN_0202011C
@@ -13481,7 +13481,7 @@ _021DD8A8:
ldr r0, _021DD90C ; =0x04000050
mov r1, #0x2e
mov r2, #8
- blx G2x_SetBlendBrightnessExt_
+ bl G2x_SetBlendBrightnessExt_
ldr r0, [r5]
mov r1, #0
add r0, r0, #4
@@ -14004,7 +14004,7 @@ _021DDCB8:
add r0, r4, #0
mov r1, #0
mov r2, #0x28
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r6, #0
mov r1, #0
bl MOD16_021D7B5C
@@ -14068,7 +14068,7 @@ _021DDD34:
add r0, r4, #0
mov r1, #0
add r2, r7, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0
add r1, r6, #0
add r2, r5, #0
@@ -14141,7 +14141,7 @@ _021DDDAC:
ldr r0, [r5, #8]
mov r1, #0
mov r2, #0x24
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r1, _021DDDD8 ; =0x000004CD
ldr r0, [r5, #8]
add r2, r4, #0
@@ -14251,7 +14251,7 @@ _021DDE72:
ldr r0, [r4, #8]
mov r1, #0
mov r2, #0x3c
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -15562,7 +15562,7 @@ MOD16_021DE8D0: ; 0x021DE8D0
add r2, r3, #0
asr r1, r0, #0x1f
add r3, r6, #0
- blx _ll_mul
+ bl _ll_mul
mov r3, #2
mov r6, #0
lsl r3, r3, #0xa
@@ -15578,7 +15578,7 @@ MOD16_021DE8D0: ; 0x021DE8D0
strh r0, [r5, #0x28]
ldrh r0, [r5, #0x28]
strh r0, [r5, #0x28]
- blx _s32_div_f
+ bl _s32_div_f
add r3, r0, #0
ldr r0, [r4]
lsl r3, r3, #0x10
@@ -15618,7 +15618,7 @@ MOD16_021DE93C: ; 0x021DE93C
sub r2, r1, r0
ldr r0, _021DE9AC ; =0x000011C7
mul r0, r2
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r6, #8]
cmp r1, #1
bne _021DE95E
@@ -15630,7 +15630,7 @@ _021DE95E:
ldrh r0, [r5, #0x28]
mov r1, #0xb6
strh r0, [r5, #0x28]
- blx _s32_div_f
+ bl _s32_div_f
add r3, r0, #0
ldr r0, [r4]
lsl r3, r3, #0x10
@@ -16121,7 +16121,7 @@ _021DEC76:
add r0, r4, #0
mov r1, #0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl MOD16_021D7AD8
str r0, [r4]
@@ -16178,7 +16178,7 @@ _021DECE8:
add r0, r4, #0
mov r1, #0
add r2, r7, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
@@ -16465,7 +16465,7 @@ _021DEEDC:
str r0, [r4, #8]
mov r1, #0
mov r2, #0x64
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -18120,7 +18120,7 @@ _021DFB6A:
add r0, r4, #0
mov r1, #0
mov r2, #0x9c
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0
ldr r1, _021DFBB4 ; =0x0000FFFF
str r4, [r5, #8]
@@ -18360,7 +18360,7 @@ _021DFD32:
str r0, [r4, #8]
mov r1, #0
lsl r2, r2, #2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -25079,7 +25079,7 @@ _021E2D4A:
ldr r0, _021E2DB4 ; =0x04001050
mov r1, #0
mov r2, #4
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
mov r0, #0x13
lsl r0, r0, #4
ldr r1, [r4, r0]
@@ -25484,7 +25484,7 @@ _021E3016:
add r0, r4, #0
mov r1, #0
mov r2, #0x34
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r4, [r6, #8]
ldr r1, [r5]
ldr r0, _021E3070 ; =0x00001744
@@ -25621,7 +25621,7 @@ _021E310A:
ldr r2, _021E31D4 ; =0x00000844
str r0, [r4, #8]
mov r1, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r5, [r4, #8]
ldr r0, [r7, #4]
mov r1, #0
@@ -27212,13 +27212,13 @@ MOD16_021E3DBC: ; 0x021E3DBC
add r0, #0xec
mov r1, #0
lsl r2, r2, #2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r2, #0x47
lsl r2, r2, #4
add r0, r6, r2
mov r1, #0
sub r2, #0xec
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r6, #0
add r0, #0xc4
ldr r0, [r0]
@@ -27635,7 +27635,7 @@ MOD16_021E40D4: ; 0x021E40D4
mov r1, #0xa
mov r2, #8
mov r3, #0
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
mov r0, #2
mov r1, #1
bl FUN_0201E6E4
@@ -27733,7 +27733,7 @@ _021E417E:
lsr r0, r4, #0xc
orr r0, r2
lsl r1, r1, #5
- blx FX_Div
+ bl FX_Div
asr r1, r0, #0xc
mov r0, #1
lsl r0, r0, #0xc
@@ -27978,7 +27978,7 @@ _021E435A:
add r0, r4, #0
mov r1, #0
mov r2, #0x28
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r4, [r5, #8]
add r0, r4, #0
add r1, r6, #0
@@ -28062,7 +28062,7 @@ _021E43E8:
str r0, [r4, #8]
mov r1, #0
mov r2, #0x2c
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -28746,7 +28746,7 @@ _021E4902:
_021E4912:
ldr r0, [r5]
mov r1, #0x55
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
cmp r1, #2
ble _021E4922
@@ -28998,7 +28998,7 @@ _021E4ACE:
mul r1, r0
add r0, r1, #0
mov r1, #0xb0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
asr r0, r0, #4
@@ -29009,7 +29009,7 @@ _021E4ACE:
lsl r2, r2, #0x10
mov r3, #0
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -29142,7 +29142,7 @@ _021E4BDE:
add r0, r4, #0
mov r1, #0
mov r2, #0x20
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl MOD16_021D7AD8
str r0, [r4]
@@ -29313,7 +29313,7 @@ _021E4D00:
str r0, [r4, #8]
mov r1, #0
mov r2, #0x74
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -31520,7 +31520,7 @@ _021E5DA4:
str r0, [r4, #8]
mov r1, #0
mov r2, #0xd0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4, #8]
ldr r1, [r7, #0xc]
add r0, #0xc8
@@ -33918,7 +33918,7 @@ _021E6F2A:
add r0, r4, #0
mov r1, #0
mov r2, #0x20
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl MOD16_021D7AD8
str r0, [r4]
@@ -34041,7 +34041,7 @@ _021E6FE4:
str r0, [r4, #8]
mov r1, #0
mov r2, #0x58
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -35664,7 +35664,7 @@ _021E7C58:
add r0, r4, #0
mov r1, #0
add r2, r7, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
@@ -35750,7 +35750,7 @@ MOD16_021E7CE4: ; 0x021E7CE4
mov r1, #0
mov r2, #0x3c
add r4, r0, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r1, #0
add r2, r4, #0
mov r0, #4
@@ -35850,7 +35850,7 @@ _021E7DA2:
str r0, [r4, #8]
mov r1, #0
mov r2, #0xc4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -37791,7 +37791,7 @@ _021E8C82:
add r0, r4, #0
mov r1, #0
mov r2, #0x34
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl MOD16_021D7B00
str r0, [r4]
@@ -37878,7 +37878,7 @@ _021E8D3C:
add r0, r4, #0
mov r1, #0
add r2, r7, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
@@ -38074,7 +38074,7 @@ _021E8E9E:
str r0, [r4, #8]
mov r1, #0
mov r2, #0x28
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r1, [r7, #8]
ldr r0, [r4, #8]
str r1, [r0]
@@ -39035,7 +39035,7 @@ _021E95E2:
add r0, r4, #0
mov r1, #0
mov r2, #0x34
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl MOD16_021D7B14
str r0, [r4]
@@ -39267,7 +39267,7 @@ _021E9774:
str r0, [r4, #8]
mov r1, #0
mov r2, #0x28
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -40948,7 +40948,7 @@ _021EA3C2:
str r0, [r4, #8]
mov r1, #0
lsl r2, r2, #4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -41900,7 +41900,7 @@ _021EAAFC:
ldr r1, [sp, #0x18]
asr r3, r4, #0x1f
add r2, r4, #0
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
lsl r2, r2, #0xa
add r0, r0, r2
@@ -41910,7 +41910,7 @@ _021EAAFC:
lsr r0, r0, #0xc
orr r0, r1
ldr r1, [sp, #0x10]
- blx FX_Div
+ bl FX_Div
asr r1, r0, #0xc
ldr r0, [sp, #0xc]
ldr r2, [sp, #0x1c]
@@ -41969,7 +41969,7 @@ _021EAB64:
orr r0, r1
mov r1, #0x7f
lsl r1, r1, #0xc
- blx FX_Div
+ bl FX_Div
asr r5, r0, #0xc
_021EAB8E:
ldr r1, [r4]
@@ -42567,7 +42567,7 @@ MOD16_021EAFB4: ; 0x021EAFB4
mov r1, #0
mov r2, #0x70
add r4, r0, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r2, [r5, #4]
add r0, r4, #0
add r1, r6, #0
@@ -42688,7 +42688,7 @@ _021EB0B0:
str r0, [r4, #8]
mov r1, #0
mov r2, #0x74
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -44184,7 +44184,7 @@ _021EBC56:
b _021EBC76
_021EBC6E:
mov r1, #0x58
- blx _s32_div_f
+ bl _s32_div_f
str r1, [r4]
_021EBC76:
ldr r0, [r5, #0x5c]
@@ -44351,7 +44351,7 @@ _021EBD70:
add r0, #0x4c
ldrh r0, [r0]
mov r1, #0xb6
- blx _s32_div_f
+ bl _s32_div_f
add r3, r0, #0
ldr r0, [r4]
lsl r3, r3, #0x10
@@ -44386,7 +44386,7 @@ MOD16_021EBDD0: ; 0x021EBDD0
asr r1, r0, #0x1f
lsl r2, r2, #0xc
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -44397,7 +44397,7 @@ MOD16_021EBDD0: ; 0x021EBDD0
orr r0, r1
mov r1, #9
lsl r1, r1, #0x10
- blx FX_Div
+ bl FX_Div
asr r0, r0, #0xc
str r0, [r4, #0x44]
pop {r4, pc}
@@ -44414,7 +44414,7 @@ MOD16_021EBE04: ; 0x021EBE04
asr r1, r0, #0x1f
lsl r2, r2, #0xc
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -44425,7 +44425,7 @@ MOD16_021EBE04: ; 0x021EBE04
orr r0, r1
mov r1, #0x12
lsl r1, r1, #0xe
- blx FX_Div
+ bl FX_Div
asr r0, r0, #0xc
str r0, [r4, #0x40]
pop {r4, pc}
@@ -46096,7 +46096,7 @@ MOD16_021ECA74: ; 0x021ECA74
mov r0, #1
lsl r0, r0, #0x14
lsl r1, r1, #0xc
- blx FX_Div
+ bl FX_Div
str r0, [sp]
str r0, [sp, #4]
add r0, r4, #0
@@ -46115,7 +46115,7 @@ MOD16_021ECA98: ; 0x021ECA98
mov r0, #1
lsl r0, r0, #0x14
lsl r1, r1, #0xc
- blx FX_Div
+ bl FX_Div
asr r2, r0, #0x1f
lsl r3, r2, #0x14
lsr r1, r0, #0xc
@@ -46275,7 +46275,7 @@ _021ECBE0:
add r0, r4, #0
mov r1, #0
add r2, r7, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
@@ -46465,7 +46465,7 @@ _021ECD2C:
str r0, [r4, #8]
mov r1, #0
mov r2, #0x40
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -47659,7 +47659,7 @@ _021ED618:
add r0, r4, #0
mov r1, #0
mov r2, #0x20
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r6, #0
bl MOD16_021D7B48
str r0, [r4]
@@ -47827,7 +47827,7 @@ _021ED738:
str r0, [r4, #8]
mov r1, #0
mov r2, #0xc4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4, #8]
mov r1, #1
add r0, #0xb8
@@ -49282,7 +49282,7 @@ MOD16_021EE2A4: ; 0x021EE2A4
mov r3, #0
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
@@ -49297,7 +49297,7 @@ MOD16_021EE2A4: ; 0x021EE2A4
ldrsh r0, [r0, r1]
lsl r2, r2, #0xe
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
lsl r2, r2, #0xa
mov r3, #0
@@ -49717,7 +49717,7 @@ MOD16_021EE5D0: ; 0x021EE5D0
bl FUN_02003974
ldr r0, [sp, #4]
mov r1, #1
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r2, r5, #0
add r2, #0xbc
add r1, r0, #0
@@ -49742,7 +49742,7 @@ MOD16_021EE5D0: ; 0x021EE5D0
bl FUN_02003974
ldr r0, [sp, #8]
mov r1, #1
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r5, #0xc0
add r1, r0, #0
ldr r2, [r5]
@@ -50034,7 +50034,7 @@ _021EE848:
str r0, [r4, #8]
mov r1, #0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -50960,7 +50960,7 @@ MOD16_021EEF0C: ; 0x021EEF0C
add r4, r0, #0
mov r1, #0
lsl r2, r2, #2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0
add r1, r5, #0
bl MOD16_021EEFA4
@@ -51093,7 +51093,7 @@ MOD16_021EEFA4: ; 0x021EEFA4
add r2, r1, #0
ldr r0, _021EF170 ; =0x04000050
sub r2, #0x4f
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
ldr r0, [r5]
ldr r1, [r4, #0xc]
bl MOD16_021EF318
@@ -52576,7 +52576,7 @@ _021EFBAA:
add r0, r5, #0
mov r1, #0
mov r2, #0x20
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD16_021EFBA4
@@ -52623,7 +52623,7 @@ MOD16_021EFBF4: ; 0x021EFBF4
str r0, [sp]
ldr r2, _021EFC7C ; =0x00001DE0
mov r0, #0
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r0, [sp]
ldr r1, [r0, #0x2c]
mov r0, #1
@@ -52986,7 +52986,7 @@ _021EFE9C:
blt _021EFE6A
bl FUN_0201B9EC
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r0, sp, #0
ldrb r0, [r0, r1]
_021EFEB2:
@@ -53162,7 +53162,7 @@ _021EFFE6:
blt _021EFFBA
bl FUN_0201B9EC
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r0, sp, #0x10
ldrb r1, [r0, r1]
ldr r0, [sp, #4]
@@ -53234,7 +53234,7 @@ _021F0070:
blt _021F0056
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
add r0, sp, #0x1c
ldrb r3, [r0, r1]
ldr r0, _021F00DC ; =0x000003CF
@@ -53606,7 +53606,7 @@ MOD16_021F0320: ; 0x021F0320
mul r0, r1
add r1, r3, #4
ldr r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, r6
bhs _021F0370
add r0, r5, #0
@@ -53647,7 +53647,7 @@ MOD16_021F0378: ; 0x021F0378
mul r0, r1
add r1, r3, #4
ldr r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, r6
bls _021F03C8
add r0, r5, #0
@@ -53688,7 +53688,7 @@ MOD16_021F03D0: ; 0x021F03D0
mul r0, r1
add r1, r3, #4
ldr r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, r6
bne _021F0420
add r0, r5, #0
@@ -53729,7 +53729,7 @@ MOD16_021F0428: ; 0x021F0428
mul r0, r1
add r1, r3, #4
ldr r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, r6
beq _021F0478
add r0, r5, #0
@@ -59549,14 +59549,14 @@ _021F304C:
mov r0, #0x28
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
ldr r1, [sp, #0x24]
mov r0, #0xf
mul r0, r1
mov r1, #0x3f
add r4, #0x1e
- blx _s32_div_f
+ bl _s32_div_f
add r7, r0, #1
cmp r7, #9
bge _021F30EE
@@ -59578,7 +59578,7 @@ _021F30F2:
lsl r1, r1, #2
add r1, r6, r1
ldr r1, [r1, r2]
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #1
cmp r4, #0x96
ble _021F3118
@@ -59602,7 +59602,7 @@ _021F3122:
_021F3132:
bl FUN_0201B9EC
mov r1, #0xb
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0x64]
mov r2, #0xc0
mul r2, r0
@@ -59612,7 +59612,7 @@ _021F3132:
add r0, r1, #5
mov r1, #0xa
mul r0, r2
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x20]
b _021F3214
_021F3156:
@@ -59625,7 +59625,7 @@ _021F3156:
mov r0, #0xa
mul r0, r1
mov r1, #0x19
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
b _021F3214
_021F3170:
@@ -59640,13 +59640,13 @@ _021F3170:
mov r0, #0xa
mul r0, r1
mov r1, #0x19
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
b _021F3214
_021F318E:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #5
bge _021F31A0
mov r4, #0xa
@@ -59971,7 +59971,7 @@ _021F3396:
mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #1
cmp r5, #9
blt _021F3444
@@ -60215,7 +60215,7 @@ _021F3530:
mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #1
cmp r5, #9
blt _021F3606
@@ -60485,7 +60485,7 @@ _021F3730:
beq _021F37D8
bl FUN_0201B9EC
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #2
bge _021F37D8
ldr r0, [sp, #0x18]
@@ -60822,7 +60822,7 @@ _021F3A58:
beq _021F3A7E
bl FUN_0201B9EC
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #2
bge _021F3A7E
ldr r0, [sp, #0x18]
@@ -60886,7 +60886,7 @@ _021F3AE4:
beq _021F3B0A
bl FUN_0201B9EC
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #2
bge _021F3B0A
ldr r0, [sp, #0x18]
@@ -61237,7 +61237,7 @@ _021F3D78:
_021F3DC2:
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _021F3DD6
add sp, #0x30
@@ -61315,7 +61315,7 @@ _021F3E18:
_021F3E62:
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _021F3E76
add sp, #0x30
@@ -61350,7 +61350,7 @@ MOD16_021F3E90: ; 0x021F3E90
beq _021F3EB8
bl FUN_0201B9EC
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _021F3EB8
add sp, #0x14
@@ -61778,7 +61778,7 @@ _021F4182:
beq _021F4232
bl FUN_0201B9EC
ldr r1, [sp, #0x24]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _021F4232
ldr r0, [sp, #0x18]
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
new file mode 100644
index 00000000..884302f2
--- /dev/null
+++ b/arm9/modules/17/asm/module_17.s
@@ -0,0 +1,14606 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD17_021D74E0
+MOD17_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ mov r1, #8
+ bl FUN_02016998
+ lsl r6, r5, #3
+ add r4, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl FUN_02016998
+ mov r1, #0
+ add r2, r6, #0
+ str r0, [r4]
+ bl Call_FillMemWithValue
+ str r5, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D74E0
+
+ thumb_func_start MOD17_021D750C
+MOD17_021D750C: ; 0x021D750C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D750C
+
+ thumb_func_start MOD17_021D7520
+MOD17_021D7520: ; 0x021D7520
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD17_021D76E0
+ add r4, r0, #0
+ bne _021D7532
+ bl ErrorHandling
+_021D7532:
+ ldr r0, [r5, #0x18]
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD17_021D770C
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7520
+
+ thumb_func_start MOD17_021D7544
+MOD17_021D7544: ; 0x021D7544
+ push {r3, lr}
+ add r1, sp, #0
+ bl MOD17_021D7740
+ add r0, sp, #0
+ bl FUN_02020A40
+ pop {r3, pc}
+ thumb_func_end MOD17_021D7544
+
+ thumb_func_start MOD17_021D7554
+MOD17_021D7554: ; 0x021D7554
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r6, r1, #0
+ str r2, [sp]
+ add r7, r3, #0
+ bl MOD17_021D7544
+ cmp r0, #0
+ bne _021D756E
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021D756E:
+ add r0, r4, #0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021D7600
+ ldr r0, _021D75D8 ; =0x021C48F8
+ ldr r1, [sp, #8]
+ ldrh r2, [r0, #0x1c]
+ sub r1, r2, r1
+ str r1, [r6]
+ ldrh r1, [r0, #0x1e]
+ ldr r0, [sp, #4]
+ sub r1, r1, r0
+ ldr r0, [sp]
+ sub r4, r1, #4
+ str r1, [r0]
+ add r0, r1, #4
+ cmp r4, r0
+ bge _021D75D2
+_021D7594:
+ cmp r4, #0
+ blt _021D75C6
+ ldr r0, [r6]
+ sub r5, r0, #4
+ add r0, r0, #4
+ cmp r5, r0
+ bge _021D75C6
+_021D75A2:
+ cmp r5, #0
+ blt _021D75BC
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ mov r3, #0
+ bl MOD17_021D7B0C
+ cmp r0, #0
+ bne _021D75BC
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021D75BC:
+ ldr r0, [r6]
+ add r5, r5, #1
+ add r0, r0, #4
+ cmp r5, r0
+ blt _021D75A2
+_021D75C6:
+ ldr r0, [sp]
+ add r4, r4, #1
+ ldr r0, [r0]
+ add r0, r0, #4
+ cmp r4, r0
+ blt _021D7594
+_021D75D2:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D75D8: .word 0x021C48F8
+ thumb_func_end MOD17_021D7554
+
+ thumb_func_start MOD17_021D75DC
+MOD17_021D75DC: ; 0x021D75DC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r1, sp, #0
+ bl MOD17_021D7740
+ add r0, sp, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl FUN_02020AE8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D75DC
+
+ thumb_func_start MOD17_021D75F4
+MOD17_021D75F4: ; 0x021D75F4
+ ldr r3, _021D75FC ; =0x02013EC5
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D75FC: .word 0x02013EC5
+ thumb_func_end MOD17_021D75F4
+
+ thumb_func_start MOD17_021D7600
+MOD17_021D7600: ; 0x021D7600
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r0, [r0, #4]
+ add r5, r1, #0
+ add r4, r2, #0
+ bl FUN_02013ECC
+ add r1, sp, #0
+ strh r0, [r1]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #2]
+ ldrh r0, [r1]
+ strh r0, [r1, #4]
+ ldrh r0, [r1, #2]
+ strh r0, [r1, #6]
+ mov r0, #4
+ ldrsh r0, [r1, r0]
+ str r0, [r5]
+ mov r0, #6
+ ldrsh r0, [r1, r0]
+ str r0, [r4]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7600
+
+ thumb_func_start MOD17_021D7630
+MOD17_021D7630: ; 0x021D7630
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r0, [r0, #4]
+ add r5, r1, #0
+ add r4, r2, #0
+ bl FUN_02013EF0
+ add r1, sp, #0
+ strh r0, [r1]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #2]
+ ldrh r0, [r1]
+ strh r0, [r1, #4]
+ ldrh r0, [r1, #2]
+ strh r0, [r1, #6]
+ mov r0, #4
+ ldrsh r0, [r1, r0]
+ str r0, [r5]
+ mov r0, #6
+ ldrsh r0, [r1, r0]
+ str r0, [r4]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7630
+
+ thumb_func_start MOD17_021D7660
+MOD17_021D7660: ; 0x021D7660
+ ldr r3, _021D7668 ; =0x02013EB1
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D7668: .word 0x02013EB1
+ thumb_func_end MOD17_021D7660
+
+ thumb_func_start MOD17_021D766C
+MOD17_021D766C: ; 0x021D766C
+ ldr r3, _021D7674 ; =0x02013EFD
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D7674: .word 0x02013EFD
+ thumb_func_end MOD17_021D766C
+
+ thumb_func_start MOD17_021D7678
+MOD17_021D7678: ; 0x021D7678
+ ldr r3, _021D7680 ; =0x02013F01
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D7680: .word 0x02013F01
+ thumb_func_end MOD17_021D7678
+
+ thumb_func_start MOD17_021D7684
+MOD17_021D7684: ; 0x021D7684
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r4, r2, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021D7630
+ ldr r0, [sp, #4]
+ cmp r0, #0x10
+ beq _021D76A4
+ cmp r0, #0x20
+ beq _021D76AA
+ cmp r0, #0x40
+ beq _021D76B0
+ b _021D76B4
+_021D76A4:
+ mov r0, #0
+ str r0, [r5]
+ b _021D76B4
+_021D76AA:
+ mov r0, #0xa
+ str r0, [r5]
+ b _021D76B4
+_021D76B0:
+ mov r0, #0x14
+ str r0, [r5]
+_021D76B4:
+ ldr r0, [sp]
+ cmp r0, #0x10
+ beq _021D76C6
+ cmp r0, #0x20
+ beq _021D76CE
+ cmp r0, #0x40
+ beq _021D76D6
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021D76C6:
+ mov r0, #0
+ add sp, #8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D76CE:
+ mov r0, #0xa
+ add sp, #8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D76D6:
+ mov r0, #0x14
+ str r0, [r4]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7684
+
+ thumb_func_start MOD17_021D76E0
+MOD17_021D76E0: ; 0x021D76E0
+ push {r3, r4}
+ ldr r4, [r0, #4]
+ mov r1, #0
+ cmp r4, #0
+ ble _021D7704
+ ldr r3, [r0]
+ add r2, r3, #0
+_021D76EE:
+ ldr r0, [r2, #4]
+ cmp r0, #0
+ bne _021D76FC
+ lsl r0, r1, #3
+ add r0, r3, r0
+ pop {r3, r4}
+ bx lr
+_021D76FC:
+ add r1, r1, #1
+ add r2, #8
+ cmp r1, r4
+ blt _021D76EE
+_021D7704:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021D76E0
+
+ thumb_func_start MOD17_021D770C
+MOD17_021D770C: ; 0x021D770C
+ push {r3, lr}
+ sub sp, #0x20
+ ldr r1, [r0, #4]
+ mov r3, #0
+ str r1, [sp]
+ ldr r1, [r0, #8]
+ str r1, [sp, #4]
+ ldr r1, [r0, #0xc]
+ str r1, [sp, #8]
+ ldr r2, [r0, #0x10]
+ add r1, sp, #0
+ strh r2, [r1, #0xc]
+ ldr r2, [r0, #0x14]
+ strh r2, [r1, #0xe]
+ strh r3, [r1, #0x10]
+ mov r2, #0x1f
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ ldr r0, [r0, #0x1c]
+ strh r0, [r1, #0x1c]
+ add r0, sp, #0
+ bl FUN_02013E84
+ add sp, #0x20
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D770C
+
+ thumb_func_start MOD17_021D7740
+MOD17_021D7740: ; 0x021D7740
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r4, r1, #0
+ bl FUN_02013ECC
+ add r1, sp, #0
+ strh r0, [r1, #4]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #6]
+ ldrh r0, [r1, #4]
+ strh r0, [r1, #0xc]
+ ldrh r0, [r1, #6]
+ strh r0, [r1, #0xe]
+ ldr r0, [r5, #4]
+ bl FUN_02013EF0
+ add r1, sp, #0
+ strh r0, [r1]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #2]
+ ldrh r0, [r1]
+ strh r0, [r1, #8]
+ ldrh r0, [r1, #2]
+ strh r0, [r1, #0xa]
+ mov r0, #0xe
+ ldrsh r2, [r1, r0]
+ mov r0, #0xa
+ strb r2, [r4]
+ ldrsh r0, [r1, r0]
+ add r0, r2, r0
+ strb r0, [r4, #1]
+ mov r0, #0xc
+ ldrsh r2, [r1, r0]
+ mov r0, #8
+ strb r2, [r4, #2]
+ ldrsh r0, [r1, r0]
+ add r0, r2, r0
+ strb r0, [r4, #3]
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D7740
+
+ thumb_func_start MOD17_021D7794
+MOD17_021D7794: ; 0x021D7794
+ push {r3, lr}
+ bl MOD17_021D7D08
+ bl MOD17_021D7D28
+ bl MOD17_021D7DB0
+ ldr r0, _021D77B0 ; =0x021C4918
+ mov r1, #1
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ pop {r3, pc}
+ nop
+_021D77B0: .word 0x021C4918
+ thumb_func_end MOD17_021D7794
+
+ thumb_func_start MOD17_021D77B4
+MOD17_021D77B4: ; 0x021D77B4
+ push {r3, lr}
+ ldr r0, _021D77D0 ; =0x021C4918
+ mov r1, #0
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ bl MOD17_021D7E0C
+ bl MOD17_021D7E00
+ bl GX_ResetBankForTex
+ pop {r3, pc}
+ nop
+_021D77D0: .word 0x021C4918
+ thumb_func_end MOD17_021D77B4
+
+ thumb_func_start MOD17_021D77D4
+MOD17_021D77D4: ; 0x021D77D4
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ ldr r5, _021D7824 ; =0x021DE274
+ add r3, sp, #0
+ 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, r4, #0
+ add r1, r2, #0
+ bl MOD17_021D7E1C
+ mov r2, #0xa
+ add r0, r4, #0
+ mov r1, #0xe
+ lsl r2, r2, #0xa
+ mov r3, #0x20
+ bl MOD17_021D82E4
+ add r0, r4, #0
+ bl MOD17_021D8088
+ add r0, r4, #0
+ mov r1, #0xd
+ bl MOD17_021D82B8
+ add r0, r4, #0
+ bl MOD17_021D80CC
+ mov r0, #0xe
+ bl FUN_02016B94
+ str r0, [r4, #0x38]
+ add r0, r4, #0
+ bl MOD17_021D7F34
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7824: .word 0x021DE274
+ thumb_func_end MOD17_021D77D4
+
+ thumb_func_start MOD17_021D7828
+MOD17_021D7828: ; 0x021D7828
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D82D4
+ add r0, r4, #0
+ bl MOD17_021D7E58
+ add r0, r4, #0
+ bl MOD17_021D8058
+ ldr r0, [r4, #0x38]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl MOD17_021D834C
+ add r0, r4, #0
+ bl MOD17_021D816C
+ add r0, r4, #0
+ bl MOD17_021D80B4
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7828
+
+ thumb_func_start MOD17_021D786C
+MOD17_021D786C: ; 0x021D786C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020222AC
+ bl FUN_020B02C8
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _021D7884
+ add r0, r4, #0
+ bl MOD17_021D7E68
+_021D7884:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D7890
+ ldr r0, [r4, #0x20]
+ bl FUN_02006ED4
+_021D7890:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+ add r0, r4, #0
+ bl MOD17_021D8194
+ pop {r4, pc}
+ thumb_func_end MOD17_021D786C
+
+ thumb_func_start MOD17_021D78A0
+MOD17_021D78A0: ; 0x021D78A0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ add r5, r0, #0
+ bl MOD17_021D7E74
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD17_021D7ED4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D78A0
+
+ thumb_func_start MOD17_021D78BC
+MOD17_021D78BC: ; 0x021D78BC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02013DEC
+ ldr r0, [r4]
+ bl FUN_02013E5C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D78BC
+
+ thumb_func_start MOD17_021D78D0
+MOD17_021D78D0: ; 0x021D78D0
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ add r5, r0, #0
+ mov r0, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ add r4, r2, #0
+ ldr r2, [r5, #0x40]
+ add r6, r3, #0
+ str r2, [sp, #0x14]
+ ldr r2, [r5, #0x44]
+ add r3, r1, #0
+ str r2, [sp, #0x18]
+ ldr r2, [r5, #0x48]
+ str r2, [sp, #0x1c]
+ ldr r2, [r5, #0x4c]
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, sp, #0x4c
+ add r2, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [r5, #0x3c]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ lsl r0, r4, #0xc
+ str r0, [sp, #0x34]
+ lsl r0, r6, #0xc
+ str r0, [sp, #0x38]
+ mov r0, #0
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x80]
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0x84]
+ str r0, [sp, #0x44]
+ mov r0, #0xe
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D78D0
+
+ thumb_func_start MOD17_021D7934
+MOD17_021D7934: ; 0x021D7934
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x1c]
+ str r4, [sp]
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #4]
+ mov r4, #0xe
+ str r4, [sp, #8]
+ ldr r0, [r0, #0x40]
+ bl FUN_02008F34
+ bl FUN_02009B04
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7934
+
+ thumb_func_start MOD17_021D7954
+MOD17_021D7954: ; 0x021D7954
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, [sp, #0x20]
+ str r4, [sp]
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #4]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #8]
+ mov r4, #0xe
+ str r4, [sp, #0xc]
+ ldr r0, [r0, #0x44]
+ bl FUN_02008FEC
+ bl FUN_02009D68
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7954
+
+ thumb_func_start MOD17_021D7978
+MOD17_021D7978: ; 0x021D7978
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x18]
+ str r4, [sp]
+ mov r4, #2
+ str r4, [sp, #4]
+ mov r4, #0xe
+ str r4, [sp, #8]
+ ldr r0, [r0, #0x48]
+ bl FUN_020090AC
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7978
+
+ thumb_func_start MOD17_021D7994
+MOD17_021D7994: ; 0x021D7994
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x18]
+ str r4, [sp]
+ mov r4, #3
+ str r4, [sp, #4]
+ mov r4, #0xe
+ str r4, [sp, #8]
+ ldr r0, [r0, #0x4c]
+ bl FUN_020090AC
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7994
+
+ thumb_func_start MOD17_021D79B0
+MOD17_021D79B0: ; 0x021D79B0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ bl FUN_020094F0
+ add r1, r0, #0
+ ldr r0, [r4, #0x40]
+ bl FUN_02009490
+ pop {r4, pc}
+ thumb_func_end MOD17_021D79B0
+
+ thumb_func_start MOD17_021D79C4
+MOD17_021D79C4: ; 0x021D79C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x44]
+ bl FUN_020094F0
+ add r1, r0, #0
+ ldr r0, [r4, #0x44]
+ bl FUN_02009490
+ pop {r4, pc}
+ thumb_func_end MOD17_021D79C4
+
+ thumb_func_start MOD17_021D79D8
+MOD17_021D79D8: ; 0x021D79D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x48]
+ bl FUN_020094F0
+ add r1, r0, #0
+ ldr r0, [r4, #0x48]
+ bl FUN_02009490
+ pop {r4, pc}
+ thumb_func_end MOD17_021D79D8
+
+ thumb_func_start MOD17_021D79EC
+MOD17_021D79EC: ; 0x021D79EC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x4c]
+ bl FUN_020094F0
+ add r1, r0, #0
+ ldr r0, [r4, #0x4c]
+ bl FUN_02009490
+ pop {r4, pc}
+ thumb_func_end MOD17_021D79EC
+
+ thumb_func_start MOD17_021D7A00
+MOD17_021D7A00: ; 0x021D7A00
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0x76
+ mov r2, #0x13
+ mov r3, #0xe
+ bl MOD17_021D8358
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D81A0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D821C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D7A00
+
+ thumb_func_start MOD17_021D7A24
+MOD17_021D7A24: ; 0x021D7A24
+ ldr r3, _021D7A28 ; =MOD17_021D83AC
+ bx r3
+ .align 2, 0
+_021D7A28: .word MOD17_021D83AC
+ thumb_func_end MOD17_021D7A24
+
+ thumb_func_start MOD17_021D7A2C
+MOD17_021D7A2C: ; 0x021D7A2C
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ add r6, r1, #0
+ add r5, r2, #0
+ bl FUN_02020CD4
+ ldr r1, [r4, #0x30]
+ lsl r5, r5, #2
+ add r0, r6, #0
+ add r1, r1, r5
+ bl FUN_020B0088
+ ldr r0, [r4, #0x30]
+ ldr r0, [r0, r5]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021D7A2C
+
+ thumb_func_start MOD17_021D7A4C
+MOD17_021D7A4C: ; 0x021D7A4C
+ push {r3, r4}
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _021D7A78 ; =0xFFFF1FFF
+ add r3, r0, #0
+ and r1, r2
+ str r1, [r0]
+ add r3, #8
+ ldrh r4, [r3]
+ mov r2, #3
+ mov r1, #1
+ bic r4, r2
+ orr r1, r4
+ add r0, #0xa
+ strh r1, [r3]
+ ldrh r1, [r0]
+ bic r1, r2
+ strh r1, [r0]
+ pop {r3, r4}
+ bx lr
+ nop
+_021D7A78: .word 0xFFFF1FFF
+ thumb_func_end MOD17_021D7A4C
+
+ thumb_func_start MOD17_021D7A7C
+MOD17_021D7A7C: ; 0x021D7A7C
+ push {r3, r4}
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _021D7AD8 ; =0xFFFF1FFF
+ add r3, r0, #0
+ and r2, r1
+ lsr r1, r0, #0xd
+ orr r1, r2
+ str r1, [r0]
+ add r3, #0x48
+ ldrh r4, [r3]
+ mov r2, #0x3f
+ mov r1, #0x1f
+ bic r4, r2
+ orr r1, r4
+ strh r1, [r3]
+ add r3, r0, #0
+ add r3, #0x4a
+ ldrh r4, [r3]
+ mov r1, #0x12
+ bic r4, r2
+ orr r1, r4
+ strh r1, [r3]
+ add r1, r0, #0
+ ldr r2, _021D7ADC ; =0x00000AF6
+ add r1, #0x40
+ strh r2, [r1]
+ add r1, r0, #0
+ ldr r2, _021D7AE0 ; =0x0000128F
+ add r1, #0x44
+ strh r2, [r1]
+ add r2, r0, #0
+ add r2, #8
+ ldrh r3, [r2]
+ mov r1, #3
+ add r0, #0xa
+ bic r3, r1
+ strh r3, [r2]
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_021D7AD8: .word 0xFFFF1FFF
+_021D7ADC: .word 0x00000AF6
+_021D7AE0: .word 0x0000128F
+ thumb_func_end MOD17_021D7A7C
+
+ thumb_func_start MOD17_021D7AE4
+MOD17_021D7AE4: ; 0x021D7AE4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_0201AB60
+ ldr r0, [r4, #0x20]
+ bl FUN_020081C4
+ bl FUN_02009F80
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7AE4
+
+ thumb_func_start MOD17_021D7AFC
+MOD17_021D7AFC: ; 0x021D7AFC
+ push {r3, lr}
+ add r3, r1, #0
+ mov r1, #0x76
+ mov r2, #0x13
+ bl MOD17_021D8358
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7AFC
+
+ thumb_func_start MOD17_021D7B0C
+MOD17_021D7B0C: ; 0x021D7B0C
+ push {r4, r5}
+ ldrh r5, [r0, #2]
+ ldrh r4, [r0]
+ lsl r5, r5, #3
+ cmp r1, #0
+ blt _021D7B26
+ cmp r2, #0
+ blt _021D7B26
+ cmp r1, r5
+ bge _021D7B26
+ lsl r4, r4, #3
+ cmp r2, r4
+ blt _021D7B2C
+_021D7B26:
+ mov r0, #2
+ pop {r4, r5}
+ bx lr
+_021D7B2C:
+ add r4, r2, #0
+ mul r4, r5
+ add r4, r1, r4
+ lsr r5, r4, #0x1f
+ lsl r2, r4, #0x1d
+ sub r2, r2, r5
+ mov r1, #0x1d
+ ror r2, r1
+ add r1, r5, r2
+ lsl r2, r1, #2
+ add r1, r3, #0
+ ldr r3, [r0, #0x14]
+ asr r0, r4, #2
+ lsr r0, r0, #0x1d
+ add r0, r4, r0
+ asr r0, r0, #3
+ lsl r0, r0, #2
+ ldr r3, [r3, r0]
+ mov r0, #0xf
+ lsl r0, r2
+ lsl r1, r2
+ and r0, r3
+ cmp r1, r0
+ bne _021D7B62
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+_021D7B62:
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD17_021D7B0C
+
+ thumb_func_start MOD17_021D7B68
+MOD17_021D7B68: ; 0x021D7B68
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ bl MOD17_021D7E1C
+ mov r2, #0xa
+ add r0, r5, #0
+ add r1, r4, #0
+ lsl r2, r2, #0xa
+ mov r3, #0x20
+ bl MOD17_021D82E4
+ ldr r0, [r5, #0x20]
+ mov r1, #1
+ bl FUN_0200825C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D82B8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7B68
+
+ thumb_func_start MOD17_021D7B94
+MOD17_021D7B94: ; 0x021D7B94
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ ldr r3, _021D7BE0 ; =0x021DE2D8
+ add r5, r0, #0
+ str r1, [r5, #0x38]
+ add r4, r2, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #2
+ str r0, [r2]
+ ldr r0, [r5, #0x38]
+ bl FUN_020178A0
+ ldr r0, [r5, #0x38]
+ mov r1, #2
+ add r2, sp, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ ldr r0, [r5, #0x38]
+ mov r1, #2
+ bl FUN_02018744
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ nop
+_021D7BE0: .word 0x021DE2D8
+ thumb_func_end MOD17_021D7B94
+
+ thumb_func_start MOD17_021D7BE4
+MOD17_021D7BE4: ; 0x021D7BE4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D82D4
+ add r0, r4, #0
+ bl MOD17_021D7E58
+ add r0, r4, #0
+ bl MOD17_021D834C
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7BE4
+
+ thumb_func_start MOD17_021D7C10
+MOD17_021D7C10: ; 0x021D7C10
+ ldr r3, _021D7C18 ; =0x020178A1
+ ldr r0, [r0, #0x38]
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_021D7C18: .word 0x020178A1
+ thumb_func_end MOD17_021D7C10
+
+ thumb_func_start MOD17_021D7C1C
+MOD17_021D7C1C: ; 0x021D7C1C
+ ldr r3, _021D7C24 ; =0x020081C5
+ ldr r0, [r0, #0x20]
+ bx r3
+ nop
+_021D7C24: .word 0x020081C5
+ thumb_func_end MOD17_021D7C1C
+
+ thumb_func_start MOD17_021D7C28
+MOD17_021D7C28: ; 0x021D7C28
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, _021D7CAC ; =0x04000454
+ str r3, [sp]
+ mov r1, #0
+ str r1, [r0]
+ sub r0, #0x10
+ add r6, r2, #0
+ ldr r7, [sp, #0x18]
+ str r1, [r0]
+ bl FUN_020B02C8
+ ldr r1, _021D7CB0 ; =0x04000470
+ lsl r0, r4, #0xc
+ str r0, [r1]
+ lsl r0, r6, #0xc
+ str r0, [r1]
+ mov r0, #0
+ str r0, [r1]
+ ldr r0, [sp]
+ ldr r1, _021D7CB4 ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r0, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r0, [r1, r0]
+ ldrsh r1, [r1, r2]
+ bl G3_RotZ
+ ldr r2, [r7, #8]
+ ldr r1, [r7, #4]
+ ldr r3, [r7]
+ ldr r0, _021D7CB8 ; =0x0400046C
+ str r3, [r0]
+ str r1, [r0]
+ neg r1, r4
+ str r2, [r0]
+ lsl r1, r1, #0xc
+ str r1, [r0, #4]
+ neg r1, r6
+ lsl r1, r1, #0xc
+ str r1, [r0, #4]
+ mov r1, #0
+ str r1, [r0, #4]
+ sub r0, #0x28
+ str r1, [r0]
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _021D7C94
+ add r0, r5, #0
+ bl MOD17_021D7E68
+_021D7C94:
+ ldr r0, [r5, #0x24]
+ cmp r0, #0
+ beq _021D7CA0
+ ldr r0, [r5, #0x20]
+ bl FUN_02006ED4
+_021D7CA0:
+ ldr r0, _021D7CBC ; =0x04000448
+ mov r1, #1
+ str r1, [r0]
+ str r1, [r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7CAC: .word 0x04000454
+_021D7CB0: .word 0x04000470
+_021D7CB4: .word 0x020FFA38
+_021D7CB8: .word 0x0400046C
+_021D7CBC: .word 0x04000448
+ thumb_func_end MOD17_021D7C28
+
+ thumb_func_start MOD17_021D7CC0
+MOD17_021D7CC0: ; 0x021D7CC0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D80CC
+ mov r0, #0xe
+ bl FUN_02016B94
+ str r0, [r4, #0x38]
+ add r0, r4, #0
+ bl MOD17_021D7F34
+ pop {r4, pc}
+ thumb_func_end MOD17_021D7CC0
+
+ thumb_func_start MOD17_021D7CD8
+MOD17_021D7CD8: ; 0x021D7CD8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D8058
+ ldr r0, [r4, #0x38]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl MOD17_021D816C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7CD8
+
+ thumb_func_start MOD17_021D7CF0
+MOD17_021D7CF0: ; 0x021D7CF0
+ push {r3, lr}
+ ldr r0, [r0, #0x38]
+ bl FUN_0201AB60
+ bl FUN_02009F80
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7CF0
+
+ thumb_func_start MOD17_021D7D00
+MOD17_021D7D00: ; 0x021D7D00
+ ldr r3, _021D7D04 ; =MOD17_021D8194
+ bx r3
+ .align 2, 0
+_021D7D04: .word MOD17_021D8194
+ thumb_func_end MOD17_021D7D00
+
+ thumb_func_start MOD17_021D7D08
+MOD17_021D7D08: ; 0x021D7D08
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7D24 ; =0x021DE32C
+ add r3, sp, #0
+ mov r2, #5
+_021D7D12:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7D12
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7D24: .word 0x021DE32C
+ thumb_func_end MOD17_021D7D08
+
+ thumb_func_start MOD17_021D7D28
+MOD17_021D7D28: ; 0x021D7D28
+ push {r3, lr}
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r0, _021D7D9C ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ add r0, #0x58
+ ldrh r1, [r0]
+ ldr r2, _021D7DA0 ; =0xFFFFCFFD
+ and r1, r2
+ strh r1, [r0]
+ ldrh r3, [r0]
+ add r1, r2, #2
+ and r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0]
+ ldr r1, _021D7DA4 ; =0x0000CFFB
+ and r1, r3
+ strh r1, [r0]
+ add r1, r2, #2
+ ldrh r3, [r0]
+ lsr r2, r2, #0x11
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r2, _021D7DA8 ; =0x04000540
+ mov r0, #2
+ ldr r1, _021D7DAC ; =0xBFFF0000
+ str r0, [r2]
+ str r1, [r2, #0x40]
+ mov r1, #1
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ pop {r3, pc}
+ .align 2, 0
+_021D7D9C: .word 0x04000008
+_021D7DA0: .word 0xFFFFCFFD
+_021D7DA4: .word 0x0000CFFB
+_021D7DA8: .word 0x04000540
+_021D7DAC: .word 0xBFFF0000
+ thumb_func_end MOD17_021D7D28
+
+ thumb_func_start MOD17_021D7DB0
+MOD17_021D7DB0: ; 0x021D7DB0
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D7DF8 ; =0x021DE254
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7DFC ; =0xFFCFFFEF
+ and r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ str r0, [r2]
+ bl FUN_020B0FC0
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r0, #0x1f
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x13
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D7DF8: .word 0x021DE254
+_021D7DFC: .word 0xFFCFFFEF
+ thumb_func_end MOD17_021D7DB0
+
+ thumb_func_start MOD17_021D7E00
+MOD17_021D7E00: ; 0x021D7E00
+ push {r3, lr}
+ bl FUN_020AEAF4
+ bl FUN_020AEC60
+ pop {r3, pc}
+ thumb_func_end MOD17_021D7E00
+
+ thumb_func_start MOD17_021D7E0C
+MOD17_021D7E0C: ; 0x021D7E0C
+ push {r3, lr}
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ bl FUN_020B0FC0
+ pop {r3, pc}
+ thumb_func_end MOD17_021D7E0C
+
+ thumb_func_start MOD17_021D7E1C
+MOD17_021D7E1C: ; 0x021D7E1C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_02013CD4
+ str r0, [r5]
+ mov r1, #0x76
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ str r0, [r5, #4]
+ mov r0, #0x76
+ str r0, [r5, #8]
+ mov r0, #0
+ str r0, [r5, #0xc]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x4c
+ bl FUN_02016998
+ str r0, [r5, #0x10]
+ mov r0, #0x13
+ str r0, [r5, #0x14]
+ mov r0, #0
+ str r0, [r5, #0x18]
+ mov r0, #1
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7E1C
+
+ thumb_func_start MOD17_021D7E58
+MOD17_021D7E58: ; 0x021D7E58
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02013D18
+ mov r0, #0
+ str r0, [r4]
+ pop {r4, pc}
+ thumb_func_end MOD17_021D7E58
+
+ thumb_func_start MOD17_021D7E68
+MOD17_021D7E68: ; 0x021D7E68
+ ldr r3, _021D7E70 ; =0x02013D5D
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D7E70: .word 0x02013D5D
+ thumb_func_end MOD17_021D7E68
+
+ thumb_func_start MOD17_021D7E74
+MOD17_021D7E74: ; 0x021D7E74
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+ add r0, r2, #0
+ add r4, r1, #0
+ str r2, [sp]
+ cmp r0, #0
+ ble _021D7ED0
+ add r7, r5, #0
+ add r6, r4, #0
+ add r7, #0xc
+_021D7E8E:
+ ldr r1, [r5, #0xc]
+ ldr r0, [r5, #8]
+ cmp r1, r0
+ blt _021D7E9A
+ bl ErrorHandling
+_021D7E9A:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021D7EB0
+ add r0, r6, #0
+ bl FUN_02013D98
+ ldr r2, [r5, #0xc]
+ ldr r1, [r5, #4]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ b _021D7EBA
+_021D7EB0:
+ ldr r1, [r5, #0xc]
+ ldr r0, [r5, #4]
+ lsl r2, r1, #2
+ mov r1, #0
+ str r1, [r0, r2]
+_021D7EBA:
+ ldr r0, [r7]
+ add r4, #8
+ add r0, r0, #1
+ str r0, [r7]
+ ldr r0, [sp, #4]
+ add r6, #8
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [sp, #4]
+ cmp r1, r0
+ blt _021D7E8E
+_021D7ED0:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021D7E74
+
+ thumb_func_start MOD17_021D7ED4
+MOD17_021D7ED4: ; 0x021D7ED4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+ add r0, r2, #0
+ add r4, r1, #0
+ str r2, [sp]
+ cmp r0, #0
+ ble _021D7F30
+ add r7, r5, #0
+ add r6, r4, #0
+ add r7, #0x18
+_021D7EEE:
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x14]
+ cmp r1, r0
+ blt _021D7EFA
+ bl ErrorHandling
+_021D7EFA:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021D7F10
+ add r0, r6, #0
+ bl FUN_02013E14
+ ldr r2, [r5, #0x18]
+ ldr r1, [r5, #0x10]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ b _021D7F1A
+_021D7F10:
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x10]
+ lsl r2, r1, #2
+ mov r1, #0
+ str r1, [r0, r2]
+_021D7F1A:
+ ldr r0, [r7]
+ add r4, #0xc
+ add r0, r0, #1
+ str r0, [r7]
+ ldr r0, [sp, #4]
+ add r6, #0xc
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [sp, #4]
+ cmp r1, r0
+ blt _021D7EEE
+_021D7F30:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021D7ED4
+
+ thumb_func_start MOD17_021D7F34
+MOD17_021D7F34: ; 0x021D7F34
+ push {r4, r5, lr}
+ sub sp, #0x8c
+ ldr r5, _021D8044 ; =0x021DE2A0
+ add r4, r0, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x70
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _021D8048 ; =0x021DE2BC
+ 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, #2
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D804C ; =0x021DE2F4
+ 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, #3
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ ldr r5, _021D8050 ; =0x021DE284
+ 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, #4
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #4
+ bl FUN_02018744
+ ldr r5, _021D8054 ; =0x021DE310
+ 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, #5
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #5
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #5
+ bl FUN_02018744
+ add sp, #0x8c
+ pop {r4, r5, pc}
+ nop
+_021D8044: .word 0x021DE2A0
+_021D8048: .word 0x021DE2BC
+_021D804C: .word 0x021DE2F4
+_021D8050: .word 0x021DE284
+_021D8054: .word 0x021DE310
+ thumb_func_end MOD17_021D7F34
+
+ thumb_func_start MOD17_021D8058
+MOD17_021D8058: ; 0x021D8058
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x38]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x38]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x38]
+ mov r1, #5
+ bl FUN_020178A0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8058
+
+ thumb_func_start MOD17_021D8088
+MOD17_021D8088: ; 0x021D8088
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x77
+ mov r1, #0xe
+ bl FUN_02020C44
+ mov r1, #0x77
+ str r0, [r4, #0x2c]
+ mov r0, #0xe
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x77
+ mov r1, #0
+ lsl r2, r2, #2
+ str r0, [r4, #0x30]
+ bl Call_FillMemWithValue
+ mov r0, #0x77
+ str r0, [r4, #0x34]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8088
+
+ thumb_func_start MOD17_021D80B4
+MOD17_021D80B4: ; 0x021D80B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x2c]
+ bl FUN_02020C90
+ mov r0, #0
+ str r0, [r4, #0x34]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D80B4
+
+ thumb_func_start MOD17_021D80CC
+MOD17_021D80CC: ; 0x021D80CC
+ push {r4, r5, lr}
+ sub sp, #0x24
+ ldr r5, _021D8168 ; =0x021DE264
+ add r3, sp, #0x14
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r1, #0x10
+ add r0, r2, #0
+ add r2, r1, #0
+ bl FUN_0201D060
+ mov r0, #5
+ mov r1, #0xe
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7c
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x1f
+ str r3, [sp, #0xc]
+ mov r2, #0xe
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r4, #0
+ mov r0, #0x30
+ add r1, #0x50
+ mov r2, #0xe
+ bl FUN_02008C9C
+ str r0, [r4, #0x3c]
+ add r0, r4, #0
+ mov r2, #2
+ add r0, #0x50
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r0, #8
+ mov r1, #0
+ mov r2, #0xe
+ bl FUN_02008DEC
+ str r0, [r4, #0x40]
+ mov r0, #5
+ mov r1, #1
+ mov r2, #0xe
+ bl FUN_02008DEC
+ str r0, [r4, #0x44]
+ mov r0, #0x30
+ mov r1, #2
+ mov r2, #0xe
+ bl FUN_02008DEC
+ str r0, [r4, #0x48]
+ mov r0, #0x30
+ mov r1, #3
+ mov r2, #0xe
+ bl FUN_02008DEC
+ str r0, [r4, #0x4c]
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D8168: .word 0x021DE264
+ thumb_func_end MOD17_021D80CC
+
+ thumb_func_start MOD17_021D816C
+MOD17_021D816C: ; 0x021D816C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x3c]
+ bl FUN_0201FD58
+ mov r4, #0
+_021D8178:
+ ldr r0, [r5, #0x40]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D8178
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ bl FUN_02009FA0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D816C
+
+ thumb_func_start MOD17_021D8194
+MOD17_021D8194: ; 0x021D8194
+ ldr r3, _021D819C ; =0x0201FDED
+ ldr r0, [r0, #0x3c]
+ bx r3
+ nop
+_021D819C: .word 0x0201FDED
+ thumb_func_end MOD17_021D8194
+
+ thumb_func_start MOD17_021D81A0
+MOD17_021D81A0: ; 0x021D81A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r4, #0
+ add r7, r0, #0
+ add r6, r1, #0
+ add r5, r4, #0
+_021D81AC:
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x19
+ add r1, r4, #1
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02006C98
+ str r0, [sp, #4]
+ cmp r0, #0
+ bne _021D81C6
+ bl ErrorHandling
+_021D81C6:
+ ldr r1, [sp, #4]
+ add r0, r7, #0
+ add r2, r4, #0
+ bl MOD17_021D7A2C
+ ldr r1, [r6]
+ add r4, r4, #1
+ add r1, r1, r5
+ str r0, [r1, #4]
+ ldr r1, [r7]
+ ldr r0, [r6]
+ str r1, [r0, r5]
+ add r5, #8
+ cmp r4, #0x64
+ blt _021D81AC
+ mov r0, #1
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0x19
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_02006C98
+ add r4, r0, #0
+ ldr r0, [r6, #0x14]
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_02020CD4
+ ldr r1, [r6, #8]
+ add r0, r4, #0
+ add r1, r1, #4
+ bl FUN_020B0138
+ ldr r1, [r7]
+ ldr r0, [r6, #8]
+ str r1, [r0]
+ ldr r0, [r6, #8]
+ mov r1, #3
+ str r1, [r0, #8]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D81A0
+
+ thumb_func_start MOD17_021D821C
+MOD17_021D821C: ; 0x021D821C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ mov r0, #0x87
+ add r5, r1, #0
+ mov r4, #0
+ str r0, [sp, #8]
+_021D822A:
+ mov r0, #1
+ add r1, r4, #0
+ str r0, [sp]
+ mov r0, #0x19
+ add r1, #0xce
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02006C98
+ add r2, r4, #0
+ add r1, r0, #0
+ add r2, #0x64
+ add r0, r7, #0
+ lsl r6, r2, #3
+ bl MOD17_021D7A2C
+ ldr r1, [r5]
+ mov r2, #0
+ add r1, r1, r6
+ str r0, [r1, #4]
+ ldr r1, [r7]
+ ldr r0, [r5]
+ mov r3, #0xe
+ str r1, [r0, r6]
+ add r0, r4, #1
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp]
+ ldr r1, [sp, #8]
+ mov r0, #0x19
+ bl FUN_02006C98
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ bl FUN_02020CD4
+ ldr r1, [sp, #4]
+ mov r0, #0xc
+ add r6, r1, #0
+ mul r6, r0
+ ldr r1, [r5, #8]
+ ldr r0, [sp, #0xc]
+ add r1, r1, r6
+ add r1, r1, #4
+ bl FUN_020B0138
+ ldr r0, [r5, #8]
+ add r0, r0, r6
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _021D8298
+ bl ErrorHandling
+_021D8298:
+ ldr r1, [r7]
+ ldr r0, [r5, #8]
+ add r4, r4, #1
+ str r1, [r0, r6]
+ ldr r0, [r5, #8]
+ add r1, r0, r6
+ mov r0, #1
+ str r0, [r1, #8]
+ ldr r0, [sp, #8]
+ add r0, r0, #4
+ str r0, [sp, #8]
+ cmp r4, #0x12
+ blt _021D822A
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D821C
+
+ thumb_func_start MOD17_021D82B8
+MOD17_021D82B8: ; 0x021D82B8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r3, r1, #0
+ mov r2, #0
+ mov r0, #0x19
+ mov r1, #0xeb
+ str r2, [sp]
+ bl FUN_02006C98
+ str r0, [r4, #0x28]
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D82B8
+
+ thumb_func_start MOD17_021D82D4
+MOD17_021D82D4: ; 0x021D82D4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x28]
+ pop {r4, pc}
+ thumb_func_end MOD17_021D82D4
+
+ thumb_func_start MOD17_021D82E4
+MOD17_021D82E4: ; 0x021D82E4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_02006D98
+ str r0, [r5, #0x20]
+ ldr r3, _021D833C ; =0x021064B8
+ mov r1, #0
+ ldr r3, [r3]
+ add r0, r4, #0
+ add r2, r1, #0
+ blx r3
+ ldr r3, _021D8340 ; =0x021064C0
+ add r4, r0, #0
+ ldr r3, [r3]
+ add r0, r6, #0
+ mov r1, #0
+ mov r2, #1
+ blx r3
+ ldr r2, _021D8344 ; =0x7FFF0000
+ add r6, r0, #0
+ and r2, r4
+ lsl r1, r4, #0x10
+ lsr r2, r2, #0x10
+ ldr r0, [r5, #0x20]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #4
+ bl FUN_020081A8
+ ldr r2, _021D8348 ; =0xFFFF0000
+ lsl r1, r6, #0x10
+ and r2, r6
+ lsr r2, r2, #0x10
+ ldr r0, [r5, #0x20]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #3
+ bl FUN_020081B4
+ mov r0, #1
+ str r0, [r5, #0x24]
+ pop {r4, r5, r6, pc}
+ nop
+_021D833C: .word 0x021064B8
+_021D8340: .word 0x021064C0
+_021D8344: .word 0x7FFF0000
+_021D8348: .word 0xFFFF0000
+ thumb_func_end MOD17_021D82E4
+
+ thumb_func_start MOD17_021D834C
+MOD17_021D834C: ; 0x021D834C
+ ldr r3, _021D8354 ; =0x020072E9
+ ldr r0, [r0, #0x20]
+ bx r3
+ nop
+_021D8354: .word 0x020072E9
+ thumb_func_end MOD17_021D834C
+
+ thumb_func_start MOD17_021D8358
+MOD17_021D8358: ; 0x021D8358
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ lsl r0, r4, #3
+ str r0, [sp]
+ add r7, r3, #0
+ ldr r1, [sp]
+ add r0, r7, #0
+ add r6, r2, #0
+ bl FUN_02016998
+ ldr r2, [sp]
+ mov r1, #0
+ str r0, [r5]
+ bl Call_FillMemWithValue
+ add r0, r4, #0
+ add r1, r7, #0
+ bl FUN_02020C44
+ str r0, [r5, #0x10]
+ str r4, [r5, #4]
+ mov r0, #0xc
+ add r4, r6, #0
+ mul r4, r0
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02016998
+ mov r1, #0
+ add r2, r4, #0
+ str r0, [r5, #8]
+ bl Call_FillMemWithValue
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_02020C44
+ str r0, [r5, #0x14]
+ str r6, [r5, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8358
+
+ thumb_func_start MOD17_021D83AC
+MOD17_021D83AC: ; 0x021D83AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021D83BE
+ bl FUN_02020C90
+ mov r0, #0
+ str r0, [r4, #0x10]
+_021D83BE:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021D83CC
+ bl FUN_02020C90
+ mov r0, #0
+ str r0, [r4, #0x14]
+_021D83CC:
+ ldr r0, [r4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D83AC
+
+ thumb_func_start MOD17_021D83E4
+MOD17_021D83E4: ; 0x021D83E4
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ mov r2, #2
+ add r4, r0, #0
+ mov r0, #3
+ mov r1, #0xd
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0xe
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ ldr r1, _021D84D8 ; =0x000006D8
+ add r0, r4, #0
+ mov r2, #0xd
+ bl FUN_02006268
+ ldr r2, _021D84D8 ; =0x000006D8
+ mov r1, #0
+ add r5, r0, #0
+ bl Call_FillMemWithValue
+ ldr r0, _021D84DC ; =MOD17_021D8FC8
+ add r1, r5, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ add r0, r4, #0
+ bl FUN_0200628C
+ add r4, r0, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021D84E0 ; =0x000006C8
+ str r1, [r5, r0]
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ ldr r0, [r4, #8]
+ add r1, r5, r1
+ bl MOD17_021DAFA4
+ add r0, r5, #0
+ bl MOD17_021D8D60
+ mov r1, #0x35
+ lsl r1, r1, #4
+ add r0, r5, r1
+ sub r1, #0x81
+ mov r2, #0xd
+ bl MOD17_021DB9F4
+ mov r0, #0xaf
+ lsl r0, r0, #2
+ mov r1, #0xd
+ bl MOD17_021D74E0
+ mov r1, #0xd6
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r1, [r4]
+ add r0, r5, #0
+ mov r2, #0xa
+ bl MOD17_021D8DA8
+ add r0, r5, #0
+ bl MOD17_021D8E84
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD17_021D8FD0
+ add r0, r5, #0
+ bl MOD17_021D9024
+ ldr r1, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD17_021D9228
+ ldr r0, _021D84E4 ; =0x00000554
+ mov r2, #0xfa
+ add r1, r5, r0
+ str r1, [sp]
+ mov r1, #1
+ sub r0, #0xc8
+ lsl r2, r2, #2
+ str r1, [sp, #4]
+ add r1, r5, r2
+ sub r2, #0x8c
+ add r0, r5, r0
+ add r2, r5, r2
+ add r3, r5, #0
+ bl MOD17_021DB038
+ mov r0, #0xd
+ bl FUN_02014590
+ ldr r1, _021D84E8 ; =0x000006A4
+ str r0, [r5, r1]
+ mov r0, #0xd
+ mov r1, #1
+ bl FUN_02018FF4
+ ldr r2, _021D84EC ; =0x000006A8
+ mov r1, #0
+ str r0, [r5, r2]
+ sub r2, #0xc
+ str r1, [r5, r2]
+ mov r0, #0x35
+ add r2, r1, #0
+ bl FUN_0200433C
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D84D8: .word 0x000006D8
+_021D84DC: .word MOD17_021D8FC8
+_021D84E0: .word 0x000006C8
+_021D84E4: .word 0x00000554
+_021D84E8: .word 0x000006A4
+_021D84EC: .word 0x000006A8
+ thumb_func_end MOD17_021D83E4
+
+ thumb_func_start MOD17_021D84F0
+MOD17_021D84F0: ; 0x021D84F0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ add r0, r7, #0
+ mov r6, #0
+ bl FUN_0200628C
+ ldr r1, [r5]
+ cmp r1, #0xc
+ bhi _021D85BA
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8518: ; jump table
+ .short _021D8532 - _021D8518 - 2 ; case 0
+ .short _021D8532 - _021D8518 - 2 ; case 1
+ .short _021D854E - _021D8518 - 2 ; case 2
+ .short _021D855E - _021D8518 - 2 ; case 3
+ .short _021D858A - _021D8518 - 2 ; case 4
+ .short _021D85AA - _021D8518 - 2 ; case 5
+ .short _021D85D8 - _021D8518 - 2 ; case 6
+ .short _021D860C - _021D8518 - 2 ; case 7
+ .short _021D8636 - _021D8518 - 2 ; case 8
+ .short _021D8678 - _021D8518 - 2 ; case 9
+ .short _021D86B2 - _021D8518 - 2 ; case 10
+ .short _021D86D4 - _021D8518 - 2 ; case 11
+ .short _021D86F2 - _021D8518 - 2 ; case 12
+_021D8532:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0xd
+ str r1, [sp, #8]
+ mov r1, #5
+ add r2, r1, #0
+ add r3, r6, #0
+ bl FUN_0200E1D0
+ mov r0, #2
+ str r0, [r5]
+ b _021D8710
+_021D854E:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D85BA
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D855E:
+ ldr r0, [r0, #0x1c]
+ cmp r0, #1
+ bne _021D8584
+ mov r0, #1
+ bl FUN_02002BB8
+ ldr r0, _021D871C ; =0x00000554
+ ldr r2, _021D8720 ; =0x00000151
+ add r0, r4, r0
+ mov r1, #0x1a
+ mov r3, #0x2f
+ bl MOD17_021DCB80
+ ldr r1, _021D8724 ; =0x000006CC
+ str r0, [r4, r1]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D8584:
+ mov r0, #6
+ str r0, [r5]
+ b _021D8710
+_021D858A:
+ ldr r0, _021D8724 ; =0x000006CC
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D85BA
+ ldr r0, _021D871C ; =0x00000554
+ add r0, r4, r0
+ bl MOD17_021DCBC0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D85AA:
+ ldr r0, _021D8728 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ and r1, r0
+ ldr r0, _021D872C ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ orr r0, r1
+ bne _021D85BC
+_021D85BA:
+ b _021D8710
+_021D85BC:
+ ldr r0, _021D871C ; =0x00000554
+ ldr r2, _021D8720 ; =0x00000151
+ add r0, r4, r0
+ mov r1, #0x1a
+ mov r3, #0x30
+ bl MOD17_021DCB48
+ add r0, r6, #0
+ bl FUN_02002BB8
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D85D8:
+ ldr r1, _021D8730 ; =0x0000069C
+ ldr r0, [r4, r1]
+ cmp r0, #3
+ bne _021D85EE
+ add r1, r1, #4
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD17_021D92BC
+ mov r0, #7
+ str r0, [r5]
+_021D85EE:
+ ldr r0, _021D8734 ; =0x0000048C
+ add r0, r4, r0
+ bl MOD17_021DAF64
+ add r0, r4, #0
+ bl MOD17_021D9BE8
+ ldr r0, _021D871C ; =0x00000554
+ add r0, r4, r0
+ bl MOD17_021DCB30
+ add r0, r4, #0
+ bl MOD17_021D9140
+ b _021D8710
+_021D860C:
+ mov r0, #0x6a
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D8710
+ add r1, r6, #0
+ str r1, [r4, r0]
+ mov r1, #8
+ str r1, [r5]
+ mov r1, #4
+ sub r0, r0, #4
+ str r1, [r4, r0]
+ mov r1, #0x47
+ lsl r1, r1, #4
+ add r0, r4, r1
+ sub r1, #0x88
+ add r1, r4, r1
+ mov r2, #0xe
+ bl MOD17_021DD464
+ b _021D8710
+_021D8636:
+ ldr r1, _021D8730 ; =0x0000069C
+ ldr r0, [r4, r1]
+ cmp r0, #9
+ bne _021D864E
+ add r1, r1, #4
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD17_021D942C
+ mov r0, #0xa
+ str r0, [r5]
+ b _021D8710
+_021D864E:
+ cmp r0, #8
+ bne _021D8662
+ mov r0, #9
+ str r0, [r5]
+ mov r0, #5
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD17_021D9C3C
+ b _021D8710
+_021D8662:
+ add r0, r4, #0
+ bl MOD17_021D98F0
+ ldr r1, _021D8730 ; =0x0000069C
+ str r0, [r4, r1]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD17_021DD488
+ b _021D8710
+_021D8678:
+ ldr r0, _021D8730 ; =0x0000069C
+ ldr r1, [r4, r0]
+ cmp r1, #6
+ bne _021D868C
+ mov r1, #1
+ add r0, #0x10
+ str r1, [r4, r0]
+ mov r0, #0xb
+ str r0, [r5]
+ b _021D8710
+_021D868C:
+ cmp r1, #7
+ bne _021D869C
+ add r1, r6, #0
+ add r0, #0x10
+ str r1, [r4, r0]
+ mov r0, #0xb
+ str r0, [r5]
+ b _021D8710
+_021D869C:
+ add r0, r4, #0
+ bl MOD17_021D9CAC
+ ldr r1, _021D8730 ; =0x0000069C
+ str r0, [r4, r1]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD17_021DD488
+ b _021D8710
+_021D86B2:
+ mov r0, #0x6a
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D8710
+ add r2, r6, #0
+ str r2, [r4, r0]
+ mov r1, #6
+ str r1, [r5]
+ sub r0, r0, #4
+ str r2, [r4, r0]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD17_021DD494
+ b _021D8710
+_021D86D4:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0xd
+ str r1, [sp, #8]
+ add r1, r6, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D86F2:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8710
+ add r0, r6, #0
+ str r0, [r5]
+ ldr r0, _021D8730 ; =0x0000069C
+ mov r1, #0xa
+ str r1, [r4, r0]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ add r0, r4, r0
+ mov r6, #1
+ bl MOD17_021DD494
+_021D8710:
+ add r0, r4, #0
+ bl MOD17_021D8D8C
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D871C: .word 0x00000554
+_021D8720: .word 0x00000151
+_021D8724: .word 0x000006CC
+_021D8728: .word 0x021C48B8
+_021D872C: .word 0x021C48F8
+_021D8730: .word 0x0000069C
+_021D8734: .word 0x0000048C
+ thumb_func_end MOD17_021D84F0
+
+ thumb_func_start MOD17_021D8738
+MOD17_021D8738: ; 0x021D8738
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ add r0, r6, #0
+ bl FUN_0200628C
+ add r5, r0, #0
+ ldr r0, _021D8808 ; =0x000006AC
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D8768
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ bl FUN_0202A170
+ mov r1, #0xfa
+ lsl r1, r1, #2
+ ldr r0, [r5, #4]
+ ldr r2, [r5, #0x14]
+ add r1, r4, r1
+ bl MOD17_021D95AC
+_021D8768:
+ ldr r1, [r5, #0x18]
+ cmp r1, #0
+ beq _021D8780
+ ldr r0, _021D8808 ; =0x000006AC
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D877C
+ mov r0, #1
+ str r0, [r1]
+ b _021D8780
+_021D877C:
+ mov r0, #0
+ str r0, [r1]
+_021D8780:
+ ldr r0, _021D880C ; =0x000006A4
+ ldr r0, [r4, r0]
+ bl FUN_020145A8
+ ldr r0, _021D8810 ; =0x000006A8
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_020191A4
+ add r0, r4, #0
+ bl MOD17_021D92AC
+ ldr r0, _021D8814 ; =0x0000048C
+ add r0, r4, r0
+ bl MOD17_021DB08C
+ add r0, r4, #0
+ bl MOD17_021D912C
+ add r0, r4, #0
+ bl MOD17_021D9014
+ add r0, r4, #0
+ bl MOD17_021D8E60
+ add r0, r4, #0
+ bl MOD17_021D8F40
+ mov r0, #0xd6
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD17_021D750C
+ mov r0, #0xd6
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, #8
+ add r0, r4, r0
+ bl MOD17_021DBA1C
+ add r0, r4, #0
+ bl MOD17_021D8D94
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201CD04
+ cmp r0, #1
+ beq _021D87F0
+ bl ErrorHandling
+_021D87F0:
+ add r0, r6, #0
+ bl FUN_0200627C
+ mov r0, #0xd
+ bl FUN_020168D0
+ mov r0, #0xe
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_021D8808: .word 0x000006AC
+_021D880C: .word 0x000006A4
+_021D8810: .word 0x000006A8
+_021D8814: .word 0x0000048C
+ thumb_func_end MOD17_021D8738
+
+ thumb_func_start MOD17_021D8818
+MOD17_021D8818: ; 0x021D8818
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ mov r2, #2
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0xd
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0xe
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ ldr r1, _021D897C ; =0x000006D8
+ add r0, r5, #0
+ mov r2, #0xd
+ bl FUN_02006268
+ ldr r2, _021D897C ; =0x000006D8
+ mov r1, #0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ ldr r0, _021D8980 ; =MOD17_021D8FC8
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ ldr r1, _021D8984 ; =0x000006B4
+ str r0, [r4, r1]
+ ldr r2, [r5, #0x10]
+ add r0, r1, #4
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, [r5, #0x14]
+ add r0, #8
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, [r5, #8]
+ add r0, #0xc
+ str r2, [r4, r0]
+ ldr r0, [r5, #0x1c]
+ add r1, #0x10
+ str r0, [r4, r1]
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ ldr r0, [r5, #0x18]
+ add r1, r4, r1
+ bl MOD17_021DAFA4
+ add r0, r4, #0
+ bl MOD17_021D8D60
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_0201FD98
+ bl FUN_02033E74
+ mov r0, #1
+ mov r1, #0x10
+ bl FUN_02008D44
+ mov r0, #1
+ bl FUN_02008DDC
+ mov r1, #0x35
+ lsl r1, r1, #4
+ add r0, r4, r1
+ sub r1, #0x81
+ mov r2, #0xd
+ bl MOD17_021DB9F4
+ mov r0, #0xaf
+ lsl r0, r0, #2
+ mov r1, #0xd
+ bl MOD17_021D74E0
+ mov r1, #0xd6
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r1, [r5, #0x20]
+ ldr r0, _021D8988 ; =0x000006C8
+ str r1, [r4, r0]
+ sub r1, r0, #4
+ ldr r1, [r4, r1]
+ ldrb r1, [r1, #0x16]
+ cmp r1, #0
+ bne _021D88F2
+ ldr r0, [r5, #0xc]
+ bl MOD17_021D9C08
+ mov r1, #0x6b
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ b _021D88F8
+_021D88F2:
+ mov r1, #0x14
+ sub r0, #0x18
+ str r1, [r4, r0]
+_021D88F8:
+ mov r2, #0x6b
+ lsl r2, r2, #4
+ ldr r1, [r5]
+ ldr r2, [r4, r2]
+ add r0, r4, #0
+ bl MOD17_021D8E18
+ add r0, r4, #0
+ bl MOD17_021D8E84
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD17_021D8FD0
+ add r0, r4, #0
+ bl MOD17_021D90A8
+ ldr r0, [r5, #0x20]
+ mov r1, #0x6b
+ str r0, [sp]
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ ldr r2, [r5, #8]
+ ldr r3, [r5, #0x1c]
+ add r0, r4, #0
+ bl MOD17_021D926C
+ ldr r0, _021D898C ; =0x00000554
+ mov r2, #0xfa
+ add r1, r4, r0
+ str r1, [sp]
+ mov r1, #0
+ sub r0, #0xc8
+ lsl r2, r2, #2
+ str r1, [sp, #4]
+ add r1, r4, r2
+ sub r2, #0x8c
+ add r0, r4, r0
+ add r2, r4, r2
+ add r3, r4, #0
+ bl MOD17_021DB038
+ mov r0, #0xd
+ bl FUN_02014590
+ ldr r1, _021D8990 ; =0x000006A4
+ str r0, [r4, r1]
+ mov r0, #0xd
+ mov r1, #1
+ bl FUN_02018FF4
+ ldr r1, _021D8994 ; =0x000006A8
+ mov r2, #0
+ str r0, [r4, r1]
+ add r0, r1, #0
+ sub r0, #0xc
+ add r1, #0x1c
+ str r2, [r4, r0]
+ ldr r0, [r4, r1]
+ ldrb r0, [r0, #0x16]
+ bl FUN_020833D4
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_021D897C: .word 0x000006D8
+_021D8980: .word MOD17_021D8FC8
+_021D8984: .word 0x000006B4
+_021D8988: .word 0x000006C8
+_021D898C: .word 0x00000554
+_021D8990: .word 0x000006A4
+_021D8994: .word 0x000006A8
+ thumb_func_end MOD17_021D8818
+
+ thumb_func_start MOD17_021D8998
+MOD17_021D8998: ; 0x021D8998
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ bl FUN_02006278
+ ldr r1, [r4]
+ add r5, r0, #0
+ mov r6, #0
+ cmp r1, #0x14
+ bhi _021D89FA
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D89B8: ; jump table
+ .short _021D89E2 - _021D89B8 - 2 ; case 0
+ .short _021D89F2 - _021D89B8 - 2 ; case 1
+ .short _021D8A04 - _021D89B8 - 2 ; case 2
+ .short _021D8A3C - _021D89B8 - 2 ; case 3
+ .short _021D8A5A - _021D89B8 - 2 ; case 4
+ .short _021D8A72 - _021D89B8 - 2 ; case 5
+ .short _021D8A90 - _021D89B8 - 2 ; case 6
+ .short _021D8AB2 - _021D89B8 - 2 ; case 7
+ .short _021D8AD0 - _021D89B8 - 2 ; case 8
+ .short _021D8AE8 - _021D89B8 - 2 ; case 9
+ .short _021D8B0A - _021D89B8 - 2 ; case 10
+ .short _021D8B1C - _021D89B8 - 2 ; case 11
+ .short _021D8B3A - _021D89B8 - 2 ; case 12
+ .short _021D8B56 - _021D89B8 - 2 ; case 13
+ .short _021D8BBC - _021D89B8 - 2 ; case 14
+ .short _021D8BEA - _021D89B8 - 2 ; case 15
+ .short _021D8C64 - _021D89B8 - 2 ; case 16
+ .short _021D8C64 - _021D89B8 - 2 ; case 17
+ .short _021D8C64 - _021D89B8 - 2 ; case 18
+ .short _021D8C04 - _021D89B8 - 2 ; case 19
+ .short _021D8C34 - _021D89B8 - 2 ; case 20
+_021D89E2:
+ mov r0, #0x2a
+ mov r1, #0x1e
+ bl FUN_020053CC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D89F2:
+ bl FUN_02005404
+ cmp r0, #0
+ beq _021D89FC
+_021D89FA:
+ b _021D8C64
+_021D89FC:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A04:
+ bl MOD17_021D9778
+ mov r2, #0x6b
+ lsl r2, r2, #4
+ ldr r2, [r5, r2]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD17_021D9BA4
+ ldr r0, _021D8C70 ; =0x000006B8
+ ldr r0, [r5, r0]
+ cmp r0, #3
+ beq _021D8A28
+ add r0, r5, #0
+ mov r1, #0x1a
+ bl MOD17_021D9B9C
+ b _021D8A30
+_021D8A28:
+ add r0, r5, #0
+ mov r1, #0x1c
+ bl MOD17_021D9B9C
+_021D8A30:
+ ldr r1, _021D8C74 ; =0x000006CC
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A3C:
+ ldr r0, _021D8C74 ; =0x000006CC
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8B42
+ add r0, r5, #0
+ bl MOD17_021D9BC4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A5A:
+ mov r1, #0x1b
+ lsl r1, r1, #6
+ ldr r1, [r5, r1]
+ add r1, #0x1d
+ bl MOD17_021D9B9C
+ ldr r1, _021D8C74 ; =0x000006CC
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A72:
+ ldr r0, _021D8C74 ; =0x000006CC
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8B42
+ add r0, r5, #0
+ bl MOD17_021D9BC4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A90:
+ ldr r1, _021D8C70 ; =0x000006B8
+ ldr r1, [r5, r1]
+ cmp r1, #3
+ beq _021D8AA0
+ mov r1, #0x2a
+ bl MOD17_021D9B9C
+ b _021D8AA6
+_021D8AA0:
+ mov r1, #0x29
+ bl MOD17_021D9B9C
+_021D8AA6:
+ ldr r1, _021D8C74 ; =0x000006CC
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8AB2:
+ ldr r0, _021D8C74 ; =0x000006CC
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8B42
+ add r0, r5, #0
+ bl MOD17_021D9BC4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8AD0:
+ ldr r0, _021D8C78 ; =0x000006C4
+ ldr r0, [r5, r0]
+ ldrb r0, [r0, #0x16]
+ cmp r0, #0
+ beq _021D8AE0
+ mov r0, #2
+ bl FUN_02031588
+_021D8AE0:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8AE8:
+ ldr r0, _021D8C78 ; =0x000006C4
+ ldr r0, [r5, r0]
+ ldrb r0, [r0, #0x16]
+ cmp r0, #0
+ beq _021D8B04
+ mov r0, #2
+ bl FUN_020315D8
+ cmp r0, #0
+ beq _021D8B42
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B04:
+ add r0, r1, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B0A:
+ bl MOD17_021D9800
+ ldr r0, _021D8C7C ; =0x00000643
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B1C:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0xd
+ str r1, [sp, #8]
+ mov r1, #0x11
+ mov r2, #0x13
+ add r3, r6, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B3A:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D8B44
+_021D8B42:
+ b _021D8C64
+_021D8B44:
+ ldr r1, _021D8C80 ; =0x00000491
+ mov r0, #7
+ add r2, r6, #0
+ bl FUN_0200433C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B56:
+ ldr r0, _021D8C84 ; =0x0000069C
+ ldr r1, [r5, r0]
+ cmp r1, #3
+ bne _021D8B86
+ add r0, #0x28
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02083A7C
+ ldr r0, _021D8C78 ; =0x000006C4
+ ldr r0, [r5, r0]
+ ldrb r0, [r0, #0x16]
+ cmp r0, #0
+ beq _021D8B80
+ ldr r0, _021D8C88 ; =0x00000554
+ ldr r2, _021D8C8C ; =0x00000151
+ add r0, r5, r0
+ mov r1, #0x1a
+ mov r3, #0x2e
+ bl MOD17_021DCB48
+_021D8B80:
+ mov r0, #0xe
+ str r0, [r4]
+ b _021D8C64
+_021D8B86:
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCBE4
+ cmp r0, #0
+ bne _021D8B9E
+ mov r0, #0xf
+ str r0, [r4]
+ mov r0, #0x1a
+ lsl r0, r0, #6
+ bl FUN_020054C8
+_021D8B9E:
+ ldr r0, _021D8C90 ; =0x0000048C
+ add r0, r5, r0
+ bl MOD17_021DAF64
+ add r0, r5, #0
+ bl MOD17_021D9BE8
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCB30
+ add r0, r5, #0
+ bl MOD17_021D9140
+ b _021D8C64
+_021D8BBC:
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCBE4
+ cmp r0, #0
+ bne _021D8BD4
+ mov r0, #0xf
+ str r0, [r4]
+ mov r0, #0x1a
+ lsl r0, r0, #6
+ bl FUN_020054C8
+_021D8BD4:
+ add r0, r5, #0
+ bl MOD17_021D9BE8
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCB30
+ add r0, r5, #0
+ bl MOD17_021D9E28
+ b _021D8C64
+_021D8BEA:
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCB30
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCBF4
+ cmp r0, #0
+ beq _021D8C64
+ mov r0, #0x13
+ str r0, [r4]
+ b _021D8C64
+_021D8C04:
+ mov r0, #0x1a
+ lsl r0, r0, #6
+ bl FUN_02005508
+ cmp r0, #1
+ beq _021D8C64
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0xd
+ str r1, [sp, #8]
+ mov r1, #0x1a
+ add r2, r1, #0
+ add r3, r6, #0
+ bl FUN_0200E1D0
+ ldr r0, _021D8C94 ; =0x00000684
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8C34:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8C64
+ add r0, r6, #0
+ str r0, [r4]
+ mov r2, #1
+ ldr r0, _021D8C84 ; =0x0000069C
+ mov r1, #0xa
+ str r1, [r5, r0]
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D8C98 ; =0xFFFF1FFF
+ mov r6, #1
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r1, r6, #0
+ add r0, r5, r0
+ sub r1, #0x41
+ mov r2, #0x28
+ bl MOD17_021DA118
+_021D8C64:
+ add r0, r5, #0
+ bl MOD17_021D8D8C
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D8C70: .word 0x000006B8
+_021D8C74: .word 0x000006CC
+_021D8C78: .word 0x000006C4
+_021D8C7C: .word 0x00000643
+_021D8C80: .word 0x00000491
+_021D8C84: .word 0x0000069C
+_021D8C88: .word 0x00000554
+_021D8C8C: .word 0x00000151
+_021D8C90: .word 0x0000048C
+_021D8C94: .word 0x00000684
+_021D8C98: .word 0xFFFF1FFF
+ thumb_func_end MOD17_021D8998
+
+ thumb_func_start MOD17_021D8C9C
+MOD17_021D8C9C: ; 0x021D8C9C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200628C
+ ldr r2, _021D8D50 ; =0x000006B4
+ add r3, r0, #0
+ mov r1, #0xfa
+ ldr r0, [r3, #4]
+ lsl r1, r1, #2
+ ldr r2, [r4, r2]
+ ldr r3, [r3, #0x24]
+ add r1, r4, r1
+ bl MOD17_021D964C
+ ldr r0, _021D8D54 ; =0x000006A4
+ ldr r0, [r4, r0]
+ bl FUN_020145A8
+ ldr r0, _021D8D58 ; =0x000006A8
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_020191A4
+ add r0, r4, #0
+ bl MOD17_021D92AC
+ ldr r0, _021D8D5C ; =0x0000048C
+ add r0, r4, r0
+ bl MOD17_021DB08C
+ add r0, r4, #0
+ bl MOD17_021D912C
+ add r0, r4, #0
+ bl MOD17_021D9014
+ add r0, r4, #0
+ bl MOD17_021D8E60
+ add r0, r4, #0
+ bl MOD17_021D8F40
+ mov r0, #0xd6
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD17_021D750C
+ mov r0, #0xd6
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, #8
+ add r0, r4, r0
+ bl MOD17_021DBA1C
+ add r0, r4, #0
+ bl MOD17_021D8D94
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201CD04
+ cmp r0, #1
+ beq _021D8D30
+ bl ErrorHandling
+_021D8D30:
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0xd
+ bl FUN_020168D0
+ mov r0, #0xe
+ bl FUN_020168D0
+ bl FUN_02083404
+ bl FUN_02033ED0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021D8D50: .word 0x000006B4
+_021D8D54: .word 0x000006A4
+_021D8D58: .word 0x000006A8
+_021D8D5C: .word 0x0000048C
+ thumb_func_end MOD17_021D8C9C
+
+ thumb_func_start MOD17_021D8D60
+MOD17_021D8D60: ; 0x021D8D60
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ bl MOD17_021D7794
+ add r0, r4, #0
+ bl MOD17_021D77D4
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD17_021D7A00
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD17_021D78A0
+ add r0, sp, #0
+ bl MOD17_021D7A24
+ add sp, #0x18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8D60
+
+ thumb_func_start MOD17_021D8D8C
+MOD17_021D8D8C: ; 0x021D8D8C
+ ldr r3, _021D8D90 ; =MOD17_021D786C
+ bx r3
+ .align 2, 0
+_021D8D90: .word MOD17_021D786C
+ thumb_func_end MOD17_021D8D8C
+
+ thumb_func_start MOD17_021D8D94
+MOD17_021D8D94: ; 0x021D8D94
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D78BC
+ add r0, r4, #0
+ bl MOD17_021D7828
+ bl MOD17_021D77B4
+ pop {r4, pc}
+ thumb_func_end MOD17_021D8D94
+
+ thumb_func_start MOD17_021D8DA8
+MOD17_021D8DA8: ; 0x021D8DA8
+ push {r4, r5, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ mov r1, #0xd6
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x10]
+ lsl r1, r1, #2
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x38]
+ str r2, [sp, #0x30]
+ str r0, [sp, #0x24]
+ ldr r0, [r5, r1]
+ str r0, [sp, #0x28]
+ add r0, r1, #0
+ sub r0, #8
+ add r0, r5, r0
+ add r1, #0x90
+ str r0, [sp, #0x2c]
+ add r0, r5, r1
+ add r1, sp, #0x10
+ bl MOD17_021D9F80
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r1, r4, #0
+ add r2, sp, #0
+ mov r3, #0xe
+ bl MOD17_021DA024
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MOD17_021DB6D8
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl MOD17_021DA178
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ mov r2, #0xe
+ bl MOD17_021DA2F0
+ add sp, #0x34
+ pop {r4, r5, pc}
+ thumb_func_end MOD17_021D8DA8
+
+ thumb_func_start MOD17_021D8E18
+MOD17_021D8E18: ; 0x021D8E18
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ bl MOD17_021D8DA8
+ mov r0, #0x46
+ lsl r0, r0, #4
+ add r0, r4, r0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DB878
+ mov r0, #0x46
+ lsl r0, r0, #4
+ add r0, r4, r0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DB960
+ ldr r3, [sp, #8]
+ mov r0, #0x46
+ lsr r2, r3, #0x1f
+ add r2, r3, r2
+ asr r3, r2, #1
+ ldr r2, [sp]
+ lsl r0, r0, #4
+ sub r3, r3, r2
+ mov r2, #0x8d
+ add r0, r4, r0
+ mov r1, #0xc0
+ sub r2, r2, r3
+ bl MOD17_021DB7F4
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8E18
+
+ thumb_func_start MOD17_021D8E60
+MOD17_021D8E60: ; 0x021D8E60
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA33C
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA100
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021D9FD4
+ pop {r4, pc}
+ thumb_func_end MOD17_021D8E60
+
+ thumb_func_start MOD17_021D8E84
+MOD17_021D8E84: ; 0x021D8E84
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r0, [r5]
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x38]
+ str r0, [sp, #0x10]
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x28]
+ mov r0, #0xd6
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ str r1, [sp, #0x14]
+ add r1, r0, #0
+ sub r1, #8
+ add r1, r5, r1
+ str r1, [sp, #0x18]
+ mov r1, #0xe
+ str r1, [sp, #0x1c]
+ mov r1, #2
+ str r1, [sp, #0x20]
+ mov r1, #1
+ add r0, r0, #4
+ str r1, [sp, #0x24]
+ add r0, r5, r0
+ add r1, sp, #0
+ bl MOD17_021DA5A8
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ mov r1, #0
+ add r0, r5, r0
+ add r2, r1, #0
+ bl MOD17_021DA918
+ mov r6, #0
+_021D8EDC:
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r1, r6, #0
+ bl MOD17_021DAFF4
+ add r7, r0, #0
+ mov r4, #0
+ cmp r7, #0
+ ble _021D8F04
+_021D8EF0:
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ add r2, r6, #0
+ bl MOD17_021DA6FC
+ add r4, r4, #1
+ cmp r4, r7
+ blt _021D8EF0
+_021D8F04:
+ add r6, r6, #1
+ cmp r6, #0x64
+ blt _021D8EDC
+ mov r7, #0xd7
+ mov r6, #0x5e
+ mov r4, #0
+ lsl r7, r7, #2
+ lsl r6, r6, #2
+_021D8F14:
+ add r0, r5, r6
+ add r1, r4, #0
+ bl MOD17_021DB008
+ add r2, r0, #0
+ cmp r2, #0x12
+ bge _021D8F2A
+ add r0, r5, r7
+ mov r1, #1
+ bl MOD17_021DA6FC
+_021D8F2A:
+ add r4, r4, #1
+ cmp r4, #0x12
+ blt _021D8F14
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl MOD17_021DA844
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8E84
+
+ thumb_func_start MOD17_021D8F40
+MOD17_021D8F40: ; 0x021D8F40
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DAA60
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA818
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA5E0
+ pop {r4, pc}
+ thumb_func_end MOD17_021D8F40
+
+ thumb_func_start MOD17_021D8F64
+MOD17_021D8F64: ; 0x021D8F64
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _021D8FC4 ; =0x04000008
+ mov r2, #3
+ ldrh r3, [r0]
+ mov r1, #1
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r1, [r0, #2]
+ bic r1, r2
+ strh r1, [r0, #2]
+ ldrh r3, [r0, #4]
+ mov r1, #2
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #4]
+ ldrh r3, [r0, #6]
+ mov r1, #3
+ bic r3, r2
+ add r2, r3, #0
+ orr r2, r1
+ strh r2, [r0, #6]
+ add r3, r1, #0
+ ldr r0, [r4, #0x38]
+ add r2, r1, #0
+ sub r3, #0x13
+ bl FUN_020179E0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD17_021DA9AC
+ mov r1, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r2, #2
+ add r3, r1, #0
+ str r1, [sp]
+ bl MOD17_021DA9F8
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D8FC4: .word 0x04000008
+ thumb_func_end MOD17_021D8F64
+
+ thumb_func_start MOD17_021D8FC8
+MOD17_021D8FC8: ; 0x021D8FC8
+ ldr r3, _021D8FCC ; =MOD17_021D7AE4
+ bx r3
+ .align 2, 0
+_021D8FCC: .word MOD17_021D7AE4
+ thumb_func_end MOD17_021D8FC8
+
+ thumb_func_start MOD17_021D8FD0
+MOD17_021D8FD0: ; 0x021D8FD0
+ push {r3, lr}
+ sub sp, #0x30
+ ldr r2, [r0, #0x38]
+ str r2, [sp]
+ mov r2, #0x19
+ str r2, [sp, #4]
+ lsl r2, r1, #1
+ add r1, r2, #0
+ add r1, #0x79
+ str r1, [sp, #8]
+ mov r1, #0x85
+ str r1, [sp, #0xc]
+ mov r1, #1
+ add r2, #0x7a
+ str r2, [sp, #0x10]
+ mov r2, #0
+ str r1, [sp, #0x1c]
+ str r1, [sp, #0x20]
+ mov r1, #2
+ str r1, [sp, #0x24]
+ mov r1, #0xe
+ str r1, [sp, #0x2c]
+ ldr r1, _021D9010 ; =0x000004A8
+ str r2, [sp, #0x14]
+ add r0, r0, r1
+ add r1, sp, #0
+ str r2, [sp, #0x18]
+ str r2, [sp, #0x28]
+ bl MOD17_021DBD04
+ add sp, #0x30
+ pop {r3, pc}
+ .align 2, 0
+_021D9010: .word 0x000004A8
+ thumb_func_end MOD17_021D8FD0
+
+ thumb_func_start MOD17_021D9014
+MOD17_021D9014: ; 0x021D9014
+ ldr r1, _021D901C ; =0x000004A8
+ ldr r3, _021D9020 ; =MOD17_021DBD4C
+ add r0, r0, r1
+ bx r3
+ .align 2, 0
+_021D901C: .word 0x000004A8
+_021D9020: .word MOD17_021DBD4C
+ thumb_func_end MOD17_021D9014
+
+ thumb_func_start MOD17_021D9024
+MOD17_021D9024: ; 0x021D9024
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _021D9090 ; =0x000004D4
+ add r1, r4, #0
+ add r0, r4, r0
+ bl MOD17_021DC304
+ ldr r0, _021D9090 ; =0x000004D4
+ mov r1, #0
+ ldr r2, _021D9094 ; =MOD17_021D9180
+ add r0, r4, r0
+ add r3, r4, #0
+ str r1, [sp]
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9090 ; =0x000004D4
+ ldr r2, _021D9098 ; =MOD17_021D91A0
+ add r0, r4, r0
+ mov r1, #1
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9090 ; =0x000004D4
+ ldr r2, _021D909C ; =MOD17_021D91C0
+ add r0, r4, r0
+ mov r1, #2
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9090 ; =0x000004D4
+ ldr r2, _021D90A0 ; =MOD17_021D91F4
+ add r0, r4, r0
+ mov r1, #3
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9090 ; =0x000004D4
+ ldr r2, _021D90A4 ; =MOD17_021D9160
+ add r0, r4, r0
+ mov r1, #4
+ add r3, r4, #0
+ bl MOD17_021DC538
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D9090: .word 0x000004D4
+_021D9094: .word MOD17_021D9180
+_021D9098: .word MOD17_021D91A0
+_021D909C: .word MOD17_021D91C0
+_021D90A0: .word MOD17_021D91F4
+_021D90A4: .word MOD17_021D9160
+ thumb_func_end MOD17_021D9024
+
+ thumb_func_start MOD17_021D90A8
+MOD17_021D90A8: ; 0x021D90A8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _021D9114 ; =0x000004D4
+ add r1, r4, #0
+ add r0, r4, r0
+ bl MOD17_021DC304
+ ldr r0, _021D9114 ; =0x000004D4
+ mov r1, #0
+ ldr r2, _021D9118 ; =MOD17_021D9180
+ add r0, r4, r0
+ add r3, r4, #0
+ str r1, [sp]
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9114 ; =0x000004D4
+ ldr r2, _021D911C ; =MOD17_021D91A0
+ add r0, r4, r0
+ mov r1, #1
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9114 ; =0x000004D4
+ ldr r2, _021D9120 ; =MOD17_021D91C0
+ add r0, r4, r0
+ mov r1, #2
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9114 ; =0x000004D4
+ ldr r2, _021D9124 ; =MOD17_021D91F4
+ add r0, r4, r0
+ mov r1, #3
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9114 ; =0x000004D4
+ ldr r2, _021D9128 ; =MOD17_021D9160
+ add r0, r4, r0
+ mov r1, #4
+ add r3, r4, #0
+ bl MOD17_021DC538
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D9114: .word 0x000004D4
+_021D9118: .word MOD17_021D9180
+_021D911C: .word MOD17_021D91A0
+_021D9120: .word MOD17_021D91C0
+_021D9124: .word MOD17_021D91F4
+_021D9128: .word MOD17_021D9160
+ thumb_func_end MOD17_021D90A8
+
+ thumb_func_start MOD17_021D912C
+MOD17_021D912C: ; 0x021D912C
+ add r1, r0, #0
+ ldr r0, _021D9138 ; =0x000004D4
+ ldr r3, _021D913C ; =MOD17_021DC468
+ add r0, r1, r0
+ bx r3
+ nop
+_021D9138: .word 0x000004D4
+_021D913C: .word MOD17_021DC468
+ thumb_func_end MOD17_021D912C
+
+ thumb_func_start MOD17_021D9140
+MOD17_021D9140: ; 0x021D9140
+ ldr r1, _021D9148 ; =0x000004D4
+ ldr r3, _021D914C ; =MOD17_021DC4CC
+ add r0, r0, r1
+ bx r3
+ .align 2, 0
+_021D9148: .word 0x000004D4
+_021D914C: .word MOD17_021DC4CC
+ thumb_func_end MOD17_021D9140
+
+ thumb_func_start MOD17_021D9150
+MOD17_021D9150: ; 0x021D9150
+ ldr r1, _021D9158 ; =0x000004D4
+ ldr r3, _021D915C ; =MOD17_021DC4E4
+ add r0, r0, r1
+ bx r3
+ .align 2, 0
+_021D9158: .word 0x000004D4
+_021D915C: .word MOD17_021DC4E4
+ thumb_func_end MOD17_021D9150
+
+ thumb_func_start MOD17_021D9160
+MOD17_021D9160: ; 0x021D9160
+ push {r4, lr}
+ mov r0, #0xd7
+ add r4, r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DAAB8
+ cmp r0, #0
+ beq _021D9178
+ ldr r0, _021D917C ; =0x0000069C
+ mov r1, #3
+ str r1, [r4, r0]
+_021D9178:
+ pop {r4, pc}
+ nop
+_021D917C: .word 0x0000069C
+ thumb_func_end MOD17_021D9160
+
+ thumb_func_start MOD17_021D9180
+MOD17_021D9180: ; 0x021D9180
+ push {r4, lr}
+ mov r0, #0xd7
+ add r4, r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DAA6C
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r2, #0
+ bl MOD17_021DA8B0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9180
+
+ thumb_func_start MOD17_021D91A0
+MOD17_021D91A0: ; 0x021D91A0
+ push {r4, lr}
+ mov r0, #0xd7
+ add r4, r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DAA6C
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r2, #1
+ bl MOD17_021DA8B0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D91A0
+
+ thumb_func_start MOD17_021D91C0
+MOD17_021D91C0: ; 0x021D91C0
+ push {r4, lr}
+ ldr r0, _021D91F0 ; =0x0000069C
+ add r4, r1, #0
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D91EC
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD17_021DAA7C
+ add r2, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD17_021DA918
+ ldr r0, _021D91F0 ; =0x0000069C
+ mov r1, #0
+ str r1, [r4, r0]
+_021D91EC:
+ pop {r4, pc}
+ nop
+_021D91F0: .word 0x0000069C
+ thumb_func_end MOD17_021D91C0
+
+ thumb_func_start MOD17_021D91F4
+MOD17_021D91F4: ; 0x021D91F4
+ push {r4, lr}
+ ldr r0, _021D9224 ; =0x0000069C
+ add r4, r1, #0
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ beq _021D9220
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD17_021DAA7C
+ add r2, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD17_021DA918
+ ldr r0, _021D9224 ; =0x0000069C
+ mov r1, #1
+ str r1, [r4, r0]
+_021D9220:
+ pop {r4, pc}
+ nop
+_021D9224: .word 0x0000069C
+ thumb_func_end MOD17_021D91F4
+
+ thumb_func_start MOD17_021D9228
+MOD17_021D9228: ; 0x021D9228
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ add r2, sp, #0
+ mov r0, #0
+ add r3, r1, #0
+ add r5, r2, #0
+ add r1, r0, #0
+ stmia r5!, {r0, r1}
+ stmia r5!, {r0, r1}
+ stmia r5!, {r0, r1}
+ stmia r5!, {r0, r1}
+ str r0, [r5]
+ ldr r0, [r4, #0x38]
+ add r1, r2, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x3c]
+ mov r2, #0xf
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x40
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0x10]
+ ldr r0, _021D9268 ; =0x00000554
+ str r3, [sp, #0xc]
+ add r0, r4, r0
+ bl MOD17_021DC950
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D9268: .word 0x00000554
+ thumb_func_end MOD17_021D9228
+
+ thumb_func_start MOD17_021D926C
+MOD17_021D926C: ; 0x021D926C
+ push {r3, r4, lr}
+ sub sp, #0x24
+ ldr r4, [r0, #0x38]
+ str r4, [sp]
+ ldr r4, [r0, #0x3c]
+ str r1, [sp, #0x10]
+ ldr r1, _021D92A4 ; =0x00000151
+ str r4, [sp, #4]
+ str r1, [sp, #0x14]
+ add r1, r2, #7
+ str r1, [sp, #0x18]
+ mov r1, #0x3c
+ str r1, [sp, #0x1c]
+ ldr r1, [sp, #0x30]
+ add r4, r0, #0
+ str r1, [sp, #0xc]
+ ldr r1, _021D92A8 ; =0x00000554
+ add r4, #0x40
+ add r0, r0, r1
+ add r1, sp, #0
+ mov r2, #0x3f
+ str r4, [sp, #8]
+ str r3, [sp, #0x20]
+ bl MOD17_021DC950
+ add sp, #0x24
+ pop {r3, r4, pc}
+ nop
+_021D92A4: .word 0x00000151
+_021D92A8: .word 0x00000554
+ thumb_func_end MOD17_021D926C
+
+ thumb_func_start MOD17_021D92AC
+MOD17_021D92AC: ; 0x021D92AC
+ ldr r1, _021D92B4 ; =0x00000554
+ ldr r3, _021D92B8 ; =MOD17_021DCA80
+ add r0, r0, r1
+ bx r3
+ .align 2, 0
+_021D92B4: .word 0x00000554
+_021D92B8: .word MOD17_021DCA80
+ thumb_func_end MOD17_021D92AC
+
+ thumb_func_start MOD17_021D92BC
+MOD17_021D92BC: ; 0x021D92BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, _021D92E0 ; =MOD17_021D92E4
+ mov r1, #0x10
+ mov r2, #0xa
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ str r5, [r0]
+ str r4, [r0, #4]
+ mov r1, #0
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ pop {r3, r4, r5, pc}
+ nop
+_021D92E0: .word MOD17_021D92E4
+ thumb_func_end MOD17_021D92BC
+
+ thumb_func_start MOD17_021D92E4
+MOD17_021D92E4: ; 0x021D92E4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ cmp r1, #9
+ bls _021D92F2
+ b _021D9424
+_021D92F2:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D92FE: ; jump table
+ .short _021D9312 - _021D92FE - 2 ; case 0
+ .short _021D9334 - _021D92FE - 2 ; case 1
+ .short _021D934E - _021D92FE - 2 ; case 2
+ .short _021D936A - _021D92FE - 2 ; case 3
+ .short _021D937E - _021D92FE - 2 ; case 4
+ .short _021D93A4 - _021D92FE - 2 ; case 5
+ .short _021D93C4 - _021D92FE - 2 ; case 6
+ .short _021D93EA - _021D92FE - 2 ; case 7
+ .short _021D9406 - _021D92FE - 2 ; case 8
+ .short _021D941A - _021D92FE - 2 ; case 9
+_021D9312:
+ mov r0, #0xd7
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #3
+ mov r2, #0
+ bl MOD17_021DA870
+ cmp r0, #0
+ bne _021D932A
+ bl ErrorHandling
+_021D932A:
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D9334:
+ mov r0, #0xd7
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD17_021DAAB8
+ cmp r0, #0
+ beq _021D9424
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D934E:
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #8
+ add r1, r0, #0
+ sub r1, #0x18
+ mov r2, #0
+ mov r3, #0xa
+ bl FUN_0200A208
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D936A:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021D9424
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D937E:
+ ldr r1, [r4]
+ ldr r0, _021D9428 ; =0x000004D4
+ mov r2, #8
+ add r0, r1, r0
+ mov r1, #0
+ bl MOD17_021DC508
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #8
+ blt _021D9424
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D93A4:
+ mov r1, #7
+ add r0, r4, #0
+ mvn r1, r1
+ mov r2, #5
+ mov r3, #8
+ bl MOD17_021D970C
+ cmp r0, #0
+ beq _021D9424
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D93C4:
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD17_021D8FD0
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x38]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_0201AEE4
+ ldr r0, [r4]
+ bl MOD17_021D9848
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D93EA:
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #8
+ sub r2, #0x10
+ mov r3, #0xa
+ bl FUN_0200A208
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D9406:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021D9424
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D941A:
+ ldr r1, [r4, #4]
+ mov r2, #1
+ str r2, [r1]
+ bl FUN_0200621C
+_021D9424:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D9428: .word 0x000004D4
+ thumb_func_end MOD17_021D92E4
+
+ thumb_func_start MOD17_021D942C
+MOD17_021D942C: ; 0x021D942C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, _021D9450 ; =MOD17_021D9454
+ mov r1, #0x10
+ mov r2, #0xa
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ str r5, [r0]
+ str r4, [r0, #4]
+ mov r1, #0
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ pop {r3, r4, r5, pc}
+ nop
+_021D9450: .word MOD17_021D9454
+ thumb_func_end MOD17_021D942C
+
+ thumb_func_start MOD17_021D9454
+MOD17_021D9454: ; 0x021D9454
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ cmp r1, #9
+ bls _021D9462
+ b _021D95A4
+_021D9462:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D946E: ; jump table
+ .short _021D9482 - _021D946E - 2 ; case 0
+ .short _021D949E - _021D946E - 2 ; case 1
+ .short _021D94B2 - _021D946E - 2 ; case 2
+ .short _021D94E6 - _021D946E - 2 ; case 3
+ .short _021D9506 - _021D946E - 2 ; case 4
+ .short _021D952E - _021D946E - 2 ; case 5
+ .short _021D954A - _021D946E - 2 ; case 6
+ .short _021D955E - _021D946E - 2 ; case 7
+ .short _021D9580 - _021D946E - 2 ; case 8
+ .short _021D959A - _021D946E - 2 ; case 9
+_021D9482:
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #8
+ add r1, r0, #0
+ sub r1, #0x18
+ mov r2, #0
+ mov r3, #0xa
+ bl FUN_0200A208
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D949E:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021D95A4
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D94B2:
+ ldr r0, [r4]
+ bl MOD17_021D98D0
+ ldr r0, [r4]
+ bl MOD17_021D8F64
+ ldr r0, [r4]
+ bl MOD17_021D9150
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD17_021D8FD0
+ ldr r0, [r4]
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r0, #0x38]
+ mov r1, #1
+ sub r3, #0x2b
+ bl FUN_0201AEE4
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D94E6:
+ mov r1, #8
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0xd
+ add r3, r1, #0
+ bl MOD17_021D970C
+ cmp r0, #0
+ beq _021D95A4
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D9506:
+ ldr r1, [r4]
+ ldr r0, _021D95A8 ; =0x000004D4
+ add r0, r1, r0
+ mov r1, #0
+ add r2, r1, #0
+ sub r2, #8
+ bl MOD17_021DC508
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #8
+ blt _021D95A4
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D952E:
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #8
+ sub r2, #0x10
+ mov r3, #0xa
+ bl FUN_0200A208
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D954A:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021D95A4
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D955E:
+ mov r0, #0xd7
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #0
+ add r2, r1, #0
+ bl MOD17_021DA870
+ cmp r0, #0
+ bne _021D9576
+ bl ErrorHandling
+_021D9576:
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D9580:
+ mov r0, #0xd7
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD17_021DAAB8
+ cmp r0, #0
+ beq _021D95A4
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D959A:
+ ldr r1, [r4, #4]
+ mov r2, #1
+ str r2, [r1]
+ bl FUN_0200621C
+_021D95A4:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D95A8: .word 0x000004D4
+ thumb_func_end MOD17_021D9454
+
+ thumb_func_start MOD17_021D95AC
+MOD17_021D95AC: ; 0x021D95AC
+ push {r3, r4, r5, r6, r7, lr}
+ str r1, [sp]
+ add r6, r0, #0
+ add r4, r2, #0
+ bl FUN_02027310
+ ldr r1, [sp]
+ ldr r2, [sp]
+ add r1, #0x84
+ ldr r1, [r1]
+ add r0, r6, #0
+ add r2, #0x78
+ bl FUN_02027348
+ cmp r4, #0
+ beq _021D95EC
+ add r0, r4, #0
+ mov r1, #0xd
+ bl FUN_020239A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_020239CC
+ add r2, r0, #0
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_020274F0
+ add r0, r5, #0
+ bl FUN_02021A20
+_021D95EC:
+ ldr r0, [sp]
+ mov r5, #0
+ add r7, r0, #0
+ ldr r4, [r0, #0x1c]
+ add r7, #0x14
+ cmp r4, r7
+ beq _021D9612
+_021D95FA:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021D960C
+ ldr r1, [r4]
+ add r0, r6, #0
+ add r2, r5, #0
+ bl FUN_02027380
+ add r5, r5, #1
+_021D960C:
+ ldr r4, [r4, #8]
+ cmp r4, r7
+ bne _021D95FA
+_021D9612:
+ ldr r0, [sp]
+ ldr r4, [r0, #0xc]
+ add r7, r0, #4
+ cmp r4, r7
+ beq _021D9634
+_021D961C:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021D962E
+ ldr r1, [r4]
+ add r0, r6, #0
+ add r2, r5, #0
+ bl FUN_02027380
+ add r5, r5, #1
+_021D962E:
+ ldr r4, [r4, #8]
+ cmp r4, r7
+ bne _021D961C
+_021D9634:
+ ldr r1, [sp]
+ add r0, r6, #0
+ ldr r1, [r1, #0x74]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02027448
+ add r0, r6, #0
+ bl FUN_020272D4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D95AC
+
+ thumb_func_start MOD17_021D964C
+MOD17_021D964C: ; 0x021D964C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0xd
+ mov r1, #0xac
+ str r2, [sp, #4]
+ add r4, r3, #0
+ bl FUN_02016998
+ add r6, r0, #0
+ bl MOD17_021D9CD4
+ ldr r1, [sp]
+ ldr r2, [sp]
+ add r1, #0x84
+ ldr r1, [r1]
+ add r0, r7, #0
+ add r2, #0x78
+ bl FUN_02027778
+ cmp r4, #0
+ beq _021D969A
+ add r0, r4, #0
+ mov r1, #0xd
+ bl FUN_020239A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_020239CC
+ add r2, r0, #0
+ add r0, r7, #0
+ add r1, r5, #0
+ bl FUN_02027A58
+ add r0, r5, #0
+ bl FUN_02021A20
+_021D969A:
+ ldr r1, [sp]
+ add r0, r6, #0
+ add r1, #0x14
+ mov r2, #1
+ bl MOD17_021D9E00
+ ldr r1, [sp]
+ add r0, r6, #0
+ add r1, r1, #4
+ mov r2, #0
+ bl MOD17_021D9E00
+ add r0, r6, #0
+ bl MOD17_021D9D14
+ mov r4, #0
+ add r5, r4, #0
+_021D96BC:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD17_021D9D84
+ cmp r0, #1
+ bne _021D96DE
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD17_021D9D70
+ add r1, r0, #0
+ ldr r1, [r1]
+ add r0, r7, #0
+ add r2, r4, #0
+ bl FUN_020277B4
+ add r4, r4, #1
+_021D96DE:
+ add r5, r5, #1
+ cmp r5, #0x15
+ blt _021D96BC
+ ldr r1, [sp]
+ add r0, r7, #0
+ ldr r1, [r1, #0x74]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0202787C
+ ldr r1, [sp, #4]
+ add r0, r7, #0
+ bl FUN_020278AC
+ add r0, r7, #0
+ bl FUN_02027710
+ add r0, r6, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D964C
+
+ thumb_func_start MOD17_021D970C
+MOD17_021D970C: ; 0x021D970C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r0, #8
+ bge _021D9728
+ mov r0, #0xfa
+ ldr r3, [r5]
+ lsl r0, r0, #2
+ add r0, r3, r0
+ bl MOD17_021DA118
+_021D9728:
+ ldr r0, [r5, #8]
+ cmp r0, #1
+ blt _021D9766
+ ldr r0, [r5]
+ mov r1, #2
+ ldr r0, [r0, #0x38]
+ add r2, r1, #0
+ add r3, r4, #0
+ bl FUN_0201AEE4
+ ldr r0, [r5]
+ mov r1, #1
+ ldr r0, [r0, #0x38]
+ mov r2, #2
+ add r3, r4, #0
+ bl FUN_0201AEE4
+ ldr r0, [r5]
+ mov r1, #2
+ ldr r0, [r0, #0x38]
+ mov r2, #5
+ add r3, r6, #0
+ bl FUN_0201AEE4
+ ldr r0, [r5]
+ mov r1, #1
+ ldr r0, [r0, #0x38]
+ mov r2, #5
+ add r3, r6, #0
+ bl FUN_0201AEE4
+_021D9766:
+ ldr r0, [r5, #8]
+ add r0, r0, #1
+ str r0, [r5, #8]
+ cmp r0, r7
+ ble _021D9774
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9774:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021D970C
+
+ thumb_func_start MOD17_021D9778
+MOD17_021D9778: ; 0x021D9778
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ mov r2, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r1, #3
+ ldr r0, [r4, #0x38]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD17_021D9B74
+ ldr r1, _021D97FC ; =0x04000008
+ mov r3, #3
+ ldrh r2, [r1]
+ mov r0, #2
+ bic r2, r3
+ orr r0, r2
+ strh r0, [r1]
+ ldrh r2, [r1, #2]
+ mov r0, #1
+ bic r2, r3
+ orr r2, r0
+ strh r2, [r1, #2]
+ ldrh r4, [r1, #4]
+ mov r2, #3
+ bic r4, r3
+ orr r2, r4
+ strh r2, [r1, #4]
+ ldrh r2, [r1, #6]
+ bic r2, r3
+ strh r2, [r1, #6]
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0
+ bl FUN_0200E394
+ pop {r4, pc}
+ nop
+_021D97FC: .word 0x04000008
+ thumb_func_end MOD17_021D9778
+
+ thumb_func_start MOD17_021D9800
+MOD17_021D9800: ; 0x021D9800
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D9BCC
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ add r0, r4, #0
+ bl MOD17_021D8F64
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl FUN_0201FD98
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ pop {r4, pc}
+ thumb_func_end MOD17_021D9800
+
+ thumb_func_start MOD17_021D9848
+MOD17_021D9848: ; 0x021D9848
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ mov r2, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r1, #3
+ ldr r0, [r4, #0x38]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x38]
+ mov r1, #0x19
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ strb r1, [r0, #0x10]
+ mov r1, #4
+ strb r1, [r0, #0x11]
+ ldr r0, _021D98C8 ; =0x000006A4
+ add r1, sp, #0
+ ldr r0, [r4, r0]
+ bl FUN_020145C8
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD17_021D9B4C
+ ldr r0, _021D98CC ; =0x04000008
+ mov r2, #3
+ ldrh r3, [r0]
+ mov r1, #2
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0, #2]
+ mov r1, #1
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #2]
+ ldrh r3, [r0, #4]
+ mov r1, #3
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #4]
+ ldrh r1, [r0, #6]
+ bic r1, r2
+ strh r1, [r0, #6]
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_021D98C8: .word 0x000006A4
+_021D98CC: .word 0x04000008
+ thumb_func_end MOD17_021D9848
+
+ thumb_func_start MOD17_021D98D0
+MOD17_021D98D0: ; 0x021D98D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D98EC ; =0x000006A4
+ ldr r0, [r4, r0]
+ bl FUN_020146C4
+ add r0, r4, #0
+ bl MOD17_021D9B6C
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ pop {r4, pc}
+ .align 2, 0
+_021D98EC: .word 0x000006A4
+ thumb_func_end MOD17_021D98D0
+
+ thumb_func_start MOD17_021D98F0
+MOD17_021D98F0: ; 0x021D98F0
+ push {r3, lr}
+ ldr r1, _021D9914 ; =0x000006A4
+ ldr r0, [r0, r1]
+ bl FUN_0201466C
+ cmp r0, #0
+ beq _021D9908
+ cmp r0, #1
+ beq _021D990C
+ cmp r0, #2
+ beq _021D9910
+ pop {r3, pc}
+_021D9908:
+ mov r0, #4
+ pop {r3, pc}
+_021D990C:
+ mov r0, #8
+ pop {r3, pc}
+_021D9910:
+ mov r0, #9
+ pop {r3, pc}
+ .align 2, 0
+_021D9914: .word 0x000006A4
+ thumb_func_end MOD17_021D98F0
+
+ thumb_func_start MOD17_021D9918
+MOD17_021D9918: ; 0x021D9918
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, _021D99D0 ; =0x000006C8
+ str r1, [sp, #0x14]
+ ldr r0, [r5, r0]
+ add r7, r2, #0
+ add r4, r3, #0
+ bl FUN_02025084
+ add r6, r0, #0
+ mov r0, #0
+ mov r1, #0xe0
+ mov r2, #0xe
+ bl FUN_02002EEC
+ str r4, [sp]
+ add r0, sp, #0x20
+ ldrb r1, [r0, #0x10]
+ mov r2, #3
+ add r3, r7, #0
+ str r1, [sp, #4]
+ ldrb r0, [r0, #0x14]
+ ldr r1, _021D99D4 ; =0x000006A8
+ str r0, [sp, #8]
+ mov r0, #7
+ str r0, [sp, #0xc]
+ mov r0, #0x92
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x38]
+ ldr r1, [r5, r1]
+ bl FUN_02019064
+ ldr r0, _021D99D4 ; =0x000006A8
+ mov r1, #0xf
+ ldr r0, [r5, r0]
+ bl FUN_02019620
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x38]
+ mov r1, #3
+ mov r2, #0x74
+ mov r3, #8
+ bl FUN_0200CD68
+ ldr r0, _021D99D4 ; =0x000006A8
+ mov r1, #0
+ ldr r0, [r5, r0]
+ mov r2, #0x74
+ mov r3, #8
+ bl FUN_0200D0BC
+ ldr r2, _021D99D8 ; =0x00000151
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ ldr r1, [sp, #0x14]
+ add r6, r0, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D99DC ; =0x0001020F
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, _021D99D4 ; =0x000006A8
+ str r3, [sp, #0xc]
+ ldr r0, [r5, r0]
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ ldr r0, _021D99D4 ; =0x000006A8
+ ldr r0, [r5, r0]
+ bl FUN_020191D0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D99D0: .word 0x000006C8
+_021D99D4: .word 0x000006A8
+_021D99D8: .word 0x00000151
+_021D99DC: .word 0x0001020F
+ thumb_func_end MOD17_021D9918
+
+ thumb_func_start MOD17_021D99E0
+MOD17_021D99E0: ; 0x021D99E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, _021D9A58 ; =0x000006A8
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r2, _021D9A5C ; =0x00000151
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r7, r0, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ mov r1, #0xd
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, _021D9A60 ; =0x000006D4
+ add r1, r4, #0
+ ldr r0, [r5, r0]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D9A64 ; =0x0001020F
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, _021D9A58 ; =0x000006A8
+ str r3, [sp, #0xc]
+ ldr r0, [r5, r0]
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ ldr r0, _021D9A58 ; =0x000006A8
+ ldr r0, [r5, r0]
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9A58: .word 0x000006A8
+_021D9A5C: .word 0x00000151
+_021D9A60: .word 0x000006D4
+_021D9A64: .word 0x0001020F
+ thumb_func_end MOD17_021D99E0
+
+ thumb_func_start MOD17_021D9A68
+MOD17_021D9A68: ; 0x021D9A68
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x6d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021D9A7E
+ bl ErrorHandling
+_021D9A7E:
+ ldr r0, _021D9B08 ; =0x000006A8
+ mov r1, #0xf
+ ldr r0, [r5, r0]
+ bl FUN_02019620
+ ldr r2, _021D9B0C ; =0x00000151
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r7, r0, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ mov r1, #0xd
+ bl FUN_020219F4
+ mov r1, #0x6d
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #4
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ ldr r0, _021D9B10 ; =0x000006C4
+ ldr r1, [r5, r0]
+ ldrb r1, [r1, #0x16]
+ cmp r1, #0
+ bne _021D9ACE
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02024FF4
+ b _021D9AD0
+_021D9ACE:
+ mov r0, #1
+_021D9AD0:
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D9B14 ; =0x0001020F
+ ldr r2, _021D9B08 ; =0x000006A8
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [r5, r2]
+ add r2, #0x28
+ ldr r2, [r5, r2]
+ mov r1, #1
+ bl FUN_0201BDE0
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ ldr r0, _021D9B08 ; =0x000006A8
+ ldr r0, [r5, r0]
+ bl FUN_020191D0
+ add r0, r6, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9B08: .word 0x000006A8
+_021D9B0C: .word 0x00000151
+_021D9B10: .word 0x000006C4
+_021D9B14: .word 0x0001020F
+ thumb_func_end MOD17_021D9A68
+
+ thumb_func_start MOD17_021D9B18
+MOD17_021D9B18: ; 0x021D9B18
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6d
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0x6d
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ pop {r4, pc}
+ thumb_func_end MOD17_021D9B18
+
+ thumb_func_start MOD17_021D9B30
+MOD17_021D9B30: ; 0x021D9B30
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D9B48 ; =0x000006A8
+ ldr r0, [r4, r0]
+ bl FUN_02019570
+ ldr r0, _021D9B48 ; =0x000006A8
+ ldr r0, [r4, r0]
+ bl FUN_02019178
+ pop {r4, pc}
+ nop
+_021D9B48: .word 0x000006A8
+ thumb_func_end MOD17_021D9B30
+
+ thumb_func_start MOD17_021D9B4C
+MOD17_021D9B4C: ; 0x021D9B4C
+ push {r3, lr}
+ sub sp, #8
+ mov r2, #0x1b
+ str r2, [sp]
+ mov r2, #2
+ mov r3, #1
+ str r2, [sp, #4]
+ bl MOD17_021D9918
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9B4C
+
+ thumb_func_start MOD17_021D9B64
+MOD17_021D9B64: ; 0x021D9B64
+ ldr r3, _021D9B68 ; =MOD17_021D99E0
+ bx r3
+ .align 2, 0
+_021D9B68: .word MOD17_021D99E0
+ thumb_func_end MOD17_021D9B64
+
+ thumb_func_start MOD17_021D9B6C
+MOD17_021D9B6C: ; 0x021D9B6C
+ ldr r3, _021D9B70 ; =MOD17_021D9B30
+ bx r3
+ .align 2, 0
+_021D9B70: .word MOD17_021D9B30
+ thumb_func_end MOD17_021D9B6C
+
+ thumb_func_start MOD17_021D9B74
+MOD17_021D9B74: ; 0x021D9B74
+ push {r4, lr}
+ sub sp, #8
+ mov r2, #0x1b
+ str r2, [sp]
+ mov r2, #4
+ str r2, [sp, #4]
+ mov r2, #2
+ mov r3, #0x13
+ add r4, r0, #0
+ bl MOD17_021D9918
+ mov r0, #0xd
+ bl FUN_0200AA80
+ ldr r1, _021D9B98 ; =0x000006D4
+ str r0, [r4, r1]
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D9B98: .word 0x000006D4
+ thumb_func_end MOD17_021D9B74
+
+ thumb_func_start MOD17_021D9B9C
+MOD17_021D9B9C: ; 0x021D9B9C
+ ldr r3, _021D9BA0 ; =MOD17_021D9A68
+ bx r3
+ .align 2, 0
+_021D9BA0: .word MOD17_021D9A68
+ thumb_func_end MOD17_021D9B9C
+
+ thumb_func_start MOD17_021D9BA4
+MOD17_021D9BA4: ; 0x021D9BA4
+ push {r3, lr}
+ sub sp, #8
+ mov r3, #0
+ str r3, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldr r3, _021D9BC0 ; =0x000006D4
+ ldr r0, [r0, r3]
+ mov r3, #2
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r3, pc}
+ nop
+_021D9BC0: .word 0x000006D4
+ thumb_func_end MOD17_021D9BA4
+
+ thumb_func_start MOD17_021D9BC4
+MOD17_021D9BC4: ; 0x021D9BC4
+ ldr r3, _021D9BC8 ; =MOD17_021D9B18
+ bx r3
+ .align 2, 0
+_021D9BC8: .word MOD17_021D9B18
+ thumb_func_end MOD17_021D9BC4
+
+ thumb_func_start MOD17_021D9BCC
+MOD17_021D9BCC: ; 0x021D9BCC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D9B30
+ ldr r0, _021D9BE4 ; =0x000006D4
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ ldr r0, _021D9BE4 ; =0x000006D4
+ mov r1, #0
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D9BE4: .word 0x000006D4
+ thumb_func_end MOD17_021D9BCC
+
+ thumb_func_start MOD17_021D9BE8
+MOD17_021D9BE8: ; 0x021D9BE8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA368
+ add r1, r0, #0
+ ldr r0, _021D9C04 ; =0x00000554
+ add r0, r4, r0
+ bl MOD17_021DCBD8
+ pop {r4, pc}
+ nop
+_021D9C04: .word 0x00000554
+ thumb_func_end MOD17_021D9BE8
+
+ thumb_func_start MOD17_021D9C08
+MOD17_021D9C08: ; 0x021D9C08
+ push {r4, lr}
+ cmp r0, #3
+ bhi _021D9C32
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9C1A: ; jump table
+ .short _021D9C22 - _021D9C1A - 2 ; case 0
+ .short _021D9C26 - _021D9C1A - 2 ; case 1
+ .short _021D9C2A - _021D9C1A - 2 ; case 2
+ .short _021D9C2E - _021D9C1A - 2 ; case 3
+_021D9C22:
+ mov r4, #5
+ b _021D9C36
+_021D9C26:
+ mov r4, #0xa
+ b _021D9C36
+_021D9C2A:
+ mov r4, #0xf
+ b _021D9C36
+_021D9C2E:
+ mov r4, #0x14
+ b _021D9C36
+_021D9C32:
+ bl ErrorHandling
+_021D9C36:
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9C08
+
+ thumb_func_start MOD17_021D9C3C
+MOD17_021D9C3C: ; 0x021D9C3C
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #0x19
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ strb r1, [r0, #0x10]
+ mov r1, #4
+ strb r1, [r0, #0x11]
+ ldr r0, _021D9CA4 ; =0x000006A4
+ ldr r0, [r4, r0]
+ bl FUN_020146C4
+ ldr r0, _021D9CA4 ; =0x000006A4
+ add r1, sp, #0
+ ldr r0, [r4, r0]
+ bl FUN_020145C8
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD17_021D9B64
+ ldr r0, _021D9CA8 ; =0x04000008
+ mov r2, #3
+ ldrh r3, [r0]
+ mov r1, #2
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0, #2]
+ mov r1, #1
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #2]
+ ldrh r3, [r0, #4]
+ mov r1, #3
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #4]
+ ldrh r1, [r0, #6]
+ bic r1, r2
+ strh r1, [r0, #6]
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_021D9CA4: .word 0x000006A4
+_021D9CA8: .word 0x04000008
+ thumb_func_end MOD17_021D9C3C
+
+ thumb_func_start MOD17_021D9CAC
+MOD17_021D9CAC: ; 0x021D9CAC
+ push {r3, lr}
+ ldr r1, _021D9CD0 ; =0x000006A4
+ ldr r0, [r0, r1]
+ bl FUN_0201466C
+ cmp r0, #0
+ beq _021D9CC4
+ cmp r0, #1
+ beq _021D9CC8
+ cmp r0, #2
+ beq _021D9CCC
+ pop {r3, pc}
+_021D9CC4:
+ mov r0, #5
+ pop {r3, pc}
+_021D9CC8:
+ mov r0, #6
+ pop {r3, pc}
+_021D9CCC:
+ mov r0, #7
+ pop {r3, pc}
+ .align 2, 0
+_021D9CD0: .word 0x000006A4
+ thumb_func_end MOD17_021D9CAC
+
+ thumb_func_start MOD17_021D9CD4
+MOD17_021D9CD4: ; 0x021D9CD4
+ ldr r3, _021D9CDC ; =0x020DF4A4
+ mov r1, #0
+ mov r2, #0xac
+ bx r3
+ .align 2, 0
+_021D9CDC: .word 0x020DF4A4
+ thumb_func_end MOD17_021D9CD4
+
+ thumb_func_start MOD17_021D9CE0
+MOD17_021D9CE0: ; 0x021D9CE0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #0
+ bne _021D9CF0
+ bl ErrorHandling
+_021D9CF0:
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ lsl r0, r0, #3
+ str r4, [r5, r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ lsl r0, r0, #3
+ add r0, r5, r0
+ str r6, [r0, #4]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ add r5, #0xa8
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021D9CE0
+
+ thumb_func_start MOD17_021D9D14
+MOD17_021D9D14: ; 0x021D9D14
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r0, #0xa8
+ ldr r2, [r0]
+ mov r1, #0
+ cmp r2, #0
+ ble _021D9D6C
+_021D9D22:
+ lsl r0, r1, #3
+ add r7, r6, r0
+ ldr r0, [r7, #4]
+ cmp r0, #1
+ bne _021D9D60
+ mov r4, #0
+ cmp r2, #0
+ ble _021D9D58
+ add r5, r6, #0
+_021D9D34:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ bne _021D9D4A
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD17_021D9DA4
+ cmp r0, #1
+ bne _021D9D4A
+ mov r0, #1
+ str r0, [r5, #4]
+_021D9D4A:
+ add r0, r6, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, r0
+ blt _021D9D34
+_021D9D58:
+ mov r0, #2
+ str r0, [r7, #4]
+ mov r1, #0
+ b _021D9D62
+_021D9D60:
+ add r1, r1, #1
+_021D9D62:
+ add r0, r6, #0
+ add r0, #0xa8
+ ldr r2, [r0]
+ cmp r1, r2
+ blt _021D9D22
+_021D9D6C:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9D14
+
+ thumb_func_start MOD17_021D9D70
+MOD17_021D9D70: ; 0x021D9D70
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0x15
+ blo _021D9D7E
+ bl ErrorHandling
+_021D9D7E:
+ lsl r0, r5, #3
+ ldr r0, [r4, r0]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D9D70
+
+ thumb_func_start MOD17_021D9D84
+MOD17_021D9D84: ; 0x021D9D84
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0x15
+ blo _021D9D92
+ bl ErrorHandling
+_021D9D92:
+ lsl r0, r5, #3
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021D9DA0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9DA0:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D9D84
+
+ thumb_func_start MOD17_021D9DA4
+MOD17_021D9DA4: ; 0x021D9DA4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ add r1, sp, #0x28
+ add r2, sp, #0x24
+ bl MOD17_021DBCC8
+ add r0, sp, #0x20
+ str r0, [sp]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ add r2, sp, #0x18
+ add r3, sp, #0x1c
+ bl MOD17_021DBC70
+ mov r4, #0
+ add r6, sp, #0x10
+ add r7, sp, #0xc
+_021D9DCC:
+ str r4, [sp]
+ str r6, [sp, #4]
+ str r7, [sp, #8]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ bl MOD17_021D9E78
+ ldr r0, [r5]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ bl MOD17_021DBAE8
+ cmp r0, #1
+ bne _021D9DF2
+ add sp, #0x2c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021D9DF2:
+ add r4, r4, #1
+ cmp r4, #0x10
+ blt _021D9DCC
+ mov r0, #0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9DA4
+
+ thumb_func_start MOD17_021D9E00
+MOD17_021D9E00: ; 0x021D9E00
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ ldr r4, [r5, #8]
+ add r6, r0, #0
+ add r7, r2, #0
+ cmp r4, r5
+ beq _021D9E24
+_021D9E0E:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021D9E1E
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD17_021D9CE0
+_021D9E1E:
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021D9E0E
+_021D9E24:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9E00
+
+ thumb_func_start MOD17_021D9E28
+MOD17_021D9E28: ; 0x021D9E28
+ push {r3, r4, r5, lr}
+ ldr r2, _021D9E70 ; =0x000006C4
+ mov r1, #0
+ ldr r2, [r0, r2]
+ ldrb r3, [r2, #0x16]
+ cmp r3, #0
+ bne _021D9E40
+ ldr r2, _021D9E74 ; =0x00000554
+ add r0, r0, r2
+ bl MOD17_021DCBEC
+ pop {r3, r4, r5, pc}
+_021D9E40:
+ ldrb r4, [r2, #0x14]
+ ldrb r3, [r2, #0x15]
+ cmp r4, r3
+ bne _021D9E6C
+ add r4, r1, #0
+ add r5, r2, #0
+_021D9E4C:
+ ldrb r3, [r5, #0x10]
+ cmp r3, #1
+ bne _021D9E54
+ add r1, r1, #1
+_021D9E54:
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #4
+ blt _021D9E4C
+ ldrb r2, [r2, #0x17]
+ cmp r2, r1
+ bgt _021D9E6C
+ ldr r1, _021D9E74 ; =0x00000554
+ add r0, r0, r1
+ mov r1, #0
+ bl MOD17_021DCBEC
+_021D9E6C:
+ pop {r3, r4, r5, pc}
+ nop
+_021D9E70: .word 0x000006C4
+_021D9E74: .word 0x00000554
+ thumb_func_end MOD17_021D9E28
+
+ thumb_func_start MOD17_021D9E78
+MOD17_021D9E78: ; 0x021D9E78
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ str r1, [sp]
+ add r7, r2, #0
+ add r0, r3, #0
+ sub r0, r0, r7
+ mov r1, #3
+ str r3, [sp, #4]
+ ldr r4, [sp, #0x2c]
+ ldr r5, [sp, #0x30]
+ bl _u32_div_f
+ add r1, r7, r0
+ lsl r0, r0, #1
+ add r0, r7, r0
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ str r1, [sp, #0xc]
+ sub r0, r0, r6
+ mov r1, #3
+ bl _u32_div_f
+ add r2, r6, r0
+ lsl r0, r0, #1
+ ldr r1, [sp, #0x28]
+ add r0, r6, r0
+ cmp r1, #0xf
+ bhi _021D9F7A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D9EBE: ; jump table
+ .short _021D9EDE - _021D9EBE - 2 ; case 0
+ .short _021D9EE6 - _021D9EBE - 2 ; case 1
+ .short _021D9EEE - _021D9EBE - 2 ; case 2
+ .short _021D9EF6 - _021D9EBE - 2 ; case 3
+ .short _021D9F00 - _021D9EBE - 2 ; case 4
+ .short _021D9F0A - _021D9EBE - 2 ; case 5
+ .short _021D9F14 - _021D9EBE - 2 ; case 6
+ .short _021D9F1E - _021D9EBE - 2 ; case 7
+ .short _021D9F2A - _021D9EBE - 2 ; case 8
+ .short _021D9F34 - _021D9EBE - 2 ; case 9
+ .short _021D9F3E - _021D9EBE - 2 ; case 10
+ .short _021D9F48 - _021D9EBE - 2 ; case 11
+ .short _021D9F54 - _021D9EBE - 2 ; case 12
+ .short _021D9F5E - _021D9EBE - 2 ; case 13
+ .short _021D9F68 - _021D9EBE - 2 ; case 14
+ .short _021D9F72 - _021D9EBE - 2 ; case 15
+_021D9EDE:
+ str r7, [r4]
+ add sp, #0x10
+ str r6, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9EE6:
+ str r7, [r4]
+ add sp, #0x10
+ str r2, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9EEE:
+ str r7, [r4]
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9EF6:
+ ldr r0, [sp]
+ str r7, [r4]
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F00:
+ ldr r0, [sp, #0xc]
+ add sp, #0x10
+ str r0, [r4]
+ str r6, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F0A:
+ ldr r0, [sp, #0xc]
+ add sp, #0x10
+ str r0, [r4]
+ str r2, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F14:
+ ldr r1, [sp, #0xc]
+ add sp, #0x10
+ str r1, [r4]
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F1E:
+ ldr r0, [sp, #0xc]
+ str r0, [r4]
+ ldr r0, [sp]
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F2A:
+ ldr r0, [sp, #8]
+ add sp, #0x10
+ str r0, [r4]
+ str r6, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F34:
+ ldr r0, [sp, #8]
+ add sp, #0x10
+ str r0, [r4]
+ str r2, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F3E:
+ ldr r1, [sp, #8]
+ add sp, #0x10
+ str r1, [r4]
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F48:
+ ldr r0, [sp, #8]
+ str r0, [r4]
+ ldr r0, [sp]
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F54:
+ ldr r0, [sp, #4]
+ add sp, #0x10
+ str r0, [r4]
+ str r6, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F5E:
+ ldr r0, [sp, #4]
+ add sp, #0x10
+ str r0, [r4]
+ str r2, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F68:
+ ldr r1, [sp, #4]
+ add sp, #0x10
+ str r1, [r4]
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F72:
+ ldr r0, [sp, #4]
+ str r0, [r4]
+ ldr r0, [sp]
+ str r0, [r5]
+_021D9F7A:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9E78
+
+ thumb_func_start MOD17_021D9F80
+MOD17_021D9F80: ; 0x021D9F80
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1]
+ mov r2, #0
+ str r0, [r4, #0x2c]
+ ldr r0, [r1, #4]
+ str r0, [r4, #0x30]
+ ldr r0, [r1, #8]
+ str r0, [r4, #0x34]
+ ldr r0, [r1, #0xc]
+ str r0, [r4, #0x38]
+ ldr r0, [r1, #0x10]
+ str r0, [r4, #0x3c]
+ ldr r0, [r1, #0x14]
+ str r0, [r4, #0x40]
+ ldr r0, [r1, #0x18]
+ str r0, [r4, #0x44]
+ str r2, [r4, #0x74]
+ ldr r0, [r1, #0x1c]
+ str r0, [r4]
+ add r0, r4, #4
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ add r0, #0x14
+ str r0, [r4, #0x1c]
+ str r0, [r4, #0x20]
+ str r2, [r4, #0x24]
+ ldr r0, [r1, #0x20]
+ add r1, r4, #0
+ str r0, [r4, #0x28]
+ ldr r0, [r4]
+ add r1, #0x78
+ mov r2, #3
+ bl MOD17_021DBA30
+ add r4, #0x14
+ add r1, r4, #0
+ bl MOD17_021DBA90
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9F80
+
+ thumb_func_start MOD17_021D9FD4
+MOD17_021D9FD4: ; 0x021D9FD4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021DA058
+ add r0, r4, #0
+ bl MOD17_021DA100
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x88
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9FD4
+
+ thumb_func_start MOD17_021D9FF0
+MOD17_021D9FF0: ; 0x021D9FF0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, [sp, #0x20]
+ add r6, r1, #0
+ str r0, [sp]
+ add r5, r2, #0
+ add r0, r4, #0
+ add r7, r3, #0
+ ldr r1, [r4, #0x3c]
+ add r0, #0x78
+ add r2, r6, #0
+ add r3, r5, #0
+ bl MOD17_021DB700
+ add r0, r4, #0
+ ldr r1, [sp, #0x1c]
+ add r0, #0x78
+ bl MOD17_021DB7D8
+ add r4, #0x78
+ ldr r2, [sp, #0x18]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD17_021DB7F4
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021D9FF0
+
+ thumb_func_start MOD17_021DA024
+MOD17_021DA024: ; 0x021DA024
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r0, #0
+ str r3, [sp]
+ add r5, r1, #0
+ add r4, r2, #0
+ ldr r1, [r6, #0x3c]
+ add r0, #0x78
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD17_021DB700
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD17_021DA024
+
+ thumb_func_start MOD17_021DA040
+MOD17_021DA040: ; 0x021DA040
+ ldr r3, _021DA04C ; =MOD17_021DBA90
+ add r2, r0, #0
+ add r0, r1, #0
+ ldr r1, [r2, #0x20]
+ bx r3
+ nop
+_021DA04C: .word MOD17_021DBA90
+ thumb_func_end MOD17_021DA040
+
+ thumb_func_start MOD17_021DA050
+MOD17_021DA050: ; 0x021DA050
+ ldr r3, _021DA054 ; =MOD17_021DBAA0
+ bx r3
+ .align 2, 0
+_021DA054: .word MOD17_021DBAA0
+ thumb_func_end MOD17_021DA050
+
+ thumb_func_start MOD17_021DA058
+MOD17_021DA058: ; 0x021DA058
+ ldr r3, _021DA060 ; =MOD17_021DB7C0
+ add r0, #0x78
+ bx r3
+ nop
+_021DA060: .word MOD17_021DB7C0
+ thumb_func_end MOD17_021DA058
+
+ thumb_func_start MOD17_021DA064
+MOD17_021DA064: ; 0x021DA064
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0
+ ldr r5, [r4, #0x24]
+ ldr r0, [r4, #0x28]
+ cmp r5, r0
+ bge _021DA0BE
+ ldr r0, [r4, #0x44]
+ str r0, [sp]
+ ldr r0, [r4, #0x2c]
+ str r0, [sp, #4]
+ ldr r5, [r4, #0x30]
+ lsl r0, r1, #2
+ ldr r0, [r5, r0]
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x34]
+ ldr r0, [r0]
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x38]
+ ldrb r0, [r0, r1]
+ str r0, [sp, #0x1c]
+ add r0, sp, #0
+ bl MOD17_021D7520
+ ldr r1, [sp, #0x30]
+ add r5, r0, #0
+ bl MOD17_021D766C
+ ldr r0, [r4]
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD17_021DBA30
+ add r1, r4, #4
+ bl MOD17_021DBA90
+ ldr r0, [r4, #0x24]
+ add sp, #0x20
+ add r0, r0, #1
+ str r0, [r4, #0x24]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DA0BE:
+ mov r0, #0
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DA064
+
+ thumb_func_start MOD17_021DA0C4
+MOD17_021DA0C4: ; 0x021DA0C4
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r3, r2, #0
+ ldr r5, [r4, #0x24]
+ ldr r2, [r4, #0x28]
+ cmp r5, r2
+ bge _021DA0E2
+ mov r2, #1
+ bl MOD17_021DA454
+ ldr r0, [r4, #0x24]
+ add r0, r0, #1
+ str r0, [r4, #0x24]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DA0E2:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA0C4
+
+ thumb_func_start MOD17_021DA0E8
+MOD17_021DA0E8: ; 0x021DA0E8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ bl MOD17_021DBAA0
+ ldr r0, [r4, #0x24]
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ bpl _021DA0FE
+ bl ErrorHandling
+_021DA0FE:
+ pop {r4, pc}
+ thumb_func_end MOD17_021DA0E8
+
+ thumb_func_start MOD17_021DA100
+MOD17_021DA100: ; 0x021DA100
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r4, #4
+ bl MOD17_021DBAB0
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD17_021DBAB0
+ mov r0, #0
+ str r0, [r4, #0x24]
+ pop {r4, pc}
+ thumb_func_end MOD17_021DA100
+
+ thumb_func_start MOD17_021DA118
+MOD17_021DA118: ; 0x021DA118
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, r5, #4
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD17_021DBC38
+ add r5, #0x14
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD17_021DBC38
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DA118
+
+ thumb_func_start MOD17_021DA134
+MOD17_021DA134: ; 0x021DA134
+ ldr r3, _021DA13C ; =MOD17_021DBC38
+ add r0, #0x14
+ bx r3
+ nop
+_021DA13C: .word MOD17_021DBC38
+ thumb_func_end MOD17_021DA134
+
+ thumb_func_start MOD17_021DA140
+MOD17_021DA140: ; 0x021DA140
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ neg r4, r2
+ neg r7, r1
+ add r0, r5, #4
+ add r1, r7, #0
+ add r2, r4, #0
+ add r6, r3, #0
+ bl MOD17_021DBC38
+ ldr r2, [sp, #0x18]
+ add r0, r5, #4
+ add r1, r6, #0
+ bl MOD17_021DBC38
+ add r0, r5, #0
+ add r0, #0x14
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD17_021DBC38
+ add r5, #0x14
+ ldr r2, [sp, #0x18]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD17_021DBC38
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA140
+
+ thumb_func_start MOD17_021DA178
+MOD17_021DA178: ; 0x021DA178
+ ldr r3, _021DA180 ; =MOD17_021DA184
+ mov r1, #0
+ mvn r1, r1
+ bx r3
+ .align 2, 0
+_021DA180: .word MOD17_021DA184
+ thumb_func_end MOD17_021DA178
+
+ thumb_func_start MOD17_021DA184
+MOD17_021DA184: ; 0x021DA184
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r7, #0
+ ldr r4, [r7, #0x1c]
+ add r6, #0x14
+ add r5, r1, #0
+ cmp r4, r6
+ beq _021DA1B2
+_021DA194:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4]
+ bne _021DA1A4
+ add r1, r5, #0
+ bl MOD17_021D766C
+ b _021DA1AA
+_021DA1A4:
+ add r1, r5, #0
+ bl MOD17_021DB7D8
+_021DA1AA:
+ ldr r4, [r4, #8]
+ sub r5, r5, #1
+ cmp r4, r6
+ bne _021DA194
+_021DA1B2:
+ ldr r4, [r7, #0xc]
+ add r6, r7, #4
+ sub r5, #8
+ cmp r4, r6
+ beq _021DA1DA
+_021DA1BC:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4]
+ bne _021DA1CC
+ add r1, r5, #0
+ bl MOD17_021D766C
+ b _021DA1D2
+_021DA1CC:
+ add r1, r5, #0
+ bl MOD17_021DB7D8
+_021DA1D2:
+ ldr r4, [r4, #8]
+ sub r5, r5, #1
+ cmp r4, r6
+ bne _021DA1BC
+_021DA1DA:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA184
+
+ thumb_func_start MOD17_021DA1DC
+MOD17_021DA1DC: ; 0x021DA1DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r7, #0
+ ldr r4, [r7, #0x1c]
+ add r6, #0x14
+ add r5, r1, #0
+ cmp r4, r6
+ beq _021DA218
+_021DA1EC:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4]
+ bne _021DA204
+ bl MOD17_021D7678
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r1, r1, r5
+ bl MOD17_021D766C
+ b _021DA212
+_021DA204:
+ bl MOD17_021DB7E8
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r1, r1, r5
+ bl MOD17_021DB7D8
+_021DA212:
+ ldr r4, [r4, #8]
+ cmp r4, r6
+ bne _021DA1EC
+_021DA218:
+ ldr r4, [r7, #0xc]
+ add r6, r7, #4
+ cmp r4, r6
+ beq _021DA24C
+_021DA220:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4]
+ bne _021DA238
+ bl MOD17_021D7678
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r1, r1, r5
+ bl MOD17_021D766C
+ b _021DA246
+_021DA238:
+ bl MOD17_021DB7E8
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r1, r1, r5
+ bl MOD17_021DB7D8
+_021DA246:
+ ldr r4, [r4, #8]
+ cmp r4, r6
+ bne _021DA220
+_021DA24C:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA1DC
+
+ thumb_func_start MOD17_021DA250
+MOD17_021DA250: ; 0x021DA250
+ push {r3, lr}
+ mov r1, #0x12
+ add r0, sp, #0
+ strb r1, [r0]
+ mov r1, #0x8f
+ strb r1, [r0, #1]
+ mov r1, #0x8a
+ strb r1, [r0, #2]
+ mov r1, #0xf6
+ strb r1, [r0, #3]
+ add r0, sp, #0
+ bl FUN_02020A40
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA250
+
+ thumb_func_start MOD17_021DA26C
+MOD17_021DA26C: ; 0x021DA26C
+ push {r3, lr}
+ mov r3, #0x12
+ add r0, sp, #0
+ strb r3, [r0]
+ mov r3, #0x8f
+ strb r3, [r0, #1]
+ mov r3, #0x8a
+ strb r3, [r0, #2]
+ mov r3, #0xf6
+ strb r3, [r0, #3]
+ add r0, sp, #0
+ bl FUN_02020AE8
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA26C
+
+ thumb_func_start MOD17_021DA288
+MOD17_021DA288: ; 0x021DA288
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r5, [r0, #0x1c]
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, #0x14
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ str r0, [sp, #4]
+ cmp r5, r0
+ beq _021DA2BE
+_021DA2A0:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DBB1C
+ cmp r0, #1
+ bne _021DA2B6
+ add sp, #0xc
+ add r0, r5, #0
+ pop {r4, r5, r6, r7, pc}
+_021DA2B6:
+ ldr r5, [r5, #8]
+ ldr r0, [sp, #4]
+ cmp r5, r0
+ bne _021DA2A0
+_021DA2BE:
+ ldr r0, [sp]
+ ldr r5, [r0, #0xc]
+ add r0, r0, #4
+ str r0, [sp, #8]
+ cmp r5, r0
+ beq _021DA2E8
+_021DA2CA:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DBB1C
+ cmp r0, #1
+ bne _021DA2E0
+ add sp, #0xc
+ add r0, r5, #0
+ pop {r4, r5, r6, r7, pc}
+_021DA2E0:
+ ldr r5, [r5, #8]
+ ldr r0, [sp, #8]
+ cmp r5, r0
+ bne _021DA2CA
+_021DA2E8:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA288
+
+ thumb_func_start MOD17_021DA2F0
+MOD17_021DA2F0: ; 0x021DA2F0
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, [r5, #0x40]
+ add r4, r1, #0
+ str r0, [sp]
+ mov r0, #0x19
+ lsl r1, r4, #2
+ str r0, [sp, #4]
+ add r0, r1, #0
+ add r0, #0x86
+ str r0, [sp, #8]
+ add r0, r1, #0
+ add r0, #0x87
+ str r0, [sp, #0xc]
+ mov r0, #0x88
+ str r0, [sp, #0x14]
+ mov r0, #0x10
+ str r0, [sp, #0x18]
+ mov r0, #2
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ add r1, #0x88
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ add r0, r5, #0
+ add r0, #0x48
+ add r1, sp, #0
+ str r2, [sp, #0x2c]
+ bl MOD17_021DBD04
+ str r4, [r5, #0x74]
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA2F0
+
+ thumb_func_start MOD17_021DA33C
+MOD17_021DA33C: ; 0x021DA33C
+ ldr r3, _021DA344 ; =MOD17_021DBD4C
+ add r0, #0x48
+ bx r3
+ nop
+_021DA344: .word MOD17_021DBD4C
+ thumb_func_end MOD17_021DA33C
+
+ thumb_func_start MOD17_021DA348
+MOD17_021DA348: ; 0x021DA348
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x78]
+ add r4, r1, #0
+ mov r1, #0
+ add r6, r2, #0
+ bl FUN_0200782C
+ str r0, [r4]
+ ldr r0, [r5, #0x78]
+ mov r1, #1
+ bl FUN_0200782C
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA348
+
+ thumb_func_start MOD17_021DA368
+MOD17_021DA368: ; 0x021DA368
+ ldr r0, [r0, #0x24]
+ bx lr
+ thumb_func_end MOD17_021DA368
+
+ thumb_func_start MOD17_021DA36C
+MOD17_021DA36C: ; 0x021DA36C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ ldr r6, [r7, #0x1c]
+ mov r4, #0
+ add r7, #0x14
+ str r1, [sp]
+ str r2, [sp, #4]
+ add r5, r4, #0
+ cmp r6, r7
+ beq _021DA3CA
+_021DA382:
+ add r0, r6, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DA528
+ cmp r4, #0
+ bge _021DA394
+ neg r1, r4
+ b _021DA396
+_021DA394:
+ add r1, r4, #0
+_021DA396:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bge _021DA3A0
+ neg r2, r0
+ b _021DA3A2
+_021DA3A0:
+ add r2, r0, #0
+_021DA3A2:
+ cmp r2, r1
+ ble _021DA3A8
+ add r4, r0, #0
+_021DA3A8:
+ cmp r5, #0
+ bge _021DA3B0
+ neg r1, r5
+ b _021DA3B2
+_021DA3B0:
+ add r1, r5, #0
+_021DA3B2:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ bge _021DA3BC
+ neg r2, r0
+ b _021DA3BE
+_021DA3BC:
+ add r2, r0, #0
+_021DA3BE:
+ cmp r2, r1
+ ble _021DA3C4
+ add r5, r0, #0
+_021DA3C4:
+ ldr r6, [r6, #8]
+ cmp r6, r7
+ bne _021DA382
+_021DA3CA:
+ ldr r0, [sp]
+ str r4, [r0]
+ ldr r0, [sp, #4]
+ str r5, [r0]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA36C
+
+ thumb_func_start MOD17_021DA3D8
+MOD17_021DA3D8: ; 0x021DA3D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ ldr r4, [r0, #0x1c]
+ add r7, #0x14
+ str r0, [sp]
+ add r6, r1, #0
+ cmp r4, r7
+ beq _021DA436
+ asr r0, r6, #0xa
+ mov r1, #0x1f
+ and r0, r1
+ str r0, [sp, #0xc]
+ asr r0, r6, #5
+ and r0, r1
+ str r0, [sp, #8]
+ add r0, r6, #0
+ and r0, r1
+ str r0, [sp, #4]
+_021DA3FE:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021DA410
+ ldr r0, [r4]
+ add r1, r6, #0
+ ldr r0, [r0, #4]
+ bl FUN_02013F0C
+ b _021DA430
+_021DA410:
+ ldr r5, [r4]
+ ldr r2, [sp, #0xc]
+ ldr r0, [r5]
+ mov r1, #0x18
+ bl FUN_02007558
+ ldr r0, [r5]
+ ldr r2, [sp, #8]
+ mov r1, #0x19
+ bl FUN_02007558
+ ldr r0, [r5]
+ ldr r2, [sp, #4]
+ mov r1, #0x1a
+ bl FUN_02007558
+_021DA430:
+ ldr r4, [r4, #8]
+ cmp r4, r7
+ bne _021DA3FE
+_021DA436:
+ ldr r0, [sp]
+ ldr r4, [r0, #0xc]
+ add r5, r0, #4
+ cmp r4, r5
+ beq _021DA450
+_021DA440:
+ ldr r0, [r4]
+ add r1, r6, #0
+ ldr r0, [r0, #4]
+ bl FUN_02013F0C
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021DA440
+_021DA450:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA3D8
+
+ thumb_func_start MOD17_021DA454
+MOD17_021DA454: ; 0x021DA454
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x50
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ add r1, sp, #0x4c
+ add r2, sp, #0x48
+ add r4, r3, #0
+ bl MOD17_021DBBB8
+ ldr r0, [sp, #0x10]
+ add r1, sp, #0x44
+ add r2, sp, #0x40
+ bl MOD17_021DBC08
+ ldr r0, [sp, #0x10]
+ add r1, sp, #0x3c
+ add r2, sp, #0x38
+ bl MOD17_021DBC20
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r5, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x4c]
+ ldr r1, [sp, #0x44]
+ str r0, [sp, #0x24]
+ add r0, r0, r1
+ ldr r6, [sp, #0x3c]
+ ldr r1, [sp, #0x40]
+ sub r0, r0, r6
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x38]
+ str r0, [sp, #0x28]
+ add r0, r0, r1
+ sub r0, r0, r7
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ add r4, r5, #0
+ str r0, [sp, #0x2c]
+ add r0, #0x78
+ str r0, [sp, #0x2c]
+_021DA4AE:
+ str r4, [sp]
+ add r0, sp, #0x34
+ str r0, [sp, #4]
+ add r0, sp, #0x30
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x28]
+ ldr r2, [sp, #0x24]
+ ldr r1, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, r0, r7
+ add r2, r2, r6
+ bl MOD17_021D9E78
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x34]
+ ldr r2, [sp, #0x30]
+ ldr r3, [sp, #0x20]
+ bl MOD17_021DB8F8
+ add r4, r4, #1
+ orr r5, r0
+ cmp r4, #0x10
+ blt _021DA4AE
+ cmp r5, #0
+ beq _021DA504
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _021DA4F6
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r1, #0x14
+ str r1, [sp, #0xc]
+ bl MOD17_021DBA90
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA4F6:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r1, [r1, #0x20]
+ bl MOD17_021DBA90
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA504:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _021DA518
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r1, r1, #4
+ bl MOD17_021DBA90
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA518:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r1, [r1, #0x10]
+ bl MOD17_021DBA90
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA454
+
+ thumb_func_start MOD17_021DA528
+MOD17_021DA528: ; 0x021DA528
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r0, #0
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ bl MOD17_021DBC08
+ add r0, r6, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DBBB8
+ add r0, r6, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBC20
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x8a
+ add r3, r0, r1
+ sub r6, r2, r3
+ ldr r2, [sp, #0x14]
+ ldr r7, [sp, #8]
+ add r0, r0, r2
+ sub r3, r0, r1
+ ldr r2, [sp]
+ mov r0, #0x12
+ add r1, r7, r2
+ sub r0, r0, r1
+ ldr r1, [sp, #0x10]
+ sub r3, #0xf6
+ add r1, r7, r1
+ sub r2, r1, r2
+ sub r2, #0x8f
+ cmp r6, #0
+ ble _021DA57A
+ str r6, [r5]
+ b _021DA588
+_021DA57A:
+ cmp r3, #0
+ ble _021DA584
+ neg r1, r3
+ str r1, [r5]
+ b _021DA588
+_021DA584:
+ mov r1, #0
+ str r1, [r5]
+_021DA588:
+ cmp r0, #0
+ ble _021DA592
+ add sp, #0x18
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA592:
+ cmp r2, #0
+ ble _021DA59E
+ neg r0, r2
+ add sp, #0x18
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA59E:
+ mov r0, #0
+ str r0, [r4]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA528
+
+ thumb_func_start MOD17_021DA5A8
+MOD17_021DA5A8: ; 0x021DA5A8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ str r1, [r5, #0x44]
+ ldr r1, [r4, #4]
+ str r1, [r5, #0x48]
+ ldr r1, [r4, #8]
+ str r1, [r5, #0x4c]
+ ldr r1, [r4, #0xc]
+ str r1, [r5, #0x50]
+ ldr r1, [r4, #0x10]
+ str r1, [r5, #0x54]
+ ldr r1, [r4, #0x14]
+ str r1, [r5, #0x58]
+ ldr r1, [r4, #0x18]
+ str r1, [r5, #8]
+ ldr r1, [r4, #0x28]
+ str r1, [r5, #4]
+ mov r1, #0
+ bl MOD17_021DA9AC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021DAAC8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA5A8
+
+ thumb_func_start MOD17_021DA5E0
+MOD17_021DA5E0: ; 0x021DA5E0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl MOD17_021DA818
+ add r5, r6, #0
+ mov r4, #0
+ add r5, #0xc
+_021DA5EE:
+ add r0, r5, #0
+ bl MOD17_021DAB8C
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #4
+ blt _021DA5EE
+ add r0, r6, #0
+ mov r1, #0
+ mov r2, #0x8c
+ bl Call_FillMemWithValue
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DA5E0
+
+ thumb_func_start MOD17_021DA608
+MOD17_021DA608: ; 0x021DA608
+ push {r3, lr}
+ cmp r0, #0
+ beq _021DA618
+ cmp r0, #1
+ beq _021DA688
+ cmp r0, #2
+ beq _021DA696
+ pop {r3, pc}
+_021DA618:
+ cmp r1, #5
+ bgt _021DA620
+ mov r0, #0
+ pop {r3, pc}
+_021DA620:
+ cmp r1, #0xb
+ bgt _021DA628
+ mov r0, #1
+ pop {r3, pc}
+_021DA628:
+ cmp r1, #0x11
+ bgt _021DA630
+ mov r0, #2
+ pop {r3, pc}
+_021DA630:
+ cmp r1, #0x15
+ bgt _021DA638
+ mov r0, #3
+ pop {r3, pc}
+_021DA638:
+ cmp r1, #0x1c
+ bgt _021DA640
+ mov r0, #4
+ pop {r3, pc}
+_021DA640:
+ cmp r1, #0x21
+ bgt _021DA648
+ mov r0, #5
+ pop {r3, pc}
+_021DA648:
+ cmp r1, #0x26
+ bgt _021DA650
+ mov r0, #6
+ pop {r3, pc}
+_021DA650:
+ cmp r1, #0x2a
+ bgt _021DA658
+ mov r0, #7
+ pop {r3, pc}
+_021DA658:
+ cmp r1, #0x31
+ bgt _021DA660
+ mov r0, #8
+ pop {r3, pc}
+_021DA660:
+ cmp r1, #0x37
+ bgt _021DA668
+ mov r0, #9
+ pop {r3, pc}
+_021DA668:
+ cmp r1, #0x3c
+ bgt _021DA670
+ mov r0, #0xa
+ pop {r3, pc}
+_021DA670:
+ cmp r1, #0x47
+ bgt _021DA678
+ mov r0, #0xb
+ pop {r3, pc}
+_021DA678:
+ cmp r1, #0x5b
+ bgt _021DA680
+ mov r0, #0xc
+ pop {r3, pc}
+_021DA680:
+ cmp r1, #0x63
+ bgt _021DA6A2
+ mov r0, #0xd
+ pop {r3, pc}
+_021DA688:
+ add r0, r2, #0
+ bl MOD17_021DB014
+ mov r1, #9
+ bl _s32_div_f
+ pop {r3, pc}
+_021DA696:
+ add r0, r2, #0
+ bl MOD17_021DB014
+ mov r1, #9
+ bl _s32_div_f
+_021DA6A2:
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA608
+
+ thumb_func_start MOD17_021DA6A4
+MOD17_021DA6A4: ; 0x021DA6A4
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ add r4, r3, #0
+ cmp r0, #0
+ beq _021DA6B8
+ cmp r0, #1
+ beq _021DA6EA
+ cmp r0, #2
+ beq _021DA6EA
+ pop {r3, r4, r5, pc}
+_021DA6B8:
+ mov r0, #0xa
+ str r0, [r5]
+ mov r0, #0x12
+ str r0, [r4]
+ bl FUN_0201BA60
+ ldr r2, [sp, #0x10]
+ mov r1, #0x6c
+ sub r1, r1, r2
+ bl _u32_div_f
+ ldr r0, [r5]
+ add r0, r0, r1
+ str r0, [r5]
+ bl FUN_0201BA60
+ ldr r2, [sp, #0x14]
+ mov r1, #0x7d
+ sub r1, r1, r2
+ bl _u32_div_f
+ ldr r0, [r4]
+ add r0, r0, r1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DA6EA:
+ ldr r0, [sp, #0x18]
+ bl MOD17_021DB014
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD17_021DAC68
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA6A4
+
+ thumb_func_start MOD17_021DA6FC
+MOD17_021DA6FC: ; 0x021DA6FC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x48
+ add r5, r0, #0
+ ldr r0, [r5, #0x58]
+ add r4, r2, #0
+ str r4, [sp, #0x40]
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #0x44]
+ add r6, r1, #0
+ mov r1, #0
+ str r0, [sp, #0x2c]
+ str r1, [sp, #0x38]
+ str r1, [sp, #0x3c]
+ cmp r6, #0
+ beq _021DA724
+ cmp r6, #1
+ beq _021DA730
+ cmp r6, #2
+ beq _021DA73E
+ b _021DA74C
+_021DA724:
+ ldr r0, [r5, #0x50]
+ str r4, [sp, #0xc]
+ ldrb r0, [r0, r4]
+ add r7, r1, #0
+ str r0, [sp, #0x44]
+ b _021DA750
+_021DA730:
+ add r0, r4, #0
+ str r0, [sp, #0xc]
+ add r0, #0x64
+ str r0, [sp, #0xc]
+ add r7, r4, #1
+ str r1, [sp, #0x44]
+ b _021DA750
+_021DA73E:
+ add r0, r4, #0
+ str r0, [sp, #0xc]
+ add r0, #0x64
+ str r0, [sp, #0xc]
+ add r7, r4, #1
+ str r1, [sp, #0x44]
+ b _021DA750
+_021DA74C:
+ bl ErrorHandling
+_021DA750:
+ ldr r0, [sp, #0xc]
+ ldr r1, [r5, #0x48]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ lsl r1, r7, #2
+ str r0, [sp, #0x30]
+ ldr r2, [r5, #0x4c]
+ cmp r0, #0
+ ldr r1, [r2, r1]
+ str r1, [sp, #0x34]
+ bne _021DA76A
+ bl ErrorHandling
+_021DA76A:
+ ldr r0, [sp, #0x34]
+ cmp r0, #0
+ bne _021DA774
+ bl ErrorHandling
+_021DA774:
+ ldr r2, [r5, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD17_021DA608
+ add r7, r0, #0
+ add r0, sp, #0x28
+ bl MOD17_021D7520
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #8]
+ ldr r1, [sp, #0x10]
+ add r2, r6, #0
+ bl MOD17_021DBA30
+ mov r1, #0xc
+ mul r1, r6
+ add r1, r5, r1
+ ldr r2, [r1, #0xc]
+ lsl r1, r7, #4
+ add r1, r2, r1
+ ldr r1, [r1, #0xc]
+ str r0, [sp, #0x14]
+ bl MOD17_021DBA90
+ ldr r0, [sp, #0x14]
+ add r1, sp, #0x1c
+ add r2, sp, #0x18
+ bl MOD17_021DBC08
+ ldr r0, [sp, #0x1c]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ add r2, sp, #0x24
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ add r3, sp, #0x20
+ str r0, [sp, #8]
+ add r0, r6, #0
+ bl MOD17_021DA6A4
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x24]
+ ldr r2, [sp, #0x20]
+ bl MOD17_021DBB68
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DAC40
+ add sp, #0x48
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA6FC
+
+ thumb_func_start MOD17_021DA7E4
+MOD17_021DA7E4: ; 0x021DA7E4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ mov r1, #0xc
+ add r5, r0, #0
+ mul r1, r4
+ add r7, r3, #0
+ add r1, r5, r1
+ add r6, r2, #0
+ ldr r2, [r1, #0xc]
+ lsl r1, r6, #4
+ add r0, r7, #0
+ add r1, r2, r1
+ bl MOD17_021DBA90
+ ldr r1, [r7]
+ add r0, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD17_021DAC40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA7E4
+
+ thumb_func_start MOD17_021DA810
+MOD17_021DA810: ; 0x021DA810
+ ldr r3, _021DA814 ; =MOD17_021DBAA0
+ bx r3
+ .align 2, 0
+_021DA814: .word MOD17_021DBAA0
+ thumb_func_end MOD17_021DA810
+
+ thumb_func_start MOD17_021DA818
+MOD17_021DA818: ; 0x021DA818
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r7, #0
+_021DA81E:
+ ldr r0, [r5, #0x10]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DA83A
+ add r4, r6, #0
+_021DA828:
+ ldr r0, [r5, #0xc]
+ add r0, r0, r4
+ bl MOD17_021DBAB0
+ ldr r0, [r5, #0x10]
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, r0
+ blt _021DA828
+_021DA83A:
+ add r7, r7, #1
+ add r5, #0xc
+ cmp r7, #3
+ blt _021DA81E
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA818
+
+ thumb_func_start MOD17_021DA844
+MOD17_021DA844: ; 0x021DA844
+ push {r4, r5, r6, lr}
+ mov r5, #0
+ mvn r5, r5
+ bl MOD17_021DABB4
+ add r6, r0, #0
+ ldr r4, [r6, #8]
+ cmp r4, r6
+ beq _021DA86C
+_021DA856:
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bhi _021DA864
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD17_021D766C
+_021DA864:
+ ldr r4, [r4, #8]
+ sub r5, r5, #1
+ cmp r4, r6
+ bne _021DA856
+_021DA86C:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA844
+
+ thumb_func_start MOD17_021DA870
+MOD17_021DA870: ; 0x021DA870
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r1, [r5, #0x3c]
+ add r4, r2, #0
+ cmp r1, #0
+ bne _021DA8A8
+ ldr r1, [r5]
+ mov r2, #0xc
+ mul r2, r1
+ str r4, [sp]
+ add r2, r5, r2
+ ldr r2, [r2, #0x14]
+ add r3, r6, #0
+ bl MOD17_021DACA4
+ mov r0, #0xc
+ mul r0, r6
+ str r6, [r5]
+ add r0, r5, r0
+ str r4, [r0, #0x14]
+ add r0, r5, #0
+ bl MOD17_021DA844
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021DA8A8:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA870
+
+ thumb_func_start MOD17_021DA8B0
+MOD17_021DA8B0: ; 0x021DA8B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #4]
+ str r0, [sp]
+ str r2, [sp, #8]
+ bl MOD17_021DAA7C
+ add r7, r0, #0
+ ldr r0, [sp, #4]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, [sp]
+ mov r4, #1
+ add r6, r0, r1
+ ldr r0, [r6, #0x10]
+ cmp r0, #1
+ ble _021DA912
+_021DA8D2:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ bne _021DA8E4
+ ldr r1, [r6, #0x10]
+ add r0, r4, r7
+ bl _s32_div_f
+ add r5, r1, #0
+ b _021DA8EC
+_021DA8E4:
+ sub r5, r7, r4
+ bpl _021DA8EC
+ ldr r0, [r6, #0x10]
+ add r5, r5, r0
+_021DA8EC:
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r2, r5, #0
+ bl MOD17_021DABDC
+ ldr r1, [r0, #8]
+ cmp r1, r0
+ beq _021DA90A
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r2, r5, #0
+ bl MOD17_021DA870
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021DA90A:
+ ldr r0, [r6, #0x10]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _021DA8D2
+_021DA912:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA8B0
+
+ thumb_func_start MOD17_021DA918
+MOD17_021DA918: ; 0x021DA918
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ bl MOD17_021DAB38
+ mov r0, #0xc
+ mul r0, r4
+ str r4, [r5]
+ add r0, r5, r0
+ str r6, [r0, #0x14]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD17_021DAB38
+ add r0, r5, #0
+ bl MOD17_021DA844
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DA918
+
+ thumb_func_start MOD17_021DA940
+MOD17_021DA940: ; 0x021DA940
+ push {r3, lr}
+ mov r1, #0x12
+ add r0, sp, #0
+ strb r1, [r0]
+ mov r1, #0x8f
+ strb r1, [r0, #1]
+ mov r1, #0xa
+ strb r1, [r0, #2]
+ mov r1, #0x76
+ strb r1, [r0, #3]
+ add r0, sp, #0
+ bl FUN_02020A40
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA940
+
+ thumb_func_start MOD17_021DA95C
+MOD17_021DA95C: ; 0x021DA95C
+ push {r3, lr}
+ mov r3, #0x12
+ add r0, sp, #0
+ strb r3, [r0]
+ mov r3, #0x8f
+ strb r3, [r0, #1]
+ mov r3, #0xa
+ strb r3, [r0, #2]
+ mov r3, #0x76
+ strb r3, [r0, #3]
+ add r0, sp, #0
+ bl FUN_02020AE8
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA95C
+
+ thumb_func_start MOD17_021DA978
+MOD17_021DA978: ; 0x021DA978
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ bl MOD17_021DABB4
+ add r5, r0, #0
+ ldr r4, [r5, #8]
+ cmp r4, r5
+ beq _021DA9A6
+_021DA98C:
+ ldr r3, [sp]
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD17_021DBB1C
+ cmp r0, #1
+ bne _021DA9A0
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA9A0:
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021DA98C
+_021DA9A6:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA978
+
+ thumb_func_start MOD17_021DA9AC
+MOD17_021DA9AC: ; 0x021DA9AC
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, [r5, #0x54]
+ add r4, r1, #0
+ str r0, [sp]
+ mov r0, #0x19
+ lsl r1, r4, #1
+ str r0, [sp, #4]
+ add r0, r1, #0
+ add r0, #0x81
+ str r0, [sp, #8]
+ mov r0, #0x85
+ str r0, [sp, #0xc]
+ mov r0, #8
+ str r0, [sp, #0x14]
+ mov r0, #0x81
+ str r0, [sp, #0x18]
+ mov r0, #3
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ str r0, [sp, #0x20]
+ mov r0, #2
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #0xe
+ add r1, #0x82
+ str r0, [sp, #0x2c]
+ add r0, r5, #0
+ str r1, [sp, #0x10]
+ add r0, #0x5c
+ add r1, sp, #0
+ bl MOD17_021DBD04
+ str r4, [r5, #0x40]
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DA9AC
+
+ thumb_func_start MOD17_021DA9F8
+MOD17_021DA9F8: ; 0x021DA9F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0
+ ldr r0, [r5, #0x54]
+ add r4, r1, #0
+ str r0, [sp, #8]
+ mov r0, #0x19
+ lsl r1, r4, #1
+ str r0, [sp, #0xc]
+ add r0, r1, #0
+ add r0, #0x81
+ str r0, [sp, #0x10]
+ mov r0, #0x85
+ str r0, [sp, #0x14]
+ mov r0, #8
+ add r1, #0x82
+ str r0, [sp, #0x1c]
+ mov r0, #0x81
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x20]
+ mov r0, #3
+ mov r1, #2
+ str r0, [sp, #0x24]
+ mov r0, #1
+ str r1, [sp, #0x2c]
+ mov r7, #0
+ mov r1, #0xe
+ str r0, [sp, #0x28]
+ str r7, [sp, #0x30]
+ str r1, [sp, #0x34]
+ tst r0, r2
+ beq _021DAA3A
+ mov r7, #0x70
+_021DAA3A:
+ mov r0, #2
+ tst r0, r2
+ beq _021DAA44
+ mov r6, #0x81
+ b _021DAA46
+_021DAA44:
+ mov r6, #0
+_021DAA46:
+ ldr r0, [sp, #0x50]
+ str r3, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x5c
+ add r1, sp, #8
+ add r2, r7, #0
+ add r3, r6, #0
+ bl MOD17_021DBE3C
+ str r4, [r5, #0x40]
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA9F8
+
+ thumb_func_start MOD17_021DAA60
+MOD17_021DAA60: ; 0x021DAA60
+ ldr r3, _021DAA68 ; =MOD17_021DBD4C
+ add r0, #0x5c
+ bx r3
+ nop
+_021DAA68: .word MOD17_021DBD4C
+ thumb_func_end MOD17_021DAA60
+
+ thumb_func_start MOD17_021DAA6C
+MOD17_021DAA6C: ; 0x021DAA6C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DAA76
+ bl ErrorHandling
+_021DAA76:
+ ldr r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAA6C
+
+ thumb_func_start MOD17_021DAA7C
+MOD17_021DAA7C: ; 0x021DAA7C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0
+ bne _021DAA8C
+ bl ErrorHandling
+_021DAA8C:
+ mov r0, #0xc
+ mul r0, r4
+ add r3, r5, r0
+ add r3, #0xc
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [sp, #8]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD17_021DAA7C
+
+ thumb_func_start MOD17_021DAAA4
+MOD17_021DAAA4: ; 0x021DAAA4
+ push {r4, lr}
+ add r4, r3, #0
+ bl MOD17_021DABDC
+ ldr r2, [sp, #8]
+ add r1, r4, #0
+ bl MOD17_021DBC38
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAAA4
+
+ thumb_func_start MOD17_021DAAB8
+MOD17_021DAAB8: ; 0x021DAAB8
+ ldr r0, [r0, #0x3c]
+ cmp r0, #0
+ bne _021DAAC2
+ mov r0, #1
+ bx lr
+_021DAAC2:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DAAB8
+
+ thumb_func_start MOD17_021DAAC8
+MOD17_021DAAC8: ; 0x021DAAC8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0x1c]
+ add r5, r0, #0
+ add r0, #0xc
+ bl MOD17_021DAB48
+ mov r0, #0
+ str r0, [r5]
+ ldr r0, [r5, #0xc]
+ mov r1, #1
+ bl MOD17_021DAB04
+ add r0, r5, #0
+ ldr r1, [r4, #0x20]
+ add r0, #0x18
+ bl MOD17_021DAB48
+ add r0, r5, #0
+ ldr r1, [r4, #0x24]
+ add r0, #0x24
+ bl MOD17_021DAB48
+ add r5, #0x30
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD17_021DAB48
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAAC8
+
+ thumb_func_start MOD17_021DAB04
+MOD17_021DAB04: ; 0x021DAB04
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #8]
+ add r6, r1, #0
+ cmp r4, r5
+ beq _021DAB24
+_021DAB10:
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bhi _021DAB1E
+ ldr r0, [r4]
+ add r1, r6, #0
+ bl MOD17_021D7660
+_021DAB1E:
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021DAB10
+_021DAB24:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAB04
+
+ thumb_func_start MOD17_021DAB28
+MOD17_021DAB28: ; 0x021DAB28
+ push {r4, lr}
+ add r4, r3, #0
+ bl MOD17_021DABDC
+ add r1, r4, #0
+ bl MOD17_021DAB04
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAB28
+
+ thumb_func_start MOD17_021DAB38
+MOD17_021DAB38: ; 0x021DAB38
+ push {r4, lr}
+ add r4, r1, #0
+ bl MOD17_021DABB4
+ add r1, r4, #0
+ bl MOD17_021DAB04
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAB38
+
+ thumb_func_start MOD17_021DAB48
+MOD17_021DAB48: ; 0x021DAB48
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r0, #0xe
+ lsl r1, r4, #4
+ bl FUN_02016998
+ str r0, [r5]
+ str r4, [r5, #4]
+ mov r6, #0
+ str r6, [r5, #8]
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ ble _021DAB88
+ add r4, r6, #0
+ add r7, r6, #0
+_021DAB68:
+ ldr r0, [r5]
+ add r1, r7, #0
+ add r0, r0, r4
+ str r0, [r0, #8]
+ ldr r0, [r5]
+ add r0, r0, r4
+ str r0, [r0, #0xc]
+ ldr r0, [r5]
+ add r0, r0, r4
+ bl MOD17_021DAB04
+ ldr r0, [r5, #4]
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, r0
+ blt _021DAB68
+_021DAB88:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAB48
+
+ thumb_func_start MOD17_021DAB8C
+MOD17_021DAB8C: ; 0x021DAB8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAB8C
+
+ thumb_func_start MOD17_021DABB4
+MOD17_021DABB4: ; 0x021DABB4
+ push {r3}
+ sub sp, #0xc
+ ldr r2, [r0]
+ mov r1, #0xc
+ mul r1, r2
+ add r3, r0, r1
+ add r3, #0xc
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [sp, #8]
+ ldr r1, [sp]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add sp, #0xc
+ pop {r3}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DABB4
+
+ thumb_func_start MOD17_021DABDC
+MOD17_021DABDC: ; 0x021DABDC
+ push {r4}
+ sub sp, #0xc
+ mov r3, #0xc
+ mul r3, r1
+ add r4, r0, r3
+ add r4, #0xc
+ ldmia r4!, {r0, r1}
+ add r3, sp, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ str r0, [r3]
+ ldr r1, [sp]
+ lsl r0, r2, #4
+ add r0, r1, r0
+ add sp, #0xc
+ pop {r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DABDC
+
+ thumb_func_start MOD17_021DAC00
+MOD17_021DAC00: ; 0x021DAC00
+ push {r4, lr}
+ mov r4, #0
+ bl MOD17_021DABDC
+ ldr r1, [r0, #8]
+ cmp r1, r0
+ beq _021DAC16
+_021DAC0E:
+ ldr r1, [r1, #8]
+ add r4, r4, #1
+ cmp r1, r0
+ bne _021DAC0E
+_021DAC16:
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAC00
+
+ thumb_func_start MOD17_021DAC1C
+MOD17_021DAC1C: ; 0x021DAC1C
+ push {r3, r4, r5, lr}
+ add r5, r3, #0
+ mov r4, #0
+ bl MOD17_021DABDC
+ ldr r1, [r0, #8]
+ cmp r1, r0
+ beq _021DAC3C
+_021DAC2C:
+ cmp r4, r5
+ bne _021DAC34
+ add r0, r1, #0
+ pop {r3, r4, r5, pc}
+_021DAC34:
+ ldr r1, [r1, #8]
+ add r4, r4, #1
+ cmp r1, r0
+ bne _021DAC2C
+_021DAC3C:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DAC1C
+
+ thumb_func_start MOD17_021DAC40
+MOD17_021DAC40: ; 0x021DAC40
+ push {r4, lr}
+ ldr r4, [r0]
+ cmp r4, r2
+ bne _021DAC54
+ mov r4, #0xc
+ mul r4, r2
+ add r0, r0, r4
+ ldr r0, [r0, #0x14]
+ cmp r3, r0
+ beq _021DAC5E
+_021DAC54:
+ add r0, r1, #0
+ mov r1, #0
+ bl MOD17_021D7660
+ pop {r4, pc}
+_021DAC5E:
+ add r0, r1, #0
+ mov r1, #1
+ bl MOD17_021D7660
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAC40
+
+ thumb_func_start MOD17_021DAC68
+MOD17_021DAC68: ; 0x021DAC68
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ mov r1, #9
+ add r4, r2, #0
+ bl _s32_div_f
+ add r7, r1, #0
+ add r0, r7, #0
+ mov r1, #3
+ bl _s32_div_f
+ add r6, r0, #0
+ add r0, r7, #0
+ mov r1, #3
+ bl _s32_div_f
+ add r0, r6, #1
+ lsl r2, r0, #3
+ lsl r0, r6, #5
+ add r0, r2, r0
+ add r0, #0x10
+ str r0, [r4]
+ add r0, r1, #1
+ lsl r2, r0, #3
+ mov r0, #0x18
+ mul r0, r1
+ add r0, r2, r0
+ add r0, #8
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DAC68
+
+ thumb_func_start MOD17_021DACA4
+MOD17_021DACA4: ; 0x021DACA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ ldr r0, _021DAD18 ; =MOD17_021DAD1C
+ mov r1, #0x30
+ mov r2, #0
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ ldr r0, [sp]
+ str r7, [r4, #8]
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x18]
+ add r1, r6, #0
+ str r0, [r4, #0x10]
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD17_021DAC00
+ str r0, [r4, #0x20]
+ ldr r1, [sp]
+ ldr r2, [sp, #0x18]
+ add r0, r5, #0
+ bl MOD17_021DAC00
+ str r0, [r4, #0x24]
+ ldr r1, [r4, #0x20]
+ add r2, r1, r0
+ mov r1, #0xc
+ mov r0, #0xd
+ mul r1, r2
+ str r2, [r4, #0x2c]
+ bl FUN_02016998
+ str r0, [r4, #0x28]
+ cmp r0, #0
+ bne _021DAD04
+ bl ErrorHandling
+_021DAD04:
+ ldr r3, [r4, #0x2c]
+ mov r2, #0xc
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ mul r2, r3
+ bl Call_FillMemWithValue
+ mov r0, #1
+ str r0, [r5, #0x3c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAD18: .word MOD17_021DAD1C
+ thumb_func_end MOD17_021DACA4
+
+ thumb_func_start MOD17_021DAD1C
+MOD17_021DAD1C: ; 0x021DAD1C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x1c]
+ cmp r0, #4
+ bls _021DAD2C
+ b _021DAE74
+_021DAD2C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DAD38: ; jump table
+ .short _021DAD42 - _021DAD38 - 2 ; case 0
+ .short _021DAD96 - _021DAD38 - 2 ; case 1
+ .short _021DADE2 - _021DAD38 - 2 ; case 2
+ .short _021DAE28 - _021DAD38 - 2 ; case 3
+ .short _021DAE40 - _021DAD38 - 2 ; case 4
+_021DAD42:
+ mov r0, #0x83
+ mvn r0, r0
+ str r0, [sp]
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ mov r3, #0
+ bl MOD17_021DAAA4
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ mov r3, #1
+ bl MOD17_021DAB28
+ mov r0, #0
+ str r0, [r4, #0x14]
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x14
+ str r1, [sp]
+ ldr r1, [r0, #0x40]
+ add r1, r1, #1
+ lsr r3, r1, #0x1f
+ lsl r2, r1, #0x1f
+ sub r2, r2, r3
+ mov r1, #0x1f
+ ror r2, r1
+ add r1, r3, r2
+ mov r2, #2
+ mov r3, #5
+ bl MOD17_021DA9F8
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ bl MOD17_021DAF30
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ b _021DAE78
+_021DAD96:
+ ldr r0, [r4, #0x18]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DADCA
+ add r5, r4, #0
+ add r5, #0x20
+_021DADA2:
+ ldr r0, [r4, #0x20]
+ sub r0, r0, #1
+ bmi _021DADC2
+ ldr r0, [r5]
+ sub r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0x20]
+ bl MOD17_021DAC1C
+ ldr r1, [r4, #0x28]
+ ldr r2, [r4, #0x2c]
+ bl MOD17_021DAE84
+_021DADC2:
+ ldr r0, [r4, #0x18]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _021DADA2
+_021DADCA:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ bne _021DAE78
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD17_021DAF30
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ b _021DAE78
+_021DADE2:
+ ldr r0, [r4, #0x18]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DAE16
+ add r5, r4, #0
+ add r5, #0x24
+_021DADEE:
+ ldr r0, [r4, #0x24]
+ sub r0, r0, #1
+ bmi _021DAE0E
+ ldr r0, [r5]
+ sub r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0x24]
+ bl MOD17_021DAC1C
+ ldr r1, [r4, #0x28]
+ ldr r2, [r4, #0x2c]
+ bl MOD17_021DAE84
+_021DAE0E:
+ ldr r0, [r4, #0x18]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _021DADEE
+_021DAE16:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ bne _021DAE78
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ mov r0, #0
+ str r0, [r4, #0x18]
+ b _021DAE78
+_021DAE28:
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ cmp r0, #3
+ ble _021DAE78
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DAE78
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ b _021DAE78
+_021DAE40:
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ mov r3, #0
+ bl MOD17_021DAB28
+ mov r0, #0x83
+ mvn r0, r0
+ str r0, [sp]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ mov r3, #0
+ bl MOD17_021DAAA4
+ ldr r0, [r4]
+ mov r1, #0
+ str r1, [r0, #0x3c]
+ ldr r0, [r4, #0x28]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200621C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_021DAE74:
+ bl ErrorHandling
+_021DAE78:
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ bl MOD17_021DAEC4
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD17_021DAD1C
+
+ thumb_func_start MOD17_021DAE84
+MOD17_021DAE84: ; 0x021DAE84
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ bl MOD17_021DAE9C
+ str r4, [r0]
+ mov r1, #3
+ str r1, [r0, #4]
+ mov r1, #0x2c
+ str r1, [r0, #8]
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAE84
+
+ thumb_func_start MOD17_021DAE9C
+MOD17_021DAE9C: ; 0x021DAE9C
+ push {r3, r4}
+ mov r3, #0
+ cmp r1, #0
+ ble _021DAEBE
+ add r4, r0, #0
+_021DAEA6:
+ ldr r2, [r4]
+ cmp r2, #0
+ bne _021DAEB6
+ mov r1, #0xc
+ mul r1, r3
+ add r0, r0, r1
+ pop {r3, r4}
+ bx lr
+_021DAEB6:
+ add r3, r3, #1
+ add r4, #0xc
+ cmp r3, r1
+ blt _021DAEA6
+_021DAEBE:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD17_021DAE9C
+
+ thumb_func_start MOD17_021DAEC4
+MOD17_021DAEC4: ; 0x021DAEC4
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ mov r4, #0
+ cmp r6, #0
+ ble _021DAEE4
+_021DAED0:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021DAEDC
+ add r0, r5, #0
+ bl MOD17_021DAEE8
+_021DAEDC:
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, r6
+ blt _021DAED0
+_021DAEE4:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAEC4
+
+ thumb_func_start MOD17_021DAEE8
+MOD17_021DAEE8: ; 0x021DAEE8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r1, [sp]
+ ldr r0, [r4, #8]
+ add r2, r1, r0
+ str r2, [sp]
+ ldr r0, [r4]
+ ldr r1, [sp, #4]
+ bl MOD17_021DBB68
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ cmp r0, #0
+ bgt _021DAF2C
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+_021DAF2C:
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAEE8
+
+ thumb_func_start MOD17_021DAF30
+MOD17_021DAF30: ; 0x021DAF30
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ bl _s32_div_f
+ sub r0, r4, r1
+ add r0, r5, r0
+ add r1, r4, #0
+ bl _s32_div_f
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAF30
+
+ thumb_func_start MOD17_021DAF48
+MOD17_021DAF48: ; 0x021DAF48
+ add r3, r0, #0
+ mov r2, #0x1c
+ mov r1, #0
+_021DAF4E:
+ strb r1, [r3]
+ add r3, r3, #1
+ sub r2, r2, #1
+ bne _021DAF4E
+ ldr r1, _021DAF60 ; =MOD17_021DAFA0
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+_021DAF60: .word MOD17_021DAFA0
+ thumb_func_end MOD17_021DAF48
+
+ thumb_func_start MOD17_021DAF64
+MOD17_021DAF64: ; 0x021DAF64
+ push {r4, lr}
+ ldr r1, _021DAF9C ; =0x021C48F8
+ add r4, r0, #0
+ ldrh r2, [r1, #0x20]
+ cmp r2, #0
+ beq _021DAF76
+ ldr r1, [r4, #4]
+ blx r1
+ b _021DAF8C
+_021DAF76:
+ ldrh r1, [r1, #0x22]
+ cmp r1, #0
+ beq _021DAF82
+ ldr r1, [r4, #0xc]
+ blx r1
+ b _021DAF8C
+_021DAF82:
+ ldrb r1, [r4, #0x18]
+ cmp r1, #0
+ beq _021DAF8C
+ ldr r1, [r4, #8]
+ blx r1
+_021DAF8C:
+ ldr r0, _021DAF9C ; =0x021C48F8
+ ldrh r1, [r0, #0x1c]
+ strh r1, [r4, #0x14]
+ ldrh r1, [r0, #0x1e]
+ strh r1, [r4, #0x16]
+ ldrh r0, [r0, #0x22]
+ strb r0, [r4, #0x18]
+ pop {r4, pc}
+ .align 2, 0
+_021DAF9C: .word 0x021C48F8
+ thumb_func_end MOD17_021DAF64
+
+ thumb_func_start MOD17_021DAFA0
+MOD17_021DAFA0: ; 0x021DAFA0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DAFA0
+
+ thumb_func_start MOD17_021DAFA4
+MOD17_021DAFA4: ; 0x021DAFA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r7, #0
+_021DAFAE:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02027114
+ add r4, r4, #1
+ stmia r5!, {r0}
+ cmp r4, #0x64
+ blt _021DAFAE
+ mov r0, #0x19
+ mov r3, #0
+ add r2, r7, #0
+ mov r1, #0x12
+ lsl r0, r0, #4
+_021DAFC8:
+ add r3, r3, #1
+ str r1, [r2, r0]
+ add r2, r2, #4
+ cmp r3, #0x12
+ blt _021DAFC8
+ mov r5, #0x19
+ mov r4, #0
+ lsl r5, r5, #4
+_021DAFD8:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0202714C
+ cmp r0, #0x12
+ beq _021DAFEA
+ lsl r0, r0, #2
+ add r0, r7, r0
+ str r4, [r0, r5]
+_021DAFEA:
+ add r4, r4, #1
+ cmp r4, #0x12
+ blt _021DAFD8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAFA4
+
+ thumb_func_start MOD17_021DAFF4
+MOD17_021DAFF4: ; 0x021DAFF4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0x64
+ blo _021DB002
+ bl ErrorHandling
+_021DB002:
+ lsl r0, r5, #2
+ ldr r0, [r4, r0]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DAFF4
+
+ thumb_func_start MOD17_021DB008
+MOD17_021DB008: ; 0x021DB008
+ lsl r1, r1, #2
+ add r1, r0, r1
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bx lr
+ thumb_func_end MOD17_021DB008
+
+ thumb_func_start MOD17_021DB014
+MOD17_021DB014: ; 0x021DB014
+ push {r3, r4}
+ mov r2, #0x19
+ mov r4, #0
+ lsl r2, r2, #4
+_021DB01C:
+ ldr r3, [r0, r2]
+ cmp r1, r3
+ bne _021DB028
+ add r0, r4, #0
+ pop {r3, r4}
+ bx lr
+_021DB028:
+ add r4, r4, #1
+ add r0, r0, #4
+ cmp r4, #0x12
+ blt _021DB01C
+ add r0, r4, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB014
+
+ thumb_func_start MOD17_021DB038
+MOD17_021DB038: ; 0x021DB038
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD17_021DAF48
+ mov r0, #0xd
+ mov r1, #0x34
+ bl FUN_02016998
+ str r0, [r5]
+ mov r1, #0
+ mov r2, #0x34
+ bl Call_FillMemWithValue
+ ldr r1, [r5]
+ ldr r0, [sp, #0x18]
+ str r4, [r1, #4]
+ str r6, [r1, #8]
+ str r7, [r1]
+ str r0, [r1, #0xc]
+ ldr r0, [sp, #0x1c]
+ str r0, [r1, #0x2c]
+ ldr r0, _021DB07C ; =MOD17_021DB0A0
+ str r0, [r5, #4]
+ ldr r0, _021DB080 ; =MOD17_021DB210
+ str r0, [r5, #8]
+ ldr r0, _021DB084 ; =MOD17_021DB3A4
+ str r0, [r5, #0xc]
+ ldr r0, _021DB088 ; =MOD17_021DB08C
+ str r0, [r5, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DB07C: .word MOD17_021DB0A0
+_021DB080: .word MOD17_021DB210
+_021DB084: .word MOD17_021DB3A4
+_021DB088: .word MOD17_021DB08C
+ thumb_func_end MOD17_021DB038
+
+ thumb_func_start MOD17_021DB08C
+MOD17_021DB08C: ; 0x021DB08C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl MOD17_021DAF48
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB08C
+
+ thumb_func_start MOD17_021DB0A0
+MOD17_021DB0A0: ; 0x021DB0A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #4]
+ bl MOD17_021DA250
+ cmp r0, #0
+ beq _021DB122
+ ldr r3, [r4]
+ ldr r0, [r4, #4]
+ ldr r3, [r3, #0x30]
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DA288
+ add r6, r0, #0
+ beq _021DB0D2
+ ldr r0, [r6, #4]
+ cmp r0, #3
+ bne _021DB0D2
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ bne _021DB0D2
+ mov r6, #0
+_021DB0D2:
+ cmp r6, #0
+ beq _021DB15E
+ ldr r0, [r6, #4]
+ cmp r0, #0
+ bne _021DB0E8
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD17_021DA0E8
+ mov r7, #0
+ b _021DB104
+_021DB0E8:
+ add r0, r6, #0
+ bl MOD17_021DA050
+ ldr r0, [r6]
+ bl MOD17_021DB7E8
+ add r1, r4, #0
+ add r2, r4, #0
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, #0x24
+ add r2, #0x28
+ bl MOD17_021DBBB8
+_021DB104:
+ ldr r0, [r4, #4]
+ bl MOD17_021DA178
+ ldr r0, [sp, #8]
+ add r1, r6, #0
+ str r0, [sp]
+ str r7, [sp, #4]
+ ldr r3, [sp, #0xc]
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD17_021DB4D8
+ bl MOD17_021D7A7C
+ b _021DB15E
+_021DB122:
+ ldr r0, [r4, #8]
+ bl MOD17_021DA940
+ cmp r0, #0
+ beq _021DB15E
+ ldr r3, [r4]
+ ldr r0, [r4, #8]
+ ldr r3, [r3, #0x30]
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DA978
+ add r6, r0, #0
+ beq _021DB15E
+ bl MOD17_021DA810
+ ldr r0, [r4, #8]
+ bl MOD17_021DA844
+ ldr r0, [sp, #8]
+ mov r2, #0
+ str r0, [sp]
+ str r2, [sp, #4]
+ ldr r3, [sp, #0xc]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD17_021DB4D8
+ bl MOD17_021D7A7C
+_021DB15E:
+ ldr r1, [r4, #0x10]
+ cmp r1, #0
+ beq _021DB1A8
+ ldr r1, [r1, #4]
+ ldr r0, _021DB1AC ; =0x000005EB
+ cmp r1, #0
+ beq _021DB176
+ cmp r1, #1
+ beq _021DB180
+ cmp r1, #3
+ beq _021DB192
+ b _021DB19A
+_021DB176:
+ ldr r1, _021DB1B0 ; =MOD17_021DB210
+ str r1, [r5, #8]
+ ldr r1, _021DB1B4 ; =MOD17_021DB3A4
+ str r1, [r5, #0xc]
+ b _021DB19A
+_021DB180:
+ ldr r0, _021DB1B8 ; =MOD17_021DB1D0
+ str r0, [r5, #8]
+ ldr r0, _021DB1BC ; =MOD17_021DB1CC
+ str r0, [r5, #0xc]
+ add r0, r5, #0
+ bl MOD17_021DB4AC
+ ldr r0, _021DB1C0 ; =0x0000067E
+ b _021DB19A
+_021DB192:
+ ldr r1, _021DB1C4 ; =MOD17_021DB3D4
+ str r1, [r5, #8]
+ ldr r1, _021DB1C8 ; =MOD17_021DB404
+ str r1, [r5, #0xc]
+_021DB19A:
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD17_021DB680
+_021DB1A8:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB1AC: .word 0x000005EB
+_021DB1B0: .word MOD17_021DB210
+_021DB1B4: .word MOD17_021DB3A4
+_021DB1B8: .word MOD17_021DB1D0
+_021DB1BC: .word MOD17_021DB1CC
+_021DB1C0: .word 0x0000067E
+_021DB1C4: .word MOD17_021DB3D4
+_021DB1C8: .word MOD17_021DB404
+ thumb_func_end MOD17_021DB0A0
+
+ thumb_func_start MOD17_021DB1CC
+MOD17_021DB1CC: ; 0x021DB1CC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB1CC
+
+ thumb_func_start MOD17_021DB1D0
+MOD17_021DB1D0: ; 0x021DB1D0
+ push {r4, lr}
+ sub sp, #8
+ ldr r4, [r0]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DB20A
+ ldr r0, [r0, #4]
+ cmp r0, #1
+ beq _021DB1E6
+ bl ErrorHandling
+_021DB1E6:
+ ldr r0, [r4, #0x10]
+ mov r2, #0x1c
+ ldr r0, [r0, #4]
+ mov r3, #0x1e
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ mov r1, #4
+ str r0, [sp, #4]
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ add r0, r4, #0
+ bl MOD17_021DB59C
+ add r0, r4, #0
+ bl MOD17_021DB534
+_021DB20A:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB1D0
+
+ thumb_func_start MOD17_021DB210
+MOD17_021DB210: ; 0x021DB210
+ push {r4, r5, r6, lr}
+ sub sp, #0x28
+ add r6, r0, #0
+ ldr r4, [r6]
+ ldr r1, [r4, #0x10]
+ cmp r1, #0
+ bne _021DB220
+ b _021DB38E
+_021DB220:
+ add r1, sp, #0x18
+ str r1, [sp]
+ add r1, sp, #0x24
+ add r2, sp, #0x20
+ add r3, sp, #0x1c
+ bl MOD17_021DB588
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x24]
+ bl MOD17_021DA26C
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x24]
+ bl MOD17_021DA26C
+ add r5, r5, r0
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ bl MOD17_021DA26C
+ add r5, r5, r0
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x20]
+ bl MOD17_021DA26C
+ add r0, r5, r0
+ cmp r0, #4
+ blt _021DB2C2
+ ldr r2, [r4]
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r2, #0x30]
+ bl MOD17_021DA0C4
+ cmp r0, #0
+ bne _021DB2AC
+ mov r0, #0x1c
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #0xc]
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #8]
+ ldr r0, _021DB394 ; =0x00000683
+ bl FUN_020054C8
+ ldr r0, [r4, #0xc]
+ ldr r2, _021DB398 ; =0x00000151
+ mov r1, #0x1a
+ mov r3, #3
+ bl MOD17_021DCB48
+ ldr r0, [r4, #0x10]
+ mov r1, #4
+ ldr r0, [r0, #4]
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ str r0, [sp, #4]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD17_021DB59C
+ b _021DB388
+_021DB2AC:
+ ldr r0, [r4, #4]
+ bl MOD17_021DA178
+ bl MOD17_021D7A4C
+ mov r0, #0
+ str r0, [r4, #0x30]
+ ldr r0, _021DB39C ; =0x000005EA
+ bl FUN_020054C8
+ b _021DB388
+_021DB2C2:
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x24
+ ldr r5, [r0]
+ add r0, sp, #0x18
+ str r0, [sp]
+ add r0, r6, #0
+ add r2, sp, #0x20
+ add r3, sp, #0x1c
+ bl MOD17_021DB548
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x24]
+ bl MOD17_021DA95C
+ add r6, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x20]
+ bl MOD17_021DA95C
+ add r0, r6, r0
+ cmp r0, #2
+ bge _021DB340
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021DB32C
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ bl MOD17_021DBC08
+ bl FUN_0201BA60
+ ldr r2, [sp, #0x14]
+ mov r1, #0x6c
+ sub r1, r1, r2
+ bl _u32_div_f
+ add r1, #0xa
+ str r1, [sp, #0xc]
+ bl FUN_0201BA60
+ ldr r2, [sp, #0x10]
+ mov r1, #0x7d
+ sub r1, r1, r2
+ bl _u32_div_f
+ add r1, #0x12
+ str r1, [sp, #8]
+ b _021DB338
+_021DB32C:
+ mov r0, #0x1c
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #0xc]
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #8]
+_021DB338:
+ ldr r0, _021DB394 ; =0x00000683
+ bl FUN_020054C8
+ b _021DB350
+_021DB340:
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DBBB8
+ ldr r0, _021DB3A0 ; =0x000005EB
+ bl FUN_020054C8
+_021DB350:
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021DB36E
+ ldr r0, [r4, #0x10]
+ ldr r2, [r4, #8]
+ ldr r0, [r0, #4]
+ ldr r1, [r5]
+ ldr r2, [r2, #4]
+ bl MOD17_021DA608
+ add r1, r4, #0
+ add r1, #0x21
+ strb r0, [r1]
+_021DB36E:
+ ldr r0, [r4, #0x10]
+ mov r1, #4
+ ldr r0, [r0, #4]
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ str r0, [sp, #4]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD17_021DB59C
+_021DB388:
+ add r0, r4, #0
+ bl MOD17_021DB534
+_021DB38E:
+ add sp, #0x28
+ pop {r4, r5, r6, pc}
+ nop
+_021DB394: .word 0x00000683
+_021DB398: .word 0x00000151
+_021DB39C: .word 0x000005EA
+_021DB3A0: .word 0x000005EB
+ thumb_func_end MOD17_021DB210
+
+ thumb_func_start MOD17_021DB3A4
+MOD17_021DB3A4: ; 0x021DB3A4
+ push {r4, lr}
+ ldr r2, [r0]
+ ldr r0, [r2, #0x10]
+ cmp r0, #0
+ beq _021DB3C8
+ ldr r3, _021DB3CC ; =0x021C48F8
+ ldr r1, _021DB3D0 ; =0x0000FFFF
+ ldrh r4, [r3, #0x1c]
+ cmp r4, r1
+ beq _021DB3C8
+ beq _021DB3C8
+ ldrh r3, [r3, #0x1e]
+ ldr r1, [r2, #0x14]
+ ldr r2, [r2, #0x18]
+ sub r1, r4, r1
+ sub r2, r3, r2
+ bl MOD17_021DBB68
+_021DB3C8:
+ pop {r4, pc}
+ nop
+_021DB3CC: .word 0x021C48F8
+_021DB3D0: .word 0x0000FFFF
+ thumb_func_end MOD17_021DB3A4
+
+ thumb_func_start MOD17_021DB3D4
+MOD17_021DB3D4: ; 0x021DB3D4
+ push {r4, lr}
+ ldr r4, [r0]
+ ldr r1, [r4, #0x10]
+ cmp r1, #0
+ beq _021DB3FE
+ ldr r0, [r4, #4]
+ bl MOD17_021DA040
+ ldr r0, [r4, #4]
+ bl MOD17_021DA178
+ bl MOD17_021D7A4C
+ mov r0, #0
+ str r0, [r4, #0x30]
+ ldr r0, _021DB400 ; =0x000005EB
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD17_021DB534
+_021DB3FE:
+ pop {r4, pc}
+ .align 2, 0
+_021DB400: .word 0x000005EB
+ thumb_func_end MOD17_021DB3D4
+
+ thumb_func_start MOD17_021DB404
+MOD17_021DB404: ; 0x021DB404
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [r0]
+ str r0, [sp]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DB49E
+ ldr r1, _021DB4A4 ; =0x021C48F8
+ ldrh r2, [r1, #0x1c]
+ ldr r1, _021DB4A8 ; =0x0000FFFF
+ cmp r2, r1
+ beq _021DB49E
+ beq _021DB49E
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021DBC20
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD17_021DBC08
+ ldr r0, _021DB4A4 ; =0x021C48F8
+ ldr r1, [r4, #0x14]
+ ldrh r2, [r0, #0x1c]
+ ldr r3, [sp, #0xc]
+ sub r5, r2, r1
+ ldrh r1, [r0, #0x1e]
+ ldr r0, [r4, #0x18]
+ ldr r2, [sp, #4]
+ sub r6, r1, r0
+ sub r3, r3, r2
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #0x10]
+ str r3, [sp, #0xc]
+ sub r0, r0, r1
+ add r3, r5, r1
+ add r7, r6, r2
+ str r0, [sp, #0x10]
+ cmp r3, #0x8a
+ bgt _021DB45C
+ mov r0, #0x8a
+ sub r5, r0, r1
+ b _021DB466
+_021DB45C:
+ add r1, r5, r0
+ cmp r1, #0xf6
+ blt _021DB466
+ mov r1, #0xf6
+ sub r5, r1, r0
+_021DB466:
+ cmp r7, #0x12
+ bgt _021DB470
+ mov r0, #0x12
+ sub r6, r0, r2
+ b _021DB47C
+_021DB470:
+ ldr r1, [sp, #0xc]
+ add r0, r6, r1
+ cmp r0, #0x8f
+ blt _021DB47C
+ mov r0, #0x8f
+ sub r6, r0, r1
+_021DB47C:
+ ldr r0, [sp]
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD17_021DB6B4
+ ldr r0, [r4, #4]
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021DA36C
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #4]
+ ldr r0, [sp]
+ add r1, r5, r1
+ add r2, r6, r2
+ bl MOD17_021DB6B4
+_021DB49E:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DB4A4: .word 0x021C48F8
+_021DB4A8: .word 0x0000FFFF
+ thumb_func_end MOD17_021DB404
+
+ thumb_func_start MOD17_021DB4AC
+MOD17_021DB4AC: ; 0x021DB4AC
+ push {r3, r4, r5, lr}
+ ldr r4, [r0]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DB4D4
+ ldr r0, [r0, #4]
+ cmp r0, #1
+ beq _021DB4C0
+ bl ErrorHandling
+_021DB4C0:
+ ldr r0, [r4, #0x10]
+ ldr r5, [r0]
+ ldr r0, [r4, #4]
+ bl MOD17_021DA33C
+ ldr r0, [r4, #4]
+ ldr r1, [r5]
+ mov r2, #0xe
+ bl MOD17_021DA2F0
+_021DB4D4:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB4AC
+
+ thumb_func_start MOD17_021DB4D8
+MOD17_021DB4D8: ; 0x021DB4D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ add r0, r4, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ add r7, r3, #0
+ bl MOD17_021DBBB8
+ str r4, [r5, #0x10]
+ ldr r0, [sp, #4]
+ strh r0, [r5, #0x1c]
+ ldr r0, [sp]
+ strh r0, [r5, #0x1e]
+ add r0, r5, #0
+ add r0, #0x20
+ strb r6, [r0]
+ ldr r0, [sp, #0x20]
+ str r7, [r5, #0x14]
+ str r0, [r5, #0x18]
+ cmp r6, #0
+ bne _021DB51A
+ ldr r1, [r5, #0x10]
+ ldr r0, [r5, #8]
+ ldr r1, [r1, #4]
+ bl MOD17_021DAA7C
+ add r1, r5, #0
+ add r1, #0x21
+ strb r0, [r1]
+ b _021DB522
+_021DB51A:
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x21
+ strb r1, [r0]
+_021DB522:
+ mov r0, #1
+ str r0, [r5, #0x30]
+ ldr r1, [sp, #0x24]
+ add r0, r4, #0
+ bl MOD17_021DBAD0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB4D8
+
+ thumb_func_start MOD17_021DB534
+MOD17_021DB534: ; 0x021DB534
+ mov r2, #0
+ str r2, [r0, #0x10]
+ strh r2, [r0, #0x1c]
+ add r1, r0, #0
+ strh r2, [r0, #0x1e]
+ add r1, #0x20
+ strb r2, [r1]
+ add r0, #0x21
+ strb r2, [r0]
+ bx lr
+ thumb_func_end MOD17_021DB534
+
+ thumb_func_start MOD17_021DB548
+MOD17_021DB548: ; 0x021DB548
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r4, [r0]
+ add r5, r1, #0
+ ldr r0, [r4, #0x10]
+ add r6, r2, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ add r7, r3, #0
+ bl MOD17_021DBC08
+ ldr r0, [r4, #0x10]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r0, [sp]
+ str r0, [r5]
+ ldr r1, [sp]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ str r0, [r6]
+ ldr r0, [sp, #4]
+ str r0, [r7]
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #0xc]
+ add r1, r1, r0
+ ldr r0, [sp, #0x28]
+ str r1, [r0]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB548
+
+ thumb_func_start MOD17_021DB588
+MOD17_021DB588: ; 0x021DB588
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x10]
+ bl MOD17_021DBC70
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD17_021DB588
+
+ thumb_func_start MOD17_021DB59C
+MOD17_021DB59C: ; 0x021DB59C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ ldr r0, _021DB60C ; =MOD17_021DB610
+ mov r1, #0x2c
+ mov r2, #0
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ ldr r0, [r5, #8]
+ add r1, sp, #8
+ str r0, [r4]
+ ldr r0, [r5, #0x10]
+ add r2, sp, #4
+ str r0, [r4, #4]
+ str r6, [r4, #0x20]
+ ldr r0, [sp]
+ str r7, [r4, #0x10]
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x20]
+ str r0, [r4, #0x18]
+ ldr r0, [sp, #0x24]
+ str r0, [r4, #0x1c]
+ ldr r0, [r5, #8]
+ add r0, #0x3c
+ str r0, [r4, #0x24]
+ add r0, r5, #0
+ add r0, #0x30
+ str r0, [r4, #0x28]
+ ldr r0, [r5, #0x10]
+ bl MOD17_021DBBB8
+ ldr r1, [r4, #0x10]
+ ldr r0, [sp, #8]
+ sub r0, r1, r0
+ add r1, r6, #0
+ bl _s32_div_f
+ str r0, [r4, #8]
+ ldr r1, [r4, #0x14]
+ ldr r0, [sp, #4]
+ sub r0, r1, r0
+ add r1, r6, #0
+ bl _s32_div_f
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB60C: .word MOD17_021DB610
+ thumb_func_end MOD17_021DB59C
+
+ thumb_func_start MOD17_021DB610
+MOD17_021DB610: ; 0x021DB610
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x24]
+ ldr r0, [r0]
+ cmp r0, #1
+ beq _021DB67C
+ ldr r0, [r4, #4]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #8]
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r1, [sp]
+ ldr r0, [r4, #0xc]
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r4, #0x20]
+ sub r0, r0, #1
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #4]
+ bpl _021DB674
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ bl MOD17_021DBB68
+ ldr r0, [r4]
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x1c]
+ ldr r3, [r4, #4]
+ bl MOD17_021DA7E4
+ ldr r0, [r4]
+ bl MOD17_021DA844
+ ldr r0, [r4, #0x28]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021DB66A
+ bl MOD17_021D7A4C
+_021DB66A:
+ add r0, r5, #0
+ bl FUN_0200621C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021DB674:
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ bl MOD17_021DBB68
+_021DB67C:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DB610
+
+ thumb_func_start MOD17_021DB680
+MOD17_021DB680: ; 0x021DB680
+ push {r3, lr}
+ ldr r3, [r0, #0x10]
+ ldr r1, [r3, #4]
+ cmp r1, #0
+ bne _021DB69A
+ ldr r3, [r3]
+ ldr r0, [r0, #0xc]
+ ldr r2, _021DB6B0 ; =0x00000152
+ ldr r3, [r3]
+ mov r1, #0x1a
+ bl MOD17_021DCB48
+ pop {r3, pc}
+_021DB69A:
+ cmp r1, #1
+ bne _021DB6AE
+ ldr r3, [r3]
+ mov r2, #0x55
+ ldr r0, [r0, #0xc]
+ ldr r3, [r3]
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ bl MOD17_021DCB48
+_021DB6AE:
+ pop {r3, pc}
+ .align 2, 0
+_021DB6B0: .word 0x00000152
+ thumb_func_end MOD17_021DB680
+
+ thumb_func_start MOD17_021DB6B4
+MOD17_021DB6B4: ; 0x021DB6B4
+ push {r4, r5, r6, lr}
+ ldr r4, [r0]
+ add r5, r1, #0
+ ldr r0, [r4, #0x10]
+ add r6, r2, #0
+ bl MOD17_021DBB68
+ ldr r1, [r4, #0x24]
+ ldr r2, [r4, #0x28]
+ ldr r0, [r4, #4]
+ sub r1, r5, r1
+ sub r2, r6, r2
+ bl MOD17_021DA134
+ str r5, [r4, #0x24]
+ str r6, [r4, #0x28]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB6B4
+
+ thumb_func_start MOD17_021DB6D8
+MOD17_021DB6D8: ; 0x021DB6D8
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r2, #0
+ str r2, [sp]
+ add r4, r0, #0
+ ldrh r0, [r1]
+ ldrh r1, [r1, #2]
+ mov r3, #0xe
+ bl FUN_02006C98
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #0x76
+ bl MOD17_021D7A2C
+ ldr r0, [r0, #0x14]
+ bl FUN_02008A74
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD17_021DB6D8
+
+ thumb_func_start MOD17_021DB700
+MOD17_021DB700: ; 0x021DB700
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r2, #0
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r3, #0
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #2
+ bl FUN_02068B68
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r1, r6, #0
+ mov r2, #0xc0
+ mov r3, #0x38
+ bl FUN_020073A0
+ str r0, [r5]
+ add r0, r5, #0
+ add r1, sp, #0x18
+ add r2, sp, #0x14
+ bl MOD17_021DB878
+ ldr r1, [sp, #0x18]
+ mov r2, #0x38
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ ldr r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [sp, #0x14]
+ sub r0, r2, r0
+ strb r0, [r5, #4]
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc0
+ add r0, #0x38
+ strb r0, [r5, #5]
+ ldr r0, [sp, #0x18]
+ sub r0, r1, r0
+ strb r0, [r5, #6]
+ ldr r0, [sp, #0x18]
+ add r0, #0xc0
+ strb r0, [r5, #7]
+ ldr r0, [sp, #0x14]
+ str r0, [sp]
+ ldr r3, [sp, #0x18]
+ add r0, r5, #4
+ bl MOD17_021DB9B8
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02068E14
+ mov r2, #0
+ str r2, [sp]
+ add r7, r0, #0
+ ldrh r0, [r6]
+ ldrh r1, [r6, #2]
+ ldr r3, [sp, #0x30]
+ bl FUN_02006C98
+ add r1, sp, #0x10
+ add r6, r0, #0
+ bl FUN_020B0088
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0, #0x14]
+ bl FUN_02008A74
+ ldr r1, [sp, #0x10]
+ ldr r0, [r1, #0x14]
+ ldrh r1, [r1, #2]
+ lsl r1, r1, #3
+ bl MOD17_021DB96C
+ strb r0, [r5, #8]
+ add r0, r6, #0
+ strb r7, [r5, #9]
+ bl FUN_02016A18
+ str r4, [r5, #0xc]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DB700
+
+ thumb_func_start MOD17_021DB7C0
+MOD17_021DB7C0: ; 0x021DB7C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02007534
+ mov r1, #0x10
+ mov r0, #0
+_021DB7CE:
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ bne _021DB7CE
+ pop {r4, pc}
+ thumb_func_end MOD17_021DB7C0
+
+ thumb_func_start MOD17_021DB7D8
+MOD17_021DB7D8: ; 0x021DB7D8
+ ldr r3, _021DB7E4 ; =0x02007559
+ add r2, r1, #0
+ ldr r0, [r0]
+ mov r1, #2
+ bx r3
+ nop
+_021DB7E4: .word 0x02007559
+ thumb_func_end MOD17_021DB7D8
+
+ thumb_func_start MOD17_021DB7E8
+MOD17_021DB7E8: ; 0x021DB7E8
+ ldr r3, _021DB7F0 ; =0x0200782D
+ ldr r0, [r0]
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_021DB7F0: .word 0x0200782D
+ thumb_func_end MOD17_021DB7E8
+
+ thumb_func_start MOD17_021DB7F4
+MOD17_021DB7F4: ; 0x021DB7F4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021DB878
+ ldr r0, [r5]
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_02007558
+ ldr r0, [r5]
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_02007558
+ ldr r1, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r2, r0, #1
+ ldr r1, [sp, #8]
+ str r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [sp, #8]
+ str r2, [sp]
+ ldr r3, [sp, #8]
+ add r0, r5, #4
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD17_021DB9B8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD17_021DB7F4
+
+ thumb_func_start MOD17_021DB840
+MOD17_021DB840: ; 0x021DB840
+ ldr r3, _021DB848 ; =0x02020A41
+ add r0, r0, #4
+ bx r3
+ nop
+_021DB848: .word 0x02020A41
+ thumb_func_end MOD17_021DB840
+
+ thumb_func_start MOD17_021DB84C
+MOD17_021DB84C: ; 0x021DB84C
+ ldr r3, _021DB854 ; =0x02020AE9
+ add r0, r0, #4
+ bx r3
+ nop
+_021DB854: .word 0x02020AE9
+ thumb_func_end MOD17_021DB84C
+
+ thumb_func_start MOD17_021DB858
+MOD17_021DB858: ; 0x021DB858
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ mov r1, #0
+ add r6, r2, #0
+ bl FUN_0200782C
+ str r0, [r4]
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_0200782C
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB858
+
+ thumb_func_start MOD17_021DB878
+MOD17_021DB878: ; 0x021DB878
+ mov r0, #0x50
+ str r0, [r1]
+ str r0, [r2]
+ bx lr
+ thumb_func_end MOD17_021DB878
+
+ thumb_func_start MOD17_021DB880
+MOD17_021DB880: ; 0x021DB880
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD17_021DB840
+ cmp r0, #0
+ bne _021DB89A
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB89A:
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DB858
+ add r0, r5, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DB878
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ sub r1, r2, r0
+ ldr r3, [sp, #8]
+ ldr r0, [sp]
+ lsr r2, r3, #0x1f
+ add r2, r3, r2
+ asr r2, r2, #1
+ sub r0, r0, r2
+ str r0, [sp]
+ ldr r0, _021DB8F4 ; =0x021C48F8
+ str r1, [sp, #4]
+ ldrh r2, [r0, #0x1c]
+ mov r3, #0
+ sub r1, r2, r1
+ str r1, [r4]
+ ldrh r1, [r0, #0x1e]
+ ldr r0, [sp]
+ sub r2, r1, r0
+ str r2, [r6]
+ ldr r1, [r4]
+ add r0, r7, #0
+ bl MOD17_021D7B0C
+ cmp r0, #0
+ bne _021DB8EE
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB8EE:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB8F4: .word 0x021C48F8
+ thumb_func_end MOD17_021DB880
+
+ thumb_func_start MOD17_021DB8F8
+MOD17_021DB8F8: ; 0x021DB8F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD17_021DB84C
+ cmp r0, #0
+ bne _021DB912
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB912:
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DB858
+ add r0, r5, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DB878
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ sub r1, r2, r0
+ ldr r3, [sp, #8]
+ str r1, [sp, #4]
+ lsr r2, r3, #0x1f
+ add r2, r3, r2
+ ldr r0, [sp]
+ asr r2, r2, #1
+ sub r0, r0, r2
+ str r0, [sp]
+ sub r2, r6, r0
+ sub r1, r4, r1
+ add r0, r7, #0
+ mov r3, #0
+ bl MOD17_021D7B0C
+ cmp r0, #0
+ bne _021DB958
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB958:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB8F8
+
+ thumb_func_start MOD17_021DB960
+MOD17_021DB960: ; 0x021DB960
+ ldrb r3, [r0, #8]
+ str r3, [r1]
+ ldrb r0, [r0, #9]
+ str r0, [r2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB960
+
+ thumb_func_start MOD17_021DB96C
+MOD17_021DB96C: ; 0x021DB96C
+ push {r4, r5, r6, r7}
+ mov ip, r0
+ add r7, r1, #0
+ mov r2, #0
+_021DB974:
+ mov r3, #0
+ add r4, r3, #0
+_021DB978:
+ add r1, r2, r4
+ lsr r0, r1, #0x1f
+ lsl r6, r1, #0x1f
+ sub r6, r6, r0
+ mov r5, #0x1f
+ ror r6, r5
+ add r5, r0, r6
+ lsl r6, r5, #2
+ mov r5, #0xf
+ add r0, r1, r0
+ lsl r5, r6
+ asr r1, r0, #1
+ mov r0, ip
+ lsl r5, r5, #0x18
+ ldrsb r0, [r0, r1]
+ lsr r5, r5, #0x18
+ tst r0, r5
+ beq _021DB9A2
+ add r0, r2, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+_021DB9A2:
+ add r3, r3, #1
+ add r4, r4, r7
+ cmp r3, #0x50
+ blt _021DB978
+ add r2, r2, #1
+ cmp r2, #0x50
+ blt _021DB974
+ mov r0, #0x50
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB96C
+
+ thumb_func_start MOD17_021DB9B8
+MOD17_021DB9B8: ; 0x021DB9B8
+ push {r3, r4}
+ ldr r4, [sp, #8]
+ sub r4, r2, r4
+ bmi _021DB9C2
+ b _021DB9C4
+_021DB9C2:
+ mov r4, #0
+_021DB9C4:
+ strb r4, [r0]
+ ldr r4, [sp, #8]
+ add r2, r2, r4
+ cmp r2, #0xbf
+ bgt _021DB9D0
+ b _021DB9D2
+_021DB9D0:
+ mov r2, #0xbf
+_021DB9D2:
+ strb r2, [r0, #1]
+ sub r2, r1, r3
+ bmi _021DB9DA
+ b _021DB9DC
+_021DB9DA:
+ mov r2, #0
+_021DB9DC:
+ add r1, r1, r3
+ strb r2, [r0, #2]
+ cmp r1, #0xff
+ bgt _021DB9EA
+ strb r1, [r0, #3]
+ pop {r3, r4}
+ bx lr
+_021DB9EA:
+ mov r1, #0xff
+ strb r1, [r0, #3]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB9B8
+
+ thumb_func_start MOD17_021DB9F4
+MOD17_021DB9F4: ; 0x021DB9F4
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ lsl r4, r6, #4
+ add r5, r0, #0
+ add r0, r2, #0
+ add r1, r4, #0
+ bl FUN_02016998
+ str r0, [r5]
+ cmp r0, #0
+ bne _021DBA0E
+ bl ErrorHandling
+_021DBA0E:
+ ldr r0, [r5]
+ mov r1, #0
+ add r2, r4, #0
+ bl Call_FillMemWithValue
+ str r6, [r5, #4]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DB9F4
+
+ thumb_func_start MOD17_021DBA1C
+MOD17_021DBA1C: ; 0x021DBA1C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBA1C
+
+ thumb_func_start MOD17_021DBA30
+MOD17_021DBA30: ; 0x021DBA30
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r1, #0
+ add r7, r2, #0
+ cmp r0, #0
+ bne _021DBA42
+ bl ErrorHandling
+_021DBA42:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ bne _021DBA4C
+ bl ErrorHandling
+_021DBA4C:
+ ldr r2, [r5, #4]
+ mov r4, #0
+ cmp r2, #0
+ ble _021DBA64
+ ldr r1, [r5]
+_021DBA56:
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021DBA64
+ add r4, r4, #1
+ add r1, #0x10
+ cmp r4, r2
+ blt _021DBA56
+_021DBA64:
+ cmp r2, r4
+ bgt _021DBA6C
+ bl ErrorHandling
+_021DBA6C:
+ ldr r0, [r5]
+ lsl r1, r4, #4
+ str r6, [r0, r1]
+ ldr r0, [r5]
+ add r0, r0, r1
+ str r7, [r0, #4]
+ ldr r0, [r5]
+ add r0, r0, r1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBA30
+
+ thumb_func_start MOD17_021DBA80
+MOD17_021DBA80: ; 0x021DBA80
+ mov r2, #0x10
+ mov r1, #0
+_021DBA84:
+ strb r1, [r0]
+ add r0, r0, #1
+ sub r2, r2, #1
+ bne _021DBA84
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DBA80
+
+ thumb_func_start MOD17_021DBA90
+MOD17_021DBA90: ; 0x021DBA90
+ ldr r2, [r1, #8]
+ str r2, [r0, #8]
+ ldr r2, [r1, #8]
+ str r0, [r2, #0xc]
+ str r1, [r0, #0xc]
+ str r0, [r1, #8]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DBA90
+
+ thumb_func_start MOD17_021DBAA0
+MOD17_021DBAA0: ; 0x021DBAA0
+ ldr r2, [r0, #8]
+ ldr r1, [r0, #0xc]
+ str r2, [r1, #8]
+ ldr r1, [r0, #0xc]
+ ldr r0, [r0, #8]
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DBAA0
+
+ thumb_func_start MOD17_021DBAB0
+MOD17_021DBAB0: ; 0x021DBAB0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r4, [r6, #8]
+ cmp r4, r6
+ beq _021DBACE
+_021DBABA:
+ add r0, r4, #0
+ ldr r5, [r4, #8]
+ bl MOD17_021DBAA0
+ add r0, r4, #0
+ bl MOD17_021DBA80
+ add r4, r5, #0
+ cmp r5, r6
+ bne _021DBABA
+_021DBACE:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DBAB0
+
+ thumb_func_start MOD17_021DBAD0
+MOD17_021DBAD0: ; 0x021DBAD0
+ push {r3, lr}
+ ldr r2, [r0, #4]
+ ldr r0, [r0]
+ cmp r2, #3
+ bge _021DBAE0
+ bl MOD17_021D766C
+ pop {r3, pc}
+_021DBAE0:
+ bl MOD17_021DB7D8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBAD0
+
+ thumb_func_start MOD17_021DBAE8
+MOD17_021DBAE8: ; 0x021DBAE8
+ push {r3, lr}
+ ldr r3, [r0, #4]
+ ldr r0, [r0]
+ cmp r3, #3
+ bge _021DBB06
+ mov r3, #0
+ mvn r3, r3
+ cmp r1, r3
+ bne _021DBB00
+ bl MOD17_021D7544
+ pop {r3, pc}
+_021DBB00:
+ bl MOD17_021D75DC
+ pop {r3, pc}
+_021DBB06:
+ mov r3, #0
+ mvn r3, r3
+ cmp r1, r3
+ bne _021DBB14
+ bl MOD17_021DB840
+ pop {r3, pc}
+_021DBB14:
+ bl MOD17_021DB84C
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBAE8
+
+ thumb_func_start MOD17_021DBB1C
+MOD17_021DBB1C: ; 0x021DBB1C
+ push {r4, lr}
+ ldr r4, [r0, #4]
+ cmp r4, #0
+ bne _021DBB32
+ ldr r0, [r0]
+ ldr r4, [r0]
+ lsl r4, r4, #2
+ ldr r3, [r3, r4]
+ bl MOD17_021D7554
+ pop {r4, pc}
+_021DBB32:
+ cmp r4, #1
+ bne _021DBB46
+ ldr r0, [r0]
+ ldr r4, [r0]
+ add r4, #0x64
+ lsl r4, r4, #2
+ ldr r3, [r3, r4]
+ bl MOD17_021D7554
+ pop {r4, pc}
+_021DBB46:
+ cmp r4, #2
+ ldr r0, [r0]
+ bne _021DBB5A
+ ldr r4, [r0]
+ add r4, #0x64
+ lsl r4, r4, #2
+ ldr r3, [r3, r4]
+ bl MOD17_021D7554
+ pop {r4, pc}
+_021DBB5A:
+ mov r4, #0x76
+ lsl r4, r4, #2
+ ldr r3, [r3, r4]
+ bl MOD17_021DB880
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBB1C
+
+ thumb_func_start MOD17_021DBB68
+MOD17_021DBB68: ; 0x021DBB68
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r1, #0
+ ldr r1, [r0, #4]
+ add r4, r2, #0
+ cmp r1, #3
+ bge _021DBB88
+ lsl r1, r5, #0x10
+ lsl r2, r4, #0x10
+ ldr r0, [r0]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD17_021D75F4
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_021DBB88:
+ ldr r6, [r0]
+ add r1, sp, #4
+ add r0, r6, #0
+ add r2, sp, #0
+ bl MOD17_021DB878
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r1, r0, #1
+ lsr r0, r2, #0x1f
+ add r0, r2, r0
+ asr r2, r0, #1
+ str r1, [sp, #4]
+ str r2, [sp]
+ add r0, r6, #0
+ add r1, r5, r1
+ add r2, r4, r2
+ bl MOD17_021DB7F4
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBB68
+
+ thumb_func_start MOD17_021DBBB8
+MOD17_021DBBB8: ; 0x021DBBB8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ ldr r3, [r0, #4]
+ add r5, r1, #0
+ add r4, r2, #0
+ cmp r3, #3
+ bge _021DBBD0
+ ldr r0, [r0]
+ bl MOD17_021D7600
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_021DBBD0:
+ ldr r6, [r0]
+ add r0, r6, #0
+ bl MOD17_021DB858
+ add r0, r6, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DB878
+ ldr r1, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r2, r0, #1
+ ldr r1, [sp]
+ str r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [sp]
+ ldr r0, [r5]
+ sub r0, r0, r2
+ str r0, [r5]
+ ldr r1, [r4]
+ ldr r0, [sp]
+ sub r0, r1, r0
+ str r0, [r4]
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DBBB8
+
+ thumb_func_start MOD17_021DBC08
+MOD17_021DBC08: ; 0x021DBC08
+ push {r3, lr}
+ ldr r3, [r0, #4]
+ ldr r0, [r0]
+ cmp r3, #3
+ bge _021DBC18
+ bl MOD17_021D7630
+ pop {r3, pc}
+_021DBC18:
+ bl MOD17_021DB878
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBC08
+
+ thumb_func_start MOD17_021DBC20
+MOD17_021DBC20: ; 0x021DBC20
+ push {r3, lr}
+ ldr r3, [r0, #4]
+ ldr r0, [r0]
+ cmp r3, #3
+ bge _021DBC30
+ bl MOD17_021D7684
+ pop {r3, pc}
+_021DBC30:
+ bl MOD17_021DB960
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBC20
+
+ thumb_func_start MOD17_021DBC38
+MOD17_021DBC38: ; 0x021DBC38
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r4, [r5, #8]
+ add r6, r1, #0
+ add r7, r2, #0
+ cmp r4, r5
+ beq _021DBC6A
+_021DBC48:
+ add r0, r4, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r0, [sp, #4]
+ add r1, r0, r6
+ ldr r0, [sp]
+ str r1, [sp, #4]
+ add r2, r0, r7
+ str r2, [sp]
+ add r0, r4, #0
+ bl MOD17_021DBB68
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021DBC48
+_021DBC6A:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBC38
+
+ thumb_func_start MOD17_021DBC70
+MOD17_021DBC70: ; 0x021DBC70
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ add r7, r3, #0
+ bl MOD17_021DBC08
+ add r0, r5, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DBBB8
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBC20
+ ldr r1, [sp, #8]
+ ldr r0, [sp]
+ add r0, r1, r0
+ str r0, [r4]
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #0x10]
+ add r1, r1, r0
+ ldr r0, [sp]
+ sub r0, r1, r0
+ str r0, [r6]
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #4]
+ add r0, r1, r0
+ str r0, [r7]
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r1, r1, r0
+ ldr r0, [sp, #4]
+ sub r1, r1, r0
+ ldr r0, [sp, #0x30]
+ str r1, [r0]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBC70
+
+ thumb_func_start MOD17_021DBCC8
+MOD17_021DBCC8: ; 0x021DBCC8
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r0, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DBC08
+ add r0, r6, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, r2, r0
+ str r0, [r5]
+ ldr r1, [sp, #8]
+ ldr r2, [sp]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, r2, r0
+ str r0, [r4]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DBCC8
+
+ thumb_func_start MOD17_021DBD04
+MOD17_021DBD04: ; 0x021DBD04
+ add r2, r0, #0
+ ldr r0, [r1]
+ str r0, [r2]
+ ldr r3, [r1, #0x14]
+ asr r0, r3, #2
+ lsr r0, r0, #0x1d
+ add r0, r3, r0
+ asr r0, r0, #3
+ str r0, [r2, #0xc]
+ ldr r3, [r1, #0x18]
+ asr r0, r3, #2
+ lsr r0, r0, #0x1d
+ add r0, r3, r0
+ asr r0, r0, #3
+ str r0, [r2, #0x10]
+ ldr r0, [r1, #0x1c]
+ ldr r3, _021DBD48 ; =MOD17_021DBEE8
+ str r0, [r2, #0x1c]
+ ldr r0, [r1, #0x24]
+ str r0, [r2, #0x20]
+ ldr r0, [r1, #0x20]
+ str r0, [r2, #0x24]
+ ldr r0, [r1, #0x28]
+ str r0, [r2, #0x28]
+ ldr r0, [r1, #4]
+ str r0, [r2, #4]
+ ldr r0, [r1, #0x10]
+ str r0, [r2, #8]
+ add r0, r1, #0
+ add r1, r2, #0
+ add r1, #0x14
+ add r2, #0x18
+ bx r3
+ nop
+_021DBD48: .word MOD17_021DBEE8
+ thumb_func_end MOD17_021DBD04
+
+ thumb_func_start MOD17_021DBD4C
+MOD17_021DBD4C: ; 0x021DBD4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r4]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x2c
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ thumb_func_end MOD17_021DBD4C
+
+ thumb_func_start MOD17_021DBD68
+MOD17_021DBD68: ; 0x021DBD68
+ ldr r2, [r1]
+ str r2, [r0]
+ ldr r2, [r1, #4]
+ str r2, [r0, #4]
+ ldr r2, [r1, #8]
+ str r2, [r0, #8]
+ mov r2, #0
+ str r2, [r0, #0xc]
+ str r2, [r0, #0x10]
+ ldr r1, [r1, #0xc]
+ str r1, [r0, #0x14]
+ bx lr
+ thumb_func_end MOD17_021DBD68
+
+ thumb_func_start MOD17_021DBD80
+MOD17_021DBD80: ; 0x021DBD80
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r1, r0, r1
+ str r1, [r5, #0xc]
+ ldr r0, [r5, #8]
+ cmp r1, r0
+ ble _021DBDE4
+ mov r2, #0
+ str r2, [r5, #0xc]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ bne _021DBDA4
+ ldr r1, [r5, #4]
+ mov r0, #1
+ str r0, [r5, #0x10]
+ b _021DBDAA
+_021DBDA4:
+ ldr r0, [r5]
+ ldr r1, [r0, #8]
+ str r2, [r5, #0x10]
+_021DBDAA:
+ ldr r0, [r5, #0x14]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ add r3, sp, #0x14
+ ldr r0, [r0, #4]
+ bl FUN_02006BDC
+ ldr r3, [r5]
+ add r4, r0, #0
+ ldr r0, [r3, #0x18]
+ str r0, [sp]
+ ldr r0, [r3, #0xc]
+ str r0, [sp, #4]
+ ldr r0, [r3, #0x10]
+ str r0, [sp, #8]
+ ldr r0, [r3, #0x28]
+ str r0, [sp, #0xc]
+ ldr r0, [r3, #0x20]
+ str r0, [sp, #0x10]
+ ldr r0, [r3]
+ ldr r1, [r3, #0x1c]
+ ldr r2, [sp, #0x14]
+ ldr r3, [r3, #0x14]
+ bl MOD17_021DC004
+ add r0, r4, #0
+ bl FUN_02016A18
+_021DBDE4:
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DBD80
+
+ thumb_func_start MOD17_021DBDE8
+MOD17_021DBDE8: ; 0x021DBDE8
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r1, [r5]
+ ldr r0, [r5, #0x14]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [r1, #4]
+ ldr r1, [r1, #8]
+ add r3, sp, #0x14
+ bl FUN_02006BDC
+ ldr r3, [r5]
+ add r4, r0, #0
+ ldr r0, [r3, #0x18]
+ str r0, [sp]
+ ldr r0, [r3, #0xc]
+ str r0, [sp, #4]
+ ldr r0, [r3, #0x10]
+ str r0, [sp, #8]
+ ldr r0, [r3, #0x28]
+ str r0, [sp, #0xc]
+ ldr r0, [r3, #0x20]
+ str r0, [sp, #0x10]
+ ldr r0, [r3]
+ ldr r1, [r3, #0x1c]
+ ldr r2, [sp, #0x14]
+ ldr r3, [r3, #0x14]
+ bl MOD17_021DC004
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r1, #0x18
+ mov r0, #0
+_021DBE2E:
+ strb r0, [r5]
+ add r5, r5, #1
+ sub r1, r1, #1
+ bne _021DBE2E
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBDE8
+
+ thumb_func_start MOD17_021DBE3C
+MOD17_021DBE3C: ; 0x021DBE3C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ add r5, r1, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ ldr r0, _021DBEC4 ; =MOD17_021DBF94
+ mov r1, #0x4c
+ mov r2, #0
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ str r6, [r4]
+ add r7, r5, #0
+ add r3, r4, #4
+ mov r2, #6
+_021DBE62:
+ ldmia r7!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021DBE62
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x20]
+ str r0, [r4, #0x34]
+ ldr r0, [sp]
+ str r1, [r4, #0x38]
+ bl _s32_div_f
+ str r0, [r4, #0x3c]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #0x20]
+ bl _s32_div_f
+ str r0, [r4, #0x40]
+ ldr r0, [r6]
+ ldr r1, [r6, #0x1c]
+ bl FUN_02017B48
+ str r0, [r4, #0x44]
+ ldr r0, [r6]
+ ldr r1, [r6, #0x1c]
+ bl FUN_02017B54
+ str r0, [r4, #0x48]
+ mov r0, #0x80
+ str r0, [r5, #0x28]
+ mov r0, #5
+ str r0, [r5, #0x24]
+ ldr r1, [r5, #0x14]
+ ldr r0, [sp]
+ sub r0, r1, r0
+ str r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ ldr r0, [sp, #4]
+ sub r0, r1, r0
+ str r0, [r5, #0x18]
+ mov r0, #0xe
+ mov r1, #0
+ str r0, [r5, #0x2c]
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD17_021DBEE8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DBEC4: .word MOD17_021DBF94
+ thumb_func_end MOD17_021DBE3C
+
+ thumb_func_start MOD17_021DBEC8
+MOD17_021DBEC8: ; 0x021DBEC8
+ push {r3, r4}
+ ldr r2, [r0, #8]
+ add r0, #0xc
+ lsr r4, r2, #1
+ mov r3, #0
+ cmp r4, #0
+ ble _021DBEE4
+_021DBED6:
+ ldrh r2, [r0]
+ add r3, r3, #1
+ add r2, r2, r1
+ strh r2, [r0]
+ add r0, r0, #2
+ cmp r3, r4
+ blt _021DBED6
+_021DBEE4:
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD17_021DBEC8
+
+ thumb_func_start MOD17_021DBEE8
+MOD17_021DBEE8: ; 0x021DBEE8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5, #0x14]
+ add r6, r2, #0
+ asr r0, r1, #2
+ lsr r0, r0, #0x1d
+ add r0, r1, r0
+ asr r0, r0, #3
+ ldr r1, [r5, #0x18]
+ str r0, [sp, #0x18]
+ asr r0, r1, #2
+ lsr r0, r0, #0x1d
+ add r0, r1, r0
+ asr r0, r0, #3
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x28]
+ str r0, [sp]
+ ldr r0, [r5, #0x2c]
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #8]
+ ldr r2, [r5]
+ ldr r3, [r5, #0x1c]
+ bl MOD17_021DC084
+ ldr r0, [r5, #0x1c]
+ cmp r0, #4
+ bge _021DBF28
+ mov r2, #0
+ b _021DBF2A
+_021DBF28:
+ mov r2, #4
+_021DBF2A:
+ ldr r0, [r5, #0x20]
+ lsl r0, r0, #5
+ str r0, [sp]
+ ldr r0, [r5, #0x2c]
+ str r0, [sp, #4]
+ ldr r3, [r5, #0x24]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #0xc]
+ lsl r3, r3, #5
+ bl MOD17_021DC0D4
+ ldr r0, [r5, #0x2c]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #0x10]
+ add r3, sp, #0x24
+ bl FUN_02006BDC
+ ldr r2, [sp, #0x24]
+ str r0, [sp, #0x20]
+ ldrh r0, [r2]
+ lsr r7, r0, #3
+ ldrh r0, [r2, #2]
+ add r3, r7, #0
+ lsr r0, r0, #3
+ str r0, [sp, #0x1c]
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x24]
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ ldr r1, [r5, #0x1c]
+ bl MOD17_021DC004
+ ldr r0, [sp, #0x20]
+ bl FUN_02016A18
+ cmp r4, #0
+ beq _021DBF86
+ str r7, [r4]
+_021DBF86:
+ cmp r6, #0
+ beq _021DBF8E
+ ldr r0, [sp, #0x1c]
+ str r0, [r6]
+_021DBF8E:
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBEE8
+
+ thumb_func_start MOD17_021DBF94
+MOD17_021DBF94: ; 0x021DBF94
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x38]
+ sub r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r1, [r4]
+ bmi _021DBFC8
+ ldr r0, [r1]
+ ldr r1, [r1, #0x1c]
+ ldr r3, [r4, #0x3c]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #2
+ bl FUN_0201AEE4
+ ldr r1, [r4]
+ ldr r3, [r4, #0x40]
+ ldr r0, [r1]
+ ldr r1, [r1, #0x1c]
+ mov r2, #5
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0201AEE4
+ pop {r3, r4, r5, pc}
+_021DBFC8:
+ ldr r0, [r1]
+ ldr r1, [r1, #0x1c]
+ ldr r3, [r4, #0x44]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl FUN_0201AEE4
+ ldr r1, [r4]
+ ldr r3, [r4, #0x48]
+ ldr r0, [r1]
+ ldr r1, [r1, #0x1c]
+ mov r2, #3
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0201AEE4
+ ldr r0, [r4]
+ add r1, r4, #4
+ bl MOD17_021DBD04
+ ldr r1, [r4, #0x34]
+ cmp r1, #0
+ beq _021DBFFC
+ mov r0, #1
+ str r0, [r1]
+_021DBFFC:
+ add r0, r5, #0
+ bl FUN_0200621C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DBF94
+
+ thumb_func_start MOD17_021DC004
+MOD17_021DC004: ; 0x021DC004
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r1, #0
+ add r4, r2, #0
+ add r7, r0, #0
+ ldr r1, [sp, #0x3c]
+ add r0, r4, #0
+ add r6, r3, #0
+ bl MOD17_021DBEC8
+ ldr r1, [sp, #0x30]
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ str r0, [sp]
+ ldr r3, [sp, #0x38]
+ str r2, [sp, #4]
+ add r4, #0xc
+ lsl r3, r3, #0x18
+ str r4, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r2, [sp, #0x18]
+ ldr r2, [sp, #0x34]
+ lsl r1, r5, #0x18
+ lsl r2, r2, #0x18
+ add r0, r7, #0
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x30]
+ ldr r2, [sp, #0x34]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x40]
+ ldr r3, [sp, #0x38]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r1, r5, #0x18
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ str r0, [sp, #8]
+ add r0, r7, #0
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020186B4
+ lsl r1, r5, #0x18
+ add r0, r7, #0
+ lsr r1, r1, #0x18
+ bl FUN_0201AC68
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DC004
+
+ thumb_func_start MOD17_021DC084
+MOD17_021DC084: ; 0x021DC084
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ str r1, [sp, #4]
+ ldr r0, [sp, #0x24]
+ mov r1, #0x14
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ add r2, r4, #0
+ mov r1, #0x14
+ mov r0, #0
+_021DC0A0:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DC0A0
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #4]
+ str r0, [sp]
+ add r0, r7, #0
+ mov r2, #0
+ add r3, r4, #4
+ bl FUN_02006BB0
+ str r0, [r4, #8]
+ str r5, [r4]
+ ldr r0, [sp, #0x20]
+ str r6, [r4, #0xc]
+ str r0, [r4, #0x10]
+ ldr r0, _021DC0D0 ; =MOD17_021DC11C
+ add r1, r4, #0
+ mov r2, #0x80
+ bl FUN_0200CA98
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DC0D0: .word MOD17_021DC11C
+ thumb_func_end MOD17_021DC084
+
+ thumb_func_start MOD17_021DC0D4
+MOD17_021DC0D4: ; 0x021DC0D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0x14
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ add r2, r4, #0
+ mov r1, #0x14
+ mov r0, #0
+_021DC0EE:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DC0EE
+ ldr r1, [sp]
+ ldr r3, [sp, #0x1c]
+ add r0, r7, #0
+ add r2, r4, #0
+ bl FUN_02006C08
+ str r0, [r4, #4]
+ str r5, [r4, #8]
+ ldr r0, [sp, #0x18]
+ str r6, [r4, #0xc]
+ str r0, [r4, #0x10]
+ ldr r0, _021DC118 ; =MOD17_021DC158
+ add r1, r4, #0
+ mov r2, #0x80
+ bl FUN_0200CA98
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DC118: .word MOD17_021DC158
+ thumb_func_end MOD17_021DC0D4
+
+ thumb_func_start MOD17_021DC11C
+MOD17_021DC11C: ; 0x021DC11C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #4]
+ add r5, r0, #0
+ ldr r0, [r1, #0x14]
+ ldr r1, [r1, #0x10]
+ bl DC_FlushRange
+ ldr r3, [r4, #4]
+ ldr r0, [r4, #0x10]
+ str r0, [sp]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r3, #0x14]
+ lsl r1, r1, #0x18
+ ldr r0, [r4]
+ ldr r3, [r3, #0x10]
+ lsr r1, r1, #0x18
+ bl FUN_02017E14
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC11C
+
+ thumb_func_start MOD17_021DC158
+MOD17_021DC158: ; 0x021DC158
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r0, #0xc]
+ bl DC_FlushRange
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _021DC17C
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r0, [r0, #0xc]
+ ldr r2, [r4, #0x10]
+ bl GX_LoadBGPltt
+ b _021DC18C
+_021DC17C:
+ cmp r0, #4
+ bne _021DC18C
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r0, [r0, #0xc]
+ ldr r2, [r4, #0x10]
+ bl GXS_LoadBGPltt
+_021DC18C:
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DC158
+
+ thumb_func_start MOD17_021DC1A0
+MOD17_021DC1A0: ; 0x021DC1A0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0
+ bne _021DC1AE
+ bl ErrorHandling
+_021DC1AE:
+ cmp r4, #0
+ bne _021DC1B6
+ bl ErrorHandling
+_021DC1B6:
+ ldr r0, [r4]
+ bl FUN_0201FE94
+ str r0, [r5]
+ cmp r0, #0
+ bne _021DC1C6
+ bl ErrorHandling
+_021DC1C6:
+ ldr r0, [r4, #0xc]
+ str r0, [r5, #4]
+ ldr r0, [r4, #8]
+ str r0, [r5, #8]
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021DC1D8
+ str r0, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+_021DC1D8:
+ ldr r0, _021DC1E0 ; =MOD17_021DC2DC
+ str r0, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+ nop
+_021DC1E0: .word MOD17_021DC2DC
+ thumb_func_end MOD17_021DC1A0
+
+ thumb_func_start MOD17_021DC1E4
+MOD17_021DC1E4: ; 0x021DC1E4
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r4, r1, #0
+ add r5, r0, #0
+ bl MOD17_021DC1A0
+ ldr r0, [r4, #0x14]
+ str r0, [sp]
+ ldr r0, [r4, #0x10]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0xc]
+ ldr r0, [r5]
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x24]
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x1c]
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x20]
+ str r0, [sp, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x28]
+ str r0, [sp, #0x28]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x2c]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0
+ bl FUN_020117E8
+ str r0, [r5, #0x10]
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DC1E4
+
+ thumb_func_start MOD17_021DC230
+MOD17_021DC230: ; 0x021DC230
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0201FFC8
+ mov r1, #0x10
+ mov r0, #0
+_021DC23E:
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ bne _021DC23E
+ pop {r4, pc}
+ thumb_func_end MOD17_021DC230
+
+ thumb_func_start MOD17_021DC248
+MOD17_021DC248: ; 0x021DC248
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021DC230
+ ldr r0, [r4, #0x10]
+ bl FUN_02011870
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC248
+
+ thumb_func_start MOD17_021DC264
+MOD17_021DC264: ; 0x021DC264
+ push {r3, lr}
+ ldr r2, [r0, #4]
+ cmp r1, r2
+ bne _021DC272
+ ldr r1, [r0, #8]
+ ldr r2, [r0, #0xc]
+ blx r2
+_021DC272:
+ pop {r3, pc}
+ thumb_func_end MOD17_021DC264
+
+ thumb_func_start MOD17_021DC274
+MOD17_021DC274: ; 0x021DC274
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r2, #0
+ mov r4, #2
+ add r5, #0x20
+_021DC280:
+ cmp r4, r7
+ beq _021DC28C
+ add r0, r5, #0
+ bl MOD17_021DC2EC
+ b _021DC2B0
+_021DC28C:
+ cmp r6, #0
+ bne _021DC29E
+ add r0, r5, #0
+ bl MOD17_021DC2F8
+ ldr r0, _021DC2BC ; =0x0000067D
+ bl FUN_020054C8
+ b _021DC2B0
+_021DC29E:
+ cmp r6, #2
+ bne _021DC2AA
+ add r0, r5, #0
+ bl MOD17_021DC2E0
+ b _021DC2B0
+_021DC2AA:
+ add r0, r5, #0
+ bl MOD17_021DC2F8
+_021DC2B0:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #3
+ ble _021DC280
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DC2BC: .word 0x0000067D
+ thumb_func_end MOD17_021DC274
+
+ thumb_func_start MOD17_021DC2C0
+MOD17_021DC2C0: ; 0x021DC2C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r5, #0
+ bne _021DC2D2
+ bl ErrorHandling
+_021DC2D2:
+ str r7, [r5, #4]
+ str r6, [r5, #8]
+ str r4, [r5, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC2C0
+
+ thumb_func_start MOD17_021DC2DC
+MOD17_021DC2DC: ; 0x021DC2DC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DC2DC
+
+ thumb_func_start MOD17_021DC2E0
+MOD17_021DC2E0: ; 0x021DC2E0
+ ldr r3, _021DC2E8 ; =0x02020209
+ ldr r0, [r0]
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_021DC2E8: .word 0x02020209
+ thumb_func_end MOD17_021DC2E0
+
+ thumb_func_start MOD17_021DC2EC
+MOD17_021DC2EC: ; 0x021DC2EC
+ ldr r3, _021DC2F4 ; =0x02020209
+ ldr r0, [r0]
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021DC2F4: .word 0x02020209
+ thumb_func_end MOD17_021DC2EC
+
+ thumb_func_start MOD17_021DC2F8
+MOD17_021DC2F8: ; 0x021DC2F8
+ ldr r3, _021DC300 ; =0x02020209
+ ldr r0, [r0]
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021DC300: .word 0x02020209
+ thumb_func_end MOD17_021DC2F8
+
+ thumb_func_start MOD17_021DC304
+MOD17_021DC304: ; 0x021DC304
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #1
+ mov r1, #0xd
+ bl FUN_02011744
+ str r0, [r5, #0x64]
+ add r0, r4, #0
+ bl MOD17_021DC760
+ mov r0, #0x90
+ str r0, [sp]
+ mov r0, #0x28
+ str r0, [sp, #4]
+ mov r0, #0x20
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r1, #0
+ add r2, r4, #0
+ mov r3, #0x30
+ bl MOD17_021DC628
+ mov r0, #0x28
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #0
+ mov r2, #0x30
+ mov r3, #0x98
+ bl MOD17_021DC748
+ mov r0, #0x90
+ str r0, [sp]
+ mov r0, #0x28
+ str r0, [sp, #4]
+ mov r0, #0x20
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x10
+ mov r1, #1
+ add r2, r4, #0
+ mov r3, #8
+ bl MOD17_021DC628
+ mov r0, #0x28
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #1
+ mov r2, #8
+ mov r3, #0x98
+ bl MOD17_021DC748
+ mov r0, #0x90
+ str r0, [sp]
+ mov r0, #0x2a
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x20
+ mov r1, #2
+ add r2, r4, #0
+ mov r3, #0x60
+ bl MOD17_021DC628
+ mov r0, #0x2a
+ str r0, [sp]
+ mov r0, #0x22
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #2
+ mov r2, #0x60
+ mov r3, #0x9c
+ bl MOD17_021DC748
+ mov r0, #0x90
+ str r0, [sp]
+ mov r0, #0x2a
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x30
+ mov r1, #3
+ add r2, r4, #0
+ mov r3, #0x88
+ bl MOD17_021DC628
+ mov r0, #0x2a
+ str r0, [sp]
+ mov r0, #0x22
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #3
+ mov r2, #0x88
+ mov r3, #0x9c
+ bl MOD17_021DC748
+ mov r0, #2
+ mov r1, #0xe
+ bl FUN_02002C50
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r2, _021DC460 ; =0x00000151
+ add r0, r4, #0
+ mov r1, #0x1a
+ mov r3, #0
+ bl MOD17_021DC880
+ add r6, r0, #0
+ str r6, [sp]
+ mov r0, #0xb8
+ str r0, [sp, #4]
+ mov r0, #0x90
+ str r0, [sp, #8]
+ mov r0, #0x48
+ str r0, [sp, #0xc]
+ mov r0, #0x2a
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ ldr r3, [r5, #0x64]
+ add r0, #0x40
+ mov r1, #4
+ add r2, r4, #0
+ bl MOD17_021DC698
+ mov r0, #0x48
+ str r0, [sp]
+ mov r0, #0x22
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #4
+ mov r2, #0xb8
+ mov r3, #0x9c
+ bl MOD17_021DC748
+ add r0, r6, #0
+ bl MOD17_021DC8F8
+ mov r0, #2
+ bl FUN_02002CF8
+ mov r0, #1
+ str r0, [r5, #0x60]
+ add r0, r4, #0
+ bl MOD17_021DC7E0
+ add r0, r5, #0
+ add r0, #0x20
+ bl MOD17_021DC2E0
+ mov r0, #0xd
+ str r0, [sp]
+ add r0, r5, #0
+ ldr r2, _021DC464 ; =MOD17_021DC570
+ add r0, #0x6c
+ mov r1, #5
+ add r3, r5, #0
+ bl FUN_020220C4
+ str r0, [r5, #0x68]
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DC460: .word 0x00000151
+_021DC464: .word MOD17_021DC570
+ thumb_func_end MOD17_021DC304
+
+ thumb_func_start MOD17_021DC468
+MOD17_021DC468: ; 0x021DC468
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r4, #0
+_021DC470:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D79D8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D79EC
+ add r0, r4, #0
+ bl FUN_0201D324
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021DC470
+ mov r0, #0
+ bl FUN_0201E1C8
+ mov r0, #1
+ bl FUN_0201E1C8
+ mov r5, #0
+ add r4, r6, #0
+_021DC49C:
+ add r0, r4, #0
+ bl MOD17_021DC230
+ add r5, r5, #1
+ add r4, #0x10
+ cmp r5, #4
+ blt _021DC49C
+ add r0, r6, #0
+ add r0, #0x54
+ bl FUN_0201D5E8
+ add r0, r6, #0
+ add r0, #0x40
+ bl MOD17_021DC248
+ ldr r0, [r6, #0x64]
+ bl FUN_020117BC
+ ldr r0, [r6, #0x68]
+ bl FUN_0202212C
+ mov r0, #0
+ str r0, [r6, #0x68]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DC468
+
+ thumb_func_start MOD17_021DC4CC
+MOD17_021DC4CC: ; 0x021DC4CC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x68]
+ cmp r0, #0
+ bne _021DC4DA
+ bl ErrorHandling
+_021DC4DA:
+ ldr r0, [r4, #0x68]
+ bl FUN_02022144
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC4CC
+
+ thumb_func_start MOD17_021DC4E4
+MOD17_021DC4E4: ; 0x021DC4E4
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x40
+ mov r1, #3
+ bl MOD17_021DC808
+ add r0, r4, #0
+ add r0, #0x40
+ mov r1, #3
+ bl MOD17_021DC82C
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #3
+ bl MOD17_021DC274
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC4E4
+
+ thumb_func_start MOD17_021DC508
+MOD17_021DC508: ; 0x021DC508
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r6, r1, #0
+ add r7, r2, #0
+ mov r4, #0
+ add r5, r0, #0
+_021DC514:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD17_021DC904
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _021DC514
+ ldr r0, [sp]
+ add r1, r6, #0
+ add r0, #0x40
+ add r2, r7, #0
+ str r0, [sp]
+ bl MOD17_021DC940
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC508
+
+ thumb_func_start MOD17_021DC538
+MOD17_021DC538: ; 0x021DC538
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r5, #0
+ bne _021DC54A
+ bl ErrorHandling
+_021DC54A:
+ cmp r4, #4
+ bge _021DC55E
+ lsl r0, r4, #4
+ ldr r3, [sp, #0x18]
+ add r0, r5, r0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD17_021DC2C0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DC55E:
+ add r5, #0x40
+ ldr r3, [sp, #0x18]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD17_021DC2C0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC538
+
+ thumb_func_start MOD17_021DC570
+MOD17_021DC570: ; 0x021DC570
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ cmp r6, #4
+ bhi _021DC618
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DC588: ; jump table
+ .short _021DC592 - _021DC588 - 2 ; case 0
+ .short _021DC5AE - _021DC588 - 2 ; case 1
+ .short _021DC5D0 - _021DC588 - 2 ; case 2
+ .short _021DC5D0 - _021DC588 - 2 ; case 3
+ .short _021DC5E6 - _021DC588 - 2 ; case 4
+_021DC592:
+ add r0, r4, #0
+ bl MOD17_021DC808
+ ldr r1, _021DC620 ; =0x00000681
+ add r0, r4, #0
+ mov r2, #0
+ add r3, r5, #0
+ bl MOD17_021DC870
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DC264
+ pop {r4, r5, r6, pc}
+_021DC5AE:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD17_021DC808
+ add r0, r4, #0
+ ldr r1, _021DC620 ; =0x00000681
+ add r0, #0x10
+ mov r2, #0
+ add r3, r5, #0
+ bl MOD17_021DC870
+ add r4, #0x10
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DC264
+ pop {r4, r5, r6, pc}
+_021DC5D0:
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD17_021DC274
+ lsl r0, r6, #4
+ add r0, r4, r0
+ add r1, r5, #0
+ bl MOD17_021DC264
+ pop {r4, r5, r6, pc}
+_021DC5E6:
+ ldr r0, [r4, #0x60]
+ cmp r0, #1
+ bne _021DC61C
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD17_021DC808
+ add r0, r4, #0
+ add r0, #0x40
+ add r1, r5, #0
+ bl MOD17_021DC82C
+ add r0, r4, #0
+ ldr r1, _021DC624 ; =0x000005E2
+ add r0, #0x40
+ mov r2, #0
+ add r3, r5, #0
+ bl MOD17_021DC870
+ add r4, #0x40
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DC264
+ pop {r4, r5, r6, pc}
+_021DC618:
+ bl ErrorHandling
+_021DC61C:
+ pop {r4, r5, r6, pc}
+ nop
+_021DC620: .word 0x00000681
+_021DC624: .word 0x000005E2
+ thumb_func_end MOD17_021DC570
+
+ thumb_func_start MOD17_021DC628
+MOD17_021DC628: ; 0x021DC628
+ push {r4, r5, r6, lr}
+ sub sp, #0x90
+ add r6, r0, #0
+ mov r0, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ add r5, r2, #0
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, [r5, #0x40]
+ add r4, r3, #0
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x44]
+ add r3, r1, #0
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x48]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x4c]
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r0, sp, #0x5c
+ bl FUN_02008AA4
+ ldr r0, [r5, #0x3c]
+ mov r2, #0
+ mov r1, #1
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x5c
+ str r0, [sp, #0x30]
+ lsl r0, r4, #0xc
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0xa0]
+ str r1, [sp, #0x54]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ mov r0, #2
+ str r0, [sp, #0x50]
+ mov r0, #0xe
+ str r0, [sp, #0x58]
+ add r0, sp, #0x2c
+ str r0, [sp, #0x80]
+ str r1, [sp, #0x8c]
+ add r0, r6, #0
+ add r1, sp, #0x80
+ str r2, [sp, #0x3c]
+ str r2, [sp, #0x84]
+ str r2, [sp, #0x88]
+ bl MOD17_021DC1A0
+ add sp, #0x90
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC628
+
+ thumb_func_start MOD17_021DC698
+MOD17_021DC698: ; 0x021DC698
+ push {r4, r5, r6, lr}
+ sub sp, #0xa8
+ add r5, r0, #0
+ mov r0, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ add r4, r2, #0
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, [r4, #0x40]
+ add r6, r3, #0
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x44]
+ add r3, r1, #0
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x48]
+ str r0, [sp, #0x1c]
+ ldr r0, [r4, #0x4c]
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r0, sp, #0x5c
+ bl FUN_02008AA4
+ ldr r0, [r4, #0x3c]
+ mov r1, #2
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x5c
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0xbc]
+ mov r2, #0xe
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0xc0]
+ str r1, [sp, #0x50]
+ mov r1, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ mov r0, #0
+ str r2, [sp, #0x58]
+ add r2, sp, #0x2c
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x84]
+ str r0, [sp, #0x88]
+ ldr r0, [sp, #0xb8]
+ str r1, [sp, #0x54]
+ str r0, [sp, #0x90]
+ mov r0, #0x10
+ str r0, [sp, #0x9c]
+ mov r0, #0x13
+ str r2, [sp, #0x80]
+ str r1, [sp, #0x8c]
+ str r6, [sp, #0x94]
+ str r0, [sp, #0xa0]
+ ldr r0, [r4, #0x44]
+ bl FUN_020094F0
+ mov r1, #0
+ bl FUN_02009E54
+ str r0, [sp, #0x98]
+ ldr r0, [sp, #0xb8]
+ mov r1, #1
+ mov r2, #0xd
+ bl FUN_02011898
+ mov r1, #1
+ add r3, r5, #0
+ add r2, r1, #0
+ add r3, #0x14
+ bl FUN_0201D568
+ cmp r0, #0
+ bne _021DC736
+ bl ErrorHandling
+_021DC736:
+ ldr r0, [r5, #0x18]
+ add r1, sp, #0x80
+ str r0, [sp, #0xa4]
+ add r0, r5, #0
+ bl MOD17_021DC1E4
+ add sp, #0xa8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC698
+
+ thumb_func_start MOD17_021DC748
+MOD17_021DC748: ; 0x021DC748
+ lsl r1, r1, #2
+ strb r3, [r0, r1]
+ add r1, r0, r1
+ ldr r0, [sp, #4]
+ strb r2, [r1, #2]
+ add r0, r3, r0
+ strb r0, [r1, #1]
+ ldr r0, [sp]
+ add r0, r2, r0
+ strb r0, [r1, #3]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DC748
+
+ thumb_func_start MOD17_021DC760
+MOD17_021DC760: ; 0x021DC760
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x6b
+ mov r4, #0
+ str r0, [sp, #0xc]
+ mov r7, #0x6a
+ mov r6, #0x69
+_021DC770:
+ mov r0, #1
+ str r0, [sp]
+ ldr r2, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r3, #0
+ str r4, [sp, #4]
+ bl MOD17_021D7934
+ add r0, r5, #0
+ mov r1, #0x19
+ add r2, r7, #0
+ mov r3, #0
+ str r4, [sp]
+ bl MOD17_021D7978
+ add r0, r5, #0
+ mov r1, #0x19
+ add r2, r6, #0
+ mov r3, #0
+ str r4, [sp]
+ bl MOD17_021D7994
+ ldr r0, [sp, #0xc]
+ add r4, r4, #1
+ add r0, r0, #3
+ str r0, [sp, #0xc]
+ add r7, r7, #3
+ add r6, r6, #3
+ cmp r4, #5
+ blt _021DC770
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r3, #0
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #0x68
+ str r3, [sp, #8]
+ bl MOD17_021D7954
+ mov r1, #1
+ str r1, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #0x78
+ mov r3, #0
+ bl MOD17_021D7954
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC760
+
+ thumb_func_start MOD17_021DC7E0
+MOD17_021DC7E0: ; 0x021DC7E0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021DC7E6:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D79B0
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021DC7E6
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD17_021D79C4
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD17_021D79C4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC7E0
+
+ thumb_func_start MOD17_021DC808
+MOD17_021DC808: ; 0x021DC808
+ push {r3, lr}
+ cmp r1, #0
+ bne _021DC814
+ bl MOD17_021DC2F8
+ pop {r3, pc}
+_021DC814:
+ cmp r1, #2
+ bne _021DC81E
+ bl MOD17_021DC2E0
+ pop {r3, pc}
+_021DC81E:
+ cmp r1, #1
+ beq _021DC826
+ cmp r1, #3
+ bne _021DC82A
+_021DC826:
+ bl MOD17_021DC2EC
+_021DC82A:
+ pop {r3, pc}
+ thumb_func_end MOD17_021DC808
+
+ thumb_func_start MOD17_021DC82C
+MOD17_021DC82C: ; 0x021DC82C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bne _021DC848
+ ldr r0, [r5, #0x10]
+ mov r1, #0x10
+ mov r2, #0xf
+ bl FUN_020118C4
+ ldr r0, [r5, #0x10]
+ mov r1, #4
+ bl FUN_02011A60
+ pop {r3, r4, r5, pc}
+_021DC848:
+ cmp r4, #1
+ bne _021DC856
+ ldr r0, [r5, #0x10]
+ mov r1, #0x10
+ mov r2, #0x13
+ bl FUN_020118C4
+_021DC856:
+ cmp r4, #3
+ bne _021DC86C
+ ldr r0, [r5, #0x10]
+ mov r1, #0x10
+ mov r2, #0x13
+ bl FUN_020118C4
+ ldr r0, [r5, #0x10]
+ mov r1, #3
+ bl FUN_02011A60
+_021DC86C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC82C
+
+ thumb_func_start MOD17_021DC870
+MOD17_021DC870: ; 0x021DC870
+ push {r3, lr}
+ cmp r3, r2
+ bne _021DC87E
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+_021DC87E:
+ pop {r3, pc}
+ thumb_func_end MOD17_021DC870
+
+ thumb_func_start MOD17_021DC880
+MOD17_021DC880: ; 0x021DC880
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r3, #0
+ mov r0, #0
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r6, r0, #0
+ bne _021DC898
+ bl ErrorHandling
+_021DC898:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0200A914
+ add r7, r0, #0
+ mov r0, #0xe
+ mov r1, #1
+ bl FUN_02018FF4
+ add r4, r0, #0
+ bl FUN_0201901C
+ mov r0, #0
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #0x38]
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020190EC
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DC8F4 ; =0x00010203
+ mov r1, #2
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r2, r7, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DC8F4: .word 0x00010203
+ thumb_func_end MOD17_021DC880
+
+ thumb_func_start MOD17_021DC8F8
+MOD17_021DC8F8: ; 0x021DC8F8
+ ldr r3, _021DC900 ; =0x020191A5
+ mov r1, #1
+ bx r3
+ nop
+_021DC900: .word 0x020191A5
+ thumb_func_end MOD17_021DC8F8
+
+ thumb_func_start MOD17_021DC904
+MOD17_021DC904: ; 0x021DC904
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ add r6, r2, #0
+ bl FUN_0202011C
+ add r3, r0, #0
+ add r2, sp, #0
+ ldmia r3!, {r0, r1}
+ add r7, r2, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r1, [sp]
+ lsl r0, r4, #0xc
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r1, [sp, #4]
+ lsl r0, r6, #0xc
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ add r1, r7, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC904
+
+ thumb_func_start MOD17_021DC940
+MOD17_021DC940: ; 0x021DC940
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021DC904
+ ldr r0, [r4, #0x10]
+ bl FUN_02011938
+ pop {r4, pc}
+ thumb_func_end MOD17_021DC940
+
+ thumb_func_start MOD17_021DC950
+MOD17_021DC950: ; 0x021DC950
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r6, r2, #0
+ mov r1, #1
+ add r5, r0, #0
+ tst r1, r6
+ beq _021DC96A
+ mov r2, #0x52
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+_021DC96A:
+ mov r0, #2
+ tst r0, r6
+ beq _021DC978
+ ldr r1, [r4]
+ add r0, r5, #0
+ bl MOD17_021DCC00
+_021DC978:
+ mov r0, #4
+ add r1, r6, #0
+ tst r1, r0
+ beq _021DC99C
+ mov r1, #0x1b
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x1f
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ ldr r1, [r4]
+ add r0, #0x2c
+ mov r2, #2
+ mov r3, #0x13
+ bl MOD17_021DCC68
+_021DC99C:
+ mov r0, #8
+ tst r0, r6
+ beq _021DC9B0
+ add r0, r5, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0x10]
+ add r0, #0x38
+ bl MOD17_021DCE34
+_021DC9B0:
+ mov r0, #0x10
+ tst r0, r6
+ beq _021DC9CC
+ ldr r0, [r4]
+ str r0, [sp]
+ ldr r0, [r4, #0x20]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0x1c]
+ add r0, #0xa0
+ bl MOD17_021DD074
+_021DC9CC:
+ mov r0, #0x20
+ tst r0, r6
+ beq _021DCA42
+ mov r0, #0x1b
+ str r0, [sp]
+ mov r2, #2
+ str r2, [sp, #4]
+ mov r0, #0x8b
+ str r0, [sp, #8]
+ mov r3, #1
+ str r3, [sp, #0xc]
+ add r0, #0xa9
+ ldr r1, [r4]
+ add r0, r5, r0
+ bl MOD17_021DCC68
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021DCA7C ; =0x0001020F
+ mov r1, #0x1a
+ str r0, [sp, #8]
+ mov r0, #0xff
+ str r0, [sp, #0xc]
+ add r0, #0x35
+ ldr r0, [r5, r0]
+ ldr r2, [r4, #0x14]
+ mov r3, #6
+ bl MOD17_021DCD80
+ mov r0, #0x48
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021DCA7C ; =0x0001020F
+ mov r1, #0x1a
+ str r0, [sp, #8]
+ mov r0, #0xff
+ str r0, [sp, #0xc]
+ add r0, #0x35
+ ldr r0, [r5, r0]
+ ldr r2, [r4, #0x14]
+ ldr r3, [r4, #0x18]
+ bl MOD17_021DCD80
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ mov r2, #1
+ ldr r0, [r5, r0]
+ mov r1, #0
+ add r3, r2, #0
+ bl FUN_0200D0BC
+_021DCA42:
+ ldr r0, [r4, #4]
+ str r0, [r5, #0x30]
+ ldr r0, [r4, #8]
+ str r0, [r5, #0x34]
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ bl MOD17_021DCC38
+ ldr r0, [r4, #0xc]
+ bl FUN_02025084
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r4, #0xc]
+ bl FUN_02024FF4
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r1, #0
+ sub r0, #8
+ ldr r0, [r5, r0]
+ sub r1, #8
+ orr r0, r6
+ str r0, [r5, r1]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021DCA7C: .word 0x0001020F
+ thumb_func_end MOD17_021DC950
+
+ thumb_func_start MOD17_021DCA80
+MOD17_021DCA80: ; 0x021DCA80
+ push {r4, lr}
+ mov r1, #0x4e
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r1, #2
+ tst r1, r2
+ beq _021DCAA0
+ bl MOD17_021DCCD8
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #2
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCAA0:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r0, #4
+ tst r0, r1
+ beq _021DCABE
+ ldr r0, [r4, #0x2c]
+ bl MOD17_021DCCE0
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #4
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCABE:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r0, #8
+ tst r0, r1
+ beq _021DCAE0
+ add r0, r4, #0
+ ldr r1, [r4, #0x34]
+ add r0, #0x38
+ bl MOD17_021DCF30
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #8
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCAE0:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021DCB02
+ add r0, r4, #0
+ ldr r1, [r4, #0x34]
+ add r0, #0xa0
+ bl MOD17_021DD178
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #0x10
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCB02:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r2, [r4, r0]
+ mov r1, #0x20
+ tst r1, r2
+ beq _021DCB22
+ sub r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD17_021DCCE0
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #0x20
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCB22:
+ mov r2, #0x52
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ thumb_func_end MOD17_021DCA80
+
+ thumb_func_start MOD17_021DCB30
+MOD17_021DCB30: ; 0x021DCB30
+ push {r3, lr}
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r0, r1]
+ mov r1, #0x10
+ tst r1, r2
+ beq _021DCB44
+ add r0, #0xa0
+ bl MOD17_021DD1AC
+_021DCB44:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCB30
+
+ thumb_func_start MOD17_021DCB48
+MOD17_021DCB48: ; 0x021DCB48
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r1, [r5, r0]
+ mov r0, #4
+ add r6, r2, #0
+ add r7, r3, #0
+ tst r0, r1
+ bne _021DCB64
+ bl ErrorHandling
+_021DCB64:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0xff
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x2c]
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DCCEC
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCB48
+
+ thumb_func_start MOD17_021DCB80
+MOD17_021DCB80: ; 0x021DCB80
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r1, [r5, r0]
+ mov r0, #4
+ add r6, r2, #0
+ add r7, r3, #0
+ tst r0, r1
+ bne _021DCB9C
+ bl ErrorHandling
+_021DCB9C:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [sp, #8]
+ add r0, r5, r0
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x2c]
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DCD34
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DCB80
+
+ thumb_func_start MOD17_021DCBC0
+MOD17_021DCBC0: ; 0x021DCBC0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0x51
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ thumb_func_end MOD17_021DCBC0
+
+ thumb_func_start MOD17_021DCBD8
+MOD17_021DCBD8: ; 0x021DCBD8
+ ldr r3, _021DCBE0 ; =MOD17_021DCEE8
+ add r0, #0x38
+ bx r3
+ nop
+_021DCBE0: .word MOD17_021DCEE8
+ thumb_func_end MOD17_021DCBD8
+
+ thumb_func_start MOD17_021DCBE4
+MOD17_021DCBE4: ; 0x021DCBE4
+ add r0, #0xbc
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DCBE4
+
+ thumb_func_start MOD17_021DCBEC
+MOD17_021DCBEC: ; 0x021DCBEC
+ add r0, #0xc0
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DCBEC
+
+ thumb_func_start MOD17_021DCBF4
+MOD17_021DCBF4: ; 0x021DCBF4
+ ldr r3, _021DCBFC ; =MOD17_021DD454
+ add r0, #0xd0
+ bx r3
+ nop
+_021DCBFC: .word MOD17_021DD454
+ thumb_func_end MOD17_021DCBF4
+
+ thumb_func_start MOD17_021DCC00
+MOD17_021DCC00: ; 0x021DCC00
+ push {r3, lr}
+ sub sp, #0x30
+ str r1, [sp]
+ mov r1, #0x19
+ str r1, [sp, #4]
+ mov r1, #0xe0
+ str r1, [sp, #8]
+ mov r1, #0xe1
+ str r1, [sp, #0xc]
+ mov r2, #0
+ mov r1, #0xe2
+ str r1, [sp, #0x10]
+ mov r1, #4
+ str r1, [sp, #0x1c]
+ mov r1, #1
+ str r1, [sp, #0x20]
+ mov r1, #0xe
+ str r1, [sp, #0x2c]
+ add r1, sp, #0
+ str r2, [sp, #0x14]
+ str r2, [sp, #0x18]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ bl MOD17_021DBD04
+ add sp, #0x30
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCC00
+
+ thumb_func_start MOD17_021DCC38
+MOD17_021DCC38: ; 0x021DCC38
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, r1, #0
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xe
+ mov r2, #1
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #5
+ add r3, r2, #0
+ bl FUN_0200CD68
+ mov r0, #4
+ mov r1, #0x40
+ mov r2, #0xe
+ bl FUN_02002EEC
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD17_021DCC38
+
+ thumb_func_start MOD17_021DCC68
+MOD17_021DCC68: ; 0x021DCC68
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r3, #0
+ mov r0, #0xe
+ mov r1, #1
+ add r4, r2, #0
+ bl FUN_02018FF4
+ str r0, [r5]
+ bl FUN_0201901C
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ lsl r3, r4, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x2c]
+ mov r2, #5
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x30]
+ lsr r3, r3, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r1, [r5]
+ add r0, r7, #0
+ bl FUN_02019064
+ ldr r0, [r5]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, [sp, #0x34]
+ cmp r0, #0
+ beq _021DCCCC
+ mov r2, #1
+ ldr r0, [r5]
+ mov r1, #0
+ add r3, r2, #0
+ bl FUN_0200D0BC
+_021DCCCC:
+ ldr r0, [r5]
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCC68
+
+ thumb_func_start MOD17_021DCCD8
+MOD17_021DCCD8: ; 0x021DCCD8
+ ldr r3, _021DCCDC ; =MOD17_021DBD4C
+ bx r3
+ .align 2, 0
+_021DCCDC: .word MOD17_021DBD4C
+ thumb_func_end MOD17_021DCCD8
+
+ thumb_func_start MOD17_021DCCE0
+MOD17_021DCCE0: ; 0x021DCCE0
+ ldr r3, _021DCCE8 ; =0x020191A5
+ mov r1, #1
+ bx r3
+ nop
+_021DCCE8: .word 0x020191A5
+ thumb_func_end MOD17_021DCCE0
+
+ thumb_func_start MOD17_021DCCEC
+MOD17_021DCCEC: ; 0x021DCCEC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ mov r1, #0xf
+ add r5, r0, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x28]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ add r2, r6, #0
+ str r0, [sp, #4]
+ ldr r0, _021DCD30 ; =0x0001020F
+ add r3, r7, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ bl MOD17_021DCD80
+ mov r2, #1
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ add r3, r2, #0
+ bl FUN_0200D0BC
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DCD30: .word 0x0001020F
+ thumb_func_end MOD17_021DCCEC
+
+ thumb_func_start MOD17_021DCD34
+MOD17_021DCD34: ; 0x021DCD34
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ mov r1, #0xf
+ add r5, r0, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x28]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ add r2, r6, #0
+ str r0, [sp, #4]
+ ldr r0, _021DCD7C ; =0x0001020F
+ add r3, r7, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ bl MOD17_021DCDD4
+ mov r2, #1
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ add r3, r2, #0
+ bl FUN_0200D0BC
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DCD7C: .word 0x0001020F
+ thumb_func_end MOD17_021DCD34
+
+ thumb_func_start MOD17_021DCD80
+MOD17_021DCD80: ; 0x021DCD80
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ add r4, r3, #0
+ mov r0, #0
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r5, r0, #0
+ bne _021DCD98
+ bl ErrorHandling
+_021DCD98:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp, #0x20]
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ mov r1, #1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x28]
+ add r2, r4, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ bl FUN_0201BDE0
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r5, #0
+ bl FUN_0200A8B8
+ add r0, r6, #0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCD80
+
+ thumb_func_start MOD17_021DCDD4
+MOD17_021DCDD4: ; 0x021DCDD4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x38]
+ add r7, r0, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ add r6, r2, #0
+ str r3, [sp, #0x10]
+ cmp r0, #0
+ beq _021DCDEC
+ bl ErrorHandling
+_021DCDEC:
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r5, r0, #0
+ bne _021DCE00
+ bl ErrorHandling
+_021DCE00:
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ bl FUN_0200A914
+ str r0, [r4]
+ ldr r0, [sp, #0x2c]
+ ldr r3, [sp, #0x28]
+ str r0, [sp]
+ ldr r0, [sp, #0x34]
+ mov r1, #1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ add r0, r7, #0
+ bl FUN_0201BDE0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DCDD4
+
+ thumb_func_start MOD17_021DCE34
+MOD17_021DCE34: ; 0x021DCE34
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x6c
+ add r5, r1, #0
+ mov r1, #0x67
+ str r1, [sp]
+ mov r1, #0xe1
+ str r1, [sp, #4]
+ mov r1, #0x66
+ str r1, [sp, #8]
+ mov r1, #0x65
+ str r1, [sp, #0xc]
+ mov r1, #2
+ str r1, [sp, #0x10]
+ mov r1, #0x7d
+ add r4, r2, #0
+ lsl r1, r1, #4
+ str r3, [sp, #0x1c]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ add r1, r4, #0
+ mov r2, #0xe
+ mov r3, #0x19
+ bl MOD17_021DCF54
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0
+ add r2, sp, #0x48
+ mov r3, #0
+ bl MOD17_021DD014
+ add r0, sp, #0x48
+ str r0, [sp, #0x2c]
+ mov r0, #2
+ str r0, [sp, #0x40]
+ mov r0, #0
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x3c]
+ mov r0, #0xe
+ str r0, [sp, #0x44]
+ mov r0, #0x68
+ ldr r7, [sp, #0x24]
+ str r5, [sp, #0x28]
+ str r0, [sp, #0x20]
+_021DCE8A:
+ ldr r0, [sp, #0x20]
+ mov r6, #0
+ str r0, [sp, #0x34]
+ lsl r1, r0, #0xc
+ mov r0, #2
+ lsl r0, r0, #0x14
+ str r1, [sp, #0x34]
+ add r0, r1, r0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x18]
+ lsl r1, r7, #2
+ mov r4, #0x26
+ add r5, r0, r1
+_021DCEA4:
+ str r4, [sp, #0x30]
+ lsl r0, r4, #0xc
+ str r0, [sp, #0x30]
+ add r0, sp, #0x28
+ bl FUN_0201FF84
+ mov r1, #1
+ str r0, [r5, #0x10]
+ bl FUN_02020130
+ ldr r0, [sp, #0x1c]
+ add r1, r6, r7
+ cmp r1, r0
+ blt _021DCEC8
+ ldr r0, [r5, #0x10]
+ mov r1, #0
+ bl FUN_020200A0
+_021DCEC8:
+ add r6, r6, #1
+ add r4, #0x12
+ add r5, r5, #4
+ cmp r6, #0xa
+ blt _021DCEA4
+ ldr r0, [sp, #0x20]
+ add r7, #0xa
+ add r0, #0x12
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ cmp r0, #2
+ blt _021DCE8A
+ add sp, #0x6c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DCE34
+
+ thumb_func_start MOD17_021DCEE8
+MOD17_021DCEE8: ; 0x021DCEE8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r6, [r7, #0x60]
+ add r5, r1, #0
+ cmp r6, r5
+ bge _021DCF0E
+ cmp r6, r5
+ bge _021DCF2C
+ lsl r0, r6, #2
+ add r4, r7, r0
+_021DCEFC:
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_02020130
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, r5
+ blt _021DCEFC
+ b _021DCF2C
+_021DCF0E:
+ cmp r6, r5
+ ble _021DCF2C
+ sub r6, r6, #1
+ cmp r6, r5
+ blt _021DCF2C
+ lsl r0, r6, #2
+ add r4, r7, r0
+_021DCF1C:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02020130
+ sub r6, r6, #1
+ sub r4, r4, #4
+ cmp r6, r5
+ bge _021DCF1C
+_021DCF2C:
+ str r5, [r7, #0x60]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DCEE8
+
+ thumb_func_start MOD17_021DCF30
+MOD17_021DCF30: ; 0x021DCF30
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r4, #0
+ add r5, r6, #0
+_021DCF3A:
+ ldr r0, [r5, #0x10]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x14
+ blt _021DCF3A
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD17_021DCFE0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCF30
+
+ thumb_func_start MOD17_021DCF54
+MOD17_021DCF54: ; 0x021DCF54
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r2, #0
+ ldr r7, [sp, #0x3c]
+ ldr r2, [sp, #0x28]
+ add r5, r0, #0
+ add r0, r7, r2
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r4, r1, #0
+ str r6, [sp, #8]
+ ldr r0, [r4]
+ str r3, [sp, #0x10]
+ add r1, r3, #0
+ mov r3, #0
+ bl FUN_02008F34
+ str r0, [r5]
+ bl FUN_02009B04
+ ldr r0, [r5]
+ bl FUN_02009474
+ ldr r2, [sp, #0x2c]
+ ldr r1, [sp, #0x10]
+ add r0, r7, r2
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x38]
+ mov r3, #0
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldr r0, [r4, #4]
+ bl FUN_02008FEC
+ str r0, [r5, #4]
+ bl FUN_02009D68
+ ldr r0, [r5, #4]
+ bl FUN_02009474
+ ldr r2, [sp, #0x30]
+ ldr r1, [sp, #0x10]
+ add r0, r7, r2
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r0, [r4, #8]
+ mov r3, #0
+ bl FUN_020090AC
+ ldr r2, [sp, #0x34]
+ str r0, [r5, #8]
+ add r0, r7, r2
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r0, [r4, #0xc]
+ ldr r1, [sp, #0x10]
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r5, #0xc]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCF54
+
+ thumb_func_start MOD17_021DCFE0
+MOD17_021DCFE0: ; 0x021DCFE0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ bl FUN_02009C0C
+ ldr r0, [r5, #4]
+ bl FUN_02009E04
+ ldr r0, [r4]
+ ldr r1, [r5]
+ bl FUN_02009490
+ ldr r0, [r4, #4]
+ ldr r1, [r5, #4]
+ bl FUN_02009490
+ ldr r0, [r4, #8]
+ ldr r1, [r5, #8]
+ bl FUN_02009490
+ ldr r0, [r4, #0xc]
+ ldr r1, [r5, #0xc]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DCFE0
+
+ thumb_func_start MOD17_021DD014
+MOD17_021DD014: ; 0x021DD014
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ add r7, r2, #0
+ add r6, r3, #0
+ bl FUN_02009530
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #4]
+ bl FUN_02009530
+ str r0, [sp, #0x30]
+ ldr r0, [r5, #8]
+ bl FUN_02009530
+ str r0, [sp, #0x34]
+ ldr r0, [r5, #0xc]
+ bl FUN_02009530
+ str r0, [sp]
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r6, [sp, #0x10]
+ ldr r1, [r4]
+ ldr r2, [sp, #0x30]
+ str r1, [sp, #0x14]
+ ldr r1, [r4, #4]
+ ldr r3, [sp, #0x34]
+ str r1, [sp, #0x18]
+ ldr r1, [r4, #8]
+ str r1, [sp, #0x1c]
+ ldr r1, [r4, #0xc]
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r1, [sp, #0x2c]
+ add r0, r7, #0
+ bl FUN_02008AA4
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD014
+
+ thumb_func_start MOD17_021DD074
+MOD17_021DD074: ; 0x021DD074
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x60
+ add r4, r1, #0
+ mov r1, #0xe5
+ str r1, [sp]
+ mov r1, #0xe6
+ str r1, [sp, #4]
+ mov r1, #0xe4
+ str r1, [sp, #8]
+ mov r1, #0xe3
+ str r1, [sp, #0xc]
+ mov r1, #2
+ str r1, [sp, #0x10]
+ ldr r1, _021DD170 ; =0x00000BB8
+ add r5, r2, #0
+ str r3, [sp, #0x18]
+ str r1, [sp, #0x14]
+ add r7, r0, #0
+ add r1, r5, #0
+ mov r2, #0xe
+ mov r3, #0x19
+ bl MOD17_021DCF54
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, sp, #0x3c
+ mov r3, #0
+ bl MOD17_021DD014
+ add r0, sp, #0x3c
+ str r0, [sp, #0x20]
+ mov r2, #2
+ mov r0, #0xe
+ mov r1, #0x3a
+ str r0, [sp, #0x38]
+ lsl r1, r1, #0xc
+ lsl r0, r2, #0x14
+ mov r6, #0
+ str r4, [sp, #0x1c]
+ str r1, [sp, #0x28]
+ add r0, r1, r0
+ str r2, [sp, #0x34]
+ str r6, [sp, #0x30]
+ str r0, [sp, #0x28]
+ mov r4, #0x67
+ add r5, r7, #0
+_021DD0D0:
+ str r4, [sp, #0x24]
+ lsl r0, r4, #0xc
+ str r0, [sp, #0x24]
+ add r0, sp, #0x1c
+ bl FUN_0201FF84
+ str r0, [r5, #0x10]
+ add r6, r6, #1
+ add r4, #0x18
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021DD0D0
+ ldr r0, [sp, #0x18]
+ mov r1, #0x1e
+ str r0, [r7, #0x1c]
+ mul r1, r0
+ str r1, [r7, #0x20]
+ ldr r1, [sp, #0x7c]
+ str r1, [r7, #0x2c]
+ str r0, [r1]
+ ldr r1, [r7, #0x2c]
+ str r0, [r1, #8]
+ add r0, r7, #0
+ mov r1, #0
+ add r0, #0x90
+ str r1, [r0]
+ add r0, r7, #0
+ bl MOD17_021DD204
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0xc1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ ldr r1, [sp, #0x78]
+ add r0, #0x18
+ mov r2, #0xa
+ mov r3, #8
+ bl MOD17_021DCC68
+ ldr r0, [r7, #0x18]
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #4
+ ldr r0, _021DD174 ; =0x00010200
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0xff
+ str r2, [sp, #0xc]
+ ldr r0, [r7, #0x18]
+ mov r1, #0x1a
+ add r2, #0x52
+ bl MOD17_021DCD80
+ mov r0, #0x48
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, _021DD174 ; =0x00010200
+ mov r2, #0xff
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r7, #0x18]
+ mov r1, #0x1a
+ add r2, #0x52
+ mov r3, #5
+ bl MOD17_021DCD80
+ ldr r0, [r7, #0x18]
+ bl FUN_020191D0
+ add sp, #0x60
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD170: .word 0x00000BB8
+_021DD174: .word 0x00010200
+ thumb_func_end MOD17_021DD074
+
+ thumb_func_start MOD17_021DD178
+MOD17_021DD178: ; 0x021DD178
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x24]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021DD188
+ bl FUN_0200CAB4
+_021DD188:
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ beq _021DD192
+ bl FUN_0200CAB4
+_021DD192:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021DCFE0
+ ldr r0, [r5, #0x18]
+ bl MOD17_021DCCE0
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0x94
+ bl Call_FillMemWithValue
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DD178
+
+ thumb_func_start MOD17_021DD1AC
+MOD17_021DD1AC: ; 0x021DD1AC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021DD27C
+ ldr r0, [r4, #0x20]
+ mov r1, #0x1e
+ bl _s32_div_f
+ add r1, r0, #0
+ ldr r0, [r4, #0x2c]
+ bl FUN_02083A34
+ add r0, r4, #0
+ bl MOD17_021DD1DC
+ add r0, r4, #0
+ bl MOD17_021DD204
+ add r4, #0x30
+ add r0, r4, #0
+ bl MOD17_021DD3BC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD1AC
+
+ thumb_func_start MOD17_021DD1DC
+MOD17_021DD1DC: ; 0x021DD1DC
+ push {r3, lr}
+ ldr r1, [r0, #0x2c]
+ ldr r2, [r1]
+ ldr r1, [r0, #0x1c]
+ cmp r1, r2
+ beq _021DD1FC
+ str r2, [r0, #0x1c]
+ cmp r2, #0xa
+ bgt _021DD1FC
+ add r1, r0, #0
+ add r1, #0x30
+ bl MOD17_021DD2E0
+ ldr r0, _021DD200 ; =0x00000683
+ bl FUN_020054C8
+_021DD1FC:
+ pop {r3, pc}
+ nop
+_021DD200: .word 0x00000683
+ thumb_func_end MOD17_021DD1DC
+
+ thumb_func_start MOD17_021DD204
+MOD17_021DD204: ; 0x021DD204
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ ldr r0, [r6, #0x1c]
+ mov r1, #1
+ str r0, [sp]
+ mov r0, #0xa
+ add r4, r1, #0
+ mul r4, r0
+ mov r7, #0
+ add r5, r6, #0
+_021DD21A:
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl _s32_div_f
+ str r0, [sp, #4]
+ cmp r0, #0xa
+ ble _021DD22C
+ bl ErrorHandling
+_021DD22C:
+ ldr r0, [r5, #0x10]
+ ldr r1, [sp, #4]
+ bl FUN_02020130
+ ldr r0, [sp, #4]
+ add r1, r0, #0
+ ldr r0, [sp]
+ mul r1, r4
+ sub r0, r0, r1
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0xa
+ bl _s32_div_f
+ add r4, r0, #0
+ add r0, r6, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021DD26E
+ ldr r0, [r6, #0x1c]
+ cmp r0, #0xa
+ bgt _021DD26E
+ ldr r0, [r5, #0x10]
+ mov r1, #1
+ bl FUN_0202027C
+ cmp r7, #1
+ bne _021DD26E
+ add r1, r6, #0
+ add r1, #0x90
+ mov r0, #1
+ str r0, [r1]
+_021DD26E:
+ add r7, r7, #1
+ add r5, r5, #4
+ cmp r7, #2
+ blt _021DD21A
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD204
+
+ thumb_func_start MOD17_021DD27C
+MOD17_021DD27C: ; 0x021DD27C
+ ldr r1, [r0, #0x20]
+ sub r1, r1, #1
+ bmi _021DD284
+ str r1, [r0, #0x20]
+_021DD284:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DD27C
+
+ thumb_func_start MOD17_021DD288
+MOD17_021DD288: ; 0x021DD288
+ str r1, [r0]
+ str r1, [r0, #4]
+ sub r1, r2, r1
+ str r1, [r0, #8]
+ str r3, [r0, #0x10]
+ mov r1, #0
+ str r1, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD17_021DD288
+
+ thumb_func_start MOD17_021DD298
+MOD17_021DD298: ; 0x021DD298
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4, #8]
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #0xc
+ bl FX_Div
+ ldr r1, [r4, #4]
+ add r0, r0, r1
+ str r0, [r4]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021DD2D8
+ str r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+_021DD2D8:
+ str r1, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD298
+
+ thumb_func_start MOD17_021DD2E0
+MOD17_021DD2E0: ; 0x021DD2E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp]
+ str r1, [sp, #4]
+ mov r1, #0x3a
+ mov r0, #2
+ lsl r1, r1, #0xc
+ lsl r0, r0, #0x14
+ ldr r4, [sp, #4]
+ str r1, [sp, #0x10]
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ ldr r6, [sp]
+ mov r7, #0
+ mov r5, #0x67
+ str r0, [sp, #8]
+_021DD302:
+ ldr r0, [r6, #0x10]
+ mov r1, #2
+ str r0, [r4, #4]
+ bl FUN_020200EC
+ ldr r2, [sp, #8]
+ str r5, [sp, #0xc]
+ lsl r0, r5, #0xc
+ add r2, #0xc
+ add r3, sp, #0xc
+ str r0, [sp, #0xc]
+ ldmia r3!, {r0, r1}
+ str r2, [sp, #8]
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r7, r7, #1
+ str r0, [r2]
+ add r6, r6, #4
+ add r4, r4, #4
+ add r5, #0x18
+ cmp r7, #2
+ blt _021DD302
+ ldr r0, [sp]
+ ldr r1, [r0, #0x1c]
+ mov r0, #0xa
+ sub r0, r0, r1
+ cmp r0, #0
+ ble _021DD35C
+ lsl r0, r0, #0xc
+ ldr r2, _021DD3B8 ; =0x00000266
+ asr r1, r0, #0x1f
+ mov r3, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r4, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r4, #0xc
+ orr r1, r0
+ lsl r0, r2, #1
+ add r4, r1, r0
+ b _021DD360
+_021DD35C:
+ mov r4, #1
+ lsl r4, r4, #0xc
+_021DD360:
+ ldr r0, [sp, #4]
+ mov r2, #1
+ add r0, #0x24
+ add r1, r4, #0
+ lsl r2, r2, #0xc
+ mov r3, #0x10
+ bl MOD17_021DD288
+ mov r2, #6
+ asr r1, r4, #0x1f
+ add r0, r4, #0
+ lsl r2, r2, #0xe
+ mov r3, #0
+ bl _ll_mul
+ mov r3, #2
+ mov r2, #0
+ lsl r3, r3, #0xa
+ add r3, r0, r3
+ adc r1, r2
+ lsl r0, r1, #0x14
+ lsr r1, r3, #0xc
+ orr r1, r0
+ mov r0, #6
+ lsl r0, r0, #0xe
+ sub r4, r1, r0
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ add r0, #0x38
+ mov r3, #0x10
+ bl MOD17_021DD288
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ add r0, #0x4c
+ mov r2, #0
+ mov r3, #0x10
+ bl MOD17_021DD288
+ ldr r0, [sp, #4]
+ mov r1, #1
+ str r1, [r0]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD3B8: .word 0x00000266
+ thumb_func_end MOD17_021DD2E0
+
+ thumb_func_start MOD17_021DD3BC
+MOD17_021DD3BC: ; 0x021DD3BC
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021DD44E
+ add r0, r5, #0
+ add r0, #0x24
+ bl MOD17_021DD298
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x38
+ bl MOD17_021DD298
+ add r0, r5, #0
+ add r0, #0x4c
+ bl MOD17_021DD298
+ ldr r0, [r5, #0x24]
+ add r1, sp, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x24]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #4]
+ bl FUN_02020064
+ ldr r0, [r5, #8]
+ add r1, sp, #0xc
+ bl FUN_02020064
+ add r6, r5, #0
+ add r6, #0xc
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r1, [sp]
+ ldr r0, [r5, #0x38]
+ sub r0, r1, r0
+ str r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r0, [r5, #0x4c]
+ sub r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ add r1, r2, #0
+ bl FUN_02020044
+ add r6, r5, #0
+ add r6, #0x18
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r1, [sp, #4]
+ ldr r0, [r5, #0x4c]
+ sub r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r5, #8]
+ add r1, r2, #0
+ bl FUN_02020044
+ cmp r4, #0
+ beq _021DD44E
+ mov r0, #0
+ str r0, [r5]
+_021DD44E:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD3BC
+
+ thumb_func_start MOD17_021DD454
+MOD17_021DD454: ; 0x021DD454
+ ldr r0, [r0]
+ cmp r0, #1
+ beq _021DD45E
+ mov r0, #1
+ bx lr
+_021DD45E:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DD454
+
+ thumb_func_start MOD17_021DD464
+MOD17_021DD464: ; 0x021DD464
+ push {r3, lr}
+ sub sp, #0x10
+ add r3, r1, #0
+ stmia r0!, {r1}
+ add r3, #0x48
+ str r3, [sp]
+ ldr r1, [r1, #0x74]
+ lsl r1, r1, #2
+ add r1, #0x89
+ str r1, [sp, #4]
+ mov r1, #0x10
+ str r1, [sp, #8]
+ add r1, sp, #0
+ str r2, [sp, #0xc]
+ bl MOD17_021DBD68
+ add sp, #0x10
+ pop {r3, pc}
+ thumb_func_end MOD17_021DD464
+
+ thumb_func_start MOD17_021DD488
+MOD17_021DD488: ; 0x021DD488
+ ldr r3, _021DD490 ; =MOD17_021DBD80
+ add r0, r0, #4
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021DD490: .word MOD17_021DBD80
+ thumb_func_end MOD17_021DD488
+
+ thumb_func_start MOD17_021DD494
+MOD17_021DD494: ; 0x021DD494
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r4, #4
+ bl MOD17_021DBDE8
+ mov r1, #0x1c
+ mov r0, #0
+_021DD4A2:
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ bne _021DD4A2
+ pop {r4, pc}
+ thumb_func_end MOD17_021DD494
+
+ thumb_func_start MOD17_021DD4AC
+MOD17_021DD4AC: ; 0x021DD4AC
+ push {r3, r4, lr}
+ sub sp, #0x6c
+ add r2, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ add r1, r2, #0
+ bl MOD17_021DD9E8
+ add r0, sp, #0
+ add r1, r4, #0
+ bl MOD17_021DD9FC
+ add r0, sp, #0
+ bl MOD17_021DD6DC
+ add sp, #0x6c
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD4AC
+
+ thumb_func_start MOD17_021DD4D0
+MOD17_021DD4D0: ; 0x021DD4D0
+ push {r3, r4, lr}
+ sub sp, #0x6c
+ add r2, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ add r1, r2, #0
+ bl MOD17_021DD9E8
+ add r0, sp, #0
+ add r1, r4, #0
+ bl MOD17_021DDA44
+ add r0, sp, #0
+ bl MOD17_021DD6DC
+ add sp, #0x6c
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD4D0
+
+ thumb_func_start MOD17_021DD4F4
+MOD17_021DD4F4: ; 0x021DD4F4
+ push {r3, r4, lr}
+ sub sp, #0x6c
+ add r2, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ add r1, r2, #0
+ bl MOD17_021DD9E8
+ add r0, sp, #0
+ add r1, r4, #0
+ bl MOD17_021DDA44
+ add r0, sp, #0
+ bl MOD17_021DD778
+ add sp, #0x6c
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD4F4
+
+ thumb_func_start MOD17_021DD518
+MOD17_021DD518: ; 0x021DD518
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x95
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #1
+ bne _021DD52E
+ sub r0, #0x48
+ add r0, r4, r0
+ bl MOD17_021DD488
+_021DD52E:
+ mov r0, #0x96
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021DD53E
+ add r0, r4, #0
+ bl MOD17_021DD838
+_021DD53E:
+ pop {r4, pc}
+ thumb_func_end MOD17_021DD518
+
+ thumb_func_start MOD17_021DD540
+MOD17_021DD540: ; 0x021DD540
+ push {r4, lr}
+ mov r1, #0x95
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ cmp r1, #0
+ beq _021DD552
+ bl MOD17_021DD984
+_021DD552:
+ add r0, r4, #0
+ bl MOD17_021DD968
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ bl MOD17_021D750C
+ mov r0, #6
+ mov r1, #0
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ sub r0, #8
+ add r0, r4, r0
+ bl MOD17_021DBA1C
+ add r0, r4, #0
+ bl MOD17_021DD86C
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD540
+
+ thumb_func_start MOD17_021DD58C
+MOD17_021DD58C: ; 0x021DD58C
+ ldr r3, _021DD590 ; =MOD17_021D7C1C
+ bx r3
+ .align 2, 0
+_021DD590: .word MOD17_021D7C1C
+ thumb_func_end MOD17_021DD58C
+
+ thumb_func_start MOD17_021DD594
+MOD17_021DD594: ; 0x021DD594
+ mov r2, #0x96
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ bx lr
+ thumb_func_end MOD17_021DD594
+
+ thumb_func_start MOD17_021DD59C
+MOD17_021DD59C: ; 0x021DD59C
+ str r1, [r0, #0x1c]
+ bx lr
+ thumb_func_end MOD17_021DD59C
+
+ thumb_func_start MOD17_021DD5A0
+MOD17_021DD5A0: ; 0x021DD5A0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ mov r2, #0x61
+ add r4, r1, #0
+ lsl r2, r2, #2
+ add r5, r0, #0
+ add r1, r2, #0
+ add r0, r5, r2
+ str r6, [sp]
+ add r1, #0xac
+ add r2, #0xb0
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ add r3, r4, #0
+ bl MOD17_021DA140
+ mov r0, #0x95
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021DD5E8
+ mov r3, #0x88
+ ldr r0, [r5, #0x38]
+ mov r1, #2
+ mov r2, #0
+ sub r3, r3, r4
+ bl FUN_020179E0
+ mov r3, #0x10
+ ldr r0, [r5, #0x38]
+ mov r1, #2
+ mov r2, #3
+ sub r3, r3, r6
+ bl FUN_020179E0
+_021DD5E8:
+ mov r0, #0x23
+ lsl r0, r0, #4
+ str r4, [r5, r0]
+ add r0, r0, #4
+ str r6, [r5, r0]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD5A0
+
+ thumb_func_start MOD17_021DD5F8
+MOD17_021DD5F8: ; 0x021DD5F8
+ mov r3, #0x8e
+ lsl r3, r3, #2
+ str r1, [r0, r3]
+ add r1, r3, #4
+ str r2, [r0, r1]
+ bx lr
+ thumb_func_end MOD17_021DD5F8
+
+ thumb_func_start MOD17_021DD604
+MOD17_021DD604: ; 0x021DD604
+ mov r2, #9
+ lsl r2, r2, #6
+ strh r1, [r0, r2]
+ bx lr
+ thumb_func_end MOD17_021DD604
+
+ thumb_func_start MOD17_021DD60C
+MOD17_021DD60C: ; 0x021DD60C
+ push {r3, r4}
+ mov r4, #0x91
+ lsl r4, r4, #2
+ str r1, [r0, r4]
+ add r1, r4, #4
+ str r2, [r0, r1]
+ add r4, #8
+ str r3, [r0, r4]
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD17_021DD60C
+
+ thumb_func_start MOD17_021DD620
+MOD17_021DD620: ; 0x021DD620
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ add r4, r1, #0
+ add r6, r2, #0
+ add r0, r5, r0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021DB878
+ mov r0, #0x61
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD17_021DA348
+ mov r0, #0x23
+ lsl r0, r0, #4
+ ldr r1, [sp, #0x10]
+ ldr r2, [r5, r0]
+ sub r1, r4, r1
+ add r0, r0, #4
+ add r7, r2, r1
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0xc]
+ sub r0, r6, r0
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r2, [sp]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD17_021DD5A0
+ ldr r2, [sp]
+ add r0, r5, #0
+ sub r1, r4, r7
+ sub r2, r6, r2
+ bl MOD17_021DD5F8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DD620
+
+ thumb_func_start MOD17_021DD678
+MOD17_021DD678: ; 0x021DD678
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ mov r2, #0x92
+ add r5, r0, #0
+ mov r0, #0x28
+ lsl r2, r2, #2
+ sub r0, r0, r3
+ ldr r2, [r5, r2]
+ lsl r0, r0, #0xc
+ add r6, r1, #0
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ add r2, r0, #0
+ add r0, r5, #0
+ mov r5, #2
+ add r3, r1, #0
+ add r1, r6, #0
+ mov r6, #0
+ lsl r5, r5, #0xa
+ add r5, r2, r5
+ adc r3, r6
+ lsl r2, r3, #0x14
+ lsr r3, r5, #0xc
+ orr r3, r2
+ asr r2, r3, #0xc
+ sub r2, r4, r2
+ bl MOD17_021DD620
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD678
+
+ thumb_func_start MOD17_021DD6B8
+MOD17_021DD6B8: ; 0x021DD6B8
+ mov r2, #0x25
+ lsl r2, r2, #4
+ strh r1, [r0, r2]
+ sub r2, #0xcc
+ ldr r3, _021DD6C8 ; =MOD17_021DA3D8
+ add r0, r0, r2
+ bx r3
+ nop
+_021DD6C8: .word MOD17_021DA3D8
+ thumb_func_end MOD17_021DD6B8
+
+ thumb_func_start MOD17_021DD6CC
+MOD17_021DD6CC: ; 0x021DD6CC
+ mov r2, #0x61
+ lsl r2, r2, #2
+ ldr r3, _021DD6D8 ; =MOD17_021DA1DC
+ add r0, r0, r2
+ bx r3
+ nop
+_021DD6D8: .word MOD17_021DA1DC
+ thumb_func_end MOD17_021DD6CC
+
+ thumb_func_start MOD17_021DD6DC
+MOD17_021DD6DC: ; 0x021DD6DC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x97
+ ldr r0, [r5, #0x68]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x97
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x8b
+ ldr r1, [r5, #0x68]
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, [r5, #0x68]
+ bl FUN_020669C0
+ mov r1, #0x8a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r5]
+ ldr r1, [r4, r1]
+ bl FUN_02027CB8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD7F4
+ ldr r1, [r5, #0x58]
+ ldr r2, [r5, #0x68]
+ add r0, r4, #0
+ bl MOD17_021D7B94
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x68]
+ add r0, r4, r0
+ mov r1, #0x15
+ bl MOD17_021DB9F4
+ ldr r1, [r5, #0x68]
+ mov r0, #0x14
+ bl MOD17_021D74E0
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD88C
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD954
+ mov r1, #0x83
+ lsl r1, r1, #2
+ add r0, r4, r1
+ sub r1, #0x88
+ ldr r2, [r5, #0x68]
+ add r1, r4, r1
+ bl MOD17_021DD464
+ mov r0, #0x95
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD994
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DD6DC
+
+ thumb_func_start MOD17_021DD778
+MOD17_021DD778: ; 0x021DD778
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x97
+ ldr r0, [r5, #0x68]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x97
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x8b
+ ldr r1, [r5, #0x68]
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, [r5, #0x68]
+ bl FUN_020669C0
+ mov r1, #0x8a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r5]
+ ldr r1, [r4, r1]
+ bl FUN_02027CB8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD7F4
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x68]
+ add r0, r4, r0
+ mov r1, #0x15
+ bl MOD17_021DB9F4
+ ldr r1, [r5, #0x68]
+ mov r0, #0x14
+ bl MOD17_021D74E0
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD88C
+ mov r0, #0x95
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r1, #1
+ add r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD994
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DD778
+
+ thumb_func_start MOD17_021DD7F4
+MOD17_021DD7F4: ; 0x021DD7F4
+ push {r3, r4, r5, lr}
+ sub sp, #0x28
+ add r4, r1, #0
+ ldr r1, _021DD834 ; =0x000002CE
+ add r5, r0, #0
+ str r1, [sp]
+ mov r1, #0x76
+ str r1, [sp, #4]
+ mov r1, #0x13
+ str r1, [sp, #8]
+ ldr r1, [r4, #0x68]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x68]
+ add r1, sp, #0
+ bl MOD17_021D7B68
+ ldr r3, [r4, #0x68]
+ add r0, r5, #0
+ add r1, sp, #0x10
+ add r2, r4, #0
+ bl MOD17_021DDA8C
+ add r0, r5, #0
+ add r1, sp, #0x10
+ bl MOD17_021D78A0
+ add r0, sp, #0x10
+ bl MOD17_021D7A24
+ add sp, #0x28
+ pop {r3, r4, r5, pc}
+ nop
+_021DD834: .word 0x000002CE
+ thumb_func_end MOD17_021DD7F4
+
+ thumb_func_start MOD17_021DD838
+MOD17_021DD838: ; 0x021DD838
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r3, #0x91
+ lsl r3, r3, #2
+ add r1, r0, r3
+ str r1, [sp]
+ add r1, r3, #0
+ sub r1, #0x14
+ ldr r2, [r0, r1]
+ add r1, r3, #0
+ sub r1, #0xc
+ ldr r1, [r0, r1]
+ add r1, r2, r1
+ add r2, r3, #0
+ sub r2, #0x10
+ ldr r4, [r0, r2]
+ add r2, r3, #0
+ sub r2, #8
+ sub r3, r3, #4
+ ldr r2, [r0, r2]
+ ldrh r3, [r0, r3]
+ add r2, r4, r2
+ bl MOD17_021D7C28
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD17_021DD838
+
+ thumb_func_start MOD17_021DD86C
+MOD17_021DD86C: ; 0x021DD86C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D78BC
+ add r0, r4, #0
+ bl MOD17_021D7BE4
+ mov r0, #0x95
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021DD88A
+ add r0, r4, #0
+ bl MOD17_021D7C10
+_021DD88A:
+ pop {r4, pc}
+ thumb_func_end MOD17_021DD86C
+
+ thumb_func_start MOD17_021DD88C
+MOD17_021DD88C: ; 0x021DD88C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r5, r0, #0
+ add r2, sp, #0x28
+ mov r0, #0
+ add r6, r1, #0
+ add r3, r2, #0
+ add r1, r0, #0
+ stmia r3!, {r0, r1}
+ stmia r3!, {r0, r1}
+ stmia r3!, {r0, r1}
+ stmia r3!, {r0, r1}
+ str r0, [r3]
+ ldr r0, [r5]
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #4]
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x30]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0x34]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0x38]
+ ldr r0, [r5, #0x38]
+ str r0, [sp, #0x3c]
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r1, [r5, r0]
+ str r1, [sp, #0x40]
+ add r1, r0, #0
+ sub r1, #8
+ add r1, r5, r1
+ str r1, [sp, #0x44]
+ mov r1, #0x15
+ add r0, r0, #4
+ str r1, [sp, #0x48]
+ add r0, r5, r0
+ add r1, r2, #0
+ bl MOD17_021D9F80
+ ldr r0, [r6]
+ bl FUN_02027CA8
+ add r7, r0, #0
+ ldr r0, [r6]
+ bl FUN_02027CB0
+ add r4, r0, #0
+ ldr r0, [r6]
+ bl FUN_02027CA0
+ str r4, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r6, #0x68]
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [sp, #8]
+ add r0, r5, r1
+ add r1, #0xa4
+ ldr r1, [r5, r1]
+ add r2, sp, #0x18
+ add r3, r7, #0
+ bl MOD17_021D9FF0
+ ldr r0, [r6, #0x54]
+ mov r7, #0
+ cmp r0, #0
+ ble _021DD950
+ add r4, r6, #0
+_021DD916:
+ ldr r0, [r4, #4]
+ bl FUN_02027CF8
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #4]
+ bl FUN_02027CFC
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ bl FUN_02027D00
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #4]
+ bl FUN_02027D04
+ str r0, [sp]
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ add r0, r5, r0
+ bl MOD17_021DA064
+ ldr r0, [r6, #0x54]
+ add r7, r7, #1
+ add r4, r4, #4
+ cmp r7, r0
+ blt _021DD916
+_021DD950:
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DD88C
+
+ thumb_func_start MOD17_021DD954
+MOD17_021DD954: ; 0x021DD954
+ add r2, r1, #0
+ mov r1, #0x61
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r1, [r2, #0x5c]
+ ldr r3, _021DD964 ; =MOD17_021DA2F0
+ ldr r2, [r2, #0x68]
+ bx r3
+ .align 2, 0
+_021DD964: .word MOD17_021DA2F0
+ thumb_func_end MOD17_021DD954
+
+ thumb_func_start MOD17_021DD968
+MOD17_021DD968: ; 0x021DD968
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA100
+ mov r0, #0x61
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021D9FD4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD968
+
+ thumb_func_start MOD17_021DD984
+MOD17_021DD984: ; 0x021DD984
+ mov r1, #0x61
+ lsl r1, r1, #2
+ ldr r3, _021DD990 ; =MOD17_021DA33C
+ add r0, r0, r1
+ bx r3
+ nop
+_021DD990: .word MOD17_021DA33C
+ thumb_func_end MOD17_021DD984
+
+ thumb_func_start MOD17_021DD994
+MOD17_021DD994: ; 0x021DD994
+ push {r3, r4, r5, lr}
+ add r3, r1, #0
+ mov r1, #0x23
+ add r4, r0, #0
+ mov r2, #0x48
+ lsl r1, r1, #4
+ str r2, [r4, r1]
+ mov r5, #0x38
+ add r2, r1, #4
+ str r5, [r4, r2]
+ add r2, r1, #0
+ add r2, #8
+ str r5, [r4, r2]
+ add r2, r1, #0
+ mov r5, #0x40
+ add r2, #0xc
+ str r5, [r4, r2]
+ lsl r2, r5, #6
+ add r5, r1, #0
+ add r5, #0x14
+ str r2, [r4, r5]
+ add r5, r1, #0
+ add r5, #0x18
+ str r2, [r4, r5]
+ add r5, r1, #0
+ add r5, #0x1c
+ str r2, [r4, r5]
+ mov r2, #0
+ add r1, #0x10
+ strh r2, [r4, r1]
+ ldr r1, [r3, #0x60]
+ ldr r2, [r3, #0x64]
+ bl MOD17_021DD5A0
+ mov r0, #0x25
+ ldr r1, _021DD9E4 ; =0x00007FFF
+ lsl r0, r0, #4
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+ nop
+_021DD9E4: .word 0x00007FFF
+ thumb_func_end MOD17_021DD994
+
+ thumb_func_start MOD17_021DD9E8
+MOD17_021DD9E8: ; 0x021DD9E8
+ ldr r2, [r1]
+ str r2, [r0, #0x58]
+ ldr r2, [r1, #4]
+ str r2, [r0, #0x60]
+ ldr r2, [r1, #8]
+ str r2, [r0, #0x64]
+ ldr r1, [r1, #0xc]
+ str r1, [r0, #0x68]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DD9E8
+
+ thumb_func_start MOD17_021DD9FC
+MOD17_021DD9FC: ; 0x021DD9FC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ bl FUN_02027564
+ add r6, r5, #0
+ str r0, [r5]
+ mov r4, #0
+ str r4, [r5, #0x54]
+ add r6, #0x54
+_021DDA12:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02027528
+ cmp r0, #0
+ beq _021DDA34
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02027590
+ ldr r1, [r5, #0x54]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ str r0, [r1, #4]
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_021DDA34:
+ add r4, r4, #1
+ cmp r4, #0xa
+ blt _021DDA12
+ add r0, r7, #0
+ bl FUN_0202766C
+ str r0, [r5, #0x5c]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DD9FC
+
+ thumb_func_start MOD17_021DDA44
+MOD17_021DDA44: ; 0x021DDA44
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ bl FUN_02027A94
+ add r6, r5, #0
+ str r0, [r5]
+ mov r4, #0
+ str r4, [r5, #0x54]
+ add r6, #0x54
+_021DDA5A:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02027A14
+ cmp r0, #0
+ beq _021DDA7C
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02027AC4
+ ldr r1, [r5, #0x54]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ str r0, [r1, #4]
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_021DDA7C:
+ add r4, r4, #1
+ cmp r4, #0x14
+ blt _021DDA5A
+ add r0, r7, #0
+ bl FUN_02027C28
+ str r0, [r5, #0x5c]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DDA44
+
+ thumb_func_start MOD17_021DDA8C
+MOD17_021DDA8C: ; 0x021DDA8C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r7, r3, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD17_021D7AFC
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DDAAC
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DDA8C
+
+ thumb_func_start MOD17_021DDAAC
+MOD17_021DDAAC: ; 0x021DDAAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ add r0, r2, #0
+ ldr r0, [r0, #0x54]
+ add r4, r1, #0
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ cmp r0, #0
+ ble _021DDB1E
+ add r6, r2, #0
+_021DDAC6:
+ ldr r0, [r6, #4]
+ bl FUN_02027CF8
+ add r5, r0, #0
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0
+ bl FUN_02020CB0
+ cmp r0, #1
+ bne _021DDB0C
+ mov r0, #1
+ str r0, [sp]
+ ldr r3, [sp, #0xc]
+ mov r0, #0x19
+ add r1, r5, #1
+ mov r2, #0
+ bl FUN_02006C98
+ add r7, r0, #0
+ ldr r0, [r4, #0x10]
+ add r1, r7, #0
+ add r2, r5, #0
+ bl FUN_02020CD4
+ ldr r1, [r4]
+ lsl r5, r5, #3
+ add r1, r1, r5
+ add r0, r7, #0
+ add r1, r1, #4
+ bl FUN_020B0088
+ ldr r0, [sp, #4]
+ ldr r1, [r0]
+ ldr r0, [r4]
+ str r1, [r0, r5]
+_021DDB0C:
+ ldr r0, [sp, #0x10]
+ add r6, r6, #4
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #8]
+ ldr r1, [r0, #0x54]
+ ldr r0, [sp, #0x10]
+ cmp r0, r1
+ blt _021DDAC6
+_021DDB1E:
+ mov r0, #1
+ mov r1, #0
+ str r0, [sp]
+ ldr r3, [sp, #0xc]
+ mov r0, #0x19
+ add r2, r1, #0
+ bl FUN_02006C98
+ add r5, r0, #0
+ ldr r0, [r4, #0x14]
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_02020CD4
+ ldr r1, [r4, #8]
+ add r0, r5, #0
+ add r1, r1, #4
+ bl FUN_020B0138
+ ldr r0, [sp, #4]
+ ldr r1, [r0]
+ ldr r0, [r4, #8]
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ mov r1, #3
+ str r1, [r0, #8]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDAAC
+
+ thumb_func_start MOD17_021DDB58
+MOD17_021DDB58: ; 0x021DDB58
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ mov r2, #2
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0xd
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0xe
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ mov r1, #0x65
+ add r0, r5, #0
+ lsl r1, r1, #2
+ mov r2, #0xd
+ bl FUN_02006268
+ mov r2, #0x65
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ ldr r0, _021DDC28 ; =MOD17_021DDD40
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ ldr r0, [r5]
+ bne _021DDBB4
+ ldr r1, [r5, #4]
+ bl FUN_02027008
+ str r0, [r4]
+ b _021DDBBC
+_021DDBB4:
+ ldr r1, [r5, #4]
+ bl FUN_02027044
+ str r0, [r4, #4]
+_021DDBBC:
+ ldr r0, [r5, #4]
+ str r0, [r4, #8]
+ ldr r0, [r5, #8]
+ str r0, [r4, #0xc]
+ bl MOD17_021D7794
+ ldr r0, _021DDC2C ; =0x021C4918
+ mov r1, #0
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0xe
+ bl MOD17_021D7CC0
+ ldr r0, [r4, #0x4c]
+ str r0, [sp]
+ mov r0, #0x48
+ str r0, [sp, #4]
+ mov r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ add r0, sp, #0
+ bne _021DDBFC
+ ldr r1, [r4]
+ bl MOD17_021DD4AC
+ b _021DDC02
+_021DDBFC:
+ ldr r1, [r4, #4]
+ bl MOD17_021DD4D0
+_021DDC02:
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ bl MOD17_021DDD54
+ add r0, r4, #0
+ bl MOD17_021DDDFC
+ add r0, r4, #0
+ bl MOD17_021DDE50
+ add r0, r4, #0
+ bl MOD17_021DDF1C
+ add r0, r4, #0
+ bl MOD17_021DDFAC
+ mov r0, #1
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DDC28: .word MOD17_021DDD40
+_021DDC2C: .word 0x021C4918
+ thumb_func_end MOD17_021DDB58
+
+ thumb_func_start MOD17_021DDC30
+MOD17_021DDC30: ; 0x021DDC30
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ bl FUN_02006278
+ add r5, r0, #0
+ bl FUN_020222AC
+ bl FUN_020B02C8
+ ldr r0, [r5, #0x10]
+ bl MOD17_021DD518
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+ add r5, #0x14
+ add r0, r5, #0
+ bl MOD17_021D7D00
+ ldr r0, [r4]
+ cmp r0, #5
+ bhi _021DDCEA
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DDC6C: ; jump table
+ .short _021DDC78 - _021DDC6C - 2 ; case 0
+ .short _021DDC7E - _021DDC6C - 2 ; case 1
+ .short _021DDC9C - _021DDC6C - 2 ; case 2
+ .short _021DDCAC - _021DDC6C - 2 ; case 3
+ .short _021DDCBC - _021DDC6C - 2 ; case 4
+ .short _021DDCDC - _021DDC6C - 2 ; case 5
+_021DDC78:
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDC7E:
+ mov r0, #6
+ str r0, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #5
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDC9C:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DDCEA
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDCAC:
+ ldr r1, _021DDCF0 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #3
+ tst r1, r2
+ beq _021DDCEA
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDCBC:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #2
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDCDC:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DDCEA
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021DDCEA:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021DDCF0: .word 0x021C48B8
+ thumb_func_end MOD17_021DDC30
+
+ thumb_func_start MOD17_021DDCF4
+MOD17_021DDCF4: ; 0x021DDCF4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD17_021DD540
+ add r0, r4, #0
+ bl MOD17_021DDEDC
+ add r0, r4, #0
+ bl MOD17_021DDF84
+ add r4, #0x14
+ add r0, r4, #0
+ bl MOD17_021D7CD8
+ bl MOD17_021D77B4
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0xd
+ bl FUN_020168D0
+ mov r0, #0xe
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDCF4
+
+ thumb_func_start MOD17_021DDD40
+MOD17_021DDD40: ; 0x021DDD40
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD17_021DD58C
+ add r4, #0x14
+ add r0, r4, #0
+ bl MOD17_021D7CF0
+ pop {r4, pc}
+ thumb_func_end MOD17_021DDD40
+
+ thumb_func_start MOD17_021DDD54
+MOD17_021DDD54: ; 0x021DDD54
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0x40
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #4]
+ mov r0, #0x19
+ mov r1, #0x7e
+ mov r2, #0
+ mov r3, #0x60
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x4c]
+ mov r0, #0x19
+ mov r1, #0x7d
+ mov r3, #1
+ bl FUN_0200687C
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bne _021DDD92
+ mov r1, #0x80
+ mov r4, #4
+ b _021DDD96
+_021DDD92:
+ mov r1, #0x7f
+ mov r4, #3
+_021DDD96:
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #0x19
+ mov r2, #0
+ add r3, sp, #0x10
+ bl FUN_02006BDC
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r1, #1
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x4c]
+ bl FUN_02018148
+ ldr r1, [sp, #0x10]
+ mov r2, #0
+ ldrh r0, [r1]
+ add r3, r2, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldrh r0, [r1, #2]
+ mov r1, #1
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x4c]
+ bl FUN_020186B4
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r0, [r5, #0x4c]
+ mov r1, #1
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD17_021DDD54
+
+ thumb_func_start MOD17_021DDDFC
+MOD17_021DDDFC: ; 0x021DDDFC
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #4]
+ mov r0, #0xc
+ add r1, r0, #0
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x4c]
+ mov r0, #0xc
+ mov r1, #0xb
+ mov r3, #4
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x4c]
+ mov r0, #0xc
+ mov r1, #0xa
+ mov r3, #4
+ bl FUN_0200687C
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDDFC
+
+ thumb_func_start MOD17_021DDE50
+MOD17_021DDE50: ; 0x021DDE50
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0x19
+ mov r2, #0xe9
+ mov r3, #0
+ bl MOD17_021D7934
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0x19
+ mov r2, #0xea
+ mov r3, #0
+ bl MOD17_021D7954
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0x19
+ mov r2, #0xe8
+ mov r3, #0
+ bl MOD17_021D7978
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0x19
+ mov r2, #0xe7
+ mov r3, #0
+ bl MOD17_021D7994
+ mov r0, #0x64
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0xfa
+ add r0, #0x14
+ lsl r1, r1, #2
+ mov r2, #0
+ mov r3, #0x90
+ bl MOD17_021D78D0
+ mov r1, #0x63
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_02020238
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD17_021DDE50
+
+ thumb_func_start MOD17_021DDEDC
+MOD17_021DDEDC: ; 0x021DDEDC
+ push {r4, lr}
+ mov r1, #0xfa
+ add r4, r0, #0
+ add r0, #0x14
+ lsl r1, r1, #2
+ bl MOD17_021D79B0
+ add r0, r4, #0
+ mov r1, #0xfa
+ add r0, #0x14
+ lsl r1, r1, #2
+ bl MOD17_021D79C4
+ add r0, r4, #0
+ mov r1, #0xfa
+ add r0, #0x14
+ lsl r1, r1, #2
+ bl MOD17_021D79D8
+ add r0, r4, #0
+ mov r1, #0xfa
+ add r0, #0x14
+ lsl r1, r1, #2
+ bl MOD17_021D79EC
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FFC8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDEDC
+
+ thumb_func_start MOD17_021DDF1C
+MOD17_021DDF1C: ; 0x021DDF1C
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0xe
+ mov r1, #1
+ bl FUN_02018FF4
+ mov r1, #0x19
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x4c]
+ ldr r1, [r4, r1]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_02019064
+ mov r0, #0
+ mov r1, #0xa0
+ mov r2, #0xe
+ bl FUN_02002ED0
+ mov r0, #3
+ mov r1, #0
+ bl FUN_020178BC
+ mov r0, #0
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020178BC
+ mov r1, #3
+ ldr r0, [r4, #0x4c]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDF1C
+
+ thumb_func_start MOD17_021DDF84
+MOD17_021DDF84: ; 0x021DDF84
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02019570
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02019178
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020191A4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDF84
+
+ thumb_func_start MOD17_021DDFAC
+MOD17_021DDFAC: ; 0x021DDFAC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ bne _021DDFCA
+ add r0, r4, #0
+ bl MOD17_021DDFDC
+ b _021DDFD0
+_021DDFCA:
+ add r0, r4, #0
+ bl MOD17_021DE0F4
+_021DDFD0:
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_020191D0
+ pop {r4, pc}
+ thumb_func_end MOD17_021DDFAC
+
+ thumb_func_start MOD17_021DDFDC
+MOD17_021DDFDC: ; 0x021DDFDC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r2, _021DE0EC ; =0x00000151
+ add r5, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ bne _021DDFF8
+ bl ErrorHandling
+_021DDFF8:
+ mov r0, #0xd
+ bl FUN_0200AA80
+ add r6, r0, #0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #5
+ bl FUN_02020130
+ mov r0, #3
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x14]
+ mov r0, #9
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x18]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, sp, #0x14
+ bl FUN_02020044
+ mov r0, #0xc
+ mov r1, #0xd
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r0, [r5]
+ add r1, r7, #0
+ bl FUN_02027608
+ mov r0, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r4, r0, #0
+ mov r0, #7
+ str r0, [sp]
+ mov r1, #0
+ lsr r3, r4, #0x1f
+ add r3, r4, r3
+ asr r4, r3, #1
+ mov r3, #0x80
+ ldr r0, _021DE0F0 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r2, r7, #0
+ sub r3, r3, r4
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, [r5]
+ bl FUN_0202769C
+ add r2, r0, #0
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0200B518
+ mov r0, #0xc8
+ mov r1, #0xd
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [sp, #0x10]
+ mov r1, #0x2d
+ bl FUN_0200A914
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #0x1b
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DE0F0 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ lsr r5, r3, #0x1f
+ add r5, r3, r5
+ asr r5, r5, #1
+ mov r3, #0x80
+ add r2, r4, #0
+ sub r3, r3, r5
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ add r0, r6, #0
+ bl FUN_0200AB18
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DE0EC: .word 0x00000151
+_021DE0F0: .word 0x00010200
+ thumb_func_end MOD17_021DDFDC
+
+ thumb_func_start MOD17_021DE0F4
+MOD17_021DE0F4: ; 0x021DE0F4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r5, #8]
+ bl FUN_02020130
+ ldr r0, [r5, #4]
+ bl FUN_02027C58
+ add r6, r0, #0
+ mov r0, #0xd
+ bl FUN_0200AA80
+ add r7, r0, #0
+ mov r0, #0xc8
+ mov r1, #0xd
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #8]
+ bl FUN_02083298
+ add r2, r0, #0
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_0200B2AC
+ add r0, r6, #0
+ bl FUN_02083268
+ add r2, r0, #0
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_0200B278
+ ldr r0, [r5, #4]
+ bl FUN_02027B44
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ bl FUN_02027B0C
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r0, r7, #0
+ mov r1, #3
+ add r2, r4, #0
+ add r3, r6, #0
+ bl FUN_0200ABB4
+ mov r0, #0xd
+ bl FUN_020669C0
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ add r1, r6, #0
+ bl FUN_02027B78
+ add r0, r6, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r7, #0
+ mov r1, #4
+ bl FUN_0200ACF8
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r2, _021DE24C ; =0x00000151
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ bne _021DE1A0
+ bl ErrorHandling
+_021DE1A0:
+ ldr r0, [sp, #0x10]
+ mov r1, #0x2b
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #7
+ str r0, [sp]
+ mov r1, #0
+ lsr r6, r3, #0x1f
+ add r6, r3, r6
+ ldr r0, _021DE250 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ asr r6, r6, #1
+ mov r3, #0x80
+ add r2, r4, #0
+ sub r3, r3, r6
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ mov r1, #0x2c
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #0x1b
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DE250 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ lsr r5, r3, #0x1f
+ add r5, r3, r5
+ asr r5, r5, #1
+ mov r3, #0x80
+ add r2, r4, #0
+ sub r3, r3, r5
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ add r0, r7, #0
+ bl FUN_0200AB18
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DE24C: .word 0x00000151
+_021DE250: .word 0x00010200
+ thumb_func_end MOD17_021DE0F4
+
+ .section .data
+ ; 0x021DE254
+ .incbin "baserom.nds", 0x26AF74, 0x10C