diff options
-rw-r--r-- | arm9/arm9.lcf | 16 | ||||
-rw-r--r-- | arm9/global.inc | 44 | ||||
-rw-r--r-- | arm9/modules/14/asm/module_14.s | 30403 |
3 files changed, 30461 insertions, 2 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index ea5e84c2..27b64b23 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -24,7 +24,7 @@ MEMORY { MODULE_11 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0 MODULE_12 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0 MODULE_13 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_14 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_14 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_15 (RWX) : ORIGIN=0, LENGTH=0 MODULE_16 (RWX) : ORIGIN=0, LENGTH=0 MODULE_17 (RWX) : ORIGIN=0, LENGTH=0 @@ -538,7 +538,19 @@ SECTIONS { module_13_arm2.o (.bss) } >> MODULE_13 - OVERLAY_FILE(14, 0x223E00, FILE_227E00.o) + .MODULE.14 : AT (0x223E00) + { + module_14.o (.text) + module_14.o (.sdata) + module_14.o (.data) + } > MODULE_14 + + .MODULE.14.bss : + { + module_14.o (.sbss) + module_14.o (.bss) + } >> MODULE_14 + OVERLAY_FILE(15, 0x233400, FILE_237400.o) OVERLAY_FILE(16, 0x237C00, FILE_23BC00.o) OVERLAY_FILE(17, 0x260200, FILE_264200.o) diff --git a/arm9/global.inc b/arm9/global.inc index 3e703522..4d3d2812 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5034,6 +5034,50 @@ .extern WM_StartDataSharing
.extern WM_StartKeySharing
.extern WM_StepDataSharing
+.extern FUN_02002218
+.extern FUN_02006A34
+.extern FUN_02006A8C
+.extern FUN_02006AE4
+.extern FUN_02006B38
+.extern FUN_02006C30
+.extern FUN_02006C5C
+.extern FUN_02018F4C
+.extern FUN_02019270
+.extern FUN_0201928C
+.extern FUN_020192B8
+.extern FUN_02019684
+.extern FUN_02020240
+.extern FUN_0202032C
+.extern FUN_02020334
+.extern FUN_02020A40
+.extern FUN_02020AB0
+.extern FUN_02021B04
+.extern FUN_020220C4
+.extern FUN_02022144
+.extern FUN_020669BC
+.extern FUN_02066A6C
+.extern FUN_02066A94
+.extern FUN_02068824
+.extern FUN_0206885C
+.extern FUN_02068A44
+.extern FUN_02068B70
+.extern FUN_020690C8
+.extern FUN_02069ECC
+.extern FUN_0206B2B0
+.extern FUN_0206B2FC
+.extern FUN_0206B43C
+.extern FUN_0206B458
+.extern FUN_0206B4B4
+.extern FUN_0206B4E4
+.extern FUN_0206B598
+.extern FUN_0206B668
+.extern FUN_0206B688
+.extern FUN_0206BB48
+.extern FUN_0206E108
+.extern FUN_0206E10C
+.extern FUN_0206E768
+.extern FUN_020B1A1C
+.extern G3X_ResetMtxStack_2
.extern SDK_MODULE_00_ID
.extern SDK_MODULE_01_ID
.extern SDK_MODULE_02_ID
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s new file mode 100644 index 00000000..42e1c73b --- /dev/null +++ b/arm9/modules/14/asm/module_14.s @@ -0,0 +1,30403 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD14_021D74E0 +MOD14_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #9 + lsl r2, r2, #0xe + bl FUN_0201681C + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + mov r1, #0x87 + add r0, r5, #0 + lsl r1, r1, #2 + mov r2, #9 + bl FUN_02006268 + add r4, r0, #0 + beq _021D7544 + add r0, r5, #0 + bl FUN_0200628C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021DB220 + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r2, r4, #0 + bl MOD14_021DC76C + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD14_021D762C + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, _021D7548 ; =MOD14_021D7680 + add r0, r4, #0 + bl MOD14_021D7610 +_021D7544: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7548: .word MOD14_021D7680 + + thumb_func_start MOD14_021D754C +MOD14_021D754C: ; 0x021D754C + push {r4, lr} + bl FUN_02006278 + mov r1, #0x6b + add r4, r0, #0 + lsl r1, r1, #2 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D7568 + add r1, #8 + add r1, r4, r1 + blx r2 + mov r0, #0 + pop {r4, pc} +_021D7568: + sub r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D75AA + ldr r0, _021D75B4 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #2 + lsl r0, r0, #0xa + tst r0, r2 + beq _021D759E + sub r1, #0x98 + ldr r0, [r4, r1] + bl MOD14_021DCBC0 + cmp r0, #1 + bne _021D759E + add r0, r4, #0 + bl MOD14_021DC394 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2b + bl MOD14_021DCB2C + mov r0, #0 + pop {r4, pc} +_021D759E: + mov r1, #0x6a + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + blx r1 + pop {r4, pc} +_021D75AA: + bl ErrorHandling + mov r0, #1 + pop {r4, pc} + nop +_021D75B4: .word 0x021C48B8 + + thumb_func_start MOD14_021D75B8 +MOD14_021D75B8: ; 0x021D75B8 + push {r4, lr} + bl FUN_02006278 + mov r1, #0x49 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x95 + bl FUN_0206BAE4 + cmp r0, #0 + bne _021D75DE + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02029EF8 + bl FUN_02029F08 +_021D75DE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCA38 + add r0, r4, #0 + bl MOD14_021DB398 + mov r0, #9 + bl FUN_020168D0 + mov r0, #0xa + bl FUN_020168D0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021D7600 +MOD14_021D7600: ; 0x021D7600 + mov r2, #0x6a + lsl r2, r2, #2 + str r1, [r0, r2] + mov r1, #0 + add r2, #8 + str r1, [r0, r2] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021D7610 +MOD14_021D7610: ; 0x021D7610 + mov r2, #0x6b + lsl r2, r2, #2 + str r1, [r0, r2] + mov r1, #0 + add r2, #8 + str r1, [r0, r2] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021D7620 +MOD14_021D7620: ; 0x021D7620 + mov r1, #0x6b + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021D762C +MOD14_021D762C: ; 0x021D762C + push {r3, lr} + bl MOD14_021DC3CC + cmp r0, #4 + bhi _021D764C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7642: ; jump table + .short _021D764C - _021D7642 - 2 ; case 0 + .short _021D7650 - _021D7642 - 2 ; case 1 + .short _021D7654 - _021D7642 - 2 ; case 2 + .short _021D765C - _021D7642 - 2 ; case 3 + .short _021D7658 - _021D7642 - 2 ; case 4 +_021D764C: + ldr r0, _021D7660 ; =MOD14_021D7750 + pop {r3, pc} +_021D7650: + ldr r0, _021D7664 ; =MOD14_021D79D0 + pop {r3, pc} +_021D7654: + ldr r0, _021D7668 ; =MOD14_021D7D20 + pop {r3, pc} +_021D7658: + ldr r0, _021D766C ; =MOD14_021D7F0C + pop {r3, pc} +_021D765C: + ldr r0, _021D7670 ; =MOD14_021D8118 + pop {r3, pc} + .align 2, 0 +_021D7660: .word MOD14_021D7750 +_021D7664: .word MOD14_021D79D0 +_021D7668: .word MOD14_021D7D20 +_021D766C: .word MOD14_021D7F0C +_021D7670: .word MOD14_021D8118 + + thumb_func_start MOD14_021D7674 +MOD14_021D7674: ; 0x021D7674 + mov r1, #0x46 + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r2, #1 + str r2, [r0, #8] + bx lr + + thumb_func_start MOD14_021D7680 +MOD14_021D7680: ; 0x021D7680 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D7696 + cmp r0, #1 + beq _021D76AA + cmp r0, #2 + beq _021D76CE + pop {r3, r4, r5, pc} +_021D7696: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D76AA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D76E4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D76CE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D76E4 + add r0, r5, #0 + bl MOD14_021D7620 +_021D76E4: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021D76E8 +MOD14_021D76E8: ; 0x021D76E8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D76FE + cmp r0, #1 + beq _021D7712 + cmp r0, #2 + beq _021D7736 + pop {r3, r4, r5, pc} +_021D76FE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D7712: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D774C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D7736: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D774C + add r0, r5, #0 + bl MOD14_021D7620 +_021D774C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021D7750 +MOD14_021D7750: ; 0x021D7750 + push {r4, lr} + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D776C + cmp r2, #1 + bne _021D7764 + b _021D793E +_021D7764: + cmp r2, #2 + bne _021D776A + b _021D795C +_021D776A: + b _021D7970 +_021D776C: + ldr r1, _021D7974 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #1 + tst r1, r2 + beq _021D779C + bl MOD14_021DC408 + cmp r0, #0 + beq _021D779C + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7792 + ldr r1, _021D7978 ; =MOD14_021D8804 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D7792: + ldr r1, _021D797C ; =MOD14_021D8A68 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D779C: + ldr r0, _021D7974 ; =0x021C48B8 + mov r2, #2 + ldr r1, [r0, #0x48] + tst r1, r2 + beq _021D77B0 + ldr r1, _021D7980 ; =MOD14_021D86BC + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D77B0: + ldr r0, [r0, #0x44] + lsl r1, r2, #8 + tst r1, r0 + beq _021D77C8 + add r0, r4, #0 + bl MOD14_021DC2A4 + ldr r1, _021D7984 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D77C8: + add r2, #0xfe + add r1, r0, #0 + tst r1, r2 + beq _021D77E0 + add r0, r4, #0 + bl MOD14_021DC278 + ldr r1, _021D7984 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D77E0: + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7818 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D780C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D780C: + mov r0, #0x1b + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021D7970 +_021D7818: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D783A + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7862 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D783C + cmp r0, #1 + beq _021D7846 +_021D783A: + b _021D792E +_021D783C: + ldr r1, _021D7988 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D792E +_021D7846: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D785A + ldr r1, _021D798C ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D792E +_021D785A: + ldr r0, _021D7990 ; =0x000005F3 + bl FUN_020054C8 + b _021D792E +_021D7862: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7876 + cmp r0, #1 + beq _021D78C4 + cmp r0, #2 + beq _021D7912 + b _021D792E +_021D7876: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D78BC + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D78BC + ldr r0, _021D7994 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7930 +_021D78BC: + ldr r0, _021D7990 ; =0x000005F3 + bl FUN_020054C8 + b _021D792E +_021D78C4: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D790A + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D790A + ldr r0, _021D7994 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7930 +_021D790A: + ldr r0, _021D7990 ; =0x000005F3 + bl FUN_020054C8 + b _021D792E +_021D7912: + ldr r0, _021D7994 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7930 +_021D792E: + mov r0, #0 +_021D7930: + cmp r0, #0 + beq _021D7970 + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7970 +_021D793E: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7970 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 + b _021D7970 +_021D795C: + sub r1, #0x9c + ldr r0, [r4, r1] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D7970 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D7970: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D7974: .word 0x021C48B8 +_021D7978: .word MOD14_021D8804 +_021D797C: .word MOD14_021D8A68 +_021D7980: .word MOD14_021D86BC +_021D7984: .word MOD14_021DABE8 +_021D7988: .word MOD14_021DAC80 +_021D798C: .word MOD14_021DAF78 +_021D7990: .word 0x000005F3 +_021D7994: .word 0x000005DD + + thumb_func_start MOD14_021D7998 +MOD14_021D7998: ; 0x021D7998 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D79B6 + mov r0, #0x1e + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D79B6: + add r0, r5, #0 + mov r1, #0xa1 + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D79CC + mov r0, #0x1d + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D79CC: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D79D0 +MOD14_021D79D0: ; 0x021D79D0 + push {r3, r4, lr} + sub sp, #4 + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #6 + bhi _021D7A20 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D79EC: ; jump table + .short _021D79FA - _021D79EC - 2 ; case 0 + .short _021D7BD4 - _021D79EC - 2 ; case 1 + .short _021D7BEE - _021D79EC - 2 ; case 2 + .short _021D7C58 - _021D79EC - 2 ; case 3 + .short _021D7C98 - _021D79EC - 2 ; case 4 + .short _021D7CB6 - _021D79EC - 2 ; case 5 + .short _021D7CE4 - _021D79EC - 2 ; case 6 +_021D79FA: + ldr r1, _021D7D00 ; =0x021C48B8 + mov r2, #1 + ldr r1, [r1, #0x48] + tst r2, r1 + beq _021D7A40 + bl MOD14_021DC3E8 + cmp r0, #6 + bne _021D7A16 + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7A16: + add r0, r4, #0 + bl MOD14_021DC408 + cmp r0, #0 + bne _021D7A22 +_021D7A20: + b _021D7CF8 +_021D7A22: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7A36 + ldr r1, _021D7D04 ; =MOD14_021D8804 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7CF8 +_021D7A36: + ldr r1, _021D7D08 ; =MOD14_021D8A68 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7CF8 +_021D7A40: + mov r2, #2 + tst r2, r1 + bne _021D7A6A + mov r2, #0x10 + tst r1, r2 + beq _021D7A56 + bl MOD14_021DC3E8 + mov r1, #1 + tst r0, r1 + bne _021D7A6A +_021D7A56: + ldr r0, _021D7D00 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021D7A74 + add r0, r4, #0 + bl MOD14_021DC3E8 + cmp r0, #6 + bne _021D7A74 +_021D7A6A: + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7A74: + ldr r0, _021D7D00 ; =0x021C48B8 + add r1, r4, #0 + ldr r0, [r0, #0x44] + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7AAE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7AA4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7AA4: + mov r0, #0x1b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7AAE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D7AD0 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7AF8 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7AD2 + cmp r0, #1 + beq _021D7ADC +_021D7AD0: + b _021D7BC4 +_021D7AD2: + ldr r1, _021D7D0C ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7BC4 +_021D7ADC: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7AF0 + ldr r1, _021D7D10 ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7BC4 +_021D7AF0: + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + b _021D7BC4 +_021D7AF8: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7B0C + cmp r0, #1 + beq _021D7B5A + cmp r0, #2 + beq _021D7BA8 + b _021D7BC4 +_021D7B0C: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D7B52 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7B52 + ldr r0, _021D7D18 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7BC6 +_021D7B52: + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + b _021D7BC4 +_021D7B5A: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D7BA0 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7BA0 + ldr r0, _021D7D18 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7BC6 +_021D7BA0: + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + b _021D7BC4 +_021D7BA8: + ldr r0, _021D7D18 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7BC6 +_021D7BC4: + mov r0, #0 +_021D7BC6: + cmp r0, #0 + beq _021D7BE2 + mov r0, #0x1b + mov r1, #6 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7BD4: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021D7BE4 +_021D7BE2: + b _021D7CF8 +_021D7BE4: + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7BEE: + bl MOD14_021DC3C4 + cmp r0, #0 + bne _021D7C08 + ldr r1, _021D7D1C ; =MOD14_021D86BC + add r0, r4, #0 + bl MOD14_021D7610 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C08: + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D7C42 + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021D7998 + cmp r0, #0 + beq _021D7C42 + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #5 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C42: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #3 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C58: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x24 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7CF8 + add r0, r4, #0 + bl MOD14_021DB910 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7C8E + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7C8E: + mov r0, #0x1b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C98: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7CF8 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 + b _021D7CF8 +_021D7CB6: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7CF8 + ldr r0, _021D7D00 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D7CF8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7CE4: + sub r1, #0x9c + ldr r0, [r4, r1] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D7CF8 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D7CF8: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021D7D00: .word 0x021C48B8 +_021D7D04: .word MOD14_021D8804 +_021D7D08: .word MOD14_021D8A68 +_021D7D0C: .word MOD14_021DAC80 +_021D7D10: .word MOD14_021DAF78 +_021D7D14: .word 0x000005F3 +_021D7D18: .word 0x000005DD +_021D7D1C: .word MOD14_021D86BC + + thumb_func_start MOD14_021D7D20 +MOD14_021D7D20: ; 0x021D7D20 + push {r3, r4, r5, lr} + mov r3, #0x1b + add r4, r0, #0 + lsl r3, r3, #4 + ldr r1, [r4, r3] + cmp r1, #0 + beq _021D7D36 + cmp r1, #1 + bne _021D7D34 + b _021D7ECC +_021D7D34: + b _021D7EE8 +_021D7D36: + ldr r5, _021D7EEC ; =0x021C48B8 + add r2, r3, #0 + ldr r1, [r5, #0x44] + add r2, #0x70 + tst r2, r1 + beq _021D7D50 + bl MOD14_021DC2A4 + ldr r1, _021D7EF0 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7D50: + sub r3, #0xa0 + add r2, r1, #0 + tst r2, r3 + beq _021D7D66 + bl MOD14_021DC278 + ldr r1, _021D7EF0 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7D66: + ldr r3, [r5, #0x48] + mov r2, #1 + tst r2, r3 + beq _021D7D76 + ldr r1, _021D7EF4 ; =MOD14_021D8D70 + bl MOD14_021D7610 + b _021D7EE8 +_021D7D76: + mov r2, #2 + tst r2, r3 + beq _021D7D84 + ldr r1, _021D7EF8 ; =MOD14_021D86BC + bl MOD14_021D7610 + b _021D7EE8 +_021D7D84: + add r0, r1, #0 + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7DBC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7DB2 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7DB2: + mov r0, #0x1b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7EE8 +_021D7DBC: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D7DDE + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7E06 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7DE0 + cmp r0, #1 + beq _021D7DEA +_021D7DDE: + b _021D7EE8 +_021D7DE0: + ldr r1, _021D7EFC ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7DEA: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7DFE + ldr r1, _021D7F00 ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7DFE: + ldr r0, _021D7F04 ; =0x000005F3 + bl FUN_020054C8 + b _021D7EE8 +_021D7E06: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7E1A + cmp r0, #1 + beq _021D7E66 + cmp r0, #2 + beq _021D7EB2 + b _021D7EE8 +_021D7E1A: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D7E5E + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7E5E + ldr r0, _021D7F08 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D7EE8 +_021D7E5E: + ldr r0, _021D7F04 ; =0x000005F3 + bl FUN_020054C8 + b _021D7EE8 +_021D7E66: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D7EAA + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7EAA + ldr r0, _021D7F08 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D7EE8 +_021D7EAA: + ldr r0, _021D7F04 ; =0x000005F3 + bl FUN_020054C8 + b _021D7EE8 +_021D7EB2: + ldr r0, _021D7F08 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + b _021D7EE8 +_021D7ECC: + sub r3, #0x9c + ldr r0, [r4, r3] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7EE8 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 +_021D7EE8: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7EEC: .word 0x021C48B8 +_021D7EF0: .word MOD14_021DABE8 +_021D7EF4: .word MOD14_021D8D70 +_021D7EF8: .word MOD14_021D86BC +_021D7EFC: .word MOD14_021DAC80 +_021D7F00: .word MOD14_021DAF78 +_021D7F04: .word 0x000005F3 +_021D7F08: .word 0x000005DD + + thumb_func_start MOD14_021D7F0C +MOD14_021D7F0C: ; 0x021D7F0C + push {r3, r4, r5, lr} + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D7F28 + cmp r2, #1 + bne _021D7F20 + b _021D80BE +_021D7F20: + cmp r2, #2 + bne _021D7F26 + b _021D80D6 +_021D7F26: + b _021D80F2 +_021D7F28: + ldr r3, _021D80F8 ; =0x021C48B8 + mov r1, #1 + ldr r5, [r3, #0x48] + tst r1, r5 + beq _021D7F3A + ldr r1, _021D80FC ; =MOD14_021D854C + bl MOD14_021D7610 + b _021D80F2 +_021D7F3A: + mov r2, #2 + add r1, r5, #0 + tst r1, r2 + beq _021D7F4A + ldr r1, _021D8100 ; =MOD14_021D86BC + bl MOD14_021D7610 + b _021D80F2 +_021D7F4A: + ldr r3, [r3, #0x44] + lsl r1, r2, #8 + tst r1, r3 + beq _021D7F60 + bl MOD14_021DC2A4 + ldr r1, _021D8104 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7F60: + add r2, #0xfe + add r1, r3, #0 + tst r1, r2 + beq _021D7F76 + bl MOD14_021DC278 + ldr r1, _021D8104 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7F76: + add r0, r3, #0 + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7FAE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7FA4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7FA4: + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D80F2 +_021D7FAE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D7FD0 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7FF8 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7FD2 + cmp r0, #1 + beq _021D7FDC +_021D7FD0: + b _021D80F2 +_021D7FD2: + ldr r1, _021D8108 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7FDC: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7FF0 + ldr r1, _021D810C ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7FF0: + ldr r0, _021D8110 ; =0x000005F3 + bl FUN_020054C8 + b _021D80F2 +_021D7FF8: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D800C + cmp r0, #1 + beq _021D8058 + cmp r0, #2 + beq _021D80A4 + b _021D80F2 +_021D800C: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D8050 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D8050 + ldr r0, _021D8114 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D80F2 +_021D8050: + ldr r0, _021D8110 ; =0x000005F3 + bl FUN_020054C8 + b _021D80F2 +_021D8058: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D809C + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D809C + ldr r0, _021D8114 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D80F2 +_021D809C: + ldr r0, _021D8110 ; =0x000005F3 + bl FUN_020054C8 + b _021D80F2 +_021D80A4: + ldr r0, _021D8114 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + b _021D80F2 +_021D80BE: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D80F2 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D80F2 +_021D80D6: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D80F2 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 +_021D80F2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D80F8: .word 0x021C48B8 +_021D80FC: .word MOD14_021D854C +_021D8100: .word MOD14_021D86BC +_021D8104: .word MOD14_021DABE8 +_021D8108: .word MOD14_021DAC80 +_021D810C: .word MOD14_021DAF78 +_021D8110: .word 0x000005F3 +_021D8114: .word 0x000005DD + + thumb_func_start MOD14_021D8118 +MOD14_021D8118: ; 0x021D8118 + push {r3, r4, r5, lr} + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #5 + bhi _021D8220 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D8132: ; jump table + .short _021D813E - _021D8132 - 2 ; case 0 + .short _021D830E - _021D8132 - 2 ; case 1 + .short _021D8332 - _021D8132 - 2 ; case 2 + .short _021D8372 - _021D8132 - 2 ; case 3 + .short _021D838A - _021D8132 - 2 ; case 4 + .short _021D83A8 - _021D8132 - 2 ; case 5 +_021D813E: + ldr r3, _021D83C8 ; =0x021C48B8 + mov r1, #1 + ldr r5, [r3, #0x48] + tst r1, r5 + beq _021D818A + bl MOD14_021DC3C4 + cmp r0, #1 + beq _021D8166 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x22 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D8166: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x12 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #5 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D818A: + mov r2, #2 + add r1, r5, #0 + tst r1, r2 + beq _021D819A + ldr r1, _021D83D0 ; =MOD14_021D86BC + bl MOD14_021D7610 + b _021D83C4 +_021D819A: + ldr r3, [r3, #0x44] + lsl r1, r2, #8 + tst r1, r3 + beq _021D81B0 + bl MOD14_021DC2A4 + ldr r1, _021D83D4 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D81B0: + add r2, #0xfe + add r1, r3, #0 + tst r1, r2 + beq _021D81C6 + bl MOD14_021DC278 + ldr r1, _021D83D4 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D81C6: + add r0, r3, #0 + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D81FE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D81F4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D81F4: + mov r0, #0x1b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D81FE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D8220 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D8248 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D8222 + cmp r0, #1 + beq _021D822C +_021D8220: + b _021D83C4 +_021D8222: + ldr r1, _021D83D8 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D822C: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D8240 + ldr r1, _021D83DC ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D8240: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + b _021D83C4 +_021D8248: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D825C + cmp r0, #1 + beq _021D82A8 + cmp r0, #2 + beq _021D82F4 + b _021D83C4 +_021D825C: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D82A0 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D82A0 + ldr r0, _021D83E0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D83C4 +_021D82A0: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + b _021D83C4 +_021D82A8: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D82EC + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D82EC + ldr r0, _021D83E0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D83C4 +_021D82EC: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + b _021D83C4 +_021D82F4: + ldr r0, _021D83E0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + b _021D83C4 +_021D830E: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x22 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D8332: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x23 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + add r0, r4, #0 + bl MOD14_021DB8D0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D8368 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D8368: + mov r0, #0x1b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D8372: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D838A: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 + b _021D83C4 +_021D83A8: + ldr r0, _021D83C8 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #3 + tst r0, r2 + beq _021D83C4 + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D83C4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D83C8: .word 0x021C48B8 +_021D83CC: .word 0x000005F3 +_021D83D0: .word MOD14_021D86BC +_021D83D4: .word MOD14_021DABE8 +_021D83D8: .word MOD14_021DAC80 +_021D83DC: .word MOD14_021DAF78 +_021D83E0: .word 0x000005DD + + thumb_func_start MOD14_021D83E4 +MOD14_021D83E4: ; 0x021D83E4 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D8428 + mov r0, #0x4b + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + str r1, [r4, r0] + ldrb r0, [r4, #0x1f] + cmp r0, #0 + beq _021D8402 + mov r0, #0 + b _021D8404 +_021D8402: + mov r0, #2 +_021D8404: + ldr r1, _021D8500 ; =0x0000013D + mov r2, #1 + strb r0, [r4, r1] + add r0, r1, #2 + strb r2, [r4, r0] + mov r2, #0 + add r0, r1, #3 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #7 + strh r2, [r4, r0] + add r0, r1, #0 + add r0, #0x67 + ldr r0, [r4, r0] + sub r1, #0xd + str r0, [r4, r1] + b _021D84AA +_021D8428: + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021D8476 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B330 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r2, #0 + bl FUN_0206B5E4 + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #2 + add r0, #0x11 + strb r2, [r4, r0] + mov r0, #0x1e + add r1, #0x13 + strb r0, [r4, r1] + add r0, r4, #0 + bl MOD14_021DC3E0 + mov r1, #5 + lsl r1, r1, #6 + strb r0, [r4, r1] + mov r2, #0 + sub r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #4 + strh r2, [r4, r0] + b _021D84AA +_021D8476: + mov r1, #0x49 + lsl r1, r1, #2 + add r0, r1, #0 + ldr r2, [r4, r1] + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + mov r2, #1 + add r0, #0x19 + strb r2, [r4, r0] + ldr r0, [r4, r1] + bl FUN_0206B9AC + ldr r1, _021D8504 ; =0x0000013F + strb r0, [r4, r1] + add r0, r4, #0 + bl MOD14_021DC3E8 + mov r1, #5 + lsl r1, r1, #6 + strb r0, [r4, r1] + mov r2, #0 + sub r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #4 + strh r2, [r4, r0] +_021D84AA: + mov r0, #0x55 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #0x38 + ldr r0, [r4, r0] + bl FUN_0206BB28 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x2c + ldr r0, [r4, r1] + bl FUN_02079C70 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x3c + ldr r0, [r4, r1] + bl FUN_0202A918 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x20 + add r0, r4, r1 + ldr r1, _021D8508 ; =0x021E626C + bl FUN_0207B000 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020238F4 + add r1, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_0207C2A4 + pop {r4, pc} + nop +_021D8500: .word 0x0000013D +_021D8504: .word 0x0000013F +_021D8508: .word 0x021E626C + + thumb_func_start MOD14_021D850C +MOD14_021D850C: ; 0x021D850C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1b + lsl r0, r0, #4 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D8520 + cmp r1, #1 + beq _021D8536 + b _021D8546 +_021D8520: + sub r0, #0x9c + ldr r0, [r4, r0] + mov r1, #0x33 + bl MOD14_021DCB2C + mov r0, #0x1b + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021D8546 +_021D8536: + sub r0, #0x9c + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8546 + mov r0, #1 + pop {r4, pc} +_021D8546: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021D854C +MOD14_021D854C: ; 0x021D854C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bls _021D855A + b _021D86A6 +_021D855A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8566: ; jump table + .short _021D8574 - _021D8566 - 2 ; case 0 + .short _021D85CC - _021D8566 - 2 ; case 1 + .short _021D8604 - _021D8566 - 2 ; case 2 + .short _021D86A6 - _021D8566 - 2 ; case 3 + .short _021D8660 - _021D8566 - 2 ; case 4 + .short _021D8674 - _021D8566 - 2 ; case 5 + .short _021D8690 - _021D8566 - 2 ; case 6 +_021D8574: + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021D8590 + add r0, r4, #0 + bl MOD14_021DC538 + cmp r0, #0 + beq _021D8590 + ldr r1, _021D86A8 ; =MOD14_021DA7C4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8590: + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D85BA + ldr r0, _021D86AC ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x11 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D85BA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x22 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D85CC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x22 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D86A6 + ldr r0, _021D86B0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xb + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8604: + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021D8624 + bge _021D8650 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021D86A6 + sub r1, r2, #1 + cmp r0, r1 + blt _021D86A6 + beq _021D862A + cmp r0, r2 + beq _021D8638 + pop {r3, r4, r5, pc} +_021D8624: + cmp r0, #0x37 + beq _021D8638 + pop {r3, r4, r5, pc} +_021D862A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8638: + ldr r0, _021D86B0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8650: + ldr r1, _021D86B4 ; =MOD14_021D850C + add r0, r4, #0 + bl MOD14_021D7600 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8660: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D86A6 + mov r0, #5 + str r0, [r5] +_021D8674: + ldr r0, _021D86B8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D86A6 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8690: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D86A6 + add r0, r4, #0 + bl MOD14_021D7620 +_021D86A6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D86A8: .word MOD14_021DA7C4 +_021D86AC: .word 0x000005F3 +_021D86B0: .word 0x000005DD +_021D86B4: .word MOD14_021D850C +_021D86B8: .word 0x021C48B8 + + thumb_func_start MOD14_021D86BC +MOD14_021D86BC: ; 0x021D86BC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bls _021D86CA + b _021D87EC +_021D86CA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D86D6: ; jump table + .short _021D86E2 - _021D86D6 - 2 ; case 0 + .short _021D87EC - _021D86D6 - 2 ; case 1 + .short _021D87A6 - _021D86D6 - 2 ; case 2 + .short _021D87BA - _021D86D6 - 2 ; case 3 + .short _021D87D6 - _021D86D6 - 2 ; case 4 + .short _021D8750 - _021D86D6 - 2 ; case 5 +_021D86E2: + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D870A + ldr r0, _021D87F0 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x11 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D870A: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021D8728 + add r0, r4, #0 + bl MOD14_021DC538 + cmp r0, #0 + beq _021D8728 + ldr r1, _021D87F4 ; =MOD14_021DA7C4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8728: + ldr r0, _021D87F8 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xc + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8750: + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021D8770 + bge _021D8794 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021D87EC + sub r1, r2, #1 + cmp r0, r1 + blt _021D87EC + beq _021D8776 + cmp r0, r2 + beq _021D8784 + pop {r3, r4, r5, pc} +_021D8770: + cmp r0, #0x37 + beq _021D8784 + pop {r3, r4, r5, pc} +_021D8776: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8784: + ldr r1, _021D87FC ; =MOD14_021D850C + add r0, r4, #0 + bl MOD14_021D7600 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8794: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D87A6: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D87EC + mov r0, #3 + str r0, [r5] +_021D87BA: + ldr r0, _021D8800 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D87EC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D87D6: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D87EC + add r0, r4, #0 + bl MOD14_021D7620 +_021D87EC: + pop {r3, r4, r5, pc} + nop +_021D87F0: .word 0x000005F3 +_021D87F4: .word MOD14_021DA7C4 +_021D87F8: .word 0x000005DD +_021D87FC: .word MOD14_021D850C +_021D8800: .word 0x021C48B8 + + thumb_func_start MOD14_021D8804 +MOD14_021D8804: ; 0x021D8804 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bhi _021D88F6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D881C: ; jump table + .short _021D8828 - _021D881C - 2 ; case 0 + .short _021D887C - _021D881C - 2 ; case 1 + .short _021D8890 - _021D881C - 2 ; case 2 + .short _021D88EA - _021D881C - 2 ; case 3 + .short _021D8A08 - _021D881C - 2 ; case 4 + .short _021D8A20 - _021D881C - 2 ; case 5 +_021D8828: + bl MOD14_021DC458 + add r2, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DBA44 + add r0, r4, #0 + bl MOD14_021E5DC4 + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #0 + beq _021D8864 + add r0, r4, #0 + bl MOD14_021E6220 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8864: + ldr r0, _021D8A38 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D887C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D88F6 + mov r0, #2 + str r0, [r5] +_021D8890: + add r0, r4, #0 + bl MOD14_021E6160 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0 + ldr r2, [r4, r1] + mvn r0, r0 + cmp r2, r0 + bgt _021D88BA + sub r3, r0, #2 + cmp r2, r3 + blt _021D88E4 + beq _021D88F6 + sub r3, r0, #1 + cmp r2, r3 + beq _021D88C0 + cmp r2, r0 + beq _021D88CC + b _021D88E4 +_021D88BA: + cmp r2, #0x2b + beq _021D88CC + b _021D88E4 +_021D88C0: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D88CC: + ldr r0, _021D8A38 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D88E4: + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D88EA: + mov r1, #0x6e + lsl r1, r1, #2 + ldr r2, [r4, r1] + sub r2, #0x22 + cmp r2, #0x13 + bls _021D88F8 +_021D88F6: + b _021D8A34 +_021D88F8: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D8904: ; jump table + .short _021D892C - _021D8904 - 2 ; case 0 + .short _021D895E - _021D8904 - 2 ; case 1 + .short _021D8972 - _021D8904 - 2 ; case 2 + .short _021D89A6 - _021D8904 - 2 ; case 3 + .short _021D8986 - _021D8904 - 2 ; case 4 + .short _021D898E - _021D8904 - 2 ; case 5 + .short _021D89AE - _021D8904 - 2 ; case 6 + .short _021D8996 - _021D8904 - 2 ; case 7 + .short _021D899E - _021D8904 - 2 ; case 8 + .short _021D8A34 - _021D8904 - 2 ; case 9 + .short _021D8A34 - _021D8904 - 2 ; case 10 + .short _021D8A34 - _021D8904 - 2 ; case 11 + .short _021D8A34 - _021D8904 - 2 ; case 12 + .short _021D8A34 - _021D8904 - 2 ; case 13 + .short _021D8A34 - _021D8904 - 2 ; case 14 + .short _021D8A34 - _021D8904 - 2 ; case 15 + .short _021D8A34 - _021D8904 - 2 ; case 16 + .short _021D8A34 - _021D8904 - 2 ; case 17 + .short _021D89CA - _021D8904 - 2 ; case 18 + .short _021D89CA - _021D8904 - 2 ; case 19 +_021D892C: + bl MOD14_021DC3CC + cmp r0, #0 + bne _021D8948 + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #1 + bne _021D8948 + ldr r1, _021D8A3C ; =MOD14_021D9230 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8948: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8A40 ; =MOD14_021D94BC + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D895E: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8A44 ; =MOD14_021D95B4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8972: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8A48 ; =MOD14_021D96B0 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8986: + ldr r1, _021D8A4C ; =MOD14_021D9770 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D898E: + ldr r1, _021D8A50 ; =MOD14_021D9934 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8996: + ldr r1, _021D8A54 ; =MOD14_021D9138 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D899E: + ldr r1, _021D8A58 ; =MOD14_021D9C98 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89A6: + ldr r1, _021D8A5C ; =MOD14_021DA2C8 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89AE: + bl MOD14_021DC430 + cmp r0, #0 + bne _021D89C0 + ldr r1, _021D8A60 ; =MOD14_021DA3E4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89C0: + ldr r1, _021D8A64 ; =MOD14_021DA5F0 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89CA: + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x30 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + ldr r0, _021D8A38 ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8A08: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8A34 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8A20: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8A34 + add r0, r4, #0 + bl MOD14_021D7620 +_021D8A34: + pop {r3, r4, r5, pc} + nop +_021D8A38: .word 0x000005DD +_021D8A3C: .word MOD14_021D9230 +_021D8A40: .word MOD14_021D94BC +_021D8A44: .word MOD14_021D95B4 +_021D8A48: .word MOD14_021D96B0 +_021D8A4C: .word MOD14_021D9770 +_021D8A50: .word MOD14_021D9934 +_021D8A54: .word MOD14_021D9138 +_021D8A58: .word MOD14_021D9C98 +_021D8A5C: .word MOD14_021DA2C8 +_021D8A60: .word MOD14_021DA3E4 +_021D8A64: .word MOD14_021DA5F0 + + thumb_func_start MOD14_021D8A68 +MOD14_021D8A68: ; 0x021D8A68 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #7 + bls _021D8A76 + b _021D8D54 +_021D8A76: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8A82: ; jump table + .short _021D8A92 - _021D8A82 - 2 ; case 0 + .short _021D8B3C - _021D8A82 - 2 ; case 1 + .short _021D8B50 - _021D8A82 - 2 ; case 2 + .short _021D8BB0 - _021D8A82 - 2 ; case 3 + .short _021D8CE0 - _021D8A82 - 2 ; case 4 + .short _021D8CF8 - _021D8A82 - 2 ; case 5 + .short _021D8D24 - _021D8A82 - 2 ; case 6 + .short _021D8D3A - _021D8A82 - 2 ; case 7 +_021D8A92: + bl MOD14_021DC538 + add r2, r0, #0 + beq _021D8AB0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x19 + bl MOD14_021DBA44 + b _021D8AD8 +_021D8AB0: + add r0, r4, #0 + bl MOD14_021DC430 + add r2, r0, #0 + beq _021D8AD0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x19 + bl MOD14_021DBA44 + b _021D8AD8 +_021D8AD0: + add r0, r4, #0 + mov r1, #0x1c + bl MOD14_021DBA44 +_021D8AD8: + add r0, r4, #0 + bl MOD14_021E5F04 + add r0, r4, #0 + bl MOD14_021DC584 + cmp r0, #0 + beq _021D8B08 + ldr r0, _021D8D58 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x22 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8B08: + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #0 + beq _021D8B24 + add r0, r4, #0 + bl MOD14_021E6220 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8B24: + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8B3C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8BBC + mov r0, #2 + str r0, [r5] +_021D8B50: + add r0, r4, #0 + bl MOD14_021E6160 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0 + ldr r2, [r4, r1] + mvn r0, r0 + cmp r2, r0 + bgt _021D8B7A + sub r3, r0, #2 + cmp r2, r3 + blt _021D8BA4 + beq _021D8BBC + sub r3, r0, #1 + cmp r2, r3 + beq _021D8B80 + cmp r2, r0 + beq _021D8B8C + b _021D8BA4 +_021D8B7A: + cmp r2, #0x33 + beq _021D8B8C + b _021D8BA4 +_021D8B80: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8B8C: + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8BA4: + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8BB0: + mov r1, #0x6e + lsl r1, r1, #2 + ldr r1, [r4, r1] + sub r1, #0x2e + cmp r1, #4 + bls _021D8BBE +_021D8BBC: + b _021D8D54 +_021D8BBE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8BCA: ; jump table + .short _021D8BD4 - _021D8BCA - 2 ; case 0 + .short _021D8C12 - _021D8BCA - 2 ; case 1 + .short _021D8C74 - _021D8BCA - 2 ; case 2 + .short _021D8C7C - _021D8BCA - 2 ; case 3 + .short _021D8CD8 - _021D8BCA - 2 ; case 4 +_021D8BD4: + bl MOD14_021DC538 + cmp r0, #0 + beq _021D8C08 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DC31C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x14 + bl MOD14_021DCB2C + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8C08: + ldr r1, _021D8D60 ; =MOD14_021DA3E4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8C12: + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D8C42 + ldr r0, _021D8D58 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8C42: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DC2E4 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x13 + bl MOD14_021DCB2C + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8C74: + ldr r1, _021D8D64 ; =MOD14_021DA9D0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8C7C: + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D8CAC + ldr r0, _021D8D58 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8CAC: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DC334 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x15 + bl MOD14_021DCB2C + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8CD8: + ldr r1, _021D8D68 ; =MOD14_021DA7C4 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8CE0: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8D54 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8CF8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8D54 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x16 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8D24: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8D54 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8D3A: + ldr r0, _021D8D6C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D8D54 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] +_021D8D54: + pop {r3, r4, r5, pc} + nop +_021D8D58: .word 0x000005F3 +_021D8D5C: .word 0x000005DD +_021D8D60: .word MOD14_021DA3E4 +_021D8D64: .word MOD14_021DA9D0 +_021D8D68: .word MOD14_021DA7C4 +_021D8D6C: .word 0x021C48B8 + + thumb_func_start MOD14_021D8D70 +MOD14_021D8D70: ; 0x021D8D70 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #7 + bls _021D8D7E + b _021D8EB0 +_021D8D7E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8D8A: ; jump table + .short _021D8D9A - _021D8D8A - 2 ; case 0 + .short _021D8DDE - _021D8D8A - 2 ; case 1 + .short _021D8DF2 - _021D8D8A - 2 ; case 2 + .short _021D8E42 - _021D8D8A - 2 ; case 3 + .short _021D8E82 - _021D8D8A - 2 ; case 4 + .short _021D8EB0 - _021D8D8A - 2 ; case 5 + .short _021D8EB0 - _021D8D8A - 2 ; case 6 + .short _021D8E9A - _021D8D8A - 2 ; case 7 +_021D8D9A: + mov r1, #7 + bl MOD14_021DBA44 + add r0, r4, #0 + bl MOD14_021E5F84 + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #0 + ldr r0, _021D8EB4 ; =0x000005DD + beq _021D8DC8 + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021E6220 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8DC8: + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8DDE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8EB0 + mov r0, #2 + str r0, [r5] +_021D8DF2: + add r0, r4, #0 + bl MOD14_021E6160 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + add r0, r0, #3 + cmp r0, #6 + bhi _021D8E3C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8E12: ; jump table + .short _021D8EB0 - _021D8E12 - 2 ; case 0 + .short _021D8E20 - _021D8E12 - 2 ; case 1 + .short _021D8E2C - _021D8E12 - 2 ; case 2 + .short _021D8E3C - _021D8E12 - 2 ; case 3 + .short _021D8E3C - _021D8E12 - 2 ; case 4 + .short _021D8E3C - _021D8E12 - 2 ; case 5 + .short _021D8E2C - _021D8E12 - 2 ; case 6 +_021D8E20: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8E2C: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8E3C: + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8E42: + mov r1, #0x6e + lsl r1, r1, #2 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D8E56 + cmp r2, #1 + beq _021D8E6A + cmp r2, #2 + beq _021D8E7A + pop {r3, r4, r5, pc} +_021D8E56: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8EB8 ; =MOD14_021D8EC4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8E6A: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8E7A: + ldr r1, _021D8EBC ; =MOD14_021DA1D4 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8E82: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8EB0 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8E9A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8EB0 + ldr r1, _021D8EC0 ; =MOD14_021D8F6C + add r0, r4, #0 + bl MOD14_021D7610 +_021D8EB0: + pop {r3, r4, r5, pc} + nop +_021D8EB4: .word 0x000005DD +_021D8EB8: .word MOD14_021D8EC4 +_021D8EBC: .word MOD14_021DA1D4 +_021D8EC0: .word MOD14_021D8F6C + + thumb_func_start MOD14_021D8EC4 +MOD14_021D8EC4: ; 0x021D8EC4 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D8EDA + cmp r1, #1 + beq _021D8EEE + cmp r1, #2 + beq _021D8F52 + pop {r4, r5, r6, pc} +_021D8EDA: + bl MOD14_021DC424 + add r1, r0, #0 + add r0, r5, #0 + mov r2, #8 + bl MOD14_021DAA7C + mov r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D8EEE: + bl MOD14_021DAAA8 + cmp r0, #0 + beq _021D8F66 + ldr r0, _021D8F68 ; =0x000001C1 + ldrsb r6, [r5, r0] + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _021D8F0C + add r0, r5, #0 + bl MOD14_021DC424 + cmp r6, r0 + bne _021D8F12 +_021D8F0C: + mov r0, #2 + str r0, [r4] + b _021D8F38 +_021D8F12: + add r0, r5, #0 + add r1, r6, #0 + bl MOD14_021DC2C4 + mov r1, #0x12 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #0xa1 + ldrsb r1, [r5, r1] + bl FUN_0206B428 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] +_021D8F38: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + pop {r4, r5, r6, pc} +_021D8F52: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8F66 + add r0, r5, #0 + bl MOD14_021D7620 +_021D8F66: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8F68: .word 0x000001C1 + + thumb_func_start MOD14_021D8F6C +MOD14_021D8F6C: ; 0x021D8F6C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #8 + bhi _021D8FD8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8F84: ; jump table + .short _021D8F96 - _021D8F84 - 2 ; case 0 + .short _021D8FA2 - _021D8F84 - 2 ; case 1 + .short _021D8FC8 - _021D8F84 - 2 ; case 2 + .short _021D8FDE - _021D8F84 - 2 ; case 3 + .short _021D9062 - _021D8F84 - 2 ; case 4 + .short _021D9076 - _021D8F84 - 2 ; case 5 + .short _021D90FC - _021D8F84 - 2 ; case 6 + .short _021D910E - _021D8F84 - 2 ; case 7 + .short _021D9122 - _021D8F84 - 2 ; case 8 +_021D8F96: + mov r0, #0x6e + mov r1, #4 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + str r0, [r5] +_021D8FA2: + add r0, r4, #0 + mov r1, #9 + bl MOD14_021DBA44 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021E5FC8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8FC8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021D8FDA +_021D8FD8: + b _021D9136 +_021D8FDA: + mov r0, #3 + str r0, [r5] +_021D8FDE: + add r0, r4, #0 + bl MOD14_021E6160 + add r0, r0, #3 + cmp r0, #0xc + bhi _021D901E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8FF6: ; jump table + .short _021D9136 - _021D8FF6 - 2 ; case 0 + .short _021D9010 - _021D8FF6 - 2 ; case 1 + .short _021D901E - _021D8FF6 - 2 ; case 2 + .short _021D901E - _021D8FF6 - 2 ; case 3 + .short _021D901E - _021D8FF6 - 2 ; case 4 + .short _021D901E - _021D8FF6 - 2 ; case 5 + .short _021D901E - _021D8FF6 - 2 ; case 6 + .short _021D9030 - _021D8FF6 - 2 ; case 7 + .short _021D9030 - _021D8FF6 - 2 ; case 8 + .short _021D9030 - _021D8FF6 - 2 ; case 9 + .short _021D9030 - _021D8FF6 - 2 ; case 10 + .short _021D9030 - _021D8FF6 - 2 ; case 11 + .short _021D9030 - _021D8FF6 - 2 ; case 12 +_021D9010: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D901E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9030: + add r0, r4, #0 + bl MOD14_021E6210 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #0xa + bl MOD14_021DBA44 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021E6038 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9062: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9136 + mov r0, #5 + str r0, [r5] +_021D9076: + add r0, r4, #0 + bl MOD14_021E6160 + add r0, r0, #3 + cmp r0, #6 + bhi _021D90B0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D908E: ; jump table + .short _021D9136 - _021D908E - 2 ; case 0 + .short _021D909C - _021D908E - 2 ; case 1 + .short _021D90AA - _021D908E - 2 ; case 2 + .short _021D90B0 - _021D908E - 2 ; case 3 + .short _021D90B0 - _021D908E - 2 ; case 4 + .short _021D90B0 - _021D908E - 2 ; case 5 + .short _021D90AA - _021D908E - 2 ; case 6 +_021D909C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D90AA: + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D90B0: + add r0, r4, #0 + bl MOD14_021E6210 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r2, [r4, r1] + cmp r2, #0xa + blt _021D90F2 + cmp r2, #0x21 + bgt _021D90F2 + sub r1, #0x98 + ldr r0, [r4, r1] + mov r1, #0 + mvn r1, r1 + sub r2, #0xa + bl FUN_0206B458 + mov r1, #0x12 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021DB59C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D90F2: + bl ErrorHandling + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D90FC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x21 + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D910E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9136 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9122: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9136 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9136: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D9138 +MOD14_021D9138: ; 0x021D9138 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D914E + cmp r1, #1 + beq _021D916C + cmp r1, #2 + beq _021D921A + pop {r3, r4, r5, pc} +_021D914E: + bl MOD14_021E60B4 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D916C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D922E + add r0, r5, #0 + bl MOD14_021E6160 + mov r2, #2 + add r1, r0, #0 + mvn r2, r2 + cmp r1, r2 + bhi _021D919C + bhs _021D922E + cmp r1, #0x2d + bhi _021D91FC + cmp r1, #0x2c + blo _021D91FC + beq _021D91CC + cmp r1, #0x2d + beq _021D91BA + b _021D91FC +_021D919C: + add r0, r2, #1 + cmp r1, r0 + blo _021D91FC + beq _021D91AC + add r0, r2, #2 + cmp r1, r0 + beq _021D91BA + b _021D91FC +_021D91AC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D91BA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D91CC: + add r0, r5, #0 + bl MOD14_021DC1AC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #7 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x27 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D91FC: + cmp r1, #0x38 + blo _021D922E + cmp r1, #0x3d + bhi _021D922E + add r0, r5, #0 + sub r1, #0x38 + bl MOD14_021E6118 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1d + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D921A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D922E + add r0, r5, #0 + bl MOD14_021D7620 +_021D922E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D9230 +MOD14_021D9230: ; 0x021D9230 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #4 + bls _021D923E + b _021D9454 +_021D923E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D924A: ; jump table + .short _021D9254 - _021D924A - 2 ; case 0 + .short _021D9284 - _021D924A - 2 ; case 1 + .short _021D9326 - _021D924A - 2 ; case 2 + .short _021D942C - _021D924A - 2 ; case 3 + .short _021D9440 - _021D924A - 2 ; case 4 +_021D9254: + ldr r1, _021D9458 ; =0x021C48B8 + ldr r2, [r1, #0x44] + mov r1, #1 + tst r1, r2 + beq _021D927C + add r1, r4, #0 + bl MOD14_021DBBD0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2c + bl MOD14_021DCB2C + ldr r0, _021D945C ; =0x000005DC + bl FUN_020054C8 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D927C: + ldr r1, _021D9460 ; =MOD14_021D94BC + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D9284: + ldr r1, _021D9458 ; =0x021C48B8 + ldr r2, [r1, #0x44] + mov r1, #1 + tst r1, r2 + beq _021D92E8 + add r0, r2, #0 + add r1, r4, #0 + bl MOD14_021DB790 + cmp r0, #1 + beq _021D92B6 + cmp r0, #2 + bne _021D9342 + ldr r1, _021D9458 ; =0x021C48B8 + mov r0, #0xf0 + ldr r2, [r1, #0x44] + ldr r1, [r1, #0x48] + and r2, r0 + and r0, r1 + cmp r2, r0 + bne _021D9342 + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D92B6: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBBEC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2e + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D92E8: + bl MOD14_021DC4DC + cmp r0, #0 + beq _021D9306 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2d + bl MOD14_021DCB2C + ldr r1, _021D9460 ; =MOD14_021D94BC + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D9306: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBAE0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2f + bl MOD14_021DCB2C + ldr r0, _021D9468 ; =0x000005EB + bl FUN_020054C8 + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9326: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9342 + ldr r0, _021D9458 ; =0x021C48B8 + add r1, r4, #0 + ldr r0, [r0, #0x44] + bl MOD14_021DB790 + cmp r0, #4 + bls _021D9344 +_021D9342: + b _021D9454 +_021D9344: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9350: ; jump table + .short _021D93E2 - _021D9350 - 2 ; case 0 + .short _021D9372 - _021D9350 - 2 ; case 1 + .short _021D935A - _021D9350 - 2 ; case 2 + .short _021D9396 - _021D9350 - 2 ; case 3 + .short _021D93BC - _021D9350 - 2 ; case 4 +_021D935A: + ldr r1, _021D9458 ; =0x021C48B8 + mov r0, #0xf0 + ldr r2, [r1, #0x44] + ldr r1, [r1, #0x48] + and r2, r0 + and r0, r1 + cmp r2, r0 + bne _021D9454 + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D9372: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + mov r1, #6 + tst r0, r1 + bne _021D9454 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D9396: + add r0, r4, #0 + bl MOD14_021DC2A4 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B428 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D93BC: + add r0, r4, #0 + bl MOD14_021DC278 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B428 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D93E2: + ldr r0, _021D9458 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _021D941E + add r0, r4, #0 + bl MOD14_021D9470 + cmp r0, #0 + beq _021D9416 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBCA0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl MOD14_021DCB2C + ldr r0, _021D946C ; =0x000005EA + bl FUN_020054C8 + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9416: + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D941E: + mov r0, #2 + tst r0, r1 + beq _021D9454 + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D942C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9454 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9440: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9454 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9454: + pop {r3, r4, r5, pc} + nop +_021D9458: .word 0x021C48B8 +_021D945C: .word 0x000005DC +_021D9460: .word MOD14_021D94BC +_021D9464: .word 0x000005F3 +_021D9468: .word 0x000005EB +_021D946C: .word 0x000005EA + + thumb_func_start MOD14_021D9470 +MOD14_021D9470: ; 0x021D9470 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r5, #0x14 + str r0, [sp] + bl MOD14_021DC4F8 + add r7, r0, #0 + ldrb r0, [r5, #8] + mov r4, #0 + ldrb r6, [r5, #9] + cmp r0, #0 + ble _021D94B6 +_021D9488: + add r3, r5, r4 + mov r2, #0xc + ldrsb r2, [r3, r2] + ldr r0, [sp] + mov r1, #0 + sub r2, r2, r6 + ldr r0, [r0] + mvn r1, r1 + add r2, r7, r2 + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021D94AE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D94AE: + ldrb r0, [r5, #8] + add r4, r4, #1 + cmp r4, r0 + blt _021D9488 +_021D94B6: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021D94BC +MOD14_021D94BC: ; 0x021D94BC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #3 + bhi _021D95A4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D94D4: ; jump table + .short _021D94DC - _021D94D4 - 2 ; case 0 + .short _021D954E - _021D94D4 - 2 ; case 1 + .short _021D9574 - _021D94D4 - 2 ; case 2 + .short _021D9590 - _021D94D4 - 2 ; case 3 +_021D94DC: + bl MOD14_021DC3CC + cmp r0, #1 + bne _021D952E + add r0, r4, #0 + bl MOD14_021D9B84 + cmp r0, #0 + bne _021D950E + ldr r0, _021D95A8 ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBA5C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D950E: + ldr r0, _021D95AC ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D952E: + ldr r0, _021D95A8 ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBA5C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D954E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D95A4 + add r0, r4, #0 + bl MOD14_021DB934 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x25 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9574: + ldr r0, _021D95B0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D95A4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9590: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D95A4 + add r0, r4, #0 + bl MOD14_021D7620 +_021D95A4: + pop {r3, r4, r5, pc} + nop +_021D95A8: .word 0x000005EB +_021D95AC: .word 0x000005F3 +_021D95B0: .word 0x021C48B8 + + thumb_func_start MOD14_021D95B4 +MOD14_021D95B4: ; 0x021D95B4 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D95CA + cmp r1, #1 + beq _021D9616 + cmp r1, #2 + beq _021D9648 + pop {r4, r5, r6, pc} +_021D95CA: + add r1, r5, #0 + bl MOD14_021DBC00 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xa + bl MOD14_021DCB2C + ldr r0, _021D9664 ; =0x000005EA + bl FUN_020054C8 + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #1 + bne _021D9610 + add r0, r5, #0 + bl MOD14_021DC3E8 + add r6, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + sub r0, r0, #1 + cmp r6, r0 + beq _021D9610 + mov r0, #1 + str r0, [r4] + add r0, r5, #0 + bl MOD14_021DB934 + pop {r4, r5, r6, pc} +_021D9610: + mov r0, #2 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D9616: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9662 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x26 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D9648: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9662 + add r0, r5, #0 + bl MOD14_021D7674 + add r0, r5, #0 + bl MOD14_021D7620 +_021D9662: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D9664: .word 0x000005EA + + thumb_func_start MOD14_021D9668 +MOD14_021D9668: ; 0x021D9668 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD14_021D9B84 + cmp r0, #0 + beq _021D96AC + add r0, r5, #0 + mov r1, #0xac + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D968C + mov r0, #6 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D968C: + add r0, r5, #0 + bl MOD14_021DC3F8 + cmp r0, #0 + beq _021D96AC + add r0, r5, #0 + mov r1, #0xa2 + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + bne _021D96AC + mov r0, #6 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D96AC: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D96B0 +MOD14_021D96B0: ; 0x021D96B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D96C6 + cmp r1, #1 + beq _021D971C + cmp r1, #2 + beq _021D9748 + pop {r3, r4, r5, pc} +_021D96C6: + add r1, sp, #0 + bl MOD14_021D9668 + cmp r0, #0 + beq _021D96F0 + ldr r0, _021D9764 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r5, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D96F0: + add r0, r5, #0 + add r1, r5, #0 + bl MOD14_021DBD34 + ldr r0, _021D9768 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xb + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D971C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9762 + ldr r0, _021D976C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9762 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D9748: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9762 + add r0, r5, #0 + bl MOD14_021D7674 + add r0, r5, #0 + bl MOD14_021D7620 +_021D9762: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9764: .word 0x000005F3 +_021D9768: .word 0x000005DC +_021D976C: .word 0x021C48B8 + + thumb_func_start MOD14_021D9770 +MOD14_021D9770: ; 0x021D9770 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #8 + bls _021D977E + b _021D9928 +_021D977E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D978A: ; jump table + .short _021D979C - _021D978A - 2 ; case 0 + .short _021D9818 - _021D978A - 2 ; case 1 + .short _021D983A - _021D978A - 2 ; case 2 + .short _021D9862 - _021D978A - 2 ; case 3 + .short _021D9892 - _021D978A - 2 ; case 4 + .short _021D98B4 - _021D978A - 2 ; case 5 + .short _021D9928 - _021D978A - 2 ; case 6 + .short _021D98E8 - _021D978A - 2 ; case 7 + .short _021D9914 - _021D978A - 2 ; case 8 +_021D979C: + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206B9AC + cmp r0, #6 + beq _021D97F2 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D97D2 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D97D2: + ldr r0, _021D992C ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBA5C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D97F2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + add r0, r4, #0 + mov r1, #5 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9818: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D983A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + bl MOD14_021DB8D0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9862: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBC00 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9892: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D98B4: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + bl MOD14_021DB910 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D98E8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + ldr r0, _021D9930 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9928 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9914: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9928: + pop {r3, r4, r5, pc} + nop +_021D992C: .word 0x000005EB +_021D9930: .word 0x021C48B8 + + thumb_func_start MOD14_021D9934 +MOD14_021D9934: ; 0x021D9934 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bhi _021D99F8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D994C: ; jump table + .short _021D995A - _021D994C - 2 ; case 0 + .short _021D99F0 - _021D994C - 2 ; case 1 + .short _021D9AB2 - _021D994C - 2 ; case 2 + .short _021D9AD8 - _021D994C - 2 ; case 3 + .short _021D9B04 - _021D994C - 2 ; case 4 + .short _021D9B32 - _021D994C - 2 ; case 5 + .short _021D9B60 - _021D994C - 2 ; case 6 +_021D995A: + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D9998 + add r0, r4, #0 + bl MOD14_021D9B84 + cmp r0, #1 + bne _021D9998 + ldr r0, _021D9B78 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9998: + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021D7998 + cmp r0, #0 + beq _021D99D0 + ldr r0, _021D9B78 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D99D0: + mov r1, #0x11 + lsl r1, r1, #4 + ldrh r1, [r4, r1] + add r0, r4, #0 + mov r2, #0x13 + bl MOD14_021DAA7C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D99F0: + bl MOD14_021DAAA8 + cmp r0, #0 + bne _021D99FA +_021D99F8: + b _021D9B74 +_021D99FA: + ldr r0, _021D9B7C ; =0x000001C1 + mov r1, #0 + ldrsb r2, [r4, r0] + mvn r1, r1 + cmp r2, r1 + bne _021D9A22 + sub r0, #0xad + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9A22: + sub r0, #0xb1 + strh r2, [r4, r0] + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + ldr r1, _021D9B7C ; =0x000001C1 + bne _021D9A62 + ldrsb r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021DBDD8 + cmp r0, #0 + beq _021D9A92 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9A62: + ldrsb r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021DBE00 + cmp r0, #0 + beq _021D9A92 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9A92: + ldr r0, _021D9B78 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xd + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9AB2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + ldr r0, _021D9B80 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9B74 + add r0, r4, #0 + bl MOD14_021DAA98 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9AD8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + ldr r0, _021D9B80 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9B74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9B04: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xc + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9B32: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9B60: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9B74 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9B74: + pop {r3, r4, r5, pc} + nop +_021D9B78: .word 0x000005F3 +_021D9B7C: .word 0x000001C1 +_021D9B80: .word 0x021C48B8 + + thumb_func_start MOD14_021D9B84 +MOD14_021D9B84: ; 0x021D9B84 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [sp] + ldr r0, [r0, r1] + bl FUN_0206B9AC + mov r6, #0 + add r5, r6, #0 + str r0, [sp, #4] + cmp r0, #0 + ble _021D9BEC +_021D9B9E: + mov r0, #0x49 + ldr r1, [sp] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r6, #0 + bl FUN_0206B9B0 + add r4, r0, #0 + bl FUN_020669D4 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _021D9BD2 + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021D9BD2 + add r5, r5, #1 +_021D9BD2: + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02066A20 + cmp r5, #2 + blt _021D9BE4 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9BE4: + ldr r0, [sp, #4] + add r6, r6, #1 + cmp r6, r0 + blt _021D9B9E +_021D9BEC: + ldr r0, [sp] + mov r1, #0xac + mov r2, #0 + bl MOD14_021DC5D0 + cmp r0, #0 + beq _021D9C00 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9C00: + ldr r0, [sp] + mov r1, #0xa2 + mov r2, #0 + bl MOD14_021DC5D0 + cmp r0, #0 + beq _021D9C14 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9C14: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021D9C1C +MOD14_021D9C1C: ; 0x021D9C1C + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0xac + mov r2, #0 + add r5, r0, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D9C36 + mov r0, #0x1f + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C36: + add r0, r5, #0 + bl MOD14_021DC430 + add r0, r5, #0 + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D9C56 + mov r0, #0x1e + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C56: + add r0, r5, #0 + mov r1, #0xa1 + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D9C6C + mov r0, #0x1d + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C6C: + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D9C92 + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #1 + bne _021D9C92 + add r0, r5, #0 + bl MOD14_021D9B84 + cmp r0, #0 + beq _021D9C92 + mov r0, #6 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C92: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021D9C98 +MOD14_021D9C98: ; 0x021D9C98 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #9 + bhi _021D9D44 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D9CB0: ; jump table + .short _021D9CC4 - _021D9CB0 - 2 ; case 0 + .short _021D9D1C - _021D9CB0 - 2 ; case 1 + .short _021D9D86 - _021D9CB0 - 2 ; case 2 + .short _021D9E0A - _021D9CB0 - 2 ; case 3 + .short _021D9E96 - _021D9CB0 - 2 ; case 4 + .short _021D9E62 - _021D9CB0 - 2 ; case 5 + .short _021D9EC8 - _021D9CB0 - 2 ; case 6 + .short _021D9EF2 - _021D9CB0 - 2 ; case 7 + .short _021D9F36 - _021D9CB0 - 2 ; case 8 + .short _021D9F62 - _021D9CB0 - 2 ; case 9 +_021D9CC4: + add r1, sp, #0 + bl MOD14_021D9C1C + cmp r0, #0 + beq _021D9CF0 + add r0, r4, #0 + mov r1, #2 + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9CF0: + ldr r0, _021D9F78 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9D1C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9D44 + add r0, r4, #0 + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021D9D4E + bge _021D9D74 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021D9D44 + sub r1, r2, #1 + cmp r0, r1 + bge _021D9D46 +_021D9D44: + b _021D9F76 +_021D9D46: + beq _021D9D54 + cmp r0, r2 + beq _021D9D62 + pop {r3, r4, r5, pc} +_021D9D4E: + cmp r0, #0x37 + beq _021D9D62 + pop {r3, r4, r5, pc} +_021D9D54: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D9D62: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #9 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9D74: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9D86: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9E70 + add r0, r4, #0 + bl MOD14_021DC458 + add r2, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + bl MOD14_021D9F80 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D9DD0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xe + bl MOD14_021DCB2C + mov r0, #0x6e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + b _021D9E04 +_021D9DD0: + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021D9DF0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xf + bl MOD14_021DCB2C + mov r0, #0x6e + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + b _021D9E04 +_021D9DF0: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x10 + bl MOD14_021DCB2C + mov r0, #0x6e + mov r1, #2 + lsl r0, r0, #2 + str r1, [r4, r0] +_021D9E04: + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9E0A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9E70 + add r0, r4, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + beq _021D9E48 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D9E34 + add r0, r4, #0 + bl MOD14_021DBE34 + b _021D9E3A +_021D9E34: + add r0, r4, #0 + bl MOD14_021DBE4C +_021D9E3A: + add r0, r4, #0 + mov r1, #3 + bl MOD14_021DBA44 + mov r0, #5 + str r0, [r5] + b _021D9E54 +_021D9E48: + add r0, r4, #0 + mov r1, #0x20 + bl MOD14_021DBA44 + mov r0, #4 + str r0, [r5] +_021D9E54: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D9E62: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + bne _021D9E72 +_021D9E70: + b _021D9F76 +_021D9E72: + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + add r0, r4, #0 + mov r1, #4 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9E96: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + add r0, r4, #0 + mov r1, #0x21 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9EC8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9EF2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + add r0, r4, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + beq _021D9F24 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #2 + bne _021D9F1E + sub r0, #0xa4 + ldr r0, [r4, r0] + mov r1, #0x25 + bl MOD14_021DCB2C +_021D9F1E: + add r0, r4, #0 + bl MOD14_021D7674 +_021D9F24: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #9 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9F36: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9F76 + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #9 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9F62: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9F76: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9F78: .word 0x000005F3 +_021D9F7C: .word 0x021C48B8 + + thumb_func_start MOD14_021D9F80 +MOD14_021D9F80: ; 0x021D9F80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [sp] + add r7, r0, r1 + ldr r0, [r0, #0x4c] + mov r4, #0 + ldr r5, _021DA010 ; =0x021E6224 + str r0, [r7, #0x10] + str r4, [sp, #4] +_021D9F96: + ldrh r1, [r5] + ldr r0, [r7, #0x10] + add r6, r7, r4 + bl MOD14_021DA168 + strb r0, [r6, #4] + ldrb r0, [r6, #4] + cmp r0, #0 + beq _021D9FAE + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_021D9FAE: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #3 + blo _021D9F96 + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D9FC6 + mov r0, #1 + strb r0, [r7] + add sp, #8 + strb r0, [r7, #1] + pop {r3, r4, r5, r6, r7, pc} +_021D9FC6: + mov r0, #0 + strb r0, [r7] + strb r0, [r7, #1] + strb r0, [r7, #2] + strb r0, [r7, #3] + mov r1, #0x12 + ldr r0, [sp] + lsl r1, r1, #4 + ldr r0, [r0, r1] + add r1, r1, #4 + str r0, [r7, #0x14] + ldr r0, [sp] + ldr r0, [r0, r1] + str r0, [r7, #0x18] + ldr r0, [sp] + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D9FF0 + mov r0, #1 + b _021D9FF2 +_021D9FF0: + mov r0, #0 +_021D9FF2: + mov r1, #0 + str r0, [r7, #0x1c] + add r0, r7, #0 + add r2, r1, #0 +_021D9FFA: + add r1, r1, #1 + strh r2, [r0, #8] + add r0, r0, #2 + cmp r1, #3 + blo _021D9FFA + ldr r0, _021DA014 ; =MOD14_021DA018 + add r1, r7, #0 + bl FUN_0200CA44 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DA010: .word 0x021E6224 +_021DA014: .word MOD14_021DA018 + + thumb_func_start MOD14_021DA018 +MOD14_021DA018: ; 0x021DA018 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + ldrb r0, [r1, #2] + str r1, [sp, #4] + cmp r0, #0x12 + bhs _021DA0AE + add r0, r1, #0 + ldrb r0, [r0, #3] + str r0, [sp, #0xc] + str r0, [sp, #0x14] + add r0, #0xf + str r0, [sp, #0x14] + cmp r0, #0x1e + ble _021DA03A + mov r0, #0x1e + str r0, [sp, #0x14] +_021DA03A: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r1, r0 + bge _021DA08C +_021DA042: + ldr r1, [sp, #4] + ldr r0, [sp, #4] + ldrb r1, [r1, #2] + ldr r0, [r0, #0x14] + ldr r2, [sp, #0xc] + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + add r7, r0, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DA080 + ldr r4, _021DA164 ; =0x021E6224 + ldr r5, [sp, #4] + mov r6, #0 +_021DA064: + ldrh r1, [r4] + add r0, r7, #0 + bl MOD14_021DA168 + cmp r0, #0 + beq _021DA076 + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] +_021DA076: + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #3 + blo _021DA064 +_021DA080: + ldr r0, [sp, #0xc] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + blt _021DA042 +_021DA08C: + ldr r0, [sp, #0x14] + cmp r0, #0x1e + bne _021DA0A4 + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #3] + ldrb r0, [r0, #2] + add r1, r0, #1 + ldr r0, [sp, #4] + add sp, #0x18 + strb r1, [r0, #2] + pop {r3, r4, r5, r6, r7, pc} +_021DA0A4: + add r1, r0, #0 + ldr r0, [sp, #4] + add sp, #0x18 + strb r1, [r0, #3] + pop {r3, r4, r5, r6, r7, pc} +_021DA0AE: + add r0, r1, #0 + ldr r0, [r0, #0x18] + bl FUN_0206B9AC + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + cmp r0, #0 + ble _021DA0FC +_021DA0C2: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [r0, #0x18] + bl FUN_0206B9B0 + ldr r4, _021DA164 ; =0x021E6224 + ldr r5, [sp, #4] + add r7, r0, #0 + mov r6, #0 +_021DA0D4: + ldrh r1, [r4] + add r0, r7, #0 + bl MOD14_021DA168 + cmp r0, #0 + beq _021DA0E6 + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] +_021DA0E6: + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #3 + blo _021DA0D4 + ldr r0, [sp, #8] + add r1, r0, #1 + ldr r0, [sp, #0x10] + str r1, [sp, #8] + cmp r1, r0 + blt _021DA0C2 +_021DA0FC: + ldr r0, [sp, #4] + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _021DA128 + ldr r4, _021DA164 ; =0x021E6224 + ldr r5, [sp, #4] + mov r6, #0 +_021DA10A: + ldr r0, [sp, #4] + ldrh r1, [r4] + ldr r0, [r0, #0x10] + bl MOD14_021DA168 + cmp r0, #0 + beq _021DA11E + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] +_021DA11E: + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #3 + blo _021DA10A +_021DA128: + ldr r0, [sp, #4] + mov r1, #1 + strb r1, [r0, #1] + mov r2, #0 + add r1, r0, #0 +_021DA132: + ldrh r0, [r1, #8] + cmp r0, #1 + bne _021DA14A + ldr r0, [sp, #4] + add r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #1 + bne _021DA14A + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #1] + b _021DA152 +_021DA14A: + add r2, r2, #1 + add r1, r1, #2 + cmp r2, #3 + blo _021DA132 +_021DA152: + ldr r0, [sp, #4] + mov r1, #1 + strb r1, [r0] + ldr r0, [sp] + bl FUN_0200CAB4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DA164: .word 0x021E6224 + + thumb_func_start MOD14_021DA168 +MOD14_021DA168: ; 0x021DA168 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0 + add r5, r0, #0 + str r1, [sp, #4] + bl FUN_02066A6C + str r0, [sp] + add r0, r5, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _021DA1A8 + mov r4, #0 + add r7, r4, #0 +_021DA18C: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x36 + add r2, r7, #0 + bl FUN_020672BC + cmp r6, r0 + bne _021DA1A2 + mov r0, #1 + str r0, [sp, #4] + b _021DA1A8 +_021DA1A2: + add r4, r4, #1 + cmp r4, #4 + blt _021DA18C +_021DA1A8: + ldr r1, [sp] + add r0, r5, #0 + bl FUN_02066A94 + ldr r0, [sp, #4] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DA1B8 +MOD14_021DA1B8: ; 0x021DA1B8 + mov r1, #0x57 + lsl r1, r1, #2 + ldrb r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DA1C0 +MOD14_021DA1C0: ; 0x021DA1C0 + mov r1, #0x57 + lsl r1, r1, #2 + add r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + beq _021DA1D0 + ldrb r0, [r1, #1] + bx lr +_021DA1D0: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021DA1D4 +MOD14_021DA1D4: ; 0x021DA1D4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021DA1EA + cmp r0, #1 + beq _021DA1FE + cmp r0, #2 + beq _021DA256 + pop {r3, r4, r5, pc} +_021DA1EA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA1FE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA2BC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCA38 + mov r0, #0xa + bl FUN_020168D0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B330 + mov r2, #0x12 + lsl r2, r2, #4 + add r1, r0, #0 + ldr r0, [r4, r2] + add r2, #8 + ldr r2, [r4, r2] + ldr r2, [r2, #0x18] + bl FUN_0206B484 + mov r1, #0x4a + lsl r1, r1, #2 + ldr r0, _021DA2C0 ; =0x020FA5FC + ldr r1, [r4, r1] + mov r2, #9 + bl FUN_02006234 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA256: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006290 + cmp r0, #0 + beq _021DA2BC + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B330 + add r5, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006260 + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + mov r2, #0x12 + lsl r2, r2, #4 + ldr r0, [r4, r2] + add r2, #8 + ldr r2, [r4, r2] + add r1, r5, #0 + ldr r2, [r2, #0x18] + bl FUN_0206B4B4 + mov r0, #0x12 + lsl r0, r0, #4 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0x40 + bl MOD14_021DB580 + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r2, r4, #0 + bl MOD14_021DC76C + ldr r1, _021DA2C4 ; =MOD14_021D76E8 + add r0, r4, #0 + bl MOD14_021D7610 +_021DA2BC: + pop {r3, r4, r5, pc} + nop +_021DA2C0: .word 0x020FA5FC +_021DA2C4: .word MOD14_021D76E8 + + thumb_func_start MOD14_021DA2C8 +MOD14_021DA2C8: ; 0x021DA2C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021DA2DE + cmp r0, #1 + beq _021DA2F2 + cmp r0, #2 + beq _021DA334 + pop {r3, r4, r5, pc} +_021DA2DE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DA2F2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA390 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCA38 + mov r0, #0xa + bl FUN_020168D0 + add r0, r5, #0 + bl MOD14_021D83E4 + mov r1, #0x4b + lsl r1, r1, #2 + ldr r0, _021DA394 ; =0x020FA6E8 + add r1, r5, r1 + mov r2, #9 + bl FUN_02006234 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DA334: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02006290 + cmp r0, #0 + beq _021DA390 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0206B330 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02006260 + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DA374 + add r0, r5, #0 + add r1, r5, #0 + bl MOD14_021DA39C +_021DA374: + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r5, r0 + add r1, r5, #0 + add r2, r5, #0 + bl MOD14_021DC76C + ldr r1, _021DA398 ; =MOD14_021D76E8 + add r0, r5, #0 + bl MOD14_021D7610 + add r0, r5, #0 + bl MOD14_021D7674 +_021DA390: + pop {r3, r4, r5, pc} + nop +_021DA394: .word 0x020FA6E8 +_021DA398: .word MOD14_021D76E8 + + thumb_func_start MOD14_021DA39C +MOD14_021DA39C: ; 0x021DA39C + push {r3, r4, r5, lr} + add r4, r0, #0 + add r4, #8 + ldrb r0, [r4, #4] + add r5, r1, #0 + cmp r0, #0 + beq _021DA3B0 + cmp r0, #1 + beq _021DA3D2 + pop {r3, r4, r5, pc} +_021DA3B0: + mov r0, #5 + lsl r0, r0, #6 + ldrb r0, [r5, r0] + mov r1, #6 + strb r0, [r4, #7] + mov r0, #7 + ldrsb r0, [r4, r0] + bl _s32_div_f + strb r1, [r4, #5] + mov r0, #7 + ldrsb r0, [r4, r0] + mov r1, #6 + bl _s32_div_f + strb r0, [r4, #6] + b _021DA3DA +_021DA3D2: + mov r0, #5 + lsl r0, r0, #6 + ldrb r0, [r5, r0] + strb r0, [r4, #8] +_021DA3DA: + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DA3E4 +MOD14_021DA3E4: ; 0x021DA3E4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #6 + bhi _021DA496 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA3FC: ; jump table + .short _021DA40A - _021DA3FC - 2 ; case 0 + .short _021DA41E - _021DA3FC - 2 ; case 1 + .short _021DA488 - _021DA3FC - 2 ; case 2 + .short _021DA522 - _021DA3FC - 2 ; case 3 + .short _021DA546 - _021DA3FC - 2 ; case 4 + .short _021DA58E - _021DA3FC - 2 ; case 5 + .short _021DA5C2 - _021DA3FC - 2 ; case 6 +_021DA40A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA41E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA496 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCA38 + mov r0, #0xa + bl FUN_020168D0 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + ldr r1, _021DA5D8 ; =0x021E6264 + mov r2, #9 + bl FUN_0206EFEC + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + sub r1, #0xf8 + ldr r1, [r4, r1] + mov r2, #1 + mov r3, #0 + bl FUN_0206E314 + ldr r0, _021DA5DC ; =0x0000004B + mov r1, #2 + bl HandleLoadOverlay + mov r1, #0x85 + lsl r1, r1, #2 + ldr r0, _021DA5E0 ; =0x021EC68C + ldr r1, [r4, r1] + mov r2, #9 + bl FUN_02006234 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA488: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006290 + cmp r0, #0 + bne _021DA498 +_021DA496: + b _021DA5D6 +_021DA498: + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206E37C + ldr r1, _021DA5E4 ; =0x021E6A00 + str r0, [r1, #8] + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006260 + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021DA5DC ; =0x0000004B + bl UnloadOverlayByID + ldr r0, _021DA5E4 ; =0x021E6A00 + ldr r6, [r0, #8] + cmp r6, #0 + beq _021DA4F4 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + lsl r1, r6, #0x10 + lsr r1, r1, #0x10 + mov r2, #1 + mov r3, #9 + bl FUN_0206EDD4 + ldr r1, _021DA5E4 ; =0x021E6A00 + add r0, r4, #0 + ldr r1, [r1, #8] + add r2, r4, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD14_021DC1E8 + add r0, r4, #0 + bl MOD14_021D7674 +_021DA4F4: + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r2, r4, #0 + bl MOD14_021DC76C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA522: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA5D6 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA546: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA5D6 + ldr r0, _021DA5E4 ; =0x021E6A00 + ldr r2, [r0, #8] + cmp r2, #0 + bne _021DA566 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r4, r5, r6, pc} +_021DA566: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x10 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA58E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA5D6 + ldr r0, _021DA5E8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021DA5D6 + ldr r0, _021DA5EC ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA5C2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA5D6 + add r0, r4, #0 + bl MOD14_021D7620 +_021DA5D6: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DA5D8: .word 0x021E6264 +_021DA5DC: .word 0x0000004B +_021DA5E0: .word 0x021EC68C +_021DA5E4: .word 0x021E6A00 +_021DA5E8: .word 0x021C48B8 +_021DA5EC: .word 0x000005DD + + thumb_func_start MOD14_021DA5F0 +MOD14_021DA5F0: ; 0x021DA5F0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bhi _021DA6A2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA608: ; jump table + .short _021DA614 - _021DA608 - 2 ; case 0 + .short _021DA67A - _021DA608 - 2 ; case 1 + .short _021DA6E4 - _021DA608 - 2 ; case 2 + .short _021DA744 - _021DA608 - 2 ; case 3 + .short _021DA76C - _021DA608 - 2 ; case 4 + .short _021DA79E - _021DA608 - 2 ; case 5 +_021DA614: + bl MOD14_021DC430 + ldr r1, _021DA7B4 ; =0x021E6A00 + str r0, [r1, #4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021DA648 + ldr r0, _021DA7B8 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA648: + mov r0, #0x67 + ldr r2, _021DA7B4 ; =0x021E6A00 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [r2, #4] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E5D98 + add r0, r4, #0 + mov r1, #0x17 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA67A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA6A2 + add r0, r4, #0 + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021DA6AC + bge _021DA6D2 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021DA6A2 + sub r1, r2, #1 + cmp r0, r1 + bge _021DA6A4 +_021DA6A2: + b _021DA7B2 +_021DA6A4: + beq _021DA6B2 + cmp r0, r2 + beq _021DA6C0 + pop {r3, r4, r5, pc} +_021DA6AC: + cmp r0, #0x37 + beq _021DA6C0 + pop {r3, r4, r5, pc} +_021DA6B2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021DA6C0: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA6D2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA6E4: + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + ldr r1, _021DA7B4 ; =0x021E6A00 + mov r2, #1 + ldr r1, [r1, #4] + mov r3, #9 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206ED38 + cmp r0, #0 + beq _021DA72A + add r0, r4, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD14_021DC1E8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x16 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA72A: + add r0, r4, #0 + mov r1, #0xe + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA744: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA7B2 + add r0, r4, #0 + mov r1, #0xf + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA76C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA7B2 + ldr r0, _021DA7BC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021DA7B2 + ldr r0, _021DA7C0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA79E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA7B2 + add r0, r4, #0 + bl MOD14_021D7620 +_021DA7B2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA7B4: .word 0x021E6A00 +_021DA7B8: .word 0x000005F3 +_021DA7BC: .word 0x021C48B8 +_021DA7C0: .word 0x000005DD + + thumb_func_start MOD14_021DA7C4 +MOD14_021DA7C4: ; 0x021DA7C4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bhi _021DA878 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA7DC: ; jump table + .short _021DA7EA - _021DA7DC - 2 ; case 0 + .short _021DA850 - _021DA7DC - 2 ; case 1 + .short _021DA8BA - _021DA7DC - 2 ; case 2 + .short _021DA922 - _021DA7DC - 2 ; case 3 + .short _021DA950 - _021DA7DC - 2 ; case 4 + .short _021DA978 - _021DA7DC - 2 ; case 5 + .short _021DA9AA - _021DA7DC - 2 ; case 6 +_021DA7EA: + bl MOD14_021DC544 + ldr r1, _021DA9C0 ; =0x021E6A00 + str r0, [r1] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021DA81E + ldr r0, _021DA9C4 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA81E: + mov r0, #0x67 + ldr r2, _021DA9C0 ; =0x021E6A00 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x1a + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA850: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA878 + add r0, r4, #0 + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021DA882 + bge _021DA8A8 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021DA878 + sub r1, r2, #1 + cmp r0, r1 + bge _021DA87A +_021DA878: + b _021DA9BE +_021DA87A: + beq _021DA888 + cmp r0, r2 + beq _021DA896 + pop {r3, r4, r5, pc} +_021DA882: + cmp r0, #0x37 + beq _021DA896 + pop {r3, r4, r5, pc} +_021DA888: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021DA896: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA8A8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA8BA: + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + ldr r1, _021DA9C0 ; =0x021E6A00 + mov r2, #1 + ldr r1, [r1] + mov r3, #9 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206ED38 + cmp r0, #0 + beq _021DA908 + add r0, r4, #0 + bl MOD14_021DC538 + cmp r0, #0 + beq _021DA8EC + add r0, r4, #0 + bl MOD14_021DC310 + mov r0, #4 + b _021DA8F8 +_021DA8EC: + add r0, r4, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD14_021DC1E8 + mov r0, #3 +_021DA8F8: + str r0, [r5] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x17 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021DA908: + add r0, r4, #0 + mov r1, #0xe + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA922: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x17 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA9BE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x16 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA950: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA9BE + add r0, r4, #0 + mov r1, #0x1b + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA978: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA9BE + ldr r0, _021DA9C8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021DA9BE + ldr r0, _021DA9CC ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA9AA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA9BE + add r0, r4, #0 + bl MOD14_021D7620 +_021DA9BE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA9C0: .word 0x021E6A00 +_021DA9C4: .word 0x000005F3 +_021DA9C8: .word 0x021C48B8 +_021DA9CC: .word 0x000005DD + + thumb_func_start MOD14_021DA9D0 +MOD14_021DA9D0: ; 0x021DA9D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _021DAA74 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA9E8: ; jump table + .short _021DA9F2 - _021DA9E8 - 2 ; case 0 + .short _021DAA06 - _021DA9E8 - 2 ; case 1 + .short _021DAA2A - _021DA9E8 - 2 ; case 2 + .short _021DAA42 - _021DA9E8 - 2 ; case 3 + .short _021DAA5E - _021DA9E8 - 2 ; case 4 +_021DA9F2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA06: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAA74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x11 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA2A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x11 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAA74 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA42: + ldr r0, _021DAA78 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r1, r0 + beq _021DAA74 + add r0, #0x21 + ldr r0, [r5, r0] + mov r1, #0x12 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA5E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x12 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAA74 + add r0, r5, #0 + bl MOD14_021D7620 +_021DAA74: + pop {r3, r4, r5, pc} + nop +_021DAA78: .word 0x021C48B8 + + thumb_func_start MOD14_021DAA7C +MOD14_021DAA7C: ; 0x021DAA7C + push {r4, r5} + mov r3, #0x6f + lsl r3, r3, #2 + mov r5, #0 + str r5, [r0, r3] + add r4, r3, #5 + strb r1, [r0, r4] + add r1, r3, #6 + strh r2, [r0, r1] + add r1, r3, #4 + strb r5, [r0, r1] + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DAA98 +MOD14_021DAA98: ; 0x021DAA98 + mov r1, #0x6f + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + mov r2, #1 + add r1, r1, #4 + strb r2, [r0, r1] + bx lr + + thumb_func_start MOD14_021DAAA8 +MOD14_021DAAA8: ; 0x021DAAA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6f + lsl r0, r0, #2 + add r4, r5, r0 + ldr r1, [r4] + cmp r1, #3 + bls _021DAABA + b _021DABDC +_021DAABA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DAAC6: ; jump table + .short _021DAACE - _021DAAC6 - 2 ; case 0 + .short _021DAB04 - _021DAAC6 - 2 ; case 1 + .short _021DAB2C - _021DAAC6 - 2 ; case 2 + .short _021DAB3E - _021DAAC6 - 2 ; case 3 +_021DAACE: + ldrb r0, [r4, #4] + cmp r0, #1 + bne _021DAADA + mov r0, #1 + str r0, [r4] + b _021DABDC +_021DAADA: + mov r0, #5 + ldrsb r1, [r4, r0] + sub r0, r0, #6 + cmp r1, r0 + bne _021DAAE8 + mov r0, #0 + strb r0, [r4, #5] +_021DAAE8: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r5, #0 + bl MOD14_021DC2DC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1e + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r4] + b _021DABDC +_021DAB04: + sub r0, #0xa8 + ldr r0, [r5, r0] + mov r1, #0x1e + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DABDC + ldrh r1, [r4, #6] + add r0, r5, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + b _021DABDC +_021DAB2C: + sub r0, #0xa8 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DABDC + mov r0, #3 + str r0, [r4] +_021DAB3E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1f + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DABDC + ldr r0, _021DABE0 ; =0x021C48B8 + mov r1, #0x22 + ldr r0, [r0, #0x48] + lsl r1, r1, #4 + add r2, r0, #0 + tst r2, r1 + beq _021DAB86 + mov r0, #5 + ldrsb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, #5] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _021DAB6E + mov r0, #0x11 + strb r0, [r4, #5] +_021DAB6E: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r5, #0 + bl MOD14_021DC2DC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1f + bl MOD14_021DCB2C + b _021DABDC +_021DAB86: + lsr r1, r1, #1 + tst r1, r0 + beq _021DABB6 + mov r0, #5 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #5] + ldrsb r0, [r4, r0] + cmp r0, #0x12 + blt _021DAB9E + mov r0, #0 + strb r0, [r4, #5] +_021DAB9E: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r5, #0 + bl MOD14_021DC2DC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1f + bl MOD14_021DCB2C + b _021DABDC +_021DABB6: + mov r1, #1 + tst r1, r0 + beq _021DABC6 + ldr r0, _021DABE4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DABC6: + mov r1, #2 + tst r0, r1 + beq _021DABDC + ldr r0, _021DABE4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0 + mvn r0, r0 + strb r0, [r4, #5] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DABDC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DABE0: .word 0x021C48B8 +_021DABE4: .word 0x000005DD + + thumb_func_start MOD14_021DABE8 +MOD14_021DABE8: ; 0x021DABE8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021DABFE + cmp r1, #1 + beq _021DAC28 + cmp r1, #2 + beq _021DAC68 + pop {r3, r4, r5, pc} +_021DABFE: + bl MOD14_021DC424 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0206B428 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAC28: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAC7E + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DAC60 + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DAC60 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAC60: + add r0, r5, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021DAC68: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAC7E + add r0, r5, #0 + bl MOD14_021D7620 +_021DAC7E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DAC80 +MOD14_021DAC80: ; 0x021DAC80 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #5 + bhi _021DAD02 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAC98: ; jump table + .short _021DACA4 - _021DAC98 - 2 ; case 0 + .short _021DACF2 - _021DAC98 - 2 ; case 1 + .short _021DAEA2 - _021DAC98 - 2 ; case 2 + .short _021DAEF8 - _021DAC98 - 2 ; case 3 + .short _021DAF34 - _021DAC98 - 2 ; case 4 + .short _021DAF4A - _021DAC98 - 2 ; case 5 +_021DACA4: + ldr r0, _021DAF60 ; =0x000005E4 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021DC350 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021DC358 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #0x58 + str r0, [sp] + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0xc0 + mov r3, #0x38 + bl MOD14_021DC5F8 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + str r1, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DACF2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021DAD04 +_021DAD02: + b _021DAF5E +_021DAD04: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021DAD34 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #1 + bne _021DAD34 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021DAD2C + ldr r1, _021DAF64 ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, r6, r7, pc} +_021DAD2C: + ldr r0, _021DAF68 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} +_021DAD34: + ldr r0, _021DAF6C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r0, r1 + beq _021DAD6C + ldr r0, _021DAF70 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC350 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021DC358 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAD6C: + mov r1, #0x81 + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #0 + beq _021DADE4 + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021DADE4 + sub r0, r1, #4 + ldr r0, [r4, r0] + add r2, r0, #1 + sub r0, r1, #4 + str r2, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x14 + bls _021DADE4 + add r0, r4, #0 + bl MOD14_021DC474 + add r6, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DC2C4 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, r6, #0 + bl FUN_0206B428 + add r0, r4, #0 + bl MOD14_021DB934 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DADC6 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #8 + bl MOD14_021DCB2C +_021DADC6: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB2C + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, r0, #4 + str r1, [r4, r0] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DADE4: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #1 + beq _021DADFC + cmp r0, #2 + beq _021DAE1C + cmp r0, #3 + beq _021DAE76 + pop {r3, r4, r5, r6, r7, pc} +_021DADFC: + add r0, r4, #0 + bl MOD14_021DC474 + mov r1, #0x7f + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #0 + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r1, #0xc + str r2, [r4, r1] + pop {r3, r4, r5, r6, r7, pc} +_021DAE1C: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC708 + add r6, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r6, r0 + bne _021DAE34 + b _021DAF5E +_021DAE34: + sub r7, r6, r0 + add r0, r4, #0 + bl MOD14_021DC474 + add r1, r7, r0 + bpl _021DAE44 + add r1, #0x12 + b _021DAE4A +_021DAE44: + cmp r1, #0x12 + blt _021DAE4A + sub r1, #0x12 +_021DAE4A: + mov r0, #0x83 + lsl r0, r0, #2 + str r6, [r4, r0] + add r0, r4, #0 + bl MOD14_021DC358 + add r0, r4, #0 + add r1, r7, #0 + bl MOD14_021DC368 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB2C + ldr r0, _021DAF74 ; =0x000005DC + bl FUN_020054C8 + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAE76: + add r0, r4, #0 + bl MOD14_021DC424 + add r5, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r5, r0 + beq _021DAE8C + mov r1, #1 + b _021DAE8E +_021DAE8C: + mov r1, #0 +_021DAE8E: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DAEA2: + mov r0, #0x82 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + bne _021DAEE2 + sub r0, #0x40 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #3 + bne _021DAEE2 + add r0, r4, #0 + bl MOD14_021DC424 + add r6, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r6, r0 + beq _021DAECE + mov r1, #1 + b _021DAED0 +_021DAECE: + mov r1, #0 +_021DAED0: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_021DAEE2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAF5E + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAEF8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAF5E + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DAF2E + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021DAF2E + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAF2E: + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAF34: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAF5E + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAF4A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DAF5E + add r0, r4, #0 + bl MOD14_021D7620 +_021DAF5E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DAF60: .word 0x000005E4 +_021DAF64: .word MOD14_021DAF78 +_021DAF68: .word 0x000005F3 +_021DAF6C: .word 0x021C48B8 +_021DAF70: .word 0x000005DD +_021DAF74: .word 0x000005DC + + thumb_func_start MOD14_021DAF78 +MOD14_021DAF78: ; 0x021DAF78 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + add r4, r0, #0 + ldr r0, [r6] + cmp r0, #3 + bhi _021DAFFC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAF92: ; jump table + .short _021DAF9A - _021DAF92 - 2 ; case 0 + .short _021DAFEC - _021DAF92 - 2 ; case 1 + .short _021DB144 - _021DAF92 - 2 ; case 2 + .short _021DB19C - _021DAF92 - 2 ; case 3 +_021DAF9A: + ldr r0, _021DB1B4 ; =0x000005E4 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #2 + bl MOD14_021DC350 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC360 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC358 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #0x58 + str r0, [sp] + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0xff + mov r2, #0xc0 + mov r3, #0x38 + bl MOD14_021DC5F8 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + add sp, #8 + str r1, [r6] + pop {r3, r4, r5, r6, r7, pc} +_021DAFEC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021DAFFE +_021DAFFC: + b _021DB1B0 +_021DAFFE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021DB01E + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021DB01E + ldr r1, _021DB1B8 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DB01E: + ldr r0, _021DB1BC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r0, r1 + beq _021DB046 + ldr r0, _021DB1C0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC350 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r6] +_021DB046: + add r0, r4, #0 + bl MOD14_021DB1C8 + cmp r0, #0 + beq _021DB072 + ldr r0, _021DB1C0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x27 + bl MOD14_021DCB2C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DB072: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #1 + beq _021DB08C + cmp r0, #2 + beq _021DB0AE + cmp r0, #3 + beq _021DB116 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DB08C: + add r0, r4, #0 + bl MOD14_021DC474 + mov r1, #0x7f + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #0 + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r1, #0xc + add sp, #8 + str r2, [r4, r1] + pop {r3, r4, r5, r6, r7, pc} +_021DB0AE: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC708 + add r7, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r7, r0 + beq _021DB1B0 + sub r0, r7, r0 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021DC474 + ldr r1, [sp, #4] + add r5, r1, r0 + bpl _021DB0D8 + add r5, #8 + b _021DB0DE +_021DB0D8: + cmp r5, #8 + blt _021DB0DE + sub r5, #8 +_021DB0DE: + mov r0, #0x83 + lsl r0, r0, #2 + str r7, [r4, r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD14_021DC358 + add r0, r4, #0 + add r1, r5, #0 + bl MOD14_021DC360 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD14_021DC368 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB2C + ldr r0, _021DB1C4 ; =0x000005DC + bl FUN_020054C8 + mov r0, #2 + add sp, #8 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} +_021DB116: + add r0, r4, #0 + bl MOD14_021DC424 + add r5, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r5, r0 + beq _021DB12C + mov r1, #1 + b _021DB12E +_021DB12C: + mov r1, #0 +_021DB12E: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + add sp, #8 + str r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DB144: + mov r0, #0x82 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + bne _021DB184 + sub r0, #0x40 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #3 + bne _021DB184 + add r0, r4, #0 + bl MOD14_021DC424 + add r5, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r5, r0 + beq _021DB170 + mov r1, #1 + b _021DB172 +_021DB170: + mov r1, #0 +_021DB172: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_021DB184: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DB1B0 + mov r0, #1 + add sp, #8 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} +_021DB19C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DB1B0 + add r0, r4, #0 + bl MOD14_021D7620 +_021DB1B0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB1B4: .word 0x000005E4 +_021DB1B8: .word MOD14_021DAC80 +_021DB1BC: .word 0x021C48B8 +_021DB1C0: .word 0x000005DD +_021DB1C4: .word 0x000005DC + + thumb_func_start MOD14_021DB1C8 +MOD14_021DB1C8: ; 0x021DB1C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x62 + mov r1, #8 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #8 + ldr r0, [r4, r0] + bl FUN_02022144 + mov r0, #0x62 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #8 + beq _021DB1EA + mov r0, #1 + pop {r4, pc} +_021DB1EA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB1F0 +MOD14_021DB1F0: ; 0x021DB1F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x62 + add r4, r2, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #8 + bne _021DB21E + cmp r1, #0 + bne _021DB21E + add r0, r4, #0 + bl MOD14_021DC47C + add r1, r0, r5 + cmp r1, #8 + blo _021DB212 + sub r1, #8 +_021DB212: + add r0, r4, #0 + bl MOD14_021DC370 + mov r0, #0x62 + lsl r0, r0, #2 + str r5, [r4, r0] +_021DB21E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB220 +MOD14_021DB220: ; 0x021DB220 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + bl FUN_02022510 + mov r1, #0x12 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r2, [r4] + sub r0, r1, #4 + str r2, [r5, r0] + ldr r0, [r4] + bl FUN_0206BB1C + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4] + bl LoadPlayerDataAddress + mov r1, #0x69 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x8c + str r4, [r5, r1] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xf + mov r3, #9 + str r0, [r4, #8] + bl FUN_0200A86C + mov r2, #0x63 + lsl r2, r2, #2 + str r0, [r5, r2] + mov r0, #1 + mov r1, #0x1a + sub r2, #0x22 + mov r3, #9 + bl FUN_0200A86C + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xbe + mov r3, #9 + bl FUN_0200A86C + mov r2, #0x65 + lsl r2, r2, #2 + str r0, [r5, r2] + mov r0, #0 + mov r1, #0x1a + add r2, #0x94 + mov r3, #9 + bl FUN_0200A86C + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #9 + bl FUN_0200AA80 + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + bl FUN_020669BC + add r1, r0, #0 + mov r0, #9 + bl FUN_02016998 + mov r1, #0x1a + lsl r1, r1, #4 + str r0, [r5, r1] + sub r0, r1, #4 + ldr r0, [r5, r0] + cmp r0, #0 + bne _021DB2C8 + bl ErrorHandling +_021DB2C8: + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + str r0, [sp] + mov r0, #9 + mov r2, #0 + mov r3, #8 + bl FUN_02077A84 + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4, #4] + cmp r0, #4 + beq _021DB2FA + mov r0, #9 + str r0, [sp] + ldr r0, _021DB384 ; =0x021E622A + ldr r2, _021DB388 ; =MOD14_021DB9F4 + mov r1, #3 + add r3, r5, #0 + bl FUN_020220C4 + b _021DB30A +_021DB2FA: + mov r0, #9 + str r0, [sp] + ldr r0, _021DB38C ; =0x021E6236 + ldr r2, _021DB388 ; =MOD14_021DB9F4 + mov r1, #4 + add r3, r5, #0 + bl FUN_020220C4 +_021DB30A: + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #9 + str r0, [sp] + ldr r0, _021DB390 ; =0x021E6246 + ldr r2, _021DB394 ; =MOD14_021DB1F0 + mov r1, #7 + add r3, r5, #0 + bl FUN_020220C4 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #0 + sub r0, #0x60 + ldr r0, [r5, r0] + mov r2, #0 + str r0, [r5] + add r0, r1, #0 + sub r0, #0x5c + ldr r0, [r5, r0] + str r0, [r5, #4] + add r0, r1, #0 + sub r0, #0x70 + strh r2, [r5, r0] + sub r1, #0x6e + strh r2, [r5, r1] + add r0, r5, #0 + ldr r1, [r4, #4] + add r0, #0x48 + bl MOD14_021DB424 + add r0, r5, #0 + add r0, #0x4c + bl MOD14_021DB4C8 + mov r0, #0x12 + lsl r0, r0, #4 + add r1, r5, #0 + ldr r0, [r5, r0] + add r1, #0x40 + bl MOD14_021DB49C + add r0, r5, #0 + add r0, #0xa4 + bl MOD14_021DB524 + add r0, r5, #0 + bl MOD14_021DB430 + add r0, r5, #0 + add r0, #0x14 + bl MOD14_021DB470 + add r5, #0x9c + add r0, r5, #0 + bl MOD14_021DB574 + pop {r3, r4, r5, pc} + nop +_021DB384: .word 0x021E622A +_021DB388: .word MOD14_021DB9F4 +_021DB38C: .word 0x021E6236 +_021DB390: .word 0x021E6246 +_021DB394: .word MOD14_021DB1F0 + + thumb_func_start MOD14_021DB398 +MOD14_021DB398: ; 0x021DB398 + push {r4, lr} + add r4, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0202212C + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202212C + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021DB3BE + bl FUN_02016A18 +_021DB3BE: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200AB18 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02077AC4 + add r0, r4, #0 + add r0, #0x4c + bl MOD14_021DB500 + add r0, r4, #0 + add r0, #0x14 + bl MOD14_021DB490 + add r0, r4, #0 + add r0, #0x40 + bl MOD14_021DB4BC + add r0, r4, #0 + add r0, #0xa4 + bl MOD14_021DB558 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB424 +MOD14_021DB424: ; 0x021DB424 + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + strh r1, [r0, #2] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DB430 +MOD14_021DB430: ; 0x021DB430 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0 + add r4, r5, #0 + add r2, r1, #0 + add r4, #8 + bl MOD14_021DBA4C + mov r2, #0 + add r0, r5, #0 + strb r2, [r4, #8] + mov r1, #1 + strb r1, [r4, #9] + add r0, #0x48 + ldrb r0, [r0] + cmp r0, #0 + beq _021DB458 + cmp r0, #4 + beq _021DB45C + b _021DB462 +_021DB458: + strb r1, [r4, #4] + b _021DB464 +_021DB45C: + mov r0, #2 + strb r0, [r4, #4] + b _021DB464 +_021DB462: + strb r2, [r4, #4] +_021DB464: + mov r0, #1 + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB470 +MOD14_021DB470: ; 0x021DB470 + push {r4, lr} + add r4, r0, #0 + bl FUN_020690C8 + add r2, r0, #0 + mov r1, #0x1e + mov r0, #9 + mul r1, r2 + bl FUN_02016998 + str r0, [r4] + mov r0, #0 + strb r0, [r4, #8] + strb r0, [r4, #0xb] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB490 +MOD14_021DB490: ; 0x021DB490 + ldr r3, _021DB498 ; =0x02016A19 + ldr r0, [r0] + bx r3 + nop +_021DB498: .word 0x02016A19 + + thumb_func_start MOD14_021DB49C +MOD14_021DB49C: ; 0x021DB49C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206B330 + strb r0, [r4] + mov r0, #0x14 + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021DB580 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB4BC +MOD14_021DB4BC: ; 0x021DB4BC + ldr r3, _021DB4C4 ; =0x02021A21 + ldr r0, [r0, #4] + bx r3 + nop +_021DB4C4: .word 0x02021A21 + + thumb_func_start MOD14_021DB4C8 +MOD14_021DB4C8: ; 0x021DB4C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x14] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x18] + mov r0, #0x12 + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x1c] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x20] + mov r0, #0x10 + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x24] + pop {r4, pc} + + thumb_func_start MOD14_021DB500 +MOD14_021DB500: ; 0x021DB500 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_02021A20 + ldr r0, [r4, #0x18] + bl FUN_02021A20 + ldr r0, [r4, #0x1c] + bl FUN_02021A20 + ldr r0, [r4, #0x20] + bl FUN_02021A20 + ldr r0, [r4, #0x24] + bl FUN_02021A20 + pop {r4, pc} + + thumb_func_start MOD14_021DB524 +MOD14_021DB524: ; 0x021DB524 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + strb r4, [r6] + strb r4, [r6, #1] + str r4, [r6, #4] + add r5, r6, #0 + add r7, r4, #0 +_021DB534: + add r0, r6, r4 + strb r7, [r0, #2] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r5, #0x30] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r5, #0x34] + add r4, r4, #1 + add r5, #0x30 + cmp r4, #2 + blt _021DB534 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB558 +MOD14_021DB558: ; 0x021DB558 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021DB55E: + ldr r0, [r5, #0x30] + bl FUN_02021A20 + ldr r0, [r5, #0x34] + bl FUN_02021A20 + add r4, r4, #1 + add r5, #0x30 + cmp r4, #2 + blt _021DB55E + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB574 +MOD14_021DB574: ; 0x021DB574 + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #2] + strb r1, [r0, #1] + strh r1, [r0, #4] + bx lr + + thumb_func_start MOD14_021DB580 +MOD14_021DB580: ; 0x021DB580 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + bl FUN_0206B43C + strb r0, [r4, #1] + ldrb r1, [r4] + ldr r2, [r4, #4] + add r0, r5, #0 + bl FUN_0206B484 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB59C +MOD14_021DB59C: ; 0x021DB59C + push {r4, lr} + add r2, r0, #0 + add r4, r2, #0 + add r2, #0x40 + add r0, r1, #0 + ldrb r1, [r2] + add r4, #0x40 + bl FUN_0206B43C + strb r0, [r4, #1] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB5B4 +MOD14_021DB5B4: ; 0x021DB5B4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r4, #0 + tst r2, r1 + beq _021DB5D0 + add r0, r5, #0 + sub r1, #0x21 + add r2, r4, #0 + bl MOD14_021DB61C + add r4, r0, #0 + b _021DB60C +_021DB5D0: + mov r1, #0x10 + tst r1, r0 + beq _021DB5E4 + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + bl MOD14_021DB61C + add r4, r0, #0 + b _021DB60C +_021DB5E4: + mov r2, #0x40 + add r1, r0, #0 + tst r1, r2 + beq _021DB5FA + add r0, r5, #0 + add r1, r4, #0 + sub r2, #0x41 + bl MOD14_021DB61C + add r4, r0, #0 + b _021DB60C +_021DB5FA: + mov r1, #0x80 + tst r0, r1 + beq _021DB60C + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021DB61C + add r4, r0, #0 +_021DB60C: + cmp r4, #1 + bne _021DB616 + add r0, r5, #0 + bl MOD14_021DB934 +_021DB616: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB61C +MOD14_021DB61C: ; 0x021DB61C + push {r4, lr} + add r3, r0, #0 + add r3, #8 + ldrb r4, [r3, #4] + cmp r4, #4 + bhi _021DB66A + add r4, r4, r4 + add r4, pc + ldrh r4, [r4, #6] + lsl r4, r4, #0x10 + asr r4, r4, #0x10 + add pc, r4 +_021DB634: ; jump table + .short _021DB63E - _021DB634 - 2 ; case 0 + .short _021DB720 - _021DB634 - 2 ; case 1 + .short _021DB69E - _021DB634 - 2 ; case 2 + .short _021DB6F4 - _021DB634 - 2 ; case 3 + .short _021DB6C8 - _021DB634 - 2 ; case 4 +_021DB63E: + cmp r1, #0 + beq _021DB666 + mov r2, #5 + ldrsb r4, [r3, r2] + add r1, r4, r1 + strb r1, [r3, #5] + ldrsb r1, [r3, r2] + cmp r1, #0 + bge _021DB654 + add r1, r2, #0 + b _021DB65A +_021DB654: + cmp r1, #6 + blt _021DB65A + mov r1, #0 +_021DB65A: + mov r2, #6 + ldrsb r2, [r3, r2] + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB666: + cmp r2, #0 + bne _021DB66C +_021DB66A: + b _021DB78A +_021DB66C: + mov r1, #6 + ldrsb r1, [r3, r1] + add r2, r1, r2 + bpl _021DB67C + mov r1, #2 + mov r2, #0 + strb r1, [r3, #4] + b _021DB692 +_021DB67C: + cmp r2, #4 + ble _021DB692 + mov r1, #5 + ldrsb r1, [r3, r1] + mov r2, #4 + cmp r1, #5 + bne _021DB68E + add r1, r2, #0 + b _021DB690 +_021DB68E: + mov r1, #3 +_021DB690: + strb r1, [r3, #4] +_021DB692: + mov r1, #5 + ldrsb r1, [r3, r1] + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB69E: + cmp r2, #0 + ble _021DB6B2 + mov r2, #0 + strb r2, [r3, #4] + mov r1, #5 + ldrsb r1, [r3, r1] + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB6B2: + bge _021DB78A + mov r0, #5 + ldrsb r0, [r3, r0] + cmp r0, #5 + bne _021DB6C0 + mov r0, #4 + b _021DB6C2 +_021DB6C0: + mov r0, #3 +_021DB6C2: + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB6C8: + cmp r2, #0 + bge _021DB6DE + mov r1, #0 + strb r1, [r3, #4] + mov r1, #5 + ldrsb r1, [r3, r1] + mov r2, #4 + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB6DE: + ble _021DB6E8 + mov r0, #2 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB6E8: + cmp r1, #0 + beq _021DB78A + mov r0, #3 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB6F4: + cmp r2, #0 + bge _021DB70A + mov r1, #0 + strb r1, [r3, #4] + mov r1, #5 + ldrsb r1, [r3, r1] + mov r2, #4 + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB70A: + ble _021DB714 + mov r0, #2 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB714: + cmp r1, #0 + beq _021DB78A + mov r0, #4 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB720: + mov r4, #8 + ldrsb r0, [r3, r4] + cmp r2, #0 + bge _021DB742 + cmp r0, #6 + bne _021DB732 + mov r1, #5 + strb r1, [r3, #8] + b _021DB77E +_021DB732: + sub r1, r0, #2 + strb r1, [r3, #8] + ldrsb r1, [r3, r4] + cmp r1, #0 + bge _021DB77E + mov r1, #6 + strb r1, [r3, #8] + b _021DB77E +_021DB742: + ble _021DB75E + cmp r0, #6 + bne _021DB74E + mov r1, #0 + strb r1, [r3, #8] + b _021DB77E +_021DB74E: + add r1, r0, #2 + strb r1, [r3, #8] + ldrsb r1, [r3, r4] + cmp r1, #6 + blt _021DB77E + mov r1, #6 + strb r1, [r3, #8] + b _021DB77E +_021DB75E: + cmp r1, #0 + bge _021DB76E + mov r1, #1 + tst r1, r0 + beq _021DB77E + sub r1, r0, #1 + strb r1, [r3, #8] + b _021DB77E +_021DB76E: + ble _021DB77E + cmp r0, #6 + beq _021DB77E + mov r1, #1 + tst r1, r0 + bne _021DB77E + add r1, r0, #1 + strb r1, [r3, #8] +_021DB77E: + mov r1, #8 + ldrsb r1, [r3, r1] + cmp r0, r1 + beq _021DB78A + mov r0, #1 + pop {r4, pc} +_021DB78A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB790 +MOD14_021DB790: ; 0x021DB790 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r4, #0 + tst r2, r1 + beq _021DB7AC + add r0, r5, #0 + sub r1, #0x21 + add r2, r4, #0 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7AC: + mov r1, #0x10 + tst r1, r0 + beq _021DB7C0 + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7C0: + mov r2, #0x40 + add r1, r0, #0 + tst r1, r2 + beq _021DB7D6 + add r0, r5, #0 + add r1, r4, #0 + sub r2, #0x41 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7D6: + mov r2, #0x80 + add r1, r0, #0 + tst r1, r2 + beq _021DB7EC + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7EC: + lsl r1, r2, #2 + tst r1, r0 + beq _021DB7F6 + mov r4, #3 + b _021DB7FE +_021DB7F6: + add r2, #0x80 + tst r0, r2 + beq _021DB7FE + mov r4, #4 +_021DB7FE: + cmp r4, #1 + bne _021DB808 + add r0, r5, #0 + bl MOD14_021DB934 +_021DB808: + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB80C +MOD14_021DB80C: ; 0x021DB80C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r4, r7, #0 + add r4, #8 + ldrb r3, [r4, #4] + add r6, r7, #0 + add r6, #0x14 + cmp r3, #0 + bne _021DB8C6 + cmp r1, #0 + beq _021DB874 + mov r2, #5 + ldrsb r2, [r4, r2] + add r5, r2, r1 + bl MOD14_021DC3F4 + mov r1, #0xc + tst r0, r1 + beq _021DB858 + ldrb r0, [r6, #4] + ldrb r3, [r6, #6] + add r2, r5, #0 + add r1, r5, #0 + cmp r3, r0 + bls _021DB844 + sub r0, r3, r0 + sub r1, r5, r0 + b _021DB848 +_021DB844: + sub r0, r0, r3 + add r2, r5, r0 +_021DB848: + cmp r1, #0 + bge _021DB850 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_021DB850: + cmp r2, #6 + blt _021DB864 + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_021DB858: + cmp r5, #0 + blt _021DB860 + cmp r5, #6 + blt _021DB864 +_021DB860: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021DB864: + mov r2, #6 + ldrsb r2, [r4, r2] + add r0, r7, #0 + add r1, r5, #0 + bl MOD14_021DBA4C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB874: + cmp r2, #0 + beq _021DB8C6 + mov r1, #6 + ldrsb r1, [r4, r1] + add r5, r1, r2 + bl MOD14_021DC3F4 + mov r1, #0xc + tst r0, r1 + beq _021DB8AA + ldrb r0, [r6, #5] + ldrb r3, [r6, #7] + add r2, r5, #0 + add r1, r5, #0 + cmp r3, r0 + bls _021DB89A + sub r0, r3, r0 + sub r1, r5, r0 + b _021DB89E +_021DB89A: + sub r0, r0, r3 + add r2, r5, r0 +_021DB89E: + cmp r1, #0 + blt _021DB8A6 + cmp r2, #5 + blt _021DB8B6 +_021DB8A6: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021DB8AA: + cmp r5, #0 + blt _021DB8B2 + cmp r5, #5 + blt _021DB8B6 +_021DB8B2: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021DB8B6: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r7, #0 + add r2, r5, #0 + bl MOD14_021DBA4C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB8C6: + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB8D0 +MOD14_021DB8D0: ; 0x021DB8D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #8 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021DB8FA + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + strb r0, [r4, #8] + mov r0, #8 + ldrsb r0, [r4, r0] + cmp r0, #6 + blt _021DB8FE + mov r0, #5 + strb r0, [r4, #8] + b _021DB8FE +_021DB8FA: + mov r0, #0 + strb r0, [r4, #8] +_021DB8FE: + ldrb r0, [r4, #4] + strb r0, [r4, #9] + mov r0, #1 + strb r0, [r4, #4] + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB910 +MOD14_021DB910: ; 0x021DB910 + push {r4, lr} + add r4, r0, #0 + add r3, r4, #0 + add r3, #8 + mov r1, #0 + strb r1, [r3, #4] + mov r2, #9 + ldrsb r2, [r3, r2] + cmp r2, #0 + beq _021DB92A + add r2, r1, #0 + bl MOD14_021DBA4C +_021DB92A: + add r0, r4, #0 + bl MOD14_021DB934 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB934 +MOD14_021DB934: ; 0x021DB934 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #8 + mov r1, #0 + strb r1, [r4, #0xa] + ldrb r0, [r4, #4] + cmp r0, #4 + bhi _021DB994 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DB952: ; jump table + .short _021DB95C - _021DB952 - 2 ; case 0 + .short _021DB96C - _021DB952 - 2 ; case 1 + .short _021DB994 - _021DB952 - 2 ; case 2 + .short _021DB994 - _021DB952 - 2 ; case 3 + .short _021DB994 - _021DB952 - 2 ; case 4 +_021DB95C: + mov r2, #7 + ldrsb r2, [r4, r2] + ldr r0, [r5] + sub r1, r1, #1 + bl FUN_0206B5E4 + str r0, [r4] + b _021DB998 +_021DB96C: + mov r0, #8 + ldrsb r6, [r4, r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + cmp r6, r0 + bge _021DB98E + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_0206B9B0 + str r0, [r4] + b _021DB998 +_021DB98E: + mov r0, #0 + str r0, [r4] + b _021DB998 +_021DB994: + mov r0, #0 + str r0, [r4] +_021DB998: + ldr r0, [r4] + cmp r0, #0 + beq _021DB9C4 + mov r1, #0xab + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DB9C4 + mov r0, #1 + strb r0, [r4, #0xa] + add r0, r5, #0 + bl MOD14_021DC3F4 + mov r1, #6 + tst r0, r1 + bne _021DB9C4 + ldr r1, [r4] + add r0, r5, #0 + add r2, r5, #0 + bl MOD14_021DBE88 +_021DB9C4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB9C8 +MOD14_021DB9C8: ; 0x021DB9C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x61 + ldr r1, _021DB9F0 ; =0x0000FFFF + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #8 + ldr r0, [r4, r0] + bl FUN_02022144 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r1, [r4, r0] + ldr r0, _021DB9F0 ; =0x0000FFFF + cmp r1, r0 + beq _021DB9EC + mov r0, #1 + pop {r4, pc} +_021DB9EC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DB9F0: .word 0x0000FFFF + + thumb_func_start MOD14_021DB9F4 +MOD14_021DB9F4: ; 0x021DB9F4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + cmp r5, #0 + bne _021DBA0E + mov r0, #0x61 + lsl r0, r0, #2 + ldr r2, [r4, r0] + ldr r1, _021DBA40 ; =0x0000FFFF + cmp r2, r1 + bne _021DBA0E + str r6, [r4, r0] +_021DBA0E: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021DBA3C + cmp r6, #2 + bne _021DBA3C + cmp r5, #0 + beq _021DBA2A + cmp r5, #1 + beq _021DBA34 + cmp r5, #3 + beq _021DBA34 + pop {r4, r5, r6, pc} +_021DBA2A: + add r0, r4, #0 + mov r1, #1 + bl MOD14_021DC1A0 + pop {r4, r5, r6, pc} +_021DBA34: + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC1A0 +_021DBA3C: + pop {r4, r5, r6, pc} + nop +_021DBA40: .word 0x0000FFFF + + thumb_func_start MOD14_021DBA44 +MOD14_021DBA44: ; 0x021DBA44 + mov r2, #0x43 + lsl r2, r2, #2 + str r1, [r0, r2] + bx lr + + thumb_func_start MOD14_021DBA4C +MOD14_021DBA4C: ; 0x021DBA4C + add r0, #8 + mov r3, #6 + strb r1, [r0, #5] + mul r3, r2 + strb r2, [r0, #6] + add r1, r1, r3 + strb r1, [r0, #7] + bx lr + + thumb_func_start MOD14_021DBA5C +MOD14_021DBA5C: ; 0x021DBA5C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + add r4, r6, #0 + add r5, r6, #0 + add r0, r6, #0 + add r4, #0x14 + add r5, #8 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBA98 + bl FUN_020690C8 + add r2, r0, #0 + ldr r0, [r5] + ldr r1, [r4] + bl MIi_CpuCopy32 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r5, r2] + ldr r0, [r7, r0] + mvn r1, r1 + bl FUN_0206B2FC + mov r0, #0 + b _021DBAB6 +_021DBA98: + bl FUN_020690C4 + add r2, r0, #0 + ldr r0, [r5] + ldr r1, [r4] + bl MIi_CpuCopy32 + mov r0, #0x49 + mov r1, #8 + lsl r0, r0, #2 + ldrsb r1, [r5, r1] + ldr r0, [r7, r0] + bl FUN_0206B938 + mov r0, #1 +_021DBAB6: + strb r0, [r4, #0xb] + ldr r1, [r4] + add r0, r6, #0 + bl MOD14_021DC1A8 + mov r0, #5 + ldrsb r0, [r5, r0] + strb r0, [r4, #6] + ldrb r0, [r4, #6] + strb r0, [r4, #4] + mov r0, #6 + ldrsb r0, [r5, r0] + strb r0, [r4, #7] + ldrb r0, [r4, #7] + strb r0, [r4, #5] + mov r0, #2 + strb r0, [r6, #0x13] + mov r0, #0 + strb r0, [r6, #0x12] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBAE0 +MOD14_021DBAE0: ; 0x021DBAE0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r6, r1, #0 + add r7, r0, #0 + add r6, #0x14 + mov r0, #1 + strb r0, [r6, #0xa] + add r0, r1, #0 + str r1, [sp, #4] + bl MOD14_021DC3E0 + str r0, [sp, #0x14] + bl FUN_020690C8 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + add r1, sp, #0x30 + ldr r5, [r0, #0x14] + add r0, sp, #0x24 + str r0, [sp] + ldr r0, [sp, #4] + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD14_021DC4A4 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + str r0, [sp, #0x18] + cmp r0, r1 + bhi _021DBBA6 + mov r1, #6 + mul r1, r0 + str r1, [sp, #8] +_021DBB26: + ldr r1, [sp, #0x30] + ldr r0, [sp, #8] + str r1, [sp, #0x1c] + add r4, r1, r0 + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1c] + cmp r0, r1 + bhi _021DBB94 +_021DBB36: + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r7, r0] + mvn r1, r1 + add r2, r4, #0 + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + str r0, [sp, #0x20] + bl FUN_020672BC + cmp r0, #0 + beq _021DBB86 + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x10] + add r1, r5, #0 + bl MIi_CpuCopy32 + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r7, r0] + mvn r1, r1 + add r2, r4, #0 + bl FUN_0206B2FC + ldr r0, [sp, #0x10] + add r5, r5, r0 + ldr r0, [sp, #0xc] + add r1, r6, r0 + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + strb r4, [r1, #0xc] + cmp r4, r0 + bne _021DBB86 + mov r0, #0 + strb r0, [r6, #0xa] +_021DBB86: + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x2c] + add r0, r0, #1 + add r4, r4, #1 + str r0, [sp, #0x1c] + cmp r0, r1 + bls _021DBB36 +_021DBB94: + ldr r0, [sp, #8] + ldr r1, [sp, #0x24] + add r0, r0, #6 + str r0, [sp, #8] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, r1 + bls _021DBB26 +_021DBBA6: + ldr r0, [sp, #0xc] + strb r0, [r6, #8] + ldr r1, [sp, #0x28] + mov r0, #6 + ldr r2, [sp, #0x30] + mul r0, r1 + add r0, r2, r0 + strb r0, [r6, #9] + ldr r0, [sp, #4] + ldrb r0, [r0, #0x12] + cmp r0, #0 + beq _021DBBC2 + mov r1, #4 + b _021DBBC4 +_021DBBC2: + mov r1, #8 +_021DBBC4: + ldr r0, [sp, #4] + strb r1, [r0, #0x13] + mov r1, #0 + strb r1, [r0, #0x12] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DBBD0 +MOD14_021DBBD0: ; 0x021DBBD0 + add r2, r1, #0 + add r1, #8 + mov r0, #5 + ldrsb r0, [r1, r0] + add r2, #0x14 + strb r0, [r2, #6] + ldrb r0, [r2, #6] + strb r0, [r2, #4] + mov r0, #6 + ldrsb r0, [r1, r0] + strb r0, [r2, #7] + ldrb r0, [r2, #7] + strb r0, [r2, #5] + bx lr + + thumb_func_start MOD14_021DBBEC +MOD14_021DBBEC: ; 0x021DBBEC + add r2, r1, #0 + add r1, #8 + mov r0, #5 + ldrsb r0, [r1, r0] + add r2, #0x14 + strb r0, [r2, #6] + mov r0, #6 + ldrsb r0, [r1, r0] + strb r0, [r2, #7] + bx lr + + thumb_func_start MOD14_021DBC00 +MOD14_021DBC00: ; 0x021DBC00 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + add r4, r7, #0 + add r6, r7, #0 + add r0, r7, #0 + add r4, #0x14 + add r6, #8 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBC42 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r6, r2] + ldr r0, [r5, r0] + ldr r3, [r4] + mvn r1, r1 + bl FUN_0206B2B0 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r6, r2] + ldr r0, [r5, r0] + mvn r1, r1 + bl FUN_0206B5E4 + add r1, r0, #0 + b _021DBC8A +_021DBC42: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _021DBC56 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4] + bl FUN_0206B900 + b _021DBC70 +_021DBC56: + mov r1, #0x1a + lsl r1, r1, #4 + ldr r0, [r4] + ldr r1, [r5, r1] + bl FUN_02069A64 + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0x7c + ldr r1, [r5, r1] + bl FUN_0206B900 +_021DBC70: + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + add r1, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + sub r1, r1, #1 + bl FUN_0206B9B0 + add r1, r0, #0 +_021DBC8A: + add r0, r7, #0 + bl MOD14_021DC1A8 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #1 + strb r0, [r7, #0x13] + strb r0, [r7, #0x12] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBCA0 +MOD14_021DBCA0: ; 0x021DBCA0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + add r7, r0, #0 + add r6, #0x14 + add r0, r1, #0 + str r1, [sp] + bl MOD14_021DC4F8 + str r0, [sp, #8] + ldrb r0, [r6, #9] + str r0, [sp, #0xc] + bl FUN_020690C8 + str r0, [sp, #4] + ldr r0, [sp] + mov r5, #0 + ldr r4, [r0, #0x14] + ldrb r0, [r6, #8] + cmp r0, #0 + ble _021DBCF4 +_021DBCCA: + add r3, r6, r5 + mov r2, #0xc + ldrsb r3, [r3, r2] + ldr r2, [sp, #0xc] + mov r0, #0x12 + lsl r0, r0, #4 + sub r3, r3, r2 + ldr r2, [sp, #8] + mov r1, #0 + add r2, r2, r3 + ldr r0, [r7, r0] + mvn r1, r1 + add r3, r4, #0 + bl FUN_0206B2B0 + ldr r0, [sp, #4] + add r5, r5, #1 + add r4, r4, r0 + ldrb r0, [r6, #8] + cmp r5, r0 + blt _021DBCCA +_021DBCF4: + ldr r0, [sp] + bl MOD14_021DC3E0 + add r2, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r7, r0] + mvn r1, r1 + bl FUN_0206B5E4 + add r1, r0, #0 + ldr r0, [sp] + bl MOD14_021DC1A8 + add r0, r7, #0 + bl MOD14_021DB934 + mov r1, #0 + ldr r0, [sp] + strb r1, [r6, #8] + ldrb r0, [r0, #0x13] + cmp r0, #4 + bne _021DBD26 + mov r1, #1 +_021DBD26: + ldr r0, [sp] + strb r1, [r0, #0x12] + mov r1, #1 + strb r1, [r0, #0x13] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBD34 +MOD14_021DBD34: ; 0x021DBD34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + str r1, [sp] + add r5, r0, #0 + add r4, #0x14 + bl FUN_020690C4 + add r6, r0, #0 + ldr r0, [sp] + add r2, r6, #0 + ldr r7, [r0, #0x14] + str r0, [sp, #4] + add r0, #8 + str r0, [sp, #4] + add r0, r7, #0 + add r1, r7, r6 + bl MIi_CpuCopy32 + ldr r0, [sp] + ldr r1, [sp] + ldr r0, [r0, #8] + ldr r1, [r1, #0x14] + add r2, r6, #0 + bl MIi_CpuCopy32 + ldr r0, [sp] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBD8E + ldr r2, [sp, #4] + mov r0, #0x12 + mov r3, #7 + lsl r0, r0, #4 + ldrsb r2, [r2, r3] + mov r1, #0 + ldr r0, [r5, r0] + mvn r1, r1 + add r3, r7, r6 + bl FUN_0206B2B0 + mov r0, #0 + strb r0, [r4, #0xb] + b _021DBDC8 +_021DBD8E: + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _021DBDA2 + mov r1, #0x1a + lsl r1, r1, #4 + ldr r1, [r5, r1] + add r0, r7, r6 + bl FUN_02069A64 + b _021DBDB0 +_021DBDA2: + mov r1, #0x1a + lsl r1, r1, #4 + ldr r1, [r5, r1] + add r0, r7, r6 + add r2, r6, #0 + bl MIi_CpuCopy32 +_021DBDB0: + mov r3, #0x49 + lsl r3, r3, #2 + ldr r0, [r5, r3] + ldr r1, [sp, #4] + mov r2, #8 + ldrsb r1, [r1, r2] + add r3, #0x7c + ldr r2, [r5, r3] + bl FUN_0206B9DC + mov r0, #1 + strb r0, [r4, #0xb] +_021DBDC8: + ldr r0, [sp] + ldr r1, [r4] + add r2, r5, #0 + bl MOD14_021DBE88 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBDD8 +MOD14_021DBDD8: ; 0x021DBDD8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, [r4, #0x14] + bl FUN_0206B244 + cmp r0, #0 + beq _021DBDFA + mov r0, #1 + strb r0, [r4, #0x13] + add r0, r4, #0 + bl MOD14_021DB934 + mov r0, #1 + pop {r4, pc} +_021DBDFA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBE00 +MOD14_021DBE00: ; 0x021DBE00 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + add r4, r5, #0 + ldr r0, [r5, r0] + ldr r2, [r5, #8] + add r4, #8 + bl FUN_0206B244 + cmp r0, #0 + beq _021DBE30 + mov r0, #0x49 + mov r1, #8 + lsl r0, r0, #2 + ldrsb r1, [r4, r1] + ldr r0, [r5, r0] + bl FUN_0206B938 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DBE30: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DBE34 +MOD14_021DBE34: ; 0x021DBE34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_020669A0 + mov r0, #1 + strb r0, [r4, #0x13] + add r0, r4, #0 + bl MOD14_021DB934 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBE4C +MOD14_021DBE4C: ; 0x021DBE4C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #8 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBE70 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r4, r2] + ldr r0, [r5, r0] + mvn r1, r1 + bl FUN_0206B2FC + b _021DBE7E +_021DBE70: + mov r0, #0x49 + mov r1, #8 + lsl r0, r0, #2 + ldrsb r1, [r4, r1] + ldr r0, [r5, r0] + bl FUN_0206B938 +_021DBE7E: + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBE88 +MOD14_021DBE88: ; 0x021DBE88 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD14_021DBEAC + add r0, r5, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021DBEA8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD14_021DBFF4 +_021DBEA8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBEAC +MOD14_021DBEAC: ; 0x021DBEAC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r4, r7, #0 + add r0, r5, #0 + add r6, r2, #0 + add r4, #0x4c + bl FUN_02066A6C + str r0, [sp] + str r5, [r7, #0x4c] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #4] + add r0, r5, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #6] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0206BB28 + ldrh r1, [r4, #4] + bl FUN_0206BB48 + strh r0, [r4, #8] + add r0, r5, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xf] + ldrh r0, [r4, #4] + mov r1, #9 + bl FUN_0206851C + add r7, r0, #0 + add r0, r5, #0 + mov r1, #8 + mov r2, #0 + bl FUN_020672BC + add r2, r0, #0 + ldrh r1, [r4, #4] + add r0, r7, #0 + bl FUN_02068824 + strb r0, [r4, #0xa] + add r0, r5, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xb] + add r0, r5, #0 + mov r1, #0xb0 + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #0xb1 + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021DBF68 + add r0, r5, #0 + mov r1, #0xaf + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DBF68 + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + bl FUN_020672BC + add r2, r0, #0 + ldrh r1, [r4, #4] + add r0, r7, #0 + bl FUN_02068A44 + strb r0, [r4, #0xe] + b _021DBF6C +_021DBF68: + mov r0, #0xff + strb r0, [r4, #0xe] +_021DBF6C: + ldr r2, [r4, #0x14] + add r0, r5, #0 + mov r1, #0x76 + bl FUN_020672BC + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021DBF8C + mov r0, #0x19 + lsl r0, r0, #4 + ldrh r1, [r4, #4] + ldr r0, [r6, r0] + ldr r2, [r4, #0x18] + bl FUN_0200A8E0 + b _021DBF9A +_021DBF8C: + ldr r0, [r4, #0x18] + ldr r1, [r4, #0x14] + bl FUN_02021A74 + ldr r0, [r4, #0x14] + bl FUN_02021A4C +_021DBF9A: + ldrh r1, [r4, #6] + cmp r1, #0 + beq _021DBFAA + ldr r0, [r4, #0x1c] + mov r2, #9 + bl FUN_0206E768 + b _021DBFB8 +_021DBFAA: + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200A8E0 +_021DBFB8: + add r0, r5, #0 + bl FUN_0206885C + add r1, r0, #0 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x20] + bl FUN_0200A8E0 + add r0, r5, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020672BC + add r1, r0, #0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x24] + bl FUN_0200A8E0 + add r0, r7, #0 + bl FUN_02068640 + ldr r1, [sp] + add r0, r5, #0 + bl FUN_02066A94 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DBFF4 +MOD14_021DBFF4: ; 0x021DBFF4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0xa4 + add r5, r2, #0 + ldrb r2, [r0] + str r1, [sp] + mov r0, #0x30 + add r6, r7, #0 + add r1, r7, #0 + mul r0, r2 + add r1, #0xac + ldr r2, [sp] + add r6, #0x4c + add r4, r1, r0 + str r2, [r1, r0] + ldrh r0, [r6, #4] + strh r0, [r4, #4] + ldrb r0, [r6, #0xf] + strb r0, [r4, #6] + ldrb r0, [r6, #0xa] + strh r0, [r4, #8] + ldrb r0, [r4, #6] + cmp r0, #0 + ldr r0, [r4, #0x28] + beq _021DC02E + ldr r1, [r6, #0x18] + bl FUN_02021A74 + b _021DC034 +_021DC02E: + ldr r1, [r6, #0x14] + bl FUN_02021A74 +_021DC034: + ldr r0, [r4, #0x2c] + ldr r1, [r6, #0x20] + bl FUN_02021A74 + mov r1, #0x1a + lsl r1, r1, #4 + ldr r0, [sp] + ldr r1, [r5, r1] + bl FUN_02069A64 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_020669D4 + add r6, r0, #0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xa] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa4 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xc] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xe] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa7 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x10] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa8 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x12] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x14] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x16] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x18] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1a] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1c] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1e] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x36 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x20] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x37 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x22] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x38 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x24] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x39 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x26] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + strb r0, [r4, #7] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_02066A20 + add r0, r7, #0 + add r0, #0xa4 + ldrb r0, [r0] + mov r1, #1 + add r0, r7, r0 + add r0, #0xa6 + strb r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DC170 +MOD14_021DC170: ; 0x021DC170 + add r1, r0, #0 + add r1, #0xa4 + ldrb r2, [r1] + mov r1, #1 + add r0, #0xa4 + eor r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021DC180 +MOD14_021DC180: ; 0x021DC180 + add r1, r0, #0 + add r1, #0xa5 + ldrb r1, [r1] + add r2, r1, #1 + add r1, r0, #0 + add r1, #0xa5 + strb r2, [r1] + add r1, r0, #0 + add r1, #0xa5 + ldrb r1, [r1] + cmp r1, #3 + blo _021DC19E + mov r1, #0 + add r0, #0xa5 + strb r1, [r0] +_021DC19E: + bx lr + + thumb_func_start MOD14_021DC1A0 +MOD14_021DC1A0: ; 0x021DC1A0 + add r0, #0xa8 + str r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC1A8 +MOD14_021DC1A8: ; 0x021DC1A8 + str r1, [r0, #0x4c] + bx lr + + thumb_func_start MOD14_021DC1AC +MOD14_021DC1AC: ; 0x021DC1AC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r0, #0x96 + ldrb r1, [r0] + add r2, r4, #0 + add r0, sp, #0 + add r2, #0x4c + strb r1, [r0] + strb r1, [r2, #0xb] + ldr r0, [r4, #0x4c] + mov r1, #0xb + add r2, sp, #0 + bl FUN_02067960 + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC1E2 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DC1E2 + bl FUN_02022830 +_021DC1E2: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DC1E8 +MOD14_021DC1E8: ; 0x021DC1E8 + push {r0, r1, r2, r3} + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r0, sp, #0x18 + add r4, r5, #0 + ldrh r1, [r0, #4] + add r4, #0x4c + add r6, r2, #0 + strh r1, [r4, #6] + cmp r1, #0 + beq _021DC20A + ldr r0, [r4, #0x1c] + mov r2, #9 + bl FUN_0206E768 + b _021DC218 +_021DC20A: + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200A8E0 +_021DC218: + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC24A + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DC24A + add r0, r5, #0 + bl MOD14_021DC3E0 + add r2, r0, #0 + add r0, sp, #0x1c + str r0, [sp] + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r6, r0] + mvn r1, r1 + mov r3, #6 + bl FUN_0206B598 + b _021DC254 +_021DC24A: + ldr r0, [r4] + mov r1, #6 + add r2, sp, #0x1c + bl FUN_02067960 +_021DC254: + ldr r0, [r4] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + ldr r1, _021DC274 ; =0x000001ED + cmp r0, r1 + bne _021DC26A + ldr r0, [r4] + bl FUN_02069ECC +_021DC26A: + add sp, #4 + pop {r3, r4, r5, r6} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 +_021DC274: .word 0x000001ED + + thumb_func_start MOD14_021DC278 +MOD14_021DC278: ; 0x021DC278 + add r2, r0, #0 + add r2, #0x40 + ldrb r2, [r2] + add r1, r0, #0 + add r1, #0x40 + add r3, r2, #1 + add r2, r0, #0 + add r2, #0x40 + strb r3, [r2] + add r2, r0, #0 + add r2, #0x40 + ldrb r2, [r2] + cmp r2, #0x12 + blo _021DC298 + mov r2, #0 + strb r2, [r1] +_021DC298: + ldr r3, _021DC2A0 ; =MOD14_021DB580 + ldr r0, [r0] + bx r3 + nop +_021DC2A0: .word MOD14_021DB580 + + thumb_func_start MOD14_021DC2A4 +MOD14_021DC2A4: ; 0x021DC2A4 + add r2, r0, #0 + add r2, #0x40 + ldrb r2, [r2] + add r1, r0, #0 + add r1, #0x40 + cmp r2, #0 + beq _021DC2B6 + sub r2, r2, #1 + b _021DC2B8 +_021DC2B6: + mov r2, #0x11 +_021DC2B8: + ldr r3, _021DC2C0 ; =MOD14_021DB580 + strb r2, [r1] + ldr r0, [r0] + bx r3 + .align 2, 0 +_021DC2C0: .word MOD14_021DB580 + + thumb_func_start MOD14_021DC2C4 +MOD14_021DC2C4: ; 0x021DC2C4 + add r3, r0, #0 + add r2, r0, #0 + add r2, #0x40 + strb r1, [r2] + add r3, #0x40 + add r1, r3, #0 + ldr r3, _021DC2D8 ; =MOD14_021DB580 + ldr r0, [r0] + bx r3 + nop +_021DC2D8: .word MOD14_021DB580 + + thumb_func_start MOD14_021DC2DC +MOD14_021DC2DC: ; 0x021DC2DC + add r0, #0x98 + str r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC2E4 +MOD14_021DC2E4: ; 0x021DC2E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r2, r5, #0 + add r2, #0x4c + add r4, r1, #0 + ldrh r1, [r2, #6] + ldr r0, _021DC30C ; =0x00000112 + strh r1, [r5, r0] + add r0, #0x7a + ldr r0, [r4, r0] + ldr r2, [r2, #0x1c] + mov r1, #0x14 + bl FUN_0200A8E0 + add r0, r5, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD14_021DC1E8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DC30C: .word 0x00000112 + + thumb_func_start MOD14_021DC310 +MOD14_021DC310: ; 0x021DC310 + ldr r1, _021DC318 ; =0x00000112 + mov r2, #0 + strh r2, [r0, r1] + bx lr + .align 2, 0 +_021DC318: .word 0x00000112 + + thumb_func_start MOD14_021DC31C +MOD14_021DC31C: ; 0x021DC31C + push {r4, lr} + ldr r3, _021DC330 ; =0x00000112 + add r2, r1, #0 + ldrh r1, [r0, r3] + mov r4, #0 + strh r4, [r0, r3] + bl MOD14_021DC1E8 + pop {r4, pc} + nop +_021DC330: .word 0x00000112 + + thumb_func_start MOD14_021DC334 +MOD14_021DC334: ; 0x021DC334 + push {r4, lr} + add r3, r0, #0 + add r3, #0x52 + ldr r4, _021DC34C ; =0x00000112 + add r2, r1, #0 + ldrh r1, [r0, r4] + ldrh r3, [r3] + strh r3, [r0, r4] + bl MOD14_021DC1E8 + pop {r4, pc} + nop +_021DC34C: .word 0x00000112 + + thumb_func_start MOD14_021DC350 +MOD14_021DC350: ; 0x021DC350 + add r0, #0x9c + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC358 +MOD14_021DC358: ; 0x021DC358 + add r0, #0x9e + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC360 +MOD14_021DC360: ; 0x021DC360 + add r0, #0x9d + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC368 +MOD14_021DC368: ; 0x021DC368 + add r0, #0xa0 + strh r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC370 +MOD14_021DC370: ; 0x021DC370 + cmp r1, #0 + bne _021DC37C + mov r1, #0 + add r0, #0x4a + strh r1, [r0] + bx lr +_021DC37C: + add r2, r0, #0 + add r2, #0x4a + ldrh r3, [r2] + mov r2, #1 + sub r1, r1, #1 + lsl r2, r1 + add r1, r3, #0 + eor r1, r2 + add r0, #0x4a + strh r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC394 +MOD14_021DC394: ; 0x021DC394 + add r1, r0, #0 + add r1, #0x49 + ldrb r2, [r1] + mov r1, #1 + add r0, #0x49 + eor r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021DC3A4 +MOD14_021DC3A4: ; 0x021DC3A4 + mov r1, #0x63 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DC3AC +MOD14_021DC3AC: ; 0x021DC3AC + mov r1, #0x67 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DC3B4 +MOD14_021DC3B4: ; 0x021DC3B4 + mov r1, #0x69 + lsl r1, r1, #2 + ldr r3, _021DC3C0 ; =0x02025085 + ldr r0, [r0, r1] + bx r3 + nop +_021DC3C0: .word 0x02025085 + + thumb_func_start MOD14_021DC3C4 +MOD14_021DC3C4: ; 0x021DC3C4 + add r0, #0x48 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3CC +MOD14_021DC3CC: ; 0x021DC3CC + ldrb r0, [r0, #0xc] + bx lr + + thumb_func_start MOD14_021DC3D0 +MOD14_021DC3D0: ; 0x021DC3D0 + mov r1, #0xd + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3D8 +MOD14_021DC3D8: ; 0x021DC3D8 + mov r1, #0xe + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3E0 +MOD14_021DC3E0: ; 0x021DC3E0 + mov r1, #0xf + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3E8 +MOD14_021DC3E8: ; 0x021DC3E8 + mov r1, #0x10 + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3F0 +MOD14_021DC3F0: ; 0x021DC3F0 + ldrb r0, [r0, #0x12] + bx lr + + thumb_func_start MOD14_021DC3F4 +MOD14_021DC3F4: ; 0x021DC3F4 + ldrb r0, [r0, #0x13] + bx lr + + thumb_func_start MOD14_021DC3F8 +MOD14_021DC3F8: ; 0x021DC3F8 + ldrb r1, [r0, #0x13] + cmp r1, #0 + beq _021DC402 + ldrb r0, [r0, #0x1f] + bx lr +_021DC402: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC408 +MOD14_021DC408: ; 0x021DC408 + ldrb r1, [r0, #0x13] + cmp r1, #2 + beq _021DC412 + cmp r1, #4 + bne _021DC416 +_021DC412: + mov r0, #1 + bx lr +_021DC416: + ldrb r0, [r0, #0x12] + cmp r0, #0 + beq _021DC420 + mov r0, #1 + bx lr +_021DC420: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021DC424 +MOD14_021DC424: ; 0x021DC424 + add r0, #0x40 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC42C +MOD14_021DC42C: ; 0x021DC42C + add r0, #0x4c + bx lr + + thumb_func_start MOD14_021DC430 +MOD14_021DC430: ; 0x021DC430 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC408 + cmp r0, #0 + beq _021DC442 + add r4, #0x52 + ldrh r0, [r4] + pop {r4, pc} +_021DC442: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DC448 +MOD14_021DC448: ; 0x021DC448 + add r0, #0x40 + bx lr + + thumb_func_start MOD14_021DC44C +MOD14_021DC44C: ; 0x021DC44C + ldr r0, [r0] + bx lr + + thumb_func_start MOD14_021DC450 +MOD14_021DC450: ; 0x021DC450 + mov r1, #0x43 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DC458 +MOD14_021DC458: ; 0x021DC458 + ldr r0, [r0, #0x4c] + bx lr + + thumb_func_start MOD14_021DC45C +MOD14_021DC45C: ; 0x021DC45C + add r0, #0x57 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC464 +MOD14_021DC464: ; 0x021DC464 + add r0, #0x98 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC46C +MOD14_021DC46C: ; 0x021DC46C + mov r1, #0xa0 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC474 +MOD14_021DC474: ; 0x021DC474 + add r0, #0x9e + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC47C +MOD14_021DC47C: ; 0x021DC47C + add r0, #0x9d + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC484 +MOD14_021DC484: ; 0x021DC484 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021DC496 + add r4, #0x4a + ldrh r0, [r4] + pop {r4, pc} +_021DC496: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DC49C +MOD14_021DC49C: ; 0x021DC49C + add r0, #0x49 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC4A4 +MOD14_021DC4A4: ; 0x021DC4A4 + push {r3, r4, r5, r6} + add r0, #0x14 + ldrb r6, [r0, #6] + ldrb r5, [r0, #4] + ldr r4, [sp, #0x10] + cmp r5, r6 + bhi _021DC4B8 + str r5, [r1] + ldrb r1, [r0, #6] + b _021DC4BC +_021DC4B8: + str r6, [r1] + ldrb r1, [r0, #4] +_021DC4BC: + str r1, [r2] + ldrb r2, [r0, #7] + ldrb r1, [r0, #5] + cmp r1, r2 + bhi _021DC4D0 + str r1, [r3] + ldrb r0, [r0, #7] + str r0, [r4] + pop {r3, r4, r5, r6} + bx lr +_021DC4D0: + str r2, [r3] + ldrb r0, [r0, #5] + str r0, [r4] + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC4DC +MOD14_021DC4DC: ; 0x021DC4DC + add r0, #0x14 + ldrb r2, [r0, #4] + ldrb r1, [r0, #6] + cmp r2, r1 + bne _021DC4F2 + ldrb r1, [r0, #5] + ldrb r0, [r0, #7] + cmp r1, r0 + bne _021DC4F2 + mov r0, #1 + bx lr +_021DC4F2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC4F8 +MOD14_021DC4F8: ; 0x021DC4F8 + push {r3, r4} + add r1, r0, #0 + add r1, #0x14 + mov r2, #0xd + mov r3, #0xe + ldrsb r2, [r0, r2] + ldrsb r0, [r0, r3] + ldrb r4, [r1, #4] + ldrb r3, [r1, #6] + cmp r3, r4 + bls _021DC512 + sub r3, r3, r4 + sub r2, r2, r3 +_021DC512: + ldrb r3, [r1, #5] + ldrb r1, [r1, #7] + cmp r1, r3 + bls _021DC51E + sub r1, r1, r3 + sub r0, r0, r1 +_021DC51E: + mov r1, #6 + mul r1, r0 + add r0, r2, r1 + pop {r3, r4} + bx lr + + thumb_func_start MOD14_021DC528 +MOD14_021DC528: ; 0x021DC528 + add r0, #0x14 + add r2, r0, r1 + mov r1, #0xc + ldrsb r1, [r2, r1] + ldrb r0, [r0, #9] + sub r0, r1, r0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC538 +MOD14_021DC538: ; 0x021DC538 + ldr r1, _021DC540 ; =0x00000112 + ldrh r0, [r0, r1] + bx lr + nop +_021DC540: .word 0x00000112 + + thumb_func_start MOD14_021DC544 +MOD14_021DC544: ; 0x021DC544 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC538 + cmp r0, #0 + bne _021DC556 + add r0, r4, #0 + bl MOD14_021DC430 +_021DC556: + pop {r4, pc} + + thumb_func_start MOD14_021DC558 +MOD14_021DC558: ; 0x021DC558 + add r0, #0xa4 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC560 +MOD14_021DC560: ; 0x021DC560 + add r0, #0xa5 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC568 +MOD14_021DC568: ; 0x021DC568 + mov r2, #0x30 + add r0, #0xac + mul r2, r1 + add r0, r0, r2 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC574 +MOD14_021DC574: ; 0x021DC574 + add r0, r0, r1 + add r0, #0xa6 + ldrb r0, [r0] + bx lr + + thumb_func_start MOD14_021DC57C +MOD14_021DC57C: ; 0x021DC57C + add r0, #0xa8 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC584 +MOD14_021DC584: ; 0x021DC584 + add r0, #0x5b + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC58C +MOD14_021DC58C: ; 0x021DC58C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DC5B2 + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC5C4 + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020672BC + pop {r4, r5, r6, pc} +_021DC5B2: + ldrb r0, [r5, #0x1f] + cmp r0, #0 + bne _021DC5C4 + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020672BC + pop {r4, r5, r6, pc} +_021DC5C4: + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020671BC + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DC5D0 +MOD14_021DC5D0: ; 0x021DC5D0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC5EC + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020672BC + pop {r4, r5, r6, pc} +_021DC5EC: + ldr r0, [r5, #8] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020671BC + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DC5F8 +MOD14_021DC5F8: ; 0x021DC5F8 + push {r3, r4, r5, r6} + ldr r4, _021DC660 ; =MOD14_021DC6C0 + add r6, r0, #0 + str r4, [r0, #0x30] + mov r4, #0 + str r4, [r0, #0x1c] + str r1, [r0, #0xc] + str r2, [r0, #0x10] + str r1, [r0, #0x14] + str r2, [r0, #0x18] + str r1, [r0, #4] + add r4, r0, #0 + str r2, [r0, #8] + lsl r2, r2, #0x18 + mov r5, #0xfe + add r4, #0x28 + strb r5, [r4] + lsl r4, r1, #0x18 + lsr r4, r4, #0x18 + add r6, #0x29 + strb r4, [r6] + add r6, r0, #0 + lsr r2, r2, #0x18 + add r6, #0x2a + strb r2, [r6] + add r6, r0, #0 + add r6, #0x2b + strb r3, [r6] + add r3, r0, #0 + add r3, #0x2c + strb r5, [r3] + add r3, r0, #0 + add r3, #0x2d + strb r4, [r3] + add r3, r0, #0 + add r3, #0x2e + strb r2, [r3] + add r2, r0, #0 + add r2, #0x2f + ldr r3, [sp, #0x10] + cmp r1, #0x80 + strb r3, [r2] + bge _021DC656 + mov r1, #1 + str r1, [r0, #0x24] + pop {r3, r4, r5, r6} + bx lr +_021DC656: + sub r5, #0xff + str r5, [r0, #0x24] + pop {r3, r4, r5, r6} + bx lr + nop +_021DC660: .word MOD14_021DC6C0 + + thumb_func_start MOD14_021DC664 +MOD14_021DC664: ; 0x021DC664 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r0, #0x2c + bl FUN_02020A40 + cmp r0, #1 + bne _021DC6A4 + add r0, r5, #0 + add r0, #0x28 + bl FUN_02020A40 + cmp r0, #0 + bne _021DC6A4 + ldr r0, [r5, #0x1c] + mov r4, #1 + cmp r0, #0 + bne _021DC68C + add r6, r4, #0 + b _021DC68E +_021DC68C: + mov r6, #0 +_021DC68E: + add r0, sp, #4 + add r1, sp, #0 + bl FUN_02020AB0 + cmp r0, #0 + beq _021DC6A8 + ldr r0, [sp, #4] + str r0, [r5, #0x14] + ldr r0, [sp] + str r0, [r5, #0x18] + b _021DC6A8 +_021DC6A4: + mov r4, #0 + add r6, r4, #0 +_021DC6A8: + str r4, [r5, #0x1c] + ldr r3, [r5, #0x30] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + blx r3 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DC6B8 +MOD14_021DC6B8: ; 0x021DC6B8 + mov r2, #0 + str r2, [r0] + str r1, [r0, #0x30] + bx lr + + thumb_func_start MOD14_021DC6C0 +MOD14_021DC6C0: ; 0x021DC6C0 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _021DC6E8 + cmp r2, #0 + beq _021DC6E8 + ldr r1, [r4, #0x14] + str r1, [r4, #4] + ldr r2, [r4, #0x18] + str r2, [r4, #8] + ldr r1, [r4, #4] + bl MOD14_021DC720 + strh r0, [r4, #0x20] + ldr r1, _021DC6EC ; =MOD14_021DC6F0 + add r0, r4, #0 + bl MOD14_021DC6B8 + mov r0, #1 + pop {r4, pc} +_021DC6E8: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DC6EC: .word MOD14_021DC6F0 + + thumb_func_start MOD14_021DC6F0 +MOD14_021DC6F0: ; 0x021DC6F0 + push {r3, lr} + cmp r1, #0 + bne _021DC700 + ldr r1, _021DC704 ; =MOD14_021DC6C0 + bl MOD14_021DC6B8 + mov r0, #3 + pop {r3, pc} +_021DC700: + mov r0, #2 + pop {r3, pc} + .align 2, 0 +_021DC704: .word MOD14_021DC6C0 + + thumb_func_start MOD14_021DC708 +MOD14_021DC708: ; 0x021DC708 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x14] + ldr r2, [r4, #0x18] + bl MOD14_021DC720 + add r2, r0, #0 + ldrh r1, [r4, #0x20] + add r0, r4, #0 + bl MOD14_021DC738 + pop {r4, pc} + + thumb_func_start MOD14_021DC720 +MOD14_021DC720: ; 0x021DC720 + add r3, r0, #0 + ldr r0, [r3, #0x10] + sub r0, r2, r0 + ldr r2, [r3, #0xc] + ldr r3, _021DC734 ; =0x020C5668 + sub r1, r1, r2 + lsl r0, r0, #0xc + lsl r1, r1, #0xc + bx r3 + nop +_021DC734: .word 0x020C5668 + + thumb_func_start MOD14_021DC738 +MOD14_021DC738: ; 0x021DC738 + push {r4, r5} + sub r2, r2, r1 + bpl _021DC746 + mov r4, #0 + mvn r4, r4 + mul r2, r4 + b _021DC748 +_021DC746: + mov r4, #1 +_021DC748: + ldr r5, _021DC768 ; =0x021E6278 + mov r3, #0 +_021DC74C: + ldrh r1, [r5] + cmp r2, r1 + blt _021DC75A + add r3, r3, #1 + add r5, r5, #2 + cmp r3, #2 + blo _021DC74C +_021DC75A: + ldr r1, [r0, #0x24] + add r0, r3, #0 + mul r0, r4 + mul r0, r1 + pop {r4, r5} + bx lr + nop +_021DC768: .word 0x021E6278 + + thumb_func_start MOD14_021DC76C +MOD14_021DC76C: ; 0x021DC76C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r7, r0, #0 + ldr r1, _021DC9C8 ; =0x0000B3B4 + mov r0, #0xa + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _021DC79A + mov r0, #0x16 + lsl r0, r0, #4 + str r5, [r4, r0] + mov r0, #0xa + bl FUN_02016B94 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _021DC79C +_021DC79A: + b _021DC9C2 +_021DC79C: + mov r0, #0 + add r1, r0, #0 + mov r5, #1 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r3, _021DC9CC ; =0xFFFFE0FF + and r0, r3 + str r0, [r1] + ldr r0, _021DC9D0 ; =0x04001000 + ldr r2, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _021DC9D4 ; =0xFFCFFFEF + and r3, r2 + ldr r2, _021DC9D8 ; =0x00100010 + orr r2, r3 + str r2, [r1] + ldr r2, [r0] + ldr r1, _021DC9D4 ; =0xFFCFFFEF + and r2, r1 + mov r1, #0x10 + orr r1, r2 + str r1, [r0] + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r2, #0x80 + str r2, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r1, #0xa + str r1, [sp, #0x10] + add r1, r2, #0 + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x80 + add r1, #0x1c + mov r2, #0xa + bl FUN_02008C9C + str r0, [r4, #0x18] + add r0, r4, #0 + mov r2, #6 + add r0, #0x1c + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r0, #0x51 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_020B19DC + mov r0, #0xa + str r0, [sp] + mov r0, #0x51 + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x1a + add r2, r5, #0 + mov r3, #0 + bl FUN_02006A8C + mov r0, #0 + mov r1, #0xa + bl FUN_02002C84 + mov r0, #0xa + bl FUN_02006D98 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r1, #0 + add r2, r4, #0 + add r0, r1, #0 +_021DC854: + add r1, r1, #1 + str r0, [r2, #8] + add r2, r2, #4 + cmp r1, #4 + blo _021DC854 + bl MOD14_021DDEE8 + mov r2, #0x59 + lsl r2, r2, #2 + str r4, [r7] + add r0, r4, r2 + sub r2, r2, #4 + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + add r1, r4, #0 + bl MOD14_021E078C + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + mov r0, #0x43 + ldr r2, [r4, r3] + sub r3, r3, #4 + lsl r0, r0, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021DDF70 + mov r2, #0x16 + and r5, r0 + ldr r0, _021DC9DC ; =0x00005DC0 + lsl r2, r2, #4 + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021DF07C + mov r2, #0x16 + and r5, r0 + ldr r0, _021DC9E0 ; =0x00006558 + lsl r2, r2, #4 + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E0C7C + and r5, r0 + add r0, r6, #0 + bl MOD14_021DC3A4 + ldr r1, [r4, #0x18] + mov r3, #0x16 + str r1, [sp] + str r0, [sp, #4] + lsl r3, r3, #4 + ldr r0, _021DC9E4 ; =0x000065A0 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E0D90 + and r5, r0 + add r0, r6, #0 + bl MOD14_021DC3A4 + add r7, r0, #0 + add r0, r6, #0 + bl MOD14_021DC3AC + str r0, [sp, #0x14] + add r0, r6, #0 + bl MOD14_021DC3B4 + ldr r1, [r4, #0x18] + mov r3, #0x16 + str r1, [sp] + ldr r1, [sp, #0x14] + str r7, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + lsl r3, r3, #4 + ldr r0, _021DC9E8 ; =0x000065F4 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E1750 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9EC ; =0x0000662C + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E1D38 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9F0 ; =0x0000B22C + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E2A38 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9F4 ; =0x0000B3A4 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E33C8 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9F8 ; =0x0000B3A8 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E4828 + and r5, r0 + add r0, r6, #0 + bl MOD14_021DC3A4 + ldr r1, [r4, #0x18] + mov r3, #0x16 + str r1, [sp] + str r0, [sp, #4] + lsl r3, r3, #4 + ldr r0, _021DC9FC ; =0x0000B3AC + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E5044 + and r5, r0 + ldr r0, _021DCA00 ; =0x0000B3B0 + add r1, r4, #0 + str r6, [r4, r0] + ldr r0, _021DCA04 ; =MOD14_021DCA0C + mov r2, #2 + bl FUN_0200CA44 + str r0, [r4] + ldr r0, _021DCA08 ; =MOD14_021DCBFC + add r1, r4, #0 + mov r2, #1 + bl MOD14_021DDD40 + str r0, [r4, #4] + add sp, #0x18 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DC9C2: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC9C8: .word 0x0000B3B4 +_021DC9CC: .word 0xFFFFE0FF +_021DC9D0: .word 0x04001000 +_021DC9D4: .word 0xFFCFFFEF +_021DC9D8: .word 0x00100010 +_021DC9DC: .word 0x00005DC0 +_021DC9E0: .word 0x00006558 +_021DC9E4: .word 0x000065A0 +_021DC9E8: .word 0x000065F4 +_021DC9EC: .word 0x0000662C +_021DC9F0: .word 0x0000B22C +_021DC9F4: .word 0x0000B3A4 +_021DC9F8: .word 0x0000B3A8 +_021DC9FC: .word 0x0000B3AC +_021DCA00: .word 0x0000B3B0 +_021DCA04: .word MOD14_021DCA0C +_021DCA08: .word MOD14_021DCBFC + + thumb_func_start MOD14_021DCA0C +MOD14_021DCA0C: ; 0x021DCA0C + push {r4, lr} + add r4, r1, #0 + bl MOD14_021DDEF4 + bl G3X_ResetMtxStack + bl G3X_ResetMtxStack_2 + bl FUN_020B02C8 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02006ED4 + ldr r0, _021DCA34 ; =0x04000540 + mov r1, #0 + str r1, [r0] + pop {r4, pc} + nop +_021DCA34: .word 0x04000540 + + thumb_func_start MOD14_021DCA38 +MOD14_021DCA38: ; 0x021DCA38 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, [r4] + bl FUN_0200CAB4 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, _021DCB08 ; =0x0000B3AC + ldr r0, [r4, r0] + bl MOD14_021E50EC + ldr r0, _021DCB0C ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4880 + ldr r0, _021DCB10 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E34C0 + ldr r0, _021DCB14 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2AC8 + ldr r0, _021DCB18 ; =0x0000662C + add r0, r4, r0 + bl MOD14_021E1F20 + ldr r0, _021DCB1C ; =0x000065F4 + add r0, r4, r0 + bl MOD14_021E17C4 + ldr r0, _021DCB20 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E0E44 + ldr r0, _021DCB24 ; =0x00006558 + add r0, r4, r0 + bl MOD14_021E0D3C + ldr r0, _021DCB28 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF3A8 + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DDFEC + mov r0, #0x59 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021E089C + ldr r0, [r4, #0x18] + bl FUN_0201FD58 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl FUN_020178A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020178A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020178A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_020178A0 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020072E8 + mov r0, #0 + bl FUN_02002CC0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_02009FA0 + pop {r4, pc} + .align 2, 0 +_021DCB08: .word 0x0000B3AC +_021DCB0C: .word 0x0000B3A8 +_021DCB10: .word 0x0000B3A4 +_021DCB14: .word 0x0000B22C +_021DCB18: .word 0x0000662C +_021DCB1C: .word 0x000065F4 +_021DCB20: .word 0x000065A0 +_021DCB24: .word 0x00006558 +_021DCB28: .word 0x00005DC0 + + thumb_func_start MOD14_021DCB2C +MOD14_021DCB2C: ; 0x021DCB2C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + cmp r6, #0x34 + bhs _021DCB88 + mov r4, #0 + add r1, r5, #0 +_021DCB3A: + ldr r0, [r1, #8] + cmp r0, #0 + bne _021DCB7E + ldr r0, _021DCB90 ; =0x021E63D0 + lsl r7, r6, #3 + ldr r0, [r0, r7] + str r0, [sp] + ldr r1, [sp] + mov r0, #0xa + add r1, #0x14 + bl FUN_02016998 + add r1, r0, #0 + beq _021DCB78 + str r6, [r1] + strh r4, [r1, #4] + mov r0, #0 + strh r0, [r1, #6] + ldr r0, [sp] + str r5, [r1, #0xc] + add r0, r1, r0 + str r0, [r1, #0x10] + ldr r0, _021DCB94 ; =0x021E63CC + mov r2, #1 + ldr r0, [r0, r7] + bl FUN_0200CA44 + lsl r1, r4, #2 + add r1, r5, r1 + str r0, [r1, #8] + pop {r3, r4, r5, r6, r7, pc} +_021DCB78: + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_021DCB7E: + add r4, r4, #1 + add r1, r1, #4 + cmp r4, #4 + blo _021DCB3A + pop {r3, r4, r5, r6, r7, pc} +_021DCB88: + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} + nop +_021DCB90: .word 0x021E63D0 +_021DCB94: .word 0x021E63CC + + thumb_func_start MOD14_021DCB98 +MOD14_021DCB98: ; 0x021DCB98 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021DCBA0: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021DCBB4 + bl FUN_0201B6C8 + ldr r0, [r0] + cmp r0, r6 + bne _021DCBB4 + mov r0, #0 + pop {r4, r5, r6, pc} +_021DCBB4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021DCBA0 + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DCBC0 +MOD14_021DCBC0: ; 0x021DCBC0 + mov r2, #0 +_021DCBC2: + ldr r1, [r0, #8] + cmp r1, #0 + beq _021DCBCC + mov r0, #0 + bx lr +_021DCBCC: + add r2, r2, #1 + add r0, r0, #4 + cmp r2, #4 + blt _021DCBC2 + mov r0, #1 + bx lr + + thumb_func_start MOD14_021DCBD8 +MOD14_021DCBD8: ; 0x021DCBD8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrh r0, [r5, #4] + ldr r4, [r5, #0xc] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #8] + bl FUN_0200CAB4 + ldrh r0, [r5, #4] + mov r1, #0 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #8] + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DCBFC +MOD14_021DCBFC: ; 0x021DCBFC + push {r4, lr} + ldr r0, _021DCC20 ; =0x000065A0 + add r4, r1, #0 + add r0, r4, r0 + bl MOD14_021E0EE4 + ldr r0, [r4, #0x18] + bl FUN_0201FDEC + bl FUN_02009F80 + ldr r3, _021DCC24 ; =0x027E0000 + ldr r1, _021DCC28 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_021DCC20: .word 0x000065A0 +_021DCC24: .word 0x027E0000 +_021DCC28: .word 0x00003FF8 + + thumb_func_start MOD14_021DCC2C +MOD14_021DCC2C: ; 0x021DCC2C + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r6, [r4, r0] + ldrh r0, [r5, #6] + cmp r0, #0 + beq _021DCC44 + cmp r0, #1 + beq _021DCC7E + pop {r4, r5, r6, pc} +_021DCC44: + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DDA38 + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DDB50 + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DDCF0 + add r0, r6, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DCC76 + ldr r0, _021DCC9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E0EF4 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r4, r5, r6, pc} +_021DCC76: + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} +_021DCC7E: + ldr r0, _021DCC9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E0F28 + cmp r0, #0 + beq _021DCC98 + ldr r0, _021DCC9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E13F0 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DCC98: + pop {r4, r5, r6, pc} + nop +_021DCC9C: .word 0x000065A0 + + thumb_func_start MOD14_021DCCA0 +MOD14_021DCCA0: ; 0x021DCCA0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DCCB4 + cmp r0, #1 + beq _021DCCEA + add sp, #0xc + pop {r3, r4, pc} +_021DCCB4: + ldr r0, _021DCCFC ; =0x0000060D + bl FUN_020054C8 + mov r0, #0xa + str r0, [sp] + ldr r0, _021DCD00 ; =0x04000050 + mov r1, #0 + mov r2, #0x3f + mov r3, #6 + bl G2x_SetBlendAlpha_ + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DCCEA: + bl FUN_0200E308 + cmp r0, #0 + beq _021DCCF8 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCCF8: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021DCCFC: .word 0x0000060D +_021DCD00: .word 0x04000050 + + thumb_func_start MOD14_021DCD04 +MOD14_021DCD04: ; 0x021DCD04 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DCD18 + cmp r0, #1 + beq _021DCD48 + add sp, #0xc + pop {r3, r4, pc} +_021DCD18: + mov r0, #0xa + str r0, [sp] + ldr r0, _021DCD5C ; =0x04000050 + mov r1, #0 + mov r2, #0x3f + mov r3, #6 + bl G2x_SetBlendAlpha_ + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DCD48: + bl FUN_0200E308 + cmp r0, #0 + beq _021DCD56 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCD56: + add sp, #0xc + pop {r3, r4, pc} + nop +_021DCD5C: .word 0x04000050 + + thumb_func_start MOD14_021DCD60 +MOD14_021DCD60: ; 0x021DCD60 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DCD74 + cmp r0, #1 + beq _021DCD96 + add sp, #0xc + pop {r3, r4, pc} +_021DCD74: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DCD96: + bl FUN_0200E308 + cmp r0, #0 + beq _021DCDA4 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCDA4: + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD14_021DCDA8 +MOD14_021DCDA8: ; 0x021DCDA8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r0, #0x16 + ldr r5, [r4, #0xc] + lsl r0, r0, #4 + ldr r6, [r5, r0] + ldrh r0, [r4, #6] + cmp r0, #4 + bhi _021DCE5E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DCDC6: ; jump table + .short _021DCDD0 - _021DCDC6 - 2 ; case 0 + .short _021DCDDE - _021DCDC6 - 2 ; case 1 + .short _021DCDF0 - _021DCDC6 - 2 ; case 2 + .short _021DCE30 - _021DCDC6 - 2 ; case 3 + .short _021DCE4C - _021DCDC6 - 2 ; case 4 +_021DCDD0: + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4DF8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCDDE: + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4E24 + cmp r0, #0 + beq _021DCE5E + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCDF0: + mov r0, #0x43 + add r1, r6, #0 + lsl r0, r0, #4 + add r1, #0x40 + ldrb r0, [r5, r0] + ldrb r1, [r1] + bl MOD14_021DDD1C + add r7, r0, #0 + mov r0, #0x43 + lsl r0, r0, #4 + add r1, r6, #0 + add r0, r5, r0 + add r1, #0x40 + add r2, r7, #0 + mov r3, #1 + bl MOD14_021DE0C4 + mov r0, #0x43 + lsl r0, r0, #4 + add r6, #0x40 + add r0, r5, r0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD14_021DE2E8 + ldr r0, _021DCE64 ; =0x000005DC + bl FUN_020054C8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCE30: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r5, r0 + bl MOD14_021DE394 + cmp r0, #0 + beq _021DCE5E + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4BE0 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCE4C: + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4C40 + cmp r0, #0 + beq _021DCE5E + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCE5E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DCE60: .word 0x0000B3A8 +_021DCE64: .word 0x000005DC + + thumb_func_start MOD14_021DCE68 +MOD14_021DCE68: ; 0x021DCE68 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DCE7A + cmp r0, #1 + beq _021DCE98 + pop {r3, r4, r5, pc} +_021DCE7A: + ldr r0, _021DCEB8 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _021DCEBC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF484 + ldr r0, _021DCEC0 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4BE0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DCE98: + ldr r0, _021DCEBC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF59C + cmp r0, #0 + beq _021DCEB6 + ldr r0, _021DCEC0 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4C40 + cmp r0, #0 + beq _021DCEB6 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DCEB6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DCEB8: .word 0x000005DC +_021DCEBC: .word 0x00005DC0 +_021DCEC0: .word 0x0000B3A8 + + thumb_func_start MOD14_021DCEC4 +MOD14_021DCEC4: ; 0x021DCEC4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3C4 + cmp r0, #4 + ldrh r0, [r5, #6] + beq _021DCF08 + cmp r0, #0 + beq _021DCEE4 + cmp r0, #1 + beq _021DCEF4 + pop {r3, r4, r5, pc} +_021DCEE4: + ldr r0, _021DCF38 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1450 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DCEF4: + ldr r0, _021DCF38 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1674 + cmp r0, #0 + beq _021DCF34 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} +_021DCF08: + cmp r0, #0 + beq _021DCF12 + cmp r0, #1 + beq _021DCF22 + pop {r3, r4, r5, pc} +_021DCF12: + ldr r0, _021DCF3C ; =0x0000B3AC + ldr r0, [r4, r0] + bl MOD14_021E526C + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DCF22: + ldr r0, _021DCF3C ; =0x0000B3AC + ldr r0, [r4, r0] + bl MOD14_021E52BC + cmp r0, #0 + beq _021DCF34 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DCF34: + pop {r3, r4, r5, pc} + nop +_021DCF38: .word 0x000065A0 +_021DCF3C: .word 0x0000B3AC + + thumb_func_start MOD14_021DCF40 +MOD14_021DCF40: ; 0x021DCF40 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r6, [r4, r0] + add r0, r6, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021DCF60 + ldr r0, _021DCF94 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DFF8C + b _021DCF84 +_021DCF60: + add r0, r6, #0 + bl MOD14_021DC3CC + cmp r0, #0 + beq _021DCF70 + cmp r0, #1 + beq _021DCF7C + b _021DCF84 +_021DCF70: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEF4C + b _021DCF84 +_021DCF7C: + ldr r0, _021DCF98 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E3054 +_021DCF84: + ldr r0, _021DCF9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1678 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DCF94: .word 0x00005DC0 +_021DCF98: .word 0x0000B22C +_021DCF9C: .word 0x000065A0 + + thumb_func_start MOD14_021DCFA0 +MOD14_021DCFA0: ; 0x021DCFA0 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DCFB8 ; =0x000065A0 + add r0, r1, r0 + bl MOD14_021E14D0 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DCFB8: .word 0x000065A0 + + thumb_func_start MOD14_021DCFBC +MOD14_021DCFBC: ; 0x021DCFBC + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DCFCE + cmp r0, #1 + beq _021DCFDE + pop {r4, pc} +_021DCFCE: + ldr r0, _021DCFF4 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF758 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DCFDE: + ldr r0, _021DCFF4 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF7A0 + cmp r0, #0 + beq _021DCFF0 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCFF0: + pop {r4, pc} + nop +_021DCFF4: .word 0x00005DC0 + + thumb_func_start MOD14_021DCFF8 +MOD14_021DCFF8: ; 0x021DCFF8 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD00A + cmp r0, #1 + beq _021DD01A + pop {r4, pc} +_021DD00A: + ldr r0, _021DD030 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF890 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD01A: + ldr r0, _021DD030 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF8C4 + cmp r0, #0 + beq _021DD02C + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD02C: + pop {r4, pc} + nop +_021DD030: .word 0x00005DC0 + + thumb_func_start MOD14_021DD034 +MOD14_021DD034: ; 0x021DD034 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD046 + cmp r0, #1 + beq _021DD056 + pop {r4, pc} +_021DD046: + ldr r0, _021DD06C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF9DC + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD056: + ldr r0, _021DD06C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFA58 + cmp r0, #0 + beq _021DD068 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD068: + pop {r4, pc} + nop +_021DD06C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD070 +MOD14_021DD070: ; 0x021DD070 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD082 + cmp r0, #1 + beq _021DD092 + pop {r4, pc} +_021DD082: + ldr r0, _021DD09C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFE28 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD092: + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD09C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD0A0 +MOD14_021DD0A0: ; 0x021DD0A0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD0B6 + cmp r0, #1 + beq _021DD0C6 + cmp r0, #2 + beq _021DD0D6 + pop {r4, pc} +_021DD0B6: + ldr r0, _021DD0EC ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2F08 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD0C6: + ldr r0, _021DD0EC ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2C7C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD0D6: + ldr r0, _021DD0EC ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2DA4 + cmp r0, #0 + beq _021DD0E8 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD0E8: + pop {r4, pc} + nop +_021DD0EC: .word 0x0000B22C + + thumb_func_start MOD14_021DD0F0 +MOD14_021DD0F0: ; 0x021DD0F0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD102 + cmp r0, #1 + beq _021DD112 + pop {r4, pc} +_021DD102: + ldr r0, _021DD128 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFE60 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD112: + ldr r0, _021DD128 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFE84 + cmp r0, #0 + beq _021DD124 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD124: + pop {r4, pc} + nop +_021DD128: .word 0x00005DC0 + + thumb_func_start MOD14_021DD12C +MOD14_021DD12C: ; 0x021DD12C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r1, [r5, #6] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r4, [r5, #0xc] + cmp r1, #0 + ldr r0, [r4, r0] + beq _021DD144 + cmp r1, #1 + beq _021DD15C + pop {r3, r4, r5, pc} +_021DD144: + bl MOD14_021DC3E0 + add r1, r0, #0 + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEDD0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD15C: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEE08 + cmp r0, #0 + beq _021DD170 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD170: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DD174 +MOD14_021DD174: ; 0x021DD174 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r1, [r5, #6] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r4, [r5, #0xc] + cmp r1, #0 + ldr r0, [r4, r0] + beq _021DD18C + cmp r1, #1 + beq _021DD1A2 + pop {r3, r4, r5, pc} +_021DD18C: + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021DD1B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2F44 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD1A2: + ldr r0, _021DD1B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2F68 + cmp r0, #0 + beq _021DD1B4 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD1B4: + pop {r3, r4, r5, pc} + nop +_021DD1B8: .word 0x0000B22C + + thumb_func_start MOD14_021DD1BC +MOD14_021DD1BC: ; 0x021DD1BC + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD1CE + cmp r0, #1 + beq _021DD1DE + pop {r4, pc} +_021DD1CE: + ldr r0, _021DD1F4 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E26E4 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD1DE: + ldr r0, _021DD1F4 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E27AC + cmp r0, #0 + beq _021DD1F0 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD1F0: + pop {r4, pc} + nop +_021DD1F4: .word 0x0000662C + + thumb_func_start MOD14_021DD1F8 +MOD14_021DD1F8: ; 0x021DD1F8 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD20A + cmp r0, #1 + beq _021DD21A + pop {r4, pc} +_021DD20A: + ldr r0, _021DD230 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E283C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD21A: + ldr r0, _021DD230 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E2884 + cmp r0, #0 + beq _021DD22C + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD22C: + pop {r4, pc} + nop +_021DD230: .word 0x0000662C + + thumb_func_start MOD14_021DD234 +MOD14_021DD234: ; 0x021DD234 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD246 + cmp r0, #1 + beq _021DD256 + pop {r3, r4, r5, pc} +_021DD246: + ldr r0, _021DD274 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0050 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD256: + ldr r0, _021DD274 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0080 + cmp r0, #0 + beq _021DD270 + ldr r0, _021DD278 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1704 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD270: + pop {r3, r4, r5, pc} + nop +_021DD274: .word 0x00005DC0 +_021DD278: .word 0x000065A0 + + thumb_func_start MOD14_021DD27C +MOD14_021DD27C: ; 0x021DD27C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD28E + cmp r0, #1 + beq _021DD29E + pop {r3, r4, r5, pc} +_021DD28E: + ldr r0, _021DD2BC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E00F0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD29E: + ldr r0, _021DD2BC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0120 + cmp r0, #0 + beq _021DD2B8 + ldr r0, _021DD2C0 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1704 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD2B8: + pop {r3, r4, r5, pc} + nop +_021DD2BC: .word 0x00005DC0 +_021DD2C0: .word 0x000065A0 + + thumb_func_start MOD14_021DD2C4 +MOD14_021DD2C4: ; 0x021DD2C4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD2D6 + cmp r0, #1 + beq _021DD2E6 + pop {r3, r4, r5, pc} +_021DD2D6: + ldr r0, _021DD304 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0190 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD2E6: + ldr r0, _021DD304 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E01BC + cmp r0, #0 + beq _021DD300 + ldr r0, _021DD308 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1704 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD300: + pop {r3, r4, r5, pc} + nop +_021DD304: .word 0x00005DC0 +_021DD308: .word 0x000065A0 + + thumb_func_start MOD14_021DD30C +MOD14_021DD30C: ; 0x021DD30C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r0, #0x16 + ldr r4, [r7, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + add r0, r5, #0 + bl MOD14_021DC430 + add r6, r0, #0 + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021DD336 + ldr r0, _021DD374 ; =0x00005DC0 + add r1, r6, #0 + add r0, r4, r0 + bl MOD14_021DFFD8 + b _021DD36C +_021DD336: + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + beq _021DD358 + cmp r0, #1 + bne _021DD36C + add r0, r5, #0 + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021DD378 ; =0x0000B22C + add r2, r6, #0 + add r0, r4, r0 + bl MOD14_021E3024 + b _021DD36C +_021DD358: + add r0, r5, #0 + bl MOD14_021DC3E0 + add r1, r0, #0 + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + add r2, r6, #0 + bl MOD14_021DEEF8 +_021DD36C: + add r0, r7, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD374: .word 0x00005DC0 +_021DD378: .word 0x0000B22C + + thumb_func_start MOD14_021DD37C +MOD14_021DD37C: ; 0x021DD37C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD38E + cmp r0, #1 + beq _021DD3A6 + pop {r3, r4, r5, pc} +_021DD38E: + ldr r0, _021DD3C4 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E022C + ldr r0, _021DD3C8 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4F58 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD3A6: + ldr r0, _021DD3C8 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4FA0 + cmp r0, #0 + beq _021DD3C0 + ldr r0, _021DD3C4 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0244 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD3C0: + pop {r3, r4, r5, pc} + nop +_021DD3C4: .word 0x00005DC0 +_021DD3C8: .word 0x0000B3A8 + + thumb_func_start MOD14_021DD3CC +MOD14_021DD3CC: ; 0x021DD3CC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC450 + add r1, r0, #0 + ldr r0, _021DD3F0 ; =0x000065F4 + add r0, r4, r0 + bl MOD14_021E189C + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + nop +_021DD3F0: .word 0x000065F4 + + thumb_func_start MOD14_021DD3F4 +MOD14_021DD3F4: ; 0x021DD3F4 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x16 + ldr r4, [r6, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + add r0, r5, #0 + bl MOD14_021DC450 + add r1, r0, #0 + ldr r0, _021DD424 ; =0x000065F4 + add r0, r4, r0 + bl MOD14_021E189C + ldr r0, _021DD424 ; =0x000065F4 + add r5, #0x74 + add r0, r4, r0 + add r1, r5, #0 + bl MOD14_021E19D0 + add r0, r6, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD424: .word 0x000065F4 + + thumb_func_start MOD14_021DD428 +MOD14_021DD428: ; 0x021DD428 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD440 ; =0x000065F4 + add r0, r1, r0 + bl MOD14_021E1B44 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD440: .word 0x000065F4 + + thumb_func_start MOD14_021DD444 +MOD14_021DD444: ; 0x021DD444 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD45C ; =0x000065F4 + add r0, r1, r0 + bl MOD14_021E1B78 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD45C: .word 0x000065F4 + + thumb_func_start MOD14_021DD460 +MOD14_021DD460: ; 0x021DD460 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x16 + ldr r4, [r6, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + ldr r0, _021DD488 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _021DD48C ; =0x000065F4 + add r5, #0x74 + add r0, r4, r0 + add r1, r5, #0 + bl MOD14_021E1B9C + add r0, r6, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + nop +_021DD488: .word 0x000005DC +_021DD48C: .word 0x000065F4 + + thumb_func_start MOD14_021DD490 +MOD14_021DD490: ; 0x021DD490 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x16 + ldr r4, [r6, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + ldr r0, _021DD4B8 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _021DD4BC ; =0x000065F4 + add r5, #0x74 + add r0, r4, r0 + add r1, r5, #0 + bl MOD14_021E1BE4 + add r0, r6, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + nop +_021DD4B8: .word 0x000005DD +_021DD4BC: .word 0x000065F4 + + thumb_func_start MOD14_021DD4C0 +MOD14_021DD4C0: ; 0x021DD4C0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD4D2 + cmp r0, #1 + beq _021DD4E2 + pop {r4, pc} +_021DD4D2: + ldr r0, _021DD4F8 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1F98 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD4E2: + ldr r0, _021DD4F8 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1FB8 + cmp r0, #0 + beq _021DD4F4 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD4F4: + pop {r4, pc} + nop +_021DD4F8: .word 0x0000662C + + thumb_func_start MOD14_021DD4FC +MOD14_021DD4FC: ; 0x021DD4FC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD50E + cmp r0, #1 + beq _021DD524 + pop {r3, r4, r5, pc} +_021DD50E: + ldr r0, _021DD52C ; =0x000005DD + bl FUN_020054C8 + ldr r0, _021DD530 ; =0x0000662C + add r0, r4, r0 + bl MOD14_021E1FC0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD524: + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD52C: .word 0x000005DD +_021DD530: .word 0x0000662C + + thumb_func_start MOD14_021DD534 +MOD14_021DD534: ; 0x021DD534 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD546 + cmp r0, #1 + beq _021DD556 + pop {r4, pc} +_021DD546: + ldr r0, _021DD56C ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1FE4 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD556: + ldr r0, _021DD56C ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1FF0 + cmp r0, #0 + beq _021DD568 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD568: + pop {r4, pc} + nop +_021DD56C: .word 0x0000662C + + thumb_func_start MOD14_021DD570 +MOD14_021DD570: ; 0x021DD570 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD582 + cmp r0, #1 + beq _021DD594 + pop {r4, pc} +_021DD582: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DE8C8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD594: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DE8E8 + cmp r0, #0 + beq _021DD5A8 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD5A8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DD5AC +MOD14_021DD5AC: ; 0x021DD5AC + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r0, #0x16 + ldr r5, [r4, #0xc] + lsl r0, r0, #4 + ldr r6, [r5, r0] + ldrh r0, [r4, #6] + cmp r0, #3 + bhi _021DD65E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DD5CA: ; jump table + .short _021DD5D2 - _021DD5CA - 2 ; case 0 + .short _021DD5E8 - _021DD5CA - 2 ; case 1 + .short _021DD626 - _021DD5CA - 2 ; case 2 + .short _021DD64C - _021DD5CA - 2 ; case 3 +_021DD5D2: + ldr r0, _021DD660 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFBB8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_021DD5E8: + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFC2C + cmp r0, #0 + beq _021DD65E + add r0, r6, #0 + bl MOD14_021DC3CC + cmp r0, #3 + beq _021DD604 + cmp r0, #4 + beq _021DD610 + b _021DD61A +_021DD604: + ldr r0, _021DD668 ; =0x00006558 + mov r1, #1 + add r0, r5, r0 + bl MOD14_021E0D60 + b _021DD61A +_021DD610: + ldr r0, _021DD668 ; =0x00006558 + mov r1, #2 + add r0, r5, r0 + bl MOD14_021E0D60 +_021DD61A: + mov r0, #0 + strh r0, [r4, #8] + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_021DD626: + ldrh r0, [r4, #8] + add r0, r0, #1 + strh r0, [r4, #8] + ldrh r0, [r4, #8] + cmp r0, #6 + blo _021DD65E + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFD24 + ldr r0, _021DD668 ; =0x00006558 + mov r1, #0 + add r0, r5, r0 + bl MOD14_021E0D60 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_021DD64C: + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFD80 + cmp r0, #0 + beq _021DD65E + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD65E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD660: .word 0x000005DD +_021DD664: .word 0x00005DC0 +_021DD668: .word 0x00006558 + + thumb_func_start MOD14_021DD66C +MOD14_021DD66C: ; 0x021DD66C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD67E + cmp r0, #1 + beq _021DD69C + pop {r3, r4, r5, pc} +_021DD67E: + ldr r0, _021DD6B0 ; =0x00000633 + bl FUN_020054C8 + ldr r0, _021DD6B4 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DFF1C + ldr r0, _021DD6B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2B10 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD69C: + ldr r0, _021DD6B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2B40 + cmp r0, #0 + beq _021DD6AE + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD6AE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD6B0: .word 0x00000633 +_021DD6B4: .word 0x00005DC0 +_021DD6B8: .word 0x0000B22C + + thumb_func_start MOD14_021DD6BC +MOD14_021DD6BC: ; 0x021DD6BC + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r5, [r4, #0xc] + cmp r0, #3 + bhi _021DD72C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DD6D4: ; jump table + .short _021DD6DC - _021DD6D4 - 2 ; case 0 + .short _021DD6EA - _021DD6D4 - 2 ; case 1 + .short _021DD6FC - _021DD6D4 - 2 ; case 2 + .short _021DD712 - _021DD6D4 - 2 ; case 3 +_021DD6DC: + ldr r0, _021DD730 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4DF8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DD6EA: + ldr r0, _021DD730 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4E24 + cmp r0, #0 + beq _021DD72C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DD6FC: + ldr r0, _021DD734 ; =0x00000634 + bl FUN_020054C8 + ldr r0, _021DD738 ; =0x0000B22C + add r0, r5, r0 + bl MOD14_021E2BB0 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, r5, pc} +_021DD712: + ldr r0, _021DD738 ; =0x0000B22C + add r0, r5, r0 + bl MOD14_021E2BD0 + cmp r0, #0 + beq _021DD72C + ldr r0, _021DD73C ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFF54 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD72C: + pop {r3, r4, r5, pc} + nop +_021DD730: .word 0x0000B3A8 +_021DD734: .word 0x00000634 +_021DD738: .word 0x0000B22C +_021DD73C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD740 +MOD14_021DD740: ; 0x021DD740 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD752 + cmp r0, #1 + beq _021DD762 + pop {r4, pc} +_021DD752: + ldr r0, _021DD778 ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2C7C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD762: + ldr r0, _021DD778 ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2DA4 + cmp r0, #0 + beq _021DD774 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD774: + pop {r4, pc} + nop +_021DD778: .word 0x0000B22C + + thumb_func_start MOD14_021DD77C +MOD14_021DD77C: ; 0x021DD77C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r1, [r5, #6] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r4, [r5, #0xc] + cmp r1, #0 + ldr r0, [r4, r0] + beq _021DD794 + cmp r1, #1 + beq _021DD7B4 + pop {r3, r4, r5, pc} +_021DD794: + bl MOD14_021DC3CC + cmp r0, #1 + bne _021DD7AC + ldr r0, _021DD7C8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2DB4 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD7AC: + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} +_021DD7B4: + ldr r0, _021DD7C8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2E50 + cmp r0, #0 + beq _021DD7C6 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD7C6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD7C8: .word 0x0000B22C + + thumb_func_start MOD14_021DD7CC +MOD14_021DD7CC: ; 0x021DD7CC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x43 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEEA8 + ldr r0, _021DD7F4 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2FE8 + ldr r0, _021DD7F8 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DFFB4 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD7F4: .word 0x0000B22C +_021DD7F8: .word 0x00005DC0 + + thumb_func_start MOD14_021DD7FC +MOD14_021DD7FC: ; 0x021DD7FC + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r6, [r4, r0] + ldrh r0, [r5, #6] + cmp r0, #0 + beq _021DD818 + cmp r0, #1 + beq _021DD828 + cmp r0, #2 + beq _021DD854 + pop {r4, r5, r6, pc} +_021DD818: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E37B8 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r4, r5, r6, pc} +_021DD828: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E389C + cmp r0, #0 + beq _021DD866 + add r6, #0x9c + ldrb r0, [r6] + cmp r0, #0 + bne _021DD844 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} +_021DD844: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E3B54 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r4, r5, r6, pc} +_021DD854: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E3B80 + cmp r0, #0 + beq _021DD866 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD866: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD868: .word 0x0000B3A4 + + thumb_func_start MOD14_021DD86C +MOD14_021DD86C: ; 0x021DD86C + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD87E + cmp r0, #1 + beq _021DD88E + pop {r4, pc} +_021DD87E: + ldr r0, _021DD8A4 ; =0x0000B3A4 + ldr r0, [r1, r0] + bl MOD14_021E3BA8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD88E: + ldr r0, _021DD8A4 ; =0x0000B3A4 + ldr r0, [r1, r0] + bl MOD14_021E3C60 + cmp r0, #0 + beq _021DD8A0 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD8A0: + pop {r4, pc} + nop +_021DD8A4: .word 0x0000B3A4 + + thumb_func_start MOD14_021DD8A8 +MOD14_021DD8A8: ; 0x021DD8A8 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD8C0 ; =0x0000B3A4 + ldr r0, [r1, r0] + bl MOD14_021E4734 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD8C0: .word 0x0000B3A4 + + thumb_func_start MOD14_021DD8C4 +MOD14_021DD8C4: ; 0x021DD8C4 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD8DC ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021E0008 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD8DC: .word 0x00005DC0 + + thumb_func_start MOD14_021DD8E0 +MOD14_021DD8E0: ; 0x021DD8E0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r5, #0xc] + ldr r0, _021DD900 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E002C + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEF94 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD900: .word 0x00005DC0 + + thumb_func_start MOD14_021DD904 +MOD14_021DD904: ; 0x021DD904 + push {r4, lr} + add r4, r1, #0 + mov r0, #0x43 + ldr r1, [r4, #0xc] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DF03C + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + + thumb_func_start MOD14_021DD91C +MOD14_021DD91C: ; 0x021DD91C + push {r4, lr} + add r4, r1, #0 + mov r0, #0x43 + ldr r1, [r4, #0xc] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DEF94 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + + thumb_func_start MOD14_021DD934 +MOD14_021DD934: ; 0x021DD934 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD946 + cmp r0, #1 + beq _021DD956 + pop {r4, pc} +_021DD946: + ldr r0, _021DD96C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF758 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD956: + ldr r0, _021DD96C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF7A0 + cmp r0, #0 + beq _021DD968 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD968: + pop {r4, pc} + nop +_021DD96C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD970 +MOD14_021DD970: ; 0x021DD970 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD988 ; =0x0000B3AC + ldr r0, [r1, r0] + mov r1, #0 + bl MOD14_021E5214 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + .align 2, 0 +_021DD988: .word 0x0000B3AC + + thumb_func_start MOD14_021DD98C +MOD14_021DD98C: ; 0x021DD98C + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD9A4 ; =0x0000B3AC + ldr r0, [r1, r0] + mov r1, #1 + bl MOD14_021E5214 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + .align 2, 0 +_021DD9A4: .word 0x0000B3AC + + thumb_func_start MOD14_021DD9A8 +MOD14_021DD9A8: ; 0x021DD9A8 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD9BA + cmp r0, #1 + beq _021DD9CA + pop {r4, pc} +_021DD9BA: + ldr r0, _021DD9E0 ; =0x0000B3AC + ldr r0, [r1, r0] + bl MOD14_021E52C0 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD9CA: + ldr r0, _021DD9E0 ; =0x0000B3AC + ldr r0, [r1, r0] + bl MOD14_021E52E0 + cmp r0, #0 + beq _021DD9DC + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD9DC: + pop {r4, pc} + nop +_021DD9E0: .word 0x0000B3AC + + thumb_func_start MOD14_021DD9E4 +MOD14_021DD9E4: ; 0x021DD9E4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DD9F8 + cmp r0, #1 + beq _021DDA20 + add sp, #0xc + pop {r3, r4, pc} +_021DD9F8: + ldr r0, _021DDA34 ; =0x0000060E + bl FUN_020054C8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DDA20: + bl FUN_0200E308 + cmp r0, #0 + beq _021DDA2E + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DDA2E: + add sp, #0xc + pop {r3, r4, pc} + nop +_021DDA34: .word 0x0000060E + + thumb_func_start MOD14_021DDA38 +MOD14_021DDA38: ; 0x021DDA38 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DDB20 ; =0x021E63A4 + add r4, r1, #0 + bl FUN_0201E66C + ldr r2, _021DDB24 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + mov r0, #1 + mov r1, #0 + add r2, r0, #0 + bl GX_SetGraphicsMode + ldr r0, _021DDB28 ; =0x021E627C + bl FUN_02016BBC + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB2C ; =0x021E6350 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB30 ; =0x021E6334 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB34 ; =0x021E62FC + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DDADA + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB38 ; =0x021E6318 + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB3C ; =0x021E62E0 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB40 ; =0x021E62C4 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB44 ; =0x021E62A8 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + b _021DDB1A +_021DDADA: + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB38 ; =0x021E6318 + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB48 ; =0x021E6388 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB4C ; =0x021E628C + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB44 ; =0x021E62A8 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 +_021DDB1A: + bl MOD14_021DDC78 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDB20: .word 0x021E63A4 +_021DDB24: .word 0x04000304 +_021DDB28: .word 0x021E627C +_021DDB2C: .word 0x021E6350 +_021DDB30: .word 0x021E6334 +_021DDB34: .word 0x021E62FC +_021DDB38: .word 0x021E6318 +_021DDB3C: .word 0x021E62E0 +_021DDB40: .word 0x021E62C4 +_021DDB44: .word 0x021E62A8 +_021DDB48: .word 0x021E6388 +_021DDB4C: .word 0x021E628C + + thumb_func_start MOD14_021DDB50 +MOD14_021DDB50: ; 0x021DDB50 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + mov r2, #0x57 + add r4, r1, #0 + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + lsl r2, r2, #2 + ldr r2, [r5, r2] + mov r0, #0x12 + mov r1, #4 + bl FUN_0200687C + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + mov r2, #0x57 + str r1, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + lsl r2, r2, #2 + ldr r2, [r5, r2] + mov r0, #0x12 + mov r3, #2 + bl FUN_0200687C + mov r0, #0xe0 + str r0, [sp] + mov r0, #0xa + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #5 + add r3, r2, #0 + bl FUN_02006930 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DDBF2 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + mov r2, #0x57 + str r0, [sp, #0xc] + lsl r2, r2, #2 + ldr r2, [r5, r2] + mov r0, #0x12 + mov r3, #2 + bl FUN_020068C8 +_021DDBF2: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r5, r0 + bl MOD14_021DE014 + mov r0, #0x43 + lsl r0, r0, #4 + add r1, r4, #0 + add r0, r5, r0 + add r1, #0x40 + mov r2, #0 + mov r3, #1 + bl MOD14_021DE0C4 + ldr r0, _021DDC60 ; =0x000065A0 + add r0, r5, r0 + bl MOD14_021E0F40 + ldr r0, _021DDC64 ; =0x000065F4 + add r0, r5, r0 + bl MOD14_021E1818 + ldr r0, _021DDC68 ; =0x0000662C + add r0, r5, r0 + bl MOD14_021E1EEC + ldr r0, _021DDC6C ; =0x0000B3A4 + ldr r0, [r5, r0] + bl MOD14_021E355C + ldr r0, _021DDC70 ; =0x0000B3AC + ldr r0, [r5, r0] + bl MOD14_021E5128 + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #1 + bne _021DDC48 + ldr r0, _021DDC74 ; =0x0000B22C + add r0, r5, r0 + bl MOD14_021E2AE8 +_021DDC48: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + bl GX_DispOn + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDC60: .word 0x000065A0 +_021DDC64: .word 0x000065F4 +_021DDC68: .word 0x0000662C +_021DDC6C: .word 0x0000B3A4 +_021DDC70: .word 0x0000B3AC +_021DDC74: .word 0x0000B22C + + thumb_func_start MOD14_021DDC78 +MOD14_021DDC78: ; 0x021DDC78 + push {r3, lr} + bl FUN_020BB7F4 + bl G3X_InitMtxStack + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r0, _021DDCDC ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + add r0, #0x58 + ldrh r1, [r0] + ldr r2, _021DDCE0 ; =0xFFFFCFFD + and r1, r2 + strh r1, [r0] + ldrh r3, [r0] + add r1, r2, #2 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _021DDCE4 ; =0x0000CFFB + and r1, r3 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021DDCE8 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _021DDCEC ; =0xBFFF0000 + str r0, [r1, #0x40] + pop {r3, pc} + .align 2, 0 +_021DDCDC: .word 0x04000008 +_021DDCE0: .word 0xFFFFCFFD +_021DDCE4: .word 0x0000CFFB +_021DDCE8: .word 0x04000540 +_021DDCEC: .word 0xBFFF0000 + + thumb_func_start MOD14_021DDCF0 +MOD14_021DDCF0: ; 0x021DDCF0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DDD10 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF144 + ldr r0, _021DDD14 ; =0x00006558 + add r0, r4, r0 + bl MOD14_021E0CCC + ldr r0, _021DDD18 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E49C4 + pop {r4, pc} + nop +_021DDD10: .word 0x00005DC0 +_021DDD14: .word 0x00006558 +_021DDD18: .word 0x0000B3A8 + + thumb_func_start MOD14_021DDD1C +MOD14_021DDD1C: ; 0x021DDD1C + cmp r1, r0 + bls _021DDD2A + mov r2, #0x12 + sub r3, r1, r0 + sub r1, r2, r1 + add r0, r0, r1 + b _021DDD32 +_021DDD2A: + mov r2, #0x12 + sub r2, r2, r0 + add r3, r1, r2 + sub r0, r0, r1 +_021DDD32: + cmp r3, r0 + blt _021DDD3C + mov r0, #0 + mvn r0, r0 + bx lr +_021DDD3C: + mov r0, #1 + bx lr + + thumb_func_start MOD14_021DDD40 +MOD14_021DDD40: ; 0x021DDD40 + ldr r3, _021DDD44 ; =0x0200CA61 + bx r3 + .align 2, 0 +_021DDD44: .word 0x0200CA61 + + thumb_func_start MOD14_021DDD48 +MOD14_021DDD48: ; 0x021DDD48 + mov r1, #0x51 + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + + thumb_func_start MOD14_021DDD50 +MOD14_021DDD50: ; 0x021DDD50 + mov r1, #0x59 + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + + thumb_func_start MOD14_021DDD58 +MOD14_021DDD58: ; 0x021DDD58 + mov r1, #0x43 + lsl r1, r1, #4 + add r0, r0, r1 + bx lr + + thumb_func_start MOD14_021DDD60 +MOD14_021DDD60: ; 0x021DDD60 + ldr r1, _021DDD68 ; =0x0000B22C + add r0, r0, r1 + bx lr + nop +_021DDD68: .word 0x0000B22C + + thumb_func_start MOD14_021DDD6C +MOD14_021DDD6C: ; 0x021DDD6C + ldr r1, _021DDD74 ; =0x00005DC0 + add r0, r0, r1 + bx lr + nop +_021DDD74: .word 0x00005DC0 + + thumb_func_start MOD14_021DDD78 +MOD14_021DDD78: ; 0x021DDD78 + ldr r1, _021DDD80 ; =0x0000B3A8 + ldr r0, [r0, r1] + bx lr + nop +_021DDD80: .word 0x0000B3A8 + + thumb_func_start MOD14_021DDD84 +MOD14_021DDD84: ; 0x021DDD84 + ldr r1, _021DDD8C ; =0x0000662C + add r0, r0, r1 + bx lr + nop +_021DDD8C: .word 0x0000662C + + thumb_func_start MOD14_021DDD90 +MOD14_021DDD90: ; 0x021DDD90 + mov r1, #0x56 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DDD98 +MOD14_021DDD98: ; 0x021DDD98 + push {r3, lr} + mov r1, #0x16 + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DDDAC + mov r0, #0 + pop {r3, pc} +_021DDDAC: + mov r0, #0x2b + mvn r0, r0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD14_021DDDB4 +MOD14_021DDDB4: ; 0x021DDDB4 + str r1, [r0] + str r2, [r0, #8] + ldr r1, [sp] + str r3, [r0, #0xc] + str r1, [r0, #0x10] + add r1, r0, #0 + ldr r2, [sp, #4] + add r1, #0x20 + strb r2, [r1] + mov r1, #0 + str r1, [r0, #4] + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DDDD4 +MOD14_021DDDD4: ; 0x021DDDD4 + push {r3, r4, r5, lr} + sub sp, #0x20 + str r0, [sp] + lsl r0, r2, #0xc + str r0, [sp, #8] + lsl r0, r3, #0xc + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + str r1, [sp, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x34] + str r0, [sp, #0x18] + mov r0, #0xa + str r0, [sp, #0x1c] + bl OS_DisableInterrupts + add r4, r0, #0 + add r0, sp, #0 + bl FUN_0201FF84 + add r5, r0, #0 + add r0, r4, #0 + bl OS_RestoreInterrupts + cmp r5, #0 + beq _021DDE1E + add r0, r5, #0 + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_021DDE1E: + add r0, r5, #0 + add sp, #0x20 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DDE24 +MOD14_021DDE24: ; 0x021DDE24 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl OS_DisableInterrupts + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02020310 + add r0, r6, #0 + bl OS_RestoreInterrupts + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DDE40 +MOD14_021DDE40: ; 0x021DDE40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + lsl r1, r3, #0x1b + lsr r1, r1, #0x13 + mov ip, r1 + asr r1, r3, #5 + lsl r1, r1, #0x1b + lsr r1, r1, #0x13 + mov lr, r1 + asr r1, r3, #0xa + lsl r1, r1, #0x1b + lsr r1, r1, #0x13 + str r1, [sp, #4] + add r7, r0, #0 + str r2, [sp] + add r1, r2, #0 + sub r2, r2, #1 + ldr r0, [sp, #0x20] + str r2, [sp] + cmp r1, #0 + beq _021DDED6 +_021DDE6C: + ldrh r1, [r7] + add r7, r7, #2 + lsl r2, r1, #0x1b + lsr r4, r2, #0x13 + asr r2, r1, #5 + asr r1, r1, #0xa + lsl r2, r2, #0x1b + lsl r1, r1, #0x1b + lsr r3, r2, #0x13 + lsr r2, r1, #0x13 + mov r1, ip + sub r5, r1, r4 + asr r1, r5, #3 + lsr r1, r1, #0x1c + add r1, r5, r1 + asr r1, r1, #4 + mul r1, r0 + add r5, r4, r1 + mov r1, lr + sub r1, r1, r3 + asr r4, r1, #3 + lsr r4, r4, #0x1c + add r4, r1, r4 + asr r1, r4, #4 + mul r1, r0 + add r3, r3, r1 + ldr r1, [sp, #4] + sub r1, r1, r2 + asr r4, r1, #3 + lsr r4, r4, #0x1c + add r4, r1, r4 + asr r1, r4, #4 + mul r1, r0 + add r4, r2, r1 + asr r2, r5, #8 + mov r1, #0x1f + and r1, r2 + asr r2, r3, #8 + asr r3, r4, #8 + lsl r3, r3, #0x1b + lsl r2, r2, #0x1b + lsr r3, r3, #0x11 + lsr r2, r2, #0x16 + orr r2, r3 + orr r1, r2 + strh r1, [r6] + ldr r1, [sp] + add r6, r6, #2 + add r2, r1, #0 + sub r2, r2, #1 + str r2, [sp] + cmp r1, #0 + bne _021DDE6C +_021DDED6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DDEDC +MOD14_021DDEDC: ; 0x021DDEDC + ldr r1, _021DDEE4 ; =0x0000B3B0 + ldr r0, [r0, r1] + bx lr + nop +_021DDEE4: .word 0x0000B3B0 + + thumb_func_start MOD14_021DDEE8 +MOD14_021DDEE8: ; 0x021DDEE8 + ldr r0, _021DDEF0 ; =0x021E6A0C + mov r1, #0 + str r1, [r0] + bx lr + .align 2, 0 +_021DDEF0: .word 0x021E6A0C + + thumb_func_start MOD14_021DDEF4 +MOD14_021DDEF4: ; 0x021DDEF4 + push {r4, r5, r6, lr} + ldr r6, _021DDF28 ; =0x021E6A0C + ldr r0, [r6] + cmp r0, #0 + beq _021DDF26 + mov r4, #0 + cmp r0, #0 + bls _021DDF20 + ldr r5, _021DDF2C ; =0x021E6A10 +_021DDF06: + ldr r0, [r5, #8] + bl FUN_02016A18 + ldr r1, [r5] + cmp r1, #0 + beq _021DDF16 + ldr r0, [r5, #4] + blx r1 +_021DDF16: + ldr r0, [r6] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blo _021DDF06 +_021DDF20: + ldr r0, _021DDF28 ; =0x021E6A0C + mov r1, #0 + str r1, [r0] +_021DDF26: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DDF28: .word 0x021E6A0C +_021DDF2C: .word 0x021E6A10 + + thumb_func_start MOD14_021DDF30 +MOD14_021DDF30: ; 0x021DDF30 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021DDF60 ; =0x021E6A0C + add r4, r1, #0 + ldr r0, [r0] + add r6, r2, #0 + cmp r0, #0x20 + blo _021DDF44 + bl ErrorHandling +_021DDF44: + ldr r2, _021DDF60 ; =0x021E6A0C + mov r1, #0xc + ldr r0, [r2] + ldr r3, _021DDF64 ; =0x021E6A18 + mul r1, r0 + str r5, [r3, r1] + ldr r3, _021DDF68 ; =0x021E6A10 + add r0, r0, #1 + str r4, [r3, r1] + ldr r3, _021DDF6C ; =0x021E6A14 + str r0, [r2] + str r6, [r3, r1] + pop {r4, r5, r6, pc} + nop +_021DDF60: .word 0x021E6A0C +_021DDF64: .word 0x021E6A18 +_021DDF68: .word 0x021E6A10 +_021DDF6C: .word 0x021E6A14 + + thumb_func_start MOD14_021DDF70 +MOD14_021DDF70: ; 0x021DDF70 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r0, #0x40 + ldrb r0, [r0] + add r4, r1, #0 + add r7, r3, #0 + strb r0, [r5] + mov r0, #0xb + strb r0, [r5, #1] + mov r0, #0 + strb r0, [r5, #2] + add r0, r4, #0 + bl MOD14_021DDD98 + ldr r1, _021DDFE0 ; =0x0000585C + str r0, [r5, r1] + ldr r2, [r5, r1] + add r0, r1, #0 + add r2, #0x48 + sub r0, #8 + str r2, [r5, r0] + mov r0, #0x11 + ldr r2, [r5, r1] + lsl r0, r0, #4 + add r2, r2, r0 + sub r0, r1, #4 + str r2, [r5, r0] + add r0, r4, #0 + bl MOD14_021DDD50 + ldr r1, _021DDFE4 ; =0x00005980 + mov r2, #0x1e + str r0, [r5, r1] + ldr r0, [r5, r1] + add r1, r5, #0 + add r1, #0xa8 + bl MOD14_021E08E4 + ldr r0, _021DDFE4 ; =0x00005980 + mov r1, #0x1b + lsl r1, r1, #6 + ldr r0, [r5, r0] + add r1, r5, r1 + mov r2, #0x1e + bl MOD14_021E08E4 + ldr r1, _021DDFE8 ; =0x00005984 + str r7, [r5, r1] + add r0, r1, #4 + str r6, [r5, r0] + add r1, #8 + str r4, [r5, r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DDFE0: .word 0x0000585C +_021DDFE4: .word 0x00005980 +_021DDFE8: .word 0x00005984 + + thumb_func_start MOD14_021DDFEC +MOD14_021DDFEC: ; 0x021DDFEC + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DE010 ; =0x00005980 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0xa8 + mov r2, #0x1e + bl MOD14_021E0908 + ldr r0, _021DE010 ; =0x00005980 + mov r1, #0x1b + lsl r1, r1, #6 + ldr r0, [r4, r0] + add r1, r4, r1 + mov r2, #0x1e + bl MOD14_021E0908 + pop {r4, pc} + .align 2, 0 +_021DE010: .word 0x00005980 + + thumb_func_start MOD14_021DE014 +MOD14_021DE014: ; 0x021DE014 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _021DE060 ; =0x00005984 + mov r1, #3 + ldr r0, [r4, r0] + bl FUN_02017B48 + ldr r1, _021DE064 ; =0x0000585C + str r0, [r4, #0xc] + ldr r1, [r4, r1] + mov r2, #0 + sub r1, r0, r1 + add r3, r1, #0 + ldr r0, _021DE068 ; =0x000001FF + mov r1, #3 + and r3, r0 + ldr r0, _021DE060 ; =0x00005984 + str r3, [r4, #0xc] + ldr r0, [r4, r0] + bl FUN_020179E0 + mov r3, #0 + str r3, [sp] + mov r0, #0x40 + str r0, [sp, #4] + mov r0, #0x20 + str r0, [sp, #8] + mov r0, #9 + str r0, [sp, #0xc] + ldr r0, _021DE060 ; =0x00005984 + mov r1, #3 + ldr r0, [r4, r0] + mov r2, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021DE060: .word 0x00005984 +_021DE064: .word 0x0000585C +_021DE068: .word 0x000001FF + + thumb_func_start MOD14_021DE06C +MOD14_021DE06C: ; 0x021DE06C + push {r4, r5, r6, r7} + ldr r5, [sp, #0x10] + cmp r1, #0 + beq _021DE0A2 + ldrb r6, [r0, #2] + mov r4, #1 + add r7, r6, #0 + mov r6, #0x69 + eor r7, r4 + lsl r6, r6, #2 + mul r6, r7 + str r6, [r2] + mov r2, #0x17 + mul r2, r1 + ldrb r6, [r0, #1] + mov r1, #0x3f + add r2, r6, r2 + and r1, r2 + str r1, [r3] + ldrb r0, [r0, #2] + eor r0, r4 + lsl r1, r0, #1 + ldr r0, _021DE0C0 ; =0x021E656C + ldrh r0, [r0, r1] + str r0, [r5] + pop {r4, r5, r6, r7} + bx lr +_021DE0A2: + ldrb r4, [r0, #2] + mov r1, #0x69 + lsl r1, r1, #2 + mul r1, r4 + str r1, [r2] + ldrb r1, [r0, #1] + str r1, [r3] + ldrb r0, [r0, #2] + lsl r1, r0, #1 + ldr r0, _021DE0C0 ; =0x021E656C + ldrh r0, [r0, r1] + str r0, [r5] + pop {r4, r5, r6, r7} + bx lr + nop +_021DE0C0: .word 0x021E656C + + thumb_func_start MOD14_021DE0C4 +MOD14_021DE0C4: ; 0x021DE0C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + add r6, r2, #0 + add r1, sp, #8 + add r7, r3, #0 + str r1, [sp] + add r1, r6, #0 + add r2, sp, #0x10 + add r3, sp, #0xc + add r5, r0, #0 + bl MOD14_021DE06C + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + add r3, r7, #0 + bl MOD14_021DE138 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021DE1D0 + ldr r0, [sp, #8] + add r1, r4, #0 + str r0, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r5, #0 + bl MOD14_021DE278 + cmp r7, #0 + beq _021DE12C + cmp r6, #0 + bne _021DE12C + ldrb r3, [r5, #2] + mov r0, #0xb8 + mul r0, r6 + str r0, [sp] + ldr r0, _021DE130 ; =0x00000618 + add r1, r5, #0 + add r1, #0xa8 + mul r0, r3 + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, _021DE134 ; =0x00005980 + ldrb r2, [r4] + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD14_021DEB34 +_021DE12C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE130: .word 0x00000618 +_021DE134: .word 0x00005980 + + thumb_func_start MOD14_021DE138 +MOD14_021DE138: ; 0x021DE138 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + ldrb r2, [r1, #1] + add r7, r0, #0 + add r5, r3, #0 + lsl r1, r2, #1 + add r2, r2, r1 + ldr r1, _021DE1C4 ; =0x021E65AE + mov r0, #0x12 + ldrb r1, [r1, r2] + add r2, sp, #8 + mov r3, #0xa + bl FUN_02006C08 + str r0, [sp, #4] + cmp r0, #0 + beq _021DE1C0 + cmp r5, #0 + beq _021DE176 + ldr r0, [sp, #8] + mov r1, #0x20 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [sp, #8] + lsl r1, r4, #5 + ldr r0, [r0, #0xc] + mov r2, #0x20 + bl GX_LoadBGPltt +_021DE176: + ldr r0, _021DE1C8 ; =0x00005860 + mov r6, #0 + add r4, r6, #0 + add r5, r7, r0 +_021DE17E: + str r4, [sp] + ldr r0, [sp, #8] + ldr r3, _021DE1CC ; =0x00007FFF + ldr r0, [r0, #0xc] + add r1, r5, #0 + mov r2, #0x10 + bl MOD14_021DDE40 + add r6, r6, #1 + add r4, r4, #2 + add r5, #0x20 + cmp r6, #8 + blt _021DE17E + mov r2, #0x10 + str r2, [sp] + ldr r1, _021DE1C8 ; =0x00005860 + ldr r0, [sp, #8] + add r3, r7, r1 + lsl r1, r6, #5 + add r1, r3, r1 + ldr r0, [r0, #0xc] + ldr r3, _021DE1CC ; =0x00007FFF + bl MOD14_021DDE40 + ldr r0, _021DE1C8 ; =0x00005860 + mov r1, #0x12 + add r0, r7, r0 + lsl r1, r1, #4 + bl DC_FlushRange + ldr r0, [sp, #4] + bl FUN_02016A18 +_021DE1C0: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE1C4: .word 0x021E65AE +_021DE1C8: .word 0x00005860 +_021DE1CC: .word 0x00007FFF + + thumb_func_start MOD14_021DE1D0 +MOD14_021DE1D0: ; 0x021DE1D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r2, #0 + mov r2, #1 + add r5, r1, #0 + str r2, [sp] + ldrb r3, [r5, #1] + add r6, r0, #0 + mov r0, #0x12 + lsl r1, r3, #1 + add r3, r3, r1 + ldr r1, _021DE26C ; =0x021E65AD + ldrb r1, [r1, r3] + mov r3, #0xa + bl FUN_02006C98 + str r0, [sp, #0x10] + cmp r0, #0 + beq _021DE268 + add r1, sp, #0x14 + bl FUN_020B0030 + cmp r0, #0 + beq _021DE262 + mov r0, #0xa + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + beq _021DE250 + ldr r0, _021DE270 ; =0x00005984 + ldr r0, [r6, r0] + str r0, [r4] + mov r0, #0x15 + strb r0, [r4, #7] + mov r0, #4 + strb r0, [r4, #8] + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x14] + str r0, [r4, #0xc] + mov r0, #0 + ldr r1, [r5, #4] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0xd + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DE274 ; =0x00020100 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #4] + lsr r5, r3, #1 + mov r3, #0x54 + add r0, r4, #0 + sub r3, r3, r5 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02016A18 +_021DE250: + ldr r3, [sp, #0x14] + ldr r0, _021DE270 ; =0x00005984 + str r7, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r6, r0] + ldr r3, [r3, #0x10] + mov r1, #3 + bl FUN_02017E14 +_021DE262: + ldr r0, [sp, #0x10] + bl FUN_02016A18 +_021DE268: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE26C: .word 0x021E65AD +_021DE270: .word 0x00005984 +_021DE274: .word 0x00020100 + + thumb_func_start MOD14_021DE278 +MOD14_021DE278: ; 0x021DE278 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + mov r2, #1 + str r2, [sp] + add r6, r3, #0 + ldrb r3, [r1, #1] + add r5, r0, #0 + mov r0, #0x12 + lsl r1, r3, #1 + add r3, r3, r1 + ldr r1, _021DE2E0 ; =0x021E65AC + ldrb r1, [r1, r3] + mov r3, #0xa + bl FUN_02006C98 + str r0, [sp, #4] + cmp r0, #0 + beq _021DE2DC + add r1, sp, #8 + bl FUN_020B0180 + ldr r0, _021DE2E4 ; =0x00005984 + mov r1, #3 + ldr r0, [r5, r0] + bl FUN_0201886C + add r7, r0, #0 + beq _021DE2C2 + ldr r1, [sp, #0x20] + add r2, r4, #0 + str r1, [sp] + ldr r1, [sp, #8] + add r3, r6, #0 + add r1, #0xc + bl MOD14_021DECD4 +_021DE2C2: + ldr r0, [sp, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [sp] + ldr r0, _021DE2E4 ; =0x00005984 + mov r3, #1 + ldr r0, [r5, r0] + mov r1, #3 + add r2, r7, #0 + lsl r3, r3, #0xc + bl FUN_02017CE8 +_021DE2DC: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE2E0: .word 0x021E65AC +_021DE2E4: .word 0x00005984 + + thumb_func_start MOD14_021DE2E8 +MOD14_021DE2E8: ; 0x021DE2E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021DE384 ; =0x00005984 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #3 + add r6, r2, #0 + bl FUN_02017B48 + lsl r0, r0, #0x17 + lsr r1, r0, #0xb + mov r0, #0xb8 + add r7, r6, #0 + mul r7, r0 + lsl r0, r7, #0xc + str r1, [r5, #8] + add r1, r1, r0 + str r1, [r5, #0x14] + ldr r0, [r5, #8] + sub r0, r1, r0 + mov r1, #0x1e + bl _s32_div_f + str r0, [r5, #0x10] + ldr r0, [r5, #0x14] + asr r1, r0, #0xc + ldr r0, _021DE388 ; =0x000001FF + and r0, r1 + str r0, [r5, #0x14] + mov r0, #0x1e + str r0, [r5, #4] + ldrb r0, [r5, #2] + strb r0, [r5, #3] + mov r0, #0x17 + ldrb r1, [r5, #1] + mul r0, r6 + add r0, r1, r0 + strb r0, [r5, #1] + ldrb r1, [r5, #1] + mov r0, #0x3f + and r0, r1 + strb r0, [r5, #1] + ldrb r1, [r5, #2] + mov r0, #1 + eor r0, r1 + strb r0, [r5, #2] + ldrb r1, [r4] + add r0, r5, #0 + bl MOD14_021DE6B4 + ldr r1, [r5, #0x10] + add r0, r5, #0 + add r2, r7, #0 + bl MOD14_021DE48C + ldrb r0, [r4] + mov r1, #1 + mov r2, #0 + str r0, [r5, #0x30] + ldrb r0, [r5, #2] + str r0, [r5, #0x34] + add r0, r5, #0 + add r0, #0x98 + str r1, [r0] + add r0, r5, #0 + add r0, #0x9c + str r2, [r0] + ldr r0, _021DE38C ; =MOD14_021DE39C + add r1, r5, #0 + bl FUN_0200CA44 + ldr r0, _021DE390 ; =MOD14_021DE3E4 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021DDD40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE384: .word 0x00005984 +_021DE388: .word 0x000001FF +_021DE38C: .word MOD14_021DE39C +_021DE390: .word MOD14_021DE3E4 + + thumb_func_start MOD14_021DE394 +MOD14_021DE394: ; 0x021DE394 + add r0, #0x9c + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DE39C +MOD14_021DE39C: ; 0x021DE39C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021DE3C2 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #2 + bne _021DE3DC + ldr r1, [r4, #0x10] + add r0, r4, #0 + bl MOD14_021DE514 + mov r0, #0 + add r4, #0x98 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DE3C2: + ldr r0, [r4, #0x14] + str r0, [r4, #0xc] + ldr r0, _021DE3E0 ; =0x00005988 + ldr r0, [r4, r0] + bl MOD14_021DC424 + strb r0, [r4] + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #1 + add r4, #0x9c + str r0, [r4] +_021DE3DC: + pop {r3, r4, r5, pc} + nop +_021DE3E0: .word 0x00005988 + + thumb_func_start MOD14_021DE3E4 +MOD14_021DE3E4: ; 0x021DE3E4 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrb r3, [r5, #3] + add r6, r0, #0 + mov r0, #1 + add r4, r3, #0 + eor r4, r0 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021DE45C + add r0, r5, #0 + add r0, #0x98 + ldr r2, [r0] + cmp r2, #2 + bhs _021DE47E + ldr r6, _021DE480 ; =0x00000618 + add r1, #0xa8 + mul r6, r3 + add r0, r5, #0 + add r1, r1, r6 + bl MOD14_021DEBCC + ldr r1, _021DE480 ; =0x00000618 + add r2, r5, #0 + add r2, #0xa8 + mul r1, r4 + add r1, r2, r1 + add r2, r5, #0 + add r2, #0x98 + ldr r2, [r2] + add r0, r5, #0 + bl MOD14_021DEC24 + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + mov r2, #0 + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x98 + str r1, [r0] + ldr r0, [r5, #8] + asr r1, r0, #0xc + ldr r0, _021DE484 ; =0x000001FF + and r0, r1 + str r0, [r5, #0xc] + ldr r1, [r5, #8] + ldr r0, [r5, #0x10] + add r0, r1, r0 + str r0, [r5, #8] + ldr r0, _021DE488 ; =0x00005984 + ldr r3, [r5, #0xc] + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_020179E0 + ldr r0, [r5, #4] + sub r0, r0, #1 + str r0, [r5, #4] + pop {r4, r5, r6, pc} +_021DE45C: + ldr r0, _021DE488 ; =0x00005984 + ldr r3, [r5, #0x14] + ldr r0, [r5, r0] + mov r1, #3 + mov r2, #0 + bl FUN_020179E0 + ldr r1, _021DE480 ; =0x00000618 + add r0, r5, #0 + add r5, #0xa8 + mul r1, r4 + add r1, r5, r1 + bl MOD14_021DEC7C + add r0, r6, #0 + bl FUN_0200CAB4 +_021DE47E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DE480: .word 0x00000618 +_021DE484: .word 0x000001FF +_021DE488: .word 0x00005984 + + thumb_func_start MOD14_021DE48C +MOD14_021DE48C: ; 0x021DE48C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r7, #0 + str r0, [sp, #8] + add r0, #0xa8 + str r1, [sp] + str r2, [sp, #4] + add r6, r7, #0 + add r4, r5, #0 + str r0, [sp, #8] +_021DE4A2: + ldr r0, _021DE504 ; =0x0000585C + ldr r0, [r5, r0] + add r0, #0x70 + add r0, r0, r6 + lsl r1, r0, #0xc + ldr r0, [sp] + str r1, [r4, #0x68] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + ldr r0, _021DE504 ; =0x0000585C + ldr r0, [r5, r0] + add r0, #0x70 + add r1, r0, r6 + ldr r0, [sp, #4] + add r0, r0, r1 + lsl r1, r0, #0xc + ldr r0, [sp] + str r1, [r4, #0x38] + sub r0, r1, r0 + str r0, [r4, #0x50] + asr r2, r0, #0xc + ldr r0, _021DE508 ; =0x00005854 + ldr r0, [r5, r0] + cmp r2, r0 + ble _021DE4F6 + ldr r0, _021DE50C ; =0x00005858 + ldr r0, [r5, r0] + cmp r2, r0 + bge _021DE4F6 + ldrb r3, [r5, #3] + mov r1, #1 + add r0, r5, #0 + eor r1, r3 + ldr r3, _021DE510 ; =0x00000618 + mul r3, r1 + ldr r1, [sp, #8] + add r1, r1, r3 + add r3, r7, #0 + bl MOD14_021DE5B4 +_021DE4F6: + add r7, r7, #1 + add r6, #0x18 + add r4, r4, #4 + cmp r7, #6 + blt _021DE4A2 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE504: .word 0x0000585C +_021DE508: .word 0x00005854 +_021DE50C: .word 0x00005858 +_021DE510: .word 0x00000618 + + thumb_func_start MOD14_021DE514 +MOD14_021DE514: ; 0x021DE514 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r6, r1, #0 + ldrb r1, [r5, #3] + str r0, [sp] + add r0, #0xa8 + str r0, [sp] + ldr r0, _021DE5A8 ; =0x00000618 + add r2, r1, #0 + mul r2, r0 + str r2, [sp, #4] + mov r2, #1 + eor r1, r2 + mul r0, r1 + mov r7, #0 + add r4, r5, #0 + str r0, [sp, #8] +_021DE538: + add r0, r4, #0 + add r0, #0x80 + ldr r1, _021DE5AC ; =0x00005854 + ldr r0, [r0] + ldr r1, [r5, r1] + asr r0, r0, #0xc + cmp r0, r1 + ble _021DE550 + ldr r1, _021DE5B0 ; =0x00005858 + ldr r1, [r5, r1] + cmp r0, r1 + blt _021DE55E +_021DE550: + ldr r2, [sp] + ldr r1, [sp, #4] + add r0, r5, #0 + add r1, r2, r1 + add r2, r7, #0 + bl MOD14_021DE68C +_021DE55E: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + sub r0, r0, r6 + str r0, [r4, #0x68] + sub r1, r0, r6 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + ldr r0, [r4, #0x50] + sub r0, r0, r6 + str r0, [r4, #0x38] + sub r0, r0, r6 + str r0, [r4, #0x50] + asr r2, r0, #0xc + ldr r0, _021DE5AC ; =0x00005854 + ldr r0, [r5, r0] + cmp r2, r0 + ble _021DE59A + ldr r0, _021DE5B0 ; =0x00005858 + ldr r0, [r5, r0] + cmp r2, r0 + bge _021DE59A + ldr r3, [sp] + ldr r1, [sp, #8] + add r0, r5, #0 + add r1, r3, r1 + add r3, r7, #0 + bl MOD14_021DE5B4 +_021DE59A: + add r7, r7, #1 + add r4, r4, #4 + cmp r7, #6 + blt _021DE538 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021DE5A8: .word 0x00000618 +_021DE5AC: .word 0x00005854 +_021DE5B0: .word 0x00005858 + + thumb_func_start MOD14_021DE5B4 +MOD14_021DE5B4: ; 0x021DE5B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r1, #0 + ldr r1, _021DE678 ; =0x00005988 + str r0, [sp, #0x1c] + ldr r0, [r0, r1] + str r2, [sp, #0x20] + add r4, r3, #0 + bl MOD14_021DC44C + str r0, [sp, #0x30] + ldr r0, [sp, #0x1c] + mov r7, #0x28 + ldr r1, [r0, #0x34] + mov r0, #0x1e + add r2, r1, #0 + lsl r0, r0, #4 + mul r2, r0 + add r2, #0x58 + lsl r0, r4, #4 + add r0, r2, r0 + str r0, [sp, #0x28] + mov r0, #0x34 + mul r0, r4 + add r5, r5, r0 + mov r0, #0 + str r0, [sp, #0x2c] + ldr r1, _021DE67C ; =0x00000CD8 + ldr r0, [sp, #0x1c] + add r1, r0, r1 + lsl r0, r7, #4 + mul r0, r4 + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + lsl r1, r4, #1 + add r6, r0, r1 +_021DE5FE: + ldr r0, [r5] + cmp r0, #0 + bne _021DE64E + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x30] + ldr r1, [r1, #0x30] + add r2, r4, #0 + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + str r0, [sp, #0x34] + bl FUN_020672BC + cmp r0, #0 + beq _021DE64E + add r0, r4, #0 + bl MOD14_021DEB24 + ldr r1, [sp, #0x24] + ldr r2, _021DE680 ; =0x00005814 + str r1, [sp] + ldr r1, [sp, #0x20] + ldr r3, _021DE684 ; =0x000057D8 + str r1, [sp, #4] + str r7, [sp, #8] + mov r1, #2 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x14] + str r5, [sp, #0x18] + ldr r0, _021DE688 ; =0x00005980 + ldrh r2, [r6, r2] + ldr r0, [r1, r0] + ldrh r3, [r6, r3] + ldr r1, [sp, #0x34] + bl MOD14_021E0A60 +_021DE64E: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + add r0, #0x60 + str r0, [sp, #0x28] + mov r0, #0x4e + lsl r0, r0, #2 + add r5, r5, r0 + mov r0, #0xf + lsl r0, r0, #8 + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x2c] + add r6, #0xc + add r0, r0, #1 + add r4, r4, #6 + add r7, #0x18 + str r0, [sp, #0x2c] + cmp r0, #5 + blt _021DE5FE + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE678: .word 0x00005988 +_021DE67C: .word 0x00000CD8 +_021DE680: .word 0x00005814 +_021DE684: .word 0x000057D8 +_021DE688: .word 0x00005980 + + thumb_func_start MOD14_021DE68C +MOD14_021DE68C: ; 0x021DE68C + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x34 + mov r4, #0 + mov r7, #0x4e + add r5, r1, #0 + mul r0, r2 + add r5, r5, r0 + add r6, r4, #0 + lsl r7, r7, #2 +_021DE69E: + ldr r0, [r5] + cmp r0, #0 + beq _021DE6AA + bl FUN_0201FFC8 + str r6, [r5] +_021DE6AA: + add r4, r4, #1 + add r5, r5, r7 + cmp r4, #5 + blt _021DE69E + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DE6B4 +MOD14_021DE6B4: ; 0x021DE6B4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r1, [sp, #4] + ldr r1, _021DE71C ; =0x00005988 + str r0, [sp] + ldr r0, [r0, r1] + bl MOD14_021DC44C + ldr r4, [sp] + str r0, [sp, #8] + ldr r1, _021DE720 ; =0x00000CD8 + add r0, r4, #0 + mov r6, #0 + add r5, r0, r1 +_021DE6D0: + ldr r0, [sp, #8] + ldr r1, [sp, #4] + add r2, r6, #0 + bl FUN_0206B5E4 + mov r1, #5 + mov r2, #0 + add r7, r0, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DE70A + ldr r1, _021DE724 ; =0x00005814 + strh r0, [r4, r1] + add r0, r7, #0 + bl FUN_0206B688 + ldr r1, _021DE728 ; =0x000057D8 + mov r3, #0xa + strh r0, [r4, r1] + ldr r2, _021DE728 ; =0x000057D8 + ldr r1, [sp] + ldr r0, _021DE72C ; =0x00005980 + ldrh r2, [r4, r2] + ldr r0, [r1, r0] + add r1, r5, #0 + lsl r3, r3, #6 + bl MOD14_021E0BAC +_021DE70A: + mov r0, #0xa + lsl r0, r0, #6 + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, r0 + cmp r6, #0x1e + blo _021DE6D0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE71C: .word 0x00005988 +_021DE720: .word 0x00000CD8 +_021DE724: .word 0x00005814 +_021DE728: .word 0x000057D8 +_021DE72C: .word 0x00005980 + + thumb_func_start MOD14_021DE730 +MOD14_021DE730: ; 0x021DE730 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r1, #0 + add r0, #0xa3 + strb r1, [r0] + mov r0, #0xa + mov r1, #0x10 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021DE782 + str r5, [r4] + strh r6, [r4, #4] + ldr r0, [sp] + strh r7, [r4, #6] + str r0, [r4, #0xc] + mov r0, #2 + strh r0, [r4, #0xa] + cmp r7, r6 + ble _021DE762 + mov r0, #1 + b _021DE764 +_021DE762: + sub r0, r0, #3 +_021DE764: + strh r0, [r4, #8] + ldr r0, _021DE784 ; =MOD14_021DE788 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DE77C + mov r0, #1 + add r5, #0xa3 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DE77C: + add r0, r4, #0 + bl FUN_02016A18 +_021DE782: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE784: .word MOD14_021DE788 + + thumb_func_start MOD14_021DE788 +MOD14_021DE788: ; 0x021DE788 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + beq _021DE79C + sub r0, r0, #1 + strh r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_021DE79C: + mov r2, #4 + mov r1, #6 + ldrsh r0, [r4, r2] + ldrsh r1, [r4, r1] + cmp r0, r1 + beq _021DE7CA + mov r1, #8 + ldrsh r1, [r4, r1] + add r0, r0, r1 + strh r0, [r4, #4] + ldr r1, [r4] + ldr r0, _021DE7DC ; =0x00005860 + add r1, r1, r0 + ldrsh r0, [r4, r2] + mov r2, #0x20 + lsl r0, r0, #5 + add r0, r1, r0 + ldr r1, [r4, #0xc] + bl GX_LoadBGPltt + mov r0, #2 + strh r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_021DE7CA: + ldr r1, _021DE7E0 ; =MOD14_021DE7E4 + ldr r2, [r4] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DE7DC: .word 0x00005860 +_021DE7E0: .word MOD14_021DE7E4 + + thumb_func_start MOD14_021DE7E4 +MOD14_021DE7E4: ; 0x021DE7E4 + mov r1, #0 + add r0, #0xa3 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021DE7EC +MOD14_021DE7EC: ; 0x021DE7EC + push {r3, r4, lr} + sub sp, #4 + ldr r3, _021DE878 ; =0x021E6B90 + add r4, r1, #0 + ldr r1, [r3, #0xc] + cmp r1, #0 + beq _021DE806 + cmp r1, #1 + beq _021DE83C + cmp r1, #2 + beq _021DE868 + add sp, #4 + pop {r3, r4, pc} +_021DE806: + ldr r0, _021DE87C ; =0x021E6B94 + ldr r2, _021DE880 ; =0x021E6B98 + str r0, [sp] + ldr r3, _021DE884 ; =0x021E6B90 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DE06C + ldr r0, _021DE888 ; =0x00005988 + ldr r0, [r4, r0] + bl MOD14_021DC448 + ldr r2, _021DE878 ; =0x021E6B90 + add r1, r0, #0 + ldr r0, _021DE88C ; =0x021E69E0 + ldr r2, [r2, #4] + str r1, [r0] + add r0, r4, #0 + mov r3, #0 + bl MOD14_021DE138 + ldr r0, _021DE878 ; =0x021E6B90 + add sp, #4 + ldr r1, [r0, #0xc] + add r1, r1, #1 + str r1, [r0, #0xc] + pop {r3, r4, pc} +_021DE83C: + ldr r0, [r3, #4] + ldr r1, _021DE88C ; =0x021E69E0 + str r0, [sp] + ldr r2, [r3] + ldr r1, [r1] + ldr r3, [r3, #8] + add r0, r4, #0 + bl MOD14_021DE278 + ldr r1, _021DE88C ; =0x021E69E0 + ldr r2, _021DE878 ; =0x021E6B90 + ldr r1, [r1] + ldr r2, [r2, #8] + add r0, r4, #0 + bl MOD14_021DE1D0 + ldr r0, _021DE878 ; =0x021E6B90 + add sp, #4 + ldr r1, [r0, #0xc] + add r1, r1, #1 + str r1, [r0, #0xc] + pop {r3, r4, pc} +_021DE868: + mov r1, #0 + add r4, #0xa3 + strb r1, [r4] + str r1, [r3, #0xc] + bl FUN_0200CAB4 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021DE878: .word 0x021E6B90 +_021DE87C: .word 0x021E6B94 +_021DE880: .word 0x021E6B98 +_021DE884: .word 0x021E6B90 +_021DE888: .word 0x00005988 +_021DE88C: .word 0x021E69E0 + + thumb_func_start MOD14_021DE890 +MOD14_021DE890: ; 0x021DE890 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DE8C0 ; =MOD14_021DE7EC + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA98 + cmp r0, #0 + beq _021DE8A6 + mov r1, #1 + b _021DE8A8 +_021DE8A6: + mov r1, #0 +_021DE8A8: + add r0, r4, #0 + add r0, #0xa3 + add r4, #0xa3 + strb r1, [r0] + ldrb r0, [r4] + cmp r0, #0 + beq _021DE8BC + ldr r0, _021DE8C4 ; =0x021E6B90 + mov r1, #0 + str r1, [r0, #0xc] +_021DE8BC: + pop {r4, pc} + nop +_021DE8C0: .word MOD14_021DE7EC +_021DE8C4: .word 0x021E6B90 + + thumb_func_start MOD14_021DE8C8 +MOD14_021DE8C8: ; 0x021DE8C8 + push {r4, lr} + add r2, r0, #0 + mov r1, #0 + add r2, #0xa2 + strb r1, [r2] + ldrb r3, [r0, #2] + mov r2, #8 + lsl r4, r3, #1 + ldr r3, _021DE8E4 ; =0x021E656C + ldrh r3, [r3, r4] + lsl r3, r3, #5 + bl MOD14_021DE730 + pop {r4, pc} + .align 2, 0 +_021DE8E4: .word 0x021E656C + + thumb_func_start MOD14_021DE8E8 +MOD14_021DE8E8: ; 0x021DE8E8 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0xa2 + ldrb r1, [r1] + cmp r1, #4 + bhi _021DE976 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DE902: ; jump table + .short _021DE90C - _021DE902 - 2 ; case 0 + .short _021DE922 - _021DE902 - 2 ; case 1 + .short _021DE934 - _021DE902 - 2 ; case 2 + .short _021DE94A - _021DE902 - 2 ; case 3 + .short _021DE96A - _021DE902 - 2 ; case 4 +_021DE90C: + add r0, #0xa3 + ldrb r0, [r0] + cmp r0, #0 + bne _021DE976 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE922: + bl MOD14_021DE890 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE934: + add r0, #0xa3 + ldrb r0, [r0] + cmp r0, #0 + bne _021DE976 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE94A: + ldrb r3, [r4, #2] + mov r1, #8 + mov r2, #0 + lsl r5, r3, #1 + ldr r3, _021DE97C ; =0x021E656C + ldrh r3, [r3, r5] + lsl r3, r3, #5 + bl MOD14_021DE730 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE96A: + add r4, #0xa3 + ldrb r0, [r4] + cmp r0, #0 + bne _021DE976 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DE976: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021DE97C: .word 0x021E656C + + thumb_func_start MOD14_021DE980 +MOD14_021DE980: ; 0x021DE980 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r2, #0 + add r4, r1, #0 + mov r0, #0x34 + mul r4, r0 + add r0, r5, #0 + ldrb r2, [r5, #2] + ldr r1, _021DE9CC ; =0x00000618 + add r0, #0xa8 + mul r1, r2 + add r0, r0, r1 + add r6, r3, #0 + add r0, r0, r4 + add r1, r6, #0 + mov r2, #1 + bl MOD14_021E0930 + ldr r0, _021DE9D0 ; =0x00005980 + add r1, r6, #0 + ldr r0, [r5, r0] + add r2, r7, #0 + bl MOD14_021E0BBC + ldr r0, _021DE9D0 ; =0x00005980 + add r3, r5, #0 + ldrb r2, [r5, #2] + ldr r1, _021DE9CC ; =0x00000618 + add r3, #0xa8 + mul r1, r2 + add r1, r3, r1 + ldr r0, [r5, r0] + add r1, r1, r4 + mov r2, #1 + bl MOD14_021E08E4 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE9CC: .word 0x00000618 +_021DE9D0: .word 0x00005980 + + thumb_func_start MOD14_021DE9D4 +MOD14_021DE9D4: ; 0x021DE9D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldrb r0, [r6, #2] + add r7, r1, #0 + add r3, r6, #0 + str r0, [sp] + ldr r1, _021DEA30 ; =0x00000618 + ldr r0, [sp] + add r3, #0xa8 + mul r1, r0 + mov r0, #0x34 + add r4, r7, #0 + mul r4, r0 + add r5, r3, r1 + add r0, r2, #0 + add r1, r5, r4 + mov r2, #1 + bl MOD14_021E0930 + ldr r0, _021DEA34 ; =0x00005980 + add r1, r5, r4 + ldr r0, [r6, r0] + mov r2, #0 + bl MOD14_021E0C5C + mov r2, #0x1e + ldr r0, _021DEA34 ; =0x00005980 + ldr r3, [sp] + lsl r2, r2, #4 + mul r2, r3 + ldr r0, [r6, r0] + add r2, #0x58 + lsl r3, r7, #4 + add r1, r5, r4 + add r2, r2, r3 + bl MOD14_021E0BBC + add r0, r7, #0 + bl MOD14_021DEB24 + add r1, r0, #0 + ldr r0, [r5, r4] + bl MOD14_021DDE24 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEA30: .word 0x00000618 +_021DEA34: .word 0x00005980 + + thumb_func_start MOD14_021DEA38 +MOD14_021DEA38: ; 0x021DEA38 + ldrb r2, [r0, #2] + add r3, r0, #0 + ldr r0, _021DEA4C ; =0x00000618 + add r3, #0xa8 + mul r0, r2 + add r2, r3, r0 + mov r0, #0x34 + mul r0, r1 + add r0, r2, r0 + bx lr + .align 2, 0 +_021DEA4C: .word 0x00000618 + + thumb_func_start MOD14_021DEA50 +MOD14_021DEA50: ; 0x021DEA50 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, _021DEB14 ; =0x00005988 + ldr r0, [r5, r0] + ldr r0, [r0] + bl FUN_0206B330 + mov r4, #0 + str r0, [sp, #0x1c] + add r0, r5, #0 + str r0, [sp, #0x28] + add r0, #0xa8 + add r7, r4, #0 + str r4, [sp, #0x2c] + str r0, [sp, #0x28] +_021DEA70: + ldr r0, _021DEB14 ; =0x00005988 + ldr r1, [sp, #0x1c] + ldr r0, [r5, r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + str r0, [sp, #0x20] + bl FUN_020672BC + cmp r0, #0 + beq _021DEB02 + ldrb r1, [r5, #2] + ldr r0, _021DEB18 ; =0x00000618 + mul r0, r1 + str r0, [sp, #0x18] + add r0, r5, r0 + add r0, r7, r0 + str r1, [sp, #0x14] + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + bne _021DEB02 + add r0, r4, #0 + bl MOD14_021DEB24 + str r0, [sp, #0x24] + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + str r1, [sp, #0x10] + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + mov ip, r0 + mov r0, #2 + str r0, [sp] + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x10] + str r0, [sp, #4] + ldr r1, [sp, #0x14] + mov r0, #0x1e + add r2, r1, #0 + lsl r0, r0, #4 + mul r2, r0 + ldr r0, [sp, #0x2c] + add r2, #0x58 + add r0, r2, r0 + str r0, [sp, #8] + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x18] + ldr r2, _021DEB1C ; =0x0000585C + add r0, r1, r0 + add r0, r0, r7 + str r0, [sp, #0xc] + ldr r6, [r5, r2] + mov r2, #0x18 + ldr r0, _021DEB20 ; =0x00005980 + mul r2, r3 + add r6, #0x70 + add r2, r6, r2 + mov r6, ip + mov r3, #0x18 + mul r3, r6 + ldr r0, [r5, r0] + ldr r1, [sp, #0x20] + add r3, #0x28 + bl MOD14_021E0940 +_021DEB02: + ldr r0, [sp, #0x2c] + add r4, r4, #1 + add r0, #0x10 + add r7, #0x34 + str r0, [sp, #0x2c] + cmp r4, #0x1e + blt _021DEA70 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DEB14: .word 0x00005988 +_021DEB18: .word 0x00000618 +_021DEB1C: .word 0x0000585C +_021DEB20: .word 0x00005980 + + thumb_func_start MOD14_021DEB24 +MOD14_021DEB24: ; 0x021DEB24 + lsl r1, r0, #1 + ldr r0, _021DEB30 ; =0x021E6570 + ldrh r0, [r0, r1] + add r0, #0xb + bx lr + nop +_021DEB30: .word 0x021E6570 + + thumb_func_start MOD14_021DEB34 +MOD14_021DEB34: ; 0x021DEB34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r0, [sp, #0x10] + mov r0, #0x1e + lsl r0, r0, #4 + add r6, r3, #0 + mul r6, r0 + mov r0, #0x28 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x48] + mov r4, #0 + ldr r7, [sp, #0x4c] + str r1, [sp, #0x14] + str r2, [sp, #0x18] + add r6, #0x58 + str r4, [sp, #0x24] + str r0, [sp, #0x20] +_021DEB56: + mov r0, #0 + str r0, [sp, #0x28] + add r5, r0, #0 +_021DEB5C: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r0, [r0, #0x40] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0206B5E4 + mov r1, #5 + mov r2, #0 + str r0, [sp, #0x2c] + bl FUN_020672BC + cmp r0, #0 + beq _021DEBA0 + add r0, r4, #0 + bl MOD14_021DEB24 + mov r1, #2 + str r1, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + ldr r3, [sp, #0x10] + ldr r2, _021DEBC8 ; =0x0000585C + str r7, [sp, #0xc] + ldr r2, [r3, r2] + ldr r0, [sp, #0x14] + add r2, #0x70 + add r3, r2, r5 + ldr r2, [sp, #0x20] + ldr r1, [sp, #0x2c] + add r2, r2, r3 + ldr r3, [sp, #0x1c] + bl MOD14_021E0940 +_021DEBA0: + ldr r0, [sp, #0x28] + add r7, #0x34 + add r0, r0, #1 + add r4, r4, #1 + add r6, #0x10 + add r5, #0x18 + str r0, [sp, #0x28] + cmp r0, #6 + blo _021DEB5C + ldr r0, [sp, #0x1c] + add r0, #0x18 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #5 + blo _021DEB56 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEBC8: .word 0x0000585C + + thumb_func_start MOD14_021DEBCC +MOD14_021DEBCC: ; 0x021DEBCC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x18 + mul r0, r2 + add r5, r1, #0 + str r0, [sp, #8] +_021DEBDE: + ldr r1, [sp] + ldr r0, [sp, #8] + mov r7, #0 + add r4, r1, r0 +_021DEBE6: + ldr r0, [r5] + cmp r0, #0 + beq _021DEC0A + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0xc + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x68] + str r0, [sp, #0xc] + ldr r0, [r5] + bl FUN_02020044 +_021DEC0A: + add r7, r7, #1 + add r5, #0x34 + add r4, r4, #4 + cmp r7, #6 + blt _021DEBE6 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021DEBDE + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DEC24 +MOD14_021DEC24: ; 0x021DEC24 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x18 + mul r0, r2 + add r5, r1, #0 + str r0, [sp, #8] +_021DEC36: + ldr r1, [sp] + ldr r0, [sp, #8] + mov r7, #0 + add r4, r1, r0 +_021DEC3E: + ldr r0, [r5] + cmp r0, #0 + beq _021DEC62 + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0xc + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x38] + str r0, [sp, #0xc] + ldr r0, [r5] + bl FUN_02020044 +_021DEC62: + add r7, r7, #1 + add r5, #0x34 + add r4, r4, #4 + cmp r7, #6 + blt _021DEC3E + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021DEC36 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DEC7C +MOD14_021DEC7C: ; 0x021DEC7C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #0x10] + mov r0, #0x28 + add r5, r1, #0 + str r0, [sp] +_021DEC8E: + ldr r0, [sp] + mov r6, #0 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r4, r6, #0 +_021DEC98: + ldr r0, _021DECD0 ; =0x0000585C + ldr r0, [r7, r0] + add r0, #0x70 + add r0, r0, r4 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [r5] + cmp r0, #0 + beq _021DECB0 + add r1, sp, #8 + bl FUN_02020044 +_021DECB0: + add r6, r6, #1 + add r5, #0x34 + add r4, #0x18 + cmp r6, #6 + blt _021DEC98 + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021DEC8E + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DECD0: .word 0x0000585C + + thumb_func_start MOD14_021DECD4 +MOD14_021DECD4: ; 0x021DECD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + add r0, r2, #0 + add r7, r3, #0 + str r1, [sp, #4] + str r2, [sp, #8] + cmp r0, #0x20 + blo _021DECF0 + mov r1, #2 + ldr r0, [sp] + lsl r1, r1, #0xa + add r0, r0, r1 + str r0, [sp] +_021DECF0: + mov r0, #0 + mov ip, r0 + ldr r0, [sp, #0x28] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + orr r0, r7 + mov lr, r0 +_021DECFE: + ldr r0, [sp, #8] + mov r2, #0 + lsl r0, r0, #0x1b + lsr r1, r0, #0x1a + ldr r0, [sp] + add r4, r2, #0 + add r3, r0, r1 + mov r0, ip + lsl r1, r0, #1 + ldr r0, [sp, #4] + add r6, r0, r1 +_021DED14: + lsl r0, r4, #1 + ldrh r1, [r6, r0] + mov r0, #3 + lsl r0, r0, #0xa + add r5, r1, #0 + and r5, r0 + ldr r0, _021DEDCC ; =0x000003FF + add r2, r2, #1 + and r0, r1 + add r0, r0, r7 + add r1, r5, #0 + orr r1, r0 + ldr r0, [sp, #0xc] + add r4, #0x15 + orr r0, r1 + strh r0, [r3] + add r3, #0x40 + cmp r2, #0x14 + blo _021DED14 + mov r1, lr + lsl r1, r1, #0x10 + mov r0, #0 + lsr r1, r1, #0x10 +_021DED42: + add r0, r0, #1 + strh r1, [r3] + add r3, #0x40 + cmp r0, #4 + blo _021DED42 + ldr r0, [sp, #8] + add r1, r0, #1 + mov r0, #0x3f + and r0, r1 + str r0, [sp, #8] + bne _021DED62 + mov r1, #2 + ldr r0, [sp] + lsl r1, r1, #0xa + sub r0, r0, r1 + str r0, [sp] +_021DED62: + ldr r0, [sp, #8] + cmp r0, #0x20 + bne _021DED72 + mov r1, #2 + ldr r0, [sp] + lsl r1, r1, #0xa + add r0, r0, r1 + str r0, [sp] +_021DED72: + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #0x15 + blo _021DECFE + mov r1, lr + mov r3, #2 + mov r0, #0 + lsl r1, r1, #0x10 + lsl r3, r3, #0xa + lsr r5, r1, #0x10 + add r7, r0, #0 + mov r4, #0x3f + add r2, r3, #0 +_021DED8E: + ldr r1, [sp, #8] + lsl r1, r1, #0x1b + lsr r6, r1, #0x1a + ldr r1, [sp] + add r1, r1, r6 + add r6, r7, #0 +_021DED9A: + add r6, r6, #1 + strh r5, [r1] + add r1, #0x40 + cmp r6, #0x18 + blo _021DED9A + ldr r1, [sp, #8] + add r1, r1, #1 + and r1, r4 + str r1, [sp, #8] + bne _021DEDB4 + ldr r1, [sp] + sub r1, r1, r3 + str r1, [sp] +_021DEDB4: + ldr r1, [sp, #8] + cmp r1, #0x20 + bne _021DEDC0 + ldr r1, [sp] + add r1, r1, r2 + str r1, [sp] +_021DEDC0: + add r0, r0, #1 + cmp r0, #2 + blo _021DED8E + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEDCC: .word 0x000003FF + + thumb_func_start MOD14_021DEDD0 +MOD14_021DEDD0: ; 0x021DEDD0 + push {r4, lr} + add r2, r0, #0 + add r0, #0xa0 + strh r1, [r0] + add r0, r2, #0 + mov r3, #0 + add r0, #0xa4 + strb r3, [r0] + ldr r0, _021DEE00 ; =0x00005980 + add r4, r2, #0 + ldrb r3, [r2, #2] + ldr r0, [r2, r0] + ldr r2, _021DEE04 ; =0x00000618 + add r4, #0xa8 + mul r2, r3 + add r3, r4, r2 + mov r2, #0x34 + mul r2, r1 + add r1, r3, r2 + mov r2, #1 + bl MOD14_021E0C20 + pop {r4, pc} + nop +_021DEE00: .word 0x00005980 +_021DEE04: .word 0x00000618 + + thumb_func_start MOD14_021DEE08 +MOD14_021DEE08: ; 0x021DEE08 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r1, [r5, #2] + ldr r0, _021DEE9C ; =0x00000618 + add r2, r5, #0 + add r2, #0xa8 + mul r0, r1 + add r4, r2, r0 + add r0, r5, #0 + add r0, #0xa0 + ldrh r1, [r0] + mov r0, #0x34 + add r6, r1, #0 + mul r6, r0 + add r0, r5, #0 + add r0, #0xa4 + ldrb r0, [r0] + cmp r0, #0 + beq _021DEE34 + cmp r0, #1 + beq _021DEE86 + b _021DEE98 +_021DEE34: + ldr r0, _021DEEA0 ; =0x00005980 + add r1, r4, r6 + ldr r0, [r5, r0] + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DEE98 + ldr r0, _021DEEA4 ; =0x0000598C + ldr r0, [r5, r0] + bl MOD14_021DDEDC + add r7, r0, #0 + bl MOD14_021DA1B8 + cmp r0, #0 + beq _021DEE98 + add r0, r7, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + ldr r0, _021DEEA0 ; =0x00005980 + beq _021DEE6E + ldr r0, [r5, r0] + add r1, r4, r6 + mov r2, #1 + bl MOD14_021E0908 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DEE6E: + ldr r0, [r5, r0] + add r1, r4, r6 + mov r2, #2 + bl MOD14_021E0C20 + add r0, r5, #0 + add r0, #0xa4 + ldrb r0, [r0] + add r5, #0xa4 + add r0, r0, #1 + strb r0, [r5] + b _021DEE98 +_021DEE86: + ldr r0, _021DEEA0 ; =0x00005980 + add r1, r4, r6 + ldr r0, [r5, r0] + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DEE98 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DEE98: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DEE9C: .word 0x00000618 +_021DEEA0: .word 0x00005980 +_021DEEA4: .word 0x0000598C + + thumb_func_start MOD14_021DEEA8 +MOD14_021DEEA8: ; 0x021DEEA8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021DEEEC ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC484 + mov r6, #0 + add r7, r5, #0 + str r0, [sp] + add r4, r6, #0 + add r7, #0xa8 +_021DEEBE: + ldrb r2, [r5, #2] + ldr r0, _021DEEF0 ; =0x00000618 + add r1, r2, #0 + mul r1, r0 + add r0, r5, r1 + add r0, r4, r0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DEEE0 + ldr r0, _021DEEF4 ; =0x00005980 + add r1, r7, r1 + ldr r0, [r5, r0] + ldr r2, [sp] + add r1, r1, r4 + bl MOD14_021E0B54 +_021DEEE0: + add r6, r6, #1 + add r4, #0x34 + cmp r6, #0x1e + blt _021DEEBE + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEEEC: .word 0x00005988 +_021DEEF0: .word 0x00000618 +_021DEEF4: .word 0x00005980 + + thumb_func_start MOD14_021DEEF8 +MOD14_021DEEF8: ; 0x021DEEF8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x34 + mul r4, r0 + add r3, r5, #0 + ldrb r1, [r5, #2] + ldr r0, _021DEF40 ; =0x00000618 + add r3, #0xa8 + mul r0, r1 + add r1, r3, r0 + ldr r0, [r1, r4] + cmp r0, #0 + beq _021DEF3E + ldr r0, _021DEF44 ; =0x00005980 + add r1, r1, r4 + ldr r0, [r5, r0] + bl MOD14_021E0BA8 + ldr r0, _021DEF48 ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, _021DEF44 ; =0x00005980 + add r1, r5, #0 + ldr r0, [r5, r0] + ldrb r5, [r5, #2] + ldr r3, _021DEF40 ; =0x00000618 + add r1, #0xa8 + mul r3, r5 + add r1, r1, r3 + add r1, r1, r4 + bl MOD14_021E0B54 +_021DEF3E: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DEF40: .word 0x00000618 +_021DEF44: .word 0x00005980 +_021DEF48: .word 0x00005988 + + thumb_func_start MOD14_021DEF4C +MOD14_021DEF4C: ; 0x021DEF4C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DEF88 ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC3E0 + add r4, r0, #0 + ldr r0, _021DEF88 ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC45C + add r2, r0, #0 + add r3, r5, #0 + ldrb r1, [r5, #2] + ldr r0, _021DEF8C ; =0x00000618 + add r3, #0xa8 + mul r0, r1 + add r3, r3, r0 + mov r0, #0x34 + add r1, r4, #0 + mul r1, r0 + ldr r0, [r3, r1] + cmp r0, #0 + beq _021DEF86 + ldr r0, _021DEF90 ; =0x00005980 + add r1, r3, r1 + ldr r0, [r5, r0] + bl MOD14_021E0BA4 +_021DEF86: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DEF88: .word 0x00005988 +_021DEF8C: .word 0x00000618 +_021DEF90: .word 0x00005980 + + thumb_func_start MOD14_021DEF94 +MOD14_021DEF94: ; 0x021DEF94 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + add r0, sp, #0xc + str r0, [sp] + ldr r0, _021DF030 ; =0x00005988 + add r1, sp, #0x18 + ldr r0, [r4, r0] + add r2, sp, #0x14 + add r3, sp, #0x10 + bl MOD14_021DC4A4 + mov r5, #0 + str r5, [sp, #4] +_021DEFB0: + add r0, r4, #0 + str r0, [sp, #8] + add r0, #0xa8 + mov r7, #0 + str r0, [sp, #8] +_021DEFBA: + ldrb r2, [r4, #2] + ldr r0, _021DF034 ; =0x00000618 + add r1, r2, #0 + mul r1, r0 + add r0, r4, r1 + add r0, r5, r0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DF018 + ldr r6, [sp, #0x18] + ldr r2, [sp, #0x14] + sub r3, r7, r6 + sub r2, r2, r6 + ldr r0, [sp, #0x10] + cmp r3, r2 + bhi _021DEFE0 + mov r6, #1 + b _021DEFE2 +_021DEFE0: + mov r6, #0 +_021DEFE2: + ldr r2, [sp, #4] + sub r3, r2, r0 + ldr r2, [sp, #0xc] + sub r0, r2, r0 + cmp r3, r0 + bhi _021DEFF2 + mov r0, #1 + b _021DEFF4 +_021DEFF2: + mov r0, #0 +_021DEFF4: + tst r0, r6 + ldr r0, _021DF038 ; =0x00005980 + beq _021DF00A + ldr r2, [sp, #8] + ldr r0, [r4, r0] + add r1, r2, r1 + add r1, r1, r5 + mov r2, #1 + bl MOD14_021E0C5C + b _021DF018 +_021DF00A: + ldr r2, [sp, #8] + ldr r0, [r4, r0] + add r1, r2, r1 + add r1, r1, r5 + mov r2, #0 + bl MOD14_021E0C5C +_021DF018: + add r7, r7, #1 + add r5, #0x34 + cmp r7, #6 + blo _021DEFBA + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blo _021DEFB0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021DF030: .word 0x00005988 +_021DF034: .word 0x00000618 +_021DF038: .word 0x00005980 + + thumb_func_start MOD14_021DF03C +MOD14_021DF03C: ; 0x021DF03C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r7, r5, #0 + add r4, r6, #0 + add r7, #0xa8 +_021DF048: + ldrb r2, [r5, #2] + ldr r0, _021DF074 ; =0x00000618 + add r1, r2, #0 + mul r1, r0 + add r0, r5, r1 + add r0, r4, r0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DF06A + ldr r0, _021DF078 ; =0x00005980 + add r1, r7, r1 + ldr r0, [r5, r0] + add r1, r1, r4 + mov r2, #0 + bl MOD14_021E0C5C +_021DF06A: + add r6, r6, #1 + add r4, #0x34 + cmp r6, #0x1e + blt _021DF048 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DF074: .word 0x00000618 +_021DF078: .word 0x00005980 + + thumb_func_start MOD14_021DF07C +MOD14_021DF07C: ; 0x021DF07C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _021DF128 ; =0x00000794 + add r6, r1, #0 + str r6, [r5, r0] + add r4, r2, #0 + sub r0, r0, #4 + str r4, [r5, r0] + add r0, r6, #0 + str r3, [r5] + bl MOD14_021DDD58 + ldr r1, _021DF12C ; =0x00000758 + str r0, [r5, r1] + add r0, r6, #0 + bl MOD14_021DDD60 + ldr r1, _021DF130 ; =0x0000075C + str r0, [r5, r1] + add r0, r6, #0 + bl MOD14_021DDD50 + str r0, [r5, #0x48] + add r0, r4, #0 + bl MOD14_021DC3CC + ldr r1, _021DF134 ; =0x00000785 + strb r0, [r5, r1] + add r0, r4, #0 + bl MOD14_021DC3D0 + ldr r1, _021DF138 ; =0x00000789 + strb r0, [r5, r1] + add r0, r4, #0 + bl MOD14_021DC3D8 + ldr r1, _021DF13C ; =0x0000078A + strb r0, [r5, r1] + add r0, r4, #0 + bl MOD14_021DC3E8 + ldr r1, _021DF140 ; =0x0000078B + add r3, r5, #0 + strb r0, [r5, r1] + mov r2, #0 + str r2, [r5, #4] + str r2, [r5, #8] + str r2, [r5, #0xc] + add r0, r1, #0 + str r2, [r5, #0x10] + sub r0, #0x37 + str r2, [r5, r0] + add r0, r1, #3 + mov r2, #1 + strb r2, [r5, r0] + mov r0, #0xa + str r0, [sp] + mov r0, #0x12 + mov r1, #0xd + add r3, #0x1c + bl FUN_02006C30 + str r0, [r5, #0x14] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0xe + mov r2, #1 + add r3, #0x20 + bl FUN_02006C5C + str r0, [r5, #0x18] + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021DF11C + ldr r0, [r5, #0x18] + cmp r0, #0 + bne _021DF122 +_021DF11C: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021DF122: + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DF128: .word 0x00000794 +_021DF12C: .word 0x00000758 +_021DF130: .word 0x0000075C +_021DF134: .word 0x00000785 +_021DF138: .word 0x00000789 +_021DF13C: .word 0x0000078A +_021DF140: .word 0x0000078B + + thumb_func_start MOD14_021DF144 +MOD14_021DF144: ; 0x021DF144 + push {r4, r5, r6, lr} + sub sp, #0x38 + add r4, r0, #0 + add r0, #0x24 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x24 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0xc + bl FUN_02006AE4 + ldr r0, _021DF310 ; =0x00000785 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _021DF178 + mov r5, #1 + b _021DF17A +_021DF178: + mov r5, #2 +_021DF17A: + ldr r0, _021DF314 ; =0x00000794 + ldr r0, [r4, r0] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #0x20] + add r1, r4, #0 + str r0, [sp] + str r5, [sp, #4] + ldr r3, [r4, #0x1c] + add r0, sp, #0x14 + add r1, #0x24 + bl MOD14_021DDDB4 + ldr r2, _021DF318 ; =0x00000764 + add r3, r4, #0 + add r1, r2, #4 + add r0, r4, r2 + add r2, #0x21 + add r1, r4, r1 + add r2, r4, r2 + bl MOD14_021E0264 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r3, _021DF318 ; =0x00000764 + ldr r0, [r4] + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r1, sp, #0x14 + bl MOD14_021DDDD4 + str r0, [r4, #4] + mov r0, #0x2a + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r3, _021DF318 ; =0x00000764 + ldr r0, [r4] + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r1, sp, #0x14 + add r3, #0x18 + bl MOD14_021DDDD4 + str r0, [r4, #8] + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3CC + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3C4 + add r6, r0, #0 + cmp r6, #4 + beq _021DF1FC + mov r2, #0x6c + mov r5, #0xec + b _021DF200 +_021DF1FC: + mov r2, #0x40 + mov r5, #0xc0 +_021DF200: + mov r1, #2 + add r0, sp, #0x34 + strb r1, [r0] + mov r0, #0x2b + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + mov r3, #0x14 + bl MOD14_021DDDD4 + str r0, [r4, #0xc] + mov r0, #0x2b + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + add r2, r5, #0 + mov r3, #0x14 + bl MOD14_021DDDD4 + str r0, [r4, #0x10] + ldr r0, [r4, #8] + mov r1, #5 + bl FUN_02020130 + ldr r0, [r4, #8] + mov r1, #2 + bl FUN_02020238 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3CC + add r5, r0, #0 + cmp r5, #2 + ldr r0, [r4, #0xc] + beq _021DF262 + mov r1, #6 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #7 + bl FUN_02020130 + b _021DF270 +_021DF262: + mov r1, #8 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #9 + bl FUN_02020130 +_021DF270: + cmp r5, #0 + beq _021DF27C + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_020200A0 +_021DF27C: + cmp r6, #3 + beq _021DF2C0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3F4 + cmp r0, #1 + ldr r0, [r4, #4] + bne _021DF2A6 + mov r1, #0 + bl FUN_02020130 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + mov r2, #0x1e + bl MOD14_021E08E4 + mov r1, #0 + b _021DF2B4 +_021DF2A6: + mov r1, #2 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021DF324 + mov r1, #1 +_021DF2B4: + ldr r0, _021DF31C ; =0x0000078C + strb r1, [r4, r0] + ldr r0, _021DF320 ; =0x0000078D + mov r1, #0 + strb r1, [r4, r0] + b _021DF2F8 +_021DF2C0: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC538 + cmp r0, #0 + ldr r0, [r4, #4] + bne _021DF2DA + mov r1, #0 + bl FUN_02020130 + mov r1, #0 + b _021DF2E2 +_021DF2DA: + mov r1, #2 + bl FUN_02020130 + mov r1, #1 +_021DF2E2: + ldr r0, _021DF320 ; =0x0000078D + mov r2, #0x1e + strb r1, [r4, r0] + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + bl MOD14_021E08E4 + ldr r0, _021DF31C ; =0x0000078C + mov r1, #0 + strb r1, [r4, r0] +_021DF2F8: + ldr r0, _021DF314 ; =0x00000794 + ldr r0, [r4, r0] + bl MOD14_021DDD78 + mov r1, #0x76 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD14_021E0008 + add sp, #0x38 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DF310: .word 0x00000785 +_021DF314: .word 0x00000794 +_021DF318: .word 0x00000764 +_021DF31C: .word 0x0000078C +_021DF320: .word 0x0000078D + + thumb_func_start MOD14_021DF324 +MOD14_021DF324: ; 0x021DF324 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r5, #0 + str r0, [r2] + ldr r0, [r5, #0x48] + add r1, #0x4c + mov r2, #1 + bl MOD14_021E08E4 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC458 + add r4, r0, #0 + ldr r0, [r5, #4] + bl FUN_02020240 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _021DF398 ; =0x000004D8 + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x4c + str r0, [sp, #0xc] + ldr r3, [sp, #0x14] + ldr r2, [sp, #0x10] + asr r3, r3, #0xc + ldr r0, [r5, #0x48] + asr r2, r2, #0xc + add r3, r3, #4 + bl MOD14_021E0940 + ldr r1, _021DF39C ; =0x00000664 + mov r0, #0 + str r0, [r5, r1] + add r0, r1, #4 + ldr r2, _021DF3A0 ; =0xFFFFC000 + add r1, #0xf0 + str r2, [r5, r0] + mov r2, #1 + ldr r0, _021DF3A4 ; =0x0000078C + str r2, [r5, r1] + strb r2, [r5, r0] + add sp, #0x1c + pop {r4, r5, pc} + nop +_021DF398: .word 0x000004D8 +_021DF39C: .word 0x00000664 +_021DF3A0: .word 0xFFFFC000 +_021DF3A4: .word 0x0000078C + + thumb_func_start MOD14_021DF3A8 +MOD14_021DF3A8: ; 0x021DF3A8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DF3BA + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x14] +_021DF3BA: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021DF3C8 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x18] +_021DF3C8: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021DF3D6 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #4] +_021DF3D6: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DF3E4 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #8] +_021DF3E4: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021DF3F2 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #0xc] +_021DF3F2: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DF400 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #0x10] +_021DF400: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DF404 +MOD14_021DF404: ; 0x021DF404 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0 + add r5, r1, #0 + str r0, [r2] + str r0, [r5] + ldr r0, _021DF47C ; =0x00000785 + ldrb r1, [r4, r0] + cmp r1, #4 + bhi _021DF478 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DF424: ; jump table + .short _021DF42E - _021DF424 - 2 ; case 0 + .short _021DF478 - _021DF424 - 2 ; case 1 + .short _021DF458 - _021DF424 - 2 ; case 2 + .short _021DF46C - _021DF424 - 2 ; case 3 + .short _021DF46C - _021DF424 - 2 ; case 4 +_021DF42E: + add r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021DF478 + add r0, #0xb + ldr r0, [r4, r0] + bl MOD14_021DC3D0 + ldr r1, _021DF480 ; =0x00000789 + ldrsb r1, [r4, r1] + cmp r1, #0 + bne _021DF44A + cmp r0, #5 + beq _021DF452 +_021DF44A: + cmp r1, #5 + bne _021DF478 + cmp r0, #0 + bne _021DF478 +_021DF452: + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DF458: + add r0, r0, #1 + ldrb r0, [r4, r0] + add r0, #0xfd + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _021DF478 + mov r0, #1 + str r0, [r2] + pop {r3, r4, r5, pc} +_021DF46C: + add r0, r0, #1 + ldrb r0, [r4, r0] + cmp r0, #2 + bne _021DF478 + mov r0, #1 + str r0, [r2] +_021DF478: + pop {r3, r4, r5, pc} + nop +_021DF47C: .word 0x00000785 +_021DF480: .word 0x00000789 + + thumb_func_start MOD14_021DF484 +MOD14_021DF484: ; 0x021DF484 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r2, _021DF584 ; =0x0000076C + add r5, r0, #0 + add r1, r2, #4 + add r0, r5, r2 + add r2, #0x1a + add r1, r5, r1 + add r2, r5, r2 + add r3, r5, #0 + bl MOD14_021E0264 + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD14_021DF404 + ldr r0, _021DF588 ; =0x00000786 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _021DF4B6 + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_020200A0 +_021DF4B6: + ldr r1, _021DF58C ; =0x00000764 + ldr r0, [r5, r1] + lsl r2, r0, #0xc + add r0, r1, #0 + add r0, #0x10 + str r2, [r5, r0] + add r0, r1, #4 + ldr r0, [r5, r0] + lsl r2, r0, #0xc + add r0, r1, #0 + add r0, #0x14 + str r2, [r5, r0] + add r0, r1, #0 + add r0, #8 + ldr r6, [r5, r0] + add r0, r1, #0 + add r0, #0xc + ldr r2, [r5, r0] + ldr r7, [sp, #4] + lsl r4, r6, #0xc + lsl r0, r2, #0xc + cmp r7, #0 + bne _021DF4EC + add r1, #0x10 + ldr r1, [r5, r1] + sub r1, r4, r1 + b _021DF514 +_021DF4EC: + add r3, r1, #0 + add r3, #0x10 + ldr r3, [r5, r3] + cmp r4, r3 + ble _021DF506 + mov r3, #0x11 + ldr r1, [r5, r1] + lsl r3, r3, #4 + sub r3, r3, r6 + sub r1, #0x46 + add r1, r3, r1 + neg r1, r1 + b _021DF512 +_021DF506: + ldr r3, [r5, r1] + mov r1, #0x11 + lsl r1, r1, #4 + sub r1, r1, r3 + sub r6, #0x46 + add r1, r1, r6 +_021DF512: + lsl r1, r1, #0xc +_021DF514: + ldr r3, [sp] + cmp r3, #0 + bne _021DF522 + ldr r2, _021DF590 ; =0x00000778 + ldr r2, [r5, r2] + sub r4, r0, r2 + b _021DF548 +_021DF522: + ldr r4, _021DF590 ; =0x00000778 + ldr r6, [r5, r4] + cmp r0, r6 + ble _021DF53A + mov r0, #0xd0 + sub r4, #0x10 + sub r2, r0, r2 + ldr r0, [r5, r4] + add r0, #0x18 + add r0, r2, r0 + neg r4, r0 + b _021DF546 +_021DF53A: + sub r4, #0x10 + ldr r4, [r5, r4] + mov r0, #0xd0 + sub r0, r0, r4 + add r2, #0x18 + add r4, r0, r2 +_021DF546: + lsl r4, r4, #0xc +_021DF548: + cmp r7, #0 + bne _021DF550 + cmp r3, #0 + beq _021DF554 +_021DF550: + mov r6, #0xc + b _021DF556 +_021DF554: + mov r6, #6 +_021DF556: + add r0, r1, #0 + add r1, r6, #0 + bl _s32_div_f + ldr r1, _021DF594 ; =0x0000077C + str r0, [r5, r1] + add r0, r4, #0 + add r1, r6, #0 + bl _s32_div_f + mov r1, #0x1e + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #7 + strb r6, [r5, r0] + ldr r0, _021DF598 ; =MOD14_021DF5B0 + add r1, r5, #0 + mov r2, #0 + bl MOD14_021DDD40 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DF584: .word 0x0000076C +_021DF588: .word 0x00000786 +_021DF58C: .word 0x00000764 +_021DF590: .word 0x00000778 +_021DF594: .word 0x0000077C +_021DF598: .word MOD14_021DF5B0 + + thumb_func_start MOD14_021DF59C +MOD14_021DF59C: ; 0x021DF59C + ldr r1, _021DF5AC ; =0x00000787 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021DF5A8 + mov r0, #1 + bx lr +_021DF5A8: + mov r0, #0 + bx lr + .align 2, 0 +_021DF5AC: .word 0x00000787 + + thumb_func_start MOD14_021DF5B0 +MOD14_021DF5B0: ; 0x021DF5B0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + ldr r0, _021DF72C ; =0x00000787 + str r1, [sp, #8] + ldrb r2, [r4, r0] + cmp r2, #0 + beq _021DF68A + add r1, r0, #0 + sub r1, #0x13 + ldr r2, [r4, r1] + add r1, r0, #0 + sub r1, #0xb + ldr r1, [r4, r1] + add r2, r2, r1 + add r1, r0, #0 + sub r1, #0x13 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #0xb + ldr r1, [r4, r1] + cmp r1, #0 + ble _021DF5F8 + add r1, r0, #0 + sub r1, #0x13 + ldr r2, [r4, r1] + mov r1, #0x11 + lsl r1, r1, #0x10 + cmp r2, r1 + ble _021DF5F8 + ldr r1, _021DF730 ; =0x00156000 + sub r0, #0x13 + sub r1, r1, r2 + str r1, [r4, r0] +_021DF5F8: + ldr r1, _021DF734 ; =0x0000077C + ldr r0, [r4, r1] + cmp r0, #0 + bge _021DF61A + add r0, r1, #0 + sub r0, #8 + ldr r2, [r4, r0] + mov r0, #0x46 + lsl r0, r0, #0xc + cmp r2, r0 + bge _021DF61A + sub r2, r0, r2 + mov r0, #0x11 + lsl r0, r0, #0x10 + sub r0, r0, r2 + sub r1, #8 + str r0, [r4, r1] +_021DF61A: + ldr r1, _021DF738 ; =0x00000778 + add r0, r1, #0 + add r0, #8 + ldr r2, [r4, r1] + ldr r0, [r4, r0] + add r0, r2, r0 + str r0, [r4, r1] + add r0, r1, #0 + add r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + ble _021DF644 + mov r0, #0xd + ldr r2, [r4, r1] + lsl r0, r0, #0x10 + cmp r2, r0 + ble _021DF644 + mov r0, #0x2e + lsl r0, r0, #0xe + sub r0, r0, r2 + str r0, [r4, r1] +_021DF644: + mov r1, #0x1e + lsl r1, r1, #6 + ldr r0, [r4, r1] + cmp r0, #0 + bge _021DF666 + add r0, r1, #0 + sub r0, #8 + ldr r2, [r4, r0] + ldr r0, _021DF73C ; =0xFFFE8000 + cmp r2, r0 + bge _021DF666 + sub r2, r0, r2 + mov r0, #0xd + lsl r0, r0, #0x10 + sub r0, r0, r2 + sub r1, #8 + str r0, [r4, r1] +_021DF666: + ldr r0, _021DF740 ; =0x00000774 + ldr r1, [r4, r0] + add r0, r0, #4 + str r1, [sp] + ldr r0, [r4, r0] + add r1, sp, #0 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF72C ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r4, r5, pc} +_021DF68A: + add r2, r0, #0 + sub r2, #0x1b + ldr r2, [r4, r2] + sub r0, #0x17 + lsl r2, r2, #0xc + str r2, [sp] + ldr r0, [r4, r0] + lsl r0, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021E0320 + ldr r0, _021DF744 ; =0x0000076C + add r1, r0, #0 + ldr r2, [r4, r0] + sub r1, #8 + str r2, [r4, r1] + add r1, r0, #4 + ldr r2, [r4, r1] + sub r1, r0, #4 + str r2, [r4, r1] + add r1, r0, #0 + add r1, #0x1a + ldrb r2, [r4, r1] + add r1, r0, #0 + add r1, #0x19 + strb r2, [r4, r1] + add r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021DC3D0 + ldr r1, _021DF748 ; =0x00000789 + strb r0, [r4, r1] + add r0, r1, #7 + ldr r0, [r4, r0] + bl MOD14_021DC3D8 + ldr r1, _021DF74C ; =0x0000078A + strb r0, [r4, r1] + add r0, r1, #6 + ldr r0, [r4, r0] + bl MOD14_021DC3E8 + ldr r1, _021DF750 ; =0x0000078B + strb r0, [r4, r1] + sub r0, r1, #5 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DF6F8 + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_020200A0 +_021DF6F8: + ldr r0, _021DF754 ; =0x00000786 + ldrb r0, [r4, r0] + cmp r0, #2 + ldr r0, [r4, #0xc] + beq _021DF712 + mov r1, #6 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #7 + bl FUN_02020130 + b _021DF720 +_021DF712: + mov r1, #8 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #9 + bl FUN_02020130 +_021DF720: + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r4, r5, pc} + nop +_021DF72C: .word 0x00000787 +_021DF730: .word 0x00156000 +_021DF734: .word 0x0000077C +_021DF738: .word 0x00000778 +_021DF73C: .word 0xFFFE8000 +_021DF740: .word 0x00000774 +_021DF744: .word 0x0000076C +_021DF748: .word 0x00000789 +_021DF74C: .word 0x0000078A +_021DF750: .word 0x0000078B +_021DF754: .word 0x00000786 + + thumb_func_start MOD14_021DF758 +MOD14_021DF758: ; 0x021DF758 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r1, #2 + mov r0, #0x1e + lsl r1, r1, #0xc + lsl r0, r0, #6 + str r1, [r4, r0] + add r1, r0, #0 + sub r1, #0x18 + ldr r2, [r4, r1] + add r1, r0, #0 + add r2, #0xc + sub r1, #0x10 + str r2, [r4, r1] + add r1, r0, #7 + mov r2, #6 + strb r2, [r4, r1] + mov r1, #0 + add r0, r0, #4 + strb r1, [r4, r0] + add r0, r4, #0 + bl MOD14_021E03CC + ldr r0, _021DF79C ; =MOD14_021DF7B4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + pop {r4, pc} + nop +_021DF79C: .word MOD14_021DF7B4 + + thumb_func_start MOD14_021DF7A0 +MOD14_021DF7A0: ; 0x021DF7A0 + ldr r1, _021DF7B0 ; =0x00000784 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _021DF7AC + mov r0, #1 + bx lr +_021DF7AC: + mov r0, #0 + bx lr + .align 2, 0 +_021DF7B0: .word 0x00000784 + + thumb_func_start MOD14_021DF7B4 +MOD14_021DF7B4: ; 0x021DF7B4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + ldr r1, _021DF888 ; =0x00000784 + str r0, [r3] + ldrb r0, [r4, r1] + cmp r0, #0 + beq _021DF7E0 + cmp r0, #1 + beq _021DF83C + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DF7E0: + add r0, r1, #0 + mov r3, #0 + add r0, #0xa + strb r3, [r4, r0] + add r0, r1, #3 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DF80E + sub r0, r1, #4 + ldr r3, [sp, #4] + ldr r0, [r4, r0] + add r1, r2, #0 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF88C ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF80E: + sub r1, #0x14 + ldr r0, [r4, r1] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021E0554 + ldr r0, _021DF88C ; =0x00000787 + mov r1, #6 + strb r1, [r4, r0] + sub r1, r0, #3 + ldrb r1, [r4, r1] + sub r0, r0, #3 + add r1, r1, #1 + strb r1, [r4, r0] +_021DF83C: + ldr r0, _021DF88C ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DF862 + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021E0320 + ldr r0, _021DF88C ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF862: + sub r0, #0x1f + ldr r0, [r4, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF888 ; =0x00000784 + mov r1, #0xff + strb r1, [r4, r0] + mov r1, #1 + add r0, #0xa + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DF888: .word 0x00000784 +_021DF88C: .word 0x00000787 + + thumb_func_start MOD14_021DF890 +MOD14_021DF890: ; 0x021DF890 + add r1, r0, #0 + mov r2, #2 + mov r0, #0x1e + lsl r2, r2, #0xc + lsl r0, r0, #6 + str r2, [r1, r0] + add r2, r0, #0 + sub r2, #0x18 + ldr r3, [r1, r2] + add r2, r0, #0 + add r3, #0xc + sub r2, #0x10 + str r3, [r1, r2] + add r2, r0, #7 + mov r3, #6 + strb r3, [r1, r2] + ldr r3, _021DF8BC ; =MOD14_021DDD40 + mov r2, #0 + add r0, r0, #4 + strb r2, [r1, r0] + ldr r0, _021DF8C0 ; =MOD14_021DF8F8 + bx r3 + .align 2, 0 +_021DF8BC: .word MOD14_021DDD40 +_021DF8C0: .word MOD14_021DF8F8 + + thumb_func_start MOD14_021DF8C4 +MOD14_021DF8C4: ; 0x021DF8C4 + push {r4, lr} + ldr r1, _021DF8F0 ; =0x00000784 + add r4, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0xff + bne _021DF8EC + bl MOD14_021E0588 + ldr r2, _021DF8F4 ; =0x00000754 + add r1, r4, #0 + ldr r0, [r4, #0x48] + ldr r2, [r4, r2] + add r1, #0x4c + bl MOD14_021E08E4 + ldr r0, _021DF8F4 ; =0x00000754 + mov r1, #0 + str r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_021DF8EC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DF8F0: .word 0x00000784 +_021DF8F4: .word 0x00000754 + + thumb_func_start MOD14_021DF8F8 +MOD14_021DF8F8: ; 0x021DF8F8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + ldr r1, _021DF9D4 ; =0x00000784 + str r0, [r3] + ldrb r0, [r4, r1] + cmp r0, #0 + beq _021DF924 + cmp r0, #1 + beq _021DF980 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DF924: + add r0, r1, #0 + mov r3, #0 + add r0, #0xa + strb r3, [r4, r0] + add r0, r1, #3 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DF952 + sub r0, r1, #4 + ldr r3, [sp, #4] + ldr r0, [r4, r0] + add r1, r2, #0 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF9D8 ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF952: + sub r1, #0x14 + ldr r0, [r4, r1] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021E0714 + ldr r0, _021DF9D8 ; =0x00000787 + mov r1, #6 + strb r1, [r4, r0] + sub r1, r0, #3 + ldrb r1, [r4, r1] + sub r0, r0, #3 + add r1, r1, #1 + strb r1, [r4, r0] +_021DF980: + ldr r0, _021DF9D8 ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DF9A6 + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021E0320 + ldr r0, _021DF9D8 ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF9A6: + sub r0, #0x1f + ldr r0, [r4, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, _021DF9D4 ; =0x00000784 + mov r1, #0xff + strb r1, [r4, r0] + mov r1, #1 + add r0, #0xa + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DF9D4: .word 0x00000784 +_021DF9D8: .word 0x00000787 + + thumb_func_start MOD14_021DF9DC +MOD14_021DF9DC: ; 0x021DF9DC + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02020130 + ldr r0, _021DFA50 ; =0x00000788 + mov r1, #0 + strb r1, [r5, r0] + add r0, r5, #0 + bl MOD14_021E0740 + add r4, r0, #0 + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r4, #0 + bl FUN_0202032C + str r0, [sp] + ldr r1, [r5, #0x4c] + ldr r2, [sp, #0x14] + add r0, r5, #0 + mov r3, #1 + bl MOD14_021DFA7C + ldr r0, [r5, #0x4c] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r5, #0x4c] + bl FUN_0202032C + str r0, [sp] + mov r3, #0 + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mvn r3, r3 + bl MOD14_021DFA7C + ldr r0, _021DFA54 ; =0x00000784 + mov r1, #0 + strb r1, [r5, r0] + add sp, #0x1c + pop {r4, r5, pc} + nop +_021DFA50: .word 0x00000788 +_021DFA54: .word 0x00000784 + + thumb_func_start MOD14_021DFA58 +MOD14_021DFA58: ; 0x021DFA58 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DFB08 + cmp r0, #0 + beq _021DFA76 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021E062C + mov r0, #1 + pop {r4, pc} +_021DFA76: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DFA7C +MOD14_021DFA7C: ; 0x021DFA7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0xa + mov r1, #0x2c + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021DFAFC + add r0, r6, #0 + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #0xc + str r0, [r2] + str r6, [r4] + strh r1, [r4, #4] + mov r0, #6 + strh r0, [r4, #6] + ldr r0, [sp, #0x28] + str r0, [r4, #8] + ldr r0, [sp, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #4] + str r0, [r4, #0x14] + str r7, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [sp] + add r2, r0, #0 + mul r2, r1 + str r2, [r4, #0x24] + ldr r2, [r4, #0x10] + ldr r0, [r4, #0xc] + sub r0, r2, r0 + bl _s32_div_f + str r0, [r4, #0x1c] + mov r0, #0xf + lsl r0, r0, #0xc + str r0, [r4, #0x20] + ldr r0, _021DFB00 ; =MOD14_021DFB28 + add r1, r4, #0 + mov r2, #0 + str r5, [r4, #0x28] + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DFAF6 + ldr r0, _021DFB04 ; =0x00000788 + mov r1, #1 + add sp, #0x10 + strb r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DFAF6: + add r0, r4, #0 + bl FUN_02016A18 +_021DFAFC: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DFB00: .word MOD14_021DFB28 +_021DFB04: .word 0x00000788 + + thumb_func_start MOD14_021DFB08 +MOD14_021DFB08: ; 0x021DFB08 + ldr r1, _021DFB18 ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021DFB14 + mov r0, #1 + bx lr +_021DFB14: + mov r0, #0 + bx lr + .align 2, 0 +_021DFB18: .word 0x00000788 + + thumb_func_start MOD14_021DFB1C +MOD14_021DFB1C: ; 0x021DFB1C + ldr r1, _021DFB24 ; =0x00000788 + mov r2, #0 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_021DFB24: .word 0x00000788 + + thumb_func_start MOD14_021DFB28 +MOD14_021DFB28: ; 0x021DFB28 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldrh r0, [r4, #4] + cmp r0, #0 + beq _021DFB90 + sub r0, r0, #1 + strh r0, [r4, #4] + ldrh r1, [r4, #4] + ldrh r0, [r4, #6] + cmp r1, r0 + bne _021DFB5E + ldr r0, [r4] + ldr r1, [r4, #8] + bl MOD14_021DDE24 +_021DFB5E: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [r4, #0xc] + str r0, [sp, #4] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x20] + add r0, r1, r0 + str r0, [r4, #0x18] + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B93C + ldr r1, [r4, #0x24] + add r2, r1, #0 + mul r2, r0 + ldr r0, [r4, #0x14] + add r1, sp, #0 + add r0, r0, r2 + str r0, [sp] + ldr r0, [r4] + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DFB90: + ldr r0, [r4, #0x14] + add r1, r2, #0 + str r0, [sp] + ldr r0, [r4, #0x10] + str r0, [sp, #4] + ldr r0, [r4] + bl FUN_02020044 + ldr r1, _021DFBB4 ; =MOD14_021DFB1C + ldr r2, [r4, #0x28] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DFBB4: .word MOD14_021DFB1C + + thumb_func_start MOD14_021DFBB8 +MOD14_021DFBB8: ; 0x021DFBB8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _021DFC1C ; =0x0000078C + ldrb r1, [r4, r0] + cmp r1, #0 + bne _021DFBD6 + add r0, r0, #1 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFBD6 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_02020130 +_021DFBD6: + ldr r0, [r4, #4] + bl FUN_0202011C + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD14_021E0320 + ldr r0, _021DFC20 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + add r0, r0, #3 + strb r2, [r4, r0] + ldr r0, _021DFC24 ; =MOD14_021DFC40 + add r1, r4, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DFC18 + ldr r0, _021DFC28 ; =0x00000788 + mov r1, #1 + strb r1, [r4, r0] +_021DFC18: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021DFC1C: .word 0x0000078C +_021DFC20: .word 0x00000784 +_021DFC24: .word MOD14_021DFC40 +_021DFC28: .word 0x00000788 + + thumb_func_start MOD14_021DFC2C +MOD14_021DFC2C: ; 0x021DFC2C + ldr r1, _021DFC3C ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021DFC38 + mov r0, #1 + bx lr +_021DFC38: + mov r0, #0 + bx lr + .align 2, 0 +_021DFC3C: .word 0x00000788 + + thumb_func_start MOD14_021DFC40 +MOD14_021DFC40: ; 0x021DFC40 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r4, r1, #0 + ldr r1, _021DFD18 ; =0x00000784 + add r5, r0, #0 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _021DFC58 + cmp r0, #1 + beq _021DFCBE + add sp, #0x18 + pop {r4, r5, r6, pc} +_021DFC58: + add r0, r1, #3 + ldrb r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #3 + strb r2, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #4 + blo _021DFD14 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #0x10] + mov r2, #3 + asr r0, r0, #0xc + add r1, r0, #6 + mov r0, #0x77 + lsl r0, r0, #4 + str r1, [r4, r0] + add r1, r0, #0 + lsl r2, r2, #0xc + add r1, #0x10 + str r2, [r4, r1] + add r1, r0, #0 + mov r2, #2 + add r1, #0x17 + strb r2, [r4, r1] + add r1, r0, #0 + add r1, #0x1c + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021DFCB2 + add r0, #0x1d + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFCB2 + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_02020130 +_021DFCB2: + ldr r0, _021DFD18 ; =0x00000784 + add sp, #0x18 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021DFCBE: + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, _021DFD1C ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFCF8 + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD14_021E0320 + ldr r0, _021DFD1C ; =0x00000787 + add sp, #0x18 + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021DFCF8: + sub r0, #0x17 + ldr r0, [r4, r0] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DFD20 ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021DFD14: + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DFD18: .word 0x00000784 +_021DFD1C: .word 0x00000787 +_021DFD20: .word 0x00000788 + + thumb_func_start MOD14_021DFD24 +MOD14_021DFD24: ; 0x021DFD24 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #0x77 + str r0, [r2] + ldr r0, [sp, #4] + lsl r1, r1, #4 + asr r0, r0, #0xc + sub r0, r0, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _021DFD74 ; =0xFFFFF000 + add r0, #0x10 + str r2, [r4, r0] + add r0, r1, #0 + mov r2, #4 + add r0, #0x17 + strb r2, [r4, r0] + mov r2, #0 + add r1, #0x14 + strb r2, [r4, r1] + ldr r0, _021DFD78 ; =MOD14_021DFDBC + add r1, r4, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DFD70 + ldr r0, _021DFD7C ; =0x00000788 + mov r1, #1 + strb r1, [r4, r0] +_021DFD70: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021DFD74: .word 0xFFFFF000 +_021DFD78: .word MOD14_021DFDBC +_021DFD7C: .word 0x00000788 + + thumb_func_start MOD14_021DFD80 +MOD14_021DFD80: ; 0x021DFD80 + push {r4, lr} + ldr r1, _021DFDB8 ; =0x00000788 + add r4, r0, #0 + ldrb r0, [r4, r1] + cmp r0, #0 + bne _021DFDB2 + add r0, r1, #4 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFDAE + add r0, r1, #5 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFDAE + ldr r0, [r4, #4] + bl FUN_020201DC + cmp r0, #0 + beq _021DFDAE + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 +_021DFDAE: + mov r0, #1 + pop {r4, pc} +_021DFDB2: + mov r0, #0 + pop {r4, pc} + nop +_021DFDB8: .word 0x00000788 + + thumb_func_start MOD14_021DFDBC +MOD14_021DFDBC: ; 0x021DFDBC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, _021DFE20 ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFDFE + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD14_021E0320 + ldr r0, _021DFE20 ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DFDFE: + sub r0, #0x17 + ldr r0, [r4, r0] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DFE24 ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021DFE20: .word 0x00000787 +_021DFE24: .word 0x00000788 + + thumb_func_start MOD14_021DFE28 +MOD14_021DFE28: ; 0x021DFE28 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC424 + mov r1, #0x79 + lsl r1, r1, #4 + mov r2, #0x11 + ldr r3, [r4, r1] + lsl r2, r2, #4 + ldrh r2, [r3, r2] + cmp r2, r0 + bne _021DFE4E + sub r1, #0x38 + ldr r0, [r4, r1] + bl MOD14_021DEA50 +_021DFE4E: + add r0, r4, #0 + bl MOD14_021E0720 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DFE60 +MOD14_021DFE60: ; 0x021DFE60 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + mov r2, #1 + bl MOD14_021E0C20 + ldr r0, _021DFE80 ; =0x00000784 + mov r1, #0 + strb r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021DFE80: .word 0x00000784 + + thumb_func_start MOD14_021DFE84 +MOD14_021DFE84: ; 0x021DFE84 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DFF14 ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDEDC + ldr r1, _021DFF18 ; =0x00000784 + add r4, r0, #0 + ldrb r1, [r5, r1] + cmp r1, #0 + beq _021DFEA4 + cmp r1, #1 + beq _021DFEBC + cmp r1, #2 + beq _021DFEF6 + b _021DFF10 +_021DFEA4: + add r1, r5, #0 + ldr r0, [r5, #0x48] + add r1, #0x4c + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DFF10 + ldr r0, _021DFF18 ; =0x00000784 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _021DFF10 +_021DFEBC: + bl MOD14_021DA1B8 + cmp r0, #0 + beq _021DFF10 + add r0, r4, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + beq _021DFEE0 + ldr r0, [r5, #4] + mov r1, #0 + bl FUN_02020130 + add r0, r5, #0 + bl MOD14_021E0720 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DFEE0: + add r1, r5, #0 + ldr r0, [r5, #0x48] + add r1, #0x4c + mov r2, #2 + bl MOD14_021E0C20 + ldr r0, _021DFF18 ; =0x00000784 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _021DFF10 +_021DFEF6: + add r1, r5, #0 + ldr r0, [r5, #0x48] + add r1, #0x4c + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DFF10 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02020130 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DFF10: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DFF14: .word 0x00000794 +_021DFF18: .word 0x00000784 + + thumb_func_start MOD14_021DFF1C +MOD14_021DFF1C: ; 0x021DFF1C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020238 + ldr r0, _021DFF4C ; =0x0000078C + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DFF38 + ldr r0, [r4, #0x4c] + mov r1, #1 + bl FUN_02020238 +_021DFF38: + ldr r0, _021DFF50 ; =0x0000078D + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFF4A + sub r0, #0x2d + ldr r0, [r4, r0] + mov r1, #1 + bl MOD14_021E501C +_021DFF4A: + pop {r4, pc} + .align 2, 0 +_021DFF4C: .word 0x0000078C +_021DFF50: .word 0x0000078D + + thumb_func_start MOD14_021DFF54 +MOD14_021DFF54: ; 0x021DFF54 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020238 + ldr r0, _021DFF84 ; =0x0000078C + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DFF70 + ldr r0, [r4, #0x4c] + mov r1, #2 + bl FUN_02020238 +_021DFF70: + ldr r0, _021DFF88 ; =0x0000078D + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFF82 + sub r0, #0x2d + ldr r0, [r4, r0] + mov r1, #2 + bl MOD14_021E501C +_021DFF82: + pop {r4, pc} + .align 2, 0 +_021DFF84: .word 0x0000078C +_021DFF88: .word 0x0000078D + + thumb_func_start MOD14_021DFF8C +MOD14_021DFF8C: ; 0x021DFF8C + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DFFB0 ; =0x0000078C + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFFAC + add r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC45C + add r2, r0, #0 + ldr r0, [r4, #0x48] + add r4, #0x4c + add r1, r4, #0 + bl MOD14_021E0BA4 +_021DFFAC: + pop {r4, pc} + nop +_021DFFB0: .word 0x0000078C + + thumb_func_start MOD14_021DFFB4 +MOD14_021DFFB4: ; 0x021DFFB4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _021DFFD4 + ldr r0, [r4, #0x48] + add r4, #0x4c + add r1, r4, #0 + bl MOD14_021E0B54 +_021DFFD4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DFFD8 +MOD14_021DFFD8: ; 0x021DFFD8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + add r2, r1, #0 + cmp r0, #0 + beq _021E0004 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + bl MOD14_021E0BA8 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, [r4, #0x48] + add r4, #0x4c + add r1, r4, #0 + bl MOD14_021E0B54 +_021E0004: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0008 +MOD14_021E0008: ; 0x021E0008 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC49C + cmp r0, #0 + ldr r0, [r4, #4] + beq _021E0024 + mov r1, #1 + bl FUN_02020248 + pop {r4, pc} +_021E0024: + mov r1, #0 + bl FUN_02020248 + pop {r4, pc} + + thumb_func_start MOD14_021E002C +MOD14_021E002C: ; 0x021E002C + ldr r3, _021E0034 ; =0x02020131 + ldr r0, [r0, #4] + mov r1, #1 + bx r3 + .align 2, 0 +_021E0034: .word 0x02020131 + + thumb_func_start MOD14_021E0038 +MOD14_021E0038: ; 0x021E0038 + push {r4, lr} + ldr r0, [r0, #4] + add r4, r1, #0 + bl FUN_0202011C + add r2, r0, #0 + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0050 +MOD14_021E0050: ; 0x021E0050 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0074 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + ldr r0, _021E0078 ; =MOD14_021E0094 + add r1, r4, #0 + bl FUN_0200CA44 + cmp r0, #0 + beq _021E0070 + ldr r0, _021E007C ; =0x0000078D + mov r1, #1 + strb r1, [r4, r0] + sub r0, r0, #5 + strb r1, [r4, r0] +_021E0070: + pop {r4, pc} + nop +_021E0074: .word 0x00000784 +_021E0078: .word MOD14_021E0094 +_021E007C: .word 0x0000078D + + thumb_func_start MOD14_021E0080 +MOD14_021E0080: ; 0x021E0080 + ldr r1, _021E0090 ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E008C + mov r0, #1 + bx lr +_021E008C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0090: .word 0x00000788 + + thumb_func_start MOD14_021E0094 +MOD14_021E0094: ; 0x021E0094 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E00E8 ; =0x00000784 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E00A8 + cmp r1, #1 + beq _021E00C4 + pop {r3, r4, r5, pc} +_021E00A8: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x76 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021E4D94 + ldr r0, _021E00E8 ; =0x00000784 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_021E00C4: + sub r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021E4DE8 + cmp r0, #0 + beq _021E00E4 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + ldr r0, _021E00EC ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021E00E4: + pop {r3, r4, r5, pc} + nop +_021E00E8: .word 0x00000784 +_021E00EC: .word 0x00000788 + + thumb_func_start MOD14_021E00F0 +MOD14_021E00F0: ; 0x021E00F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0114 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + ldr r0, _021E0118 ; =MOD14_021E0134 + add r1, r4, #0 + bl FUN_0200CA44 + cmp r0, #0 + beq _021E0112 + ldr r0, _021E011C ; =0x0000078D + mov r1, #0 + strb r1, [r4, r0] + mov r1, #1 + sub r0, r0, #5 + strb r1, [r4, r0] +_021E0112: + pop {r4, pc} + .align 2, 0 +_021E0114: .word 0x00000784 +_021E0118: .word MOD14_021E0134 +_021E011C: .word 0x0000078D + + thumb_func_start MOD14_021E0120 +MOD14_021E0120: ; 0x021E0120 + ldr r1, _021E0130 ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E012C + mov r0, #1 + bx lr +_021E012C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0130: .word 0x00000788 + + thumb_func_start MOD14_021E0134 +MOD14_021E0134: ; 0x021E0134 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E0188 ; =0x00000784 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E0148 + cmp r1, #1 + beq _021E0164 + pop {r3, r4, r5, pc} +_021E0148: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x76 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021E4E58 + ldr r0, _021E0188 ; =0x00000784 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_021E0164: + sub r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021E4EA4 + cmp r0, #0 + beq _021E0184 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, _021E018C ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021E0184: + pop {r3, r4, r5, pc} + nop +_021E0188: .word 0x00000784 +_021E018C: .word 0x00000788 + + thumb_func_start MOD14_021E0190 +MOD14_021E0190: ; 0x021E0190 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E01B0 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + ldr r0, _021E01B4 ; =MOD14_021E01D0 + add r1, r4, #0 + bl FUN_0200CA44 + cmp r0, #0 + beq _021E01AC + ldr r0, _021E01B8 ; =0x00000788 + mov r1, #1 + strb r1, [r4, r0] +_021E01AC: + pop {r4, pc} + nop +_021E01B0: .word 0x00000784 +_021E01B4: .word MOD14_021E01D0 +_021E01B8: .word 0x00000788 + + thumb_func_start MOD14_021E01BC +MOD14_021E01BC: ; 0x021E01BC + ldr r1, _021E01CC ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E01C8 + mov r0, #1 + bx lr +_021E01C8: + mov r0, #0 + bx lr + .align 2, 0 +_021E01CC: .word 0x00000788 + + thumb_func_start MOD14_021E01D0 +MOD14_021E01D0: ; 0x021E01D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E0224 ; =0x00000784 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E01E4 + cmp r1, #1 + beq _021E0200 + pop {r3, r4, r5, pc} +_021E01E4: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x76 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021E4EB4 + ldr r0, _021E0224 ; =0x00000784 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_021E0200: + sub r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021E4F48 + cmp r0, #0 + beq _021E0220 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + ldr r0, _021E0228 ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021E0220: + pop {r3, r4, r5, pc} + nop +_021E0224: .word 0x00000784 +_021E0228: .word 0x00000788 + + thumb_func_start MOD14_021E022C +MOD14_021E022C: ; 0x021E022C + push {r3, lr} + ldr r1, _021E0240 ; =0x0000078D + ldrb r1, [r0, r1] + cmp r1, #0 + beq _021E023E + ldr r0, [r0, #4] + mov r1, #1 + bl FUN_02020130 +_021E023E: + pop {r3, pc} + .align 2, 0 +_021E0240: .word 0x0000078D + + thumb_func_start MOD14_021E0244 +MOD14_021E0244: ; 0x021E0244 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0260 ; =0x0000078D + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021E025E + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, _021E0260 ; =0x0000078D + mov r1, #0 + strb r1, [r4, r0] +_021E025E: + pop {r4, pc} + .align 2, 0 +_021E0260: .word 0x0000078D + + thumb_func_start MOD14_021E0264 +MOD14_021E0264: ; 0x021E0264 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x79 + add r5, r3, #0 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r7, r2, #0 + add r4, r1, #0 + str r0, [sp] + bl MOD14_021DC3CC + strb r0, [r7] + ldrb r0, [r7] + cmp r0, #4 + bhi _021E0318 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E028E: ; jump table + .short _021E0298 - _021E028E - 2 ; case 0 + .short _021E02C2 - _021E028E - 2 ; case 1 + .short _021E02E4 - _021E028E - 2 ; case 2 + .short _021E02F6 - _021E028E - 2 ; case 3 + .short _021E0308 - _021E028E - 2 ; case 4 +_021E0298: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r5, r0, #0 + ldr r0, [sp] + bl MOD14_021DC3D0 + mov r1, #0x18 + add r5, #0x70 + mul r1, r0 + add r0, r5, r1 + str r0, [r6] + ldr r0, [sp] + bl MOD14_021DC3D8 + mov r1, #0x18 + mul r1, r0 + add r1, #0x18 + str r1, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E02C2: + ldr r0, [sp] + bl MOD14_021DC3E8 + add r7, r0, #0 + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD60 + add r1, r7, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD14_021E3170 + ldr r0, [r4] + sub r0, #0x10 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E02E4: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r0, #0xa8 + str r0, [r6] + mov r0, #8 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E02F6: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r0, #0x9f + str r0, [r6] + mov r0, #0xa0 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E0308: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r0, #0xeb + str r0, [r6] + mov r0, #0xa0 + str r0, [r4] +_021E0318: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E031C: .word 0x00000794 + + thumb_func_start MOD14_021E0320 +MOD14_021E0320: ; 0x021E0320 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r0, #0 + ldr r0, [r7, #4] + add r6, r1, #0 + bl FUN_02020044 + ldr r1, _021E03B4 ; =0x0000078C + ldrb r0, [r7, r1] + cmp r0, #0 + beq _021E0378 + mov r0, #0 + sub r1, #0x38 + str r0, [sp] + str r0, [sp, #0x18] + ldr r0, [r7, r1] + cmp r0, #0 + bls _021E0378 + add r4, r7, #0 + add r5, r7, #0 +_021E0348: + ldr r0, _021E03B8 ; =0x00000664 + ldr r1, [r6] + ldr r0, [r4, r0] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, _021E03BC ; =0x00000668 + ldr r1, [r6, #4] + ldr r0, [r4, r0] + sub r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + add r1, sp, #0x10 + bl FUN_02020044 + ldr r0, [sp] + add r4, #8 + add r0, r0, #1 + str r0, [sp] + ldr r0, _021E03C0 ; =0x00000754 + add r5, #0x34 + ldr r1, [r7, r0] + ldr r0, [sp] + cmp r0, r1 + blo _021E0348 +_021E0378: + ldr r0, _021E03C4 ; =0x0000078D + ldrb r1, [r7, r0] + cmp r1, #0 + beq _021E038A + sub r0, #0x2d + ldr r0, [r7, r0] + add r1, r6, #0 + bl MOD14_021E4FDC +_021E038A: + ldr r0, _021E03C8 ; =0x0000078E + ldrb r0, [r7, r0] + cmp r0, #0 + beq _021E03B0 + ldmia r6!, {r0, r1} + add r3, sp, #4 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + mov r0, #6 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r7, #8] + add r1, r2, #0 + bl FUN_02020044 +_021E03B0: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E03B4: .word 0x0000078C +_021E03B8: .word 0x00000664 +_021E03BC: .word 0x00000668 +_021E03C0: .word 0x00000754 +_021E03C4: .word 0x0000078D +_021E03C8: .word 0x0000078E + + thumb_func_start MOD14_021E03CC +MOD14_021E03CC: ; 0x021E03CC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r1, #0x79 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r0, r1] + bl MOD14_021DC3CC + cmp r0, #0 + beq _021E03E2 + b _021E0504 +_021E03E2: + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC4DC + cmp r0, #0 + beq _021E042A + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3E0 + add r1, r0, #0 + ldr r3, [sp, #4] + ldr r2, _021E053C ; =0x00000758 + ldr r0, [sp, #4] + add r3, #0x4c + ldr r0, [r0, r2] + ldr r2, _021E0540 ; =0x000004D8 + bl MOD14_021DE980 + ldr r0, [sp, #4] + ldr r2, _021E0544 ; =0x00000754 + mov r1, #1 + str r1, [r0, r2] + add r1, r2, #0 + mov r3, #0 + sub r1, #0xf0 + str r3, [r0, r1] + ldr r1, _021E0548 ; =0xFFFFC000 + sub r2, #0xec + str r1, [r0, r2] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E042A: + add r0, sp, #0x24 + str r0, [sp] + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + add r1, sp, #0x30 + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD14_021DC4A4 + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3D0 + str r0, [sp, #0x18] + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3D8 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + str r0, [sp, #0x1c] + cmp r0, r1 + bhi _021E04F8 + ldr r0, [sp, #4] + ldr r6, [sp, #4] + str r0, [sp, #0x10] + add r0, #0x4c + str r0, [sp, #0x10] + mov r7, #0x5f + ldr r0, [sp, #0x1c] + mov r1, #6 + mul r1, r0 + lsl r7, r7, #4 + str r1, [sp, #0xc] + add r5, r6, #0 +_021E0482: + ldr r4, [sp, #0x30] + ldr r0, [sp, #0x2c] + cmp r4, r0 + bhi _021E04E6 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + sub r1, r1, r0 + mov r0, #0x18 + add r2, r1, #0 + mul r2, r0 + sub r0, #0x1c + sub r0, r0, r2 + lsl r0, r0, #0xc + str r0, [sp, #8] +_021E049E: + ldr r1, [sp, #4] + ldr r0, _021E053C ; =0x00000758 + ldr r3, [sp, #0x10] + ldr r0, [r1, r0] + ldr r1, [sp, #0xc] + add r2, r7, #0 + add r1, r4, r1 + bl MOD14_021DE980 + ldr r0, [r6, #0x4c] + cmp r0, #0 + beq _021E04DE + ldr r0, [sp, #0x18] + add r7, #0x10 + sub r1, r4, r0 + mov r0, #6 + add r2, r1, #0 + lsl r0, r0, #0xe + mul r2, r0 + ldr r0, _021E054C ; =0x00000664 + ldr r1, [sp, #8] + str r2, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] + ldr r0, [sp, #0x10] + add r6, #0x34 + add r0, #0x34 + str r0, [sp, #0x10] + ldr r0, [sp, #0x20] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #0x20] +_021E04DE: + ldr r0, [sp, #0x2c] + add r4, r4, #1 + cmp r4, r0 + bls _021E049E +_021E04E6: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x24] + add r0, r0, #6 + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, r1 + bls _021E0482 +_021E04F8: + ldr r2, _021E0544 ; =0x00000754 + ldr r1, [sp, #0x20] + ldr r0, [sp, #4] + add sp, #0x34 + str r1, [r0, r2] + pop {r4, r5, r6, r7, pc} +_021E0504: + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r3, [sp, #4] + ldr r2, _021E0550 ; =0x0000075C + ldr r0, [sp, #4] + add r3, #0x4c + ldr r0, [r0, r2] + ldr r2, _021E0540 ; =0x000004D8 + bl MOD14_021E3084 + ldr r2, _021E0544 ; =0x00000754 + ldr r0, [sp, #4] + mov r1, #1 + str r1, [r0, r2] + add r1, r2, #0 + mov r3, #0 + sub r1, #0xf0 + str r3, [r0, r1] + ldr r1, _021E0548 ; =0xFFFFC000 + sub r2, #0xec + str r1, [r0, r2] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E053C: .word 0x00000758 +_021E0540: .word 0x000004D8 +_021E0544: .word 0x00000754 +_021E0548: .word 0xFFFFC000 +_021E054C: .word 0x00000664 +_021E0550: .word 0x0000075C + + thumb_func_start MOD14_021E0554 +MOD14_021E0554: ; 0x021E0554 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _021E0580 ; =0x00000754 + mov r4, #0 + ldr r0, [r6, r0] + cmp r0, #0 + bls _021E0578 + ldr r7, _021E0580 ; =0x00000754 + add r5, r6, #0 +_021E0566: + ldr r0, [r5, #0x4c] + mov r1, #2 + bl MOD14_021DDE24 + ldr r0, [r6, r7] + add r4, r4, #1 + add r5, #0x34 + cmp r4, r0 + blo _021E0566 +_021E0578: + ldr r0, _021E0584 ; =0x0000078C + mov r1, #1 + strb r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E0580: .word 0x00000754 +_021E0584: .word 0x0000078C + + thumb_func_start MOD14_021E0588 +MOD14_021E0588: ; 0x021E0588 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E0604 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC4DC + cmp r0, #0 + beq _021E05C2 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E0 + add r1, r0, #0 + ldr r0, _021E0620 ; =0x00000758 + ldr r0, [r5, r0] + add r5, #0x4c + add r2, r5, #0 + bl MOD14_021DE9D4 + pop {r3, r4, r5, r6, r7, pc} +_021E05C2: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC4F8 + add r7, r0, #0 + ldr r0, _021E0624 ; =0x00000754 + mov r4, #0 + ldr r0, [r5, r0] + cmp r0, #0 + bls _021E061C + add r6, r5, #0 + add r6, #0x4c +_021E05DC: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl MOD14_021DC528 + add r1, r0, #0 + ldr r0, _021E0620 ; =0x00000758 + add r1, r7, r1 + ldr r0, [r5, r0] + add r2, r6, #0 + bl MOD14_021DE9D4 + ldr r0, _021E0624 ; =0x00000754 + add r4, r4, #1 + ldr r0, [r5, r0] + add r6, #0x34 + cmp r4, r0 + blo _021E05DC + pop {r3, r4, r5, r6, r7, pc} +_021E0604: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021E0628 ; =0x0000075C + ldr r0, [r5, r0] + add r5, #0x4c + add r2, r5, #0 + bl MOD14_021E30C0 +_021E061C: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E0620: .word 0x00000758 +_021E0624: .word 0x00000754 +_021E0628: .word 0x0000075C + + thumb_func_start MOD14_021E062C +MOD14_021E062C: ; 0x021E062C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E06A2 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E0 + add r4, r0, #0 + ldr r0, _021E0708 ; =0x00000758 + add r1, r4, #0 + ldr r0, [r5, r0] + bl MOD14_021DEA38 + add r6, r0, #0 + add r1, r5, #0 + mov r2, #0x5f + ldr r0, [r5, #0x48] + add r1, #0x4c + lsl r2, r2, #4 + bl MOD14_021E0BBC + mov r2, #6 + ldr r0, [r5, #0x48] + add r1, r6, #0 + lsl r2, r2, #8 + bl MOD14_021E0BBC + bl OS_WaitVBlankIntr + ldr r0, _021E0708 ; =0x00000758 + add r3, r5, #0 + ldr r0, [r5, r0] + ldr r2, _021E070C ; =0x000004D8 + add r1, r4, #0 + add r3, #0x80 + bl MOD14_021DE980 + ldr r0, _021E0708 ; =0x00000758 + add r2, r5, #0 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, #0x4c + bl MOD14_021DE9D4 + add r0, r5, #0 + add r5, #0x4c + add r0, #0x80 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0930 + pop {r4, r5, r6, pc} +_021E06A2: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E8 + add r4, r0, #0 + ldr r0, _021E0710 ; =0x0000075C + add r1, r4, #0 + ldr r0, [r5, r0] + bl MOD14_021E3158 + add r6, r0, #0 + add r1, r5, #0 + mov r2, #0x5f + ldr r0, [r5, #0x48] + add r1, #0x4c + lsl r2, r2, #4 + bl MOD14_021E0BBC + mov r2, #6 + ldr r0, [r5, #0x48] + add r1, r6, #0 + lsl r2, r2, #8 + bl MOD14_021E0BBC + bl OS_WaitVBlankIntr + ldr r0, _021E0710 ; =0x0000075C + add r3, r5, #0 + ldr r0, [r5, r0] + ldr r2, _021E070C ; =0x000004D8 + add r1, r4, #0 + add r3, #0x80 + bl MOD14_021E3084 + ldr r0, _021E0710 ; =0x0000075C + add r2, r5, #0 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, #0x4c + bl MOD14_021E3114 + add r0, r5, #0 + add r5, #0x4c + add r0, #0x80 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0930 + pop {r4, r5, r6, pc} + nop +_021E0708: .word 0x00000758 +_021E070C: .word 0x000004D8 +_021E0710: .word 0x0000075C + + thumb_func_start MOD14_021E0714 +MOD14_021E0714: ; 0x021E0714 + ldr r1, _021E071C ; =0x0000078C + mov r2, #0 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_021E071C: .word 0x0000078C + + thumb_func_start MOD14_021E0720 +MOD14_021E0720: ; 0x021E0720 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + mov r2, #1 + bl MOD14_021E0908 + ldr r0, _021E073C ; =0x0000078C + mov r1, #0 + strb r1, [r4, r0] + sub r0, #0x38 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021E073C: .word 0x0000078C + + thumb_func_start MOD14_021E0740 +MOD14_021E0740: ; 0x021E0740 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E076A + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3E0 + add r1, r0, #0 + ldr r0, _021E0784 ; =0x00000758 + ldr r0, [r4, r0] + bl MOD14_021DEA38 + ldr r0, [r0] + pop {r4, pc} +_021E076A: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021E0788 ; =0x0000075C + ldr r0, [r4, r0] + bl MOD14_021E3158 + ldr r0, [r0] + pop {r4, pc} + nop +_021E0784: .word 0x00000758 +_021E0788: .word 0x0000075C + + thumb_func_start MOD14_021E078C +MOD14_021E078C: ; 0x021E078C + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r0, sp, #0x18 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp, #8] + bl FUN_020B19DC + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0xa + str r0, [sp] + add r0, sp, #0x18 + str r0, [sp, #4] + mov r0, #0x13 + mov r2, #1 + mov r3, #0x40 + bl FUN_02006A8C + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0x13 + add r2, sp, #0x14 + mov r3, #0xa + bl FUN_02006C08 + str r0, [sp, #0xc] + cmp r0, #0 + beq _021E0818 + add r0, sp, #0x18 + bl FUN_020B19DC + ldr r0, [sp, #0xc] + add r1, sp, #0x10 + bl FUN_020B00F0 + ldr r2, [sp, #0x14] + add r7, r0, #0 + ldr r0, [r2, #0xc] + mov r1, #8 + str r1, [sp] + ldr r2, [r2, #8] + ldr r3, _021E0898 ; =0x0000057F + add r1, r0, #0 + lsr r2, r2, #1 + bl MOD14_021DDE40 + cmp r7, #0 + beq _021E0806 + add r0, sp, #0x18 + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + mov r2, #0xc0 + mov r3, #1 + bl FUN_020B10E8 + b _021E0812 +_021E0806: + ldr r0, [sp, #0x14] + mov r1, #0xc0 + mov r2, #1 + add r3, sp, #0x18 + bl FUN_020B1240 +_021E0812: + ldr r0, [sp, #0xc] + bl FUN_02016A18 +_021E0818: + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x15 + mov r2, #1 + add r3, #0x10 + bl FUN_02006C30 + str r0, [r5, #8] + mov r0, #0xa + str r0, [sp] + mov r0, #0x12 + mov r1, #0x16 + mov r2, #1 + add r3, r5, #4 + bl FUN_02006C5C + str r0, [r5] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x17 + mov r2, #1 + add r3, #0x1c + bl FUN_02006C30 + str r0, [r5, #0x14] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x18 + mov r2, #1 + add r3, #0x20 + bl FUN_02006C5C + str r0, [r5, #0x18] + mov r0, #0x13 + mov r1, #0xa + bl FUN_02006670 + str r0, [r5, #0x48] + ldr r0, [r5, #8] + cmp r0, #0 + beq _021E0882 + ldr r0, [r5] + cmp r0, #0 + beq _021E0882 + ldr r0, [r5, #0x48] + cmp r0, #0 + bne _021E0888 +_021E0882: + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021E0888: + ldr r0, [sp, #8] + str r0, [r5, #0x24] + str r6, [r5, #0x40] + str r4, [r5, #0x44] + mov r0, #1 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021E0898: .word 0x0000057F + + thumb_func_start MOD14_021E089C +MOD14_021E089C: ; 0x021E089C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E08AE + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] +_021E08AE: + ldr r0, [r4] + cmp r0, #0 + beq _021E08BC + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] +_021E08BC: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021E08CA + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x14] +_021E08CA: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021E08D8 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x18] +_021E08D8: + ldr r0, [r4, #0x48] + cmp r0, #0 + beq _021E08E2 + bl FUN_020066F4 +_021E08E2: + pop {r4, pc} + + thumb_func_start MOD14_021E08E4 +MOD14_021E08E4: ; 0x021E08E4 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r0, r4, #0 + add r5, r1, #0 + sub r4, r4, #1 + cmp r0, #0 + beq _021E0906 + mov r6, #0 +_021E08F4: + add r0, r5, #4 + str r6, [r5] + bl FUN_020B1A24 + add r0, r4, #0 + add r5, #0x34 + sub r4, r4, #1 + cmp r0, #0 + bne _021E08F4 +_021E0906: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0908 +MOD14_021E0908: ; 0x021E0908 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r0, r4, #0 + add r5, r1, #0 + sub r4, r4, #1 + cmp r0, #0 + beq _021E092E + mov r6, #0 +_021E0918: + ldr r0, [r5] + cmp r0, #0 + beq _021E0924 + bl FUN_0201FFC8 + str r6, [r5] +_021E0924: + add r0, r4, #0 + add r5, #0x34 + sub r4, r4, #1 + cmp r0, #0 + bne _021E0918 +_021E092E: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0930 +MOD14_021E0930: ; 0x021E0930 + mov r3, #0x34 + mul r3, r2 + add r2, r3, #0 + ldr r3, _021E093C ; =0x020CE210 + bx r3 + nop +_021E093C: .word 0x020CE210 + + thumb_func_start MOD14_021E0940 +MOD14_021E0940: ; 0x021E0940 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r4, [sp, #0x64] + bl FUN_02066A6C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldr r0, [r5, #0x44] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r5, #4] + mov r1, #0 + str r0, [sp] + ldr r0, [sp, #0x58] + str r0, [sp, #4] + ldr r3, [r5, #0x10] + add r0, sp, #0x20 + bl MOD14_021DDDB4 + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x18] + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r6, #0 + bl FUN_0206B688 + str r0, [r4, #0x28] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x14] + add r1, r7, #0 + bl FUN_0206B7BC + strh r0, [r4, #0x2c] + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x30] + add r0, r6, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x2e] + add r0, r4, #4 + bl FUN_020B1A24 + add r0, r5, #0 + add r0, #0x4c + str r0, [sp] + mov r3, #0xa + ldr r0, [r5, #0x48] + ldr r1, [r4, #0x28] + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006814 + add r0, r5, #0 + add r0, #0x4c + add r1, sp, #0x1c + bl FUN_020B0088 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E0A5C ; =0x00300010 + add r3, r4, #4 + and r1, r0 + ldr r0, [sp, #0x1c] + str r1, [r0, #8] + lsr r1, r2, #0x11 + ldr r0, [sp, #0x1c] + mov r2, #1 + str r1, [r0, #0x10] + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x1c] + lsl r1, r1, #5 + bl FUN_020B1768 + add r0, r4, #4 + str r0, [sp, #0x20] + ldr r0, [sp, #0x5c] + ldr r2, [sp, #8] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r3, [sp, #0xc] + add r1, sp, #0x20 + bl MOD14_021DDDD4 + str r0, [r4] + cmp r0, #0 + bne _021E0A36 + bl ErrorHandling +_021E0A36: + ldrh r1, [r4, #0x2c] + ldr r0, [r4] + add r1, r1, #2 + bl FUN_02020248 + ldr r0, [r5, #0x40] + bl MOD14_021DC484 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E0B54 + ldr r1, [sp, #0x10] + add r0, r6, #0 + bl FUN_02066A94 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E0A5C: .word 0x00300010 + + thumb_func_start MOD14_021E0A60 +MOD14_021E0A60: ; 0x021E0A60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + str r2, [sp, #8] + add r7, r3, #0 + ldr r4, [sp, #0x70] + bl FUN_02066A6C + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + add r0, r6, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [r5, #0x44] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r5, #4] + mov r1, #0 + str r0, [sp] + ldr r0, [sp, #0x64] + str r0, [sp, #4] + ldr r3, [r5, #0x10] + add r0, sp, #0x1c + bl MOD14_021DDDB4 + str r7, [r4, #0x28] + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl FUN_0206B7BC + strh r0, [r4, #0x2c] + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x30] + add r0, r6, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x2e] + add r0, r4, #4 + bl FUN_020B1A24 + ldr r0, [sp, #0x58] + add r1, sp, #0x18 + bl FUN_020B0088 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E0B50 ; =0x00300010 + add r3, r4, #4 + and r1, r0 + ldr r0, [sp, #0x18] + str r1, [r0, #8] + lsr r1, r2, #0x11 + ldr r0, [sp, #0x18] + mov r2, #1 + str r1, [r0, #0x10] + ldr r1, [sp, #0x6c] + ldr r0, [sp, #0x18] + lsl r1, r1, #5 + bl FUN_020B1768 + add r0, r4, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x68] + ldr r2, [sp, #0x5c] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r3, [sp, #0x60] + add r1, sp, #0x1c + bl MOD14_021DDDD4 + str r0, [r4] + cmp r0, #0 + bne _021E0B28 + bl ErrorHandling +_021E0B28: + ldrh r1, [r4, #0x2c] + ldr r0, [r4] + add r1, r1, #2 + bl FUN_02020248 + ldr r0, [r5, #0x40] + bl MOD14_021DC484 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E0B54 + ldr r1, [sp, #0x14] + add r0, r6, #0 + bl FUN_02066A94 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E0B50: .word 0x00300010 + + thumb_func_start MOD14_021E0B54 +MOD14_021E0B54: ; 0x021E0B54 + push {r4, r5, r6, lr} + cmp r2, #0 + beq _021E0B9A + mov r3, #1 + add r0, r2, #0 + tst r0, r3 + beq _021E0B72 + ldrh r0, [r1, #0x30] + cmp r0, #0 + bne _021E0B72 + ldr r0, [r1] + add r1, r3, #0 + bl FUN_02020398 + pop {r4, r5, r6, pc} +_021E0B72: + mov r3, #0 + mov r4, #1 + mov r0, #2 +_021E0B78: + add r5, r0, #0 + lsl r5, r3 + tst r5, r2 + beq _021E0B94 + add r5, r4, #0 + ldrh r6, [r1, #0x2e] + lsl r5, r3 + tst r5, r6 + bne _021E0B94 + ldr r0, [r1] + add r1, r4, #0 + bl FUN_02020398 + pop {r4, r5, r6, pc} +_021E0B94: + add r3, r3, #1 + cmp r3, #6 + blt _021E0B78 +_021E0B9A: + ldr r0, [r1] + mov r1, #0 + bl FUN_02020398 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0BA4 +MOD14_021E0BA4: ; 0x021E0BA4 + strh r2, [r1, #0x2e] + bx lr + + thumb_func_start MOD14_021E0BA8 +MOD14_021E0BA8: ; 0x021E0BA8 + strh r2, [r1, #0x30] + bx lr + + thumb_func_start MOD14_021E0BAC +MOD14_021E0BAC: ; 0x021E0BAC + push {r3, lr} + str r1, [sp] + ldr r0, [r0, #0x48] + add r1, r2, #0 + mov r2, #0 + bl FUN_02006814 + pop {r3, pc} + + thumb_func_start MOD14_021E0BBC +MOD14_021E0BBC: ; 0x021E0BBC + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + cmp r0, #0 + beq _021E0C18 + add r0, r4, #4 + bl FUN_020B1A24 + add r0, r5, #0 + add r0, #0x4c + str r0, [sp] + mov r3, #0xa + ldr r0, [r5, #0x48] + ldr r1, [r4, #0x28] + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006814 + add r5, #0x4c + add r0, r5, #0 + add r1, sp, #4 + bl FUN_020B0088 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E0C1C ; =0x00300010 + add r3, r4, #4 + and r1, r0 + ldr r0, [sp, #4] + str r1, [r0, #8] + lsr r1, r2, #0x11 + ldr r0, [sp, #4] + mov r2, #1 + str r1, [r0, #0x10] + ldr r0, [sp, #4] + lsl r1, r6, #5 + bl FUN_020B1768 + ldr r0, [r4] + add r1, r4, #4 + bl FUN_02020334 +_021E0C18: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E0C1C: .word 0x00300010 + + thumb_func_start MOD14_021E0C20 +MOD14_021E0C20: ; 0x021E0C20 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + sub r0, r4, #1 + cmp r0, #1 + ldr r0, [r5] + bhi _021E0C36 + mov r1, #1 + bl FUN_020200EC + b _021E0C3C +_021E0C36: + mov r1, #0 + bl FUN_020200EC +_021E0C3C: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_02020130 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0C48 +MOD14_021E0C48: ; 0x021E0C48 + push {r3, lr} + ldr r0, [r1] + bl FUN_02020388 + cmp r0, #0 + bne _021E0C58 + mov r0, #1 + pop {r3, pc} +_021E0C58: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD14_021E0C5C +MOD14_021E0C5C: ; 0x021E0C5C + cmp r2, #0 + beq _021E0C64 + mov r2, #6 + b _021E0C66 +_021E0C64: + mov r2, #2 +_021E0C66: + ldr r0, [r1] + ldrh r1, [r1, #0x2c] + ldr r3, _021E0C70 ; =0x02020249 + add r1, r1, r2 + bx r3 + .align 2, 0 +_021E0C70: .word 0x02020249 + + thumb_func_start MOD14_021E0C74 +MOD14_021E0C74: ; 0x021E0C74 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start MOD14_021E0C78 +MOD14_021E0C78: ; 0x021E0C78 + ldr r0, [r0, #4] + bx lr + + thumb_func_start MOD14_021E0C7C +MOD14_021E0C7C: ; 0x021E0C7C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + str r1, [r4, #0x44] + str r3, [r4, #0x3c] + str r2, [r4, #0x40] + str r3, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r1, #0xa + add r3, r4, #0 + str r1, [sp] + mov r0, #0x12 + mov r2, #1 + add r3, #0x10 + bl FUN_02006C30 + str r0, [r4, #8] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0xb + mov r2, #1 + add r3, #0x14 + bl FUN_02006C5C + str r0, [r4, #0xc] + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E0CC0 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021E0CC6 +_021E0CC0: + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_021E0CC6: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD14_021E0CCC +MOD14_021E0CCC: ; 0x021E0CCC + push {r4, lr} + sub sp, #0x38 + add r4, r0, #0 + add r0, #0x18 + bl FUN_020B1A24 + mov r3, #0 + mov r0, #0x9d + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + lsl r0, r0, #8 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x18 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #9 + bl FUN_02006AE4 + ldr r0, [r4, #0x44] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #0x14] + add r1, r4, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r3, [r4, #0x10] + add r0, sp, #0x14 + add r1, #0x18 + bl MOD14_021DDDB4 + ldr r0, [r4, #0x44] + bl MOD14_021DDD98 + add r2, r0, #0 + mov r0, #0x2c + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + add r2, #0xb7 + mov r3, #0xb0 + bl MOD14_021DDDD4 + mov r1, #1 + str r0, [r4, #4] + bl FUN_02020248 + add sp, #0x38 + pop {r4, pc} + + thumb_func_start MOD14_021E0D3C +MOD14_021E0D3C: ; 0x021E0D3C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E0D4E + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] +_021E0D4E: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021E0D5C + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0xc] +_021E0D5C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0D60 +MOD14_021E0D60: ; 0x021E0D60 + push {r3, lr} + cmp r1, #0 + beq _021E0D70 + cmp r1, #1 + beq _021E0D7A + cmp r1, #2 + beq _021E0D84 + pop {r3, pc} +_021E0D70: + ldr r0, [r0, #4] + mov r1, #0 + bl FUN_02020130 + pop {r3, pc} +_021E0D7A: + ldr r0, [r0, #4] + mov r1, #1 + bl FUN_02020130 + pop {r3, pc} +_021E0D84: + ldr r0, [r0, #4] + mov r1, #2 + bl FUN_02020130 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0D90 +MOD14_021E0D90: ; 0x021E0D90 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r1, #0 + add r7, r3, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021E0DAC + mov r0, #0 + str r0, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E0DAC: + str r4, [r5, #0x14] + str r7, [r5, #8] + ldr r0, [sp, #0x18] + str r6, [r5, #0x10] + str r0, [r5, #0xc] + mov r0, #0 + str r0, [r5, #4] + str r0, [r5, #0x4c] + str r0, [r5, #0x24] + add r0, r4, #0 + bl MOD14_021DDD90 + str r0, [r5, #0x20] + mov r0, #9 + mov r1, #6 + mov r2, #0xf + mov r3, #0xa + bl FUN_0200B870 + str r0, [r5, #0x18] + mov r0, #1 + mov r1, #2 + mov r2, #0xf + mov r3, #0xa + bl FUN_0200B870 + str r0, [r5, #0x1c] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x10 + mov r2, #1 + add r3, #0x2c + bl FUN_02006C30 + str r0, [r5, #0x28] + mov r0, #0 + str r0, [r5, #0x30] + ldr r0, [sp, #0x1c] + mov r1, #0x15 + bl FUN_0200A914 + str r0, [r5, #0x44] + ldr r0, [sp, #0x1c] + mov r1, #0x16 + bl FUN_0200A914 + str r0, [r5, #0x48] + bl FUN_0206E12C + add r4, r0, #0 + bl FUN_0206E10C + add r1, r0, #0 + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r2, #1 + add r3, #0x38 + bl FUN_02006C30 + mov r1, #0 + str r0, [r5, #0x34] + add r2, r5, #0 + add r0, r1, #0 +_021E0E32: + add r1, r1, #1 + str r0, [r2, #0x3c] + add r2, r2, #4 + cmp r1, #2 + blt _021E0E32 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0E44 +MOD14_021E0E44: ; 0x021E0E44 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021E0EE2 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E0E72 + mov r6, #0 + add r4, r6, #0 +_021E0E58: + ldr r0, [r5, #4] + add r0, r0, r4 + bl FUN_02019178 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #4 + blt _021E0E58 + ldr r0, [r5, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #4] +_021E0E72: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021E0E7C + bl FUN_0200B990 +_021E0E7C: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E0E86 + bl FUN_0200B990 +_021E0E86: + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021E0E90 + bl FUN_02021A20 +_021E0E90: + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021E0E9A + bl FUN_02021A20 +_021E0E9A: + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _021E0EA8 + bl FUN_02007534 + mov r0, #0 + str r0, [r5, #0x24] +_021E0EA8: + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021E0EB2 + bl FUN_02016A18 +_021E0EB2: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E0EBC + bl FUN_0201FFC8 +_021E0EBC: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E0EC6 + bl FUN_02016A18 +_021E0EC6: + mov r6, #0 + add r4, r5, #0 +_021E0ECA: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021E0ED4 + bl FUN_0201FFC8 +_021E0ED4: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #2 + blt _021E0ECA + add r0, r5, #0 + bl MOD14_021E10F4 +_021E0EE2: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0EE4 +MOD14_021E0EE4: ; 0x021E0EE4 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + beq _021E0EF2 + ldr r0, [r0, #0x20] + bl FUN_020081C4 +_021E0EF2: + pop {r3, pc} + + thumb_func_start MOD14_021E0EF4 +MOD14_021E0EF4: ; 0x021E0EF4 + push {r4, lr} + sub sp, #0x20 + mov r2, #0 + str r2, [sp] + add r4, r0, #0 + str r2, [sp, #4] + add r0, sp, #0x10 + mov r1, #1 + add r3, r2, #0 + str r2, [sp, #8] + bl FUN_02068C00 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r4, #0x20] + add r1, sp, #0x10 + mov r2, #0x2c + mov r3, #0x54 + bl FUN_020073A0 + str r0, [r4, #0x24] + add sp, #0x20 + pop {r4, pc} + + thumb_func_start MOD14_021E0F28 +MOD14_021E0F28: ; 0x021E0F28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E0F3C + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] + pop {r4, pc} +_021E0F3C: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD14_021E0F40 +MOD14_021E0F40: ; 0x021E0F40 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021E0FA0 + mov r0, #0xa + mov r1, #4 + bl FUN_02018FF4 + str r0, [r5, #4] + cmp r0, #0 + beq _021E0F94 + mov r7, #0 + ldr r6, _021E0FA4 ; =0x021E65F4 + add r4, r7, #0 +_021E0F5E: + ldr r1, [r5, #4] + ldr r0, [r5, #8] + add r1, r1, r4 + add r2, r6, #0 + bl FUN_02019150 + cmp r7, #3 + ldr r0, [r5, #4] + beq _021E0F78 + add r0, r0, r4 + bl FUN_02019270 + b _021E0F82 +_021E0F78: + add r0, r0, r4 + mov r1, #0xc + mov r2, #2 + bl FUN_0201928C +_021E0F82: + add r7, r7, #1 + add r6, #8 + add r4, #0x10 + cmp r7, #4 + blt _021E0F5E + ldr r0, [r5, #8] + mov r1, #2 + bl FUN_02017CD0 +_021E0F94: + add r0, r5, #0 + bl MOD14_021E0FA8 + add r0, r5, #0 + bl MOD14_021E10B0 +_021E0FA0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E0FA4: .word 0x021E65F4 + + thumb_func_start MOD14_021E0FA8 +MOD14_021E0FA8: ; 0x021E0FA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x68 + add r5, r0, #0 + bl FUN_0206E12C + str r0, [sp, #0x1c] + mov r0, #2 + bl FUN_0206E0F0 + str r0, [sp, #0x18] + bl FUN_0206E108 + add r1, r0, #0 + mov r0, #0x60 + str r0, [sp] + mov r3, #0xa + str r3, [sp, #4] + ldr r0, [sp, #0x1c] + mov r2, #1 + lsl r3, r3, #5 + bl FUN_02006930 + mov r0, #0 + mov r6, #0x5e + str r0, [sp, #0x14] + lsl r6, r6, #4 + mov r7, #0x18 + add r4, r5, #0 +_021E0FE0: + add r0, sp, #0x44 + bl FUN_020B1A24 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + lsl r0, r6, #5 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x44 + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + mov r2, #1 + mov r3, #0 + bl FUN_02006B38 + ldr r0, [r5, #0x14] + bl MOD14_021DDD48 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r3, [r5, #0x38] + add r0, sp, #0x20 + add r1, sp, #0x44 + bl MOD14_021DDDB4 + mov r0, #0x2e + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0xc] + add r1, sp, #0x20 + add r2, r7, #0 + mov r3, #0xb0 + bl MOD14_021DDDD4 + str r0, [r4, #0x3c] + cmp r0, #0 + bne _021E103E + bl ErrorHandling +_021E103E: + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [sp, #0x14] + add r6, #8 + add r0, r0, #1 + add r7, #0x24 + add r4, r4, #4 + str r0, [sp, #0x14] + cmp r0, #2 + blo _021E0FE0 + add r0, sp, #0x44 + bl FUN_020B1A24 + mov r3, #0 + mov r0, #0xb9 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + lsl r0, r0, #8 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x44 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0xf + bl FUN_02006AE4 + ldr r0, [r5, #0x14] + bl MOD14_021DDD48 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r3, [r5, #0x2c] + add r0, sp, #0x20 + add r1, sp, #0x44 + bl MOD14_021DDDB4 + mov r0, #0x2f + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0xc] + add r1, sp, #0x20 + mov r2, #0x38 + mov r3, #0xb0 + bl MOD14_021DDDD4 + str r0, [r5, #0x30] + add sp, #0x68 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E10B0 +MOD14_021E10B0: ; 0x021E10B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x4c] + cmp r0, #0 + bne _021E10EE + mov r0, #0xa + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + beq _021E10EA + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _021E10D6 + mov r0, #4 + b _021E10D8 +_021E10D6: + mov r0, #0 +_021E10D8: + strh r0, [r4] + ldr r0, _021E10F0 ; =MOD14_021E115C + str r5, [r4, #8] + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + str r0, [r5, #0x4c] + pop {r3, r4, r5, pc} +_021E10EA: + bl ErrorHandling +_021E10EE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E10F0: .word MOD14_021E115C + + thumb_func_start MOD14_021E10F4 +MOD14_021E10F4: ; 0x021E10F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _021E1110 + bl FUN_0201B6C8 + bl FUN_02016A18 + ldr r0, [r4, #0x4c] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x4c] +_021E1110: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1114 +MOD14_021E1114: ; 0x021E1114 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x4c] + bl FUN_0201B6C8 + add r4, r0, #0 + beq _021E113C + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _021E1132 + mov r0, #4 + b _021E1134 +_021E1132: + mov r0, #0 +_021E1134: + strh r0, [r4] + add r0, r5, #0 + bl MOD14_021E1268 +_021E113C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1140 +MOD14_021E1140: ; 0x021E1140 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + bl FUN_0201B6C8 + cmp r0, #0 + beq _021E1158 + mov r1, #4 + strh r1, [r0] + add r0, r4, #0 + bl MOD14_021E1268 +_021E1158: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E115C +MOD14_021E115C: ; 0x021E115C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrh r0, [r4] + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021E1220 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1174: ; jump table + .short _021E117E - _021E1174 - 2 ; case 0 + .short _021E1190 - _021E1174 - 2 ; case 1 + .short _021E11B0 - _021E1174 - 2 ; case 2 + .short _021E11CE - _021E1174 - 2 ; case 3 + .short _021E1220 - _021E1174 - 2 ; case 4 +_021E117E: + ldr r0, [r5, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E1220 + mov r0, #0 + strh r0, [r4, #2] + mov r0, #1 + strh r0, [r4] +_021E1190: + ldr r0, [r5, #4] + ldrh r2, [r4, #2] + add r0, #0x30 + add r1, r5, #0 + mov r3, #0 + bl MOD14_021E12B8 + ldr r0, [r5, #4] + add r0, #0x30 + bl FUN_02019548 + mov r0, #0 + strh r0, [r4, #4] + mov r0, #2 + strh r0, [r4] + pop {r3, r4, r5, pc} +_021E11B0: + ldrh r0, [r4, #4] + add r0, r0, #1 + strh r0, [r4, #4] + ldrh r0, [r4, #4] + cmp r0, #0x50 + bls _021E1220 + add r0, r4, #0 + bl MOD14_021E1284 + mov r0, #0 + strh r0, [r4, #4] + strh r0, [r4, #6] + mov r0, #3 + strh r0, [r4] + pop {r3, r4, r5, pc} +_021E11CE: + ldrh r0, [r4, #6] + mov r1, #1 + lsl r1, r1, #0xe + add r0, r0, #4 + strh r0, [r4, #6] + add r0, r5, #0 + bl MOD14_021E1224 + ldr r0, [r5, #4] + mov r1, #0 + add r0, #0x30 + mov r2, #4 + add r3, r1, #0 + bl FUN_0201A8C8 + ldr r0, [r5, #4] + add r0, #0x30 + bl FUN_02019548 + ldrh r0, [r4, #6] + cmp r0, #0x10 + blo _021E1220 + ldrh r0, [r4, #2] + cmp r0, #1 + bne _021E1206 + add r0, r5, #0 + bl MOD14_021E1268 +_021E1206: + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + cmp r0, #4 + blo _021E1216 + mov r0, #0 + strh r0, [r4, #2] +_021E1216: + mov r0, #0 + strh r0, [r4, #6] + strh r0, [r4, #4] + mov r0, #2 + strh r0, [r4] +_021E1220: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1224 +MOD14_021E1224: ; 0x021E1224 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r7, r1, #0 + mov r4, #0 +_021E122E: + ldr r0, [r5, #0x3c] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [sp, #4] + sub r0, r0, r7 + str r0, [sp, #4] + ldr r0, [r5, #0x3c] + bl FUN_02020044 + cmp r4, #0 + bne _021E125A + ldr r0, [r5, #0x3c] + bl FUN_02020128 +_021E125A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E122E + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1268 +MOD14_021E1268: ; 0x021E1268 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E1270: + ldr r0, [r5, #0x3c] + add r1, r6, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E1270 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1284 +MOD14_021E1284: ; 0x021E1284 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + mov r1, #0 + ldr r4, [r0, #4] + add r4, #0x30 + add r0, r4, #0 + bl FUN_02019620 + ldrh r2, [r5, #2] + ldr r1, [r5, #8] + add r0, r4, #0 + mov r3, #0 + bl MOD14_021E12B8 + ldrh r0, [r5, #2] + add r2, r0, #1 + cmp r2, #4 + blo _021E12AC + mov r2, #0 +_021E12AC: + ldr r1, [r5, #8] + add r0, r4, #0 + mov r3, #1 + bl MOD14_021E12B8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E12B8 +MOD14_021E12B8: ; 0x021E12B8 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r1, #0 + lsl r5, r3, #4 + cmp r2, #3 + bls _021E12C6 + b _021E13E6 +_021E12C6: + add r1, r2, r2 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E12D2: ; jump table + .short _021E12DA - _021E12D2 - 2 ; case 0 + .short _021E12EC - _021E12D2 - 2 ; case 1 + .short _021E12E0 - _021E12D2 - 2 ; case 2 + .short _021E12E6 - _021E12D2 - 2 ; case 3 +_021E12DA: + ldr r1, [r4, #0x10] + ldr r2, [r1, #0x68] + b _021E13D2 +_021E12E0: + ldr r1, [r4, #0x10] + ldr r2, [r1, #0x6c] + b _021E13D2 +_021E12E6: + ldr r1, [r4, #0x10] + ldr r2, [r1, #0x70] + b _021E13D2 +_021E12EC: + bl FUN_0206E12C + ldr r0, [r4, #0x10] + add r0, #0x58 + ldrb r0, [r0] + bl FUN_0206E0F0 + bl FUN_0206E12C + add r6, r0, #0 + ldr r0, [r4, #0x10] + add r0, #0x58 + ldrb r0, [r0] + bl FUN_0206E0F0 + mov r2, #0 + add r1, r0, #0 + mov r3, #0x2f + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r6, #0 + lsl r3, r3, #0xa + bl FUN_02006A34 + ldr r0, [r4, #0x3c] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r5, #0xb0 + str r0, [r3] + lsl r0, r5, #0xc + str r0, [sp, #0x14] + ldr r0, [r4, #0x3c] + add r1, r2, #0 + bl FUN_02020044 + ldr r0, [r4, #0x10] + add r0, #0x58 + ldrb r0, [r0] + bl FUN_0206E114 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + add r1, #0xa + bl FUN_02020248 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_020200A0 + ldr r1, [r4, #0x10] + add r0, r1, #0 + add r0, #0x59 + add r1, #0x58 + ldrb r5, [r0] + ldrb r0, [r1] + cmp r0, r5 + beq _021E13C6 + bl FUN_0206E12C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0206E0F0 + mov r2, #0 + add r1, r0, #0 + mov r3, #0xbd + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r6, #0 + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #9 + ldr r1, [sp, #0x10] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x40] + add r1, sp, #0x10 + bl FUN_02020044 + ldr r0, [r4, #0x10] + add r0, #0x59 + ldrb r0, [r0] + bl FUN_0206E114 + add r1, r0, #0 + ldr r0, [r4, #0x40] + add r1, #0xa + bl FUN_02020248 + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_020200A0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} +_021E13C6: + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} +_021E13D2: + str r5, [sp] + mov r1, #0xff + str r1, [sp, #4] + ldr r1, _021E13EC ; =0x00090600 + str r1, [sp, #8] + mov r1, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_021E13E6: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_021E13EC: .word 0x00090600 + + thumb_func_start MOD14_021E13F0 +MOD14_021E13F0: ; 0x021E13F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E144E + ldr r0, [r4, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x10 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x20 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, [r4, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E1430 + add r0, r4, #0 + bl MOD14_021E153C +_021E1430: + ldr r0, [r4, #4] + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x10 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x20 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x30 + bl FUN_02019548 +_021E144E: + pop {r4, pc} + + thumb_func_start MOD14_021E1450 +MOD14_021E1450: ; 0x021E1450 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E14CC + ldr r0, [r4, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x10 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x20 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E148E + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] +_021E148E: + ldr r0, [r4, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E14A0 + add r0, r4, #0 + bl MOD14_021E153C + b _021E14A8 +_021E14A0: + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E16A0 +_021E14A8: + ldr r0, [r4, #4] + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x10 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x20 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x30 + bl FUN_02019548 + add r0, r4, #0 + bl MOD14_021E1114 +_021E14CC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E14D0 +MOD14_021E14D0: ; 0x021E14D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E153A + ldr r0, [r4, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x10 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x20 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E150E + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] +_021E150E: + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E16A0 + ldr r0, [r4, #4] + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x10 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x20 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x30 + bl FUN_02019548 + add r0, r4, #0 + bl MOD14_021E1140 +_021E153A: + pop {r4, pc} + + thumb_func_start MOD14_021E153C +MOD14_021E153C: ; 0x021E153C + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1660 ; =0x0009060F + mov r3, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x18] + bl FUN_0201BDE0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1664 ; =0x0001020F + mov r3, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x14] + add r0, #0x20 + bl FUN_0201BDE0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1664 ; =0x0001020F + mov r3, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x14] + add r0, #0x20 + bl FUN_0201BDE0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _021E15A2 + cmp r0, #1 + beq _021E15BE + b _021E15D8 +_021E15A2: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1668 ; =0x0007080F + mov r3, #0x46 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0x44] + add r0, #0x20 + bl FUN_0201BDE0 + b _021E15D8 +_021E15BE: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E166C ; =0x0003040F + mov r3, #0x46 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0x48] + add r0, #0x20 + bl FUN_0201BDE0 +_021E15D8: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021E1632 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1670 ; =0x00090600 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x1c] + add r0, #0x30 + bl FUN_0201BDE0 + ldrh r2, [r4, #8] + cmp r2, #0 + beq _021E1616 + mov r1, #2 + str r1, [sp] + ldr r0, [r5, #4] + mov r3, #3 + add r0, #0x10 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + bl FUN_0200BA78 +_021E1616: + mov r1, #1 + str r1, [sp] + ldr r0, [r5, #4] + mov r3, #3 + add r0, #0x20 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldrb r2, [r4, #0xa] + ldr r0, [r5, #0x1c] + bl FUN_0200BA78 +_021E1632: + ldr r1, [r4] + add r0, sp, #0x10 + mov r2, #2 + bl FUN_02068B70 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x20] + add r1, sp, #0x10 + mov r2, #0x2c + mov r3, #0x54 + bl FUN_020073A0 + str r0, [r5, #0x24] + ldrb r1, [r4, #0xb] + add r0, r5, #0 + bl MOD14_021E16A0 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E1660: .word 0x0009060F +_021E1664: .word 0x0001020F +_021E1668: .word 0x0007080F +_021E166C: .word 0x0003040F +_021E1670: .word 0x00090600 + + thumb_func_start MOD14_021E1674 +MOD14_021E1674: ; 0x021E1674 + mov r0, #1 + bx lr + + thumb_func_start MOD14_021E1678 +MOD14_021E1678: ; 0x021E1678 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E169C + ldr r0, [r4, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E169C + ldr r0, [r4, #0x10] + bl MOD14_021DC42C + add r1, r0, #0 + ldrb r1, [r1, #0xb] + add r0, r4, #0 + bl MOD14_021E16A0 +_021E169C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E16A0 +MOD14_021E16A0: ; 0x021E16A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + add r4, r1, #0 + ldr r0, [r0, #8] + mov r1, #2 + bl FUN_0201886C + mov ip, r0 + add r2, r0, #0 + mov r0, #1 + ldr r6, _021E1700 ; =0x000004C8 + mov r1, #0 + lsl r7, r0, #0xd +_021E16BC: + add r3, r0, #0 + lsl r3, r1 + tst r3, r4 + beq _021E16CE + add r3, r1, #0 + add r3, #0x98 + orr r3, r7 + strh r3, [r2, r6] + b _021E16DC +_021E16CE: + add r5, r1, #0 + mov r3, #2 + add r5, #0x84 + lsl r3, r3, #0xc + orr r5, r3 + ldr r3, _021E1700 ; =0x000004C8 + strh r5, [r2, r3] +_021E16DC: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #6 + blt _021E16BC + mov r2, #0x99 + lsl r2, r2, #2 + ldr r0, [sp, #4] + str r2, [sp] + lsl r3, r2, #1 + mov r2, ip + add r2, r2, r3 + ldr r0, [r0, #8] + mov r1, #2 + mov r3, #0xc + bl FUN_02017CE8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1700: .word 0x000004C8 + + thumb_func_start MOD14_021E1704 +MOD14_021E1704: ; 0x021E1704 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021E1748 + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + add r4, r0, #0 + ldr r0, [r5, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021E1742 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E174C ; =0x00090600 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x1c] + add r0, #0x30 + bl FUN_0201BDE0 +_021E1742: + add r0, r5, #0 + bl MOD14_021E1114 +_021E1748: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E174C: .word 0x00090600 + + thumb_func_start MOD14_021E1750 +MOD14_021E1750: ; 0x021E1750 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + str r1, [r4, #0xc] + str r3, [r4] + str r2, [r4, #8] + ldr r0, [sp, #0x18] + mov r1, #0x1a + str r0, [r4, #0x2c] + ldr r0, [sp, #0x1c] + mov r2, #0xe + str r0, [r4, #0x20] + ldr r0, [sp, #0x14] + mov r3, #0xa + str r0, [r4, #0x10] + mov r0, #0 + bl FUN_0200A86C + str r0, [r4, #0x14] + mov r0, #0x40 + mov r1, #0xa + bl FUN_020219F4 + str r0, [r4, #0x30] + mov r0, #0x40 + mov r1, #0xa + bl FUN_020219F4 + str r0, [r4, #0x34] + mov r0, #0 + strh r0, [r4, #0x1c] + strh r0, [r4, #0x1e] + str r0, [r4, #0x18] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x19 + mov r2, #1 + add r3, #0x28 + bl FUN_02006BB0 + str r0, [r4, #0x24] + cmp r0, #0 + beq _021E17B6 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021E17B6 + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _021E17BC +_021E17B6: + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_021E17BC: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E17C4 +MOD14_021E17C4: ; 0x021E17C4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021E1814 + mov r6, #0 + add r4, r6, #0 +_021E17D2: + ldr r0, [r5, #0x18] + add r0, r0, r4 + bl FUN_02019178 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #2 + blt _021E17D2 + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _021E17EC + bl FUN_02016A18 +_021E17EC: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E17F6 + bl FUN_0200A8B8 +_021E17F6: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E1800 + bl FUN_02021A20 +_021E1800: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E180A + bl FUN_02021A20 +_021E180A: + ldr r0, [r5, #0x18] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #0x18] +_021E1814: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1818 +MOD14_021E1818: ; 0x021E1818 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + mov r0, #0xa + mov r1, #2 + bl FUN_02018FF4 + str r0, [r6, #0x18] + cmp r0, #0 + beq _021E1848 + mov r7, #0 + ldr r4, _021E1894 ; =0x021E6614 + add r5, r7, #0 +_021E1832: + ldr r1, [r6, #0x18] + ldr r0, [r6] + add r1, r1, r5 + add r2, r4, #0 + bl FUN_02019150 + add r7, r7, #1 + add r4, #8 + add r5, #0x10 + cmp r7, #2 + blt _021E1832 +_021E1848: + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r6] + mov r0, #0x26 + mov r3, #1 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x26 + mov r1, #0x18 + mov r2, #0 + mov r3, #0xe0 + bl FUN_02006930 + ldr r0, [r6, #0x20] + ldr r2, _021E1898 ; =0x00000209 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + ldr r0, [r6] + mov r1, #1 + mov r3, #8 + bl FUN_0200CD68 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E1894: .word 0x021E6614 +_021E1898: .word 0x00000209 + + thumb_func_start MOD14_021E189C +MOD14_021E189C: ; 0x021E189C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r4, r1, #0 + bl FUN_02019270 + ldr r3, [r5, #0x18] + ldrb r0, [r3, #7] + str r0, [sp] + ldrb r0, [r3, #8] + str r0, [sp, #4] + ldrb r1, [r3, #4] + ldrb r2, [r3, #5] + ldrb r3, [r3, #6] + ldr r0, [r5] + bl MOD14_021E1908 + ldr r0, [r5, #0x18] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x30] + add r1, r4, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x2c] + ldr r1, [r5, #0x34] + ldr r2, [r5, #0x30] + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5, #0x18] + ldr r2, [r5, #0x34] + mov r1, #1 + bl FUN_0201BD84 + ldr r0, [r5, #0x18] + bl FUN_02019548 + ldr r0, [r5] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #1 + strh r0, [r5, #0x1c] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1908 +MOD14_021E1908: ; 0x021E1908 + push {r3, r4, r5, r6, r7, lr} + lsl r1, r1, #0x18 + add r7, r3, #0 + lsr r1, r1, #0x18 + add r6, r2, #0 + ldr r4, [sp, #0x18] + ldr r5, [sp, #0x1c] + bl FUN_0201886C + sub r1, r7, #1 + sub r2, r6, #2 + lsl r1, r1, #5 + add r1, r2, r1 + lsl r3, r1, #1 + ldr r2, _021E19AC ; =0x00008209 + add r1, r0, r3 + strh r2, [r0, r3] + add r0, r2, #1 + mov r2, #0 + strh r0, [r1, #2] + cmp r4, #0 + bls _021E1942 + ldr r0, _021E19B0 ; =0x0000820B + add r3, r1, #0 +_021E1938: + add r2, r2, #1 + strh r0, [r3, #4] + add r3, r3, #2 + cmp r2, r4 + blo _021E1938 +_021E1942: + lsl r0, r4, #1 + add r2, r1, r0 + ldr r3, _021E19B4 ; =0x0000820C + mov ip, r0 + strh r3, [r2, #4] + add r0, r3, #1 + strh r0, [r2, #6] + add r0, r3, #2 + strh r0, [r2, #8] + add r1, #0x40 + mov r3, #0 + cmp r5, #0 + bls _021E197E + mov r0, ip + add r2, r0, r1 + ldr r0, _021E19B8 ; =0x0000820F + add r7, r0, #1 +_021E1964: + strh r0, [r1] + strh r7, [r1, #2] + ldr r6, _021E19BC ; =0x00008212 + add r3, r3, #1 + strh r6, [r2, #4] + add r6, r6, #1 + strh r6, [r2, #6] + ldr r6, _021E19C0 ; =0x00008214 + add r1, #0x40 + strh r6, [r2, #8] + add r2, #0x40 + cmp r3, r5 + blo _021E1964 +_021E197E: + ldr r0, _021E19C4 ; =0x00008215 + mov r3, #0 + strh r0, [r1] + add r0, r0, #1 + strh r0, [r1, #2] + cmp r4, #0 + bls _021E199A + ldr r0, _021E19C8 ; =0x00008217 + add r2, r1, #0 +_021E1990: + add r3, r3, #1 + strh r0, [r2, #4] + add r2, r2, #2 + cmp r3, r4 + blo _021E1990 +_021E199A: + mov r0, ip + ldr r2, _021E19CC ; =0x00008218 + add r1, r1, r0 + strh r2, [r1, #4] + add r0, r2, #1 + strh r0, [r1, #6] + add r0, r2, #2 + strh r0, [r1, #8] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E19AC: .word 0x00008209 +_021E19B0: .word 0x0000820B +_021E19B4: .word 0x0000820C +_021E19B8: .word 0x0000820F +_021E19BC: .word 0x00008212 +_021E19C0: .word 0x00008214 +_021E19C4: .word 0x00008215 +_021E19C8: .word 0x00008217 +_021E19CC: .word 0x00008218 + + thumb_func_start MOD14_021E19D0 +MOD14_021E19D0: ; 0x021E19D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldrh r0, [r5, #0x1e] + str r1, [sp, #0x10] + cmp r0, #0 + beq _021E19E8 + ldr r1, [r5, #0x18] + ldr r0, [r5] + add r1, #0x10 + bl MOD14_021E1CA0 +_021E19E8: + ldr r0, [r5, #0x18] + mov r1, #0xf + str r0, [sp, #0x14] + add r0, #0x10 + str r0, [sp, #0x14] + bl FUN_02019620 + ldr r0, [sp, #0x10] + mov r6, #0 + add r0, #0x21 + ldrb r1, [r0] + mov r0, #8 + sub r0, r0, r1 + lsl r7, r0, #4 + cmp r1, #0 + bls _021E1A5C + ldr r4, [sp, #0x10] +_021E1A0A: + ldr r3, [r4] + cmp r3, #0x38 + blt _021E1A26 + cmp r3, #0x3d + bgt _021E1A26 + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, #0x22 + ldrb r2, [r2] + add r0, r5, #0 + sub r3, #0x38 + bl MOD14_021E1A8C + b _021E1A4C +_021E1A26: + add r3, #0x18 + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x30] + add r1, r3, #0 + bl FUN_0200A8E0 + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1A88 ; =0x000B0C0F + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + ldr r2, [r5, #0x30] + mov r3, #0xa + bl FUN_0201BDE0 +_021E1A4C: + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r0, #0x21 + ldrb r0, [r0] + add r7, #0x10 + add r4, r4, #4 + cmp r6, r0 + blo _021E1A0A +_021E1A5C: + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl MOD14_021E1B9C + ldr r1, [sp, #0x10] + add r0, r5, #0 + add r1, #0x21 + str r1, [sp, #0x10] + ldrb r1, [r1] + bl MOD14_021E1AD8 + ldr r0, [sp, #0x14] + bl FUN_02019548 + ldr r0, [r5] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #1 + strh r0, [r5, #0x1e] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1A88: .word 0x000B0C0F + + thumb_func_start MOD14_021E1A8C +MOD14_021E1A8C: ; 0x021E1A8C + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #1 + lsl r0, r3 + tst r0, r2 + beq _021E1A9E + mov r4, #0 + b _021E1AA0 +_021E1A9E: + mov r4, #8 +_021E1AA0: + mov r0, #0x30 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + lsl r0, r3, #4 + add r0, r0, #4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x10] + lsl r2, r3, #0x13 + str r0, [sp, #0x14] + mov r0, #0xff + str r0, [sp, #0x18] + add r0, r1, #0 + ldr r1, [r5, #0x28] + lsl r3, r4, #0x10 + ldr r1, [r1, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_02019684 + add sp, #0x1c + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1AD8 +MOD14_021E1AD8: ; 0x021E1AD8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp, #8] + add r5, r1, #0 + ldr r0, [r0] + mov r1, #1 + bl FUN_0201886C + mov r2, #8 + sub r2, r2, r5 + mov ip, r2 + add r0, #0xe6 + lsl r2, r2, #7 + add r2, r0, r2 + ldr r1, _021E1B40 ; =0x00000251 + mov r3, #0x18 + mov r0, ip + mul r3, r0 + add r4, r1, r3 + mov r6, #0 + lsl r7, r5, #1 + beq _021E1B24 + mov r0, #1 + lsl r0, r0, #0xe +_021E1B08: + mov r3, #0 + add r5, r2, #0 +_021E1B0C: + add r1, r4, #0 + orr r1, r0 + strh r1, [r5] + add r3, r3, #1 + add r4, r4, #1 + add r5, r5, #2 + cmp r3, #0xc + blo _021E1B0C + add r6, r6, #1 + add r2, #0x40 + cmp r6, r7 + blo _021E1B08 +_021E1B24: + mov r0, #0xc + str r0, [sp] + mov r3, ip + lsl r3, r3, #1 + ldr r0, [sp, #8] + str r7, [sp, #4] + ldr r0, [r0] + mov r1, #1 + mov r2, #0x13 + add r3, r3, #3 + bl MOD14_021E1C10 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E1B40: .word 0x00000251 + + thumb_func_start MOD14_021E1B44 +MOD14_021E1B44: ; 0x021E1B44 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #0x1c] + cmp r0, #0 + beq _021E1B5A + ldr r0, [r4] + ldr r1, [r4, #0x18] + bl MOD14_021E1CEC + mov r0, #0 + strh r0, [r4, #0x1c] +_021E1B5A: + ldrh r0, [r4, #0x1e] + cmp r0, #0 + beq _021E1B6E + ldr r1, [r4, #0x18] + ldr r0, [r4] + add r1, #0x10 + bl MOD14_021E1CA0 + mov r0, #0 + strh r0, [r4, #0x1e] +_021E1B6E: + ldr r0, [r4] + mov r1, #1 + bl FUN_02017CD0 + pop {r4, pc} + + thumb_func_start MOD14_021E1B78 +MOD14_021E1B78: ; 0x021E1B78 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #0x1e] + cmp r0, #0 + beq _021E1B90 + ldr r1, [r4, #0x18] + ldr r0, [r4] + add r1, #0x10 + bl MOD14_021E1CA0 + mov r0, #0 + strh r0, [r4, #0x1e] +_021E1B90: + ldr r0, [r4] + mov r1, #1 + bl FUN_02017CD0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1B9C +MOD14_021E1B9C: ; 0x021E1B9C + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + ldr r4, [r0, #0x18] + add r0, r6, #0 + add r0, #0x21 + ldrb r1, [r0] + mov r0, #8 + add r4, #0x10 + sub r0, r0, r1 + lsl r5, r0, #4 + mov r0, #0xa + str r0, [sp] + lsl r0, r1, #0x14 + lsr r0, r0, #0x10 + lsl r3, r5, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0xf + mov r2, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + add r6, #0x20 + ldrb r2, [r6] + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #4 + add r2, r5, r2 + bl FUN_02002218 + add r0, r4, #0 + bl FUN_02019548 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E1BE4 +MOD14_021E1BE4: ; 0x021E1BE4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r4, [r6, #0x18] + add r7, r1, #0 + add r4, #0x10 + mov r5, #0 +_021E1BF0: + add r2, r7, #0 + add r2, #0x22 + ldrb r2, [r2] + add r0, r6, #0 + add r1, r4, #0 + add r3, r5, #0 + bl MOD14_021E1A8C + add r5, r5, #1 + cmp r5, #6 + blt _021E1BF0 + add r0, r4, #0 + bl FUN_02019548 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1C10 +MOD14_021E1C10: ; 0x021E1C10 + push {r3, r4, r5, r6, r7, lr} + lsl r1, r1, #0x18 + add r7, r3, #0 + lsr r1, r1, #0x18 + add r6, r2, #0 + ldr r5, [sp, #0x18] + ldr r4, [sp, #0x1c] + bl FUN_0201886C + sub r1, r7, #1 + sub r2, r6, #1 + lsl r1, r1, #5 + add r1, r2, r1 + mov r2, #0x72 + lsl r3, r1, #1 + lsl r2, r2, #8 + strh r2, [r0, r3] + add r1, r0, r3 + mov r2, #0 + cmp r5, #0 + bls _021E1C48 + ldr r0, _021E1C8C ; =0x00007201 + add r3, r1, #0 +_021E1C3E: + add r2, r2, #1 + strh r0, [r3, #2] + add r3, r3, #2 + cmp r2, r5 + blo _021E1C3E +_021E1C48: + lsl r0, r5, #1 + add r2, r1, r0 + ldr r3, _021E1C90 ; =0x00007202 + add r1, #0x40 + mov r7, #0 + strh r3, [r2, #2] + cmp r4, #0 + bls _021E1C6C + ldr r2, _021E1C94 ; =0x00007205 + add r6, r0, r1 + add r3, r3, #1 +_021E1C5E: + strh r3, [r1] + strh r2, [r6, #2] + add r7, r7, #1 + add r6, #0x40 + add r1, #0x40 + cmp r7, r4 + blo _021E1C5E +_021E1C6C: + ldr r2, _021E1C98 ; =0x00007206 + mov r4, #0 + strh r2, [r1] + cmp r5, #0 + bls _021E1C84 + add r3, r1, #0 + add r2, r2, #1 +_021E1C7A: + add r4, r4, #1 + strh r2, [r3, #2] + add r3, r3, #2 + cmp r4, r5 + blo _021E1C7A +_021E1C84: + ldr r2, _021E1C9C ; =0x00007208 + add r0, r1, r0 + strh r2, [r0, #2] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1C8C: .word 0x00007201 +_021E1C90: .word 0x00007202 +_021E1C94: .word 0x00007205 +_021E1C98: .word 0x00007206 +_021E1C9C: .word 0x00007208 + + thumb_func_start MOD14_021E1CA0 +MOD14_021E1CA0: ; 0x021E1CA0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldrb r1, [r4, #4] + bl FUN_0201886C + ldrb r1, [r4, #5] + mov r5, #0 + sub r2, r1, #1 + ldrb r1, [r4, #6] + sub r1, r1, #1 + lsl r1, r1, #5 + add r1, r2, r1 + lsl r1, r1, #1 + add r2, r0, r1 + ldrb r0, [r4, #8] + add r0, r0, #2 + beq _021E1CEA + add r0, r5, #0 + add r1, r5, #0 +_021E1CC6: + ldrb r6, [r4, #7] + add r3, r1, #0 + add r6, r6, #2 + beq _021E1CDE + add r6, r2, #0 +_021E1CD0: + strh r0, [r6] + ldrb r7, [r4, #7] + add r3, r3, #1 + add r6, r6, #2 + add r7, r7, #2 + cmp r3, r7 + blo _021E1CD0 +_021E1CDE: + ldrb r3, [r4, #8] + add r5, r5, #1 + add r2, #0x40 + add r3, r3, #2 + cmp r5, r3 + blo _021E1CC6 +_021E1CEA: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E1CEC +MOD14_021E1CEC: ; 0x021E1CEC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldrb r1, [r4, #4] + bl FUN_0201886C + ldrb r1, [r4, #5] + mov r5, #0 + sub r2, r1, #2 + ldrb r1, [r4, #6] + sub r1, r1, #1 + lsl r1, r1, #5 + add r1, r2, r1 + lsl r1, r1, #1 + add r2, r0, r1 + ldrb r0, [r4, #8] + add r0, r0, #2 + beq _021E1D36 + add r0, r5, #0 + add r1, r5, #0 +_021E1D12: + ldrb r6, [r4, #7] + add r3, r1, #0 + add r6, r6, #5 + beq _021E1D2A + add r6, r2, #0 +_021E1D1C: + strh r0, [r6] + ldrb r7, [r4, #7] + add r3, r3, #1 + add r6, r6, #2 + add r7, r7, #5 + cmp r3, r7 + blo _021E1D1C +_021E1D2A: + ldrb r3, [r4, #8] + add r5, r5, #1 + add r2, #0x40 + add r3, r3, #2 + cmp r5, r3 + blo _021E1D12 +_021E1D36: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E1D38 +MOD14_021E1D38: ; 0x021E1D38 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + str r1, [r5] + str r3, [r5, #4] + str r2, [r5, #0xc] + ldr r0, [sp, #0x30] + mov r4, #1 + str r0, [r5, #8] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r2, r3, #0 + str r4, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + mov r0, #0x12 + mov r1, #4 + add r3, r4, #0 + bl FUN_0200687C + mov r0, #0x12 + mov r1, #0x1b + add r2, sp, #0x14 + mov r3, #0xa + bl FUN_02006C08 + add r4, r0, #0 + ldr r0, [sp, #0x14] + add r1, r5, #0 + ldr r0, [r0, #0xc] + add r1, #0xe4 + mov r2, #0x40 + bl MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0x12 + mov r1, #0x14 + add r2, sp, #0x14 + mov r3, #0xa + bl FUN_02006C08 + add r4, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r0, #0xc] + add r1, r5, r1 + mov r2, #0x20 + bl MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0x2a + mov r4, #1 + str r0, [sp, #0x10] + add r0, #0xe4 + lsl r1, r1, #4 + lsl r4, r4, #0x10 + mov r7, #7 + str r0, [sp, #0x10] + add r6, r0, r1 +_021E1DBC: + asr r0, r4, #0xc + str r0, [sp] + ldr r0, [sp, #0x10] + ldr r3, _021E1ED8 ; =0x00007FFF + add r1, r6, #0 + mov r2, #0x30 + bl MOD14_021DDE40 + ldr r0, _021E1EDC ; =0x00002492 + sub r7, r7, #1 + sub r4, r4, r0 + sub r6, #0x60 + cmp r7, #1 + bge _021E1DBC + add r0, r5, #0 + mov r1, #3 + add r0, #0xe4 + lsl r1, r1, #8 + bl DC_FlushRange + mov r0, #0xe1 + lsl r0, r0, #2 + mov r1, #0x1a + add r0, r5, r0 + lsl r1, r1, #4 + mov r2, #0x60 + bl GX_LoadOBJPltt + add r0, r5, #0 + mov r1, #0x1a + add r0, #0xe4 + lsl r1, r1, #4 + mov r2, #0x60 + bl GXS_LoadOBJPltt + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x11 + mov r2, #1 + add r3, #0x18 + bl FUN_02006BB0 + str r0, [r5, #0x14] + mov r0, #0xa + str r0, [sp] + mov r0, #0x12 + add r3, r5, #0 + add r1, r0, #0 + mov r2, #1 + add r3, #0x20 + bl FUN_02006C30 + str r0, [r5, #0x1c] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #2 + mov r2, #1 + add r3, #0x38 + bl FUN_02006BDC + str r0, [r5, #0x34] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #3 + mov r2, #1 + add r3, #0x30 + bl FUN_02006BDC + str r0, [r5, #0x2c] + mov r0, #2 + mov r1, #0xd + mov r2, #4 + mov r3, #0xa + bl FUN_0200B870 + str r0, [r5, #0x44] + mov r0, #0x7d + lsl r0, r0, #2 + mov r1, #0xa + bl FUN_020219F4 + ldr r1, _021E1EE0 ; =0x00004BFC + ldr r2, _021E1EE4 ; =0x00000157 + str r0, [r5, r1] + mov r0, #0 + str r0, [r5, #0x10] + ldr r0, [r5, #0x18] + mov r1, #0x20 + ldr r0, [r0, #0x14] + mov r3, #0xa + str r0, [r5, #0x3c] + add r0, r5, #0 + add r0, #0x40 + strh r1, [r0] + add r0, r5, #0 + add r0, #0x42 + strh r1, [r0] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + ldr r1, _021E1EE8 ; =0x00004BF8 + add r2, r5, #0 + str r0, [r5, r1] + mov r1, #0 + add r0, r1, #0 +_021E1E9C: + add r1, r1, #1 + str r0, [r2, #0x48] + add r2, r2, #4 + cmp r1, #0x12 + blt _021E1E9C + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021E1ECC + ldr r0, _021E1EE0 ; =0x00004BFC + ldr r0, [r5, r0] + cmp r0, #0 + bne _021E1ED2 +_021E1ECC: + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E1ED2: + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1ED8: .word 0x00007FFF +_021E1EDC: .word 0x00002492 +_021E1EE0: .word 0x00004BFC +_021E1EE4: .word 0x00000157 +_021E1EE8: .word 0x00004BF8 + + thumb_func_start MOD14_021E1EEC +MOD14_021E1EEC: ; 0x021E1EEC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0xa + mov r1, #3 + bl FUN_02018FF4 + str r0, [r7, #0x10] + cmp r0, #0 + beq _021E1F1A + mov r6, #0 + ldr r4, _021E1F1C ; =0x021E662C + add r5, r6, #0 +_021E1F04: + ldr r1, [r7, #0x10] + ldr r0, [r7, #4] + add r1, r1, r5 + add r2, r4, #0 + bl FUN_02019150 + add r6, r6, #1 + add r4, #8 + add r5, #0x10 + cmp r6, #3 + blo _021E1F04 +_021E1F1A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1F1C: .word 0x021E662C + + thumb_func_start MOD14_021E1F20 +MOD14_021E1F20: ; 0x021E1F20 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021E1F90 ; =0x00004BF8 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021E1F30 + bl FUN_0200A8B8 +_021E1F30: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E1F3A + bl FUN_02016A18 +_021E1F3A: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E1F44 + bl FUN_02016A18 +_021E1F44: + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021E1F4E + bl FUN_02016A18 +_021E1F4E: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E1F58 + bl FUN_02016A18 +_021E1F58: + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021E1F62 + bl FUN_0200B990 +_021E1F62: + ldr r0, _021E1F94 ; =0x00004BFC + ldr r0, [r5, r0] + cmp r0, #0 + beq _021E1F6E + bl FUN_02021A20 +_021E1F6E: + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _021E1F8E + mov r6, #0 + add r4, r6, #0 +_021E1F78: + ldr r0, [r5, #0x10] + add r0, r0, r4 + bl FUN_02019178 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #3 + blt _021E1F78 + ldr r0, [r5, #0x10] + bl FUN_02016A18 +_021E1F8E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E1F90: .word 0x00004BF8 +_021E1F94: .word 0x00004BFC + + thumb_func_start MOD14_021E1F98 +MOD14_021E1F98: ; 0x021E1F98 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl MOD14_021DC464 + add r1, r4, #0 + add r1, #0xe0 + str r0, [r1] + add r0, r4, #0 + bl MOD14_021E223C + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E247C + pop {r4, pc} + + thumb_func_start MOD14_021E1FB8 +MOD14_021E1FB8: ; 0x021E1FB8 + ldr r3, _021E1FBC ; =MOD14_021E24D8 + bx r3 + .align 2, 0 +_021E1FBC: .word MOD14_021E24D8 + + thumb_func_start MOD14_021E1FC0 +MOD14_021E1FC0: ; 0x021E1FC0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl MOD14_021DC464 + add r1, r4, #0 + add r1, #0xe0 + str r0, [r1] + add r0, r4, #0 + bl MOD14_021E2360 + add r0, r4, #0 + bl MOD14_021E2394 + add r0, r4, #0 + bl MOD14_021E240C + pop {r4, pc} + + thumb_func_start MOD14_021E1FE4 +MOD14_021E1FE4: ; 0x021E1FE4 + ldr r3, _021E1FEC ; =MOD14_021E247C + mov r1, #1 + bx r3 + nop +_021E1FEC: .word MOD14_021E247C + + thumb_func_start MOD14_021E1FF0 +MOD14_021E1FF0: ; 0x021E1FF0 + ldr r3, _021E1FF4 ; =MOD14_021E24D8 + bx r3 + .align 2, 0 +_021E1FF4: .word MOD14_021E24D8 + + thumb_func_start MOD14_021E1FF8 +MOD14_021E1FF8: ; 0x021E1FF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp, #8] + ldr r0, [r0, #0xc] + str r1, [sp, #0xc] + str r2, [sp, #0x10] + str r3, [sp, #0x14] + bl MOD14_021DC44C + ldr r1, [sp, #0xc] + str r0, [sp, #0x28] + bl FUN_0206B43C + add r0, #0xd0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xc + str r0, [sp] + ldr r0, [sp, #8] + str r1, [sp, #4] + add r0, #0x3c + mov r1, #9 + mov r2, #0xa + mov r3, #0xe + bl FUN_02018F4C + mov r4, #0 + mov r0, #0xc + str r4, [sp, #0x20] + str r0, [sp, #0x18] +_021E2034: + mov r0, #0 + str r0, [sp, #0x24] + ldr r0, [sp, #8] + mov r6, #0xa + str r0, [sp, #0x2c] + add r0, #0x3c + str r0, [sp, #0x2c] + ldr r0, [sp, #0x18] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x30] +_021E204A: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0xc] + add r2, r4, #0 + bl FUN_0206B5E4 + add r4, r4, #1 + add r5, r0, #0 + bl FUN_02066A6C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + add r7, r0, #0 + beq _021E20C8 + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _021E209A + add r0, r5, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, r7, #0 + mov r2, #0x1b + bl FUN_02068654 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + b _021E20AA +_021E209A: + ldr r0, _021E2174 ; =0x000001EA + cmp r7, r0 + beq _021E20A4 + mov r0, #8 + b _021E20A6 +_021E20A4: + mov r0, #1 +_021E20A6: + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 +_021E20AA: + ldr r0, _021E2178 ; =0x021E6644 + ldr r2, [sp, #0x30] + ldrb r0, [r0, r1] + mov r3, #2 + add r0, #0xe0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #2 + str r0, [sp] + str r1, [sp, #4] + lsl r1, r6, #0x10 + ldr r0, [sp, #0x2c] + lsr r1, r1, #0x10 + bl FUN_02018F4C +_021E20C8: + ldr r1, [sp, #0x1c] + add r0, r5, #0 + bl FUN_02066A94 + ldr r0, [sp, #0x24] + add r6, r6, #2 + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #6 + blo _021E204A + ldr r0, [sp, #0x18] + add r0, r0, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #5 + blo _021E2034 + ldr r0, [sp, #0x48] + cmp r0, #0 + beq _021E2132 + ldr r0, [sp, #0x14] + cmp r0, #1 + beq _021E20FE + cmp r0, #2 + beq _021E2110 + b _021E211E +_021E20FE: + mov r0, #1 + lsl r0, r0, #0x1a + ldr r1, [r0] + ldr r0, _021E217C ; =0x00300010 + and r1, r0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x18] + str r1, [r0, #8] + b _021E211E +_021E2110: + ldr r0, _021E2180 ; =0x04001000 + ldr r1, [r0] + ldr r0, _021E217C ; =0x00300010 + and r1, r0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x18] + str r1, [r0, #8] +_021E211E: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r0, [r0, #0x18] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x48] + lsl r1, r1, #5 + bl FUN_020B1768 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E2132: + ldr r0, [sp, #8] + ldr r1, [r0, #0x18] + ldr r0, [r1, #0x14] + ldr r1, [r1, #0x10] + bl DC_FlushRange + ldr r0, [sp, #0x14] + cmp r0, #1 + beq _021E214C + cmp r0, #2 + beq _021E2160 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E214C: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x18] + lsl r1, r1, #5 + ldr r0, [r2, #0x14] + ldr r2, [r2, #0x10] + bl GX_LoadOBJ + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E2160: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x18] + lsl r1, r1, #5 + ldr r0, [r2, #0x14] + ldr r2, [r2, #0x10] + bl GXS_LoadOBJ + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E2174: .word 0x000001EA +_021E2178: .word 0x021E6644 +_021E217C: .word 0x00300010 +_021E2180: .word 0x04001000 + + thumb_func_start MOD14_021E2184 +MOD14_021E2184: ; 0x021E2184 + ldr r0, [r0, #0x20] + bx lr + + thumb_func_start MOD14_021E2188 +MOD14_021E2188: ; 0x021E2188 + add r0, #0xe0 + ldr r0, [r0] + sub r0, r0, #3 + bpl _021E2192 + add r0, #0x12 +_021E2192: + bx lr + + thumb_func_start MOD14_021E2194 +MOD14_021E2194: ; 0x021E2194 + push {r3, r4} + mov r4, #0 + ldr r1, _021E21AC ; =0x00004BE4 + add r3, r4, #0 +_021E219C: + add r2, r0, r4 + add r4, r4, #1 + strb r3, [r2, r1] + cmp r4, #0x12 + blt _021E219C + pop {r3, r4} + bx lr + nop +_021E21AC: .word 0x00004BE4 + + thumb_func_start MOD14_021E21B0 +MOD14_021E21B0: ; 0x021E21B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + mov r2, #0xf9 + add r4, r1, #0 + lsl r2, r2, #2 + add r3, r5, r2 + lsl r1, r4, #0xa + ldr r0, [r0, #0x14] + add r1, r3, r1 + add r2, #0x1c + bl MIi_CpuCopy32 + mov r1, #0xf9 + lsl r1, r1, #2 + add r0, r5, r1 + add r1, #0x1c + bl DC_FlushRange + ldr r0, _021E21E0 ; =0x00004BE4 + mov r2, #1 + add r1, r5, r4 + strb r2, [r1, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_021E21E0: .word 0x00004BE4 + + thumb_func_start MOD14_021E21E4 +MOD14_021E21E4: ; 0x021E21E4 + push {r4, r5, r6, lr} + sub sp, #0x28 + add r5, r0, #0 + mov r0, #0x63 + lsl r1, r1, #5 + lsl r0, r0, #4 + add r6, r1, r0 + add r4, r2, #0 + ldr r0, _021E2238 ; =0x00004BE4 + add r1, r5, r4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _021E2214 + mov r2, #0xf9 + lsl r2, r2, #2 + add r1, r5, r2 + lsl r0, r4, #0xa + add r0, r1, r0 + lsl r1, r6, #5 + add r2, #0x1c + bl GX_LoadOBJ + add sp, #0x28 + pop {r4, r5, r6, pc} +_021E2214: + add r0, sp, #4 + bl FUN_020B1A24 + add r0, sp, #4 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD14_021E1FF8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E21B0 + add sp, #0x28 + pop {r4, r5, r6, pc} + nop +_021E2238: .word 0x00004BE4 + + thumb_func_start MOD14_021E223C +MOD14_021E223C: ; 0x021E223C + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + add r6, r0, #0 + bl MOD14_021E2194 + ldr r0, [r6] + bl MOD14_021DDD50 + add r4, r0, #0 + ldr r0, [r6] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #4] + mov r1, #0 + str r0, [sp] + str r1, [sp, #4] + ldr r3, [r6, #0x20] + add r0, sp, #0x40 + bl MOD14_021DDDB4 + add r0, r6, #0 + bl MOD14_021E2188 + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0x63 + lsl r0, r0, #4 + str r0, [sp, #8] + add r4, r6, #0 + mov r5, #0x20 +_021E227C: + add r0, sp, #0x1c + bl FUN_020B1A24 + add r0, sp, #0x1c + str r0, [sp] + ldr r2, [sp, #8] + add r0, r6, #0 + add r1, r7, #0 + mov r3, #1 + bl MOD14_021E1FF8 + add r0, sp, #0x1c + str r0, [sp, #0x40] + mov r0, #0xb + str r0, [sp] + mov r0, #1 + mov r2, #2 + str r0, [sp, #4] + lsl r2, r2, #8 + ldr r0, [r6, #8] + add r1, sp, #0x40 + lsr r3, r2, #1 + bl MOD14_021DDDD4 + str r0, [r4, #0x48] + cmp r0, #0 + bne _021E22B6 + bl ErrorHandling +_021E22B6: + ldr r0, [r4, #0x48] + mov r1, #0 + bl FUN_020200A0 + cmp r5, #0 + ble _021E22D4 + lsl r0, r5, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021E22E2 +_021E22D4: + lsl r0, r5, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021E22E2: + bl _ffix + str r0, [sp, #0x10] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, [r4, #0x48] + add r1, sp, #0x10 + bl FUN_02020044 + add r0, r6, #0 + add r1, r7, #0 + bl MOD14_021E21B0 + add r7, r7, #1 + cmp r7, #0x12 + blt _021E230A + mov r7, #0 +_021E230A: + ldr r0, [sp, #8] + add r4, r4, #4 + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r5, #0x20 + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #7 + blt _021E227C + mov r4, #0 + add r5, r6, #0 +_021E2322: + ldr r0, [r6, #0xc] + bl MOD14_021DC44C + add r1, r4, #0 + bl FUN_0206B4E4 + add r1, r5, #0 + add r1, #0x94 + add r4, r4, #1 + add r5, r5, #4 + str r0, [r1] + cmp r4, #0x12 + blt _021E2322 + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E2340 +MOD14_021E2340: ; 0x021E2340 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E2348: + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021E2354 + bl FUN_0201FFC8 + str r6, [r5, #0x48] +_021E2354: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #7 + blt _021E2348 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2360 +MOD14_021E2360: ; 0x021E2360 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl MOD14_021E2188 + add r4, r0, #0 + mov r6, #0 + add r5, r7, #0 +_021E236E: + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD14_021E21E4 + ldr r0, [r5, #0x48] + mov r1, #1 + bl FUN_020200A0 + add r4, r4, #1 + cmp r4, #0x12 + blt _021E2388 + mov r4, #0 +_021E2388: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #7 + blt _021E236E + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2394 +MOD14_021E2394: ; 0x021E2394 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC44C + add r1, r5, #0 + ldr r2, _021E23F0 ; =0x00004BFC + add r1, #0xe0 + ldr r1, [r1] + ldr r2, [r5, r2] + ldr r4, [r5, #0x10] + bl FUN_0206B484 + ldr r1, _021E23F0 ; =0x00004BFC + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #7 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E23F4 ; =0x00020807 + ldr r2, _021E23F0 ; =0x00004BFC + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, r2] + lsr r5, r6, #1 + mov r3, #0x30 + add r0, r4, #0 + sub r3, r3, r5 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021E23F0: .word 0x00004BFC +_021E23F4: .word 0x00020807 + + thumb_func_start MOD14_021E23F8 +MOD14_021E23F8: ; 0x021E23F8 + push {r4, lr} + ldr r4, [r0, #0x10] + mov r1, #7 + add r0, r4, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + + thumb_func_start MOD14_021E240C +MOD14_021E240C: ; 0x021E240C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + ldr r0, [r7, #0x10] + mov r1, #4 + str r0, [sp, #0xc] + add r0, #0x10 + str r0, [sp, #0xc] + bl FUN_02019620 + add r0, r7, #0 + bl MOD14_021E2188 + mov r6, #0 + add r4, r0, #0 + add r5, r6, #0 +_021E242C: + ldr r0, [sp, #0xc] + lsl r1, r4, #2 + str r0, [sp] + add r1, r7, r1 + str r5, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r1, #0x94 + mov r2, #2 + ldr r0, [r7, #0x44] + ldr r1, [r1] + add r3, r2, #0 + bl FUN_0200B9EC + add r4, r4, #1 + cmp r4, #0x12 + blt _021E2450 + mov r4, #0 +_021E2450: + add r6, r6, #1 + add r5, #0x20 + cmp r6, #7 + blt _021E242C + ldr r0, [sp, #0xc] + bl FUN_02019548 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2464 +MOD14_021E2464: ; 0x021E2464 + push {r4, lr} + ldr r4, [r0, #0x10] + mov r1, #4 + add r4, #0x10 + add r0, r4, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E247C +MOD14_021E247C: ; 0x021E247C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0xa + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + beq _021E24B6 + ldr r0, _021E24B8 ; =0x021E6624 + lsl r1, r6, #2 + ldr r0, [r0, r1] + str r5, [r4] + mov r2, #0 + strb r2, [r4, #4] + add r1, r4, #0 + strb r2, [r4, #5] + bl FUN_0200CA44 + add r1, r5, #0 + add r1, #0xdc + add r5, #0xdc + str r0, [r1] + ldr r0, [r5] + cmp r0, #0 + bne _021E24B6 + add r0, r4, #0 + bl FUN_02016A18 +_021E24B6: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E24B8: .word 0x021E6624 + + thumb_func_start MOD14_021E24BC +MOD14_021E24BC: ; 0x021E24BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1] + mov r2, #0 + add r0, #0xdc + str r2, [r0] + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E24D8 +MOD14_021E24D8: ; 0x021E24D8 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _021E24E4 + mov r0, #1 + bx lr +_021E24E4: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021E24E8 +MOD14_021E24E8: ; 0x021E24E8 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r1, #0 + ldrb r2, [r4, #4] + ldr r5, [r4] + cmp r2, #3 + bls _021E24F8 + b _021E260E +_021E24F8: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E2504: ; jump table + .short _021E250C - _021E2504 - 2 ; case 0 + .short _021E2592 - _021E2504 - 2 ; case 1 + .short _021E25B8 - _021E2504 - 2 ; case 2 + .short _021E260A - _021E2504 - 2 ; case 3 +_021E250C: + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + ldrb r0, [r4, #5] + lsl r1, r0, #1 + cmp r1, #0xa + bge _021E2562 + mov r1, #0xa + sub r1, r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0x20 + str r1, [sp, #4] + str r0, [sp, #8] + ldr r2, [r5, #0x30] + ldr r0, [r5, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldrb r6, [r4, #5] + mov r0, #0x20 + mov r3, #0xa + str r0, [sp] + str r6, [sp, #4] + ldr r1, [r5, #0x30] + mov r2, #0 + add r1, #0xc + str r1, [sp, #8] + sub r1, r3, r6 + lsl r1, r1, #0x18 + str r2, [sp, #0xc] + lsr r1, r1, #0x18 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r3, [sp, #0x18] + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02018170 + b _021E2582 +_021E2562: + mov r0, #5 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r2, [r5, #0x30] + ldr r0, [r5, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldrb r0, [r4, #4] + add r0, r0, #1 + strb r0, [r4, #4] +_021E2582: + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #7 + add sp, #0x1c + strb r0, [r4, #5] + pop {r3, r4, r5, r6, pc} +_021E2592: + ldrb r0, [r4, #5] + add r3, r5, #0 + mov r2, #0x60 + add r1, r0, #0 + add r3, #0xe4 + mul r1, r2 + add r0, r3, r1 + mov r1, #0x1a + lsl r1, r1, #4 + bl GX_LoadOBJPltt + add r0, r5, #0 + bl MOD14_021E2360 + ldrb r0, [r4, #4] + add sp, #0x1c + add r0, r0, #1 + strb r0, [r4, #4] + pop {r3, r4, r5, r6, pc} +_021E25B8: + ldrb r0, [r4, #5] + cmp r0, #0 + beq _021E25C2 + sub r0, r0, #1 + strb r0, [r4, #5] +_021E25C2: + ldrb r0, [r4, #5] + add r3, r5, #0 + mov r2, #0x60 + add r1, r0, #0 + add r3, #0xe4 + mul r1, r2 + add r0, r3, r1 + mov r1, #0x1a + lsl r1, r1, #4 + bl GX_LoadOBJPltt + ldrb r0, [r4, #5] + cmp r0, #0 + bne _021E260E + ldr r0, [r5, #0x10] + bl FUN_02019270 + ldr r0, [r5, #0x10] + add r0, #0x10 + bl FUN_02019270 + add r0, r5, #0 + bl MOD14_021E2394 + add r0, r5, #0 + bl MOD14_021E240C + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02017CD0 + ldrb r0, [r4, #4] + add sp, #0x1c + add r0, r0, #1 + strb r0, [r4, #4] + pop {r3, r4, r5, r6, pc} +_021E260A: + bl MOD14_021E24BC +_021E260E: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2614 +MOD14_021E2614: ; 0x021E2614 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r1, #0 + ldrb r2, [r5, #4] + ldr r4, [r5] + cmp r2, #0 + beq _021E262E + cmp r2, #1 + beq _021E264A + cmp r2, #2 + beq _021E26DC + add sp, #0x1c + pop {r4, r5, pc} +_021E262E: + add r0, r4, #0 + bl MOD14_021E2340 + add r0, r4, #0 + bl MOD14_021E23F8 + add r0, r4, #0 + bl MOD14_021E2464 + ldrb r0, [r5, #4] + add sp, #0x1c + add r0, r0, #1 + strb r0, [r5, #4] + pop {r4, r5, pc} +_021E264A: + mov r0, #5 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r4, #4] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + ldrb r0, [r5, #5] + add r0, r0, #1 + strb r0, [r5, #5] + ldrb r0, [r5, #5] + lsl r1, r0, #1 + cmp r1, #0xa + bge _021E26CA + add r1, r0, #5 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0x20 + str r1, [sp, #4] + mov r1, #5 + sub r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r2, [r4, #0x30] + ldr r0, [r4, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldrb r1, [r5, #5] + mov r2, #5 + mov r0, #0x20 + sub r2, r2, r1 + lsl r2, r2, #0x18 + mov r3, #0xa + sub r1, r3, r1 + lsl r1, r1, #0x18 + str r0, [sp] + lsr r2, r2, #0x18 + str r2, [sp, #4] + ldr r2, [r4, #0x30] + lsr r1, r1, #0x18 + add r2, #0xc + str r2, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r3, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02018170 + b _021E26D0 +_021E26CA: + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] +_021E26D0: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02017CD0 + add sp, #0x1c + pop {r4, r5, pc} +_021E26DC: + bl MOD14_021E24BC + add sp, #0x1c + pop {r4, r5, pc} + + thumb_func_start MOD14_021E26E4 +MOD14_021E26E4: ; 0x021E26E4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0xa + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _021E2798 + ldr r0, [r5, #0xc] + bl MOD14_021DC544 + add r6, r0, #0 + ldr r0, [r5, #4] + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + mov r0, #0x18 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + ldr r2, [r5, #0x38] + ldr r0, [r5, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldr r0, [r5, #0x10] + mov r1, #4 + add r0, #0x20 + bl FUN_02019620 + ldr r2, _021E279C ; =0x00004BF8 + add r1, r6, #0 + ldr r0, [r5, r2] + add r2, r2, #4 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E27A0 ; =0x00020104 + ldr r2, _021E27A4 ; =0x00004BFC + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x10] + ldr r2, [r5, r2] + add r0, #0x20 + add r3, r1, #0 + bl FUN_0201BDE0 + ldr r0, [r5, #0x10] + add r0, #0x20 + bl FUN_020191D0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD14_021E2940 + mov r1, #0 + strh r1, [r4, #0x16] + str r5, [r4] + ldr r0, [r5, #4] + str r0, [r4, #4] + str r1, [r4, #8] + mov r1, #0xe + lsl r1, r1, #0xe + str r1, [r4, #0xc] + ldr r0, [r4, #8] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + str r0, [r4, #0x10] + mov r0, #6 + strh r0, [r4, #0x14] + ldr r0, _021E27A8 ; =MOD14_021E27C4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + add r5, #0xdc + str r0, [r5] +_021E2798: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E279C: .word 0x00004BF8 +_021E27A0: .word 0x00020104 +_021E27A4: .word 0x00004BFC +_021E27A8: .word MOD14_021E27C4 + + thumb_func_start MOD14_021E27AC +MOD14_021E27AC: ; 0x021E27AC + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _021E27B8 + mov r0, #1 + bx lr +_021E27B8: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021E27BC +MOD14_021E27BC: ; 0x021E27BC + mov r1, #0 + add r0, #0xdc + str r1, [r0] + bx lr + + thumb_func_start MOD14_021E27C4 +MOD14_021E27C4: ; 0x021E27C4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _021E27D6 + cmp r0, #1 + beq _021E27DC + pop {r3, r4, r5, pc} +_021E27D6: + add r0, r0, #1 + strh r0, [r4, #0x16] + pop {r3, r4, r5, pc} +_021E27DC: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E280A + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + mov r2, #3 + add r3, r1, r0 + str r3, [r4, #8] + ldr r0, [r4, #4] + mov r1, #1 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #8] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + pop {r3, r4, r5, pc} +_021E280A: + ldr r3, [r4, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #0xc] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + ldr r1, _021E2838 ; =MOD14_021E27BC + ldr r2, [r4] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E2838: .word MOD14_021E27BC + + thumb_func_start MOD14_021E283C +MOD14_021E283C: ; 0x021E283C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xa + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _021E287C + mov r1, #0 + strh r1, [r4, #0x16] + str r5, [r4] + ldr r0, [r5, #4] + str r0, [r4, #4] + mov r0, #0xe + lsl r0, r0, #0xe + str r0, [r4, #8] + str r1, [r4, #0xc] + ldr r0, [r4, #8] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + str r0, [r4, #0x10] + mov r0, #6 + strh r0, [r4, #0x14] + ldr r0, _021E2880 ; =MOD14_021E28B4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + add r5, #0xdc + str r0, [r5] +_021E287C: + pop {r3, r4, r5, pc} + nop +_021E2880: .word MOD14_021E28B4 + + thumb_func_start MOD14_021E2884 +MOD14_021E2884: ; 0x021E2884 + push {r4, lr} + add r4, r0, #0 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _021E28A6 + ldr r0, [r4, #4] + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + bl MOD14_021E2A28 + mov r0, #1 + pop {r4, pc} +_021E28A6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E28AC +MOD14_021E28AC: ; 0x021E28AC + mov r1, #0 + add r0, #0xdc + str r1, [r0] + bx lr + + thumb_func_start MOD14_021E28B4 +MOD14_021E28B4: ; 0x021E28B4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E28EC + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + mov r2, #3 + add r3, r1, r0 + str r3, [r4, #8] + ldr r0, [r4, #4] + mov r1, #1 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #8] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021E28EC: + ldr r3, [r4, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #0xc] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02017CD0 + ldr r1, _021E293C ; =MOD14_021E28AC + ldr r2, [r4] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E293C: .word MOD14_021E28AC + + thumb_func_start MOD14_021E2940 +MOD14_021E2940: ; 0x021E2940 + push {r3, r4, r5, r6, lr} + sub sp, #0x54 + add r5, r0, #0 + add r4, r1, #0 + beq _021E29F6 + ldr r0, [r5] + bl MOD14_021DDD50 + add r6, r0, #0 + ldr r0, [r5] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r6, #0x20] + add r1, sp, #0xc + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r3, [r6, #0x1c] + add r0, sp, #0x30 + bl MOD14_021DDDB4 + add r0, sp, #0xc + bl FUN_020B1A24 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + bl FUN_0206E640 + add r1, r0, #0 + mov r0, #0xa + str r0, [sp] + mov r0, #0x10 + mov r2, #0 + add r3, sp, #8 + bl FUN_02006BB0 + add r6, r0, #0 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r1, [r0] + ldr r0, _021E29FC ; =0x00300010 + mov r2, #1 + and r1, r0 + ldr r0, [sp, #8] + add r3, sp, #0xc + str r1, [r0, #8] + mov r1, #0xbe + ldr r0, [sp, #8] + lsl r1, r1, #8 + bl FUN_020B1768 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + add r1, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x10 + mov r2, #1 + mov r3, #0xc0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #8] + add r1, sp, #0x30 + mov r2, #0x12 + mov r3, #0xe0 + bl MOD14_021DDDD4 + add r1, r5, #0 + add r1, #0x90 + add r5, #0x90 + str r0, [r1] + ldr r0, [r5] + cmp r0, #0 + beq _021E29F0 + mov r1, #6 + bl FUN_02020248 +_021E29F0: + add r0, r6, #0 + bl FUN_02016A18 +_021E29F6: + add sp, #0x54 + pop {r3, r4, r5, r6, pc} + nop +_021E29FC: .word 0x00300010 + + thumb_func_start MOD14_021E2A00 +MOD14_021E2A00: ; 0x021E2A00 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + cmp r2, #0 + beq _021E2A24 + mov r2, #0x12 + lsl r2, r2, #0xc + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + str r2, [sp] + add r0, #0x90 + ldr r0, [r0] + add r1, sp, #0 + bl FUN_02020044 +_021E2A24: + add sp, #0xc + pop {pc} + + thumb_func_start MOD14_021E2A28 +MOD14_021E2A28: ; 0x021E2A28 + push {r3, lr} + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0 + beq _021E2A36 + bl FUN_0201FFC8 +_021E2A36: + pop {r3, pc} + + thumb_func_start MOD14_021E2A38 +MOD14_021E2A38: ; 0x021E2A38 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r4, [r5] + ldr r0, [sp, #0x18] + str r6, [r5, #0xc] + str r0, [r5, #8] + str r3, [r5, #4] + add r0, r4, #0 + bl MOD14_021DDD50 + str r0, [r5, #0x38] + add r0, r4, #0 + bl MOD14_021DDD58 + str r0, [r5, #0x10] + add r0, r6, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021E2A6E + mov r0, #0xe + str r0, [r5, #0x30] + mov r0, #0 + b _021E2A74 +_021E2A6E: + mov r0, #9 + str r0, [r5, #0x30] + sub r0, #0x31 +_021E2A74: + str r0, [r5, #0x34] + add r0, r5, #0 + mov r1, #0 + add r0, #0x2b + strb r1, [r0] + str r1, [r5, #0x2c] + add r1, r5, #0 + ldr r0, [r5, #0x38] + add r1, #0x3c + mov r2, #6 + bl MOD14_021E08E4 + mov r1, #9 + mov r0, #0xa + lsl r1, r1, #6 + bl FUN_02016998 + str r0, [r5, #0x1c] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #6 + mov r2, #1 + add r3, #0x18 + bl FUN_02006BDC + str r0, [r5, #0x14] + cmp r0, #0 + beq _021E2AB6 + ldr r1, [r5, #0x1c] + cmp r1, #0 + bne _021E2ABC +_021E2AB6: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021E2ABC: + add r0, r5, #0 + bl MOD14_021E31F4 + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD14_021E2AC8 +MOD14_021E2AC8: ; 0x021E2AC8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021E2AD6 + bl FUN_02016A18 +_021E2AD6: + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _021E2AE0 + bl FUN_02016A18 +_021E2AE0: + add r0, r4, #0 + bl MOD14_021E3390 + pop {r4, pc} + + thumb_func_start MOD14_021E2AE8 +MOD14_021E2AE8: ; 0x021E2AE8 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + mov r2, #0 + add r1, #0x2b + strb r2, [r1] + add r1, r4, #0 + add r1, #0x2b + ldrb r1, [r1] + bl MOD14_021E31A4 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E32F8 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02017CD0 + pop {r4, pc} + + thumb_func_start MOD14_021E2B10 +MOD14_021E2B10: ; 0x021E2B10 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl MOD14_021E32F8 + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x2b + strb r1, [r0] + ldr r0, _021E2B3C ; =MOD14_021E2B50 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2B34 + mov r0, #1 + b _021E2B36 +_021E2B34: + mov r0, #0 +_021E2B36: + str r0, [r4, #0x2c] + pop {r4, pc} + nop +_021E2B3C: .word MOD14_021E2B50 + + thumb_func_start MOD14_021E2B40 +MOD14_021E2B40: ; 0x021E2B40 + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _021E2B4A + mov r0, #1 + bx lr +_021E2B4A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E2B50 +MOD14_021E2B50: ; 0x021E2B50 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #2 + bls _021E2B6C + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + ldr r4, _021E2BAC ; =0xFFFF0000 + sub r1, r0, #2 + b _021E2B72 +_021E2B6C: + lsl r0, r0, #0xf + neg r4, r0 + mov r1, #0 +_021E2B72: + add r0, r5, #0 + add r0, #0x2b + strb r1, [r0] + add r1, r5, #0 + add r1, #0x2b + ldrb r1, [r1] + add r0, r5, #0 + bl MOD14_021E31A4 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02017CD0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E3290 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0 + bne _021E2BA8 + mov r0, #0 + str r0, [r5, #0x2c] + add r0, r6, #0 + bl FUN_0200CAB4 +_021E2BA8: + pop {r4, r5, r6, pc} + nop +_021E2BAC: .word 0xFFFF0000 + + thumb_func_start MOD14_021E2BB0 +MOD14_021E2BB0: ; 0x021E2BB0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E2BCC ; =MOD14_021E2BE4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2BC6 + mov r0, #1 + b _021E2BC8 +_021E2BC6: + mov r0, #0 +_021E2BC8: + str r0, [r4, #0x2c] + pop {r4, pc} + .align 2, 0 +_021E2BCC: .word MOD14_021E2BE4 + + thumb_func_start MOD14_021E2BD0 +MOD14_021E2BD0: ; 0x021E2BD0 + push {r3, lr} + ldr r1, [r0, #0x2c] + cmp r1, #0 + bne _021E2BE0 + bl MOD14_021E3390 + mov r0, #1 + pop {r3, pc} +_021E2BE0: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD14_021E2BE4 +MOD14_021E2BE4: ; 0x021E2BE4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0x18 + bhs _021E2C04 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + mov r4, #1 + lsl r4, r4, #0x10 + add r1, r0, #2 + b _021E2C0A +_021E2C04: + mov r1, #0x1a + sub r0, r1, r0 + lsl r4, r0, #0xf +_021E2C0A: + add r0, r5, #0 + add r0, #0x2b + strb r1, [r0] + add r0, r5, #0 + add r0, #0x2b + ldrb r1, [r0] + cmp r1, #2 + bls _021E2C46 + asr r0, r4, #0xc + lsr r0, r0, #3 + sub r1, r1, #2 + sub r1, r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0xf + lsl r0, r0, #0x18 + str r1, [sp, #4] + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r3, [r5, #0x30] + ldr r0, [r5, #4] + lsl r3, r3, #0x18 + mov r1, #2 + mov r2, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 +_021E2C46: + add r1, r5, #0 + add r1, #0x2b + ldrb r1, [r1] + add r0, r5, #0 + bl MOD14_021E31A4 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02017CD0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E3290 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0x1a + bne _021E2C76 + mov r0, #0 + str r0, [r5, #0x2c] + add r0, r6, #0 + bl FUN_0200CAB4 +_021E2C76: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2C7C +MOD14_021E2C7C: ; 0x021E2C7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r0, [r6, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + add r1, r6, #0 + add r1, #0x28 + ldrb r4, [r1] + cmp r4, r0 + bge _021E2D20 + sub r0, r0, r4 + str r0, [sp, #8] + cmp r4, #5 + bge _021E2CF8 + mov r0, #0x34 + add r1, r4, #0 + mul r1, r0 + add r0, r6, #0 + str r0, [sp, #0xc] + add r0, #0x3c + str r0, [sp, #0xc] + add r5, r0, r1 + add r7, r6, r1 + ldr r0, _021E2D28 ; =0x00000418 + lsl r1, r4, #5 + add r0, r1, r0 + str r0, [sp, #4] +_021E2CB6: + add r1, r4, #1 + mov r0, #0x34 + mul r0, r1 + ldr r1, [sp, #0xc] + str r0, [sp] + add r0, r1, r0 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0930 + ldr r2, [sp, #0xc] + ldr r1, [sp] + ldr r0, [r6, #0x38] + add r1, r2, r1 + mov r2, #1 + bl MOD14_021E08E4 + ldr r0, [r7, #0x3c] + cmp r0, #0 + beq _021E2CE8 + ldr r0, [r6, #0x38] + ldr r2, [sp, #4] + add r1, r5, #0 + bl MOD14_021E0BBC +_021E2CE8: + ldr r0, [sp, #4] + add r4, r4, #1 + add r0, #0x20 + add r5, #0x34 + add r7, #0x34 + str r0, [sp, #4] + cmp r4, #5 + blt _021E2CB6 +_021E2CF8: + add r1, r6, #0 + ldr r0, [sp, #8] + add r1, #0x29 + strb r0, [r1] + add r0, r6, #0 + mov r2, #0 + add r0, #0x2a + strb r2, [r0] + ldr r0, _021E2D2C ; =MOD14_021E2D30 + add r1, r6, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2D18 + mov r0, #1 + b _021E2D1A +_021E2D18: + mov r0, #0 +_021E2D1A: + add sp, #0x10 + str r0, [r6, #0x2c] + pop {r3, r4, r5, r6, r7, pc} +_021E2D20: + mov r0, #0 + str r0, [r6, #0x2c] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E2D28: .word 0x00000418 +_021E2D2C: .word MOD14_021E2D30 + + thumb_func_start MOD14_021E2D30 +MOD14_021E2D30: ; 0x021E2D30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp, #4] + ldr r2, [sp, #4] + str r0, [sp] + add r1, #0x28 + ldr r0, [sp, #4] + add r2, #0x2a + add r0, #0x29 + ldrb r7, [r0] + ldr r0, [sp, #4] + ldrb r1, [r1] + ldrb r3, [r2] + ldr r0, [r0, #0x1c] + lsl r2, r1, #3 + add r3, r3, r2 + mov r2, #0xc + mul r2, r3 + add r4, r0, r2 + mov r6, #0 + cmp r7, #0 + ble _021E2D7C + mov r0, #0x34 + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp, #4] + add r5, r0, r2 +_021E2D66: + ldr r0, [r5, #0x3c] + cmp r0, #0 + beq _021E2D72 + add r1, r4, #0 + bl FUN_02020044 +_021E2D72: + add r6, r6, #1 + add r5, #0x34 + add r4, #0x60 + cmp r6, r7 + blt _021E2D66 +_021E2D7C: + ldr r0, [sp, #4] + add r0, #0x2a + ldrb r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + add r0, #0x2a + strb r1, [r0] + ldr r0, [sp, #4] + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #8 + blo _021E2DA0 + ldr r0, [sp, #4] + mov r1, #0 + str r1, [r0, #0x2c] + ldr r0, [sp] + bl FUN_0200CAB4 +_021E2DA0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E2DA4 +MOD14_021E2DA4: ; 0x021E2DA4 + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _021E2DAE + mov r0, #1 + bx lr +_021E2DAE: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E2DB4 +MOD14_021E2DB4: ; 0x021E2DB4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + sub r4, r0, #1 + add r0, r5, #0 + add r0, #0x28 + ldrb r0, [r0] + cmp r0, r4 + bls _021E2E3A + mov r0, #0x34 + mul r0, r4 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r1, _021E2E44 ; =0x021E6650 + str r0, [r2] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + ldr r2, [r5, #0x34] + add r1, r2, r1 + lsl r2, r1, #0xc + ldr r1, [sp] + sub r2, r2, r1 + asr r1, r2, #2 + lsr r1, r1, #0x1d + add r1, r2, r1 + asr r1, r1, #3 + str r1, [r5, #0x20] + ldr r1, _021E2E48 ; =0x021E6652 + mov r2, #0 + ldrh r0, [r1, r0] + lsl r1, r0, #0xc + ldr r0, [sp, #4] + sub r1, r1, r0 + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + asr r0, r0, #3 + str r0, [r5, #0x24] + add r0, r5, #0 + add r0, #0x2a + strb r2, [r0] + add r0, r5, #0 + add r0, #0x28 + strb r4, [r0] + ldr r0, _021E2E4C ; =MOD14_021E2E60 + add r1, r5, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2E32 + mov r0, #1 + b _021E2E34 +_021E2E32: + mov r0, #0 +_021E2E34: + add sp, #0xc + str r0, [r5, #0x2c] + pop {r4, r5, pc} +_021E2E3A: + mov r0, #0 + str r0, [r5, #0x2c] + add sp, #0xc + pop {r4, r5, pc} + nop +_021E2E44: .word 0x021E6650 +_021E2E48: .word 0x021E6652 +_021E2E4C: .word MOD14_021E2E60 + + thumb_func_start MOD14_021E2E50 +MOD14_021E2E50: ; 0x021E2E50 + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _021E2E5A + mov r0, #1 + bx lr +_021E2E5A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E2E60 +MOD14_021E2E60: ; 0x021E2E60 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x28 + ldrb r1, [r0] + mov r0, #0x34 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x2a + strb r1, [r0] + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #8 + blo _021E2EC6 + add r1, r5, #0 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r5, #0x34] + mov r4, #1 + lsl r2, r1, #2 + ldr r1, _021E2F00 ; =0x021E6650 + ldrh r1, [r1, r2] + add r0, r0, r1 + lsl r0, r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r0, #0x28 + ldrb r0, [r0] + lsl r1, r0, #2 + ldr r0, _021E2F04 ; =0x021E6652 + ldrh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp, #4] + b _021E2ED8 +_021E2EC6: + ldr r1, [sp] + ldr r0, [r5, #0x20] + mov r4, #0 + add r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r5, #0x24] + add r0, r1, r0 + str r0, [sp, #4] +_021E2ED8: + add r0, r5, #0 + add r0, #0x28 + ldrb r1, [r0] + mov r0, #0x34 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + add r1, sp, #0 + bl FUN_02020044 + cmp r4, #0 + beq _021E2EFA + mov r0, #0 + str r0, [r5, #0x2c] + add r0, r6, #0 + bl FUN_0200CAB4 +_021E2EFA: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E2F00: .word 0x021E6650 +_021E2F04: .word 0x021E6652 + + thumb_func_start MOD14_021E2F08 +MOD14_021E2F08: ; 0x021E2F08 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC424 + mov r1, #0x11 + ldr r2, [r5, #0xc] + lsl r1, r1, #4 + ldrh r1, [r2, r1] + cmp r1, r0 + bne _021E2F24 + ldr r0, [r5, #0x10] + bl MOD14_021DEA50 +_021E2F24: + ldr r0, [r5, #0xc] + bl MOD14_021DC3E8 + add r4, r0, #0 + add r2, r5, #0 + mov r1, #0x34 + ldr r0, [r5, #0x38] + add r2, #0x3c + mul r1, r4 + add r1, r2, r1 + mov r2, #1 + bl MOD14_021E0908 + add r5, #0x28 + strb r4, [r5] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E2F44 +MOD14_021E2F44: ; 0x021E2F44 + add r2, r0, #0 + mov r0, #0x5d + mov r3, #0 + lsl r0, r0, #2 + strb r3, [r2, r0] + add r0, r2, #0 + add r0, #0x28 + mov r3, #0x34 + strb r1, [r0] + ldr r0, [r2, #0x38] + add r2, #0x3c + mul r3, r1 + add r1, r2, r3 + ldr r3, _021E2F64 ; =MOD14_021E0C20 + mov r2, #1 + bx r3 + .align 2, 0 +_021E2F64: .word MOD14_021E0C20 + + thumb_func_start MOD14_021E2F68 +MOD14_021E2F68: ; 0x021E2F68 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0x28 + ldrb r1, [r0] + add r4, r5, #0 + mov r0, #0x34 + add r6, r1, #0 + mul r6, r0 + mov r0, #0x5d + lsl r0, r0, #2 + ldrb r0, [r5, r0] + add r4, #0x3c + cmp r0, #0 + beq _021E2F8A + cmp r0, #1 + beq _021E2FD2 + b _021E2FE2 +_021E2F8A: + ldr r0, [r5, #0x38] + add r1, r4, r6 + bl MOD14_021E0C48 + cmp r0, #0 + beq _021E2FE2 + ldr r0, [r5] + bl MOD14_021DDEDC + add r7, r0, #0 + bl MOD14_021DA1B8 + cmp r0, #0 + beq _021E2FE2 + add r0, r7, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + ldr r0, [r5, #0x38] + beq _021E2FBE + add r1, r4, r6 + mov r2, #1 + bl MOD14_021E0908 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E2FBE: + add r1, r4, r6 + mov r2, #2 + bl MOD14_021E0C20 + mov r0, #0x5d + lsl r0, r0, #2 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _021E2FE2 +_021E2FD2: + ldr r0, [r5, #0x38] + add r1, r4, r6 + bl MOD14_021E0C48 + cmp r0, #0 + beq _021E2FE2 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E2FE2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2FE8 +MOD14_021E2FE8: ; 0x021E2FE8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7, #0xc] + bl MOD14_021DC3CC + cmp r0, #1 + bne _021E3020 + ldr r0, [r7, #0xc] + bl MOD14_021DC484 + add r5, r7, #0 + str r0, [sp] + mov r6, #0 + add r4, r7, #0 + add r5, #0x3c +_021E3006: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021E3016 + ldr r0, [r7, #0x38] + ldr r2, [sp] + add r1, r5, #0 + bl MOD14_021E0B54 +_021E3016: + add r6, r6, #1 + add r4, #0x34 + add r5, #0x34 + cmp r6, #6 + blt _021E3006 +_021E3020: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3024 +MOD14_021E3024: ; 0x021E3024 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r5, #0 + mov r0, #0x34 + add r4, r1, #0 + mul r4, r0 + add r6, #0x3c + ldr r0, [r6, r4] + cmp r0, #0 + beq _021E3050 + ldr r0, [r5, #0x38] + add r1, r6, r4 + bl MOD14_021E0BA8 + ldr r0, [r5, #0xc] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, [r5, #0x38] + add r1, r6, r4 + bl MOD14_021E0B54 +_021E3050: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3054 +MOD14_021E3054: ; 0x021E3054 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC3E8 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC45C + add r2, r0, #0 + add r1, r5, #0 + mov r0, #0x34 + add r3, r4, #0 + add r1, #0x3c + mul r3, r0 + ldr r0, [r1, r3] + cmp r0, #0 + beq _021E3080 + ldr r0, [r5, #0x38] + add r1, r1, r3 + bl MOD14_021E0BA4 +_021E3080: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3084 +MOD14_021E3084: ; 0x021E3084 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + mov r0, #0x34 + add r4, r6, #0 + mul r4, r0 + add r0, r5, #0 + add r7, r3, #0 + add r0, #0x3c + str r2, [sp] + add r0, r0, r4 + add r1, r7, #0 + mov r2, #1 + bl MOD14_021E0930 + ldr r0, [r5, #0x38] + ldr r2, [sp] + add r1, r7, #0 + bl MOD14_021E0BBC + add r1, r5, #0 + add r1, #0x3c + ldr r0, [r5, #0x38] + add r1, r1, r4 + mov r2, #1 + bl MOD14_021E08E4 + add r5, #0x28 + strb r6, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E30C0 +MOD14_021E30C0: ; 0x021E30C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0xc] + str r1, [sp] + ldr r0, [r0, #4] + str r2, [sp, #4] + bl FUN_0206B9AC + sub r6, r0, #1 + add r4, r5, #0 + mov r0, #0x34 + add r7, r6, #0 + mul r7, r0 + add r4, #0x3c + ldr r0, [sp, #4] + add r1, r4, r7 + mov r2, #1 + bl MOD14_021E0930 + ldr r2, _021E3110 ; =0x00000418 + lsl r3, r6, #5 + ldr r0, [r5, #0x38] + add r1, r4, r7 + add r2, r3, r2 + bl MOD14_021E0BBC + ldr r0, [r4, r7] + mov r1, #1 + bl FUN_02020238 + ldr r0, [r4, r7] + add r1, r6, #4 + bl MOD14_021DDE24 + ldr r0, [sp] + add r5, #0x28 + strb r0, [r5] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E3110: .word 0x00000418 + + thumb_func_start MOD14_021E3114 +MOD14_021E3114: ; 0x021E3114 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + add r5, r7, #0 + mov r0, #0x34 + add r4, r6, #0 + mul r4, r0 + add r5, #0x3c + add r0, r2, #0 + add r1, r5, r4 + mov r2, #1 + bl MOD14_021E0930 + ldr r2, _021E3154 ; =0x00000418 + lsl r3, r6, #5 + ldr r0, [r7, #0x38] + add r1, r5, r4 + add r2, r3, r2 + bl MOD14_021E0BBC + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_02020238 + ldr r0, [r5, r4] + add r1, r6, #4 + bl MOD14_021DDE24 + add r7, #0x28 + strb r6, [r7] + pop {r3, r4, r5, r6, r7, pc} + nop +_021E3154: .word 0x00000418 + + thumb_func_start MOD14_021E3158 +MOD14_021E3158: ; 0x021E3158 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #6 + blo _021E3166 + bl ErrorHandling +_021E3166: + mov r0, #0x34 + add r5, #0x3c + mul r0, r4 + add r0, r5, r0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E3170 +MOD14_021E3170: ; 0x021E3170 + push {r3, r4} + cmp r1, #6 + bne _021E3184 + ldr r0, [r0, #0x34] + add r0, #0xc0 + str r0, [r2] + mov r0, #0xb8 + str r0, [r3] + pop {r3, r4} + bx lr +_021E3184: + ldr r4, [r0, #0x34] + ldr r0, _021E319C ; =0x021E6650 + lsl r1, r1, #2 + ldrh r0, [r0, r1] + add r0, r4, r0 + str r0, [r2] + ldr r0, _021E31A0 ; =0x021E6652 + ldrh r0, [r0, r1] + str r0, [r3] + pop {r3, r4} + bx lr + nop +_021E319C: .word 0x021E6650 +_021E31A0: .word 0x021E6652 + + thumb_func_start MOD14_021E31A4 +MOD14_021E31A4: ; 0x021E31A4 + push {r3, r4, lr} + sub sp, #0xc + add r3, r0, #0 + cmp r1, #2 + bhi _021E31BE + mov r0, #2 + sub r1, r0, r1 + add r2, r1, #0 + mov r0, #0x1e + mul r2, r0 + mov r1, #0x18 + mov r0, #0 + b _021E31CC +_021E31BE: + cmp r1, #0x1a + bhs _021E31F0 + mov r0, #0x1a + sub r1, r0, r1 + mov r0, #0x18 + mov r2, #0 + sub r0, r0, r1 +_021E31CC: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r4, [r3, #0x18] + ldr r0, [r3, #4] + ldr r3, [r3, #0x30] + add r4, #0xc + lsl r3, r3, #0x18 + mov r1, #2 + add r2, r4, r2 + lsr r3, r3, #0x18 + bl FUN_02018148 +_021E31F0: + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD14_021E31F4 +MOD14_021E31F4: ; 0x021E31F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + str r1, [sp, #4] + mov r0, #0 + ldr r1, _021E328C ; =0x021E6650 + mov ip, r0 +_021E3202: + ldrh r3, [r1] + ldrh r2, [r1, #4] + mov r0, #0 + ldrh r4, [r1, #2] + sub r2, r3, r2 + lsl r3, r2, #0xc + asr r2, r3, #2 + lsr r2, r2, #0x1d + add r2, r3, r2 + ldrh r3, [r1, #6] + asr r2, r2, #3 + mov lr, r2 + sub r3, r4, r3 + lsl r4, r3, #0xc + asr r3, r4, #2 + lsr r3, r3, #0x1d + add r3, r4, r3 + ldr r2, [sp, #4] + add r6, r0, #0 + asr r7, r3, #3 + add r5, r0, #0 +_021E322C: + ldr r3, [sp] + add r5, r5, r7 + ldr r4, [r3, #0x34] + ldrh r3, [r1, #4] + add r0, r0, #1 + add r3, r4, r3 + lsl r4, r3, #0xc + mov r3, lr + add r6, r6, r3 + add r3, r4, r6 + str r3, [r2] + ldrh r3, [r1, #6] + lsl r3, r3, #0xc + add r3, r3, r5 + str r3, [r2, #4] + mov r3, #0 + str r3, [r2, #8] + add r2, #0xc + cmp r0, #7 + blo _021E322C + ldr r3, [sp] + mov r2, #0xc + ldr r4, [r3, #0x34] + ldrh r3, [r1] + mul r2, r0 + ldr r0, [sp, #4] + add r3, r4, r3 + lsl r4, r3, #0xc + ldr r3, [sp, #4] + add r0, r0, r2 + str r4, [r3, r2] + ldrh r2, [r1, #2] + add r1, r1, #4 + lsl r2, r2, #0xc + str r2, [r0, #4] + mov r2, #0 + str r2, [r0, #8] + add r0, r3, #0 + add r0, #0x60 + str r0, [sp, #4] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #5 + blo _021E3202 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E328C: .word 0x021E6650 + + thumb_func_start MOD14_021E3290 +MOD14_021E3290: ; 0x021E3290 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + mov r7, #0 +_021E329A: + ldr r0, [r5, #0x3c] + cmp r0, #0 + beq _021E32F2 + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [sp, #4] + add r0, r0, r4 + str r0, [sp, #4] + ldr r0, [r5, #0x3c] + bl FUN_02020044 + cmp r4, #0 + bge _021E32D8 + mov r0, #0xd + ldr r1, [sp, #4] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _021E32EA + ldr r0, [r5, #0x3c] + mov r1, #1 + bl FUN_020200A0 + b _021E32EA +_021E32D8: + mov r0, #0xd + ldr r1, [sp, #4] + lsl r0, r0, #0x10 + cmp r1, r0 + blt _021E32EA + ldr r0, [r5, #0x3c] + mov r1, #0 + bl FUN_020200A0 +_021E32EA: + add r7, r7, #1 + add r5, #0x34 + cmp r7, #6 + blt _021E329A +_021E32F2: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E32F8 +MOD14_021E32F8: ; 0x021E32F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x24] + str r1, [sp, #0x10] + cmp r1, #0 + beq _021E330A + mov r0, #0 + str r0, [sp, #0x14] + b _021E330E +_021E330A: + mov r0, #0xd0 + str r0, [sp, #0x14] +_021E330E: + ldr r0, [sp, #0x24] + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + mov r4, #0 + str r0, [sp, #0x20] + cmp r0, #0 + ble _021E3384 + ldr r0, [sp, #0x24] + ldr r7, _021E3388 ; =0x00000418 + str r0, [sp, #0x1c] + add r0, #0x3c + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + ldr r5, _021E338C ; =0x021E6650 + str r0, [sp, #0x18] +_021E3330: + ldr r0, [sp, #0x24] + add r1, r4, #0 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9B0 + add r1, r0, #0 + mov r0, #1 + str r0, [sp] + add r0, r4, #4 + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + str r7, [sp, #8] + str r0, [sp, #0xc] + ldr r2, [sp, #0x24] + ldr r0, [sp, #0x24] + ldr r3, [r2, #0x34] + ldrh r2, [r5] + ldrh r6, [r5, #2] + ldr r0, [r0, #0x38] + add r2, r3, r2 + ldr r3, [sp, #0x14] + add r3, r3, r6 + bl MOD14_021E0940 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x10] + ldr r0, [r0, #0x3c] + bl FUN_020200A0 + ldr r0, [sp, #0x1c] + add r4, r4, #1 + add r0, #0x34 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r7, #0x20 + add r0, #0x34 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r5, r5, #4 + cmp r4, r0 + blt _021E3330 +_021E3384: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E3388: .word 0x00000418 +_021E338C: .word 0x021E6650 + + thumb_func_start MOD14_021E3390 +MOD14_021E3390: ; 0x021E3390 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + mov r6, #0 + str r0, [sp] + cmp r0, #0 + ble _021E33C6 + add r5, r7, #0 + add r4, r7, #0 + add r5, #0x3c +_021E33AA: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021E33BA + ldr r0, [r7, #0x38] + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0908 +_021E33BA: + ldr r0, [sp] + add r6, r6, #1 + add r4, #0x34 + add r5, #0x34 + cmp r6, r0 + blt _021E33AA +_021E33C6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E33C8 +MOD14_021E33C8: ; 0x021E33C8 + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r6, r0, #0 + add r0, r5, #0 + add r7, r1, #0 + str r3, [sp] + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021E33E4 + mov r0, #0 + str r0, [r6] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E33E4: + mov r0, #0xa + mov r1, #0xf4 + bl FUN_02016998 + add r4, r0, #0 + beq _021E3460 + ldr r0, [sp] + mov r1, #0xa + str r0, [r4, #8] + str r7, [r4] + ldr r0, [sp, #0x18] + str r5, [r4, #4] + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #0x20 + bl FUN_020219F4 + add r1, r4, #0 + add r1, #0x84 + str r0, [r1] + add r5, #0x9c + ldrb r0, [r5] + mov r1, #0 + add r2, r1, #0 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + str r1, [r4, #0x2c] + str r1, [r4, #0x30] + add r0, r4, #0 +_021E3436: + add r1, r1, #1 + str r2, [r0, #0x34] + add r0, r0, #4 + cmp r1, #8 + blt _021E3436 + add r0, r4, #0 + mov r1, #0 +_021E3444: + add r2, r2, #1 + str r1, [r0, #0x54] + add r0, r0, #4 + cmp r2, #0xa + blt _021E3444 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + bl MOD14_021E3464 + str r4, [r6] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E3460: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E3464 +MOD14_021E3464: ; 0x021E3464 + push {r4, r5, r6, r7} + add r1, r0, #0 + mov r2, #0 + add r1, #0xd4 + strb r2, [r1] + add r1, r0, #0 + mov r4, #0x5a + mov r3, #0x10 + add r1, #0xe4 + strb r3, [r1] + ldr r1, _021E34BC ; =0x020EDF50 + mov r3, #1 + lsl r4, r4, #8 + mov r6, #0x10 +_021E3480: + add r2, r2, r4 + asr r5, r2, #0xc + lsl r5, r5, #2 + ldr r5, [r1, r5] + lsl r5, r5, #4 + asr r7, r5, #0xc + add r5, r0, r3 + add r5, #0xd4 + strb r7, [r5] + add r5, r0, r3 + add r5, #0xd4 + ldrb r5, [r5] + sub r7, r6, r5 + add r5, r0, r3 + add r5, #0xe4 + add r3, r3, #1 + strb r7, [r5] + cmp r3, #0xf + blt _021E3480 + add r1, r0, r3 + add r0, r0, r3 + mov r2, #0x10 + add r1, #0xd4 + strb r2, [r1] + mov r1, #0 + add r0, #0xe4 + strb r1, [r0] + pop {r4, r5, r6, r7} + bx lr + nop +_021E34BC: .word 0x020EDF50 + + thumb_func_start MOD14_021E34C0 +MOD14_021E34C0: ; 0x021E34C0 + push {r4, r5, r6, lr} + add r6, r0, #0 + beq _021E3558 + add r0, #0x88 + bl FUN_02019178 + add r0, r6, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _021E34DA + bl FUN_02016A18 +_021E34DA: + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + beq _021E34E8 + bl FUN_02016A18 +_021E34E8: + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021E34F6 + bl FUN_02016A18 +_021E34F6: + add r0, r6, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _021E3504 + bl FUN_02016A18 +_021E3504: + ldr r0, [r6, #0x2c] + cmp r0, #0 + beq _021E350E + bl FUN_0201FFC8 +_021E350E: + ldr r0, [r6, #0x30] + cmp r0, #0 + beq _021E3518 + bl FUN_0201FFC8 +_021E3518: + add r0, r6, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E3526 + bl FUN_02021A20 +_021E3526: + mov r4, #0 + add r5, r6, #0 +_021E352A: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E3534 + bl FUN_0201FFC8 +_021E3534: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E352A + mov r5, #0 + add r4, r6, #0 +_021E3540: + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _021E354A + bl FUN_0201FFC8 +_021E354A: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #0xa + blt _021E3540 + add r0, r6, #0 + bl FUN_02016A18 +_021E3558: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E355C +MOD14_021E355C: ; 0x021E355C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + beq _021E365C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x67 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x64 + mov r3, #7 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x65 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x66 + mov r3, #5 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + ldr r0, [r4, #8] + mov r1, #4 + mov r3, #1 + bl FUN_02017F48 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #8] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #8] + mov r1, #4 + bl FUN_02017CD0 + ldr r3, [r4, #0x10] + ldr r0, [r4, #8] + lsl r5, r3, #2 + ldr r3, _021E3660 ; =0x021E6674 + mov r1, #5 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + mov r3, #0 + add r1, r4, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r4, #8] + add r1, #0x88 + mov r2, #4 + bl FUN_02019064 + add r0, r4, #0 + add r0, #0x88 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x88 + bl FUN_020191D0 + add r0, r4, #0 + bl MOD14_021E4764 + mov r0, #0x60 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x68 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + add r0, r4, #0 + bl MOD14_021E3664 +_021E365C: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021E3660: .word 0x021E6674 + + thumb_func_start MOD14_021E3664 +MOD14_021E3664: ; 0x021E3664 + push {r3, r4, lr} + sub sp, #0x5c + add r4, r0, #0 + bl MOD14_021E36FC + add r0, sp, #0x14 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x14 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0x72 + mov r2, #1 + bl FUN_02006AE4 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + add r3, r4, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + add r3, #0x9c + add r2, r4, #0 + ldr r3, [r3] + add r0, sp, #0x38 + add r1, sp, #0x14 + add r2, #0x18 + bl MOD14_021DDDB4 + mov r0, #0x31 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r3, #0x8e + ldr r0, [r4, #0xc] + add r1, sp, #0x38 + mov r2, #0 + lsl r3, r3, #2 + bl MOD14_021DDDD4 + str r0, [r4, #0x2c] + mov r0, #0x31 + mov r3, #0x8e + str r0, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r0, [r4, #0xc] + add r1, sp, #0x38 + add r2, #0xfe + lsl r3, r3, #2 + bl MOD14_021DDDD4 + str r0, [r4, #0x30] + mov r1, #1 + bl FUN_02020100 + ldr r0, [r4, #4] + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021E36F6 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_02020130 +_021E36F6: + add sp, #0x5c + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E36FC +MOD14_021E36FC: ; 0x021E36FC + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x73 + mov r2, #1 + add r3, #0x9c + bl FUN_02006C30 + add r1, r4, #0 + add r1, #0x98 + str r0, [r1] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x74 + mov r2, #1 + add r3, #0xa4 + bl FUN_02006C5C + add r1, r4, #0 + add r1, #0xa0 + str r0, [r1] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x76 + mov r2, #1 + add r3, #0xac + bl FUN_02006C30 + add r1, r4, #0 + add r1, #0xa8 + str r0, [r1] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x77 + mov r2, #1 + add r3, #0xb4 + bl FUN_02006C5C + add r1, r4, #0 + add r1, #0xb0 + str r0, [r1] + add r0, r4, #0 + add r0, #0x18 + bl FUN_020B19DC + mov r0, #0xa + str r0, [sp] + add r4, #0x18 + mov r0, #0x12 + mov r1, #0x78 + mov r2, #2 + mov r3, #0 + str r4, [sp, #4] + bl FUN_02006A8C + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3784 +MOD14_021E3784: ; 0x021E3784 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + mov r2, #0 + bl MOD14_021DDD40 + str r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3798 +MOD14_021E3798: ; 0x021E3798 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x14] + pop {r4, pc} + + thumb_func_start MOD14_021E37A8 +MOD14_021E37A8: ; 0x021E37A8 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021E37B2 + mov r0, #1 + bx lr +_021E37B2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E37B8 +MOD14_021E37B8: ; 0x021E37B8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + beq _021E388A + ldr r1, [r5, #4] + add r1, #0x9c + ldrb r6, [r1] + ldr r1, [r5, #0x10] + cmp r1, r6 + beq _021E388A + add r1, r5, #0 + add r4, r5, #0 + add r1, #0xb8 + str r5, [r1] + add r4, #0xb8 + mov r1, #0 + str r1, [r4, #8] + str r1, [r4, #4] + cmp r6, #0 + beq _021E37E8 + cmp r6, #1 + beq _021E3800 + cmp r6, #2 + beq _021E3822 + b _021E384A +_021E37E8: + mov r1, #8 + strh r1, [r4, #0xc] + ldr r7, _021E388C ; =MOD14_021E3AB0 + bl MOD14_021E3DD8 + add r0, r5, #0 + bl MOD14_021E3EBC + add r0, r5, #0 + bl MOD14_021E4764 + b _021E3852 +_021E3800: + mov r0, #8 + strh r0, [r4, #0xc] + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E380E + ldr r7, _021E3890 ; =MOD14_021E38AC + b _021E3816 +_021E380E: + ldrh r0, [r4, #0xc] + ldr r7, _021E3894 ; =MOD14_021E3984 + add r0, #8 + strh r0, [r4, #0xc] +_021E3816: + add r0, r5, #0 + bl MOD14_021E3EBC + ldr r0, [r5, #0x2c] + str r0, [r4, #8] + b _021E3852 +_021E3822: + mov r0, #8 + strh r0, [r4, #0xc] + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E3830 + ldr r7, _021E3890 ; =MOD14_021E38AC + b _021E3838 +_021E3830: + ldrh r0, [r4, #0xc] + ldr r7, _021E3894 ; =MOD14_021E3984 + add r0, #8 + strh r0, [r4, #0xc] +_021E3838: + ldr r0, [r5, #0x30] + str r0, [r4, #8] + add r0, r5, #0 + bl MOD14_021E3DD8 + add r0, r5, #0 + bl MOD14_021E4764 + b _021E3852 +_021E384A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_021E3852: + str r6, [r5, #0x10] + ldr r0, [r5, #8] + mov r1, #5 + bl FUN_02017B48 + lsl r0, r0, #0xc + ldr r1, _021E3898 ; =0x021E6674 + lsl r2, r6, #2 + str r0, [r4, #0x10] + ldr r6, [r1, r2] + ldrh r1, [r4, #0xc] + sub r0, r6, r0 + bl _s32_div_f + str r0, [r4, #0x14] + asr r0, r6, #0xc + str r0, [r4, #0x18] + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E3880 + mov r1, #1 + bl FUN_02020130 +_021E3880: + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD14_021E3784 +_021E388A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E388C: .word MOD14_021E3AB0 +_021E3890: .word MOD14_021E38AC +_021E3894: .word MOD14_021E3984 +_021E3898: .word 0x021E6674 + + thumb_func_start MOD14_021E389C +MOD14_021E389C: ; 0x021E389C + push {r3, lr} + cmp r0, #0 + beq _021E38A8 + bl MOD14_021E37A8 + pop {r3, pc} +_021E38A8: + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD14_021E38AC +MOD14_021E38AC: ; 0x021E38AC + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + cmp r0, #3 + bhi _021E3974 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E38C4: ; jump table + .short _021E38CC - _021E38C4 - 2 ; case 0 + .short _021E38DE - _021E38C4 - 2 ; case 1 + .short _021E3924 - _021E38C4 - 2 ; case 2 + .short _021E3942 - _021E38C4 - 2 ; case 3 +_021E38CC: + ldr r0, [r4, #8] + bl FUN_02020388 + cmp r0, #0 + bne _021E3974 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E38DE: + ldrh r0, [r4, #0xc] + cmp r0, #0 + beq _021E3900 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x14] + mov r2, #0 + add r3, r1, r0 + str r3, [r4, #0x10] + ldr r0, [r5, #8] + mov r1, #5 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0xc] + sub r0, r0, #1 + strh r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_021E3900: + ldr r0, [r5, #8] + ldr r3, [r4, #0x18] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021E3978 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3924: + ldr r3, [r5, #0x10] + ldr r0, [r5, #8] + lsl r5, r3, #2 + ldr r3, _021E397C ; =0x021E6668 + mov r1, #6 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + mov r0, #0 + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3942: + mov r1, #0xe + ldrsh r3, [r4, r1] + add r0, r5, r3 + add r0, #0xd4 + ldrb r2, [r0] + add r0, r5, r3 + add r0, #0xe4 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _021E3980 ; =0x04001052 + strh r2, [r0] + ldrsh r0, [r4, r1] + add r0, r0, #1 + strh r0, [r4, #0xe] + ldrsh r0, [r4, r1] + cmp r0, #0x10 + blt _021E3974 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02020130 + add r0, r5, #0 + bl MOD14_021E3798 +_021E3974: + pop {r3, r4, r5, pc} + nop +_021E3978: .word 0x04001050 +_021E397C: .word 0x021E6668 +_021E3980: .word 0x04001052 + + thumb_func_start MOD14_021E3984 +MOD14_021E3984: ; 0x021E3984 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + cmp r0, #4 + bls _021E3992 + b _021E3AA2 +_021E3992: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E399E: ; jump table + .short _021E39A8 - _021E399E - 2 ; case 0 + .short _021E39CE - _021E399E - 2 ; case 1 + .short _021E3A0C - _021E399E - 2 ; case 2 + .short _021E3A52 - _021E399E - 2 ; case 3 + .short _021E3A70 - _021E399E - 2 ; case 4 +_021E39A8: + ldr r0, [r4, #8] + bl FUN_02020388 + cmp r0, #0 + bne _021E3AA2 + mov r0, #0 + str r0, [sp] + ldr r0, _021E3AA4 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + mov r0, #0xf + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E39CE: + mov r1, #0xe + ldrsh r0, [r4, r1] + sub r0, r0, #1 + strh r0, [r4, #0xe] + ldrsh r3, [r4, r1] + add r0, r5, r3 + add r0, #0xd4 + ldrb r2, [r0] + add r0, r5, r3 + add r0, #0xe4 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _021E3AA8 ; =0x04001052 + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _021E3AA2 + ldr r3, [r5, #0x10] + ldr r0, [r5, #8] + lsl r5, r3, #2 + ldr r3, _021E3AAC ; =0x021E6668 + mov r1, #6 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3A0C: + ldrh r0, [r4, #0xc] + cmp r0, #0 + beq _021E3A2E + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x14] + mov r2, #0 + add r3, r1, r0 + str r3, [r4, #0x10] + ldr r0, [r5, #8] + mov r1, #5 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0xc] + sub r0, r0, #1 + strh r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_021E3A2E: + ldr r0, [r5, #8] + ldr r3, [r4, #0x18] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021E3AA4 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3A52: + ldr r3, [r5, #0x10] + ldr r0, [r5, #8] + lsl r5, r3, #2 + ldr r3, _021E3AAC ; =0x021E6668 + mov r1, #6 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + mov r0, #0 + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3A70: + mov r1, #0xe + ldrsh r3, [r4, r1] + add r0, r5, r3 + add r0, #0xd4 + ldrb r2, [r0] + add r0, r5, r3 + add r0, #0xe4 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _021E3AA8 ; =0x04001052 + strh r2, [r0] + ldrsh r0, [r4, r1] + add r0, r0, #1 + strh r0, [r4, #0xe] + ldrsh r0, [r4, r1] + cmp r0, #0x10 + blt _021E3AA2 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02020130 + add r0, r5, #0 + bl MOD14_021E3798 +_021E3AA2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E3AA4: .word 0x04001050 +_021E3AA8: .word 0x04001052 +_021E3AAC: .word 0x021E6668 + + thumb_func_start MOD14_021E3AB0 +MOD14_021E3AB0: ; 0x021E3AB0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #4] + ldr r0, [r4] + cmp r1, #3 + bhi _021E3B4C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E3AC8: ; jump table + .short _021E3AD0 - _021E3AC8 - 2 ; case 0 + .short _021E3ADA - _021E3AC8 - 2 ; case 1 + .short _021E3B12 - _021E3AC8 - 2 ; case 2 + .short _021E3B48 - _021E3AC8 - 2 ; case 3 +_021E3AD0: + mov r1, #0xf + strh r1, [r4, #0xe] + ldr r1, [r4, #4] + add r1, r1, #1 + str r1, [r4, #4] +_021E3ADA: + mov r2, #0xe + ldrsh r1, [r4, r2] + sub r1, r1, #1 + strh r1, [r4, #0xe] + ldrsh r5, [r4, r2] + add r1, r0, r5 + add r1, #0xd4 + ldrb r3, [r1] + add r1, r0, r5 + add r1, #0xe4 + ldrb r1, [r1] + lsl r1, r1, #8 + orr r3, r1 + ldr r1, _021E3B50 ; =0x04001052 + strh r3, [r1] + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _021E3B4C + mov r2, #0 + ldr r0, [r0, #8] + mov r1, #6 + add r3, r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3B12: + ldrh r1, [r4, #0xc] + cmp r1, #0 + beq _021E3B34 + ldr r2, [r4, #0x10] + ldr r1, [r4, #0x14] + add r3, r2, r1 + str r3, [r4, #0x10] + ldr r0, [r0, #8] + mov r1, #5 + mov r2, #0 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0xc] + sub r0, r0, #1 + strh r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_021E3B34: + ldr r0, [r0, #8] + ldr r3, [r4, #0x18] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3B48: + bl MOD14_021E3798 +_021E3B4C: + pop {r3, r4, r5, pc} + nop +_021E3B50: .word 0x04001052 + + thumb_func_start MOD14_021E3B54 +MOD14_021E3B54: ; 0x021E3B54 + push {r4, lr} + add r4, r0, #0 + beq _021E3B7C + ldr r1, [r4, #0x10] + cmp r1, #1 + beq _021E3B66 + cmp r1, #2 + beq _021E3B72 + pop {r4, pc} +_021E3B66: + bl MOD14_021E3C94 + add r0, r4, #0 + bl MOD14_021E41C0 + pop {r4, pc} +_021E3B72: + bl MOD14_021E3E1C + add r0, r4, #0 + bl MOD14_021E44E0 +_021E3B7C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3B80 +MOD14_021E3B80: ; 0x021E3B80 + push {r4, lr} + add r4, r0, #0 + beq _021E3BA2 + bl MOD14_021E37A8 + cmp r0, #0 + beq _021E3B9E + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _021E3B9A + add r0, r4, #0 + bl MOD14_021E4790 +_021E3B9A: + mov r0, #1 + pop {r4, pc} +_021E3B9E: + mov r0, #0 + pop {r4, pc} +_021E3BA2: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3BA8 +MOD14_021E3BA8: ; 0x021E3BA8 + push {r4, lr} + add r4, r0, #0 + beq _021E3BD0 + ldr r1, [r4, #0x10] + cmp r1, #1 + beq _021E3BBA + cmp r1, #2 + beq _021E3BCC + pop {r4, pc} +_021E3BBA: + bl MOD14_021E4764 + add r0, r4, #0 + bl MOD14_021E3D38 + add r0, r4, #0 + bl MOD14_021E43E8 + pop {r4, pc} +_021E3BCC: + bl MOD14_021E46E4 +_021E3BD0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3BD4 +MOD14_021E3BD4: ; 0x021E3BD4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD14_021DC46C + cmp r0, #0 + ble _021E3C04 + add r2, r4, #0 + add r2, #0x80 + ldr r2, [r2] + add r1, r4, #0 + sub r2, r2, r0 + add r0, r4, #0 + add r0, #0x80 + add r4, #0x80 + str r2, [r0] + ldr r0, [r4] + add r1, #0x80 + cmp r0, #0 + bge _021E3C24 + ldr r0, [r1] + add r0, #0xa + str r0, [r1] + pop {r4, pc} +_021E3C04: + add r2, r4, #0 + add r2, #0x80 + ldr r2, [r2] + add r1, r4, #0 + sub r2, r2, r0 + add r0, r4, #0 + add r0, #0x80 + add r4, #0x80 + str r2, [r0] + ldr r0, [r4] + add r1, #0x80 + cmp r0, #0xa + blt _021E3C24 + ldr r0, [r1] + sub r0, #0xa + str r0, [r1] +_021E3C24: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3C28 +MOD14_021E3C28: ; 0x021E3C28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD14_021DC46C + add r2, r4, #0 + add r2, #0x80 + ldr r2, [r2] + add r1, r4, #0 + add r2, r2, r0 + add r0, r4, #0 + add r0, #0x80 + add r4, #0x80 + str r2, [r0] + ldr r0, [r4] + add r1, #0x80 + cmp r0, #0 + bge _021E3C54 + ldr r0, [r1] + add r0, #8 + str r0, [r1] + pop {r4, pc} +_021E3C54: + cmp r0, #8 + blt _021E3C5E + ldr r0, [r1] + sub r0, #8 + str r0, [r1] +_021E3C5E: + pop {r4, pc} + + thumb_func_start MOD14_021E3C60 +MOD14_021E3C60: ; 0x021E3C60 + push {r4, lr} + add r4, r0, #0 + beq _021E3C90 + bl MOD14_021E37A8 + cmp r0, #0 + beq _021E3C8C + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _021E3C82 + add r0, r4, #0 + bl MOD14_021E4790 + add r0, r4, #0 + bl MOD14_021E3BD4 + b _021E3C88 +_021E3C82: + add r0, r4, #0 + bl MOD14_021E3C28 +_021E3C88: + mov r0, #1 + pop {r4, pc} +_021E3C8C: + mov r0, #0 + pop {r4, pc} +_021E3C90: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD14_021E3C94 +MOD14_021E3C94: ; 0x021E3C94 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + str r0, [sp, #8] + ldr r0, [r0] + bl MOD14_021DDD84 + add r7, r0, #0 + ldr r0, [sp, #8] + ldr r0, [r0, #4] + bl MOD14_021DC474 + add r4, r0, #3 + cmp r4, #0x12 + blt _021E3CB2 + sub r4, #0x12 +_021E3CB2: + ldr r5, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x18 + mov r6, #0xc0 + str r0, [sp, #0x10] +_021E3CC2: + add r0, sp, #0x14 + bl FUN_020B1A24 + add r0, sp, #0x14 + str r0, [sp] + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD14_021E1FF8 + add r0, r7, #0 + bl MOD14_021E2184 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [sp, #0x10] + add r0, sp, #0x38 + add r1, sp, #0x14 + bl MOD14_021DDDB4 + mov r0, #0x30 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #8] + mov r3, #0x17 + ldr r0, [r0, #0xc] + add r1, sp, #0x38 + mov r2, #0x10 + lsl r3, r3, #4 + bl MOD14_021DDDD4 + str r0, [r5, #0x54] + cmp r0, #0 + bne _021E3D14 + bl ErrorHandling +_021E3D14: + sub r4, r4, #1 + bpl _021E3D1A + mov r4, #0x11 +_021E3D1A: + ldr r0, [sp, #0xc] + add r6, #0x20 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #0xa + blt _021E3CC2 + ldr r0, [sp, #8] + mov r1, #0 + add r0, #0x80 + str r0, [sp, #8] + str r1, [r0] + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3D38 +MOD14_021E3D38: ; 0x021E3D38 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #4] + ldr r0, [r0] + bl MOD14_021DDD84 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + ldr r0, [r0, #4] + bl MOD14_021DC474 + ldr r1, [sp, #4] + ldr r2, [r1, #4] + mov r1, #0xa0 + ldrsh r7, [r2, r1] + cmp r7, #0 + ble _021E3D74 + sub r0, r0, r7 + add r5, r0, #4 + cmp r5, #0x12 + blt _021E3D64 + sub r5, #0x12 +_021E3D64: + ldr r0, [sp, #4] + mov r6, #1 + add r0, #0x80 + ldr r0, [r0] + sub r4, r0, #1 + bpl _021E3D90 + add r4, #0xa + b _021E3D90 +_021E3D74: + sub r0, r0, r7 + sub r5, r0, #3 + bpl _021E3D7C + add r5, #0x12 +_021E3D7C: + ldr r0, [sp, #4] + mov r6, #0 + add r0, #0x80 + ldr r0, [r0] + mvn r6, r6 + add r4, r0, #6 + cmp r4, #0xa + blt _021E3D8E + sub r4, #0xa +_021E3D8E: + neg r7, r7 +_021E3D90: + ldr r0, [sp, #4] + str r7, [r0, #0x7c] + mov r0, #0 + str r0, [sp, #8] + cmp r7, #0 + ble _021E3DD4 +_021E3D9C: + mov r0, #0 + str r0, [sp] + lsl r2, r4, #5 + ldr r0, [sp, #0xc] + add r1, r5, #0 + add r2, #0xc0 + mov r3, #2 + bl MOD14_021E1FF8 + add r5, r5, r6 + bpl _021E3DB6 + mov r5, #0x11 + b _021E3DBC +_021E3DB6: + cmp r5, #0x12 + blt _021E3DBC + mov r5, #0 +_021E3DBC: + sub r4, r4, r6 + bpl _021E3DC4 + mov r4, #9 + b _021E3DCA +_021E3DC4: + cmp r4, #0xa + blt _021E3DCA + mov r4, #0 +_021E3DCA: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, r7 + blt _021E3D9C +_021E3DD4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E3DD8 +MOD14_021E3DD8: ; 0x021E3DD8 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E3DE0: + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _021E3DEC + bl FUN_0201FFC8 + str r6, [r5, #0x54] +_021E3DEC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xa + blt _021E3DE0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3DF8 +MOD14_021E3DF8: ; 0x021E3DF8 + cmp r0, #0 + bne _021E3E08 + cmp r1, #0 + bne _021E3E04 + mov r0, #1 + bx lr +_021E3E04: + mov r0, #0 + bx lr +_021E3E08: + mov r3, #1 + sub r2, r0, #1 + lsl r3, r2 + tst r1, r3 + beq _021E3E18 + lsl r0, r0, #1 + add r0, r0, #1 + bx lr +_021E3E18: + lsl r0, r0, #1 + bx lr + + thumb_func_start MOD14_021E3E1C +MOD14_021E3E1C: ; 0x021E3E1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + add r5, r0, #0 + ldr r0, [r5, #4] + bl MOD14_021DC484 + str r0, [sp, #0x14] + add r0, sp, #0x18 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #6 + lsl r0, r0, #0xa + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x18 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0x75 + mov r2, #1 + bl FUN_02006AE4 + add r7, r5, #0 + mov r6, #0 + add r4, r5, #0 + add r7, #0x18 +_021E3E58: + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + add r3, r5, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r3, #0xac + ldr r3, [r3] + add r0, sp, #0x3c + add r1, sp, #0x18 + add r2, r7, #0 + bl MOD14_021DDDB4 + mov r0, #0x30 + str r0, [sp] + mov r0, #2 + mov r2, #0xf0 + str r0, [sp, #4] + add r3, r2, #0 + ldr r0, [r5, #0xc] + add r1, sp, #0x3c + add r3, #0x80 + bl MOD14_021DDDD4 + str r0, [r4, #0x34] + cmp r0, #0 + bne _021E3E94 + bl ErrorHandling +_021E3E94: + ldr r1, [sp, #0x14] + add r0, r6, #0 + bl MOD14_021E3DF8 + add r1, r0, #0 + ldr r0, [r4, #0x34] + bl FUN_02020130 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #8 + blt _021E3E58 + ldr r0, [r5, #4] + bl MOD14_021DC47C + add r5, #0x80 + str r0, [r5] + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3EBC +MOD14_021E3EBC: ; 0x021E3EBC + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E3EC4: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E3ED0 + bl FUN_0201FFC8 + str r6, [r5, #0x34] +_021E3ED0: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E3EC4 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3EDC +MOD14_021E3EDC: ; 0x021E3EDC + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _021E3EF2 + sub r0, r0, #1 + add sp, #0xc + strh r0, [r4, #0x16] + pop {r4, r5, pc} +_021E3EF2: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E3F28 + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + str r0, [r4, #8] + asr r0, r0, #0xc + lsl r1, r0, #2 + ldr r0, _021E3F58 ; =0x021E66A8 + ldrsh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, _021E3F5C ; =0x021E66AA + ldrsh r0, [r0, r1] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, pc} +_021E3F28: + ldr r0, [r4, #0xc] + asr r0, r0, #0xc + lsl r1, r0, #2 + ldr r0, _021E3F58 ; =0x021E66A8 + ldrsh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, _021E3F5C ; =0x021E66AA + ldrsh r0, [r0, r1] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E4010 + add sp, #0xc + pop {r4, r5, pc} + nop +_021E3F58: .word 0x021E66A8 +_021E3F5C: .word 0x021E66AA + + thumb_func_start MOD14_021E3F60 +MOD14_021E3F60: ; 0x021E3F60 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _021E3F76 + sub r0, r0, #1 + add sp, #0xc + strh r0, [r4, #0x16] + pop {r4, r5, pc} +_021E3F76: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E3FB2 + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + str r0, [r4, #8] + asr r0, r0, #0xc + ldr r1, _021E4008 ; =0x021E66A8 + lsl r0, r0, #2 + ldrsh r2, [r1, r0] + mov r1, #1 + lsl r1, r1, #8 + sub r1, r1, r2 + lsl r1, r1, #0xc + str r1, [sp] + ldr r1, _021E400C ; =0x021E66AA + ldrsh r0, [r1, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, pc} +_021E3FB2: + ldr r0, [r4, #0xc] + ldr r1, _021E4008 ; =0x021E66A8 + asr r0, r0, #0xc + lsl r0, r0, #2 + ldrsh r2, [r1, r0] + mov r1, #1 + lsl r1, r1, #8 + sub r1, r1, r2 + lsl r1, r1, #0xc + str r1, [sp] + ldr r1, _021E400C ; =0x021E66AA + ldrsh r0, [r1, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021E3FFC + ldrh r0, [r4, #0x28] + add sp, #0xc + strh r0, [r4, #0x14] + ldr r0, [r4, #0x1c] + str r0, [r4, #8] + ldr r0, [r4, #0x24] + str r0, [r4, #0x10] + ldr r0, [r4, #0x20] + str r0, [r4, #0xc] + ldrh r0, [r4, #0x2a] + strh r0, [r4, #0x16] + mov r0, #0 + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021E3FFC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E4010 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021E4008: .word 0x021E66A8 +_021E400C: .word 0x021E66AA + + thumb_func_start MOD14_021E4010 +MOD14_021E4010: ; 0x021E4010 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r1] + ldr r0, _021E4034 ; =0x000001CB + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021E4022 + bl ErrorHandling +_021E4022: + ldr r0, _021E4034 ; =0x000001CB + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_021E4034: .word 0x000001CB + + thumb_func_start MOD14_021E4038 +MOD14_021E4038: ; 0x021E4038 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + add r5, r2, #0 + str r3, [sp] + ldr r4, [sp, #0x20] + cmp r7, #0 + bne _021E404C + bl ErrorHandling +_021E404C: + cmp r4, #0 + beq _021E4052 + sub r4, r4, #1 +_021E4052: + str r6, [r5] + ldr r0, [sp, #0x1c] + str r7, [r5, #4] + strh r0, [r5, #0x14] + ldr r0, [sp, #0x24] + strh r4, [r5, #0x16] + cmp r0, #0 + beq _021E4066 + ldr r4, _021E40A4 ; =MOD14_021E3F60 + b _021E4068 +_021E4066: + ldr r4, _021E40A8 ; =MOD14_021E3EDC +_021E4068: + ldr r0, [sp] + ldr r1, _021E40AC ; =0x021E6680 + lsl r0, r0, #1 + ldrh r0, [r1, r0] + lsl r0, r0, #0xc + str r0, [r5, #8] + ldr r0, [sp, #0x18] + lsl r0, r0, #1 + ldrh r0, [r1, r0] + lsl r1, r0, #0xc + str r1, [r5, #0xc] + ldr r0, [r5, #8] + sub r0, r1, r0 + ldr r1, [sp, #0x1c] + bl _s32_div_f + str r0, [r5, #0x10] + mov r2, #0 + add r0, r4, #0 + add r1, r5, #0 + str r2, [r5, #0x18] + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E40A2 + ldr r0, _021E40B0 ; =0x000001CB + ldrb r1, [r6, r0] + add r1, r1, #1 + strb r1, [r6, r0] +_021E40A2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E40A4: .word MOD14_021E3F60 +_021E40A8: .word MOD14_021E3EDC +_021E40AC: .word 0x021E6680 +_021E40B0: .word 0x000001CB + + thumb_func_start MOD14_021E40B4 +MOD14_021E40B4: ; 0x021E40B4 + push {r4, lr} + add r4, r1, #0 + mov r0, #1 + str r0, [r4, #0x18] + strh r2, [r4, #0x2a] + cmp r2, #0 + beq _021E40C8 + ldrh r0, [r4, #0x2a] + sub r0, r0, #1 + strh r0, [r4, #0x2a] +_021E40C8: + ldr r0, [sp, #8] + sub r2, r0, r3 + bpl _021E40D4 + mov r0, #0 + mvn r0, r0 + mul r2, r0 +_021E40D4: + add r1, r2, #0 + mov r0, #6 + mul r1, r0 + ldr r2, _021E40FC ; =0x021E6680 + lsl r0, r3, #1 + ldrh r0, [r2, r0] + strh r1, [r4, #0x28] + lsl r0, r0, #0xc + str r0, [r4, #0x1c] + ldr r0, [sp, #8] + lsl r0, r0, #1 + ldrh r0, [r2, r0] + lsl r2, r0, #0xc + str r2, [r4, #0x20] + ldr r0, [r4, #0x1c] + sub r0, r2, r0 + bl _s32_div_f + str r0, [r4, #0x24] + pop {r4, pc} + .align 2, 0 +_021E40FC: .word 0x021E6680 + + thumb_func_start MOD14_021E4100 +MOD14_021E4100: ; 0x021E4100 + push {r4, r5, r6, lr} + sub sp, #0x10 + mov r0, #0x73 + add r4, r1, #0 + lsl r0, r0, #2 + ldrb r3, [r4, r0] + ldr r2, [r4] + cmp r3, #0 + beq _021E411E + cmp r3, #1 + beq _021E4180 + cmp r3, #2 + beq _021E4198 + add sp, #0x10 + pop {r4, r5, r6, pc} +_021E411E: + sub r1, r0, #2 + ldrb r1, [r4, r1] + mov r6, #0x2c + add r3, r1, #1 + sub r1, r0, #2 + strb r3, [r4, r1] + sub r0, r0, #2 + ldrb r3, [r4, r0] + mov r1, #6 + mov r0, #7 + sub r5, r1, r3 + sub r0, r0, r3 + str r0, [sp] + add r0, r5, #1 + mul r1, r0 + str r1, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + lsl r1, r5, #2 + add r1, r2, r1 + str r3, [sp, #0xc] + add r2, r4, #0 + ldr r1, [r1, #0x54] + add r2, #8 + mul r6, r5 + add r0, r4, #0 + add r2, r2, r6 + bl MOD14_021E4038 + ldr r0, _021E41B0 ; =0x000001CD + mov r1, #4 + strb r1, [r4, r0] + sub r1, r0, #3 + ldrb r1, [r4, r1] + cmp r1, #6 + blo _021E4170 + mov r1, #2 + sub r0, r0, #1 + add sp, #0x10 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021E4170: + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E41AC + mov r1, #1 + sub r0, r0, #1 + add sp, #0x10 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021E4180: + add r1, r0, #1 + ldrb r1, [r4, r1] + sub r2, r1, #2 + add r1, r0, #1 + strb r2, [r4, r1] + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021E41AC + mov r1, #0 + add sp, #0x10 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021E4198: + sub r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021E41AC + add r1, r3, #1 + strb r1, [r4, r0] + ldr r1, _021E41B4 ; =MOD14_021E41B8 + add r0, r4, #0 + bl MOD14_021DDF30 +_021E41AC: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E41B0: .word 0x000001CD +_021E41B4: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E41B8 +MOD14_021E41B8: ; 0x021E41B8 + ldr r3, _021E41BC ; =MOD14_021E3798 + bx r3 + .align 2, 0 +_021E41BC: .word MOD14_021E3798 + + thumb_func_start MOD14_021E41C0 +MOD14_021E41C0: ; 0x021E41C0 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E4208 + mov r1, #0x73 + mov r0, #0 + lsl r1, r1, #2 + str r4, [r5] + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E41EA: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #8 + blt _021E41EA + ldr r1, _021E420C ; =MOD14_021E4100 + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E4208 + add r0, r5, #0 + bl FUN_02016A18 +_021E4208: + pop {r3, r4, r5, pc} + nop +_021E420C: .word MOD14_021E4100 + + thumb_func_start MOD14_021E4210 +MOD14_021E4210: ; 0x021E4210 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + mov r2, #0x73 + lsl r2, r2, #2 + add r0, r1, #0 + ldrb r3, [r0, r2] + str r1, [sp, #0x10] + ldr r7, [r1] + cmp r3, #0 + beq _021E422E + cmp r3, #1 + bne _021E422A + b _021E43C6 +_021E422A: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_021E422E: + ldr r1, [r7, #4] + mov r0, #0xa0 + ldrsh r0, [r1, r0] + cmp r0, #0 + ble _021E4252 + add r0, r7, #0 + add r0, #0x80 + ldr r0, [r0] + add r4, r0, #5 + cmp r4, #0xa + blt _021E4246 + sub r4, #0xa +_021E4246: + mov r5, #0 + mov r0, #7 + mvn r5, r5 + mov r6, #6 + str r0, [sp, #0x24] + b _021E4260 +_021E4252: + add r0, r7, #0 + add r0, #0x80 + ldr r4, [r0] + mov r5, #1 + mov r0, #0 + add r6, r5, #0 + str r0, [sp, #0x24] +_021E4260: + ldr r1, [r7, #0x7c] + mov r0, #0 + str r0, [sp, #0x34] + cmp r1, #0 + ble _021E42C2 + str r0, [sp, #0x28] + ldr r0, [sp, #0x10] + str r0, [sp, #0x38] + add r0, #8 + str r0, [sp, #0x38] +_021E4274: + ldr r0, [sp, #0x24] + add r3, r4, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + add r0, r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r1, r0, #0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + ldr r1, [r2, r1] + mov r2, #0x2c + mul r3, r2 + ldr r2, [sp, #0x38] + add r2, r2, r3 + add r3, r6, #0 + bl MOD14_021E4038 + add r4, r4, r5 + add r6, r6, r5 + cmp r4, #0xa + blt _021E42AA + mov r4, #0 + b _021E42B0 +_021E42AA: + cmp r4, #0 + bge _021E42B0 + mov r4, #9 +_021E42B0: + ldr r0, [sp, #0x28] + ldr r1, [r7, #0x7c] + add r0, r0, #6 + str r0, [sp, #0x28] + ldr r0, [sp, #0x34] + add r0, r0, #1 + str r0, [sp, #0x34] + cmp r0, r1 + blt _021E4274 +_021E42C2: + mov r0, #6 + sub r0, r0, r1 + str r0, [sp, #0x30] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x30] + cmp r0, #0 + ble _021E4328 + ldr r0, [sp, #0x10] + str r0, [sp, #0x3c] + add r0, #8 + str r0, [sp, #0x3c] +_021E42DA: + ldr r0, [r7, #0x7c] + add r1, r5, #0 + mul r1, r0 + sub r1, r6, r1 + str r1, [sp] + mov r1, #6 + mul r1, r0 + str r1, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r3, r4, #0 + add r1, r0, #0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + ldr r1, [r2, r1] + mov r2, #0x2c + mul r3, r2 + ldr r2, [sp, #0x3c] + add r2, r2, r3 + add r3, r6, #0 + bl MOD14_021E4038 + add r4, r4, r5 + add r6, r6, r5 + cmp r4, #0xa + blt _021E4316 + mov r4, #0 + b _021E431C +_021E4316: + cmp r4, #0 + bge _021E431C + mov r4, #9 +_021E431C: + ldr r0, [sp, #0x14] + add r1, r0, #1 + ldr r0, [sp, #0x30] + str r1, [sp, #0x14] + cmp r1, r0 + blt _021E42DA +_021E4328: + ldr r1, [r7, #4] + mov r0, #0xa0 + ldrsh r0, [r1, r0] + cmp r0, #0 + ble _021E433E + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [r7, #0x7c] + str r0, [sp, #0x20] + str r0, [sp, #0x18] + b _021E434C +_021E433E: + mov r0, #7 + str r0, [sp, #0x1c] + ldr r0, [r7, #0x7c] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x20] + sub r0, r1, r0 + str r0, [sp, #0x18] +_021E434C: + ldr r0, [sp, #0x20] + mov r6, #0 + cmp r0, #0 + ble _021E43B4 + ldr r0, [sp, #0x10] + str r6, [sp, #0x2c] + str r0, [sp, #0x40] + add r0, #8 + str r0, [sp, #0x40] +_021E435E: + ldr r0, [sp, #0x18] + add r3, r4, #0 + str r0, [sp] + ldr r0, [r7, #0x7c] + sub r1, r0, r6 + mov r0, #6 + mul r0, r1 + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + add r0, r0, #6 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r1, r0, #0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + ldr r1, [r2, r1] + mov r2, #0x2c + mul r3, r2 + ldr r2, [sp, #0x40] + add r2, r2, r3 + ldr r3, [sp, #0x1c] + bl MOD14_021E4038 + ldr r0, [sp, #0x18] + add r4, r4, r5 + add r0, r0, r5 + str r0, [sp, #0x18] + cmp r4, #0xa + blt _021E43A0 + sub r4, #0xa + b _021E43A6 +_021E43A0: + cmp r4, #0 + bge _021E43A6 + add r4, #0xa +_021E43A6: + ldr r0, [sp, #0x2c] + add r6, r6, #1 + add r0, r0, #6 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x20] + cmp r6, r0 + blt _021E435E +_021E43B4: + mov r1, #0x73 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp, #0x10] + add sp, #0x44 + strb r2, [r0, r1] + pop {r4, r5, r6, r7, pc} +_021E43C6: + ldr r0, [sp, #0x10] + sub r1, r2, #1 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E43DE + ldr r0, [sp, #0x10] + add r1, r3, #1 + strb r1, [r0, r2] + ldr r1, _021E43E4 ; =MOD14_021E41B8 + add r2, r7, #0 + bl MOD14_021DDF30 +_021E43DE: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021E43E4: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E43E8 +MOD14_021E43E8: ; 0x021E43E8 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E4436 + add r0, r4, #0 + mov r1, #0x73 + lsl r1, r1, #2 + str r4, [r5] + add r0, #0x54 + str r0, [r5, #4] + mov r0, #0 + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E4418: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #0xa + blt _021E4418 + ldr r1, _021E4438 ; =MOD14_021E4210 + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E4436 + add r0, r5, #0 + bl FUN_02016A18 +_021E4436: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E4438: .word MOD14_021E4210 + + thumb_func_start MOD14_021E443C +MOD14_021E443C: ; 0x021E443C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r0, [r1] + mov r2, #0x73 + str r0, [sp, #0x18] + lsl r2, r2, #2 + add r0, r1, #0 + ldrb r3, [r0, r2] + str r1, [sp, #0x10] + cmp r3, #0 + beq _021E445A + cmp r3, #1 + beq _021E44BE + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_021E445A: + ldr r0, [sp, #0x18] + mov r5, #0 + add r0, #0x80 + ldr r4, [r0] + add r0, r1, #0 + str r0, [sp, #0x1c] + add r0, #8 + mov r7, #6 + str r5, [sp, #0x14] + mov r6, #0x24 + str r0, [sp, #0x1c] +_021E4470: + str r7, [sp] + str r6, [sp, #4] + ldr r1, [sp, #0x18] + lsl r2, r4, #2 + add r1, r1, r2 + str r5, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r2, #0x2c + add r3, r4, #0 + mul r3, r2 + ldr r2, [sp, #0x1c] + ldr r0, [sp, #0x10] + add r2, r2, r3 + ldr r1, [r1, #0x34] + mov r3, #0 + bl MOD14_021E4038 + add r4, r4, #1 + sub r6, r6, #6 + sub r7, r7, #1 + cmp r4, #8 + blt _021E44A0 + mov r4, #0 +_021E44A0: + ldr r0, [sp, #0x14] + add r5, r5, #6 + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #6 + blt _021E4470 + mov r1, #0x73 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp, #0x10] + add sp, #0x20 + strb r2, [r0, r1] + pop {r3, r4, r5, r6, r7, pc} +_021E44BE: + ldr r0, [sp, #0x10] + sub r1, r2, #1 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E44D6 + ldr r0, [sp, #0x10] + add r1, r3, #1 + strb r1, [r0, r2] + ldr r1, _021E44DC ; =MOD14_021E41B8 + ldr r2, [sp, #0x18] + bl MOD14_021DDF30 +_021E44D6: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E44DC: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E44E0 +MOD14_021E44E0: ; 0x021E44E0 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E4528 + mov r1, #0x73 + mov r0, #0 + lsl r1, r1, #2 + str r4, [r5] + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E450A: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #8 + blt _021E450A + ldr r1, _021E452C ; =MOD14_021E443C + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E4528 + add r0, r5, #0 + bl FUN_02016A18 +_021E4528: + pop {r3, r4, r5, pc} + nop +_021E452C: .word MOD14_021E443C + + thumb_func_start MOD14_021E4530 +MOD14_021E4530: ; 0x021E4530 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + ldr r0, [r1] + mov r2, #0x73 + str r0, [sp, #0x34] + lsl r2, r2, #2 + add r0, r1, #0 + ldrb r3, [r0, r2] + str r1, [sp, #0x10] + cmp r3, #0 + beq _021E4550 + cmp r3, #1 + bne _021E454C + b _021E46C2 +_021E454C: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_021E4550: + ldr r0, [sp, #0x34] + ldr r0, [r0, #4] + bl MOD14_021DC46C + str r0, [sp, #0x30] + ldr r0, [sp, #0x34] + add r0, #0x80 + ldr r4, [r0] + ldr r0, [sp, #0x30] + cmp r0, #0 + bge _021E4580 + add r4, r4, #5 + cmp r4, #8 + blt _021E456E + sub r4, #8 +_021E456E: + ldr r0, [sp, #0x30] + mov r5, #0 + neg r0, r0 + str r0, [sp, #0x28] + mov r0, #0 + mvn r5, r5 + mov r6, #1 + str r0, [sp, #0x18] + b _021E458A +_021E4580: + str r0, [sp, #0x28] + mov r0, #7 + mov r5, #1 + mov r6, #6 + str r0, [sp, #0x18] +_021E458A: + ldr r0, [sp, #0x28] + mov r7, #0 + add r0, r0, #6 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x28] + cmp r0, #0 + ble _021E45EC + ldr r0, [sp, #0x10] + str r7, [sp, #0x1c] + str r0, [sp, #0x38] + add r0, #8 + str r0, [sp, #0x38] +_021E45A2: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x34] + str r0, [sp] + ldr r0, [sp, #0x1c] + lsl r2, r4, #2 + add r0, r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + add r1, r1, r2 + str r0, [sp, #0xc] + mov r2, #0x2c + add r3, r4, #0 + mul r3, r2 + ldr r2, [sp, #0x38] + ldr r0, [sp, #0x10] + add r2, r2, r3 + ldr r1, [r1, #0x34] + add r3, r6, #0 + bl MOD14_021E4038 + sub r6, r6, r5 + add r4, r4, r5 + bpl _021E45D8 + add r4, #8 + b _021E45DE +_021E45D8: + cmp r4, #8 + blt _021E45DE + sub r4, #8 +_021E45DE: + ldr r0, [sp, #0x1c] + add r7, r7, #1 + add r0, r0, #6 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + cmp r7, r0 + blt _021E45A2 +_021E45EC: + mov r0, #0 + str r0, [sp, #0x24] + cmp r7, #8 + bge _021E4658 + ldr r0, [sp, #0x28] + mov r1, #6 + mul r1, r0 + ldr r0, [sp, #0x10] + str r1, [sp, #0x20] + str r0, [sp, #0x3c] + add r0, #8 + str r0, [sp, #0x3c] +_021E4604: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x34] + sub r0, r0, r5 + str r0, [sp, #0x18] + str r0, [sp] + ldr r0, [sp, #0x20] + lsl r2, r4, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x24] + add r1, r1, r2 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r2, #0x2c + add r3, r4, #0 + mul r3, r2 + ldr r2, [sp, #0x3c] + ldr r0, [sp, #0x10] + add r2, r2, r3 + ldr r1, [r1, #0x34] + add r3, r6, #0 + bl MOD14_021E4038 + cmp r6, #0 + beq _021E463E + cmp r6, #7 + beq _021E463E + sub r6, r6, r5 + b _021E4644 +_021E463E: + ldr r0, [sp, #0x24] + add r0, r0, #6 + str r0, [sp, #0x24] +_021E4644: + add r4, r4, r5 + bpl _021E464C + add r4, #8 + b _021E4652 +_021E464C: + cmp r4, #8 + blt _021E4652 + sub r4, #8 +_021E4652: + add r7, r7, #1 + cmp r7, #8 + blt _021E4604 +_021E4658: + ldr r0, [sp, #0x30] + cmp r0, #0 + bge _021E466C + mov r0, #7 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + sub r1, r0, #2 + ldr r0, [sp, #0x14] + sub r6, r0, r1 + b _021E4674 +_021E466C: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + sub r6, r0, #2 +_021E4674: + ldr r0, [sp, #0x2c] + cmp r7, r0 + bge _021E46B0 + ldr r0, [sp, #0x10] + str r0, [sp, #0x40] + add r0, #8 + str r0, [sp, #0x40] +_021E4682: + mov r1, #0x2c + add r2, r4, #0 + mul r2, r1 + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x10] + add r1, r1, r2 + ldr r3, [sp, #0x14] + mov r2, #6 + str r6, [sp] + bl MOD14_021E40B4 + sub r6, r6, r5 + add r4, r4, r5 + bpl _021E46A2 + add r4, #8 + b _021E46A8 +_021E46A2: + cmp r4, #8 + blt _021E46A8 + sub r4, #8 +_021E46A8: + ldr r0, [sp, #0x2c] + add r7, r7, #1 + cmp r7, r0 + blt _021E4682 +_021E46B0: + mov r1, #0x73 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp, #0x10] + add sp, #0x44 + strb r2, [r0, r1] + pop {r4, r5, r6, r7, pc} +_021E46C2: + ldr r0, [sp, #0x10] + sub r1, r2, #1 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E46DA + ldr r0, [sp, #0x10] + add r1, r3, #1 + strb r1, [r0, r2] + ldr r1, _021E46E0 ; =MOD14_021E41B8 + ldr r2, [sp, #0x34] + bl MOD14_021DDF30 +_021E46DA: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021E46E0: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E46E4 +MOD14_021E46E4: ; 0x021E46E4 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E472C + mov r1, #0x73 + mov r0, #0 + lsl r1, r1, #2 + str r4, [r5] + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E470E: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #8 + blt _021E470E + ldr r1, _021E4730 ; =MOD14_021E4530 + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E472C + add r0, r5, #0 + bl FUN_02016A18 +_021E472C: + pop {r3, r4, r5, pc} + nop +_021E4730: .word MOD14_021E4530 + + thumb_func_start MOD14_021E4734 +MOD14_021E4734: ; 0x021E4734 + push {r4, r5, r6, lr} + add r5, r0, #0 + beq _021E4762 + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E4762 + ldr r0, [r5, #4] + bl MOD14_021DC484 + add r6, r0, #0 + mov r4, #0 +_021E474A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021E3DF8 + add r1, r0, #0 + ldr r0, [r5, #0x34] + bl FUN_02020130 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E474A +_021E4762: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E4764 +MOD14_021E4764: ; 0x021E4764 + ldr r3, _021E476C ; =0x0201797D + mov r0, #4 + mov r1, #0 + bx r3 + .align 2, 0 +_021E476C: .word 0x0201797D + + thumb_func_start MOD14_021E4770 +MOD14_021E4770: ; 0x021E4770 + push {r3, lr} + mov r0, #2 + str r0, [sp] + ldr r0, _021E478C ; =0x04001050 + mov r1, #1 + mov r2, #0x3f + mov r3, #0xe + bl G2x_SetBlendAlpha_ + mov r0, #4 + mov r1, #1 + bl FUN_0201797C + pop {r3, pc} + .align 2, 0 +_021E478C: .word 0x04001050 + + thumb_func_start MOD14_021E4790 +MOD14_021E4790: ; 0x021E4790 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, [r6, #4] + bl MOD14_021DC474 + add r4, r0, #3 + cmp r4, #0x12 + blt _021E47A4 + sub r4, #0x12 +_021E47A4: + mov r0, #0 + add r7, r6, #0 + ldr r5, _021E4820 ; =0x021E6690 + str r0, [sp, #0x10] + add r7, #0x88 +_021E47AE: + ldr r0, [r6, #4] + add r2, r6, #0 + add r2, #0x84 + ldr r0, [r0] + ldr r2, [r2] + add r1, r4, #0 + bl FUN_0206B484 + mov r0, #0x68 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldrh r2, [r5] + ldrh r3, [r5, #2] + add r0, r7, #0 + mov r1, #0 + bl FUN_020196F4 + mov r0, #2 + ldrsh r0, [r5, r0] + mov r1, #0 + add r2, r6, #0 + add r0, r0, #2 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E4824 ; =0x00010200 + add r3, r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrsh r3, [r5, r3] + add r2, #0x84 + ldr r2, [r2] + add r0, r7, #0 + add r3, r3, #4 + bl FUN_0201BDE0 + sub r4, r4, #1 + bpl _021E4800 + mov r4, #0x11 +_021E4800: + ldr r0, [sp, #0x10] + add r5, r5, #4 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #6 + blo _021E47AE + add r0, r6, #0 + add r0, #0x88 + bl FUN_02019548 + add r0, r6, #0 + bl MOD14_021E4770 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E4820: .word 0x021E6690 +_021E4824: .word 0x00010200 + + thumb_func_start MOD14_021E4828 +MOD14_021E4828: ; 0x021E4828 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0xa + mov r1, #0x3c + add r6, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021E487C + str r5, [r4, #4] + ldr r0, [sp] + str r6, [r4, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #0x18] + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD14_021DDD50 + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD14_021DDD6C + str r0, [r4, #0x18] + mov r0, #0 + str r0, [r4, #0x34] + add r0, r6, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021E486C + mov r0, #1 + b _021E486E +_021E486C: + mov r0, #0 +_021E486E: + str r0, [r4] + add r0, r4, #0 + bl MOD14_021E4890 + str r4, [r7] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E487C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E4880 +MOD14_021E4880: ; 0x021E4880 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021E495C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD14_021E4890 +MOD14_021E4890: ; 0x021E4890 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + add r6, r0, #0 + ldr r0, [r6] + cmp r0, #0 + beq _021E4940 + ldr r4, [r6, #0x14] + ldr r0, [r6, #4] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #0x20] + add r1, sp, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r3, [r4, #0x1c] + add r0, sp, #0x34 + bl MOD14_021DDDB4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0206E640 + add r1, r0, #0 + mov r0, #0xa + str r0, [sp] + mov r0, #0x10 + mov r2, #0 + add r3, sp, #0xc + bl FUN_02006BB0 + str r0, [sp, #8] + cmp r0, #0 + beq _021E4950 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r1, [r0] + ldr r0, _021E4954 ; =0x00300010 + ldr r4, _021E4958 ; =0x021E68E8 + and r1, r0 + ldr r0, [sp, #0xc] + mov r7, #0 + str r1, [r0, #8] + add r5, r6, #0 +_021E48EA: + add r0, sp, #0x10 + bl FUN_020B1A24 + ldr r0, [sp, #0xc] + ldr r1, [r4] + mov r2, #1 + add r3, sp, #0x10 + bl FUN_020B1768 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r2, #0 + ldr r0, [r6, #0x10] + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD14_021DDDD4 + str r0, [r5, #0x1c] + ldr r1, [r4, #4] + bl FUN_02020248 + ldr r0, [r5, #0x1c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #0x1c] + mov r1, #1 + bl FUN_020200EC + mov r0, #0 + str r0, [r5, #0x28] + add r7, r7, #1 + add r4, #8 + add r5, r5, #4 + cmp r7, #3 + blt _021E48EA + ldr r0, [sp, #8] + bl FUN_02016A18 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} +_021E4940: + mov r1, #0 + add r0, r1, #0 +_021E4944: + str r0, [r6, #0x1c] + str r0, [r6, #0x28] + add r1, r1, #1 + add r6, r6, #4 + cmp r1, #3 + blt _021E4944 +_021E4950: + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4954: .word 0x00300010 +_021E4958: .word 0x021E68E8 + + thumb_func_start MOD14_021E495C +MOD14_021E495C: ; 0x021E495C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E4962: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E496C + bl FUN_0201FFC8 +_021E496C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E4962 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4978 +MOD14_021E4978: ; 0x021E4978 + push {r3, r4} + mov r3, #0 + add r4, r0, #0 +_021E497E: + ldr r2, [r4, #0x28] + cmp r2, #0 + bne _021E4990 + lsl r2, r3, #2 + add r0, r0, r2 + str r1, [r0, #0x28] + add r0, r3, #0 + pop {r3, r4} + bx lr +_021E4990: + add r3, r3, #1 + add r4, r4, #4 + cmp r3, #3 + blt _021E497E + mov r0, #0 + mvn r0, r0 + pop {r3, r4} + bx lr + + thumb_func_start MOD14_021E49A0 +MOD14_021E49A0: ; 0x021E49A0 + mov r3, #0 +_021E49A2: + ldr r2, [r0, #0x28] + cmp r1, r2 + bne _021E49AC + add r0, r3, #0 + bx lr +_021E49AC: + add r3, r3, #1 + add r0, r0, #4 + cmp r3, #3 + blt _021E49A2 + mov r0, #0 + mvn r0, r0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E49BC +MOD14_021E49BC: ; 0x021E49BC + lsl r1, r1, #2 + add r0, r0, r1 + str r2, [r0, #0x28] + bx lr + + thumb_func_start MOD14_021E49C4 +MOD14_021E49C4: ; 0x021E49C4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021E49D8 + bl MOD14_021E49DC + add r0, r4, #0 + bl MOD14_021E4A14 +_021E49D8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E49DC +MOD14_021E49DC: ; 0x021E49DC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC430 + add r4, r0, #0 + beq _021E4A12 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E4978 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD14_021E4B58 + add r5, #0x1c + lsl r4, r6, #2 + ldr r0, [r5, r4] + mov r1, #6 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021E4A12: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E4A14 +MOD14_021E4A14: ; 0x021E4A14 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC538 + add r7, r0, #0 + beq _021E4AC8 + add r0, r5, #0 + mov r1, #3 + bl MOD14_021E4978 + add r6, r0, #0 + ldr r0, [r5, #0x18] + add r1, sp, #0x10 + bl MOD14_021E0038 + mov r0, #2 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [r5, #8] + bl MOD14_021DC3CC + cmp r0, #1 + bne _021E4A50 + mov r0, #1 + str r0, [sp, #0xc] + b _021E4A54 +_021E4A50: + mov r0, #2 + str r0, [sp, #0xc] +_021E4A54: + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + lsl r4, r6, #3 + bl FUN_0206E640 + mov r2, #0 + ldr r3, _021E4ACC ; =0x021E68E8 + str r2, [sp] + add r1, r0, #0 + str r2, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r3, [r3, r4] + mov r0, #0x10 + bl FUN_02006A34 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + ldr r3, _021E4AD0 ; =0x021E68EC + add r1, r0, #0 + mov r0, #0x20 + ldr r3, [r3, r4] + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x10 + mov r2, #1 + lsl r3, r3, #5 + bl FUN_02006930 + ldr r1, [sp, #0xc] + add r5, #0x1c + lsl r4, r6, #2 + lsl r1, r1, #0x18 + ldr r0, [r5, r4] + lsr r1, r1, #0x18 + bl FUN_02020238 + ldr r0, [r5, r4] + mov r1, #2 + bl MOD14_021DDE24 + ldr r0, [r5, r4] + add r1, sp, #0x10 + bl FUN_02020044 + ldr r0, [r5, r4] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021E4AC8: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E4ACC: .word 0x021E68E8 +_021E4AD0: .word 0x021E68EC + + thumb_func_start MOD14_021E4AD4 +MOD14_021E4AD4: ; 0x021E4AD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5, #8] + add r7, r2, #0 + bl MOD14_021DC3CC + cmp r0, #1 + ldr r0, [r5, #4] + bne _021E4B1E + bl MOD14_021DDD60 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3E8 + add r1, r0, #0 + add r0, r6, #0 + add r2, sp, #4 + add r3, sp, #0 + bl MOD14_021E3170 + ldr r0, [sp, #4] + add r0, #0xa + lsl r0, r0, #0xc + str r0, [r4] + ldr r0, [sp] + add sp, #8 + add r0, #8 + lsl r0, r0, #0xc + str r0, [r4, #4] + mov r0, #1 + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} +_021E4B1E: + bl MOD14_021DDD98 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3D0 + mov r1, #0x18 + add r6, #0x70 + mul r1, r0 + add r0, r6, r1 + add r0, #0xa + str r0, [r4] + ldr r0, [r5, #8] + bl MOD14_021DC3D8 + mov r1, #0x18 + mul r1, r0 + add r1, #0x30 + str r1, [r4, #4] + ldr r0, [r4] + lsl r0, r0, #0xc + str r0, [r4] + ldr r0, [r4, #4] + lsl r0, r0, #0xc + str r0, [r4, #4] + mov r0, #2 + str r0, [r7] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E4B58 +MOD14_021E4B58: ; 0x021E4B58 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r1, #0 + add r5, r0, #0 + add r7, r2, #0 + cmp r4, #0 + blt _021E4BD2 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD14_021E4AD4 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + lsl r6, r4, #3 + bl FUN_0206E640 + mov r2, #0 + ldr r3, _021E4BD8 ; =0x021E68E8 + str r2, [sp] + add r1, r0, #0 + str r2, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r3, [r3, r6] + mov r0, #0x10 + bl FUN_02006A34 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + ldr r3, _021E4BDC ; =0x021E68EC + add r1, r0, #0 + mov r0, #0x20 + ldr r3, [r3, r6] + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x10 + mov r2, #1 + lsl r3, r3, #5 + bl FUN_02006930 + ldr r1, [sp, #0xc] + add r5, #0x1c + lsl r4, r4, #2 + lsl r1, r1, #0x18 + ldr r0, [r5, r4] + lsr r1, r1, #0x18 + bl FUN_02020238 + ldr r0, [r5, r4] + mov r1, #3 + bl MOD14_021DDE24 + ldr r0, [r5, r4] + add r1, sp, #0x10 + bl FUN_02020044 +_021E4BD2: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E4BD8: .word 0x021E68E8 +_021E4BDC: .word 0x021E68EC + + thumb_func_start MOD14_021E4BE0 +MOD14_021E4BE0: ; 0x021E4BE0 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4C3E + mov r1, #1 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4C0A + add r0, r5, #0 + add r1, r4, #0 + mov r2, #2 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #2 + bl FUN_02020130 +_021E4C0A: + ldr r0, [r5, #8] + bl MOD14_021DC430 + add r6, r0, #0 + beq _021E4C3E + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E4978 + add r4, r0, #0 + bmi _021E4C3E + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD14_021E4B58 + add r5, #0x1c + lsl r4, r4, #2 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021E4C3E: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E4C40 +MOD14_021E4C40: ; 0x021E4C40 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + bne _021E4C4E + mov r0, #1 + pop {r3, r4, r5, pc} +_021E4C4E: + mov r1, #1 + bl MOD14_021E49A0 + cmp r0, #0 + blt _021E4C6A + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4C6A + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4C6A: + add r0, r5, #0 + mov r1, #2 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4C92 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4C88 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4C88: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021E49BC +_021E4C92: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4C98 +MOD14_021E4C98: ; 0x021E4C98 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + mov r0, #0xa + mov r1, #0x34 + add r6, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021E4D1A + lsl r0, r7, #2 + str r5, [r4] + add r0, r5, r0 + ldr r0, [r0, #0x1c] + str r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r2, r4, #0 + ldmia r6!, {r0, r1} + add r2, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r6] + ldr r6, [sp, #0x18] + str r0, [r2] + ldr r1, [r4, #0x14] + ldr r0, [r4, #8] + sub r0, r1, r0 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0x20] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0xc] + sub r0, r1, r0 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0x24] + ldr r0, [sp, #0x18] + mov r2, #0 + str r0, [r4, #0x2c] + ldr r0, [sp] + add r1, r4, #0 + str r0, [r4, #0x28] + ldr r0, _021E4D1C ; =MOD14_021E4D20 + str r2, [r4, #0x30] + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E4D14 + ldr r0, [r5, #0x34] + add r0, r0, #1 + str r0, [r5, #0x34] + pop {r3, r4, r5, r6, r7, pc} +_021E4D14: + add r0, r4, #0 + bl FUN_02016A18 +_021E4D1A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4D1C: .word MOD14_021E4D20 + + thumb_func_start MOD14_021E4D20 +MOD14_021E4D20: ; 0x021E4D20 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021E4D32 + cmp r0, #1 + beq _021E4D68 + pop {r3, r4, r5, pc} +_021E4D32: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021E4D58 + ldr r2, [r4, #8] + ldr r0, [r4, #0x20] + add r1, #8 + add r0, r2, r0 + str r0, [r4, #8] + ldr r2, [r4, #0xc] + ldr r0, [r4, #0x24] + add r0, r2, r0 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + bl FUN_02020044 + ldr r0, [r4, #0x2c] + sub r0, r0, #1 + str r0, [r4, #0x2c] + pop {r3, r4, r5, pc} +_021E4D58: + ldr r0, [r4, #4] + add r1, #0x14 + bl FUN_02020044 + ldr r0, [r4, #0x30] + add r0, r0, #1 + str r0, [r4, #0x30] + pop {r3, r4, r5, pc} +_021E4D68: + ldr r0, [r4, #4] + bl FUN_02020388 + cmp r0, #0 + bne _021E4D92 + ldr r0, [r4, #4] + ldr r1, [r4, #0x28] + bl MOD14_021DDE24 + ldr r1, [r4] + ldr r0, [r1, #0x34] + sub r0, r0, #1 + str r0, [r1, #0x34] + add r0, r5, #0 + bl FUN_0200CAB4 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD14_021DDF30 +_021E4D92: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4D94 +MOD14_021E4D94: ; 0x021E4D94 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4DE2 + mov r1, #1 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4DE2 + ldr r0, [r5, #0x18] + add r1, sp, #4 + bl MOD14_021E0038 + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #3 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #3 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #4 + mov r3, #2 + bl MOD14_021E4C98 +_021E4DE2: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4DE8 +MOD14_021E4DE8: ; 0x021E4DE8 + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _021E4DF2 + mov r0, #1 + bx lr +_021E4DF2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E4DF8 +MOD14_021E4DF8: ; 0x021E4DF8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021E4E22 + mov r1, #1 + bl MOD14_021E49A0 + add r5, r0, #0 + bmi _021E4E22 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #2 + bl MOD14_021E49BC + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + mov r1, #2 + bl FUN_02020130 +_021E4E22: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4E24 +MOD14_021E4E24: ; 0x021E4E24 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4E54 + mov r1, #2 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4E54 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4E4A + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4E4A: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021E49BC +_021E4E54: + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4E58 +MOD14_021E4E58: ; 0x021E4E58 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4E9E + mov r1, #3 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4E9E + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD14_021E4AD4 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #4 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #8 + mov r3, #3 + bl MOD14_021E4C98 +_021E4E9E: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4EA4 +MOD14_021E4EA4: ; 0x021E4EA4 + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _021E4EAE + mov r0, #1 + bx lr +_021E4EAE: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E4EB4 +MOD14_021E4EB4: ; 0x021E4EB4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4F42 + mov r1, #3 + bl MOD14_021E49A0 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E49A0 + add r6, r0, #0 + cmp r4, #0 + blt _021E4F42 + cmp r6, #0 + blt _021E4F42 + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD14_021E4AD4 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #4 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #8 + mov r3, #3 + bl MOD14_021E4C98 + ldr r0, [r5, #0x18] + add r1, sp, #8 + bl MOD14_021E0038 + mov r0, #2 + ldr r1, [sp, #0xc] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD14_021E49BC + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #3 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #8 + mov r3, #2 + bl MOD14_021E4C98 +_021E4F42: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4F48 +MOD14_021E4F48: ; 0x021E4F48 + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _021E4F52 + mov r0, #1 + bx lr +_021E4F52: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E4F58 +MOD14_021E4F58: ; 0x021E4F58 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021E4F9E + mov r1, #3 + bl MOD14_021E49A0 + add r5, r0, #0 + bmi _021E4F7C + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + mov r1, #5 + bl FUN_02020130 + str r5, [r4, #0x38] + pop {r3, r4, r5, pc} +_021E4F7C: + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E49A0 + add r5, r0, #0 + bmi _021E4F98 + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + mov r1, #2 + bl FUN_02020130 + str r5, [r4, #0x38] + pop {r3, r4, r5, pc} +_021E4F98: + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x38] +_021E4F9E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4FA0 +MOD14_021E4FA0: ; 0x021E4FA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E4FD6 + mov r0, #0 + ldr r1, [r4, #0x38] + mvn r0, r0 + cmp r1, r0 + beq _021E4FD6 + lsl r0, r1, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4FC6 + mov r0, #0 + pop {r4, pc} +_021E4FC6: + ldr r1, [r4, #0x38] + add r0, r4, #0 + mov r2, #0 + bl MOD14_021E49BC + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x38] +_021E4FD6: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4FDC +MOD14_021E4FDC: ; 0x021E4FDC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E5016 + mov r1, #3 + bl MOD14_021E49A0 + add r6, r0, #0 + bmi _021E5016 + ldmia r4!, {r0, r1} + add r3, sp, #0 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #4] + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + add r1, r2, #0 + bl FUN_02020044 +_021E5016: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E501C +MOD14_021E501C: ; 0x021E501C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E5040 + mov r1, #3 + bl MOD14_021E49A0 + cmp r0, #0 + blt _021E5040 + lsl r0, r0, #2 + add r0, r5, r0 + lsl r1, r4, #0x18 + ldr r0, [r0, #0x1c] + lsr r1, r1, #0x18 + bl FUN_02020238 +_021E5040: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5044 +MOD14_021E5044: ; 0x021E5044 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r2, #0 + add r5, r0, #0 + add r0, r7, #0 + add r6, r1, #0 + str r3, [sp, #4] + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021E5064 + mov r0, #0 + str r0, [r5] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E5064: + mov r1, #0xe1 + mov r0, #0xa + lsl r1, r1, #2 + bl FUN_02016998 + add r4, r0, #0 + beq _021E50E6 + str r6, [r4, #4] + ldr r0, [sp, #4] + str r7, [r4, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + str r0, [r4, #0x10] + add r0, r6, #0 + bl MOD14_021DDD50 + mov r3, #0xda + str r0, [r4, #0x14] + mov r0, #0xa + lsl r3, r3, #2 + str r0, [sp] + mov r0, #0x12 + mov r1, #7 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006BDC + mov r3, #0x37 + lsl r3, r3, #4 + str r0, [r4, r3] + mov r0, #0xa + sub r3, r3, #4 + str r0, [sp] + mov r0, #0x12 + mov r1, #8 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006BDC + mov r1, #0xdd + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x24] + mov r2, #0x93 + str r0, [r4, #0x6c] + mov r0, #1 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #0xa + bl FUN_0200A86C + str r0, [r4, #0x70] + mov r0, #0x20 + mov r1, #0xa + bl FUN_020219F4 + str r0, [r4, #0x74] + mov r0, #0xe + mov r1, #0 + lsl r0, r0, #6 + str r1, [r4, r0] + add sp, #8 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E50E6: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E50EC +MOD14_021E50EC: ; 0x021E50EC + push {r4, lr} + add r4, r0, #0 + beq _021E5124 + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xdd + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, [r4, #0x70] + bl FUN_0200A8B8 + add r0, r4, #0 + bl MOD14_021E5C04 + add r0, r4, #0 + bl MOD14_021E5474 + ldr r0, [r4, #0x74] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02016A18 +_021E5124: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5128 +MOD14_021E5128: ; 0x021E5128 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + beq _021E5210 + bl MOD14_021E5334 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x6c + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x69 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x6a + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x6b + mov r3, #7 + bl FUN_020068C8 + mov r0, #0x80 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x6d + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + bl FUN_0206B888 + mov r3, #0x80 + add r1, r0, #0 + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x13 + mov r2, #5 + bl FUN_02006930 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0xa + bl FUN_02017F18 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0xc] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018540 + add r0, r4, #0 + bl MOD14_021E539C + add r0, r4, #0 + bl MOD14_021E5400 + ldr r0, [r4, #8] + bl MOD14_021DC560 + mov r1, #0xde + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 + add r0, r4, #0 + bl MOD14_021E5A08 +_021E5210: + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD14_021E5214 +MOD14_021E5214: ; 0x021E5214 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + cmp r5, #0 + beq _021E5268 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r4, r0, #0 + cmp r6, #0 + beq _021E5248 + mov r0, #1 + eor r0, r4 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + mov r1, #2 + bl FUN_02020130 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + mov r1, #0 + bl FUN_02020130 + b _021E5262 +_021E5248: + mov r1, #1 + eor r0, r1 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + bl FUN_02020130 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + mov r1, #0 + bl FUN_02020130 +_021E5262: + add r0, r5, #0 + bl MOD14_021E5334 +_021E5268: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E526C +MOD14_021E526C: ; 0x021E526C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD14_021E5C68 + cmp r5, #0 + beq _021E52B8 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E5CFC + ldr r0, [r5, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E529C + cmp r0, #1 + beq _021E52A6 + cmp r0, #2 + beq _021E52B0 + pop {r3, r4, r5, pc} +_021E529C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E57E4 + pop {r3, r4, r5, pc} +_021E52A6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E55B0 + pop {r3, r4, r5, pc} +_021E52B0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E5908 +_021E52B8: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E52BC +MOD14_021E52BC: ; 0x021E52BC + mov r0, #1 + bx lr + + thumb_func_start MOD14_021E52C0 +MOD14_021E52C0: ; 0x021E52C0 + push {r4, lr} + add r4, r0, #0 + beq _021E52DE + mov r1, #0xdf + mov r2, #0 + lsl r1, r1, #2 + str r2, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl MOD14_021E5504 + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 +_021E52DE: + pop {r4, pc} + + thumb_func_start MOD14_021E52E0 +MOD14_021E52E0: ; 0x021E52E0 + push {r4, lr} + add r4, r0, #0 + beq _021E5330 + mov r1, #0xdf + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + beq _021E52FA + cmp r1, #1 + beq _021E530A + cmp r1, #2 + beq _021E5328 + b _021E532C +_021E52FA: + bl MOD14_021E539C + mov r0, #0xdf + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021E532C +_021E530A: + bl MOD14_021E5718 + add r0, r4, #0 + bl MOD14_021E549C + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 + mov r0, #0xdf + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021E532C +_021E5328: + mov r0, #1 + pop {r4, pc} +_021E532C: + mov r0, #0 + pop {r4, pc} +_021E5330: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD14_021E5334 +MOD14_021E5334: ; 0x021E5334 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC558 + cmp r0, #0 + bne _021E5348 + mov r0, #0xda + b _021E534A +_021E5348: + mov r0, #0xdb +_021E534A: + lsl r0, r0, #2 + ldr r4, [r5, r0] + mov r0, #6 + str r0, [sp] + mov r1, #0x20 + add r0, r4, #0 + mov r2, #0 + str r1, [sp, #4] + add r0, #0xc + str r0, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #2 + add r3, r2, #0 + bl FUN_02018170 + mov r0, #6 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r4, #0xc + str r4, [sp, #8] + mov r2, #0x1a + str r2, [sp, #0xc] + mov r3, #0 + str r3, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_02018170 + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_02017CD0 + add sp, #0x1c + pop {r4, r5, pc} + + thumb_func_start MOD14_021E539C +MOD14_021E539C: ; 0x021E539C + push {r3, lr} + ldr r0, [r0, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E53B2 + cmp r0, #1 + beq _021E53CC + cmp r0, #2 + beq _021E53E6 + pop {r3, pc} +_021E53B2: + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + pop {r3, pc} +_021E53CC: + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + pop {r3, pc} +_021E53E6: + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + pop {r3, pc} + + thumb_func_start MOD14_021E5400 +MOD14_021E5400: ; 0x021E5400 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r1, #0 + add r2, r7, #0 + add r5, r1, #0 +_021E540A: + add r0, r2, #0 + add r0, #0x84 + add r1, r1, #1 + add r2, #0x10 + str r5, [r0] + cmp r1, #7 + blt _021E540A + add r4, r7, #0 + ldr r6, _021E5470 ; =0x021E6940 + add r4, #0x78 +_021E541E: + ldr r0, [r7, #0xc] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02019150 + add r0, r4, #0 + bl FUN_02019270 + add r5, r5, #1 + add r6, #8 + add r4, #0x10 + cmp r5, #3 + blo _021E541E + add r0, r7, #0 + bl MOD14_021E5718 + add r0, r7, #0 + add r0, #0x78 + mov r1, #0 + bl FUN_02019620 + add r0, r7, #0 + add r0, #0x88 + mov r1, #0 + bl FUN_02019620 + add r4, r7, #0 + mov r5, #0 + add r4, #0x78 +_021E5458: + add r0, r4, #0 + bl FUN_02019548 + add r5, r5, #1 + add r4, #0x10 + cmp r5, #3 + blo _021E5458 + add r0, r7, #0 + bl MOD14_021E549C + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5470: .word 0x021E6940 + + thumb_func_start MOD14_021E5474 +MOD14_021E5474: ; 0x021E5474 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r5, #0 + mov r6, #0 + add r4, #0x78 +_021E547E: + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E548E + add r0, r4, #0 + bl FUN_02019178 +_021E548E: + add r6, r6, #1 + add r5, #0x10 + add r4, #0x10 + cmp r6, #7 + blt _021E547E + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E549C +MOD14_021E549C: ; 0x021E549C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC560 + add r4, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E54BC + cmp r0, #1 + beq _021E54D4 + cmp r0, #2 + beq _021E54E6 + b _021E54FC +_021E54BC: + add r0, r5, #0 + bl MOD14_021E5540 + add r0, r5, #0 + mov r1, #0 + bl MOD14_021E57E4 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E57E4 + b _021E54FC +_021E54D4: + add r0, r5, #0 + mov r1, #0 + bl MOD14_021E55B0 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E55B0 + b _021E54FC +_021E54E6: + add r0, r5, #0 + bl MOD14_021E56A8 + add r0, r5, #0 + mov r1, #0 + bl MOD14_021E5908 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E5908 +_021E54FC: + mov r0, #0xde + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E5504 +MOD14_021E5504: ; 0x021E5504 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _021E5516 + cmp r1, #1 + beq _021E5522 + cmp r1, #2 + beq _021E5532 + pop {r4, pc} +_021E5516: + bl MOD14_021E5578 + add r0, r4, #0 + bl MOD14_021E57CC + pop {r4, pc} +_021E5522: + mov r1, #0 + bl MOD14_021E5688 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E5688 + pop {r4, pc} +_021E5532: + bl MOD14_021E56E0 + add r0, r4, #0 + bl MOD14_021E57CC + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5540 +MOD14_021E5540: ; 0x021E5540 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r7, _021E5574 ; =0x021E6930 + str r0, [sp] + mov r6, #0 + add r5, #0x78 +_021E554C: + add r0, r6, #3 + lsl r4, r0, #4 + ldr r0, [sp] + add r1, r5, r4 + ldr r0, [r0, #0xc] + add r2, r7, #0 + bl FUN_02019150 + add r0, r5, r4 + bl FUN_02019270 + add r0, r5, r4 + mov r1, #0 + bl FUN_02019620 + add r6, r6, #1 + add r7, #8 + cmp r6, #2 + blo _021E554C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5574: .word 0x021E6930 + + thumb_func_start MOD14_021E5578 +MOD14_021E5578: ; 0x021E5578 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r0, #0x78 + add r5, r0, #0 + mov r6, #3 + add r4, #0x30 + add r5, #0x30 + mov r7, #0 +_021E5588: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E55A4 + add r0, r5, #0 + bl FUN_020192B8 + add r0, r5, #0 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x84 + str r7, [r0] +_021E55A4: + add r6, r6, #1 + add r4, #0x10 + add r5, #0x10 + cmp r6, #4 + ble _021E5588 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E55B0 +MOD14_021E55B0: ; 0x021E55B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + ldr r0, [r7, #8] + str r1, [sp] + bl MOD14_021DC568 + add r4, r0, #0 + ldr r0, [r7, #8] + bl MOD14_021DC3F0 + add r6, r0, #0 + ldr r0, [r7, #8] + bl MOD14_021DC558 + ldr r1, [sp] + cmp r1, r0 + bne _021E55D8 + mov r5, #1 + b _021E55DA +_021E55D8: + mov r5, #0 +_021E55DA: + ldr r0, [r7, #8] + ldr r1, [sp] + bl MOD14_021DC574 + cmp r6, #1 + bne _021E55EA + cmp r5, #1 + beq _021E55F2 +_021E55EA: + cmp r5, #0 + bne _021E5676 + cmp r0, #1 + bne _021E5676 +_021E55F2: + ldrb r0, [r4, #6] + cmp r0, #0 + bne _021E5676 + ldr r1, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #0x10] + mov r0, #0x14 + add r2, r1, #0 + mul r2, r0 + add r5, r7, r2 + mov r2, #1 + eor r1, r2 + mul r0, r1 + ldr r6, _021E5684 ; =0x021E6958 + add r4, #0x16 + add r7, r7, r0 +_021E5614: + ldr r3, [r6] + ldr r0, [r6, #8] + ldrh r2, [r4] + sub r1, r0, r3 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r0, r0, #8 + mul r0, r2 + add r0, r3, r0 + str r0, [sp, #8] + ldr r3, [r6, #4] + ldr r0, [r6, #0xc] + ldrh r2, [r4] + sub r1, r0, r3 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r0, r0, #8 + mul r0, r2 + add r0, r3, r0 + str r0, [sp, #0xc] + ldr r0, [r5, #0x34] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, [r5, #0x34] + mov r1, #0 + bl MOD14_021DDE24 + ldr r0, [r7, #0x34] + mov r1, #1 + bl MOD14_021DDE24 + ldr r0, [r5, #0x34] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [sp, #4] + add r4, r4, #2 + add r0, r0, #1 + add r6, #0x10 + add r5, r5, #4 + add r7, r7, #4 + str r0, [sp, #4] + cmp r0, #5 + blt _021E5614 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E5676: + ldr r1, [sp] + add r0, r7, #0 + bl MOD14_021E5688 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E5684: .word 0x021E6958 + + thumb_func_start MOD14_021E5688 +MOD14_021E5688: ; 0x021E5688 + push {r4, r5, r6, lr} + mov r2, #0x14 + mov r4, #0 + mul r2, r1 + add r5, r0, r2 + add r6, r4, #0 +_021E5694: + ldr r0, [r5, #0x34] + add r1, r6, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E5694 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E56A8 +MOD14_021E56A8: ; 0x021E56A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r7, _021E56DC ; =0x021E6920 + str r0, [sp] + mov r6, #0 + add r5, #0x78 +_021E56B4: + add r0, r6, #5 + lsl r4, r0, #4 + ldr r0, [sp] + add r1, r5, r4 + ldr r0, [r0, #0xc] + add r2, r7, #0 + bl FUN_02019150 + add r0, r5, r4 + bl FUN_02019270 + add r0, r5, r4 + mov r1, #0 + bl FUN_02019620 + add r6, r6, #1 + add r7, #8 + cmp r6, #2 + blo _021E56B4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E56DC: .word 0x021E6920 + + thumb_func_start MOD14_021E56E0 +MOD14_021E56E0: ; 0x021E56E0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r0, #0x78 + add r5, r0, #0 + mov r6, #5 + add r4, #0x50 + add r5, #0x50 + mov r7, #0 +_021E56F0: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E570C + add r0, r5, #0 + bl FUN_020192B8 + add r0, r5, #0 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x84 + str r7, [r0] +_021E570C: + add r6, r6, #1 + add r4, #0x10 + add r5, #0x10 + cmp r6, #6 + ble _021E56F0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E5718 +MOD14_021E5718: ; 0x021E5718 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r5, #0 + add r7, #0x98 + add r0, r7, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [r5, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E573A + cmp r0, #2 + beq _021E5786 + b _021E57B8 +_021E573A: + mov r0, #0 + ldr r6, _021E57C4 ; =0x021E6910 + str r0, [sp, #0x10] + add r4, r0, #0 +_021E5742: + ldrh r1, [r6] + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r7, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E57C8 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r7, #0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, r0, #1 + add r4, #0x10 + str r0, [sp, #0x10] + cmp r0, #8 + blo _021E5742 + b _021E57B8 +_021E5786: + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + mov r1, #0x2b + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r7, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E57C8 ; =0x000F0E00 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r7, #0 + bl FUN_0201BDE0 +_021E57B8: + add r0, r7, #0 + bl FUN_02019548 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E57C4: .word 0x021E6910 +_021E57C8: .word 0x000F0E00 + + thumb_func_start MOD14_021E57CC +MOD14_021E57CC: ; 0x021E57CC + push {r4, lr} + add r4, r0, #0 + add r4, #0x98 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E57E4 +MOD14_021E57E4: ; 0x021E57E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r0, r1, #0 + add r2, r5, #0 + add r0, r0, #3 + add r2, #0x78 + lsl r0, r0, #4 + add r4, r2, r0 + ldr r0, [r5, #8] + str r1, [sp, #0x10] + bl MOD14_021DC568 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + str r0, [sp, #0x18] + ldr r0, [r5, #8] + bl MOD14_021DC558 + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _021E5818 + mov r7, #1 + b _021E581A +_021E5818: + mov r7, #0 +_021E581A: + ldr r0, [r5, #8] + ldr r1, [sp, #0x10] + bl MOD14_021DC574 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _021E5836 + cmp r7, #1 + beq _021E5840 +_021E5836: + cmp r7, #0 + bne _021E58FA + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _021E58FA +_021E5840: + ldrb r0, [r6, #6] + cmp r0, #0 + bne _021E58BA + mov r0, #0 + ldr r1, [r6, #0x2c] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5904 ; =0x000F0E00 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r6, #0x2c] + add r0, r4, #0 + bl FUN_0201BDE0 + mov r7, #0 + add r6, #8 +_021E5872: + mov r0, #1 + str r0, [sp] + ldrh r1, [r6] + ldr r0, [r5, #0x74] + mov r2, #3 + mov r3, #0 + bl FUN_02021B04 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + add r0, r7, #1 + lsl r0, r0, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5904 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, r6, #2 + cmp r7, #7 + blt _021E5872 + b _021E58FA +_021E58BA: + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + mov r1, #0x2c + bl FUN_0200A8E0 + mov r7, #0 + add r6, r7, #0 +_021E58C8: + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5904 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, #0x10 + cmp r7, #8 + blt _021E58C8 +_021E58FA: + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E5904: .word 0x000F0E00 + + thumb_func_start MOD14_021E5908 +MOD14_021E5908: ; 0x021E5908 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + add r0, r1, #0 + add r2, r5, #0 + add r0, r0, #5 + add r2, #0x78 + lsl r0, r0, #4 + add r4, r2, r0 + ldr r0, [r5, #8] + str r1, [sp, #0x10] + bl MOD14_021DC568 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + str r0, [sp, #0x1c] + ldr r0, [r5, #8] + bl MOD14_021DC558 + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _021E593C + mov r7, #1 + b _021E593E +_021E593C: + mov r7, #0 +_021E593E: + ldr r0, [r5, #8] + ldr r1, [sp, #0x10] + bl MOD14_021DC574 + str r0, [sp, #0x18] + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _021E595A + cmp r7, #1 + beq _021E5964 +_021E595A: + cmp r7, #0 + bne _021E59F8 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _021E59F8 +_021E5964: + ldrb r0, [r6, #6] + cmp r0, #0 + bne _021E59B8 + mov r0, #0 + str r0, [sp, #0x14] + mov r7, #4 +_021E5970: + ldrh r1, [r6, #0x20] + cmp r1, #0 + beq _021E59A8 + ldr r0, [r5, #0x70] + ldr r2, [r5, #0x74] + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5A04 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 +_021E59A8: + ldr r0, [sp, #0x14] + add r6, r6, #2 + add r0, r0, #1 + add r7, #0x18 + str r0, [sp, #0x14] + cmp r0, #4 + blt _021E5970 + b _021E59F8 +_021E59B8: + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + mov r1, #0x2c + bl FUN_0200A8E0 + mov r7, #0 + mov r6, #4 +_021E59C6: + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5A04 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, #0x18 + cmp r7, #4 + blt _021E59C6 +_021E59F8: + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5A04: .word 0x000F0E00 + + thumb_func_start MOD14_021E5A08 +MOD14_021E5A08: ; 0x021E5A08 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r7, r0, #0 + mov r0, #0xa + add r3, r7, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x6f + mov r2, #1 + add r3, #0x60 + bl FUN_02006C30 + str r0, [r7, #0x5c] + mov r0, #0xa + add r3, r7, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x70 + mov r2, #1 + add r3, #0x68 + bl FUN_02006C5C + str r0, [r7, #0x64] + mov r0, #0x60 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x71 + mov r2, #5 + mov r3, #0 + bl FUN_02006930 + add r0, sp, #0x48 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x48 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0x6e + mov r2, #1 + bl FUN_02006AE4 + str r0, [sp, #0x20] + ldr r0, [r7, #4] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r7, #0x68] + add r1, sp, #0x48 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r3, [r7, #0x60] + add r0, sp, #0x24 + bl MOD14_021DDDB4 + ldr r0, _021E5B5C ; =0x021E6900 + mov r4, #0 + str r0, [sp, #0x1c] + str r7, [sp, #0x18] + str r7, [sp, #0x14] +_021E5A92: + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [sp, #0x1c] + mov r3, #0 + ldrsh r2, [r2, r3] + ldr r3, [sp, #0x1c] + mov r5, #2 + ldrsh r3, [r3, r5] + ldr r0, [r7, #0x10] + add r1, sp, #0x24 + bl MOD14_021DDDD4 + ldr r1, [sp, #0x18] + str r0, [r1, #0x28] + add r1, r4, #0 + bl FUN_02020248 + ldr r0, [sp, #0x18] + mov r1, #0 + ldr r0, [r0, #0x28] + bl FUN_02020130 + ldr r5, [sp, #0x14] + mov r6, #0 +_021E5AC6: + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r2, #0 + ldr r0, [r7, #0x10] + add r1, sp, #0x24 + add r3, r2, #0 + bl MOD14_021DDDD4 + str r0, [r5, #0x34] + add r1, r4, #5 + bl FUN_02020130 + ldr r0, [r5, #0x34] + add r1, r4, #0 + bl FUN_02020248 + ldr r0, [r5, #0x34] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #5 + blo _021E5AC6 + ldr r0, [sp, #0x1c] + add r4, r4, #1 + add r0, r0, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, #0x14 + str r0, [sp, #0x14] + cmp r4, #2 + blo _021E5A92 + ldr r0, [r7, #0x2c] + mov r1, #1 + bl FUN_02020100 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r3, #0x23 + ldr r0, [r7, #0x10] + add r1, sp, #0x24 + mov r2, #0x80 + lsl r3, r3, #4 + bl MOD14_021DDDD4 + str r0, [r7, #0x30] + mov r1, #3 + bl FUN_02020130 + ldr r0, [r7, #0x30] + mov r1, #2 + bl FUN_02020248 + ldr r0, _021E5B60 ; =MOD14_021E5D64 + add r1, r7, #0 + mov r2, #1 + bl FUN_0200CA44 + mov r1, #0xe + lsl r1, r1, #6 + str r0, [r7, r1] + ldr r1, [sp, #0x20] + add r0, r7, #0 + bl MOD14_021E5B64 + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E5B5C: .word 0x021E6900 +_021E5B60: .word MOD14_021E5D64 + + thumb_func_start MOD14_021E5B64 +MOD14_021E5B64: ; 0x021E5B64 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + str r0, [sp, #8] + ldr r0, [r0, #4] + str r1, [sp, #0xc] + bl MOD14_021DDD48 + add r5, r0, #0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x14] + bl MOD14_021E0C74 + add r4, r0, #0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x14] + bl MOD14_021E0C78 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, sp, #0x10 + add r1, sp, #0x34 + add r2, r5, #0 + add r3, r4, #0 + bl MOD14_021DDDB4 + mov r7, #0 + ldr r4, [sp, #8] + ldr r5, _021E5BF8 ; =0x021E6908 + add r6, r7, #0 +_021E5BA0: + ldr r0, [sp, #0xc] + add r0, r0, r6 + str r0, [r4, #0x18] + add r0, sp, #0x34 + bl FUN_020B1A24 + ldr r2, [r4, #0x18] + add r0, sp, #0x34 + mov r1, #2 + bl FUN_020B1A1C + ldr r0, _021E5BFC ; =0x04001000 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021E5C00 ; =0x00300010 + mov r3, #2 + and r0, r1 + str r0, [sp, #0x54] + mov r0, #1 + sub r0, r0, r7 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #8] + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + ldr r0, [r0, #0x10] + add r1, sp, #0x10 + bl MOD14_021DDDD4 + mov r1, #0 + str r0, [r4, #0x20] + bl FUN_020200A0 + mov r0, #2 + lsl r0, r0, #8 + add r7, r7, #1 + add r6, r6, r0 + add r4, r4, #4 + add r5, r5, #4 + cmp r7, #2 + blt _021E5BA0 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5BF8: .word 0x021E6908 +_021E5BFC: .word 0x04001000 +_021E5C00: .word 0x00300010 + + thumb_func_start MOD14_021E5C04 +MOD14_021E5C04: ; 0x021E5C04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0xe + lsl r1, r1, #6 + str r0, [sp] + ldr r0, [r0, r1] + cmp r0, #0 + beq _021E5C18 + bl FUN_0200CAB4 +_021E5C18: + ldr r6, [sp] + mov r0, #0 + str r0, [sp, #4] + add r7, r6, #0 +_021E5C20: + ldr r0, [r6, #0x20] + bl FUN_0201FFC8 + ldr r0, [r6, #0x28] + bl FUN_0201FFC8 + mov r4, #0 + add r5, r7, #0 +_021E5C30: + ldr r0, [r5, #0x34] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E5C30 + ldr r0, [sp, #4] + add r6, r6, #4 + add r0, r0, #1 + add r7, #0x14 + str r0, [sp, #4] + cmp r0, #2 + blt _021E5C20 + ldr r0, [sp] + ldr r0, [r0, #0x30] + bl FUN_0201FFC8 + ldr r0, [sp] + ldr r0, [r0, #0x5c] + bl FUN_02016A18 + ldr r0, [sp] + ldr r0, [r0, #0x64] + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E5C68 +MOD14_021E5C68: ; 0x021E5C68 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r4, r0, #0 + ldr r0, [r5, #8] + add r1, r4, #0 + bl MOD14_021DC568 + lsl r7, r4, #2 + add r6, r0, #0 + add r0, r5, r7 + ldr r4, [r0, #0x20] + ldr r0, [r6] + str r0, [sp] + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021E5CF0 + ldrh r0, [r6, #4] + ldrb r1, [r6, #7] + ldrb r2, [r6, #6] + bl FUN_0206B7BC + add r6, r0, #0 + ldr r0, [sp] + bl FUN_0206B688 + add r2, r0, #0 + add r1, r5, #0 + mov r3, #0xa + ldr r0, [r5, #0x14] + add r1, #0xe8 + lsl r3, r3, #6 + bl MOD14_021E0BAC + add r0, r5, #0 + add r0, #0xe8 + add r1, sp, #4 + bl FUN_020B0088 + ldr r0, [sp, #4] + mov r1, #2 + ldr r0, [r0, #0x14] + lsl r1, r1, #8 + bl DC_FlushRange + ldr r0, [sp, #4] + add r1, r5, r7 + mov r2, #2 + ldr r0, [r0, #0x14] + ldr r1, [r1, #0x18] + lsl r2, r2, #8 + bl GXS_LoadOBJ + add r0, r4, #0 + add r1, r6, #4 + bl FUN_02020248 + add r0, r4, #0 + mov r1, #1 + bl FUN_020200A0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021E5CF0: + add r0, r4, #0 + mov r1, #0 + bl FUN_020200A0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E5CFC +MOD14_021E5CFC: ; 0x021E5CFC + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r6, r0, #0 + add r1, r5, #0 + add r1, #0x78 + lsl r0, r6, #4 + add r4, r1, r0 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021E5D56 + ldr r0, [r5, #8] + add r1, r6, #0 + bl MOD14_021DC568 + add r5, r0, #0 + mov r0, #0 + ldr r1, [r5, #0x28] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5D60 ; =0x000F0E00 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x28] + add r0, r4, #0 + bl FUN_0201BDE0 +_021E5D56: + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E5D60: .word 0x000F0E00 + + thumb_func_start MOD14_021E5D64 +MOD14_021E5D64: ; 0x021E5D64 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #8] + bl MOD14_021DC57C + add r4, r0, #0 + ldr r0, [r5, #0x30] + bl FUN_020201DC + cmp r0, #3 + bne _021E5D88 + cmp r4, #0 + beq _021E5D94 + ldr r0, [r5, #0x30] + mov r1, #4 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021E5D88: + cmp r4, #0 + bne _021E5D94 + ldr r0, [r5, #0x30] + mov r1, #3 + bl FUN_02020130 +_021E5D94: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5D98 +MOD14_021E5D98: ; 0x021E5D98 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r4, #0x74 + add r0, r4, #0 + add r5, r1, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #0x36 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x37 + bl MOD14_021E613C + add r0, r4, #0 + add r0, #0x20 + strb r5, [r0] + mov r0, #0 + add r4, #0x23 + strb r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E5DC4 +MOD14_021E5DC4: ; 0x021E5DC4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x74 + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #1 + add r0, #0x23 + strb r1, [r0] + add r0, r5, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bhi _021E5DFA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E5DF0: ; jump table + .short _021E5E70 - _021E5DF0 - 2 ; case 0 + .short _021E5E9A - _021E5DF0 - 2 ; case 1 + .short _021E5DFA - _021E5DF0 - 2 ; case 2 + .short _021E5DFA - _021E5DF0 - 2 ; case 3 + .short _021E5EC4 - _021E5DF0 - 2 ; case 4 +_021E5DFA: + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021E5E1C + add r0, r5, #0 + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021E5E12 + mov r1, #0x24 + b _021E5E14 +_021E5E12: + mov r1, #0x23 +_021E5E14: + add r0, r4, #0 + bl MOD14_021E613C + b _021E5E24 +_021E5E1C: + add r0, r4, #0 + mov r1, #0x22 + bl MOD14_021E613C +_021E5E24: + add r0, r4, #0 + mov r1, #0x25 + bl MOD14_021E613C + add r0, r5, #0 + bl MOD14_021DC42C + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _021E5E40 + add r0, r4, #0 + mov r1, #0x28 + bl MOD14_021E613C +_021E5E40: + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E5E4E + mov r1, #0x26 + b _021E5E50 +_021E5E4E: + mov r1, #0x27 +_021E5E50: + add r0, r4, #0 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} +_021E5E70: + add r0, r4, #0 + mov r1, #0x27 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x25 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} +_021E5E9A: + add r0, r4, #0 + mov r1, #0x26 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x25 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} +_021E5EC4: + add r0, r5, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021E5ED2 + mov r1, #0x34 + b _021E5ED4 +_021E5ED2: + mov r1, #0x35 +_021E5ED4: + add r0, r4, #0 + bl MOD14_021E613C + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E5EE8 + mov r1, #0x26 + b _021E5EEA +_021E5EE8: + mov r1, #0x27 +_021E5EEA: + add r0, r4, #0 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5F04 +MOD14_021E5F04: ; 0x021E5F04 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r5, r4, #0 + add r5, #0x74 + bl MOD14_021DC538 + add r6, r0, #0 + add r0, r4, #0 + bl MOD14_021DC430 + add r4, r0, #0 + add r0, r5, #0 + bl MOD14_021E612C + add r0, r5, #0 + mov r1, #1 + add r0, #0x23 + strb r1, [r0] + cmp r6, #0 + beq _021E5F54 + cmp r4, #0 + beq _021E5F3A + add r0, r5, #0 + mov r1, #0x31 + bl MOD14_021E613C + b _021E5F42 +_021E5F3A: + add r0, r5, #0 + mov r1, #0x2e + bl MOD14_021E613C +_021E5F42: + add r0, r5, #0 + mov r1, #0x32 + bl MOD14_021E613C + add r0, r5, #0 + mov r1, #0x30 + bl MOD14_021E613C + b _021E5F7A +_021E5F54: + cmp r4, #0 + beq _021E5F72 + add r0, r5, #0 + mov r1, #0x2f + bl MOD14_021E613C + add r0, r5, #0 + mov r1, #0x32 + bl MOD14_021E613C + add r0, r5, #0 + mov r1, #0x30 + bl MOD14_021E613C + b _021E5F7A +_021E5F72: + add r0, r5, #0 + mov r1, #0x2e + bl MOD14_021E613C +_021E5F7A: + add r0, r5, #0 + mov r1, #0x33 + bl MOD14_021E613C + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E5F84 +MOD14_021E5F84: ; 0x021E5F84 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x74 + bl MOD14_021DC44C + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E613C + add r0, r5, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021E5FB8 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #2 + bl MOD14_021E613C +_021E5FB8: + add r0, r4, #0 + mov r1, #3 + bl MOD14_021E613C + mov r0, #2 + add r4, #0x23 + strb r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E5FC8 +MOD14_021E5FC8: ; 0x021E5FC8 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r4, #0x74 + add r5, r1, #0 + bl MOD14_021DC44C + add r6, r0, #0 + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #4 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #5 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #6 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #7 + bl MOD14_021E613C + add r0, r6, #0 + bl FUN_0206B668 + add r6, r0, #0 + beq _021E600E + add r0, r4, #0 + mov r1, #8 + bl MOD14_021E613C +_021E600E: + cmp r6, #4 + bls _021E601A + add r0, r4, #0 + mov r1, #9 + bl MOD14_021E613C +_021E601A: + add r0, r4, #0 + mov r1, #3 + add r0, #0x23 + strb r1, [r0] + cmp r5, #4 + blt _021E6032 + cmp r5, #9 + bgt _021E6032 + sub r0, r5, #4 + add r4, #0x20 + strb r0, [r4] + pop {r4, r5, r6, pc} +_021E6032: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E6038 +MOD14_021E6038: ; 0x021E6038 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r6, #0x74 + add r5, r1, #0 + bl MOD14_021DC44C + str r0, [sp] + add r0, r6, #0 + bl MOD14_021E612C + cmp r5, #4 + blt _021E6070 + cmp r5, #7 + bgt _021E6070 + sub r0, r5, #4 + ldr r1, _021E60B0 ; =0x021E69A8 + lsl r0, r0, #3 + mov r5, #0 + add r4, r1, r0 +_021E605E: + ldrh r1, [r4] + add r0, r6, #0 + bl MOD14_021E613C + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _021E605E + b _021E60A6 +_021E6070: + mov r4, #0 + add r7, r4, #0 + cmp r5, #9 + bne _021E607A + mov r4, #4 +_021E607A: + mov r5, #0 +_021E607C: + ldr r0, [sp] + add r1, r5, #0 + bl FUN_0206B644 + cmp r0, #0 + beq _021E60A0 + cmp r4, #0 + beq _021E6090 + sub r4, r4, #1 + b _021E60A0 +_021E6090: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x1a + bl MOD14_021E613C + add r7, r7, #1 + cmp r7, #4 + bge _021E60A6 +_021E60A0: + add r5, r5, #1 + cmp r5, #8 + blt _021E607C +_021E60A6: + mov r0, #3 + add r6, #0x23 + strb r0, [r6] + pop {r3, r4, r5, r6, r7, pc} + nop +_021E60B0: .word 0x021E69A8 + + thumb_func_start MOD14_021E60B4 +MOD14_021E60B4: ; 0x021E60B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x74 + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #4 + add r0, #0x23 + strb r1, [r0] + add r5, #0x57 + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x22 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0x38 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x39 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3b + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3c + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3d + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2c + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2d + bl MOD14_021E613C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E6118 +MOD14_021E6118: ; 0x021E6118 + add r2, r0, #0 + add r2, #0x96 + ldrb r3, [r2] + mov r2, #1 + lsl r2, r1 + add r1, r3, #0 + eor r1, r2 + add r0, #0x96 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021E612C +MOD14_021E612C: ; 0x021E612C + add r1, r0, #0 + mov r2, #0 + add r1, #0x21 + strb r2, [r1] + add r0, #0x20 + strb r2, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E613C +MOD14_021E613C: ; 0x021E613C + push {r3, r4} + add r2, r0, #0 + add r2, #0x21 + ldrb r4, [r2] + cmp r4, #8 + bhs _021E615A + add r2, r0, #0 + add r2, #0x21 + ldrb r2, [r2] + add r3, r2, #1 + add r2, r0, #0 + add r2, #0x21 + strb r3, [r2] + lsl r2, r4, #2 + str r1, [r0, r2] +_021E615A: + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E6160 +MOD14_021E6160: ; 0x021E6160 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _021E6208 ; =0x021C48B8 + add r4, #0x74 + ldr r1, [r0, #0x48] + mov r0, #0x40 + add r2, r1, #0 + tst r2, r0 + beq _021E61A0 + add r2, r4, #0 + add r2, #0x20 + ldrb r2, [r2] + cmp r2, #0 + beq _021E618C + add r1, r4, #0 + add r1, #0x20 + ldrb r1, [r1] + add r4, #0x20 + sub r0, #0x42 + sub r1, r1, #1 + strb r1, [r4] + pop {r3, r4, r5, pc} +_021E618C: + add r2, r4, #0 + add r2, #0x21 + ldrb r2, [r2] + cmp r2, #3 + blo _021E61A0 + sub r1, r2, #1 + add r4, #0x20 + strb r1, [r4] + sub r0, #0x42 + pop {r3, r4, r5, pc} +_021E61A0: + mov r0, #0x80 + add r2, r1, #0 + tst r2, r0 + beq _021E61D8 + add r2, r4, #0 + add r2, #0x21 + ldrb r5, [r2] + add r2, r4, #0 + add r2, #0x20 + ldrb r3, [r2] + sub r2, r5, #1 + cmp r3, r2 + bge _021E61CA + add r1, r4, #0 + add r1, #0x20 + ldrb r1, [r1] + add r4, #0x20 + sub r0, #0x82 + add r1, r1, #1 + strb r1, [r4] + pop {r3, r4, r5, pc} +_021E61CA: + cmp r5, #3 + blo _021E61D8 + mov r0, #0 + add r4, #0x20 + strb r0, [r4] + sub r0, r0, #2 + pop {r3, r4, r5, pc} +_021E61D8: + mov r0, #2 + tst r0, r1 + beq _021E61EA + ldr r0, _021E620C ; =0x000005DD + bl FUN_020054C8 + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, pc} +_021E61EA: + mov r0, #1 + tst r1, r0 + beq _021E6202 + ldr r0, _021E620C ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + lsl r0, r0, #2 + ldr r0, [r4, r0] + pop {r3, r4, r5, pc} +_021E6202: + sub r0, r0, #4 + pop {r3, r4, r5, pc} + nop +_021E6208: .word 0x021C48B8 +_021E620C: .word 0x000005DD + + thumb_func_start MOD14_021E6210 +MOD14_021E6210: ; 0x021E6210 + add r0, #0x74 + add r1, r0, #0 + add r1, #0x20 + ldrb r1, [r1] + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E6220 +MOD14_021E6220: ; 0x021E6220 + ldr r0, [r0, #0x74] + bx lr + + .section .data + ; 0x021E6224 + .incbin "baserom.nds", 0x236b44, 0x7dc + + .section .bss + ; 0x021E69FC + .space 0x1A0 |