diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-05 09:22:22 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-05 09:22:22 -0400 |
commit | 605b15e3f32fd42aff0cf1e5fe3f7f3b90797074 (patch) | |
tree | 6aecb1fedd19a4fb6917490cc2b3f588e1648892 | |
parent | 25fa2a19d4fbec4f6a0f379d47616838b62bbdc0 (diff) |
Disassemble module 17
-rw-r--r-- | arm9/arm9.lcf | 16 | ||||
-rw-r--r-- | arm9/global.inc | 52 | ||||
-rw-r--r-- | arm9/modules/16/asm/module_16.s | 350 | ||||
-rw-r--r-- | arm9/modules/17/asm/module_17.s | 14606 |
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 |