diff options
-rw-r--r-- | arm9/arm9.lcf | 16 | ||||
-rw-r--r-- | arm9/global.inc | 82 | ||||
-rw-r--r-- | arm9/modules/16/asm/module_16.s | 63325 |
3 files changed, 63421 insertions, 2 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 7f8c3d74..1ab91bbb 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -26,7 +26,7 @@ MEMORY { MODULE_13 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_14 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_15 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_16 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_16 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_17 (RWX) : ORIGIN=0, LENGTH=0 MODULE_18 (RWX) : ORIGIN=0, LENGTH=0 MODULE_19 (RWX) : ORIGIN=0, LENGTH=0 @@ -564,7 +564,19 @@ SECTIONS { module_15.o (.bss) } >> MODULE_15 - OVERLAY_FILE(16, 0x237C00, FILE_23BC00.o) + .MODULE.16 : AT (0x237C00) + { + module_16.o (.text) + module_16.o (.sdata) + module_16.o (.data) + } > MODULE_16 + + .MODULE.16.bss : + { + module_16.o (.sbss) + module_16.o (.bss) + } >> MODULE_16 + OVERLAY_FILE(17, 0x260200, FILE_264200.o) OVERLAY_FILE(18, 0x267200, FILE_26B200.o) OVERLAY_FILE(19, 0x27F000, FILE_283000.o) diff --git a/arm9/global.inc b/arm9/global.inc index b86d7345..bb90bd2c 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5029,6 +5029,88 @@ .extern FUN_021EBAE8
.extern FUN_021EBB80
.extern FUN_021EBC60
+.extern FUN_020051EC
+.extern FUN_02006D18
+.extern FUN_020081A8
+.extern FUN_02011938
+.extern FUN_02011A00
+.extern FUN_02013CD4
+.extern FUN_02013D18
+.extern FUN_02013D5C
+.extern FUN_02024594
+.extern FUN_020246DC
+.extern FUN_02024748
+.extern FUN_020247C8
+.extern FUN_0202484C
+.extern FUN_020248BC
+.extern FUN_02024D00
+.extern FUN_02024D58
+.extern FUN_0208A328
+.extern FUN_0208A32C
+.extern FUN_0208A330
+.extern FUN_0208A334
+.extern FUN_020AEAF4
+.extern FUN_020AEC60
+.extern FUN_020AEDF4
+.extern G2x_SetBlendBrightnessExt_
+.extern FUN_02002F90
+.extern FUN_02004C80
+.extern FUN_02004CA4
+.extern FUN_02004CAC
+.extern FUN_02004CB4
+.extern FUN_02004CFC
+.extern FUN_02004D04
+.extern FUN_02004D20
+.extern FUN_02004D4C
+.extern FUN_02004E80
+.extern FUN_02004E8C
+.extern FUN_02004E98
+.extern FUN_02004F28
+.extern FUN_02004F70
+.extern FUN_02007EEC
+.extern FUN_0200955C
+.extern FUN_02011A30
+.extern FUN_02013D98
+.extern FUN_02013DD4
+.extern FUN_02013E14
+.extern FUN_02013E44
+.extern FUN_02013E84
+.extern FUN_02013EB0
+.extern FUN_02013F2C
+.extern FUN_0201AB24
+.extern FUN_0201AF08
+.extern FUN_0201AF50
+.extern FUN_0201BBD0
+.extern FUN_0201BC84
+.extern FUN_020202A8
+.extern FUN_02020300
+.extern FUN_020203CC
+.extern FUN_0206B88C
+.extern FUN_0206B898
+.extern FUN_02087B98
+.extern FUN_02087BB8
+.extern FUN_02087BD8
+.extern FUN_02087BF8
+.extern MOD11_0222FF84
+.extern MOD11_0222FFC8
+.extern MOD11_0223022C
+.extern MOD11_02230270
+.extern MOD11_02243420
+.extern MOD11_02244248
+.extern MOD11_02245D38
+.extern MOD11_02246274
+.extern MOD11_022465A0
+.extern MOD11_02246870
+.extern MOD11_02246B9C
+.extern MOD11_02246D1C
+.extern MOD11_022473F8
+.extern MOD11_022476C0
+.extern MOD11_022482A4
+.extern MOD11_02249D90
+.extern MOD11_02249E04
+.extern MOD11_02249E58
+.extern MOD11_0224B310
+.extern MOD11_0224C12C
.extern FX_DivS32
.extern G2x_ChangeBlendBrightness_
.extern GX_DisableBankForARM7
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s new file mode 100644 index 00000000..8f1060c8 --- /dev/null +++ b/arm9/modules/16/asm/module_16.s @@ -0,0 +1,63325 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD16_021D74E0 +MOD16_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + sub sp, #0x20 + mov r1, #0 + add r5, r0, #0 + mov r0, #0x36 + add r2, r1, #0 + bl FUN_0200433C + mov r2, #1 + mov r0, #3 + mov r1, #0x25 + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #4 + mov r2, #0x25 + bl FUN_02006268 + add r4, r0, #0 + bne _021D750E + bl ErrorHandling +_021D750E: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + mov r0, #8 + mov r1, #0x25 + bl FUN_0201C24C + add r0, r5, #0 + bl FUN_0200628C + add r5, r0, #0 + ldr r0, _021D7584 ; =MOD16_021D7650 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + cmp r0, #1 + beq _021D7546 + bl ErrorHandling +_021D7546: + mov r0, #0x25 + bl MOD16_021D79FC + ldr r0, [r5] + add r1, sp, #0 + str r0, [sp] + ldr r0, [r5, #4] + str r0, [sp, #4] + ldr r0, [r5, #8] + str r0, [sp, #8] + ldr r0, [r5, #0xc] + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + str r0, [sp, #0x18] + ldr r0, [r5, #0x10] + str r0, [sp, #0x10] + ldr r0, [r5, #0x14] + str r0, [sp, #0x14] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x1c] + mov r0, #0x25 + bl MOD16_021D76AC + str r0, [r4] + mov r0, #1 + mov r1, #0x2a + bl FUN_020051EC + mov r0, #1 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7584: .word MOD16_021D7650 + thumb_func_end MOD16_021D74E0 + + thumb_func_start MOD16_021D7588 +MOD16_021D7588: ; 0x021D7588 + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_02006278 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhi _021D7608 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D75A4: ; jump table + .short _021D75AC - _021D75A4 - 2 ; case 0 + .short _021D75C4 - _021D75A4 - 2 ; case 1 + .short _021D75DA - _021D75A4 - 2 ; case 2 + .short _021D75E6 - _021D75A4 - 2 ; case 3 +_021D75AC: + bl MOD16_021D7664 + mov r0, #0xf + mvn r0, r0 + mov r1, #0x3f + mov r2, #3 + bl FUN_0200A274 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7608 +_021D75C4: + ldr r0, [r5] + bl MOD16_021D7804 + cmp r0, #1 + bne _021D7608 + mov r0, #0 + str r0, [r5] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7608 +_021D75DA: + bl MOD16_021D7684 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7608 +_021D75E6: + bl MOD16_021D76A4 + cmp r0, #0 + beq _021D7608 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + ldr r0, _021D760C ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _021D7610 ; =0x04001050 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7608: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D760C: .word 0x04000050 +_021D7610: .word 0x04001050 + thumb_func_end MOD16_021D7588 + + thumb_func_start MOD16_021D7614 +MOD16_021D7614: ; 0x021D7614 + push {r4, lr} + add r4, r0, #0 + bl FUN_02006278 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_0201CD04 + cmp r0, #1 + beq _021D7630 + bl ErrorHandling +_021D7630: + bl MOD16_021D7A10 + bl FUN_0201C29C + add r0, r4, #0 + bl FUN_0200627C + mov r0, #0x25 + bl FUN_020168D0 + mov r0, #1 + mov r1, #0x7f + bl FUN_020051EC + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021D7614 + + thumb_func_start MOD16_021D7650 +MOD16_021D7650: ; 0x021D7650 + push {r3, lr} + ldr r0, [r0] + cmp r0, #0 + beq _021D765C + bl MOD16_021D7A24 +_021D765C: + bl FUN_0201C30C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021D7650 + + thumb_func_start MOD16_021D7664 +MOD16_021D7664: ; 0x021D7664 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x25 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + .align 2, 0 + thumb_func_end MOD16_021D7664 + + thumb_func_start MOD16_021D7684 +MOD16_021D7684: ; 0x021D7684 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x25 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + thumb_func_end MOD16_021D7684 + + thumb_func_start MOD16_021D76A4 +MOD16_021D76A4: ; 0x021D76A4 + ldr r3, _021D76A8 ; =0x0200E309 + bx r3 + .align 2, 0 +_021D76A8: .word 0x0200E309 + thumb_func_end MOD16_021D76A4 + + thumb_func_start MOD16_021D76AC +MOD16_021D76AC: ; 0x021D76AC + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r1, #0 + ldr r1, _021D77D0 ; =0x00001D10 + add r7, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021D76C2 + bl ErrorHandling +_021D76C2: + ldr r2, _021D77D0 ; =0x00001D10 + add r0, r4, #0 + mov r1, #0 + blx Call_FillMemWithValue + str r7, [r4, #4] + ldr r0, [r5, #0x1c] + str r0, [r4, #8] + add r0, r7, #0 + bl MOD16_021DA858 + ldr r1, _021D77D4 ; =0x00001A0C + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA858 + ldr r1, _021D77D8 ; =0x00001A10 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA858 + ldr r1, _021D77DC ; =0x00001A14 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA858 + ldr r1, _021D77E0 ; =0x00001A18 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA5FC + mov r1, #0x1d + lsl r1, r1, #8 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA5FC + ldr r1, _021D77E4 ; =0x00001D04 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA5FC + ldr r1, _021D77E8 ; =0x00001D08 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA5FC + ldr r1, _021D77EC ; =0x00001D0C + str r0, [r4, r1] + ldr r0, [r5] + str r0, [sp, #8] + ldr r0, [r5, #4] + str r0, [sp, #0xc] + ldr r0, [r5, #8] + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + str r0, [sp, #0x14] + ldr r0, [r5, #0x10] + str r0, [sp, #0x18] + ldr r0, [r5, #0x14] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x18] + str r0, [sp, #0x20] + ldr r0, [r5, #0x1c] + bl FUN_0208A328 + str r0, [sp, #0x24] + ldr r0, [r5, #0x1c] + bl FUN_0208A330 + str r0, [sp, #0x28] + add r0, r4, #0 + add r0, #0xc + add r1, sp, #8 + add r2, r7, #0 + bl MOD16_021D9798 + ldr r0, _021D77F0 ; =0x0000177C + add r1, r7, #0 + add r0, r4, r0 + bl MOD16_021D8534 + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021D77F4 ; =0x00001A30 + ldr r5, _021D77F8 ; =0x021FF418 + add r6, r4, r0 +_021D7770: + ldr r3, [r5] + cmp r3, #0 + beq _021D777E + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + blx r3 +_021D777E: + ldr r0, [sp, #4] + add r5, r5, #4 + add r0, r0, #1 + add r6, #0x28 + str r0, [sp, #4] + cmp r0, #0xa + blt _021D7770 + mov r0, #0 + str r0, [sp] + mov r0, #0x6f + lsl r0, r0, #6 + ldr r5, _021D77FC ; =0x021FF3D8 + add r6, r4, r0 +_021D7798: + ldr r3, [r5] + cmp r3, #0 + beq _021D77A6 + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + blx r3 +_021D77A6: + ldr r0, [sp] + add r5, r5, #4 + add r0, r0, #1 + add r6, #0x28 + str r0, [sp] + cmp r0, #8 + blt _021D7798 + ldr r1, _021D7800 ; =0x00001A1C + add r0, r7, #0 + add r1, r4, r1 + add r2, r4, #0 + mov r3, #1 + bl MOD16_021DAE0C + add r0, r4, #0 + bl MOD16_021D847C + add r0, r4, #0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021D77D0: .word 0x00001D10 +_021D77D4: .word 0x00001A0C +_021D77D8: .word 0x00001A10 +_021D77DC: .word 0x00001A14 +_021D77E0: .word 0x00001A18 +_021D77E4: .word 0x00001D04 +_021D77E8: .word 0x00001D08 +_021D77EC: .word 0x00001D0C +_021D77F0: .word 0x0000177C +_021D77F4: .word 0x00001A30 +_021D77F8: .word 0x021FF418 +_021D77FC: .word 0x021FF3D8 +_021D7800: .word 0x00001A1C + thumb_func_end MOD16_021D76AC + + thumb_func_start MOD16_021D7804 +MOD16_021D7804: ; 0x021D7804 + push {r4, lr} + add r4, r0, #0 + bne _021D780E + bl ErrorHandling +_021D780E: + add r0, r4, #0 + add r0, #0xc + bl MOD16_021D9F8C + ldr r0, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7872 + ldr r0, _021D79DC ; =0x00001A0C + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7872 + ldr r0, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7872 + ldr r0, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7872 + ldr r0, _021D79E8 ; =0x00001D08 + mov r1, #0 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + ldr r0, _021D79EC ; =0x00001D0C + mov r1, #0 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD16_021DA7B0 + ldr r0, _021D79F0 ; =0x00001D04 + mov r1, #0 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + b _021D789C +_021D7872: + ldr r0, _021D79E8 ; =0x00001D08 + mov r1, #1 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + ldr r0, _021D79EC ; =0x00001D0C + mov r1, #1 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD16_021DA7B0 + ldr r0, _021D79F0 ; =0x00001D04 + mov r1, #1 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 +_021D789C: + ldr r0, _021D79E8 ; =0x00001D08 + ldr r0, [r4, r0] + bl MOD16_021DA694 + ldr r0, _021D79EC ; =0x00001D0C + ldr r0, [r4, r0] + bl MOD16_021DA694 + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl MOD16_021DA694 + ldr r0, _021D79F0 ; =0x00001D04 + ldr r0, [r4, r0] + bl MOD16_021DA694 + ldr r0, _021D79E8 ; =0x00001D08 + ldr r0, [r4, r0] + bl MOD16_021DA71C + ldr r0, _021D79EC ; =0x00001D0C + ldr r0, [r4, r0] + bl MOD16_021DA71C + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl MOD16_021DA71C + ldr r0, _021D79F0 ; =0x00001D04 + ldr r0, [r4, r0] + bl MOD16_021DA71C + ldr r0, _021D79DC ; =0x00001A0C + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7910 + ldr r0, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7910 + ldr r0, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7910 + ldr r1, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r1] + sub r1, #0x10 + ldr r1, [r4, r1] + bl MOD16_021DA8A0 +_021D7910: + ldr r0, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7940 + ldr r0, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7940 + ldr r0, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7940 + ldr r1, _021D79DC ; =0x00001A0C + ldr r0, [r4, r1] + sub r1, #0x10 + ldr r1, [r4, r1] + bl MOD16_021DA8A0 +_021D7940: + ldr r0, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7970 + ldr r0, _021D79DC ; =0x00001A0C + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7970 + ldr r0, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7970 + ldr r1, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r1] + sub r1, #0x10 + ldr r1, [r4, r1] + bl MOD16_021DA8A0 +_021D7970: + ldr r0, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D79A0 + ldr r0, _021D79DC ; =0x00001A0C + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D79A0 + ldr r0, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D79A0 + ldr r1, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r1] + sub r1, #0x10 + ldr r1, [r4, r1] + bl MOD16_021DA8A0 +_021D79A0: + bl FUN_020222AC + ldr r0, _021D79F4 ; =0x0000177C + add r0, r4, r0 + bl MOD16_021D86B4 + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 + ldr r1, _021D79F8 ; =0x00001A04 + mov r0, #0 + str r0, [r4, r1] + add r2, r1, #4 + str r0, [r4, r2] + add r2, r1, #0 + sub r2, #8 + str r0, [r4, r2] + sub r1, r1, #4 + str r0, [r4, r1] + ldr r1, [r4] + cmp r1, #1 + bne _021D79D6 + add r0, r4, #0 + bl MOD16_021D8298 + mov r0, #1 +_021D79D6: + pop {r4, pc} + .align 2, 0 +_021D79D8: .word 0x00001A14 +_021D79DC: .word 0x00001A0C +_021D79E0: .word 0x00001A18 +_021D79E4: .word 0x00001A10 +_021D79E8: .word 0x00001D08 +_021D79EC: .word 0x00001D0C +_021D79F0: .word 0x00001D04 +_021D79F4: .word 0x0000177C +_021D79F8: .word 0x00001A04 + thumb_func_end MOD16_021D7804 + + thumb_func_start MOD16_021D79FC +MOD16_021D79FC: ; 0x021D79FC + push {r4, lr} + add r4, r0, #0 + bl MOD16_021D8404 + add r0, r4, #0 + bl MOD16_021D8424 + bl MOD16_021D84A0 + pop {r4, pc} + thumb_func_end MOD16_021D79FC + + thumb_func_start MOD16_021D7A10 +MOD16_021D7A10: ; 0x021D7A10 + push {r3, lr} + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + bl MOD16_021D8514 + pop {r3, pc} + thumb_func_end MOD16_021D7A10 + + thumb_func_start MOD16_021D7A24 +MOD16_021D7A24: ; 0x021D7A24 + push {r3, lr} + ldr r1, _021D7A34 ; =0x0000177C + add r0, r0, r1 + bl MOD16_021D86DC + bl FUN_02009F80 + pop {r3, pc} + .align 2, 0 +_021D7A34: .word 0x0000177C + thumb_func_end MOD16_021D7A24 + + thumb_func_start MOD16_021D7A38 +MOD16_021D7A38: ; 0x021D7A38 + push {r4, lr} + add r4, r0, #0 + bne _021D7A42 + bl ErrorHandling +_021D7A42: + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D7A38 + + thumb_func_start MOD16_021D7A4C +MOD16_021D7A4C: ; 0x021D7A4C + push {r4, lr} + add r4, r0, #0 + bne _021D7A56 + bl ErrorHandling +_021D7A56: + ldr r0, _021D7A5C ; =0x00001D04 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7A5C: .word 0x00001D04 + thumb_func_end MOD16_021D7A4C + + thumb_func_start MOD16_021D7A60 +MOD16_021D7A60: ; 0x021D7A60 + push {r4, lr} + add r4, r0, #0 + bne _021D7A6A + bl ErrorHandling +_021D7A6A: + ldr r0, _021D7A70 ; =0x00001D08 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7A70: .word 0x00001D08 + thumb_func_end MOD16_021D7A60 + + thumb_func_start MOD16_021D7A74 +MOD16_021D7A74: ; 0x021D7A74 + push {r4, lr} + add r4, r0, #0 + bne _021D7A7E + bl ErrorHandling +_021D7A7E: + ldr r0, _021D7A84 ; =0x00001D0C + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7A84: .word 0x00001D0C + thumb_func_end MOD16_021D7A74 + + thumb_func_start MOD16_021D7A88 +MOD16_021D7A88: ; 0x021D7A88 + push {r4, lr} + add r4, r0, #0 + bne _021D7A92 + bl ErrorHandling +_021D7A92: + ldr r0, _021D7A98 ; =0x00001A0C + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7A98: .word 0x00001A0C + thumb_func_end MOD16_021D7A88 + + thumb_func_start MOD16_021D7A9C +MOD16_021D7A9C: ; 0x021D7A9C + push {r4, lr} + add r4, r0, #0 + bne _021D7AA6 + bl ErrorHandling +_021D7AA6: + ldr r0, _021D7AAC ; =0x00001A10 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7AAC: .word 0x00001A10 + thumb_func_end MOD16_021D7A9C + + thumb_func_start MOD16_021D7AB0 +MOD16_021D7AB0: ; 0x021D7AB0 + push {r4, lr} + add r4, r0, #0 + bne _021D7ABA + bl ErrorHandling +_021D7ABA: + ldr r0, _021D7AC0 ; =0x00001A14 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7AC0: .word 0x00001A14 + thumb_func_end MOD16_021D7AB0 + + thumb_func_start MOD16_021D7AC4 +MOD16_021D7AC4: ; 0x021D7AC4 + push {r4, lr} + add r4, r0, #0 + bne _021D7ACE + bl ErrorHandling +_021D7ACE: + ldr r0, _021D7AD4 ; =0x00001A18 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7AD4: .word 0x00001A18 + thumb_func_end MOD16_021D7AC4 + + thumb_func_start MOD16_021D7AD8 +MOD16_021D7AD8: ; 0x021D7AD8 + push {r4, lr} + add r4, r0, #0 + bne _021D7AE2 + bl ErrorHandling +_021D7AE2: + ldr r0, _021D7AE8 ; =0x000019FC + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 +_021D7AE8: .word 0x000019FC + thumb_func_end MOD16_021D7AD8 + + thumb_func_start MOD16_021D7AEC +MOD16_021D7AEC: ; 0x021D7AEC + push {r4, lr} + add r4, r0, #0 + bne _021D7AF6 + bl ErrorHandling +_021D7AF6: + mov r0, #0x1a + lsl r0, r0, #8 + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D7AEC + + thumb_func_start MOD16_021D7B00 +MOD16_021D7B00: ; 0x021D7B00 + push {r4, lr} + add r4, r0, #0 + bne _021D7B0A + bl ErrorHandling +_021D7B0A: + ldr r0, _021D7B10 ; =0x00001A04 + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 +_021D7B10: .word 0x00001A04 + thumb_func_end MOD16_021D7B00 + + thumb_func_start MOD16_021D7B14 +MOD16_021D7B14: ; 0x021D7B14 + push {r4, lr} + add r4, r0, #0 + bne _021D7B1E + bl ErrorHandling +_021D7B1E: + ldr r0, _021D7B24 ; =0x00001A08 + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 +_021D7B24: .word 0x00001A08 + thumb_func_end MOD16_021D7B14 + + thumb_func_start MOD16_021D7B28 +MOD16_021D7B28: ; 0x021D7B28 + push {r4, lr} + add r4, r0, #0 + bne _021D7B32 + bl ErrorHandling +_021D7B32: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D7B28 + + thumb_func_start MOD16_021D7B38 +MOD16_021D7B38: ; 0x021D7B38 + push {r4, lr} + add r4, r0, #0 + bne _021D7B42 + bl ErrorHandling +_021D7B42: + add r4, #0xc + add r0, r4, #0 + pop {r4, pc} + thumb_func_end MOD16_021D7B38 + + thumb_func_start MOD16_021D7B48 +MOD16_021D7B48: ; 0x021D7B48 + push {r4, lr} + add r4, r0, #0 + bne _021D7B52 + bl ErrorHandling +_021D7B52: + ldr r0, _021D7B58 ; =0x0000177C + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 +_021D7B58: .word 0x0000177C + thumb_func_end MOD16_021D7B48 + + thumb_func_start MOD16_021D7B5C +MOD16_021D7B5C: ; 0x021D7B5C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0xa + blt _021D7B6A + bl ErrorHandling +_021D7B6A: + ldr r0, _021D7B78 ; =0x00001A30 + add r1, r5, r0 + mov r0, #0x28 + mul r0, r4 + add r0, r1, r0 + pop {r3, r4, r5, pc} + nop +_021D7B78: .word 0x00001A30 + thumb_func_end MOD16_021D7B5C + + thumb_func_start MOD16_021D7B7C +MOD16_021D7B7C: ; 0x021D7B7C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #8 + blt _021D7B8A + bl ErrorHandling +_021D7B8A: + mov r0, #0x6f + lsl r0, r0, #6 + add r1, r5, r0 + mov r0, #0x28 + mul r0, r4 + add r0, r1, r0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D7B7C + + thumb_func_start MOD16_021D7B98 +MOD16_021D7B98: ; 0x021D7B98 + push {r4, lr} + add r4, r0, #0 + cmp r1, #4 + bhi _021D7BDE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7BAC: ; jump table + .short _021D7BB6 - _021D7BAC - 2 ; case 0 + .short _021D7BC6 - _021D7BAC - 2 ; case 1 + .short _021D7BBE - _021D7BAC - 2 ; case 2 + .short _021D7BCE - _021D7BAC - 2 ; case 3 + .short _021D7BCE - _021D7BAC - 2 ; case 4 +_021D7BB6: + mov r1, #1 + bl FUN_02020208 + pop {r4, pc} +_021D7BBE: + mov r1, #2 + bl FUN_02020208 + pop {r4, pc} +_021D7BC6: + mov r1, #3 + bl FUN_02020208 + pop {r4, pc} +_021D7BCE: + bl FUN_0202022C + cmp r0, #0 + beq _021D7BDE + ldr r1, _021D7BE0 ; =0xFFFFE000 + add r0, r4, #0 + bl FUN_020201E4 +_021D7BDE: + pop {r4, pc} + .align 2, 0 +_021D7BE0: .word 0xFFFFE000 + thumb_func_end MOD16_021D7B98 + + thumb_func_start MOD16_021D7BE4 +MOD16_021D7BE4: ; 0x021D7BE4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r2, #0 + bl FUN_0202022C + cmp r0, #3 + bhi _021D7C6C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7C00: ; jump table + .short _021D7C08 - _021D7C00 - 2 ; case 0 + .short _021D7C22 - _021D7C00 - 2 ; case 1 + .short _021D7C3C - _021D7C00 - 2 ; case 2 + .short _021D7C56 - _021D7C00 - 2 ; case 3 +_021D7C08: + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020119A4 + str r5, [sp] + ldr r0, [r4] + ldr r1, [sp, #4] + add r2, r5, #0 + bl FUN_020118C4 + add sp, #8 + pop {r3, r4, r5, pc} +_021D7C22: + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020119A4 + sub r2, r5, #2 + str r2, [sp] + ldr r0, [r4] + ldr r1, [sp, #4] + bl FUN_020118C4 + add sp, #8 + pop {r3, r4, r5, pc} +_021D7C3C: + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020119A4 + sub r2, r5, #4 + str r2, [sp] + ldr r0, [r4] + ldr r1, [sp, #4] + bl FUN_020118C4 + add sp, #8 + pop {r3, r4, r5, pc} +_021D7C56: + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020119A4 + sub r2, r5, #2 + str r2, [sp] + ldr r0, [r4] + ldr r1, [sp, #4] + bl FUN_020118C4 +_021D7C6C: + add sp, #8 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D7BE4 + + thumb_func_start MOD16_021D7C70 +MOD16_021D7C70: ; 0x021D7C70 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + bl MOD16_021D7BE4 + add r0, r5, #0 + bl FUN_0202022C + cmp r0, #2 + ldr r0, [r4] + bge _021D7C90 + add r1, r6, #0 + bl FUN_02011AC0 + pop {r4, r5, r6, pc} +_021D7C90: + ldr r1, [sp, #0x10] + bl FUN_02011AC0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021D7C70 + + thumb_func_start MOD16_021D7C98 +MOD16_021D7C98: ; 0x021D7C98 + strb r1, [r0] + strb r2, [r0, #1] + ldr r1, [sp] + strb r3, [r0, #2] + strb r1, [r0, #3] + bx lr + thumb_func_end MOD16_021D7C98 + + thumb_func_start MOD16_021D7CA4 +MOD16_021D7CA4: ; 0x021D7CA4 + str r1, [r0] + str r2, [r0, #8] + ldr r2, [sp] + ldr r1, [sp, #4] + str r3, [r0, #4] + str r2, [r0, #0xc] + sub r1, r1, r2 + str r1, [r0, #0x14] + ldr r2, [sp, #8] + ldr r1, [sp, #0xc] + str r2, [r0, #0x10] + sub r1, r1, r2 + str r1, [r0, #0x18] + ldr r1, [sp, #0x10] + str r1, [r0, #0x20] + mov r1, #0 + str r1, [r0, #0x1c] + bx lr + thumb_func_end MOD16_021D7CA4 + + thumb_func_start MOD16_021D7CC8 +MOD16_021D7CC8: ; 0x021D7CC8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x20] + cmp r1, r0 + bgt _021D7D94 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r1, [r5, #8] + ldr r0, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_02018540 + ldr r1, [r5, #0x14] + ldr r6, [r5, #0x1c] + add r0, r1, #0 + ldr r4, [r5, #0x20] + mul r0, r6 + add r1, r4, #0 + blx _s32_div_f + ldr r1, [r5, #0x18] + add r7, r0, #0 + add r0, r1, #0 + mul r0, r6 + add r1, r4, #0 + blx _s32_div_f + ldr r1, [r5, #0xc] + ldr r2, [r5, #0x10] + add r1, r7, r1 + add r4, r0, r2 + cmp r1, #0 + ble _021D7D4C + mov r0, #0x20 + lsl r2, r1, #0x18 + str r0, [sp] + lsr r2, r2, #0x18 + str r2, [sp, #4] + ldr r2, [r5, #4] + sub r1, r0, r1 + add r2, #0xc + str r2, [sp, #8] + mov r2, #0 + lsl r1, r1, #0x18 + str r2, [sp, #0xc] + lsr r1, r1, #0x18 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r1, [r5, #8] + ldr r0, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_02018170 +_021D7D4C: + mov r0, #0x20 + sub r3, r0, r4 + cmp r3, #0 + ble _021D7D7C + lsl r1, r4, #0x18 + str r0, [sp] + lsr r1, r1, #0x18 + str r1, [sp, #4] + ldr r1, [r5, #4] + mov r2, #0 + add r1, #0xc + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r1, [r5, #8] + lsl r3, r3, #0x18 + lsl r1, r1, #0x18 + ldr r0, [r5] + lsr r1, r1, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018170 +_021D7D7C: + ldr r1, [r5, #8] + ldr r0, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201AC68 + ldr r0, [r5, #0x1c] + add sp, #0x1c + add r0, r0, #1 + str r0, [r5, #0x1c] + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D7D94: + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D7CC8 + + thumb_func_start MOD16_021D7D9C +MOD16_021D7D9C: ; 0x021D7D9C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + add r1, r3, #0 + add r7, r2, #0 + str r3, [sp, #0x10] + bl FUN_020219F4 + mov r1, #1 + str r1, [sp] + add r1, r6, #0 + mov r2, #3 + mov r3, #2 + add r4, r0, #0 + bl FUN_02021B04 + ldr r2, [sp, #0x10] + add r0, r7, #0 + mov r1, #2 + bl MOD16_021DBBC8 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7E10 ; =0x00030201 + add r2, r4, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #2 + mov r3, #0x16 + bl FUN_0201BDE0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7E10 ; =0x00030201 + add r2, r6, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #2 + mov r3, #0x31 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl MOD16_021DBBAC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7E10: .word 0x00030201 + thumb_func_end MOD16_021D7D9C + + thumb_func_start MOD16_021D7E14 +MOD16_021D7E14: ; 0x021D7E14 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021D9D04 + cmp r0, #0 + bne _021D7E36 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021D7E68 + pop {r4, r5, r6, pc} +_021D7E36: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021D7E48 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021D7E14 + + thumb_func_start MOD16_021D7E48 +MOD16_021D7E48: ; 0x021D7E48 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + mov r1, #0xf + mov r2, #2 + bl MOD16_021DB388 + add r1, r6, #0 + add r2, r6, #0 + add r3, r5, #0 + add r4, r0, #0 + bl MOD16_021D7D9C + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021D7E48 + + thumb_func_start MOD16_021D7E68 +MOD16_021D7E68: ; 0x021D7E68 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r4, r0, #0 + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + add r5, r1, #0 + bl FUN_02069B40 + add r7, r0, #0 + cmp r7, #0 + bgt _021D7E82 + bl ErrorHandling +_021D7E82: + add r0, r4, #0 + mov r1, #0xf + mov r2, #2 + bl MOD16_021DB388 + add r1, r7, #0 + add r2, r6, #0 + add r3, r5, #0 + add r4, r0, #0 + bl MOD16_021D7D9C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D7E68 + + thumb_func_start MOD16_021D7E9C +MOD16_021D7E9C: ; 0x021D7E9C + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r7, r1, #0 + add r5, r0, #0 + add r4, r3, #0 + add r0, r7, #0 + str r2, [sp, #4] + bl MOD16_021D9D04 + str r0, [sp, #8] + add r0, r7, #0 + add r1, r4, #0 + bl MOD16_021D9E08 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021D8838 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021D8854 + str r0, [sp, #0xc] + ldr r0, [sp, #0x58] + add r1, sp, #0x10 + str r0, [sp, #0x10] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x14] + add r0, r6, #0 + bl FUN_02020044 + add r0, r6, #0 + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #4] + cmp r0, #2 + bne _021D7F08 + mov r0, #0x36 + ldr r1, [sp, #0x58] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x5c] + add r1, sp, #0x10 + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + bl FUN_02020044 + ldr r0, [sp, #0xc] + mov r1, #1 + bl FUN_020200A0 + b _021D7F10 +_021D7F08: + ldr r0, [sp, #0xc] + mov r1, #0 + bl FUN_020200A0 +_021D7F10: + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D88D4 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r5, r1] + str r1, [sp, #0x1c] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0x24] + mov r0, #0x3f + mvn r0, r0 + str r0, [sp, #0x2c] + add r0, #0x38 + str r0, [sp, #0x30] + mov r0, #0 + str r0, [sp, #0x34] + str r0, [sp, #0x38] + mov r0, #1 + str r0, [sp, #0x3c] + ldr r0, [sp, #4] + str r6, [sp, #0x28] + str r0, [sp, #0x40] + ldr r2, [sp, #4] + ldr r3, [r4] + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021D7E14 + add r6, r0, #0 + ldr r0, [sp, #8] + str r6, [sp, #0x20] + str r0, [sp] + ldr r3, [r4] + add r0, r5, #0 + add r1, sp, #0x1c + mov r2, #0 + bl MOD16_021D8870 + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D7E9C + + thumb_func_start MOD16_021D7F6C +MOD16_021D7F6C: ; 0x021D7F6C + mov r3, #0x6d + lsl r3, r3, #2 + add r0, r0, r3 + ldr r3, _021D7F78 ; =MOD16_021D7F7C + bx r3 + nop +_021D7F78: .word MOD16_021D7F7C + thumb_func_end MOD16_021D7F6C + + thumb_func_start MOD16_021D7F7C +MOD16_021D7F7C: ; 0x021D7F7C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + lsl r0, r1, #0xc + str r0, [sp] + lsl r0, r2, #0xc + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0x36 + ldr r1, [sp] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #4] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #8] + ldr r0, [r0] + cmp r0, #0 + beq _021D7FB0 + bl FUN_02011938 +_021D7FB0: + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD16_021D7F7C + + thumb_func_start MOD16_021D7FB4 +MOD16_021D7FB4: ; 0x021D7FB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [sp, #0x28] + ldr r5, [sp, #0x2c] + cmp r2, #0xc9 + bne _021D7FD4 + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D80CC + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D7FD4: + mov r7, #0x67 + lsl r7, r7, #2 + cmp r2, r7 + bne _021D7FF0 + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D81A0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D7FF0: + add r4, r7, #1 + cmp r2, r4 + bne _021D800A + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D81E4 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D800A: + add r4, r7, #0 + add r4, #0xa + cmp r2, r4 + bne _021D8026 + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D8110 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D8026: + add r4, r7, #0 + add r4, #0xb + cmp r2, r4 + bne _021D8042 + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D8158 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D8042: + sub r7, #0x1a + cmp r2, r7 + bne _021D805C + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D822C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D805C: + str r6, [sp] + str r5, [sp, #4] + mov r4, #0 + str r4, [sp, #8] + str r4, [sp, #0xc] + bl MOD16_021D8070 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D7FB4 + + thumb_func_start MOD16_021D8070 +MOD16_021D8070: ; 0x021D8070 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r0, #0 + ldr r0, _021D80C8 ; =0x00000147 + add r5, r2, #0 + add r6, r1, #0 + mov r4, #0 + str r3, [sp, #0x18] + cmp r5, r0 + bne _021D808C + add r0, r6, #0 + bl MOD16_021D9A30 + add r4, r0, #0 +_021D808C: + ldr r2, [sp, #0x38] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021D98DC + add r6, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _021D80C0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0x30] + str r4, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x18] + str r0, [sp, #0x10] + ldr r0, [sp, #0x3c] + add r1, r5, #0 + str r0, [sp, #0x14] + add r0, r7, #0 + add r2, r6, #0 + bl MOD16_021D8718 +_021D80C0: + add r0, r6, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021D80C8: .word 0x00000147 + thumb_func_end MOD16_021D8070 + + thumb_func_start MOD16_021D80CC +MOD16_021D80CC: ; 0x021D80CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D98EC + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D810A + mov r1, #0 + lsl r0, r4, #0x18 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + mov r1, #0xc9 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r2, #2 + add r3, r7, #0 + bl MOD16_021D8718 +_021D810A: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D80CC + + thumb_func_start MOD16_021D8110 +MOD16_021D8110: ; 0x021D8110 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D9904 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D814C + mov r2, #0 + lsl r0, r4, #0x18 + str r2, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + ldr r1, _021D8154 ; =0x000001A6 + str r0, [sp, #0x14] + add r0, r6, #0 + add r3, r7, #0 + bl MOD16_021D8718 +_021D814C: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8154: .word 0x000001A6 + thumb_func_end MOD16_021D8110 + + thumb_func_start MOD16_021D8158 +MOD16_021D8158: ; 0x021D8158 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D991C + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D8194 + mov r2, #0 + lsl r0, r4, #0x18 + str r2, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + ldr r1, _021D819C ; =0x000001A7 + str r0, [sp, #0x14] + add r0, r6, #0 + add r3, r7, #0 + bl MOD16_021D8718 +_021D8194: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D819C: .word 0x000001A7 + thumb_func_end MOD16_021D8158 + + thumb_func_start MOD16_021D81A0 +MOD16_021D81A0: ; 0x021D81A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D9934 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D81DE + mov r2, #0 + lsl r0, r4, #0x18 + str r2, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r2, [sp, #8] + mov r1, #0x67 + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + lsl r1, r1, #2 + str r0, [sp, #0x14] + add r0, r6, #0 + add r3, r7, #0 + bl MOD16_021D8718 +_021D81DE: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D81A0 + + thumb_func_start MOD16_021D81E4 +MOD16_021D81E4: ; 0x021D81E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D994C + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D8222 + mov r1, #0 + lsl r0, r4, #0x18 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + ldr r1, _021D8228 ; =0x0000019D + str r0, [sp, #0x14] + add r0, r6, #0 + mov r2, #1 + add r3, r7, #0 + bl MOD16_021D8718 +_021D8222: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8228: .word 0x0000019D + thumb_func_end MOD16_021D81E4 + + thumb_func_start MOD16_021D822C +MOD16_021D822C: ; 0x021D822C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D9A3C + add r4, r0, #0 + cmp r4, #0xf + beq _021D8266 + mov r1, #0 + lsl r0, r4, #0x18 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + ldr r1, _021D826C ; =0x00000182 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r2, #1 + add r3, r7, #0 + bl MOD16_021D8718 +_021D8266: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D826C: .word 0x00000182 + thumb_func_end MOD16_021D822C + + thumb_func_start MOD16_021D8270 +MOD16_021D8270: ; 0x021D8270 + push {r3, r4, r5, lr} + ldr r2, _021D8294 ; =0x00000266 + add r4, r0, #0 + add r3, r1, #0 + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + add r5, r0, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8294: .word 0x00000266 + thumb_func_end MOD16_021D8270 + + thumb_func_start MOD16_021D8298 +MOD16_021D8298: ; 0x021D8298 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _021D83D4 ; =0x00001A1C + add r0, r6, r0 + bl MOD16_021DAC7C + ldr r0, _021D83D8 ; =0x00001A0C + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D82B0 + bl ErrorHandling +_021D82B0: + ldr r0, _021D83D8 ; =0x00001A0C + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83DC ; =0x00001A10 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D82C4 + bl ErrorHandling +_021D82C4: + ldr r0, _021D83DC ; =0x00001A10 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83E0 ; =0x00001A14 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D82D8 + bl ErrorHandling +_021D82D8: + ldr r0, _021D83E0 ; =0x00001A14 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83E4 ; =0x00001A18 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D82EC + bl ErrorHandling +_021D82EC: + ldr r0, _021D83E4 ; =0x00001A18 + ldr r0, [r6, r0] + bl FUN_02016A18 + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D8302 + bl ErrorHandling +_021D8302: + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83E8 ; =0x00001D04 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D8318 + bl ErrorHandling +_021D8318: + ldr r0, _021D83E8 ; =0x00001D04 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83EC ; =0x00001D08 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D832C + bl ErrorHandling +_021D832C: + ldr r0, _021D83EC ; =0x00001D08 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83F0 ; =0x00001D0C + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D8340 + bl ErrorHandling +_021D8340: + ldr r0, _021D83F0 ; =0x00001D0C + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83F4 ; =0x00001A30 + ldr r4, _021D83F8 ; =0x021FF440 + mov r7, #0 + add r5, r6, r0 +_021D8350: + ldr r1, [r4] + cmp r1, #0 + beq _021D835A + add r0, r5, #0 + blx r1 +_021D835A: + add r7, r7, #1 + add r4, r4, #4 + add r5, #0x28 + cmp r7, #0xa + blt _021D8350 + mov r0, #0x6f + lsl r0, r0, #6 + ldr r4, _021D83FC ; =0x021FF3F8 + mov r7, #0 + add r5, r6, r0 +_021D836E: + ldr r1, [r4] + cmp r1, #0 + beq _021D8378 + add r0, r5, #0 + blx r1 +_021D8378: + add r7, r7, #1 + add r4, r4, #4 + add r5, #0x28 + cmp r7, #8 + blt _021D836E + add r0, r6, #0 + add r0, #0xc + bl MOD16_021D9A6C + add r1, r0, #0 + ldr r0, [r6, #8] + bl FUN_0208A32C + add r0, r6, #0 + add r0, #0xc + mov r1, #1 + bl MOD16_021D9CD0 + cmp r0, #1 + bne _021D83B2 + add r0, r6, #0 + add r0, #0xc + bl MOD16_021D9A84 + add r1, r0, #0 + ldr r0, [r6, #8] + bl FUN_0208A334 + b _021D83BA +_021D83B2: + ldr r0, [r6, #8] + mov r1, #2 + bl FUN_0208A334 +_021D83BA: + add r0, r6, #0 + add r0, #0xc + bl MOD16_021D98B0 + ldr r0, _021D8400 ; =0x0000177C + add r0, r6, r0 + bl MOD16_021D8628 + add r0, r6, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D83D4: .word 0x00001A1C +_021D83D8: .word 0x00001A0C +_021D83DC: .word 0x00001A10 +_021D83E0: .word 0x00001A14 +_021D83E4: .word 0x00001A18 +_021D83E8: .word 0x00001D04 +_021D83EC: .word 0x00001D08 +_021D83F0: .word 0x00001D0C +_021D83F4: .word 0x00001A30 +_021D83F8: .word 0x021FF440 +_021D83FC: .word 0x021FF3F8 +_021D8400: .word 0x0000177C + thumb_func_end MOD16_021D8298 + + thumb_func_start MOD16_021D8404 +MOD16_021D8404: ; 0x021D8404 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D8420 ; =0x021FF468 + add r3, sp, #0 + mov r2, #5 +_021D840E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D840E + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D8420: .word 0x021FF468 + thumb_func_end MOD16_021D8404 + + thumb_func_start MOD16_021D8424 +MOD16_021D8424: ; 0x021D8424 + push {r4, r5, lr} + sub sp, #0x24 + add r4, r0, #0 + blx FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + add r2, r0, #0 + str r4, [sp, #0x10] + bl FUN_02009EAC + ldr r5, _021D8474 ; =0x021FF3C8 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + ldr r1, _021D8478 ; =0x00200010 + mov r2, #0x10 + str r4, [sp, #0x20] + bl FUN_0201D060 + mov r0, #0x20 + add r1, r4, #0 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D8474: .word 0x021FF3C8 +_021D8478: .word 0x00200010 + thumb_func_end MOD16_021D8424 + + thumb_func_start MOD16_021D847C +MOD16_021D847C: ; 0x021D847C + push {r4, lr} + ldr r1, _021D8498 ; =0x00001A0C + add r4, r0, #0 + ldr r0, [r4, r1] + add r1, #0x10 + add r1, r4, r1 + mov r2, #1 + bl MOD16_021DA888 + ldr r0, _021D849C ; =0x000019FC + mov r1, #1 + str r1, [r4, r0] + pop {r4, pc} + nop +_021D8498: .word 0x00001A0C +_021D849C: .word 0x000019FC + thumb_func_end MOD16_021D847C + + thumb_func_start MOD16_021D84A0 +MOD16_021D84A0: ; 0x021D84A0 + push {r3, lr} + blx FUN_020BB7F4 + blx G3X_InitMtxStack + ldr r0, _021D8500 ; =0x04000060 + ldr r2, _021D8504 ; =0xFFFFCFFD + ldrh r1, [r0] + 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, _021D8508 ; =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] + blx G3X_SetClearColor + ldr r1, _021D850C ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _021D8510 ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + blx FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + blx FUN_020AEDF4 + pop {r3, pc} + .align 2, 0 +_021D8500: .word 0x04000060 +_021D8504: .word 0xFFFFCFFD +_021D8508: .word 0x0000CFFB +_021D850C: .word 0x04000540 +_021D8510: .word 0xBFFF0000 + thumb_func_end MOD16_021D84A0 + + thumb_func_start MOD16_021D8514 +MOD16_021D8514: ; 0x021D8514 + push {r3, lr} + blx FUN_020AEAF4 + blx FUN_020AEC60 + pop {r3, pc} + thumb_func_end MOD16_021D8514 + + thumb_func_start MOD16_021D8520 +MOD16_021D8520: ; 0x021D8520 + mov r0, #0x46 + bx lr + thumb_func_end MOD16_021D8520 + + thumb_func_start MOD16_021D8524 +MOD16_021D8524: ; 0x021D8524 + add r0, r0, #3 + bx lr + thumb_func_end MOD16_021D8524 + + thumb_func_start MOD16_021D8528 +MOD16_021D8528: ; 0x021D8528 + mov r0, #0 + bx lr + thumb_func_end MOD16_021D8528 + + thumb_func_start MOD16_021D852C +MOD16_021D852C: ; 0x021D852C + mov r0, #2 + bx lr + thumb_func_end MOD16_021D852C + + thumb_func_start MOD16_021D8530 +MOD16_021D8530: ; 0x021D8530 + mov r0, #1 + bx lr + thumb_func_end MOD16_021D8530 + + thumb_func_start MOD16_021D8534 +MOD16_021D8534: ; 0x021D8534 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r0, #0x45 + add r4, r1, #0 + bl FUN_02006670 + mov r1, #0x9f + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r4, #0 + bl FUN_02016B94 + str r0, [r5] + mov r1, #1 + mov r0, #0 + str r0, [sp, #0x14] + str r1, [sp, #0x10] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + add r0, sp, #0x10 + bl FUN_02016BBC + ldr r0, [r5] + add r1, r4, #0 + bl MOD16_021D8DC0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D8F60 + add r1, r5, #0 + mov r0, #0x80 + add r1, #0x14 + add r2, r4, #0 + bl FUN_02008C9C + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x20 + mov r1, #0 + add r2, r4, #0 + bl FUN_02008DEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r0, #0x20 + mov r1, #1 + add r2, r4, #0 + bl FUN_02008DEC + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x20 + mov r1, #2 + add r2, r4, #0 + bl FUN_02008DEC + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x20 + mov r1, #3 + add r2, r4, #0 + bl FUN_02008DEC + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + str r0, [sp] + ldr r0, [r5] + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + add r0, sp, #0 + str r4, [sp, #0xc] + bl MOD16_021DB228 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #2 + add r1, r4, #0 + bl FUN_02002C50 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D8F9C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D9078 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D921C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D9400 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D94EC + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8534 + + thumb_func_start MOD16_021D8628 +MOD16_021D8628: ; 0x021D8628 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021D92DC + add r0, r4, #0 + bl MOD16_021D91A0 + add r0, r4, #0 + bl MOD16_021D959C + add r0, r4, #0 + bl MOD16_021D94A4 + add r0, r4, #0 + bl MOD16_021D8F90 + ldr r0, [r4] + bl MOD16_021D8F2C + ldr r0, [r4] + bl FUN_02016A18 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FD58 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_02008E2C + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02008E2C + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02008E2C + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02008E2C + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD16_021DB288 + mov r0, #2 + bl FUN_02002CF8 + add r0, r4, #0 + bl MOD16_021D9044 + mov r0, #0x9f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020066F4 + mov r2, #0xa + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #6 + blx Call_FillMemWithValue + pop {r4, pc} + thumb_func_end MOD16_021D8628 + + thumb_func_start MOD16_021D86B4 +MOD16_021D86B4: ; 0x021D86B4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FDEC + blx FUN_020B02C8 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02006ED4 + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02013D5C + pop {r4, pc} + thumb_func_end MOD16_021D86B4 + + thumb_func_start MOD16_021D86DC +MOD16_021D86DC: ; 0x021D86DC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201AB60 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020081C4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D86DC + + thumb_func_start MOD16_021D86F4 +MOD16_021D86F4: ; 0x021D86F4 + push {r3, lr} + mov r3, #0 + bl MOD16_021D87BC + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021D86F4 + + thumb_func_start MOD16_021D8700 +MOD16_021D8700: ; 0x021D8700 + ldr r3, _021D8708 ; =MOD16_021D8804 + mov r1, #0 + bx r3 + nop +_021D8708: .word MOD16_021D8804 + thumb_func_end MOD16_021D8700 + + thumb_func_start MOD16_021D870C +MOD16_021D870C: ; 0x021D870C + ldr r3, _021D8714 ; =MOD16_021D8810 + mov r2, #0 + bx r3 + nop +_021D8714: .word MOD16_021D8810 + thumb_func_end MOD16_021D870C + + thumb_func_start MOD16_021D8718 +MOD16_021D8718: ; 0x021D8718 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r1, #0 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [sp, #0x10] + add r7, r0, r1 + ldr r0, [sp, #0x54] + add r4, r2, #0 + lsl r0, r0, #2 + str r0, [sp, #0x14] + ldr r0, [r7, r0] + add r6, r3, #0 + cmp r0, #0 + beq _021D873A + bl FUN_02007534 +_021D873A: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _021D874E + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + mov r1, #0 + bl FUN_02068A20 + add r4, r0, #0 +_021D874E: + ldr r0, [sp, #0x40] + lsl r1, r5, #0x10 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + add r0, sp, #0x30 + ldrb r0, [r0, #0x14] + lsl r2, r4, #0x18 + lsl r3, r6, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x48] + lsr r1, r1, #0x10 + str r0, [sp, #8] + add r0, sp, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02068C00 + cmp r6, #0 + bne _021D8792 + ldr r0, [sp, #0x48] + lsl r1, r4, #0x18 + str r0, [sp] + add r3, sp, #0x30 + lsl r0, r5, #0x10 + lsl r2, r6, #0x18 + ldrb r3, [r3, #0x14] + lsr r0, r0, #0x10 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl FUN_02068E88 + add r3, r0, #0 + b _021D8794 +_021D8792: + mov r3, #0 +_021D8794: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + mov r1, #0x55 + ldr r4, [sp, #0x50] + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldr r0, [r0, r1] + ldr r2, [sp, #0x4c] + add r1, sp, #0x18 + add r3, r4, r3 + bl FUN_020073A0 + ldr r1, [sp, #0x14] + str r0, [r7, r1] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D8718 + + thumb_func_start MOD16_021D87BC +MOD16_021D87BC: ; 0x021D87BC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x56 + lsl r1, r1, #2 + add r5, r0, r1 + lsl r4, r3, #2 + add r7, r2, #0 + ldr r0, [r5, r4] + mov r1, #0 + add r2, r6, #0 + bl FUN_02007558 + ldr r0, [r5, r4] + mov r1, #1 + add r2, r7, #0 + bl FUN_02007558 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D87BC + + thumb_func_start MOD16_021D87E0 +MOD16_021D87E0: ; 0x021D87E0 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x56 + lsl r1, r1, #2 + add r5, r0, r1 + lsl r4, r3, #2 + ldr r0, [r5, r4] + mov r1, #0 + add r7, r2, #0 + bl FUN_0200782C + str r0, [r6] + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_0200782C + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D87E0 + + thumb_func_start MOD16_021D8804 +MOD16_021D8804: ; 0x021D8804 + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + thumb_func_end MOD16_021D8804 + + thumb_func_start MOD16_021D8810 +MOD16_021D8810: ; 0x021D8810 + push {r3, lr} + lsl r2, r2, #2 + add r2, r0, r2 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r2, r0] + cmp r0, #0 + beq _021D8836 + cmp r1, #1 + bne _021D882E + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + pop {r3, pc} +_021D882E: + mov r1, #6 + mov r2, #1 + bl FUN_02007558 +_021D8836: + pop {r3, pc} + thumb_func_end MOD16_021D8810 + + thumb_func_start MOD16_021D8838 +MOD16_021D8838: ; 0x021D8838 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D884A + bl ErrorHandling +_021D884A: + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D8838 + + thumb_func_start MOD16_021D8854 +MOD16_021D8854: ; 0x021D8854 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D8866 + bl ErrorHandling +_021D8866: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D8854 + + thumb_func_start MOD16_021D8870 +MOD16_021D8870: ; 0x021D8870 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + mov r4, #0x6d + lsl r4, r4, #2 + add r0, r0, r4 + bl MOD16_021D8888 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D8870 + + thumb_func_start MOD16_021D8888 +MOD16_021D8888: ; 0x021D8888 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x28] + add r6, r1, #0 + add r4, r2, #0 + cmp r3, r0 + bne _021D88AA + ldr r1, [sp, #0x10] + ldr r0, [r5, #0x2c] + cmp r1, r0 + bne _021D88AA + ldr r0, [r5, #8] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, r5, r6, pc} +_021D88AA: + ldr r0, [sp, #0x10] + str r3, [r5, #0x28] + str r0, [r5, #0x2c] + ldr r0, [r5, #8] + cmp r0, #0 + beq _021D88BA + bl MOD16_021DB338 +_021D88BA: + cmp r4, #0 + beq _021D88CA + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021DB2D4 + str r0, [r5, #8] + pop {r4, r5, r6, pc} +_021D88CA: + add r0, r6, #0 + bl MOD16_021DB2BC + str r0, [r5, #8] + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021D8888 + + thumb_func_start MOD16_021D88D4 +MOD16_021D88D4: ; 0x021D88D4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #3 + ble _021D88E2 + bl ErrorHandling +_021D88E2: + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r1, r0] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D88D4 + + thumb_func_start MOD16_021D88F0 +MOD16_021D88F0: ; 0x021D88F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl FUN_02020398 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02020398 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D88F0 + + thumb_func_start MOD16_021D891C +MOD16_021D891C: ; 0x021D891C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6d + add r4, r1, #0 + lsl r0, r0, #2 + lsl r1, r4, #0x18 + ldr r0, [r5, r0] + lsr r1, r1, #0x18 + bl FUN_02020238 + mov r0, #0x6e + lsl r0, r0, #2 + lsl r1, r4, #0x18 + ldr r0, [r5, r0] + lsr r1, r1, #0x18 + bl FUN_02020238 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r5, r0] + lsl r1, r4, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_02011A00 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D891C + + thumb_func_start MOD16_021D8950 +MOD16_021D8950: ; 0x021D8950 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + cmp r0, #0 + beq _021D8964 + bl FUN_020200A0 +_021D8964: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D8974 + add r1, r4, #0 + bl FUN_020200A0 +_021D8974: + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r0, [r0] + cmp r0, #0 + beq _021D8986 + add r1, r4, #0 + bl FUN_020119D0 +_021D8986: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D8950 + + thumb_func_start MOD16_021D8988 +MOD16_021D8988: ; 0x021D8988 + push {r4, r5} + ldr r4, [sp, #0x18] + ldr r5, [sp, #0x14] + str r4, [r0] + ldr r4, [sp, #0x10] + str r4, [r0, #4] + mov r4, #0x20 + orr r4, r5 + str r4, [r0, #8] + str r2, [r0, #0xc] + sub r2, r3, r2 + str r2, [r0, #0x10] + ldr r3, [sp, #8] + ldr r2, [sp, #0xc] + str r3, [r0, #0x14] + sub r2, r2, r3 + str r2, [r0, #0x18] + str r1, [r0, #0x1c] + mov r1, #0 + str r1, [r0, #0x20] + pop {r4, r5} + bx lr + thumb_func_end MOD16_021D8988 + + thumb_func_start MOD16_021D89B4 +MOD16_021D89B4: ; 0x021D89B4 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + bl MOD16_021D8A7C + cmp r0, #0 + bne _021D8A02 + add r0, r5, #0 + bl MOD16_021D8A14 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021D8A48 + ldr r1, [r5] + cmp r1, #0 + bne _021D89EA + mov r1, #0 + str r1, [sp] + str r0, [sp, #4] + ldr r0, _021D8A0C ; =0x04000050 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + add r3, r4, #0 + blx G2x_SetBlendBrightnessExt_ + b _021D89FC +_021D89EA: + mov r1, #0 + str r1, [sp] + str r0, [sp, #4] + ldr r0, _021D8A10 ; =0x04001050 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + add r3, r4, #0 + blx G2x_SetBlendBrightnessExt_ +_021D89FC: + ldr r0, [r5, #0x20] + add r0, r0, #1 + str r0, [r5, #0x20] +_021D8A02: + add r0, r5, #0 + bl MOD16_021D8A7C + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8A0C: .word 0x04000050 +_021D8A10: .word 0x04001050 + thumb_func_end MOD16_021D89B4 + + thumb_func_start MOD16_021D8A14 +MOD16_021D8A14: ; 0x021D8A14 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + ldr r2, [r4, #0x20] + lsl r0, r0, #0xc + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [r4, #0x1c] + lsl r1, r1, #0xc + blx FX_Div + asr r1, r0, #0xc + ldr r0, [r4, #0x14] + add r0, r1, r0 + pop {r4, pc} + thumb_func_end MOD16_021D8A14 + + thumb_func_start MOD16_021D8A48 +MOD16_021D8A48: ; 0x021D8A48 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [r4, #0x20] + lsl r0, r0, #0xc + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [r4, #0x1c] + lsl r1, r1, #0xc + blx FX_Div + asr r1, r0, #0xc + ldr r0, [r4, #0xc] + add r0, r1, r0 + pop {r4, pc} + thumb_func_end MOD16_021D8A48 + + thumb_func_start MOD16_021D8A7C +MOD16_021D8A7C: ; 0x021D8A7C + ldr r1, [r0, #0x20] + ldr r0, [r0, #0x1c] + cmp r1, r0 + ble _021D8A88 + mov r0, #1 + bx lr +_021D8A88: + mov r0, #0 + bx lr + thumb_func_end MOD16_021D8A7C + + thumb_func_start MOD16_021D8A8C +MOD16_021D8A8C: ; 0x021D8A8C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + bl MOD16_021D8A48 + neg r4, r0 + add r0, r5, #0 + bl MOD16_021D8700 + mov r3, #0 + add r1, r4, #0 + add r2, r4, #0 + str r3, [sp] + bl FUN_02007E68 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D8A8C + + thumb_func_start MOD16_021D8AAC +MOD16_021D8AAC: ; 0x021D8AAC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r2, #0 + add r0, r1, #0 + bl MOD16_021D8A48 + neg r6, r0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D8804 + mov r3, #0 + add r1, r6, #0 + add r2, r6, #0 + str r3, [sp] + bl FUN_02007E68 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021D8AAC + + thumb_func_start MOD16_021D8AD4 +MOD16_021D8AD4: ; 0x021D8AD4 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021DB540 + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD16_021DB568 + ldr r0, [sp, #4] + str r0, [sp] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD16_021D8B04 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8AD4 + + thumb_func_start MOD16_021D8B04 +MOD16_021D8B04: ; 0x021D8B04 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + bl MOD16_021D96B4 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021D8B04 + + thumb_func_start MOD16_021D8B14 +MOD16_021D8B14: ; 0x021D8B14 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021D8B1C: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D8B1C + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021D8B14 + + thumb_func_start MOD16_021D8B30 +MOD16_021D8B30: ; 0x021D8B30 + ldr r3, _021D8B38 ; =0x02020129 + ldr r0, [r0] + bx r3 + nop +_021D8B38: .word 0x02020129 + thumb_func_end MOD16_021D8B30 + + thumb_func_start MOD16_021D8B3C +MOD16_021D8B3C: ; 0x021D8B3C + str r1, [r0, #0x30] + cmp r1, #0 + bne _021D8B46 + mov r1, #0 + str r1, [r0, #0x34] +_021D8B46: + bx lr + thumb_func_end MOD16_021D8B3C + + thumb_func_start MOD16_021D8B48 +MOD16_021D8B48: ; 0x021D8B48 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021DB540 + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD16_021DB568 + ldr r0, [sp, #4] + str r0, [sp] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD16_021D8B78 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8B48 + + thumb_func_start MOD16_021D8B78 +MOD16_021D8B78: ; 0x021D8B78 + push {r3, r4, r5, r6, r7, lr} + add r7, r3, #0 + mov r3, #0x81 + add r4, r1, #0 + add r5, r0, #0 + lsl r3, r3, #2 + add r6, r2, #0 + str r4, [r5, r3] + add r0, r3, #4 + str r6, [r5, r0] + add r0, r3, #0 + add r0, #8 + str r7, [r5, r0] + add r0, r3, #0 + ldr r1, [sp, #0x18] + add r0, #0xc + str r1, [r5, r0] + add r0, r3, #0 + add r0, #0xc + ldr r0, [r5, r0] + add r2, r3, #4 + str r0, [sp] + add r0, r3, #0 + ldr r1, [r5, r3] + add r3, #8 + sub r0, #0x20 + ldr r2, [r5, r2] + ldr r3, [r5, r3] + add r0, r5, r0 + bl MOD16_021D9668 + mov r0, #0x26 + lsl r0, r0, #4 + str r4, [r5, r0] + add r1, r0, #4 + str r6, [r5, r1] + add r1, r0, #0 + add r1, #8 + str r7, [r5, r1] + add r1, r0, #0 + ldr r2, [sp, #0x18] + add r1, #0xc + str r2, [r5, r1] + mov r1, #0 + add r0, #0x10 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D8B78 + + thumb_func_start MOD16_021D8BD8 +MOD16_021D8BD8: ; 0x021D8BD8 + str r1, [r0] + str r3, [r0, #4] + str r1, [r0, #8] + str r3, [r0, #0xc] + sub r1, r2, r1 + str r1, [r0, #0x10] + ldr r1, [sp] + sub r1, r1, r3 + str r1, [r0, #0x14] + ldr r1, [sp, #4] + str r1, [r0, #0x1c] + mov r1, #0 + str r1, [r0, #0x18] + bx lr + thumb_func_end MOD16_021D8BD8 + + thumb_func_start MOD16_021D8BF4 +MOD16_021D8BF4: ; 0x021D8BF4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x18] + lsl r0, r0, #0xc + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [r5, #0x1c] + lsl r1, r1, #0xc + blx FX_Div + add r4, r0, #0 + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x18] + lsl r0, r0, #0xc + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [r5, #0x1c] + lsl r1, r1, #0xc + blx FX_Div + ldr r1, [r5, #8] + asr r2, r4, #0xc + add r1, r2, r1 + str r1, [r5] + asr r1, r0, #0xc + ldr r0, [r5, #0xc] + add r0, r1, r0 + str r0, [r5, #4] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + add r0, r0, #1 + cmp r0, r1 + bgt _021D8C6A + str r0, [r5, #0x18] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8C6A: + str r1, [r5, #0x18] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D8BF4 + + thumb_func_start MOD16_021D8C70 +MOD16_021D8C70: ; 0x021D8C70 + mov r1, #0x9f + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + thumb_func_end MOD16_021D8C70 + + thumb_func_start MOD16_021D8C78 +MOD16_021D8C78: ; 0x021D8C78 + push {r4, r5, r6, lr} + add r5, r2, #0 + mov r2, #0x9f + lsl r2, r2, #2 + add r6, r3, #0 + ldr r0, [r0, r2] + add r2, r6, #0 + bl FUN_02006704 + add r4, r0, #0 + beq _021D8CB0 + cmp r5, #0 + beq _021D8CB0 + ldr r1, [r4] + add r0, r6, #0 + lsr r1, r1, #8 + bl FUN_02016998 + add r5, r0, #0 + beq _021D8CAE + add r0, r4, #0 + add r1, r5, #0 + blx MI_UncompressLZ8 + add r0, r4, #0 + bl FUN_02016A18 +_021D8CAE: + add r4, r5, #0 +_021D8CB0: + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021D8C78 + + thumb_func_start MOD16_021D8CB4 +MOD16_021D8CB4: ; 0x021D8CB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r2, #0 + add r5, r3, #0 + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + ldr r4, [sp, #0x24] + bl MOD16_021D8C78 + add r7, r0, #0 + beq _021D8CF6 + add r1, sp, #4 + blx FUN_020B0030 + cmp r0, #0 + beq _021D8CF0 + cmp r4, #0 + bne _021D8CDC + ldr r0, [sp, #4] + ldr r4, [r0, #0x10] +_021D8CDC: + ldr r0, [sp, #0x20] + lsl r1, r5, #0x18 + str r0, [sp] + ldr r2, [sp, #4] + add r0, r6, #0 + ldr r2, [r2, #0x14] + lsr r1, r1, #0x18 + add r3, r4, #0 + bl FUN_02017E14 +_021D8CF0: + add r0, r7, #0 + bl FUN_02016A18 +_021D8CF6: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D8CB4 + + thumb_func_start MOD16_021D8CFC +MOD16_021D8CFC: ; 0x021D8CFC + push {r3, r4, r5, r6, r7, lr} + add r6, r3, #0 + add r5, r2, #0 + ldr r3, [sp, #0x1c] + mov r2, #0 + ldr r4, [sp, #0x18] + bl MOD16_021D8C78 + add r7, r0, #0 + beq _021D8D42 + add r1, sp, #0 + blx FUN_020B0138 + cmp r0, #0 + beq _021D8D3C + cmp r4, #0 + bne _021D8D22 + ldr r0, [sp] + ldr r4, [r0, #8] +_021D8D22: + ldr r0, [sp] + add r1, r4, #0 + ldr r0, [r0, #0xc] + blx DC_FlushRange + ldr r0, [sp] + add r2, r4, #0 + ldr r3, _021D8D44 ; =0x021FF548 + lsl r4, r5, #2 + ldr r0, [r0, #0xc] + ldr r3, [r3, r4] + add r1, r6, #0 + blx r3 +_021D8D3C: + add r0, r7, #0 + bl FUN_02016A18 +_021D8D42: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8D44: .word 0x021FF548 + thumb_func_end MOD16_021D8CFC + + thumb_func_start MOD16_021D8D48 +MOD16_021D8D48: ; 0x021D8D48 + push {r3, r4, r5, lr} + add r5, r3, #0 + ldr r3, [sp, #0x10] + bl MOD16_021D8C78 + add r4, r0, #0 + beq _021D8D6A + add r1, r5, #0 + blx FUN_020B0180 + cmp r0, #0 + bne _021D8D6A + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8D6A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8D48 + + thumb_func_start MOD16_021D8D70 +MOD16_021D8D70: ; 0x021D8D70 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r2, #0 + bl MOD16_021D8C78 + add r4, r0, #0 + beq _021D8D92 + add r1, r5, #0 + blx FUN_020B0138 + cmp r0, #0 + bne _021D8D92 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8D92: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8D70 + + thumb_func_start MOD16_021D8D98 +MOD16_021D8D98: ; 0x021D8D98 + push {r3, r4, r5, lr} + add r5, r3, #0 + ldr r3, [sp, #0x10] + bl MOD16_021D8C78 + add r4, r0, #0 + beq _021D8DBA + add r1, r5, #0 + blx FUN_020B0030 + cmp r0, #0 + bne _021D8DBA + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8DBA: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8D98 + + thumb_func_start MOD16_021D8DC0 +MOD16_021D8DC0: ; 0x021D8DC0 + push {r4, r5, r6, lr} + sub sp, #0xa8 + ldr r6, _021D8F14 ; =0x021FF510 + add r3, sp, #0x8c + add r5, r0, #0 + add r4, r1, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #1 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #1 + bl FUN_02018744 + ldr r6, _021D8F18 ; =0x021FF4F4 + add r3, sp, #0x70 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #2 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #2 + bl FUN_02018744 + mov r0, #0 + mov r1, #2 + bl FUN_020178BC + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r6, _021D8F1C ; =0x021FF4D8 + add r3, sp, #0x54 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #3 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #3 + bl FUN_02018744 + ldr r6, _021D8F20 ; =0x021FF4BC + add r3, sp, #0x38 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #5 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #5 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #5 + bl FUN_02018744 + ldr r6, _021D8F24 ; =0x021FF4A0 + add r3, sp, #0x1c + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #6 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #6 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #6 + bl FUN_02018744 + ldr r6, _021D8F28 ; =0x021FF52C + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #7 + str r0, [r3] + add r0, r5, #0 + mov r3, #1 + bl FUN_02016C18 + mov r0, #7 + mov r1, #0x40 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #7 + bl FUN_02018744 + add sp, #0xa8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8F14: .word 0x021FF510 +_021D8F18: .word 0x021FF4F4 +_021D8F1C: .word 0x021FF4D8 +_021D8F20: .word 0x021FF4BC +_021D8F24: .word 0x021FF4A0 +_021D8F28: .word 0x021FF52C + thumb_func_end MOD16_021D8DC0 + + thumb_func_start MOD16_021D8F2C +MOD16_021D8F2C: ; 0x021D8F2C + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #7 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD16_021D8F2C + + thumb_func_start MOD16_021D8F60 +MOD16_021D8F60: ; 0x021D8F60 + push {r3, r4, lr} + sub sp, #0x14 + mov r3, #0 + add r4, r0, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r4] + add r1, r4, #4 + mov r2, #1 + bl FUN_02019064 + add r0, r4, #4 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #4 + bl FUN_020191D0 + add sp, #0x14 + pop {r3, r4, pc} + thumb_func_end MOD16_021D8F60 + + thumb_func_start MOD16_021D8F90 +MOD16_021D8F90: ; 0x021D8F90 + ldr r3, _021D8F98 ; =0x02019179 + add r0, r0, #4 + bx r3 + nop +_021D8F98: .word 0x02019179 + thumb_func_end MOD16_021D8F90 + + thumb_func_start MOD16_021D8F9C +MOD16_021D8F9C: ; 0x021D8F9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_02006D98 + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r3, _021D9030 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _021D9034 ; =0x021064C0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + mov r1, #0 + mov r2, #1 + blx r3 + ldr r2, _021D9038 ; =0x7FFF0000 + add r6, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + and r2, r4 + lsl r1, r4, #0x10 + lsr r2, r2, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0xd + lsl r2, r2, #4 + bl FUN_020081A8 + ldr r2, _021D903C ; =0xFFFF0000 + mov r0, #0x55 + lsl r0, r0, #2 + and r2, r6 + lsl r1, r6, #0x10 + lsr r2, r2, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0xd + lsl r2, r2, #3 + bl FUN_020081B4 + mov r2, #0 + mov r0, #0x56 + add r3, r5, #0 + add r1, r2, #0 + lsl r0, r0, #2 +_021D9004: + add r2, r2, #1 + str r1, [r3, r0] + add r3, r3, #4 + cmp r2, #4 + blt _021D9004 + ldr r4, _021D9040 ; =0x021FF490 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + str r7, [sp, #0xc] + bl FUN_02013CD4 + mov r1, #0x5a + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9030: .word 0x021064B8 +_021D9034: .word 0x021064C0 +_021D9038: .word 0x7FFF0000 +_021D903C: .word 0xFFFF0000 +_021D9040: .word 0x021FF490 + thumb_func_end MOD16_021D8F9C + + thumb_func_start MOD16_021D9044 +MOD16_021D9044: ; 0x021D9044 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0x56 + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #2 +_021D9050: + ldr r0, [r5, r6] + cmp r0, #0 + beq _021D905A + bl FUN_02007534 +_021D905A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D9050 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_020072E8 + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_02013D18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D9044 + + thumb_func_start MOD16_021D9078 +MOD16_021D9078: ; 0x021D9078 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + mov r1, #0x6d + add r5, r0, #0 + lsl r1, r1, #2 + add r4, r5, r1 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021D9114 ; =0x00000BB8 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r6, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r5, r0] + add r1, r7, #0 + mov r2, #0x4e + bl FUN_020091E0 + str r0, [r4, #0xc] + bl FUN_02009B04 + ldr r0, [r4, #0xc] + bl FUN_02009474 + ldr r0, _021D9114 ; =0x00000BB8 + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r6, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + str r0, [r4, #0x10] + bl FUN_02009D68 + ldr r0, [r4, #0x10] + bl FUN_02009474 + ldr r0, _021D9114 ; =0x00000BB8 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x4c + mov r3, #1 + bl FUN_02009358 + str r0, [r4, #0x14] + ldr r0, _021D9114 ; =0x00000BB8 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x4d + mov r3, #1 + bl FUN_02009358 + str r0, [r4, #0x18] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9114: .word 0x00000BB8 + thumb_func_end MOD16_021D9078 + + thumb_func_start MOD16_021D9118 +MOD16_021D9118: ; 0x021D9118 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _021D919C ; =0x00000BB8 + mov r3, #1 + str r0, [sp] + add r6, r2, #0 + str r3, [sp, #4] + add r4, r1, #0 + str r6, [sp, #8] + ldr r0, [r4] + mov r1, #0x45 + mov r2, #0x4e + bl FUN_02008F34 + str r0, [r5, #0xc] + bl FUN_02009B04 + ldr r0, [r5, #0xc] + bl FUN_02009474 + ldr r0, _021D919C ; =0x00000BB8 + mov r1, #0x45 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r0, [r4, #4] + mov r2, #3 + mov r3, #0 + bl FUN_02008FEC + str r0, [r5, #0x10] + bl FUN_02009D68 + ldr r0, [r5, #0x10] + bl FUN_02009474 + ldr r0, _021D919C ; =0x00000BB8 + mov r1, #0x45 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #8] + mov r2, #0x4c + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0x14] + ldr r0, _021D919C ; =0x00000BB8 + mov r1, #0x45 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #0xc] + mov r2, #0x4d + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0x18] + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021D919C: .word 0x00000BB8 + thumb_func_end MOD16_021D9118 + + thumb_func_start MOD16_021D91A0 +MOD16_021D91A0: ; 0x021D91A0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + add r4, r5, r0 + ldr r0, [r4, #0xc] + bl FUN_02009C0C + ldr r0, [r4, #0x10] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + ldr r1, [r4, #0xc] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x10] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x14] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x18] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D91A0 + + thumb_func_start MOD16_021D91E8 +MOD16_021D91E8: ; 0x021D91E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + bl FUN_02009C0C + ldr r0, [r5, #0x10] + bl FUN_02009E04 + ldr r0, [r4] + ldr r1, [r5, #0xc] + bl FUN_02009490 + ldr r0, [r4, #4] + ldr r1, [r5, #0x10] + bl FUN_02009490 + ldr r0, [r4, #8] + ldr r1, [r5, #0x14] + bl FUN_02009490 + ldr r0, [r4, #0xc] + ldr r1, [r5, #0x18] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D91E8 + + thumb_func_start MOD16_021D921C +MOD16_021D921C: ; 0x021D921C + push {r3, r4, r5, lr} + sub sp, #0x70 + add r4, r1, #0 + ldr r1, _021D92D8 ; =0x00000BB8 + add r5, r0, #0 + mov r0, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r3, #5 + str r0, [sp, #0x10] + lsl r3, r3, #6 + ldr r2, [r5, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r5, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r5, r2] + add r3, #0xc + str r2, [sp, #0x1c] + ldr r2, [r5, r3] + add r3, r1, #0 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, sp, #0x4c + add r2, r1, #0 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #1 + str r0, [sp, #0x44] + add r0, sp, #0x2c + str r1, [sp, #0x40] + str r4, [sp, #0x48] + str r1, [sp, #0x34] + str r1, [sp, #0x38] + bl FUN_0201FF84 + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020310 + mov r0, #0 + str r0, [sp, #0x34] + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020130 + mov r1, #0x6f + lsl r1, r1, #2 + mov r2, #0 + add r0, r1, #0 + str r2, [r5, r1] + add r0, #0x20 + str r2, [r5, r0] + add r1, #0x24 + str r2, [r5, r1] + add sp, #0x70 + pop {r3, r4, r5, pc} + nop +_021D92D8: .word 0x00000BB8 + thumb_func_end MOD16_021D921C + + thumb_func_start MOD16_021D92DC +MOD16_021D92DC: ; 0x021D92DC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r0, #0x6d + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r0, #0x6e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D9316 + bl MOD16_021DB338 + mov r0, #0x6f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_021D9316: + pop {r4, pc} + thumb_func_end MOD16_021D92DC + + thumb_func_start MOD16_021D9318 +MOD16_021D9318: ; 0x021D9318 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r4, r1, #0 + ldr r1, _021D93A8 ; =0x00000BB8 + add r5, r0, #0 + mov r0, #0 + add r6, r3, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + ldr r3, [sp, #0x80] + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r3, [r2] + str r3, [sp, #0x14] + ldr r3, [r2, #4] + str r3, [sp, #0x18] + ldr r3, [r2, #8] + str r3, [sp, #0x1c] + ldr r2, [r2, #0xc] + add r3, r1, #0 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, sp, #0x4c + add r2, r1, #0 + bl FUN_02008AA4 + mov r1, #0 + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #1 + str r0, [sp, #0x44] + str r4, [sp, #0x2c] + str r1, [sp, #0x40] + str r6, [sp, #0x48] + str r1, [sp, #0x34] + str r1, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5] + mov r1, #1 + bl FUN_02020310 + mov r0, #0 + str r0, [sp, #0x34] + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #4] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0 + str r0, [r5, #8] + str r0, [r5, #0x28] + str r0, [r5, #0x2c] + add sp, #0x70 + pop {r4, r5, r6, pc} + nop +_021D93A8: .word 0x00000BB8 + thumb_func_end MOD16_021D9318 + + thumb_func_start MOD16_021D93AC +MOD16_021D93AC: ; 0x021D93AC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #4] + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #8] + cmp r0, #0 + beq _021D93D2 + bl MOD16_021DB338 + mov r0, #0 + str r0, [r4, #8] +_021D93D2: + pop {r4, pc} + thumb_func_end MOD16_021D93AC + + thumb_func_start MOD16_021D93D4 +MOD16_021D93D4: ; 0x021D93D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + cmp r0, #0 + beq _021D93E4 + bl FUN_020200A0 +_021D93E4: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021D93F0 + add r1, r4, #0 + bl FUN_020200A0 +_021D93F0: + ldr r0, [r5, #8] + ldr r0, [r0] + cmp r0, #0 + beq _021D93FE + add r1, r4, #0 + bl FUN_020119D0 +_021D93FE: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D93D4 + + thumb_func_start MOD16_021D9400 +MOD16_021D9400: ; 0x021D9400 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + mov r1, #0x79 + add r5, r0, #0 + lsl r1, r1, #2 + add r4, r5, r1 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021D94A0 ; =0x00002EE0 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r6, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r2, #0x77 + mov r3, #1 + bl FUN_020091E0 + str r0, [r4, #0x10] + bl FUN_02009B04 + ldr r0, [r4, #0x10] + bl FUN_02009474 + ldr r0, _021D94A0 ; =0x00002EE0 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x51 + str r6, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x15 + mov r3, #0 + bl FUN_02009298 + str r0, [r4, #0x14] + bl FUN_02009D68 + ldr r0, [r4, #0x14] + bl FUN_02009474 + ldr r0, _021D94A0 ; =0x00002EE0 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x78 + mov r3, #1 + bl FUN_02009358 + str r0, [r4, #0x18] + ldr r0, _021D94A0 ; =0x00002EE0 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x76 + mov r3, #1 + bl FUN_02009358 + str r0, [r4, #0x1c] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D94A0: .word 0x00002EE0 + thumb_func_end MOD16_021D9400 + + thumb_func_start MOD16_021D94A4 +MOD16_021D94A4: ; 0x021D94A4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x79 + lsl r0, r0, #2 + add r4, r5, r0 + ldr r0, [r4, #0x10] + bl FUN_02009C0C + ldr r0, [r4, #0x14] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + ldr r1, [r4, #0x10] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x14] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x18] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x1c] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D94A4 + + thumb_func_start MOD16_021D94EC +MOD16_021D94EC: ; 0x021D94EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + add r5, r1, #0 + ldr r1, _021D9598 ; =0x00002EE0 + add r6, r0, #0 + mov r0, #0 + mov r2, #0x79 + lsl r2, r2, #2 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + sub r2, #0xa4 + ldr r2, [r6, r2] + add r3, r1, #0 + str r2, [sp, #0x14] + mov r2, #0x79 + lsl r2, r2, #2 + sub r2, #0xa0 + ldr r2, [r6, r2] + str r2, [sp, #0x18] + mov r2, #0x79 + lsl r2, r2, #2 + sub r2, #0x9c + ldr r2, [r6, r2] + str r2, [sp, #0x1c] + mov r2, #0x79 + lsl r2, r2, #2 + sub r2, #0x98 + ldr r2, [r6, r2] + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, sp, #0x4c + add r2, r1, #0 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r4, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #0x49 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + mov r0, #0x19 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r0, #0x79 + lsl r0, r0, #2 + str r5, [sp, #0x48] + str r4, [sp, #0x40] + add r5, r6, r0 + add r7, sp, #0x2c +_021D9566: + add r0, r7, #0 + bl FUN_0201FF84 + add r1, r4, #0 + stmia r5!, {r0} + bl FUN_02020130 + add r4, r4, #1 + cmp r4, #4 + blt _021D9566 + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r6, r0 + mov r1, #0 + bl MOD16_021D8B14 + add r0, r6, #0 + bl MOD16_021D95C4 + add r0, r6, #0 + bl MOD16_021D9760 + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9598: .word 0x00002EE0 + thumb_func_end MOD16_021D94EC + + thumb_func_start MOD16_021D959C +MOD16_021D959C: ; 0x021D959C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD16_021D9780 + add r0, r5, #0 + bl MOD16_021D95E4 + mov r0, #0x79 + lsl r0, r0, #2 + mov r4, #0 + add r5, r5, r0 +_021D95B2: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D95B2 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D959C + + thumb_func_start MOD16_021D95C4 +MOD16_021D95C4: ; 0x021D95C4 + push {r4, lr} + mov r1, #0x79 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, _021D95E0 ; =MOD16_021D95F4 + add r1, r4, r1 + mov r2, #1 + bl FUN_0200CA44 + mov r1, #0x9d + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_021D95E0: .word MOD16_021D95F4 + thumb_func_end MOD16_021D95C4 + + thumb_func_start MOD16_021D95E4 +MOD16_021D95E4: ; 0x021D95E4 + mov r1, #0x9d + lsl r1, r1, #2 + ldr r3, _021D95F0 ; =0x0200CAB5 + ldr r0, [r0, r1] + bx r3 + nop +_021D95F0: .word 0x0200CAB5 + thumb_func_end MOD16_021D95E4 + + thumb_func_start MOD16_021D95F4 +MOD16_021D95F4: ; 0x021D95F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021D9610 + ldr r0, [r4, #0x2c] + str r0, [sp] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + add r0, r4, #0 + bl MOD16_021D9668 + pop {r3, r4, r5, pc} +_021D9610: + ldr r0, [r4, #0x34] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1a + sub r1, r1, r2 + mov r0, #0x1a + ror r1, r0 + add r0, r2, r1 + str r0, [r4, #0x34] + cmp r0, #0x20 + blt _021D962C + add r1, r0, #1 + mov r0, #0x40 + sub r0, r0, r1 +_021D962C: + lsl r2, r0, #0xc + asr r1, r2, #0x1f + lsr r0, r2, #0x12 + lsl r3, r1, #0xe + mov r1, #2 + orr r3, r0 + lsl r2, r2, #0xe + mov r0, #0 + lsl r1, r1, #0xa + add r5, r2, r1 + adc r3, r0 + lsl r2, r3, #0x14 + lsr r0, r5, #0xc + orr r0, r2 + lsl r1, r1, #6 + blx FX_Div + asr r3, r0, #0xc + ldr r0, [r4, #0x2c] + add r0, r0, r3 + str r0, [sp] + add r0, r4, #0 + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + ldr r4, [r4, #0x28] + add r3, r4, r3 + bl MOD16_021D9668 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D95F4 + + thumb_func_start MOD16_021D9668 +MOD16_021D9668: ; 0x021D9668 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r6, [sp, #0x40] + add r5, r0, #0 + str r1, [sp, #0xc] + add r7, r2, #0 + str r3, [sp, #0x10] + mov r4, #0 +_021D9678: + ldr r0, [sp, #0x10] + str r7, [sp] + str r0, [sp, #4] + ldr r3, [sp, #0xc] + str r6, [sp, #8] + add r0, r4, #0 + add r1, sp, #0x18 + add r2, sp, #0x14 + bl MOD16_021DB5A8 + ldr r0, [sp, #0x18] + lsl r0, r0, #0xc + str r0, [sp, #0x1c] + ldr r0, [sp, #0x14] + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0x20] + ldr r0, [r5] + add r1, sp, #0x1c + bl FUN_02020044 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D9678 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D9668 + + thumb_func_start MOD16_021D96B4 +MOD16_021D96B4: ; 0x021D96B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0x87 + lsl r1, r1, #2 + add r4, r0, r1 + ldr r1, [r4, #0x44] + add r5, r2, #0 + add r7, r3, #0 + cmp r1, r6 + bne _021D96DE + ldr r1, [r4, #0x48] + cmp r1, r5 + bne _021D96DE + ldr r1, [r4, #0x4c] + cmp r1, r7 + bne _021D96DE + ldr r2, [r4, #0x50] + ldr r1, [sp, #0x20] + cmp r2, r1 + beq _021D971E +_021D96DE: + mov r1, #0x79 + lsl r1, r1, #2 + add r3, r0, r1 + str r3, [r4] + str r5, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r1, [r3, #0x20] + ldr r3, [r3, #0x24] + add r0, r4, #4 + add r2, r6, #0 + bl MOD16_021D8BD8 + ldr r3, [r4] + ldr r0, [sp, #0x20] + add r2, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + add r0, r4, #0 + ldr r1, [r3, #0x28] + ldr r3, [r3, #0x2c] + add r0, #0x24 + bl MOD16_021D8BD8 + str r6, [r4, #0x44] + str r5, [r4, #0x48] + ldr r0, [sp, #0x20] + str r7, [r4, #0x4c] + str r0, [r4, #0x50] + mov r0, #1 + str r0, [r4, #0x54] +_021D971E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D96B4 + + thumb_func_start MOD16_021D9724 +MOD16_021D9724: ; 0x021D9724 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _021D975E + add r0, r5, #4 + bl MOD16_021D8BF4 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x24 + bl MOD16_021D8BF4 + ldr r1, [r5, #4] + ldr r0, [r5] + cmp r4, #1 + str r1, [r0, #0x20] + ldr r1, [r5, #8] + ldr r0, [r5] + str r1, [r0, #0x24] + ldr r1, [r5, #0x24] + ldr r0, [r5] + str r1, [r0, #0x28] + ldr r1, [r5, #0x28] + ldr r0, [r5] + str r1, [r0, #0x2c] + bne _021D975E + mov r0, #0 + str r0, [r5, #0x54] +_021D975E: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D9724 + + thumb_func_start MOD16_021D9760 +MOD16_021D9760: ; 0x021D9760 + push {r4, lr} + mov r1, #0x87 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, _021D977C ; =MOD16_021D9724 + add r1, r4, r1 + mov r2, #0 + bl FUN_0200CA44 + mov r1, #0x9e + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_021D977C: .word MOD16_021D9724 + thumb_func_end MOD16_021D9760 + + thumb_func_start MOD16_021D9780 +MOD16_021D9780: ; 0x021D9780 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x9e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r0, #0x9e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + thumb_func_end MOD16_021D9780 + + thumb_func_start MOD16_021D9798 +MOD16_021D9798: ; 0x021D9798 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r2, #0 + add r4, r1, #0 + ldr r2, _021D988C ; =0x00001770 + mov r1, #0 + add r5, r0, #0 + blx Call_FillMemWithValue + ldr r0, [r4] + str r0, [r5] + ldr r1, [r4, #8] + ldr r0, _021D9890 ; =0x00001744 + str r1, [r5, r0] + ldr r0, [r5] + bl FUN_02024CA4 + cmp r0, #0 + beq _021D97C2 + mov r1, #1 + b _021D97C4 +_021D97C2: + mov r1, #0 +_021D97C4: + ldr r0, _021D9894 ; =0x00001734 + str r1, [r5, r0] + ldr r0, [r4, #0x20] + cmp r0, #2 + bne _021D97DC + ldr r0, _021D9894 ; =0x00001734 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D97DA + mov r0, #1 + b _021D97DC +_021D97DA: + mov r0, #0 +_021D97DC: + cmp r0, #1 + ldr r0, _021D9898 ; =0x00001730 + bne _021D97EA + mov r1, #1 + str r1, [r5, r0] + mov r1, #0 + b _021D97EE +_021D97EA: + mov r1, #0 + str r1, [r5, r0] +_021D97EE: + str r1, [sp] + ldr r0, _021D9898 ; =0x00001730 + str r1, [sp, #4] + ldr r0, [r5, r0] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r1, #0 + str r6, [sp, #0xc] + bl MOD16_021D9CB0 + cmp r0, #0 + bne _021D980C + bl ErrorHandling +_021D980C: + ldr r1, [r4, #0x1c] + add r0, r5, #0 + bl MOD16_021D9DC0 + ldr r1, [r4, #0x1c] + add r0, r5, #0 + bl MOD16_021D9A60 + ldr r1, [r4, #0x20] + add r0, r5, #0 + bl MOD16_021D9A78 + ldr r0, [r4, #4] + bl FUN_02023A68 + ldr r1, _021D989C ; =0x0000174C + str r0, [r5, r1] + ldr r0, [r4, #4] + bl FUN_020239CC + ldr r1, _021D98A0 ; =0x00001750 + str r0, [r5, r1] + ldr r0, [r4, #4] + add r1, r6, #0 + bl FUN_020239A0 + ldr r1, _021D98A4 ; =0x00001754 + str r0, [r5, r1] + add r0, r6, #0 + bl FUN_02087A6C + ldr r1, _021D98A8 ; =0x00001748 + str r0, [r5, r1] + add r0, r1, #0 + add r0, #8 + ldr r0, [r5, r0] + cmp r0, #0 + ldr r0, [r5, r1] + bne _021D9864 + mov r1, #0 + add r2, r6, #0 + bl FUN_02087A98 + b _021D986C +_021D9864: + mov r1, #1 + add r2, r6, #0 + bl FUN_02087A98 +_021D986C: + ldr r0, [r4, #0xc] + ldr r1, _021D98AC ; =0x00001760 + str r0, [r5, r1] + ldr r2, [r4, #0x10] + add r0, r1, #4 + str r2, [r5, r0] + add r0, r1, #0 + ldr r2, [r4, #0x14] + add r0, #8 + str r2, [r5, r0] + ldr r0, [r4, #0x18] + add r1, #0xc + str r0, [r5, r1] + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021D988C: .word 0x00001770 +_021D9890: .word 0x00001744 +_021D9894: .word 0x00001734 +_021D9898: .word 0x00001730 +_021D989C: .word 0x0000174C +_021D98A0: .word 0x00001750 +_021D98A4: .word 0x00001754 +_021D98A8: .word 0x00001748 +_021D98AC: .word 0x00001760 + thumb_func_end MOD16_021D9798 + + thumb_func_start MOD16_021D98B0 +MOD16_021D98B0: ; 0x021D98B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D98D4 ; =0x00001754 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _021D98D8 ; =0x00001748 + ldr r0, [r4, r0] + bl FUN_02087B0C + ldr r0, _021D98D8 ; =0x00001748 + ldr r0, [r4, r0] + bl FUN_02087A84 + ldr r0, _021D98D8 ; =0x00001748 + mov r1, #0 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D98D4: .word 0x00001754 +_021D98D8: .word 0x00001748 + thumb_func_end MOD16_021D98B0 + + thumb_func_start MOD16_021D98DC +MOD16_021D98DC: ; 0x021D98DC + ldr r3, _021D98E8 ; =0x02024675 + lsl r1, r1, #0x10 + ldr r0, [r0] + lsr r1, r1, #0x10 + bx r3 + nop +_021D98E8: .word 0x02024675 + thumb_func_end MOD16_021D98DC + + thumb_func_start MOD16_021D98EC +MOD16_021D98EC: ; 0x021D98EC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0x1c + blt _021D98FA + bl ErrorHandling +_021D98FA: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_020246DC + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D98EC + + thumb_func_start MOD16_021D9904 +MOD16_021D9904: ; 0x021D9904 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #2 + blt _021D9912 + bl ErrorHandling +_021D9912: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_02024748 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D9904 + + thumb_func_start MOD16_021D991C +MOD16_021D991C: ; 0x021D991C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #2 + blt _021D992A + bl ErrorHandling +_021D992A: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_020247C8 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D991C + + thumb_func_start MOD16_021D9934 +MOD16_021D9934: ; 0x021D9934 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #3 + blt _021D9942 + bl ErrorHandling +_021D9942: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_0202484C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D9934 + + thumb_func_start MOD16_021D994C +MOD16_021D994C: ; 0x021D994C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #3 + blt _021D995A + bl ErrorHandling +_021D995A: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_020248BC + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D994C + + thumb_func_start MOD16_021D9964 +MOD16_021D9964: ; 0x021D9964 + push {r3, lr} + ldr r3, _021D99D8 ; =0x0000019D + cmp r1, r3 + bhi _021D998A + sub r2, r3, #1 + cmp r1, r2 + blo _021D997A + beq _021D99BA + cmp r1, r3 + beq _021D99C2 + b _021D99D2 +_021D997A: + cmp r1, #0xc9 + bhi _021D9982 + beq _021D99A2 + b _021D99D2 +_021D9982: + sub r3, #0x1b + cmp r1, r3 + beq _021D99CA + b _021D99D2 +_021D998A: + add r2, r3, #0 + add r2, #9 + cmp r1, r2 + bhi _021D999A + add r3, #9 + cmp r1, r3 + beq _021D99AA + b _021D99D2 +_021D999A: + add r3, #0xa + cmp r1, r3 + beq _021D99B2 + b _021D99D2 +_021D99A2: + mov r1, #0 + bl MOD16_021D98EC + pop {r3, pc} +_021D99AA: + mov r1, #0 + bl MOD16_021D9904 + pop {r3, pc} +_021D99B2: + mov r1, #0 + bl MOD16_021D991C + pop {r3, pc} +_021D99BA: + mov r1, #0 + bl MOD16_021D9934 + pop {r3, pc} +_021D99C2: + mov r1, #0 + bl MOD16_021D994C + pop {r3, pc} +_021D99CA: + mov r1, #0 + bl MOD16_021D9A3C + pop {r3, pc} +_021D99D2: + mov r0, #0 + pop {r3, pc} + nop +_021D99D8: .word 0x0000019D + thumb_func_end MOD16_021D9964 + + thumb_func_start MOD16_021D99DC +MOD16_021D99DC: ; 0x021D99DC + push {r3, lr} + mov r2, #1 + bl MOD16_021D98DC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021D99F0 + mov r0, #1 + pop {r3, pc} +_021D99F0: + mov r0, #2 + pop {r3, pc} + thumb_func_end MOD16_021D99DC + + thumb_func_start MOD16_021D99F4 +MOD16_021D99F4: ; 0x021D99F4 + ldr r3, _021D99FC ; =0x0202471D + ldr r0, [r0] + bx r3 + nop +_021D99FC: .word 0x0202471D + thumb_func_end MOD16_021D99F4 + + thumb_func_start MOD16_021D9A00 +MOD16_021D9A00: ; 0x021D9A00 + ldr r3, _021D9A08 ; =0x020247A5 + ldr r0, [r0] + bx r3 + nop +_021D9A08: .word 0x020247A5 + thumb_func_end MOD16_021D9A00 + + thumb_func_start MOD16_021D9A0C +MOD16_021D9A0C: ; 0x021D9A0C + ldr r3, _021D9A14 ; =0x02024829 + ldr r0, [r0] + bx r3 + nop +_021D9A14: .word 0x02024829 + thumb_func_end MOD16_021D9A0C + + thumb_func_start MOD16_021D9A18 +MOD16_021D9A18: ; 0x021D9A18 + ldr r3, _021D9A20 ; =0x0202489D + ldr r0, [r0] + bx r3 + nop +_021D9A20: .word 0x0202489D + thumb_func_end MOD16_021D9A18 + + thumb_func_start MOD16_021D9A24 +MOD16_021D9A24: ; 0x021D9A24 + ldr r3, _021D9A2C ; =0x0202490D + ldr r0, [r0] + bx r3 + nop +_021D9A2C: .word 0x0202490D + thumb_func_end MOD16_021D9A24 + + thumb_func_start MOD16_021D9A30 +MOD16_021D9A30: ; 0x021D9A30 + ldr r3, _021D9A38 ; =0x02024649 + ldr r0, [r0] + mov r1, #0 + bx r3 + .align 2, 0 +_021D9A38: .word 0x02024649 + thumb_func_end MOD16_021D9A30 + + thumb_func_start MOD16_021D9A3C +MOD16_021D9A3C: ; 0x021D9A3C + ldr r3, _021D9A44 ; =0x02024931 + ldr r0, [r0] + bx r3 + nop +_021D9A44: .word 0x02024931 + thumb_func_end MOD16_021D9A3C + + thumb_func_start MOD16_021D9A48 +MOD16_021D9A48: ; 0x021D9A48 + ldr r3, _021D9A50 ; =0x02024971 + ldr r0, [r0] + bx r3 + nop +_021D9A50: .word 0x02024971 + thumb_func_end MOD16_021D9A48 + + thumb_func_start MOD16_021D9A54 +MOD16_021D9A54: ; 0x021D9A54 + ldr r3, _021D9A5C ; =0x02024CA5 + ldr r0, [r0] + bx r3 + nop +_021D9A5C: .word 0x02024CA5 + thumb_func_end MOD16_021D9A54 + + thumb_func_start MOD16_021D9A60 +MOD16_021D9A60: ; 0x021D9A60 + ldr r2, _021D9A68 ; =0x0000175C + strh r1, [r0, r2] + bx lr + nop +_021D9A68: .word 0x0000175C + thumb_func_end MOD16_021D9A60 + + thumb_func_start MOD16_021D9A6C +MOD16_021D9A6C: ; 0x021D9A6C + ldr r1, _021D9A74 ; =0x0000175C + ldrh r0, [r0, r1] + bx lr + nop +_021D9A74: .word 0x0000175C + thumb_func_end MOD16_021D9A6C + + thumb_func_start MOD16_021D9A78 +MOD16_021D9A78: ; 0x021D9A78 + ldr r2, _021D9A80 ; =0x0000175E + strh r1, [r0, r2] + bx lr + nop +_021D9A80: .word 0x0000175E + thumb_func_end MOD16_021D9A78 + + thumb_func_start MOD16_021D9A84 +MOD16_021D9A84: ; 0x021D9A84 + ldr r1, _021D9A8C ; =0x0000175E + ldrh r0, [r0, r1] + bx lr + nop +_021D9A8C: .word 0x0000175E + thumb_func_end MOD16_021D9A84 + + thumb_func_start MOD16_021D9A90 +MOD16_021D9A90: ; 0x021D9A90 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r7, [sp, #0x4c] + str r1, [sp, #0xc] + add r5, r0, #0 + ldr r1, _021D9CA8 ; =0x000003DA + add r0, r7, #0 + str r2, [sp, #0x10] + str r3, [sp, #0x14] + bl FUN_020169D8 + add r6, r0, #0 + bne _021D9AAE + bl ErrorHandling +_021D9AAE: + ldr r2, _021D9CA8 ; =0x000003DA + add r0, r6, #0 + mov r1, #0 + blx Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x24] + ldr r1, _021D9CA8 ; =0x000003DA + add r0, r7, #0 + bl FUN_020169D8 + add r4, r0, #0 + bne _021D9ACC + bl ErrorHandling +_021D9ACC: + ldr r2, _021D9CA8 ; =0x000003DA + add r0, r4, #0 + mov r1, #0 + blx Call_FillMemWithValue + mov r1, #0 + ldr r0, [sp, #0x48] + str r1, [sp, #0x20] + cmp r0, #0 + add r2, sp, #0x1c + bne _021D9AFE + add r0, r7, #0 + mov r1, #1 + bl MOD16_021DA184 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x18] + str r0, [sp] + ldr r2, [r5] + add r0, r6, #0 + add r1, sp, #0x24 + bl MOD16_021D9FC4 + b _021D9B16 +_021D9AFE: + add r0, r7, #0 + bl MOD16_021DA184 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x18] + str r0, [sp] + ldr r2, [r5] + add r0, r6, #0 + add r1, sp, #0x24 + bl MOD16_021D9FC4 +_021D9B16: + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r3, r6, #0 + bl MOD16_021DA1B4 + ldr r2, [sp, #0x20] + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + blx memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + blx Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r3, r6, #0 + bl MOD16_021DA264 + ldr r2, [sp, #0x20] + cmp r2, #0 + bne _021D9B6A + mov r7, #0 + b _021D9C82 +_021D9B6A: + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + blx memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + blx Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + add r3, r6, #0 + bl MOD16_021DA348 + ldr r2, [sp, #0x20] + cmp r2, #0 + bne _021D9BA6 + mov r7, #0 + b _021D9C82 +_021D9BA6: + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + blx memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + blx Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0x40] + add r3, r6, #0 + bl MOD16_021DA348 + ldr r2, [sp, #0x20] + cmp r2, #0 + bne _021D9BE2 + mov r7, #0 + b _021D9C82 +_021D9BE2: + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + blx memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + blx Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0x44] + add r3, r6, #0 + bl MOD16_021DA49C + ldr r2, [sp, #0x20] + cmp r2, #0 + bne _021D9C1E + mov r7, #0 + b _021D9C82 +_021D9C1E: + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + blx memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + blx Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r1, [r5] + ldr r3, [sp, #0x24] + add r0, r5, #4 + add r2, r6, #0 + bl MOD16_021DA080 + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _021D9C64 + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _021D9C64 + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _021D9C64 + ldr r0, [sp, #0x40] + cmp r0, #0 + bne _021D9C64 + ldr r0, [sp, #0x44] + cmp r0, #0 + beq _021D9C68 +_021D9C64: + mov r0, #1 + str r0, [sp, #0x50] +_021D9C68: + ldr r0, [sp, #0x50] + cmp r0, #0 + bne _021D9C7A + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + add r0, r5, #4 + bl MOD16_021DA0D8 + b _021D9C80 +_021D9C7A: + add r0, r5, #4 + bl MOD16_021DA148 +_021D9C80: + mov r7, #1 +_021D9C82: + ldr r2, _021D9CAC ; =0x00001738 + add r0, r5, #4 + add r1, r5, r2 + add r2, r2, #4 + add r2, r5, r2 + bl MOD16_021DA5C4 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x18] + bl FUN_02016A18 + add r0, r7, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9CA8: .word 0x000003DA +_021D9CAC: .word 0x00001738 + thumb_func_end MOD16_021D9A90 + + thumb_func_start MOD16_021D9CB0 +MOD16_021D9CB0: ; 0x021D9CB0 + push {r3, r4, lr} + sub sp, #0x14 + ldr r4, [sp, #0x20] + str r4, [sp] + ldr r4, [sp, #0x24] + str r4, [sp, #4] + ldr r4, [sp, #0x28] + str r4, [sp, #8] + ldr r4, [sp, #0x2c] + str r4, [sp, #0xc] + mov r4, #0 + str r4, [sp, #0x10] + bl MOD16_021D9A90 + add sp, #0x14 + pop {r3, r4, pc} + thumb_func_end MOD16_021D9CB0 + + thumb_func_start MOD16_021D9CD0 +MOD16_021D9CD0: ; 0x021D9CD0 + cmp r1, #0 + bne _021D9CD8 + mov r0, #1 + bx lr +_021D9CD8: + ldr r1, _021D9CE8 ; =0x00001734 + ldr r0, [r0, r1] + cmp r0, #0 + beq _021D9CE4 + mov r0, #1 + bx lr +_021D9CE4: + mov r0, #0 + bx lr + .align 2, 0 +_021D9CE8: .word 0x00001734 + thumb_func_end MOD16_021D9CD0 + + thumb_func_start MOD16_021D9CEC +MOD16_021D9CEC: ; 0x021D9CEC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9CD0 + cmp r0, #0 + beq _021D9CFE + ldr r1, _021D9D00 ; =0x00001730 + str r4, [r5, r1] +_021D9CFE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9D00: .word 0x00001730 + thumb_func_end MOD16_021D9CEC + + thumb_func_start MOD16_021D9D04 +MOD16_021D9D04: ; 0x021D9D04 + ldr r1, _021D9D0C ; =0x00001730 + ldr r0, [r0, r1] + bx lr + nop +_021D9D0C: .word 0x00001730 + thumb_func_end MOD16_021D9D04 + + thumb_func_start MOD16_021D9D10 +MOD16_021D9D10: ; 0x021D9D10 + cmp r1, #0 + blt _021D9D22 + mov r2, #0xf7 + lsl r2, r2, #4 + ldr r0, [r0, r2] + cmp r1, r0 + bge _021D9D22 + mov r0, #1 + bx lr +_021D9D22: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021D9D10 + + thumb_func_start MOD16_021D9D28 +MOD16_021D9D28: ; 0x021D9D28 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9D10 + cmp r0, #0 + beq _021D9D3E + ldr r0, _021D9D44 ; =0x00000F6C + str r4, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9D3E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D9D44: .word 0x00000F6C + thumb_func_end MOD16_021D9D28 + + thumb_func_start MOD16_021D9D48 +MOD16_021D9D48: ; 0x021D9D48 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _021D9D84 ; =0x00000F6C + add r5, r0, #0 + ldr r1, [r5, r1] + add r1, r1, r4 + bl MOD16_021D9D10 + cmp r0, #0 + beq _021D9D68 + ldr r0, _021D9D84 ; =0x00000F6C + ldr r1, [r5, r0] + add r1, r1, r4 + str r1, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9D68: + cmp r4, #0 + blt _021D9D78 + mov r0, #0xf7 + lsl r0, r0, #4 + ldr r1, [r5, r0] + sub r0, r0, #4 + sub r1, r1, #1 + b _021D9D7C +_021D9D78: + ldr r0, _021D9D84 ; =0x00000F6C + mov r1, #0 +_021D9D7C: + str r1, [r5, r0] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D9D84: .word 0x00000F6C + thumb_func_end MOD16_021D9D48 + + thumb_func_start MOD16_021D9D88 +MOD16_021D9D88: ; 0x021D9D88 + ldr r1, _021D9D90 ; =0x00000F6C + ldr r0, [r0, r1] + bx lr + nop +_021D9D90: .word 0x00000F6C + thumb_func_end MOD16_021D9D88 + + thumb_func_start MOD16_021D9D94 +MOD16_021D9D94: ; 0x021D9D94 + mov r1, #0xf7 + lsl r1, r1, #4 + ldr r0, [r0, r1] + bx lr + thumb_func_end MOD16_021D9D94 + + thumb_func_start MOD16_021D9D9C +MOD16_021D9D9C: ; 0x021D9D9C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9D94 + mov r2, #0 + cmp r0, #0 + ble _021D9DBA +_021D9DAC: + ldr r1, [r5, #4] + cmp r1, r4 + beq _021D9DBA + add r2, r2, #1 + add r5, #8 + cmp r2, r0 + blt _021D9DAC +_021D9DBA: + add r0, r2, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D9D9C + + thumb_func_start MOD16_021D9DC0 +MOD16_021D9DC0: ; 0x021D9DC0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021D9D94 + add r4, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021D9D9C + add r1, r0, #0 + cmp r4, r1 + bls _021D9DE2 + add r0, r5, #0 + bl MOD16_021D9D28 + pop {r4, r5, r6, pc} +_021D9DE2: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021D9DC0 + + thumb_func_start MOD16_021D9DE8 +MOD16_021D9DE8: ; 0x021D9DE8 + ldr r1, _021D9DF4 ; =0x00000F6C + ldr r1, [r0, r1] + lsl r1, r1, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_021D9DF4: .word 0x00000F6C + thumb_func_end MOD16_021D9DE8 + + thumb_func_start MOD16_021D9DF8 +MOD16_021D9DF8: ; 0x021D9DF8 + ldr r1, _021D9E04 ; =0x00000F6C + ldr r1, [r0, r1] + lsl r1, r1, #3 + add r0, r0, r1 + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_021D9E04: .word 0x00000F6C + thumb_func_end MOD16_021D9DF8 + + thumb_func_start MOD16_021D9E08 +MOD16_021D9E08: ; 0x021D9E08 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9D10 + cmp r0, #0 + beq _021D9E1E + add r1, r5, #4 + lsl r0, r4, #3 + add r0, r1, r0 + pop {r3, r4, r5, pc} +_021D9E1E: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D9E08 + + thumb_func_start MOD16_021D9E24 +MOD16_021D9E24: ; 0x021D9E24 + ldr r2, _021D9E38 ; =0x0000172C + ldr r0, [r0, r2] + cmp r0, r1 + ble _021D9E34 + cmp r1, #0 + blt _021D9E34 + mov r0, #1 + bx lr +_021D9E34: + mov r0, #0 + bx lr + .align 2, 0 +_021D9E38: .word 0x0000172C + thumb_func_end MOD16_021D9E24 + + thumb_func_start MOD16_021D9E3C +MOD16_021D9E3C: ; 0x021D9E3C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9E24 + cmp r0, #0 + beq _021D9E62 + ldr r1, _021D9E68 ; =0x00001728 + add r0, r5, #0 + str r4, [r5, r1] + ldr r1, [r5, r1] + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _021D9E6C ; =0x00000F74 + ldr r1, [r2, r1] + bl MOD16_021D9D28 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9E62: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D9E68: .word 0x00001728 +_021D9E6C: .word 0x00000F74 + thumb_func_end MOD16_021D9E3C + + thumb_func_start MOD16_021D9E70 +MOD16_021D9E70: ; 0x021D9E70 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9EA8 + cmp r0, #0 + beq _021D9E9A + ldr r1, _021D9EA0 ; =0x00001728 + ldr r0, [r5, r1] + add r0, r0, r4 + str r0, [r5, r1] + ldr r1, [r5, r1] + add r0, r5, #0 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _021D9EA4 ; =0x00000F74 + ldr r1, [r2, r1] + bl MOD16_021D9D28 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9E9A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D9EA0: .word 0x00001728 +_021D9EA4: .word 0x00000F74 + thumb_func_end MOD16_021D9E70 + + thumb_func_start MOD16_021D9EA8 +MOD16_021D9EA8: ; 0x021D9EA8 + push {r3, lr} + ldr r2, _021D9EC0 ; =0x00001728 + ldr r2, [r0, r2] + add r1, r2, r1 + bl MOD16_021D9E24 + cmp r0, #0 + beq _021D9EBC + mov r0, #1 + pop {r3, pc} +_021D9EBC: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_021D9EC0: .word 0x00001728 + thumb_func_end MOD16_021D9EA8 + + thumb_func_start MOD16_021D9EC4 +MOD16_021D9EC4: ; 0x021D9EC4 + ldr r1, _021D9ECC ; =0x00001728 + ldr r0, [r0, r1] + bx lr + nop +_021D9ECC: .word 0x00001728 + thumb_func_end MOD16_021D9EC4 + + thumb_func_start MOD16_021D9ED0 +MOD16_021D9ED0: ; 0x021D9ED0 + ldr r1, _021D9ED8 ; =0x0000172C + ldr r0, [r0, r1] + bx lr + nop +_021D9ED8: .word 0x0000172C + thumb_func_end MOD16_021D9ED0 + + thumb_func_start MOD16_021D9EDC +MOD16_021D9EDC: ; 0x021D9EDC + lsl r1, r1, #2 + add r1, r0, r1 + ldr r0, _021D9EE8 ; =0x00000F74 + ldr r0, [r1, r0] + bx lr + nop +_021D9EE8: .word 0x00000F74 + thumb_func_end MOD16_021D9EDC + + thumb_func_start MOD16_021D9EEC +MOD16_021D9EEC: ; 0x021D9EEC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021D9F24 ; =0x0000172C + mov r4, #0 + ldr r0, [r5, r0] + cmp r0, #0 + ble _021D9F22 + ldr r7, _021D9F24 ; =0x0000172C +_021D9EFC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D9EDC + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021D9D88 + cmp r6, r0 + bne _021D9F1A + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D9E3C + pop {r3, r4, r5, r6, r7, pc} +_021D9F1A: + ldr r0, [r5, r7] + add r4, r4, #1 + cmp r4, r0 + blt _021D9EFC +_021D9F22: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9F24: .word 0x0000172C + thumb_func_end MOD16_021D9EEC + + thumb_func_start MOD16_021D9F28 +MOD16_021D9F28: ; 0x021D9F28 + ldr r1, _021D9F30 ; =0x00001738 + ldr r0, [r0, r1] + bx lr + nop +_021D9F30: .word 0x00001738 + thumb_func_end MOD16_021D9F28 + + thumb_func_start MOD16_021D9F34 +MOD16_021D9F34: ; 0x021D9F34 + ldr r1, _021D9F3C ; =0x0000173C + ldr r0, [r0, r1] + bx lr + nop +_021D9F3C: .word 0x0000173C + thumb_func_end MOD16_021D9F34 + + thumb_func_start MOD16_021D9F40 +MOD16_021D9F40: ; 0x021D9F40 + ldr r1, _021D9F48 ; =0x00001754 + ldr r0, [r0, r1] + bx lr + nop +_021D9F48: .word 0x00001754 + thumb_func_end MOD16_021D9F40 + + thumb_func_start MOD16_021D9F4C +MOD16_021D9F4C: ; 0x021D9F4C + ldr r1, _021D9F54 ; =0x00001750 + ldr r0, [r0, r1] + bx lr + nop +_021D9F54: .word 0x00001750 + thumb_func_end MOD16_021D9F4C + + thumb_func_start MOD16_021D9F58 +MOD16_021D9F58: ; 0x021D9F58 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021D9DE8 + add r4, r0, #0 + ldr r0, [r5] + bl FUN_02024D58 + cmp r0, #0 + bne _021D9F72 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D9F72: + lsl r1, r4, #0x10 + ldr r0, [r5] + lsr r1, r1, #0x10 + add r2, r6, #0 + bl FUN_02024D00 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021D9F58 + + thumb_func_start MOD16_021D9F80 +MOD16_021D9F80: ; 0x021D9F80 + ldr r3, _021D9F88 ; =0x02024CC5 + ldr r0, [r0] + bx r3 + nop +_021D9F88: .word 0x02024CC5 + thumb_func_end MOD16_021D9F80 + + thumb_func_start MOD16_021D9F8C +MOD16_021D9F8C: ; 0x021D9F8C + ldr r1, _021D9FAC ; =0x021C48F8 + ldrh r1, [r1, #0x22] + cmp r1, #0 + beq _021D9F9C + ldr r1, _021D9FB0 ; =0x00001758 + mov r2, #0 + str r2, [r0, r1] + bx lr +_021D9F9C: + ldr r1, _021D9FB4 ; =0x021C48B8 + ldr r1, [r1, #0x44] + cmp r1, #0 + beq _021D9FAA + ldr r1, _021D9FB0 ; =0x00001758 + mov r2, #1 + str r2, [r0, r1] +_021D9FAA: + bx lr + .align 2, 0 +_021D9FAC: .word 0x021C48F8 +_021D9FB0: .word 0x00001758 +_021D9FB4: .word 0x021C48B8 + thumb_func_end MOD16_021D9F8C + + thumb_func_start MOD16_021D9FB8 +MOD16_021D9FB8: ; 0x021D9FB8 + ldr r1, _021D9FC0 ; =0x00001758 + ldr r0, [r0, r1] + bx lr + nop +_021D9FC0: .word 0x00001758 + thumb_func_end MOD16_021D9FB8 + + thumb_func_start MOD16_021D9FC4 +MOD16_021D9FC4: ; 0x021D9FC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r7, [sp, #0x20] + add r5, r1, #0 + mov r6, #0 + add r4, r3, #0 + str r0, [sp] + str r2, [sp, #4] + str r6, [r5] + cmp r7, #0 + ble _021D9FFE +_021D9FDA: + ldrh r1, [r4] + ldr r0, [sp, #4] + bl FUN_020245F0 + cmp r0, #0 + beq _021D9FF6 + ldr r1, [r5] + ldrh r0, [r4] + lsl r2, r1, #1 + ldr r1, [sp] + strh r0, [r1, r2] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_021D9FF6: + add r6, r6, #1 + add r4, r4, #2 + cmp r6, r7 + blt _021D9FDA +_021D9FFE: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D9FC4 + + thumb_func_start MOD16_021DA004 +MOD16_021DA004: ; 0x021DA004 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + ldr r0, [sp, #0x28] + str r1, [sp, #4] + str r0, [sp, #0x28] + ldr r0, [sp, #0x30] + mov r1, #0 + str r0, [sp, #0x30] + ldr r0, [sp, #0x34] + add r6, r2, #0 + str r0, [sp, #0x34] + ldr r0, [sp, #4] + str r3, [sp, #8] + str r1, [r0] + add r0, r3, #0 + ldr r7, [sp, #0x2c] + str r1, [sp, #0xc] + cmp r0, #0 + ble _021DA07C +_021DA02C: + mov r4, #0 + cmp r7, #0 + ble _021DA054 + ldr r5, [sp, #0x28] +_021DA034: + ldrh r1, [r6] + ldrh r0, [r5] + cmp r1, r0 + bne _021DA04C + ldr r0, [sp, #0x30] + cmp r0, #1 + beq _021DA054 + ldr r0, [sp, #0x34] + bl FUN_02024594 + cmp r0, #0 + bne _021DA054 +_021DA04C: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, r7 + blt _021DA034 +_021DA054: + cmp r4, r7 + bge _021DA06E + ldr r0, [sp, #4] + ldrh r2, [r6] + ldr r0, [r0] + lsl r1, r0, #1 + ldr r0, [sp] + strh r2, [r0, r1] + ldr r0, [sp, #4] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + str r1, [r0] +_021DA06E: + ldr r0, [sp, #0xc] + add r6, r6, #2 + add r1, r0, #1 + ldr r0, [sp, #8] + str r1, [sp, #0xc] + cmp r1, r0 + blt _021DA02C +_021DA07C: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DA004 + + thumb_func_start MOD16_021DA080 +MOD16_021DA080: ; 0x021DA080 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021DA0D4 ; =0x00000F6C + mov r6, #0 + add r7, r3, #0 + add r4, r2, #0 + str r1, [sp] + str r6, [r5, r0] + cmp r7, #0 + ble _021DA0D2 +_021DA094: + ldrh r1, [r4] + ldr r0, [sp] + bl FUN_02024594 + cmp r0, #0 + ldr r0, _021DA0D4 ; =0x00000F6C + beq _021DA0AC + ldr r0, [r5, r0] + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #2 + b _021DA0B4 +_021DA0AC: + ldr r0, [r5, r0] + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #1 +_021DA0B4: + str r0, [r1, #4] + ldr r1, _021DA0D4 ; =0x00000F6C + ldrh r0, [r4] + ldr r1, [r5, r1] + add r6, r6, #1 + lsl r1, r1, #3 + str r0, [r5, r1] + ldr r0, _021DA0D4 ; =0x00000F6C + add r4, r4, #2 + ldr r0, [r5, r0] + add r1, r0, #1 + ldr r0, _021DA0D4 ; =0x00000F6C + str r1, [r5, r0] + cmp r6, r7 + blt _021DA094 +_021DA0D2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DA0D4: .word 0x00000F6C + thumb_func_end MOD16_021DA080 + + thumb_func_start MOD16_021DA0D8 +MOD16_021DA0D8: ; 0x021DA0D8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r4, #0 + ldr r1, _021DA13C ; =0x00001728 + mov ip, r2 + str r4, [r0, r1] + add r1, r2, #0 + mov lr, r4 + cmp r1, #0 + ble _021DA13A + ldr r7, _021DA13C ; =0x00001728 + add r5, r0, #0 +_021DA0F0: + ldr r1, _021DA140 ; =0x00000F6C + ldr r1, [r0, r1] + cmp r4, r1 + bge _021DA12C + ldrh r1, [r6] + ldr r2, [r5] + cmp r2, r1 + ldr r1, _021DA13C ; =0x00001728 + bne _021DA11A + ldr r1, [r0, r1] + add r5, #8 + lsl r1, r1, #2 + add r2, r0, r1 + mov r1, #0xf7 + lsl r1, r1, #4 + str r4, [r2, r1] + ldr r1, [r0, r7] + add r4, r4, #1 + add r1, r1, #1 + str r1, [r0, r7] + b _021DA12C +_021DA11A: + ldr r1, [r0, r1] + ldr r2, _021DA144 ; =0x000001EE + lsl r1, r1, #2 + add r3, r0, r1 + lsl r1, r2, #3 + str r2, [r3, r1] + ldr r1, [r0, r7] + add r1, r1, #1 + str r1, [r0, r7] +_021DA12C: + mov r1, lr + add r1, r1, #1 + mov r2, ip + add r6, r6, #2 + mov lr, r1 + cmp r1, r2 + blt _021DA0F0 +_021DA13A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DA13C: .word 0x00001728 +_021DA140: .word 0x00000F6C +_021DA144: .word 0x000001EE + thumb_func_end MOD16_021DA0D8 + + thumb_func_start MOD16_021DA148 +MOD16_021DA148: ; 0x021DA148 + push {r3, r4, r5, r6} + ldr r2, _021DA17C ; =0x00001728 + mov r1, #0 + str r1, [r0, r2] + ldr r2, _021DA180 ; =0x00000F6C + ldr r2, [r0, r2] + cmp r2, #0 + ble _021DA178 + ldr r5, _021DA17C ; =0x00001728 + mov r3, #0xf7 + lsl r3, r3, #4 + add r2, r5, #0 + sub r4, r3, #4 +_021DA162: + ldr r6, [r0, r2] + lsl r6, r6, #2 + add r6, r0, r6 + str r1, [r6, r3] + ldr r6, [r0, r5] + add r1, r1, #1 + add r6, r6, #1 + str r6, [r0, r5] + ldr r6, [r0, r4] + cmp r1, r6 + blt _021DA162 +_021DA178: + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_021DA17C: .word 0x00001728 +_021DA180: .word 0x00000F6C + thumb_func_end MOD16_021DA148 + + thumb_func_start MOD16_021DA184 +MOD16_021DA184: ; 0x021DA184 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + cmp r5, #0x2f + blt _021DA196 + bl ErrorHandling +_021DA196: + mov r2, #0 + add r5, #0xb + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x4b + add r1, r5, #0 + add r3, r6, #0 + bl FUN_02006D18 + ldr r1, [sp, #8] + lsr r1, r1, #1 + str r1, [r4] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021DA184 + + thumb_func_start MOD16_021DA1B4 +MOD16_021DA1B4: ; 0x021DA1B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + str r1, [sp, #0x10] + add r7, r2, #0 + mov r4, #0 + str r3, [sp, #0x14] + ldr r0, [sp, #0x34] + cmp r5, #5 + bhi _021DA222 + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA1D4: ; jump table + .short _021DA1E0 - _021DA1D4 - 2 ; case 0 + .short _021DA1E4 - _021DA1D4 - 2 ; case 1 + .short _021DA1F2 - _021DA1D4 - 2 ; case 2 + .short _021DA1FE - _021DA1D4 - 2 ; case 3 + .short _021DA20A - _021DA1D4 - 2 ; case 4 + .short _021DA216 - _021DA1D4 - 2 ; case 5 +_021DA1E0: + add r6, r4, #0 + b _021DA226 +_021DA1E4: + mov r1, #2 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + mov r4, #1 + b _021DA226 +_021DA1F2: + mov r1, #3 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + b _021DA226 +_021DA1FE: + mov r1, #4 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + b _021DA226 +_021DA20A: + mov r1, #5 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + b _021DA226 +_021DA216: + mov r1, #6 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + b _021DA226 +_021DA222: + bl ErrorHandling +_021DA226: + cmp r6, #0 + beq _021DA24E + ldr r0, [sp, #0x14] + add r1, r7, #0 + str r0, [sp] + ldr r0, [sp, #0x30] + add r2, r6, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x38] + str r4, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x18] + bl MOD16_021DA004 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} +_021DA24E: + ldr r2, [sp, #0x30] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsl r2, r2, #1 + blx memcpy + ldr r0, [sp, #0x30] + str r0, [r7] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DA1B4 + + thumb_func_start MOD16_021DA264 +MOD16_021DA264: ; 0x021DA264 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + str r3, [sp, #0x10] + ldr r0, [sp, #0x34] + cmp r5, #9 + bhi _021DA306 + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA282: ; jump table + .short _021DA296 - _021DA282 - 2 ; case 0 + .short _021DA29A - _021DA282 - 2 ; case 1 + .short _021DA2A6 - _021DA282 - 2 ; case 2 + .short _021DA2B2 - _021DA282 - 2 ; case 3 + .short _021DA2BE - _021DA282 - 2 ; case 4 + .short _021DA2CA - _021DA282 - 2 ; case 5 + .short _021DA2D6 - _021DA282 - 2 ; case 6 + .short _021DA2E2 - _021DA282 - 2 ; case 7 + .short _021DA2EE - _021DA282 - 2 ; case 8 + .short _021DA2FA - _021DA282 - 2 ; case 9 +_021DA296: + mov r4, #0 + b _021DA30A +_021DA29A: + mov r1, #7 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2A6: + mov r1, #8 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2B2: + mov r1, #9 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2BE: + mov r1, #0xa + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2CA: + mov r1, #0xb + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2D6: + mov r1, #0xc + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2E2: + mov r1, #0xd + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2EE: + mov r1, #0xe + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2FA: + mov r1, #0xf + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA306: + bl ErrorHandling +_021DA30A: + cmp r4, #0 + beq _021DA332 + str r4, [sp] + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + ldr r3, [sp, #0x30] + str r0, [sp, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DA004 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DA332: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x10] + add r0, r7, #0 + lsl r2, r2, #1 + blx memcpy + ldr r0, [sp, #0x30] + str r0, [r6] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DA264 + + thumb_func_start MOD16_021DA348 +MOD16_021DA348: ; 0x021DA348 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + str r3, [sp, #0x10] + ldr r0, [sp, #0x34] + cmp r5, #0x11 + bhi _021DA45A + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA366: ; jump table + .short _021DA38A - _021DA366 - 2 ; case 0 + .short _021DA38E - _021DA366 - 2 ; case 1 + .short _021DA39A - _021DA366 - 2 ; case 2 + .short _021DA3A6 - _021DA366 - 2 ; case 3 + .short _021DA3B2 - _021DA366 - 2 ; case 4 + .short _021DA3BE - _021DA366 - 2 ; case 5 + .short _021DA3CA - _021DA366 - 2 ; case 6 + .short _021DA3D6 - _021DA366 - 2 ; case 7 + .short _021DA3E2 - _021DA366 - 2 ; case 8 + .short _021DA3EE - _021DA366 - 2 ; case 9 + .short _021DA3FA - _021DA366 - 2 ; case 10 + .short _021DA406 - _021DA366 - 2 ; case 11 + .short _021DA412 - _021DA366 - 2 ; case 12 + .short _021DA41E - _021DA366 - 2 ; case 13 + .short _021DA42A - _021DA366 - 2 ; case 14 + .short _021DA436 - _021DA366 - 2 ; case 15 + .short _021DA442 - _021DA366 - 2 ; case 16 + .short _021DA44E - _021DA366 - 2 ; case 17 +_021DA38A: + mov r4, #0 + b _021DA45E +_021DA38E: + mov r1, #0x10 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA39A: + mov r1, #0x11 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3A6: + mov r1, #0x12 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3B2: + mov r1, #0x13 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3BE: + mov r1, #0x14 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3CA: + mov r1, #0x15 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3D6: + mov r1, #0x16 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3E2: + mov r1, #0x17 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3EE: + mov r1, #0x18 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3FA: + mov r1, #0x19 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA406: + mov r1, #0x1a + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA412: + mov r1, #0x1b + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA41E: + mov r1, #0x1c + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA42A: + mov r1, #0x1d + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA436: + mov r1, #0x1e + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA442: + mov r1, #0x1f + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA44E: + mov r1, #0x20 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA45A: + bl ErrorHandling +_021DA45E: + cmp r4, #0 + beq _021DA486 + str r4, [sp] + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + ldr r3, [sp, #0x30] + str r0, [sp, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DA004 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DA486: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x10] + add r0, r7, #0 + lsl r2, r2, #1 + blx memcpy + ldr r0, [sp, #0x30] + str r0, [r6] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DA348 + + thumb_func_start MOD16_021DA49C +MOD16_021DA49C: ; 0x021DA49C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + str r3, [sp, #0x10] + ldr r0, [sp, #0x34] + cmp r5, #0xe + bhi _021DA584 + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA4BA: ; jump table + .short _021DA4D8 - _021DA4BA - 2 ; case 0 + .short _021DA4DC - _021DA4BA - 2 ; case 1 + .short _021DA4E8 - _021DA4BA - 2 ; case 2 + .short _021DA4F4 - _021DA4BA - 2 ; case 3 + .short _021DA500 - _021DA4BA - 2 ; case 4 + .short _021DA50C - _021DA4BA - 2 ; case 5 + .short _021DA518 - _021DA4BA - 2 ; case 6 + .short _021DA524 - _021DA4BA - 2 ; case 7 + .short _021DA530 - _021DA4BA - 2 ; case 8 + .short _021DA53C - _021DA4BA - 2 ; case 9 + .short _021DA548 - _021DA4BA - 2 ; case 10 + .short _021DA554 - _021DA4BA - 2 ; case 11 + .short _021DA560 - _021DA4BA - 2 ; case 12 + .short _021DA56C - _021DA4BA - 2 ; case 13 + .short _021DA578 - _021DA4BA - 2 ; case 14 +_021DA4D8: + mov r4, #0 + b _021DA588 +_021DA4DC: + mov r1, #0x21 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA4E8: + mov r1, #0x22 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA4F4: + mov r1, #0x23 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA500: + mov r1, #0x24 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA50C: + mov r1, #0x25 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA518: + mov r1, #0x26 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA524: + mov r1, #0x27 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA530: + mov r1, #0x28 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA53C: + mov r1, #0x29 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA548: + mov r1, #0x2a + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA554: + mov r1, #0x2b + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA560: + mov r1, #0x2c + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA56C: + mov r1, #0x2d + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA578: + mov r1, #0x2e + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA584: + bl ErrorHandling +_021DA588: + cmp r4, #0 + beq _021DA5B0 + str r4, [sp] + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + ldr r3, [sp, #0x30] + str r0, [sp, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DA004 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DA5B0: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x10] + add r0, r7, #0 + lsl r2, r2, #1 + blx memcpy + ldr r0, [sp, #0x30] + str r0, [r6] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DA49C + + thumb_func_start MOD16_021DA5C4 +MOD16_021DA5C4: ; 0x021DA5C4 + push {r3, r4, r5, r6} + mov r3, #0 + str r3, [r1] + ldr r4, _021DA5F8 ; =0x00000F6C + str r3, [r2] + ldr r4, [r0, r4] + cmp r4, #0 + ble _021DA5F4 + ldr r5, _021DA5F8 ; =0x00000F6C + add r4, r0, #0 +_021DA5D8: + ldr r6, [r4, #4] + cmp r6, #2 + bne _021DA5E4 + ldr r6, [r2] + add r6, r6, #1 + str r6, [r2] +_021DA5E4: + ldr r6, [r1] + add r3, r3, #1 + add r6, r6, #1 + str r6, [r1] + ldr r6, [r0, r5] + add r4, #8 + cmp r3, r6 + blt _021DA5D8 +_021DA5F4: + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_021DA5F8: .word 0x00000F6C + thumb_func_end MOD16_021DA5C4 + + thumb_func_start MOD16_021DA5FC +MOD16_021DA5FC: ; 0x021DA5FC + push {r3, r4, r5, lr} + mov r1, #0x48 + add r5, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DA60E + bl ErrorHandling +_021DA60E: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x48 + blx Call_FillMemWithValue + mov r0, #5 + str r0, [r4, #8] + str r5, [r4, #0x44] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DA5FC + + thumb_func_start MOD16_021DA624 +MOD16_021DA624: ; 0x021DA624 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _021DA632 + bl ErrorHandling +_021DA632: + cmp r4, #0 + bne _021DA63A + bl ErrorHandling +_021DA63A: + add r0, r5, #0 + bl MOD16_021DA7C4 + cmp r0, #0 + bne _021DA648 + bl ErrorHandling +_021DA648: + ldr r0, [r4] + str r0, [r5] + ldr r0, [r4, #4] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #8] + add r0, r5, #0 + add r0, #0xc + bl MOD16_021DA7F4 + ldr r0, [r5, #0x44] + str r0, [r5, #0x10] + add r0, r5, #0 + add r0, #0x2c + bl MOD16_021DA800 + ldr r0, [r5, #0x44] + str r0, [r5, #0x30] + ldr r0, [r4, #8] + ldr r0, [r0] + str r0, [r5, #0x20] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + str r0, [r5, #0x24] + ldr r0, [r4, #8] + ldr r0, [r0, #8] + str r0, [r5, #0x28] + ldr r0, [r4, #0xc] + ldr r0, [r0] + str r0, [r5, #0x38] + ldr r0, [r4, #0xc] + ldr r0, [r0, #4] + str r0, [r5, #0x3c] + ldr r0, [r4, #0xc] + ldr r0, [r0, #8] + str r0, [r5, #0x40] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DA624 + + thumb_func_start MOD16_021DA694 +MOD16_021DA694: ; 0x021DA694 + push {r4, lr} + add r4, r0, #0 + bne _021DA69E + bl ErrorHandling +_021DA69E: + ldr r0, [r4, #8] + cmp r0, #5 + bhi _021DA712 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA6B0: ; jump table + .short _021DA6BC - _021DA6B0 - 2 ; case 0 + .short _021DA716 - _021DA6B0 - 2 ; case 1 + .short _021DA6D8 - _021DA6B0 - 2 ; case 2 + .short _021DA716 - _021DA6B0 - 2 ; case 3 + .short _021DA6F6 - _021DA6B0 - 2 ; case 4 + .short _021DA70E - _021DA6B0 - 2 ; case 5 +_021DA6BC: + add r1, r4, #0 + ldr r0, [r4, #0x20] + ldr r2, [r4] + add r1, #0xc + bl MOD16_021DA808 + cmp r0, #1 + bne _021DA716 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0xc] + b _021DA716 +_021DA6D8: + add r1, r4, #0 + ldr r0, [r4, #0x24] + ldr r2, [r4] + add r1, #0xc + bl MOD16_021DA808 + cmp r0, #1 + bne _021DA716 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0xc] + str r0, [r4, #0x2c] + b _021DA716 +_021DA6F6: + add r1, r4, #0 + ldr r0, [r4, #0x28] + ldr r2, [r4] + add r1, #0xc + bl MOD16_021DA808 + cmp r0, #1 + bne _021DA716 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _021DA716 +_021DA70E: + mov r0, #1 + pop {r4, pc} +_021DA712: + bl ErrorHandling +_021DA716: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DA694 + + thumb_func_start MOD16_021DA71C +MOD16_021DA71C: ; 0x021DA71C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bne _021DA728 + bl ErrorHandling +_021DA728: + ldr r0, [r4, #8] + cmp r0, #5 + bhi _021DA7A6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA73A: ; jump table + .short _021DA7AA - _021DA73A - 2 ; case 0 + .short _021DA746 - _021DA73A - 2 ; case 1 + .short _021DA76A - _021DA73A - 2 ; case 2 + .short _021DA780 - _021DA73A - 2 ; case 3 + .short _021DA7AA - _021DA73A - 2 ; case 4 + .short _021DA7A0 - _021DA73A - 2 ; case 5 +_021DA746: + add r0, r4, #0 + add r0, #0xc + str r0, [sp] + add r2, r4, #0 + ldr r0, [r4, #0x38] + ldr r1, [r4, #4] + ldr r3, [r4] + add r2, #0x2c + bl MOD16_021DA828 + cmp r0, #1 + bne _021DA7AA + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0x2c] + b _021DA7AA +_021DA76A: + add r0, r4, #0 + add r0, #0xc + str r0, [sp] + add r2, r4, #0 + ldr r0, [r4, #0x3c] + ldr r1, [r4, #4] + ldr r3, [r4] + add r2, #0x2c + bl MOD16_021DA828 + b _021DA7AA +_021DA780: + add r0, r4, #0 + add r0, #0xc + str r0, [sp] + add r2, r4, #0 + ldr r0, [r4, #0x40] + ldr r1, [r4, #4] + ldr r3, [r4] + add r2, #0x2c + bl MOD16_021DA828 + cmp r0, #1 + bne _021DA7AA + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _021DA7AA +_021DA7A0: + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021DA7A6: + bl ErrorHandling +_021DA7AA: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021DA71C + + thumb_func_start MOD16_021DA7B0 +MOD16_021DA7B0: ; 0x021DA7B0 + str r1, [r0, #0x1c] + bx lr + thumb_func_end MOD16_021DA7B0 + + thumb_func_start MOD16_021DA7B4 +MOD16_021DA7B4: ; 0x021DA7B4 + push {r4, lr} + add r4, r0, #0 + bne _021DA7BE + bl ErrorHandling +_021DA7BE: + mov r0, #1 + str r0, [r4, #0x18] + pop {r4, pc} + thumb_func_end MOD16_021DA7B4 + + thumb_func_start MOD16_021DA7C4 +MOD16_021DA7C4: ; 0x021DA7C4 + push {r4, lr} + add r4, r0, #0 + bne _021DA7CE + bl ErrorHandling +_021DA7CE: + ldr r0, [r4, #8] + cmp r0, #5 + bne _021DA7D8 + mov r0, #1 + pop {r4, pc} +_021DA7D8: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021DA7C4 + + thumb_func_start MOD16_021DA7DC +MOD16_021DA7DC: ; 0x021DA7DC + push {r4, lr} + add r4, r0, #0 + bne _021DA7E6 + bl ErrorHandling +_021DA7E6: + ldr r0, [r4, #8] + cmp r0, #2 + bne _021DA7F0 + mov r0, #1 + pop {r4, pc} +_021DA7F0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021DA7DC + + thumb_func_start MOD16_021DA7F4 +MOD16_021DA7F4: ; 0x021DA7F4 + mov r1, #0 + str r1, [r0] + str r1, [r0, #8] + str r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DA7F4 + + thumb_func_start MOD16_021DA800 +MOD16_021DA800: ; 0x021DA800 + mov r1, #0 + str r1, [r0] + str r1, [r0, #8] + bx lr + thumb_func_end MOD16_021DA800 + + thumb_func_start MOD16_021DA808 +MOD16_021DA808: ; 0x021DA808 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + cmp r5, #0 + bne _021DA818 + bl ErrorHandling +_021DA818: + cmp r4, #0 + bne _021DA820 + bl ErrorHandling +_021DA820: + add r0, r4, #0 + add r1, r6, #0 + blx r5 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DA808 + + thumb_func_start MOD16_021DA828 +MOD16_021DA828: ; 0x021DA828 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + cmp r5, #0 + bne _021DA83A + bl ErrorHandling +_021DA83A: + cmp r4, #0 + bne _021DA842 + bl ErrorHandling +_021DA842: + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _021DA84C + bl ErrorHandling +_021DA84C: + ldr r3, [sp, #0x18] + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + blx r5 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DA828 + + thumb_func_start MOD16_021DA858 +MOD16_021DA858: ; 0x021DA858 + push {r4, lr} + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021DA868 + bl ErrorHandling +_021DA868: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DA858 + + thumb_func_start MOD16_021DA888 +MOD16_021DA888: ; 0x021DA888 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + cmp r5, #0 + bne _021DA898 + bl ErrorHandling +_021DA898: + str r4, [r5] + str r6, [r5, #4] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DA888 + + thumb_func_start MOD16_021DA8A0 +MOD16_021DA8A0: ; 0x021DA8A0 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + cmp r4, #0 + bne _021DA8AE + bl ErrorHandling +_021DA8AE: + add r0, r4, #0 + bl MOD16_021DA908 + cmp r0, #0 + bne _021DA8CA + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DA918 + add r1, r0, #0 + beq _021DA8CA + add r0, r4, #0 + bl MOD16_021DA950 +_021DA8CA: + add r0, r4, #0 + bl MOD16_021DA908 + cmp r0, #1 + bne _021DA8EA + ldr r1, [r4, #8] + add r0, r1, #0 + ldr r1, [r1, #4] + add r0, #8 + blx r1 + cmp r0, #1 + bne _021DA8EA + add r0, r4, #0 + mov r1, #0 + bl MOD16_021DA950 +_021DA8EA: + ldr r0, [r4, #8] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DA8A0 + + thumb_func_start MOD16_021DA8F0 +MOD16_021DA8F0: ; 0x021DA8F0 + push {r4, lr} + add r4, r0, #0 + bne _021DA8FA + bl ErrorHandling +_021DA8FA: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DA904 + mov r0, #1 + pop {r4, pc} +_021DA904: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021DA8F0 + + thumb_func_start MOD16_021DA908 +MOD16_021DA908: ; 0x021DA908 + ldr r0, [r0, #8] + cmp r0, #0 + beq _021DA912 + mov r0, #1 + bx lr +_021DA912: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021DA908 + + thumb_func_start MOD16_021DA918 +MOD16_021DA918: ; 0x021DA918 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r7, r1, #0 + mov r6, #0 + cmp r0, #0 + ble _021DA94C + add r4, r6, #0 +_021DA928: + ldr r0, [r5] + cmp r0, #0 + bne _021DA932 + bl ErrorHandling +_021DA932: + ldr r0, [r5] + ldr r1, [r0, r4] + tst r1, r7 + beq _021DA942 + mov r1, #0x14 + mul r1, r6 + add r0, r0, r1 + pop {r3, r4, r5, r6, r7, pc} +_021DA942: + ldr r0, [r5, #4] + add r6, r6, #1 + add r4, #0x14 + cmp r6, r0 + blt _021DA928 +_021DA94C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DA918 + + thumb_func_start MOD16_021DA950 +MOD16_021DA950: ; 0x021DA950 + str r1, [r0, #8] + cmp r1, #0 + beq _021DA95A + mov r0, #0 + str r0, [r1, #8] +_021DA95A: + bx lr + thumb_func_end MOD16_021DA950 + + thumb_func_start MOD16_021DA95C +MOD16_021DA95C: ; 0x021DA95C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r2, [r4, #8] + cmp r0, #3 + bhi _021DA9BC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA974: ; jump table + .short _021DA97C - _021DA974 - 2 ; case 0 + .short _021DA98A - _021DA974 - 2 ; case 1 + .short _021DA99C - _021DA974 - 2 ; case 2 + .short _021DA9AE - _021DA974 - 2 ; case 3 +_021DA97C: + ldr r0, [r2, #4] + bl MOD16_021DA7B4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9C0 +_021DA98A: + ldr r0, [r2, #4] + bl MOD16_021DA7C4 + cmp r0, #1 + bne _021DA9C0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9C0 +_021DA99C: + ldr r0, [r2] + ldr r1, [r2, #8] + ldr r2, [r2, #4] + bl MOD16_021DAC44 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9C0 +_021DA9AE: + ldr r0, [r2, #4] + bl MOD16_021DA7DC + cmp r0, #1 + bne _021DA9C0 + mov r0, #1 + pop {r4, pc} +_021DA9BC: + bl ErrorHandling +_021DA9C0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021DA95C + + thumb_func_start MOD16_021DA9C4 +MOD16_021DA9C4: ; 0x021DA9C4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #8] + cmp r0, #0 + beq _021DA9DC + cmp r0, #1 + beq _021DA9FC + cmp r0, #2 + beq _021DAA3A + b _021DAA44 +_021DA9DC: + ldr r0, [r4] + bl MOD16_021DA7B4 + ldr r0, [r4, #4] + bl MOD16_021DA7B4 + ldr r0, [r4, #8] + bl MOD16_021DA7B4 + ldr r0, [r4, #0xc] + bl MOD16_021DA7B4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAA48 +_021DA9FC: + ldr r0, [r4] + bl MOD16_021DA7C4 + str r0, [sp] + ldr r0, [r4, #4] + bl MOD16_021DA7C4 + str r0, [sp, #4] + ldr r0, [r4, #8] + bl MOD16_021DA7C4 + str r0, [sp, #8] + ldr r0, [r4, #0xc] + bl MOD16_021DA7C4 + str r0, [sp, #0xc] + mov r1, #0 + add r2, sp, #0 +_021DAA20: + ldr r0, [r2] + cmp r0, #0 + beq _021DAA2E + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #4 + blt _021DAA20 +_021DAA2E: + cmp r1, #4 + blt _021DAA48 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAA48 +_021DAA3A: + ldr r1, [r4, #0x10] + mov r0, #1 + str r0, [r1] + add sp, #0x10 + pop {r3, r4, r5, pc} +_021DAA44: + bl ErrorHandling +_021DAA48: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DA9C4 + + thumb_func_start MOD16_021DAA50 +MOD16_021DAA50: ; 0x021DAA50 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #8] + cmp r0, #3 + bls _021DAA60 + b _021DAB68 +_021DAA60: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAA6C: ; jump table + .short _021DAA74 - _021DAA6C - 2 ; case 0 + .short _021DAA94 - _021DAA6C - 2 ; case 1 + .short _021DAAD2 - _021DAA6C - 2 ; case 2 + .short _021DAB02 - _021DAA6C - 2 ; case 3 +_021DAA74: + ldr r0, [r4] + bl MOD16_021DA7B4 + ldr r0, [r4, #4] + bl MOD16_021DA7B4 + ldr r0, [r4, #8] + bl MOD16_021DA7B4 + ldr r0, [r4, #0xc] + bl MOD16_021DA7B4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAB6C +_021DAA94: + ldr r0, [r4] + bl MOD16_021DA7C4 + str r0, [sp] + ldr r0, [r4, #4] + bl MOD16_021DA7C4 + str r0, [sp, #4] + ldr r0, [r4, #8] + bl MOD16_021DA7C4 + str r0, [sp, #8] + ldr r0, [r4, #0xc] + bl MOD16_021DA7C4 + str r0, [sp, #0xc] + mov r1, #0 + add r2, sp, #0 +_021DAAB8: + ldr r0, [r2] + cmp r0, #0 + beq _021DAAC6 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #4 + blt _021DAAB8 +_021DAAC6: + cmp r1, #4 + blt _021DAB6C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAB6C +_021DAAD2: + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x10] + ldr r2, [r4] + bl MOD16_021DAC44 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x14] + ldr r2, [r4, #4] + bl MOD16_021DAC44 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x18] + ldr r2, [r4, #8] + bl MOD16_021DAC44 + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x1c] + ldr r2, [r4, #0xc] + bl MOD16_021DAC44 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAB6C +_021DAB02: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _021DAB12 + ldr r0, [r4] + bl MOD16_021DA7DC + str r0, [sp] + b _021DAB16 +_021DAB12: + mov r0, #1 + str r0, [sp] +_021DAB16: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021DAB24 + ldr r0, [r4, #4] + bl MOD16_021DA7DC + str r0, [sp, #4] +_021DAB24: + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _021DAB34 + ldr r0, [r4, #8] + bl MOD16_021DA7DC + str r0, [sp, #8] + b _021DAB38 +_021DAB34: + mov r0, #1 + str r0, [sp, #8] +_021DAB38: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021DAB48 + ldr r0, [r4, #0xc] + bl MOD16_021DA7DC + str r0, [sp, #0xc] + b _021DAB4C +_021DAB48: + mov r0, #1 + str r0, [sp, #0xc] +_021DAB4C: + mov r2, #0 + add r1, sp, #0 +_021DAB50: + ldr r0, [r1] + cmp r0, #0 + beq _021DAB5E + add r2, r2, #1 + add r1, r1, #4 + cmp r2, #4 + blt _021DAB50 +_021DAB5E: + cmp r2, #4 + blt _021DAB6C + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DAB68: + bl ErrorHandling +_021DAB6C: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DAA50 + + thumb_func_start MOD16_021DAB74 +MOD16_021DAB74: ; 0x021DAB74 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #8] + cmp r0, #3 + bhi _021DAC38 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAB8E: ; jump table + .short _021DAB96 - _021DAB8E - 2 ; case 0 + .short _021DABAA - _021DAB8E - 2 ; case 1 + .short _021DABD8 - _021DAB8E - 2 ; case 2 + .short _021DABF4 - _021DAB8E - 2 ; case 3 +_021DAB96: + ldr r0, [r4] + bl MOD16_021DA7B4 + ldr r0, [r4, #4] + bl MOD16_021DA7B4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAC3C +_021DABAA: + ldr r0, [r4] + bl MOD16_021DA7C4 + str r0, [sp] + ldr r0, [r4, #4] + bl MOD16_021DA7C4 + str r0, [sp, #4] + mov r1, #0 + add r2, sp, #0 +_021DABBE: + ldr r0, [r2] + cmp r0, #0 + beq _021DABCC + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021DABBE +_021DABCC: + cmp r1, #2 + blt _021DAC3C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAC3C +_021DABD8: + ldr r0, [r4, #0x10] + ldr r1, [r4, #8] + ldr r2, [r4] + bl MOD16_021DAC44 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0xc] + ldr r2, [r4, #4] + bl MOD16_021DAC44 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAC3C +_021DABF4: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DAC04 + ldr r0, [r4] + bl MOD16_021DA7DC + str r0, [sp] + b _021DAC08 +_021DAC04: + mov r0, #1 + str r0, [sp] +_021DAC08: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DAC18 + ldr r0, [r4, #4] + bl MOD16_021DA7DC + str r0, [sp, #4] + b _021DAC1C +_021DAC18: + mov r0, #1 + str r0, [sp, #4] +_021DAC1C: + mov r2, #0 + add r1, sp, #0 +_021DAC20: + ldr r0, [r1] + cmp r0, #0 + beq _021DAC2E + add r2, r2, #1 + add r1, r1, #4 + cmp r2, #2 + blt _021DAC20 +_021DAC2E: + cmp r2, #2 + blt _021DAC3C + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DAC38: + bl ErrorHandling +_021DAC3C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DAB74 + + thumb_func_start MOD16_021DAC44 +MOD16_021DAC44: ; 0x021DAC44 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + beq _021DAC76 + ldr r0, [r5] + add r1, sp, #0 + str r0, [sp] + ldr r0, [r5, #4] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x14 + str r0, [sp, #0xc] + add r0, r2, #0 + bl MOD16_021DA624 + ldr r1, [r5, #0x20] + ldr r2, [r5, #0x24] + add r0, r4, #0 + bl MOD16_021DA888 +_021DAC76: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DAC44 + + thumb_func_start MOD16_021DAC7C +MOD16_021DAC7C: ; 0x021DAC7C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _021DAC8A + bl ErrorHandling +_021DAC8A: + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x10] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DAC7C + + thumb_func_start MOD16_021DAC98 +MOD16_021DAC98: ; 0x021DAC98 + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r1, _021DAD1C ; =MOD16_021DAA50 + str r3, [r6] + str r1, [r6, #4] + mov r1, #0x30 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DACB2 + bl ErrorHandling +_021DACB2: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x30 + blx Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7A60 + str r0, [r4, #8] + add r0, r5, #0 + bl MOD16_021D7A74 + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD16_021D7A88 + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD16_021D7A9C + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD16_021D7AB0 + str r0, [r4, #0x18] + add r0, r5, #0 + bl MOD16_021D7AC4 + str r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D7B5C + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D7B7C + str r0, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + str r4, [r6, #0x10] + pop {r4, r5, r6, pc} + nop +_021DAD1C: .word MOD16_021DAA50 + thumb_func_end MOD16_021DAC98 + + thumb_func_start MOD16_021DAD20 +MOD16_021DAD20: ; 0x021DAD20 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DAD74 ; =MOD16_021DA9C4 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x14 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAD3A + bl ErrorHandling +_021DAD3A: + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_021DAD40: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DAD40 + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A60 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A74 + str r0, [r4, #0xc] + add r0, r6, #0 + bl MOD16_021D7B28 + str r0, [r4, #0x10] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAD74: .word MOD16_021DA9C4 + thumb_func_end MOD16_021DAD20 + + thumb_func_start MOD16_021DAD78 +MOD16_021DAD78: ; 0x021DAD78 + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r1, _021DAE08 ; =MOD16_021DAA50 + str r3, [r6] + str r1, [r6, #4] + mov r1, #0x30 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAD92 + bl ErrorHandling +_021DAD92: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x30 + blx Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7A60 + str r0, [r4, #8] + add r0, r5, #0 + bl MOD16_021D7A74 + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD16_021D7A88 + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD16_021D7A9C + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD16_021D7AB0 + str r0, [r4, #0x18] + add r0, r5, #0 + bl MOD16_021D7AC4 + str r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #2 + bl MOD16_021D7B5C + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #2 + bl MOD16_021D7B7C + str r0, [r4, #0x24] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #0x28] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #0x2c] + str r4, [r6, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAE08: .word MOD16_021DAA50 + thumb_func_end MOD16_021DAD78 + + thumb_func_start MOD16_021DAE0C +MOD16_021DAE0C: ; 0x021DAE0C + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r1, _021DAE90 ; =MOD16_021DAA50 + str r3, [r6] + str r1, [r6, #4] + mov r1, #0x30 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAE26 + bl ErrorHandling +_021DAE26: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x30 + blx Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7A60 + str r0, [r4, #8] + add r0, r5, #0 + bl MOD16_021D7A74 + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD16_021D7A88 + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD16_021D7A9C + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD16_021D7AB0 + str r0, [r4, #0x18] + add r0, r5, #0 + bl MOD16_021D7AC4 + str r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #0 + bl MOD16_021D7B5C + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #0 + bl MOD16_021D7B7C + str r0, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + str r4, [r6, #0x10] + pop {r4, r5, r6, pc} + nop +_021DAE90: .word MOD16_021DAA50 + thumb_func_end MOD16_021DAE0C + + thumb_func_start MOD16_021DAE94 +MOD16_021DAE94: ; 0x021DAE94 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021DAED0 ; =MOD16_021DA95C + str r3, [r5] + add r6, r1, #0 + str r0, [r5, #4] + add r0, r2, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021DAEB0 + bl ErrorHandling +_021DAEB0: + add r0, r6, #0 + mov r1, #0 + bl MOD16_021D7B5C + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DAED0: .word MOD16_021DA95C + thumb_func_end MOD16_021DAE94 + + thumb_func_start MOD16_021DAED4 +MOD16_021DAED4: ; 0x021DAED4 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DAF34 ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAEEE + bl ErrorHandling +_021DAEEE: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DAEF4: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DAEF4 + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #6 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #4 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAF34: .word MOD16_021DAB74 + thumb_func_end MOD16_021DAED4 + + thumb_func_start MOD16_021DAF38 +MOD16_021DAF38: ; 0x021DAF38 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DAF98 ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAF52 + bl ErrorHandling +_021DAF52: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DAF58: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DAF58 + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #7 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #5 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAF98: .word MOD16_021DAB74 + thumb_func_end MOD16_021DAF38 + + thumb_func_start MOD16_021DAF9C +MOD16_021DAF9C: ; 0x021DAF9C + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DAFFC ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAFB6 + bl ErrorHandling +_021DAFB6: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DAFBC: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DAFBC + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #8 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #6 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAFFC: .word MOD16_021DAB74 + thumb_func_end MOD16_021DAF9C + + thumb_func_start MOD16_021DB000 +MOD16_021DB000: ; 0x021DB000 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB054 ; =MOD16_021DA95C + str r3, [r5] + str r1, [r5, #4] + mov r1, #0xc + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB01A + bl ErrorHandling +_021DB01A: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + mov r1, #8 + bl MOD16_021D7B5C + str r0, [r4] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DB054: .word MOD16_021DA95C + thumb_func_end MOD16_021DB000 + + thumb_func_start MOD16_021DB058 +MOD16_021DB058: ; 0x021DB058 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB0AC ; =MOD16_021DA95C + str r3, [r5] + str r1, [r5, #4] + mov r1, #0xc + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB072 + bl ErrorHandling +_021DB072: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + mov r1, #9 + bl MOD16_021D7B5C + str r0, [r4] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DB0AC: .word MOD16_021DA95C + thumb_func_end MOD16_021DB058 + + thumb_func_start MOD16_021DB0B0 +MOD16_021DB0B0: ; 0x021DB0B0 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB110 ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB0CA + bl ErrorHandling +_021DB0CA: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DB0D0: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DB0D0 + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #2 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #2 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DB110: .word MOD16_021DAB74 + thumb_func_end MOD16_021DB0B0 + + thumb_func_start MOD16_021DB114 +MOD16_021DB114: ; 0x021DB114 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB168 ; =MOD16_021DA95C + str r3, [r5] + str r1, [r5, #4] + mov r1, #0xc + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB12E + bl ErrorHandling +_021DB12E: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + mov r1, #2 + bl MOD16_021D7B5C + str r0, [r4] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DB168: .word MOD16_021DA95C + thumb_func_end MOD16_021DB114 + + thumb_func_start MOD16_021DB16C +MOD16_021DB16C: ; 0x021DB16C + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB1CC ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB186 + bl ErrorHandling +_021DB186: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DB18C: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DB18C + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #3 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #7 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DB1CC: .word MOD16_021DAB74 + thumb_func_end MOD16_021DB16C + + thumb_func_start MOD16_021DB1D0 +MOD16_021DB1D0: ; 0x021DB1D0 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB224 ; =MOD16_021DA95C + str r3, [r5] + str r1, [r5, #4] + mov r1, #0xc + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB1EA + bl ErrorHandling +_021DB1EA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + mov r1, #4 + bl MOD16_021D7B5C + str r0, [r4] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DB224: .word MOD16_021DA95C + thumb_func_end MOD16_021DB1D0 + + thumb_func_start MOD16_021DB228 +MOD16_021DB228: ; 0x021DB228 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB23C + bl ErrorHandling +_021DB23C: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DB242: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DB242 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + bl FUN_02011744 + str r0, [r4] + ldr r1, [r5, #8] + ldr r0, [r5, #0xc] + lsl r1, r1, #4 + bl FUN_02016998 + str r0, [r4, #0xc] + cmp r0, #0 + bne _021DB268 + bl ErrorHandling +_021DB268: + ldr r2, [r5, #8] + ldr r0, [r4, #0xc] + mov r1, #0 + lsl r2, r2, #4 + blx Call_FillMemWithValue + ldr r0, [r5, #8] + str r0, [r4, #0x10] + ldr r0, [r5] + str r0, [r4, #4] + ldr r0, [r5, #4] + str r0, [r4, #8] + ldr r0, [r5, #0xc] + str r0, [r4, #0x14] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DB228 + + thumb_func_start MOD16_021DB288 +MOD16_021DB288: ; 0x021DB288 + push {r4, lr} + add r4, r0, #0 + bne _021DB292 + bl ErrorHandling +_021DB292: + add r0, r4, #0 + bl MOD16_021DB358 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + ldr r0, [r4] + bl FUN_020117BC + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DB2AA: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DB2AA + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DB288 + + thumb_func_start MOD16_021DB2BC +MOD16_021DB2BC: ; 0x021DB2BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl FUN_02011898 + add r1, r0, #0 + add r0, r4, #0 + bl MOD16_021DB2D4 + pop {r4, pc} + thumb_func_end MOD16_021DB2BC + + thumb_func_start MOD16_021DB2D4 +MOD16_021DB2D4: ; 0x021DB2D4 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + bl MOD16_021DB460 + add r4, r0, #0 + bne _021DB2EA + bl ErrorHandling +_021DB2EA: + ldr r2, [r5, #0x20] + add r0, r6, #0 + mov r1, #1 + add r3, r4, #4 + bl FUN_0201D568 + ldr r0, [r5] + ldr r0, [r0] + str r0, [sp] + ldr r0, [r5, #4] + str r0, [sp, #4] + ldr r0, [r5] + ldr r0, [r0, #4] + str r0, [sp, #8] + ldr r0, [r5, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0xc] + str r0, [sp, #0x10] + ldr r0, [r4, #8] + str r0, [sp, #0x14] + ldr r0, [r5, #0x10] + str r0, [sp, #0x18] + ldr r0, [r5, #0x14] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x18] + str r0, [sp, #0x20] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x24] + ldr r0, [r5, #0x20] + str r0, [sp, #0x28] + ldr r0, [r5, #0x24] + str r0, [sp, #0x2c] + add r0, sp, #0 + bl FUN_020117E8 + str r0, [r4] + add r0, r4, #0 + add sp, #0x30 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DB2D4 + + thumb_func_start MOD16_021DB338 +MOD16_021DB338: ; 0x021DB338 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02011870 + add r0, r4, #4 + bl FUN_0201D5E8 + mov r1, #0x10 + mov r0, #0 +_021DB34C: + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + bne _021DB34C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DB338 + + thumb_func_start MOD16_021DB358 +MOD16_021DB358: ; 0x021DB358 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + mov r6, #0 + cmp r0, #0 + ble _021DB384 + add r4, r6, #0 +_021DB366: + ldr r0, [r5, #0xc] + add r0, r0, r4 + bl MOD16_021DB450 + cmp r0, #0 + beq _021DB37A + ldr r0, [r5, #0xc] + add r0, r0, r4 + bl MOD16_021DB338 +_021DB37A: + ldr r0, [r5, #0x10] + add r6, r6, #1 + add r4, #0x10 + cmp r6, r0 + blt _021DB366 +_021DB384: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DB358 + + thumb_func_start MOD16_021DB388 +MOD16_021DB388: ; 0x021DB388 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x14] + add r4, r1, #0 + mov r1, #1 + add r6, r2, #0 + bl FUN_02018FF4 + add r7, r0, #0 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + lsl r2, r4, #0x18 + lsl r3, r6, #0x18 + ldr r0, [r5, #8] + add r1, r7, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020190EC + add r0, r7, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB388 + + thumb_func_start MOD16_021DB3BC +MOD16_021DB3BC: ; 0x021DB3BC + ldr r3, _021DB3C4 ; =0x020191A5 + mov r1, #1 + bx r3 + nop +_021DB3C4: .word 0x020191A5 + thumb_func_end MOD16_021DB3BC + + thumb_func_start MOD16_021DB3C8 +MOD16_021DB3C8: ; 0x021DB3C8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r3, #0 + add r6, r1, #0 + ldr r3, [r5, #0x14] + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + add r5, r0, #0 + bne _021DB3E4 + bl ErrorHandling +_021DB3E4: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DB428 ; =0x00030201 + mov r1, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r6, #0 + add r2, r4, #0 + bl FUN_0201BDE0 + mov r0, #2 + add r1, r4, #0 + mov r2, #0 + bl FUN_02002E14 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r6, #0 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DB428: .word 0x00030201 + thumb_func_end MOD16_021DB3C8 + + thumb_func_start MOD16_021DB42C +MOD16_021DB42C: ; 0x021DB42C + push {r3, lr} + sub sp, #0x10 + ldr r0, [sp, #0x18] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DB44C ; =0x00030201 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r1, #0 + mov r1, #2 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r3, pc} + .align 2, 0 +_021DB44C: .word 0x00030201 + thumb_func_end MOD16_021DB42C + + thumb_func_start MOD16_021DB450 +MOD16_021DB450: ; 0x021DB450 + ldr r0, [r0] + cmp r0, #0 + beq _021DB45A + mov r0, #1 + bx lr +_021DB45A: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021DB450 + + thumb_func_start MOD16_021DB460 +MOD16_021DB460: ; 0x021DB460 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + mov r6, #0 + cmp r0, #0 + ble _021DB48C + add r4, r6, #0 +_021DB46E: + ldr r0, [r5, #0xc] + add r0, r0, r4 + bl MOD16_021DB450 + cmp r0, #0 + bne _021DB482 + ldr r1, [r5, #0xc] + lsl r0, r6, #4 + add r0, r1, r0 + pop {r4, r5, r6, pc} +_021DB482: + ldr r0, [r5, #0x10] + add r6, r6, #1 + add r4, #0x10 + cmp r6, r0 + blt _021DB46E +_021DB48C: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DB460 + + thumb_func_start MOD16_021DB490 +MOD16_021DB490: ; 0x021DB490 + push {r3, lr} + mov r1, #0x14 + bl FUN_02016998 + add r3, r0, #0 + mov r2, #0x14 + mov r1, #0 +_021DB49E: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _021DB49E + pop {r3, pc} + thumb_func_end MOD16_021DB490 + + thumb_func_start MOD16_021DB4A8 +MOD16_021DB4A8: ; 0x021DB4A8 + ldr r3, _021DB4AC ; =0x02016A19 + bx r3 + .align 2, 0 +_021DB4AC: .word 0x02016A19 + thumb_func_end MOD16_021DB4A8 + + thumb_func_start MOD16_021DB4B0 +MOD16_021DB4B0: ; 0x021DB4B0 + push {r3, r4, r5, r6} + add r6, r0, #0 + mov r5, #0x14 + mov r4, #0 +_021DB4B8: + strb r4, [r6] + add r6, r6, #1 + sub r5, r5, #1 + bne _021DB4B8 + str r1, [r0] + str r2, [r0, #4] + str r3, [r0, #8] + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + thumb_func_end MOD16_021DB4B0 + + thumb_func_start MOD16_021DB4CC +MOD16_021DB4CC: ; 0x021DB4CC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #4 + bhi _021DB526 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DB4E2: ; jump table + .short _021DB4EC - _021DB4E2 - 2 ; case 0 + .short _021DB4F4 - _021DB4E2 - 2 ; case 1 + .short _021DB4FC - _021DB4E2 - 2 ; case 2 + .short _021DB50E - _021DB4E2 - 2 ; case 3 + .short _021DB520 - _021DB4E2 - 2 ; case 4 +_021DB4EC: + add r1, r4, #0 + bl MOD16_021DB68C + pop {r3, r4, r5, pc} +_021DB4F4: + add r1, r4, #0 + bl MOD16_021DB6BC + pop {r3, r4, r5, pc} +_021DB4FC: + cmp r4, #0 + blt _021DB506 + ldr r0, [r5, #4] + cmp r4, r0 + blt _021DB50A +_021DB506: + bl ErrorHandling +_021DB50A: + str r4, [r5, #0xc] + pop {r3, r4, r5, pc} +_021DB50E: + cmp r4, #0 + blt _021DB518 + ldr r0, [r5, #8] + cmp r4, r0 + blt _021DB51C +_021DB518: + bl ErrorHandling +_021DB51C: + str r4, [r5, #0x10] + pop {r3, r4, r5, pc} +_021DB520: + add r1, r4, #0 + bl MOD16_021DB6EC +_021DB526: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DB4CC + + thumb_func_start MOD16_021DB528 +MOD16_021DB528: ; 0x021DB528 + ldr r2, [r0, #0x10] + ldr r1, [r0, #4] + add r3, r2, #0 + mul r3, r1 + ldr r1, [r0, #0xc] + add r2, r3, r1 + ldr r1, [r0] + mov r0, #0x1c + mul r0, r2 + add r0, r1, r0 + ldr r0, [r0, #0x18] + bx lr + thumb_func_end MOD16_021DB528 + + thumb_func_start MOD16_021DB540 +MOD16_021DB540: ; 0x021DB540 + push {r4, r5} + ldr r4, [r0, #0x10] + ldr r3, [r0, #4] + add r5, r4, #0 + mul r5, r3 + ldr r3, [r0, #0xc] + add r5, r5, r3 + mov r3, #0x1c + add r4, r5, #0 + mul r4, r3 + ldr r3, [r0] + ldr r3, [r3, r4] + str r3, [r1] + ldr r0, [r0] + add r0, r0, r4 + ldr r0, [r0, #4] + str r0, [r2] + pop {r4, r5} + bx lr + .align 2, 0 + thumb_func_end MOD16_021DB540 + + thumb_func_start MOD16_021DB568 +MOD16_021DB568: ; 0x021DB568 + push {r4, r5} + ldr r4, [r0, #0x10] + ldr r3, [r0, #4] + add r5, r4, #0 + mul r5, r3 + ldr r3, [r0, #0xc] + add r5, r5, r3 + mov r3, #0x1c + add r4, r5, #0 + mul r4, r3 + ldr r3, [r0] + add r3, r3, r4 + ldr r3, [r3, #8] + str r3, [r1] + ldr r0, [r0] + add r0, r0, r4 + ldr r0, [r0, #0xc] + str r0, [r2] + pop {r4, r5} + bx lr + thumb_func_end MOD16_021DB568 + + thumb_func_start MOD16_021DB590 +MOD16_021DB590: ; 0x021DB590 + str r1, [r0] + str r2, [r0, #4] + ldr r1, [sp] + str r3, [r0, #8] + str r1, [r0, #0xc] + ldr r1, [sp, #4] + str r1, [r0, #0x10] + ldr r1, [sp, #8] + str r1, [r0, #0x14] + ldr r1, [sp, #0xc] + str r1, [r0, #0x18] + bx lr + thumb_func_end MOD16_021DB590 + + thumb_func_start MOD16_021DB5A8 +MOD16_021DB5A8: ; 0x021DB5A8 + push {r3, r4, r5, r6} + ldr r4, [sp, #0x10] + cmp r0, #0 + beq _021DB5B4 + cmp r0, #2 + bne _021DB5C0 +_021DB5B4: + ldr r6, [sp, #0x14] + lsr r5, r6, #0x1f + add r5, r6, r5 + asr r5, r5, #1 + sub r3, r3, r5 + b _021DB5CA +_021DB5C0: + ldr r6, [sp, #0x14] + lsr r5, r6, #0x1f + add r5, r6, r5 + asr r5, r5, #1 + add r3, r3, r5 +_021DB5CA: + cmp r0, #1 + bhi _021DB5DA + ldr r5, [sp, #0x18] + lsr r0, r5, #0x1f + add r0, r5, r0 + asr r0, r0, #1 + sub r4, r4, r0 + b _021DB5E4 +_021DB5DA: + ldr r5, [sp, #0x18] + lsr r0, r5, #0x1f + add r0, r5, r0 + asr r0, r0, #1 + add r4, r4, r0 +_021DB5E4: + str r3, [r1] + str r4, [r2] + pop {r3, r4, r5, r6} + bx lr + thumb_func_end MOD16_021DB5A8 + + thumb_func_start MOD16_021DB5EC +MOD16_021DB5EC: ; 0x021DB5EC + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + cmp r4, r0 + beq _021DB602 + cmp r4, #1 + beq _021DB602 + bl ErrorHandling +_021DB602: + ldr r0, [r5, #0xc] + mov r1, #0x1c +_021DB606: + add r0, r0, r4 + bmi _021DB626 + ldr r2, [r5, #4] + cmp r0, r2 + bge _021DB626 + ldr r3, [r5, #0x10] + ldr r2, [r5, #4] + mul r2, r3 + add r6, r2, r0 + add r2, r6, #0 + ldr r3, [r5] + mul r2, r1 + add r6, r3, r2 + ldr r2, [r6, #0x10] + cmp r2, #2 + beq _021DB606 +_021DB626: + cmp r0, #0 + blt _021DB638 + ldr r1, [r5, #4] + cmp r0, r1 + bge _021DB638 + ldr r1, [r6, #0x10] + cmp r1, #0 + bne _021DB638 + str r0, [r5, #0xc] +_021DB638: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DB5EC + + thumb_func_start MOD16_021DB63C +MOD16_021DB63C: ; 0x021DB63C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + cmp r4, r0 + beq _021DB652 + cmp r4, #1 + beq _021DB652 + bl ErrorHandling +_021DB652: + ldr r0, [r5, #0x10] + mov r1, #0x1c +_021DB656: + add r0, r0, r4 + bmi _021DB678 + ldr r2, [r5, #8] + cmp r0, r2 + bge _021DB678 + ldr r2, [r5, #4] + add r3, r0, #0 + mul r3, r2 + ldr r2, [r5, #0xc] + add r6, r3, r2 + add r2, r6, #0 + ldr r3, [r5] + mul r2, r1 + add r6, r3, r2 + ldr r2, [r6, #0x14] + cmp r2, #2 + beq _021DB656 +_021DB678: + cmp r0, #0 + blt _021DB68A + ldr r1, [r5, #8] + cmp r0, r1 + bge _021DB68A + ldr r1, [r6, #0x10] + cmp r1, #0 + bne _021DB68A + str r0, [r5, #0x10] +_021DB68A: + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DB63C + + thumb_func_start MOD16_021DB68C +MOD16_021DB68C: ; 0x021DB68C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + cmp r1, #0 + bge _021DB698 + neg r5, r1 + b _021DB69A +_021DB698: + add r5, r1, #0 +_021DB69A: + add r0, r1, #0 + add r1, r5, #0 + blx _s32_div_f + add r7, r0, #0 + mov r4, #0 + cmp r5, #0 + ble _021DB6B8 +_021DB6AA: + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DB5EC + add r4, r4, #1 + cmp r4, r5 + blt _021DB6AA +_021DB6B8: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DB68C + + thumb_func_start MOD16_021DB6BC +MOD16_021DB6BC: ; 0x021DB6BC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + cmp r1, #0 + bge _021DB6C8 + neg r5, r1 + b _021DB6CA +_021DB6C8: + add r5, r1, #0 +_021DB6CA: + add r0, r1, #0 + add r1, r5, #0 + blx _s32_div_f + add r7, r0, #0 + mov r4, #0 + cmp r5, #0 + ble _021DB6E8 +_021DB6DA: + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DB63C + add r4, r4, #1 + cmp r4, r5 + blt _021DB6DA +_021DB6E8: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DB6BC + + thumb_func_start MOD16_021DB6EC +MOD16_021DB6EC: ; 0x021DB6EC + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r2, [r4, #4] + ldr r0, [r4, #8] + add r3, r2, #0 + mul r3, r0 + mov r5, #0 + cmp r3, #0 + ble _021DB724 + ldr r6, [r4] +_021DB700: + ldr r0, [r6, #0x18] + cmp r1, r0 + bne _021DB71C + add r0, r5, #0 + add r1, r2, #0 + blx _s32_div_f + str r1, [r4, #0xc] + ldr r1, [r4, #4] + add r0, r5, #0 + blx _s32_div_f + str r0, [r4, #0x10] + pop {r4, r5, r6, pc} +_021DB71C: + add r5, r5, #1 + add r6, #0x1c + cmp r5, r3 + blt _021DB700 +_021DB724: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DB6EC + + thumb_func_start MOD16_021DB728 +MOD16_021DB728: ; 0x021DB728 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + str r0, [sp, #0x10] + ldr r0, [sp, #0x5c] + str r2, [sp, #0x18] + str r1, [sp, #0x14] + str r0, [sp, #0x5c] + mov r0, #0 + str r3, [sp, #0x1c] + add r1, sp, #0x48 + str r0, [sp, #0x38] + ldrb r0, [r1, #0x1c] + str r0, [sp, #0x20] + cmp r0, #0 + ble _021DB7BC + ldr r0, [sp, #0x38] + ldrb r6, [r1, #0x10] + str r0, [sp, #0x34] + str r0, [sp, #0x30] + ldrh r0, [r1, #0x24] + str r0, [sp, #0x2c] + ldrh r0, [r1, #0x20] + str r0, [sp, #0x28] + ldrb r0, [r1, #0x18] + str r0, [sp, #0x24] +_021DB75A: + ldr r0, [sp, #0x24] + mov r7, #0 + cmp r0, #0 + ble _021DB7A2 + ldr r1, [sp, #0x5c] + ldr r0, [sp, #0x30] + add r4, r7, #0 + add r5, r1, r0 + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x34] + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x3c] +_021DB776: + str r6, [sp] + ldrb r0, [r5] + ldr r1, [sp, #0x14] + str r0, [sp, #4] + ldr r0, [sp, #0x28] + add r0, r0, r4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x3c] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + bl MOD16_021DB7F4 + ldr r0, [sp, #0x24] + add r7, r7, #1 + add r4, r4, r6 + add r5, r5, #1 + cmp r7, r0 + blt _021DB776 +_021DB7A2: + ldr r0, [sp, #0x34] + ldr r1, [sp, #0x30] + add r0, r0, r6 + str r0, [sp, #0x34] + ldr r0, [sp, #0x20] + add r0, r1, r0 + str r0, [sp, #0x30] + ldr r0, [sp, #0x38] + add r1, r0, #1 + ldr r0, [sp, #0x20] + str r1, [sp, #0x38] + cmp r1, r0 + blt _021DB75A +_021DB7BC: + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB728 + + thumb_func_start MOD16_021DB7C0 +MOD16_021DB7C0: ; 0x021DB7C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r2, #0 + str r0, [sp, #4] + add r5, r1, #0 + mov r6, #0 + cmp r7, #0 + ble _021DB7F0 +_021DB7D0: + mov r4, #0 + cmp r5, #0 + ble _021DB7EA +_021DB7D6: + ldr r0, [sp, #4] + add r1, r4, #0 + add r2, r6, #0 + add r3, r5, #0 + str r7, [sp] + bl MOD16_021DB84C + add r4, r4, #1 + cmp r4, r5 + blt _021DB7D6 +_021DB7EA: + add r6, r6, #1 + cmp r6, r7 + blt _021DB7D0 +_021DB7F0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB7C0 + + thumb_func_start MOD16_021DB7F4 +MOD16_021DB7F4: ; 0x021DB7F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r1, [sp, #0x1c] + ldr r1, [sp, #0x3c] + str r0, [sp, #0x18] + add r5, r2, #0 + add r6, r3, #0 + cmp r1, #0 + beq _021DB848 + ldr r0, [sp, #0x38] + add r4, r1, #0 + mul r4, r0 + add r0, r4, #0 + add r1, r5, #0 + blx _s32_div_f + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + blx _s32_div_f + str r5, [sp] + add r4, r1, #0 + str r6, [sp, #4] + add r0, sp, #0x28 + ldrb r1, [r0, #0x18] + lsl r2, r4, #0x10 + lsl r3, r7, #0x10 + str r1, [sp, #8] + ldrb r0, [r0, #0x1c] + ldr r1, [sp, #0x1c] + lsr r2, r2, #0x10 + str r0, [sp, #0xc] + ldr r0, [sp, #0x38] + lsr r3, r3, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + bl FUN_02019658 +_021DB848: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB7F4 + + thumb_func_start MOD16_021DB84C +MOD16_021DB84C: ; 0x021DB84C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + add r6, r1, #0 + add r1, r7, #0 + mul r1, r3 + add r4, r0, #0 + add r5, r6, r1 + ldrb r1, [r4, r5] + cmp r1, #0 + bne _021DB87A + ldr r1, [sp, #0x20] + str r3, [sp] + str r1, [sp, #4] + add r1, sp, #8 + add r2, r6, #0 + add r3, r7, #0 + bl MOD16_021DB8B0 + ldr r0, [sp, #8] + bl MOD16_021DB9D0 + strb r0, [r4, r5] +_021DB87A: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DB84C + + thumb_func_start MOD16_021DB880 +MOD16_021DB880: ; 0x021DB880 + push {r3, r4} + cmp r1, #0 + blt _021DB88A + cmp r1, r3 + blt _021DB892 +_021DB88A: + mov r0, #0 + mvn r0, r0 + pop {r3, r4} + bx lr +_021DB892: + cmp r2, #0 + blt _021DB89C + ldr r4, [sp, #8] + cmp r2, r4 + blt _021DB8A4 +_021DB89C: + mov r0, #0 + mvn r0, r0 + pop {r3, r4} + bx lr +_021DB8A4: + mul r3, r2 + add r1, r1, r3 + ldrb r0, [r0, r1] + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD16_021DB880 + + thumb_func_start MOD16_021DB8B0 +MOD16_021DB8B0: ; 0x021DB8B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + ldr r1, [sp, #0x20] + add r6, r2, #0 + str r1, [sp, #0x20] + add r7, r3, #0 + mov r1, #0 + str r1, [r5] + ldr r4, [sp, #0x24] + ldr r3, [sp, #0x20] + add r1, r6, #0 + sub r2, r7, #1 + str r0, [sp, #4] + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB8DE + ldr r1, [r5] + mov r0, #1 + orr r0, r1 + str r0, [r5] +_021DB8DE: + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r6, #0 + add r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB8F8 + ldr r1, [r5] + mov r0, #2 + orr r0, r1 + str r0, [r5] +_021DB8F8: + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + sub r1, r6, #1 + add r2, r7, #0 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB912 + ldr r1, [r5] + mov r0, #4 + orr r0, r1 + str r0, [r5] +_021DB912: + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r6, #1 + add r2, r7, #0 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB92C + ldr r1, [r5] + mov r0, #8 + orr r0, r1 + str r0, [r5] +_021DB92C: + ldr r0, [r5] + mov r1, #1 + tst r1, r0 + bne _021DB954 + mov r1, #4 + tst r0, r1 + bne _021DB954 + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + sub r1, r6, #1 + sub r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB954 + ldr r1, [r5] + mov r0, #0x10 + orr r0, r1 + str r0, [r5] +_021DB954: + ldr r0, [r5] + mov r1, #1 + tst r1, r0 + bne _021DB97C + mov r1, #8 + tst r0, r1 + bne _021DB97C + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r6, #1 + sub r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB97C + ldr r1, [r5] + mov r0, #0x20 + orr r0, r1 + str r0, [r5] +_021DB97C: + ldr r0, [r5] + mov r1, #2 + tst r1, r0 + bne _021DB9A4 + mov r1, #4 + tst r0, r1 + bne _021DB9A4 + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + sub r1, r6, #1 + add r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB9A4 + ldr r1, [r5] + mov r0, #0x40 + orr r0, r1 + str r0, [r5] +_021DB9A4: + ldr r0, [r5] + mov r1, #2 + tst r1, r0 + bne _021DB9CC + mov r1, #8 + tst r0, r1 + bne _021DB9CC + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r6, #1 + add r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB9CC + ldr r1, [r5] + mov r0, #0x80 + orr r0, r1 + str r0, [r5] +_021DB9CC: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB8B0 + + thumb_func_start MOD16_021DB9D0 +MOD16_021DB9D0: ; 0x021DB9D0 + push {r4, lr} + cmp r0, #0x84 + bgt _021DBAA6 + blt _021DB9DA + b _021DBB98 +_021DB9DA: + cmp r0, #0x58 + bgt _021DBA8C + blt _021DB9E2 + b _021DBB70 +_021DB9E2: + cmp r0, #0x48 + bgt _021DBA7E + blt _021DB9EA + b _021DBBA0 +_021DB9EA: + cmp r0, #0x41 + bhi _021DBA84 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DB9FA: ; jump table + .short _021DBAE8 - _021DB9FA - 2 ; case 0 + .short _021DBAEC - _021DB9FA - 2 ; case 1 + .short _021DBAF0 - _021DB9FA - 2 ; case 2 + .short _021DBAFC - _021DB9FA - 2 ; case 3 + .short _021DBAF4 - _021DB9FA - 2 ; case 4 + .short _021DBB00 - _021DB9FA - 2 ; case 5 + .short _021DBB08 - _021DB9FA - 2 ; case 6 + .short _021DBB14 - _021DB9FA - 2 ; case 7 + .short _021DBAF8 - _021DB9FA - 2 ; case 8 + .short _021DBB04 - _021DB9FA - 2 ; case 9 + .short _021DBB0C - _021DB9FA - 2 ; case 10 + .short _021DBB18 - _021DB9FA - 2 ; case 11 + .short _021DBB10 - _021DB9FA - 2 ; case 12 + .short _021DBB1C - _021DB9FA - 2 ; case 13 + .short _021DBB20 - _021DB9FA - 2 ; case 14 + .short _021DBB24 - _021DB9FA - 2 ; case 15 + .short _021DBB28 - _021DB9FA - 2 ; case 16 + .short _021DBBA4 - _021DB9FA - 2 ; case 17 + .short _021DBB8C - _021DB9FA - 2 ; case 18 + .short _021DBBA4 - _021DB9FA - 2 ; case 19 + .short _021DBBA4 - _021DB9FA - 2 ; case 20 + .short _021DBBA4 - _021DB9FA - 2 ; case 21 + .short _021DBBA4 - _021DB9FA - 2 ; case 22 + .short _021DBBA4 - _021DB9FA - 2 ; case 23 + .short _021DBB9C - _021DB9FA - 2 ; case 24 + .short _021DBBA4 - _021DB9FA - 2 ; case 25 + .short _021DBB80 - _021DB9FA - 2 ; case 26 + .short _021DBBA4 - _021DB9FA - 2 ; case 27 + .short _021DBBA4 - _021DB9FA - 2 ; case 28 + .short _021DBBA4 - _021DB9FA - 2 ; case 29 + .short _021DBBA4 - _021DB9FA - 2 ; case 30 + .short _021DBBA4 - _021DB9FA - 2 ; case 31 + .short _021DBB2C - _021DB9FA - 2 ; case 32 + .short _021DBBA4 - _021DB9FA - 2 ; case 33 + .short _021DBB90 - _021DB9FA - 2 ; case 34 + .short _021DBBA4 - _021DB9FA - 2 ; case 35 + .short _021DBB94 - _021DB9FA - 2 ; case 36 + .short _021DBBA4 - _021DB9FA - 2 ; case 37 + .short _021DBB7C - _021DB9FA - 2 ; case 38 + .short _021DBBA4 - _021DB9FA - 2 ; case 39 + .short _021DBBA4 - _021DB9FA - 2 ; case 40 + .short _021DBBA4 - _021DB9FA - 2 ; case 41 + .short _021DBBA4 - _021DB9FA - 2 ; case 42 + .short _021DBBA4 - _021DB9FA - 2 ; case 43 + .short _021DBBA4 - _021DB9FA - 2 ; case 44 + .short _021DBBA4 - _021DB9FA - 2 ; case 45 + .short _021DBBA4 - _021DB9FA - 2 ; case 46 + .short _021DBBA4 - _021DB9FA - 2 ; case 47 + .short _021DBB38 - _021DB9FA - 2 ; case 48 + .short _021DBBA4 - _021DB9FA - 2 ; case 49 + .short _021DBB68 - _021DB9FA - 2 ; case 50 + .short _021DBBA4 - _021DB9FA - 2 ; case 51 + .short _021DBBA4 - _021DB9FA - 2 ; case 52 + .short _021DBBA4 - _021DB9FA - 2 ; case 53 + .short _021DBBA4 - _021DB9FA - 2 ; case 54 + .short _021DBBA4 - _021DB9FA - 2 ; case 55 + .short _021DBBA4 - _021DB9FA - 2 ; case 56 + .short _021DBBA4 - _021DB9FA - 2 ; case 57 + .short _021DBBA4 - _021DB9FA - 2 ; case 58 + .short _021DBBA4 - _021DB9FA - 2 ; case 59 + .short _021DBBA4 - _021DB9FA - 2 ; case 60 + .short _021DBBA4 - _021DB9FA - 2 ; case 61 + .short _021DBBA4 - _021DB9FA - 2 ; case 62 + .short _021DBBA4 - _021DB9FA - 2 ; case 63 + .short _021DBB30 - _021DB9FA - 2 ; case 64 + .short _021DBB84 - _021DB9FA - 2 ; case 65 +_021DBA7E: + cmp r0, #0x49 + bgt _021DBA86 + beq _021DBB78 +_021DBA84: + b _021DBBA4 +_021DBA86: + cmp r0, #0x50 + beq _021DBB3C + b _021DBBA4 +_021DBA8C: + cmp r0, #0x70 + bgt _021DBA98 + bge _021DBB50 + cmp r0, #0x60 + beq _021DBB44 + b _021DBBA4 +_021DBA98: + cmp r0, #0x80 + bgt _021DBAA0 + beq _021DBB34 + b _021DBBA4 +_021DBAA0: + cmp r0, #0x81 + beq _021DBB88 + b _021DBBA4 +_021DBAA6: + cmp r0, #0xb0 + bgt _021DBAC6 + bge _021DBB54 + cmp r0, #0x90 + bgt _021DBAB8 + bge _021DBB40 + cmp r0, #0x85 + beq _021DBB74 + b _021DBBA4 +_021DBAB8: + cmp r0, #0xa0 + bgt _021DBAC0 + beq _021DBB48 + b _021DBBA4 +_021DBAC0: + cmp r0, #0xa4 + beq _021DBB6C + b _021DBBA4 +_021DBAC6: + cmp r0, #0xd0 + bgt _021DBADA + bge _021DBB58 + cmp r0, #0xc0 + bgt _021DBAD4 + beq _021DBB4C + b _021DBBA4 +_021DBAD4: + cmp r0, #0xc1 + beq _021DBB64 + b _021DBBA4 +_021DBADA: + cmp r0, #0xe0 + bgt _021DBAE2 + beq _021DBB5C + b _021DBBA4 +_021DBAE2: + cmp r0, #0xf0 + beq _021DBB60 + b _021DBBA4 +_021DBAE8: + mov r4, #0 + b _021DBBA8 +_021DBAEC: + mov r4, #2 + b _021DBBA8 +_021DBAF0: + mov r4, #3 + b _021DBBA8 +_021DBAF4: + mov r4, #4 + b _021DBBA8 +_021DBAF8: + mov r4, #5 + b _021DBBA8 +_021DBAFC: + mov r4, #6 + b _021DBBA8 +_021DBB00: + mov r4, #7 + b _021DBBA8 +_021DBB04: + mov r4, #8 + b _021DBBA8 +_021DBB08: + mov r4, #9 + b _021DBBA8 +_021DBB0C: + mov r4, #0xa + b _021DBBA8 +_021DBB10: + mov r4, #0xb + b _021DBBA8 +_021DBB14: + mov r4, #0xc + b _021DBBA8 +_021DBB18: + mov r4, #0xd + b _021DBBA8 +_021DBB1C: + mov r4, #0xe + b _021DBBA8 +_021DBB20: + mov r4, #0xf + b _021DBBA8 +_021DBB24: + mov r4, #0x10 + b _021DBBA8 +_021DBB28: + mov r4, #0x11 + b _021DBBA8 +_021DBB2C: + mov r4, #0x12 + b _021DBBA8 +_021DBB30: + mov r4, #0x13 + b _021DBBA8 +_021DBB34: + mov r4, #0x14 + b _021DBBA8 +_021DBB38: + mov r4, #0x15 + b _021DBBA8 +_021DBB3C: + mov r4, #0x16 + b _021DBBA8 +_021DBB40: + mov r4, #0x17 + b _021DBBA8 +_021DBB44: + mov r4, #0x18 + b _021DBBA8 +_021DBB48: + mov r4, #0x19 + b _021DBBA8 +_021DBB4C: + mov r4, #0x1a + b _021DBBA8 +_021DBB50: + mov r4, #0x1b + b _021DBBA8 +_021DBB54: + mov r4, #0x1c + b _021DBBA8 +_021DBB58: + mov r4, #0x1d + b _021DBBA8 +_021DBB5C: + mov r4, #0x1e + b _021DBBA8 +_021DBB60: + mov r4, #0x1f + b _021DBBA8 +_021DBB64: + mov r4, #0x20 + b _021DBBA8 +_021DBB68: + mov r4, #0x21 + b _021DBBA8 +_021DBB6C: + mov r4, #0x22 + b _021DBBA8 +_021DBB70: + mov r4, #0x23 + b _021DBBA8 +_021DBB74: + mov r4, #0x24 + b _021DBBA8 +_021DBB78: + mov r4, #0x25 + b _021DBBA8 +_021DBB7C: + mov r4, #0x26 + b _021DBBA8 +_021DBB80: + mov r4, #0x27 + b _021DBBA8 +_021DBB84: + mov r4, #0x28 + b _021DBBA8 +_021DBB88: + mov r4, #0x29 + b _021DBBA8 +_021DBB8C: + mov r4, #0x2a + b _021DBBA8 +_021DBB90: + mov r4, #0x2b + b _021DBBA8 +_021DBB94: + mov r4, #0x2c + b _021DBBA8 +_021DBB98: + mov r4, #0x2d + b _021DBBA8 +_021DBB9C: + mov r4, #0x2e + b _021DBBA8 +_021DBBA0: + mov r4, #0x2f + b _021DBBA8 +_021DBBA4: + bl ErrorHandling +_021DBBA8: + add r0, r4, #0 + pop {r4, pc} + thumb_func_end MOD16_021DB9D0 + + thumb_func_start MOD16_021DBBAC +MOD16_021DBBAC: ; 0x021DBBAC + ldr r3, _021DBBB0 ; =0x02021A21 + bx r3 + .align 2, 0 +_021DBBB0: .word 0x02021A21 + thumb_func_end MOD16_021DBBAC + + thumb_func_start MOD16_021DBBB4 +MOD16_021DBBB4: ; 0x021DBBB4 + add r1, r0, #1 + ldr r0, _021DBBC0 ; =0x021FF568 + ldr r3, _021DBBC4 ; =0x02087A39 + ldrb r0, [r0, r1] + bx r3 + nop +_021DBBC0: .word 0x021FF568 +_021DBBC4: .word 0x02087A39 + thumb_func_end MOD16_021DBBB4 + + thumb_func_start MOD16_021DBBC8 +MOD16_021DBBC8: ; 0x021DBBC8 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r2, #0 + add r2, sp, #4 + str r2, [sp] + add r2, sp, #0xc + add r3, sp, #8 + add r5, r0, #0 + bl MOD16_021DBCE0 + ldr r2, [sp, #4] + cmp r2, #6 + bne _021DBBEE + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200AA50 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021DBBEE: + ldr r1, [sp, #0xc] + mov r0, #6 + mul r0, r1 + add r1, r2, r0 + ldr r0, _021DBC04 ; =0x0000026E + add r2, r4, #0 + str r1, [sp, #4] + bl MOD16_021DBCA0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DBC04: .word 0x0000026E + thumb_func_end MOD16_021DBBC8 + + thumb_func_start MOD16_021DBC08 +MOD16_021DBC08: ; 0x021DBC08 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r2, #0 + add r2, sp, #4 + str r2, [sp] + add r2, sp, #0xc + add r3, sp, #8 + add r5, r0, #0 + bl MOD16_021DBCE0 + ldr r2, [sp, #4] + cmp r2, #6 + bne _021DBC28 + str r5, [sp, #4] + ldr r0, _021DBC40 ; =0x0000026D + b _021DBC34 +_021DBC28: + ldr r1, [sp, #0xc] + mov r0, #6 + mul r0, r1 + add r0, r2, r0 + str r0, [sp, #4] + ldr r0, _021DBC44 ; =0x0000026F +_021DBC34: + ldr r1, [sp, #4] + add r2, r4, #0 + bl MOD16_021DBCA0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DBC40: .word 0x0000026D +_021DBC44: .word 0x0000026F + thumb_func_end MOD16_021DBC08 + + thumb_func_start MOD16_021DBC48 +MOD16_021DBC48: ; 0x021DBC48 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r2, #0 + add r2, sp, #4 + add r6, r3, #0 + str r2, [sp] + add r2, sp, #0xc + add r3, sp, #8 + add r5, r0, #0 + bl MOD16_021DBCE0 + ldr r0, [sp, #4] + cmp r0, #6 + bne _021DBC74 + cmp r4, #1 + blt _021DBC6C + bl ErrorHandling +_021DBC6C: + add r0, r5, r4 + str r0, [sp, #4] + ldr r0, _021DBC98 ; =0x00000267 + b _021DBC8C +_021DBC74: + cmp r4, #1 + blt _021DBC7C + bl ErrorHandling +_021DBC7C: + ldr r0, [sp, #4] + ldr r1, [sp, #0xc] + add r2, r0, r4 + mov r0, #6 + mul r0, r1 + add r0, r2, r0 + str r0, [sp, #4] + ldr r0, _021DBC9C ; =0x00000269 +_021DBC8C: + ldr r1, [sp, #4] + add r2, r6, #0 + bl MOD16_021DBCA0 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DBC98: .word 0x00000267 +_021DBC9C: .word 0x00000269 + thumb_func_end MOD16_021DBC48 + + thumb_func_start MOD16_021DBCA0 +MOD16_021DBCA0: ; 0x021DBCA0 + push {r4, r5, r6, lr} + add r3, r0, #0 + add r5, r2, #0 + add r6, r1, #0 + add r2, r3, #0 + mov r0, #1 + mov r1, #0x1a + add r3, r5, #0 + bl FUN_0200A86C + add r4, r0, #0 + beq _021DBCDA + mov r0, #1 + lsl r0, r0, #8 + add r1, r5, #0 + bl FUN_020219F4 + add r5, r0, #0 + beq _021DBCD0 + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl FUN_0200A8E0 +_021DBCD0: + add r0, r4, #0 + bl FUN_0200A8B8 + add r0, r5, #0 + pop {r4, r5, r6, pc} +_021DBCDA: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DBCA0 + + thumb_func_start MOD16_021DBCE0 +MOD16_021DBCE0: ; 0x021DBCE0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + add r5, r3, #0 + ldr r6, [sp, #0x18] + bl FUN_02087A1C + str r0, [r5] + cmp r0, #6 + blt _021DBCFA + bl ErrorHandling +_021DBCFA: + add r0, r7, #0 + bl FUN_02087A50 + str r0, [r4] + ldr r5, [r5] + cmp r5, #6 + blt _021DBD0C + bl ErrorHandling +_021DBD0C: + cmp r5, #1 + bne _021DBD12 + mov r5, #6 +_021DBD12: + str r5, [r6] + ldr r0, [r4] + cmp r0, #0xe + bne _021DBD22 + cmp r5, #6 + beq _021DBD22 + mov r0, #0 + b _021DBD24 +_021DBD22: + mov r0, #1 +_021DBD24: + cmp r0, #0 + bne _021DBD2C + bl ErrorHandling +_021DBD2C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DBCE0 + + thumb_func_start MOD16_021DBD30 +MOD16_021DBD30: ; 0x021DBD30 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + cmp r2, #9 + bhi _021DBD82 + add r0, r2, r2 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DBD46: ; jump table + .short _021DBD5A - _021DBD46 - 2 ; case 0 + .short _021DBD5E - _021DBD46 - 2 ; case 1 + .short _021DBD62 - _021DBD46 - 2 ; case 2 + .short _021DBD66 - _021DBD46 - 2 ; case 3 + .short _021DBD6A - _021DBD46 - 2 ; case 4 + .short _021DBD70 - _021DBD46 - 2 ; case 5 + .short _021DBD74 - _021DBD46 - 2 ; case 6 + .short _021DBD78 - _021DBD46 - 2 ; case 7 + .short _021DBD7C - _021DBD46 - 2 ; case 8 + .short _021DBD80 - _021DBD46 - 2 ; case 9 +_021DBD5A: + mov r5, #4 + b _021DBD82 +_021DBD5E: + ldr r5, _021DBDA0 ; =0x000001F3 + b _021DBD82 +_021DBD62: + ldr r5, _021DBDA4 ; =0x000003E2 + b _021DBD82 +_021DBD66: + ldr r5, _021DBDA8 ; =0x000005D1 + b _021DBD82 +_021DBD6A: + mov r5, #0x1f + lsl r5, r5, #6 + b _021DBD82 +_021DBD70: + ldr r5, _021DBDAC ; =0x000009AF + b _021DBD82 +_021DBD74: + ldr r5, _021DBDB0 ; =0x00000B9E + b _021DBD82 +_021DBD78: + ldr r5, _021DBDB4 ; =0x00000D8D + b _021DBD82 +_021DBD7C: + ldr r5, _021DBDB8 ; =0x00000F7C + b _021DBD82 +_021DBD80: + ldr r5, _021DBDBC ; =0x0000116B +_021DBD82: + mov r2, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x8b + add r1, r5, r1 + bl FUN_02006D18 + str r0, [r4] + ldr r0, [sp, #8] + lsr r0, r0, #2 + str r0, [r4, #4] + add sp, #0xc + pop {r4, r5, pc} + nop +_021DBDA0: .word 0x000001F3 +_021DBDA4: .word 0x000003E2 +_021DBDA8: .word 0x000005D1 +_021DBDAC: .word 0x000009AF +_021DBDB0: .word 0x00000B9E +_021DBDB4: .word 0x00000D8D +_021DBDB8: .word 0x00000F7C +_021DBDBC: .word 0x0000116B + thumb_func_end MOD16_021DBD30 + + thumb_func_start MOD16_021DBDC0 +MOD16_021DBDC0: ; 0x021DBDC0 + push {r4, lr} + add r4, r0, #0 + bne _021DBDCA + bl ErrorHandling +_021DBDCA: + ldr r0, [r4] + cmp r0, #0 + bne _021DBDD4 + bl ErrorHandling +_021DBDD4: + ldr r0, [r4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DBDC0 + + thumb_func_start MOD16_021DBDE4 +MOD16_021DBDE4: ; 0x021DBDE4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x8b + add r2, r1, #0 + bl FUN_02006D18 + cmp r4, #0 + beq _021DBE06 + ldr r1, [sp, #8] + lsr r1, r1, #2 + str r1, [r4] +_021DBE06: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DBDE4 + + thumb_func_start MOD16_021DBE0C +MOD16_021DBE0C: ; 0x021DBE0C + push {r4, r5, lr} + sub sp, #0xc + mov r2, #0 + add r3, r0, #0 + add r4, r1, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x8b + mov r1, #2 + bl FUN_02006D18 + add r5, r0, #0 + cmp r4, #0 + beq _021DBE34 + ldr r0, [sp, #8] + mov r1, #0x24 + blx _u32_div_f + str r0, [r4] +_021DBE34: + add r0, r5, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DBE0C + + thumb_func_start MOD16_021DBE3C +MOD16_021DBE3C: ; 0x021DBE3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp, #4] + add r4, r3, #0 + str r0, [sp] + ldrb r1, [r4, #1] + ldrb r0, [r4, #3] + add r0, r1, r0 + cmp r0, r2 + blt _021DBE54 + bl ErrorHandling +_021DBE54: + ldrb r1, [r4] + ldrb r0, [r4, #2] + add r1, r1, r0 + ldr r0, [sp, #4] + cmp r1, r0 + blt _021DBE64 + bl ErrorHandling +_021DBE64: + ldrb r7, [r4, #1] + ldrb r0, [r4, #3] + add r0, r7, r0 + cmp r7, r0 + bge _021DBEBE + ldr r0, [sp, #4] + mul r0, r7 + mov ip, r0 +_021DBE74: + ldrb r5, [r4] + ldrb r3, [r4, #2] + add r1, r5, #0 + add r0, r5, r3 + cmp r5, r0 + bge _021DBEAA + ldr r2, [sp] + mov r0, ip + add r0, r2, r0 + add r2, r0, r5 +_021DBE88: + sub r6, r1, r5 + ldrb r5, [r4, #1] + ldrb r0, [r2] + add r1, r1, #1 + sub r5, r7, r5 + mul r5, r3 + add r3, r4, r6 + add r3, r5, r3 + ldrb r3, [r3, #4] + orr r0, r3 + strb r0, [r2] + ldrb r3, [r4, #2] + ldrb r5, [r4] + add r2, r2, #1 + add r0, r5, r3 + cmp r1, r0 + blt _021DBE88 +_021DBEAA: + ldr r0, [sp, #4] + mov r1, ip + add r0, r1, r0 + mov ip, r0 + ldrb r1, [r4, #1] + ldrb r0, [r4, #3] + add r7, r7, #1 + add r0, r1, r0 + cmp r7, r0 + blt _021DBE74 +_021DBEBE: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DBE3C + + thumb_func_start MOD16_021DBEC4 +MOD16_021DBEC4: ; 0x021DBEC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + ldr r0, [sp, #0x30] + str r3, [sp, #4] + str r0, [sp, #0x30] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x30] + ldr r5, [sp, #0x34] + ldr r0, [r0, #4] + ldr r4, [sp, #0x38] + sub r0, r0, #1 + cmp r0, #0 + ble _021DBF4E + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + ldr r7, [sp, #8] + str r0, [sp, #0x14] +_021DBEF2: + ldr r0, [sp, #0x30] + ldr r0, [r0] + ldr r0, [r0, r7] + cmp r0, #0 + bne _021DBF00 + bl ErrorHandling +_021DBF00: + mov r1, #0 + cmp r4, #0 + bls _021DBF18 + ldr r0, [sp, #0x30] + ldr r0, [r0] + ldr r2, [r0, r7] +_021DBF0C: + ldrb r0, [r5, r1] + cmp r2, r0 + beq _021DBF18 + add r1, r1, #1 + cmp r1, r4 + blo _021DBF0C +_021DBF18: + cmp r1, r4 + blo _021DBF3A + ldr r3, [sp, #0x30] + mov r6, #0x24 + ldr r3, [r3] + ldr r0, [sp] + ldr r3, [r3, r7] + ldr r1, [sp, #0x10] + mul r6, r3 + ldr r3, [sp, #4] + ldr r2, [sp, #0x14] + add r3, r3, r6 + bl MOD16_021DBE3C + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_021DBF3A: + ldr r0, [sp, #0xc] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x30] + ldr r0, [r0, #4] + sub r1, r0, #1 + ldr r0, [sp, #0xc] + cmp r0, r1 + blt _021DBEF2 +_021DBF4E: + ldr r0, [sp, #8] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DBEC4 + + thumb_func_start MOD16_021DBF54 +MOD16_021DBF54: ; 0x021DBF54 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + ldr r4, [sp, #0x24] + add r5, r0, #0 + ldrb r6, [r4] + mul r3, r6 + add r1, r1, r3 + str r1, [sp] + ldrb r6, [r4, #1] + ldr r3, [sp, #0x20] + lsl r1, r1, #0xc + mul r3, r6 + add r2, r2, r3 + str r1, [sp] + str r2, [sp, #4] + lsl r1, r2, #0xc + str r1, [sp, #4] + add r1, sp, #0 + bl FUN_02020044 + ldrb r0, [r4, #2] + cmp r0, #0 + beq _021DBF8E + ldr r1, [sp, #0x2c] + add r0, r5, #0 + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DBF8E: + ldr r1, [sp, #0x28] + add r0, r5, #0 + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DBF54 + + thumb_func_start MOD16_021DBF9C +MOD16_021DBF9C: ; 0x021DBF9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + mov ip, r0 + ldr r0, [sp, #0x40] + ldr r7, [sp, #0x50] + str r0, [sp, #0x40] + ldr r0, [sp, #0x44] + str r1, [sp, #0x10] + str r0, [sp, #0x44] + ldr r0, [sp, #0x48] + str r2, [sp, #0x14] + str r0, [sp, #0x48] + ldr r0, [sp, #0x4c] + str r3, [sp, #0x18] + str r0, [sp, #0x4c] + ldr r0, [sp, #0x54] + ldr r5, [sp, #0x5c] + str r0, [sp, #0x54] + ldr r0, [sp, #0x58] + ldr r4, [sp, #0x60] + str r0, [sp, #0x58] + mov r0, #0 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + ldr r0, [r7, #4] + sub r0, r0, #1 + cmp r0, #0 + ble _021DC05C + add r0, r1, #0 + lsl r1, r0, #2 + mov r0, ip + add r0, r0, r1 + ldr r6, [sp, #0x20] + str r0, [sp, #0x1c] +_021DBFE0: + ldr r0, [r7] + ldr r0, [r0, r6] + cmp r0, #0 + bne _021DBFEC + bl ErrorHandling +_021DBFEC: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + cmp r1, r0 + blt _021DBFF8 + bl ErrorHandling +_021DBFF8: + mov r1, #0 + cmp r4, #0 + bls _021DC00E + ldr r0, [r7] + ldr r2, [r0, r6] +_021DC002: + ldrb r0, [r5, r1] + cmp r2, r0 + beq _021DC00E + add r1, r1, #1 + cmp r1, r4 + blo _021DC002 +_021DC00E: + cmp r1, r4 + blo _021DC04A + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x40] + str r0, [sp] + ldr r0, [r7] + ldr r3, [sp, #0x44] + ldr r0, [r0, r6] + lsl r1, r0, #2 + ldr r0, [sp, #0x4c] + add r0, r0, r1 + str r0, [sp, #4] + ldr r0, [sp, #0x54] + ldr r1, [sp, #0x18] + str r0, [sp, #8] + ldr r0, [sp, #0x58] + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + ldr r0, [r0] + bl MOD16_021DBF54 + ldr r0, [sp, #0x1c] + add r0, r0, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] +_021DC04A: + ldr r0, [sp, #0x24] + add r6, r6, #4 + add r0, r0, #1 + str r0, [sp, #0x24] + ldr r0, [r7, #4] + sub r1, r0, #1 + ldr r0, [sp, #0x24] + cmp r0, r1 + blt _021DBFE0 +_021DC05C: + ldr r1, [sp, #0x64] + ldr r0, [sp, #0x20] + str r0, [r1] + ldr r0, [sp, #0x10] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DBF9C + + thumb_func_start MOD16_021DC068 +MOD16_021DC068: ; 0x021DC068 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021DC10C + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DC15C + add r7, r0, #0 + ldr r0, [sp] + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021DC198 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021DC230 + str r0, [r5, #0x24] + ldr r0, _021DC0B4 ; =MOD16_021DC234 + str r0, [r5, #8] + ldr r0, _021DC0B8 ; =MOD16_021DC280 + str r0, [r5, #0xc] + ldr r0, _021DC0BC ; =MOD16_021DC2B0 + str r0, [r5, #0x10] + ldr r0, _021DC0C0 ; =MOD16_021DC2C4 + str r0, [r5, #0x14] + ldr r0, _021DC0C4 ; =MOD16_021DC3A8 + str r0, [r5, #0x18] + ldr r0, _021DC0C8 ; =MOD16_021DC424 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + nop +_021DC0B4: .word MOD16_021DC234 +_021DC0B8: .word MOD16_021DC280 +_021DC0BC: .word MOD16_021DC2B0 +_021DC0C0: .word MOD16_021DC2C4 +_021DC0C4: .word MOD16_021DC3A8 +_021DC0C8: .word MOD16_021DC424 + thumb_func_end MOD16_021DC068 + + thumb_func_start MOD16_021DC0CC +MOD16_021DC0CC: ; 0x021DC0CC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021DC148 + ldr r0, [r4, #4] + bl MOD16_021DC184 + ldr r0, [r4, #0x20] + bl MOD16_021DC1F8 + pop {r4, pc} + thumb_func_end MOD16_021DC0CC + + thumb_func_start MOD16_021DC0E4 +MOD16_021DC0E4: ; 0x021DC0E4 + ldr r1, [r0, #0x24] + cmp r1, #1 + beq _021DC102 + ldr r1, [r0, #0x28] + cmp r1, #1 + beq _021DC102 + ldr r1, [r0, #0x2c] + cmp r1, #1 + beq _021DC102 + ldr r1, [r0, #0x30] + cmp r1, #1 + beq _021DC102 + ldr r0, [r0, #0x34] + cmp r0, #1 + bne _021DC106 +_021DC102: + mov r0, #0 + bx lr +_021DC106: + mov r0, #1 + bx lr + .align 2, 0 + thumb_func_end MOD16_021DC0E4 + + thumb_func_start MOD16_021DC10C +MOD16_021DC10C: ; 0x021DC10C + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x38 + bl FUN_02016998 + add r4, r0, #0 + bne _021DC11E + bl ErrorHandling +_021DC11E: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x38 + blx Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x10] + str r0, [r4, #0x14] + mov r0, #1 + str r0, [r4, #0x1c] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DC10C + + thumb_func_start MOD16_021DC148 +MOD16_021DC148: ; 0x021DC148 + push {r4, lr} + add r4, r0, #0 + bne _021DC152 + bl ErrorHandling +_021DC152: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DC148 + + thumb_func_start MOD16_021DC15C +MOD16_021DC15C: ; 0x021DC15C + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021DC16E + bl ErrorHandling +_021DC16E: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DC15C + + thumb_func_start MOD16_021DC184 +MOD16_021DC184: ; 0x021DC184 + push {r4, lr} + add r4, r0, #0 + bne _021DC18E + bl ErrorHandling +_021DC18E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DC184 + + thumb_func_start MOD16_021DC198 +MOD16_021DC198: ; 0x021DC198 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + bl MOD16_021DC230 + add r2, r0, #0 + mov r1, #0x14 + add r0, r5, #0 + mul r1, r2 + bl FUN_02016998 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + mov r3, #1 + bl MOD16_021DAC98 + add r1, r6, #0 + add r0, r5, #0 + add r1, #0x14 + add r2, r4, #0 + mov r3, #2 + bl MOD16_021DAD78 + add r1, r6, #0 + add r0, r5, #0 + add r1, #0x28 + add r2, r4, #0 + mov r3, #4 + bl MOD16_021DAD20 + add r0, r6, #0 + add r0, #0x3c + add r1, r4, #0 + add r2, r5, #0 + mov r3, #8 + bl MOD16_021DAE94 + add r1, r6, #0 + add r0, r5, #0 + add r1, #0x50 + add r2, r4, #0 + mov r3, #0x10 + bl MOD16_021DAE0C + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DC198 + + thumb_func_start MOD16_021DC1F8 +MOD16_021DC1F8: ; 0x021DC1F8 + push {r4, lr} + add r4, r0, #0 + bne _021DC202 + bl ErrorHandling +_021DC202: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x14 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x28 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x3c + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x50 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021DC1F8 + + thumb_func_start MOD16_021DC230 +MOD16_021DC230: ; 0x021DC230 + mov r0, #5 + bx lr + thumb_func_end MOD16_021DC230 + + thumb_func_start MOD16_021DC234 +MOD16_021DC234: ; 0x021DC234 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #0x24 + bl FUN_02016998 + str r0, [r5, #8] + cmp r0, #0 + bne _021DC24C + bl ErrorHandling +_021DC24C: + ldr r0, [r5, #8] + mov r1, #0 + mov r2, #0x24 + blx Call_FillMemWithValue + ldr r1, [r5, #8] + add r0, r4, #0 + bl MOD16_021DC4D4 + ldr r0, [r4, #4] + bl MOD16_021D9EEC + mov r1, #1 + str r1, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x20] + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _021DC274 + str r1, [r4, #0x10] +_021DC274: + add r0, r4, #0 + bl MOD16_021DC540 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DC234 + + thumb_func_start MOD16_021DC280 +MOD16_021DC280: ; 0x021DC280 + push {r3, lr} + add r2, r0, #0 + ldr r0, [r2, #0xc] + ldr r3, [r2, #8] + cmp r0, #1 + bne _021DC290 + mov r0, #1 + pop {r3, pc} +_021DC290: + ldr r0, [r2] + cmp r0, #0 + bne _021DC2A0 + mov r0, #0 + str r0, [r1, #0x18] + mov r0, #1 + str r0, [r2] + b _021DC2AA +_021DC2A0: + ldr r2, [r2, #4] + add r0, r1, #0 + add r1, r3, #0 + bl MOD16_021DC4F8 +_021DC2AA: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DC280 + + thumb_func_start MOD16_021DC2B0 +MOD16_021DC2B0: ; 0x021DC2B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DC2B0 + + thumb_func_start MOD16_021DC2C4 +MOD16_021DC2C4: ; 0x021DC2C4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + ldr r7, [r4, #8] + cmp r0, #3 + bhi _021DC39C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DC2E0: ; jump table + .short _021DC2E8 - _021DC2E0 - 2 ; case 0 + .short _021DC316 - _021DC2E0 - 2 ; case 1 + .short _021DC360 - _021DC2E0 - 2 ; case 2 + .short _021DC388 - _021DC2E0 - 2 ; case 3 +_021DC2E8: + mov r1, #0x52 + ldr r0, [r4, #4] + lsl r1, r1, #2 + bl FUN_02016998 + add r7, r0, #0 + bne _021DC2FA + bl ErrorHandling +_021DC2FA: + str r7, [r4, #8] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DD1A0 + ldr r1, [r5] + add r0, r7, #0 + add r2, r6, #0 + bl MOD16_021DCE44 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC3A0 +_021DC316: + mov r0, #0x5d + ldr r1, [r6, #4] + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + bne _021DC32E + ldr r1, [r5] + ldr r3, [r4, #4] + add r0, r7, #0 + bl MOD16_021DC690 + b _021DC338 +_021DC32E: + ldr r1, [r5] + ldr r3, [r4, #4] + add r0, r7, #0 + bl MOD16_021DC770 +_021DC338: + ldr r0, [r6, #0x14] + cmp r0, #0 + beq _021DC34C + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD16_021DD7C4 + b _021DC358 +_021DC34C: + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD16_021DD724 +_021DC358: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC3A0 +_021DC360: + ldr r0, [r6, #0x14] + cmp r0, #0 + beq _021DC372 + add r0, r7, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021DD850 + b _021DC37C +_021DC372: + add r0, r7, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021DD760 +_021DC37C: + cmp r0, #0 + beq _021DC3A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC3A0 +_021DC388: + mov r0, #0x10 + str r0, [sp] + ldr r0, _021DC3A4 ; =0x04000050 + mov r1, #1 + mov r2, #8 + mov r3, #0 + blx G2x_SetBlendAlpha_ + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DC39C: + bl ErrorHandling +_021DC3A0: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC3A4: .word 0x04000050 + thumb_func_end MOD16_021DC2C4 + + thumb_func_start MOD16_021DC3A8 +MOD16_021DC3A8: ; 0x021DC3A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r6, r0, #0 + add r7, r1, #0 + ldr r0, [r5, #0x1c] + ldr r4, [r7, #8] + cmp r0, #0 + bne _021DC3BC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DC3BC: + ldr r0, [r5, #4] + bl MOD16_021D9EC4 + mov r1, #0x51 + lsl r1, r1, #2 + ldr r2, [r4, r1] + cmp r2, r0 + beq _021DC3EC + str r0, [r4, r1] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DCFD4 + ldr r1, [r6] + ldr r3, [r7, #4] + add r0, r4, #0 + add r2, r5, #0 + bl MOD16_021DD244 + ldr r1, [r6] + add r0, r4, #0 + add r2, r5, #0 + bl MOD16_021DCE44 +_021DC3EC: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DCF1C + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DD060 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DD12C + ldr r1, [r6] + ldr r3, [r7, #4] + add r0, r4, #0 + add r2, r5, #0 + bl MOD16_021DD1C0 + ldr r1, [r6] + add r0, r4, #0 + add r2, r5, #0 + bl MOD16_021DD49C + add r0, r5, #0 + bl MOD16_021DD4F0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DC3A8 + + thumb_func_start MOD16_021DC424 +MOD16_021DC424: ; 0x021DC424 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021DC4C6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DC440: ; jump table + .short _021DC448 - _021DC440 - 2 ; case 0 + .short _021DC484 - _021DC440 - 2 ; case 1 + .short _021DC4AC - _021DC440 - 2 ; case 2 + .short _021DC4C2 - _021DC440 - 2 ; case 3 +_021DC448: + ldr r0, _021DC4D0 ; =0x04000050 + mov r3, #0 + strh r3, [r0] + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021DC474 + ldr r1, [r5] + ldr r3, [r4, #4] + add r0, r6, #0 + bl MOD16_021DD6DC + ldr r0, [r5] + add r1, r7, #0 + bl MOD16_021DD4E0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021DD7C4 + b _021DC47C +_021DC474: + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021DD724 +_021DC47C: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC4CA +_021DC484: + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021DC496 + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021DD850 + b _021DC4A0 +_021DC496: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021DD760 +_021DC4A0: + cmp r0, #0 + beq _021DC4CA + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC4CA +_021DC4AC: + ldr r1, [r5] + add r0, r6, #0 + bl MOD16_021DC754 + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC4CA +_021DC4C2: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DC4C6: + bl ErrorHandling +_021DC4CA: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DC4D0: .word 0x04000050 + thumb_func_end MOD16_021DC424 + + thumb_func_start MOD16_021DC4D4 +MOD16_021DC4D4: ; 0x021DC4D4 + mov r2, #0 + str r2, [r0, #8] + str r2, [r1] + mov r0, #0x3c + str r0, [r1, #4] + mov r0, #4 + str r0, [r1, #8] + str r0, [r1, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DC4D4 + + thumb_func_start MOD16_021DC4E8 +MOD16_021DC4E8: ; 0x021DC4E8 + mov r0, #0xa + lsl r0, r0, #6 + str r0, [r1, #4] + mov r0, #0 + str r0, [r1, #8] + str r0, [r1, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DC4E8 + + thumb_func_start MOD16_021DC4F8 +MOD16_021DC4F8: ; 0x021DC4F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021DC598 + cmp r0, #1 + beq _021DC53E + add r0, r5, #0 + bl MOD16_021DC540 + ldr r0, [r4] + cmp r0, #0 + bne _021DC52A + ldr r0, [r4, #0x14] + cmp r0, #1 + bne _021DC522 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DDB0C + b _021DC52A +_021DC522: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DDB58 +_021DC52A: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _021DC538 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DC620 +_021DC538: + add r0, r5, #0 + bl MOD16_021DC550 +_021DC53E: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DC4F8 + + thumb_func_start MOD16_021DC540 +MOD16_021DC540: ; 0x021DC540 + mov r1, #0 + str r1, [r0, #0x24] + str r1, [r0, #0x28] + str r1, [r0, #0x2c] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DC540 + + thumb_func_start MOD16_021DC550 +MOD16_021DC550: ; 0x021DC550 + ldr r1, _021DC594 ; =0x021C48B8 + mov r2, #2 + ldr r1, [r1, #0x48] + tst r2, r1 + beq _021DC572 + mov r1, #0x5d + ldr r2, [r0, #4] + lsl r1, r1, #6 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021DC56C + mov r1, #1 + str r1, [r0, #0x28] + bx lr +_021DC56C: + mov r1, #1 + str r1, [r0, #0x24] + bx lr +_021DC572: + mov r3, #1 + add r2, r1, #0 + tst r2, r3 + beq _021DC57E + str r3, [r0, #0x2c] + bx lr +_021DC57E: + lsl r2, r3, #0xa + tst r2, r1 + beq _021DC588 + str r3, [r0, #0x34] + bx lr +_021DC588: + mov r2, #4 + tst r1, r2 + beq _021DC590 + str r3, [r0, #0x30] +_021DC590: + bx lr + nop +_021DC594: .word 0x021C48B8 + thumb_func_end MOD16_021DC550 + + thumb_func_start MOD16_021DC598 +MOD16_021DC598: ; 0x021DC598 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5, #0x28] + add r4, r2, #0 + cmp r1, #0 + beq _021DC5B4 + bl MOD16_021DD9C8 + ldr r0, _021DC618 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r4, r5, r6, pc} +_021DC5B4: + ldr r1, [r5, #0x24] + cmp r1, #0 + beq _021DC5CA + add r1, r4, #0 + bl MOD16_021DDAB4 + ldr r0, _021DC618 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r4, r5, r6, pc} +_021DC5CA: + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021DC5F6 + ldr r0, [r5, #4] + bl MOD16_021D9EC4 + add r1, r0, #0 + ldr r0, [r5, #4] + bl MOD16_021D9EDC + ldr r1, _021DC61C ; =0x000001EE + cmp r0, r1 + beq _021DC5F6 + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021DD9E0 + ldr r0, _021DC618 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r4, r5, r6, pc} +_021DC5F6: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021DC604 + add r0, r5, #0 + bl MOD16_021DD9F8 + pop {r4, r5, r6, pc} +_021DC604: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021DC614 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DDA2C + pop {r4, r5, r6, pc} +_021DC614: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DC618: .word 0x000005DD +_021DC61C: .word 0x000001EE + thumb_func_end MOD16_021DC598 + + thumb_func_start MOD16_021DC620 +MOD16_021DC620: ; 0x021DC620 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021DC670 + ldr r2, [r4, #4] + ldr r1, [r0, #0xc] + sub r1, r1, r2 + cmp r1, #0 + ble _021DC638 + str r1, [r0, #0xc] + pop {r4, pc} +_021DC638: + mov r1, #0 + str r1, [r0, #0xc] + str r1, [r4] + ldr r0, [r4, #0xc] + cmp r0, #0 + ble _021DC670 + ldr r0, [r4, #8] + sub r0, r0, #1 + cmp r0, #0 + ble _021DC650 + str r0, [r4, #8] + pop {r4, pc} +_021DC650: + ldr r0, [r4, #4] + blx _fflt + ldr r1, _021DC674 ; =0x3FCCCCCD + blx _fmul + blx _ffix + str r0, [r4, #4] + ldr r0, [r4, #0xc] + sub r1, r0, #1 + mov r0, #4 + sub r0, r0, r1 + str r1, [r4, #0xc] + lsl r0, r0, #2 + str r0, [r4, #8] +_021DC670: + pop {r4, pc} + nop +_021DC674: .word 0x3FCCCCCD + thumb_func_end MOD16_021DC620 + + thumb_func_start MOD16_021DC678 +MOD16_021DC678: ; 0x021DC678 + mov r3, #0xa + lsl r3, r3, #6 + str r3, [r0, #0xc] + str r2, [r1] + str r2, [r0, #8] + bx lr + thumb_func_end MOD16_021DC678 + + thumb_func_start MOD16_021DC684 +MOD16_021DC684: ; 0x021DC684 + ldr r3, _021DC68C ; =MOD16_021D9E70 + ldr r0, [r0, #4] + bx r3 + nop +_021DC68C: .word MOD16_021D9E70 + thumb_func_end MOD16_021DC684 + + thumb_func_start MOD16_021DC690 +MOD16_021DC690: ; 0x021DC690 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + mov r1, #0 + add r5, r0, #0 + add r4, r2, #0 + add r7, r3, #0 + str r1, [sp] + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + str r7, [sp, #4] + bl MOD16_021D8CFC + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DC860 + ldr r0, [r4, #4] + bl MOD16_021D9D04 + add r3, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021DC8F8 + ldr r0, [r4, #4] + bl MOD16_021D9F28 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl MOD16_021D9F34 + add r3, r0, #0 + ldr r2, [sp, #8] + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DC958 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021DCAB4 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021DCB58 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021DCCC0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DD63C + str r0, [r5, #0x4c] + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD16_021DCD68 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DCF10 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DCF1C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD060 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD110 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD12C + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD16_021DD1C0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021DD49C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DC690 + + thumb_func_start MOD16_021DC754 +MOD16_021DC754: ; 0x021DC754 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021DCED8 + add r0, r4, #0 + bl MOD16_021DCAFC + add r0, r4, #0 + bl MOD16_021DCEBC + add r0, r4, #0 + bl MOD16_021DC93C + pop {r4, pc} + thumb_func_end MOD16_021DC754 + + thumb_func_start MOD16_021DC770 +MOD16_021DC770: ; 0x021DC770 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + add r4, r2, #0 + mov r0, #0x20 + str r0, [sp] + add r6, r3, #0 + mov r2, #0 + add r0, r7, #0 + mov r1, #4 + add r3, r2, #0 + str r6, [sp, #4] + bl MOD16_021D8CFC + add r0, r7, #0 + mov r1, #0 + add r2, sp, #0x10 + add r3, r6, #0 + bl MOD16_021D8D70 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + mov r1, #2 + ldr r0, [r0, #0xc] + lsl r1, r1, #8 + str r0, [sp, #8] + blx DC_FlushRange + ldr r0, [sp, #8] + mov r2, #0x1e + add r0, #0x20 + mov r1, #0x20 + lsl r2, r2, #4 + str r0, [sp, #8] + blx GX_LoadBGPltt + ldr r0, [sp, #0xc] + bl FUN_02016A18 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DC860 + ldr r0, [r4, #4] + bl MOD16_021D9D04 + add r3, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021DC8F8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021DCAB4 + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021DCB58 + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021DCCC0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DD63C + str r0, [r5, #0x4c] + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021DCD68 + ldr r0, [r4, #4] + bl MOD16_021D9F28 + add r2, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DCA2C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DCF10 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DCF1C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD060 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD110 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD12C + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021DD1C0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021DD49C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DC770 + + thumb_func_start MOD16_021DC860 +MOD16_021DC860: ; 0x021DC860 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r0, #0 + str r4, [sp, #0xc] + ldr r2, [r5] + mov r1, #0x1c + mov r3, #3 + bl MOD16_021D8CB4 + str r4, [sp] + add r0, r5, #0 + mov r1, #0x26 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + add r0, r5, #0 + mov r1, #0x27 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #4 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #1 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #3 + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021DC860 + + thumb_func_start MOD16_021DC8F8 +MOD16_021DC8F8: ; 0x021DC8F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + add r6, r1, #0 + str r0, [sp, #8] + add r4, r2, #0 + str r4, [sp, #0xc] + add r7, r3, #0 + ldr r2, [r6] + add r0, r6, #0 + mov r1, #0x1c + mov r3, #2 + bl MOD16_021D8CB4 + cmp r7, #1 + bne _021DC924 + mov r1, #0x2a + b _021DC926 +_021DC924: + mov r1, #0x28 +_021DC926: + add r3, r5, #0 + add r0, r6, #0 + mov r2, #1 + add r3, #0xdc + str r4, [sp] + bl MOD16_021D8D48 + add r5, #0xd8 + str r0, [r5] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DC8F8 + + thumb_func_start MOD16_021DC93C +MOD16_021DC93C: ; 0x021DC93C + push {r4, lr} + add r4, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #0 + add r0, #0xd8 + str r1, [r0] + add r4, #0xdc + str r1, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DC93C + + thumb_func_start MOD16_021DC958 +MOD16_021DC958: ; 0x021DC958 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0x20 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp, #0x10] + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021DCA24 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #0 + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021DCA28 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #8 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #1 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021DCA28 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0x80 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + add r1, r7, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02021B04 + mov r0, #0xaa + str r0, [sp] + mov r1, #0 + ldr r0, _021DCA28 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0x30 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #1 + str r0, [sp] + ldr r1, [sp, #0x10] + add r0, r4, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02021B04 + mov r0, #0xaa + str r0, [sp] + mov r1, #0 + ldr r0, _021DCA28 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0xb4 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r0, [r5] + mov r1, #1 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DCA24: .word 0x00000266 +_021DCA28: .word 0x00020100 + thumb_func_end MOD16_021DC958 + + thumb_func_start MOD16_021DCA2C +MOD16_021DCA2C: ; 0x021DCA2C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x20 + add r6, r1, #0 + add r7, r2, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021DCAAC ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #0x6c + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021DCAB0 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #8 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + add r1, r7, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02021B04 + mov r0, #0xaa + str r0, [sp] + mov r1, #0 + ldr r0, _021DCAB0 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0x30 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r0, [r5] + mov r1, #1 + bl FUN_0201AC68 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DCAAC: .word 0x00000266 +_021DCAB0: .word 0x00020100 + thumb_func_end MOD16_021DCA2C + + thumb_func_start MOD16_021DCAB4 +MOD16_021DCAB4: ; 0x021DCAB4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r0, #2 + mov r1, #0 + add r2, r4, #0 + bl FUN_02008DEC + add r1, r5, #0 + add r1, #0x80 + str r0, [r1] + mov r0, #2 + mov r1, #1 + add r2, r4, #0 + bl FUN_02008DEC + add r1, r5, #0 + add r1, #0x84 + str r0, [r1] + mov r0, #2 + add r1, r0, #0 + add r2, r4, #0 + bl FUN_02008DEC + add r1, r5, #0 + add r1, #0x88 + str r0, [r1] + mov r0, #2 + mov r1, #3 + add r2, r4, #0 + bl FUN_02008DEC + add r5, #0x8c + str r0, [r5] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DCAB4 + + thumb_func_start MOD16_021DCAFC +MOD16_021DCAFC: ; 0x021DCAFC + push {r4, lr} + add r4, r0, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0x51 + bl FUN_020094F0 + bl FUN_02009C0C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #3 + bl FUN_020094F0 + bl FUN_02009E04 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0x6f + bl FUN_020094F0 + bl FUN_02009C0C + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + bl FUN_02008E2C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_02008E2C + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_02008E2C + add r4, #0x8c + ldr r0, [r4] + bl FUN_02008E2C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DCAFC + + thumb_func_start MOD16_021DCB58 +MOD16_021DCB58: ; 0x021DCB58 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r6, r0, #0 + mov r2, #0x51 + add r0, r5, #0 + str r2, [sp] + mov r3, #1 + str r3, [sp, #4] + str r4, [sp, #8] + add r0, #0x80 + ldr r0, [r0] + add r1, r6, #0 + bl FUN_020091E0 + add r7, r0, #0 + bl FUN_02009B04 + add r0, r7, #0 + bl FUN_02009474 + mov r2, #3 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xc + str r0, [sp, #8] + add r0, r5, #0 + str r4, [sp, #0xc] + add r0, #0x84 + ldr r0, [r0] + add r1, r6, #0 + mov r3, #0 + bl FUN_02009298 + add r7, r0, #0 + bl FUN_02009D68 + add r0, r7, #0 + bl FUN_02009474 + mov r2, #0x4f + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x88 + ldr r0, [r0] + add r1, r6, #0 + mov r3, #1 + bl FUN_02009358 + mov r2, #0x50 + str r2, [sp] + mov r0, #3 + str r0, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x8c + ldr r0, [r0] + add r1, r6, #0 + mov r3, #1 + bl FUN_02009358 + mov r0, #0x50 + str r0, [sp] + sub r0, #0x51 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #2 + str r1, [sp, #0x10] + add r1, r5, #0 + add r1, #0x80 + ldr r1, [r1] + mov r2, #3 + str r1, [sp, #0x14] + add r1, r5, #0 + add r1, #0x84 + ldr r1, [r1] + mov r3, #0x4f + str r1, [sp, #0x18] + add r1, r5, #0 + add r1, #0x88 + ldr r1, [r1] + str r1, [sp, #0x1c] + add r1, r5, #0 + add r1, #0x8c + ldr r1, [r1] + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r5, #0 + add r0, #0x90 + mov r1, #0x51 + bl FUN_02008AA4 + mov r2, #0x6f + str r2, [sp] + mov r3, #1 + str r3, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x80 + ldr r0, [r0] + add r1, r6, #0 + bl FUN_020091E0 + add r7, r0, #0 + bl FUN_02009B04 + add r0, r7, #0 + bl FUN_02009474 + mov r2, #0x6d + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x88 + ldr r0, [r0] + add r1, r6, #0 + mov r3, #1 + bl FUN_02009358 + mov r2, #0x6e + str r2, [sp] + mov r0, #3 + str r0, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x8c + ldr r0, [r0] + add r1, r6, #0 + mov r3, #1 + bl FUN_02009358 + mov r0, #0x6e + str r0, [sp] + sub r0, #0x6f + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #2 + str r1, [sp, #0x10] + add r1, r5, #0 + add r1, #0x80 + ldr r1, [r1] + mov r2, #3 + str r1, [sp, #0x14] + add r1, r5, #0 + add r1, #0x84 + ldr r1, [r1] + mov r3, #0x6d + str r1, [sp, #0x18] + add r1, r5, #0 + add r1, #0x88 + ldr r1, [r1] + str r1, [sp, #0x1c] + add r1, r5, #0 + add r1, #0x8c + ldr r1, [r1] + add r5, #0xb4 + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r5, #0 + mov r1, #0x6f + bl FUN_02008AA4 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DCB58 + + thumb_func_start MOD16_021DCCC0 +MOD16_021DCCC0: ; 0x021DCCC0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + mov r4, #0 + add r6, r0, #0 + add r3, r1, #0 + add r5, sp, #0 + add r0, r4, #0 + add r1, r4, #0 + stmia r5!, {r0, r1} + stmia r5!, {r0, r1} + stmia r5!, {r0, r1} + stmia r5!, {r0, r1} + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r3, r0] + add r5, r6, #0 + str r0, [sp] + add r0, r6, #0 + add r0, #0x90 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0x18] + mov r0, #0x20 + str r2, [sp, #0x1c] + str r0, [sp, #0x14] + add r7, r4, #0 +_021DCCF4: + add r0, sp, #0 + bl FUN_0201FF84 + add r1, r7, #0 + stmia r5!, {r0} + bl FUN_02020130 + add r4, r4, #1 + cmp r4, #9 + blt _021DCCF4 + mov r5, #0 + str r5, [sp, #0x14] + add r4, r6, #0 + add r7, sp, #0 +_021DCD10: + add r0, r7, #0 + bl FUN_0201FF84 + mov r1, #1 + str r0, [r4, #0x50] + bl FUN_02020130 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #9 + blt _021DCD10 + mov r0, #0 + str r0, [sp, #0x14] + add r0, sp, #0 + bl FUN_0201FF84 + mov r1, #2 + str r0, [r6, #0x74] + bl FUN_02020130 + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0xe + lsl r0, r0, #0xe + str r0, [sp, #8] + mov r0, #5 + lsl r0, r0, #0x10 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xb4 + str r0, [sp, #4] + add r0, sp, #0 + bl FUN_0201FF84 + str r0, [r6, #0x7c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r6, #0x7c] + mov r1, #1 + bl FUN_02020398 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DCCC0 + + thumb_func_start MOD16_021DCD68 +MOD16_021DCD68: ; 0x021DCD68 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r1, [sp, #8] + str r0, [sp, #4] + mov r1, #0x15 + ldr r0, [sp, #8] + lsl r1, r1, #4 + ldr r0, [r0, r1] + mov r1, #0 + str r0, [sp, #0x1c] + ldr r0, [sp, #4] + add r7, r2, #0 + add r0, #0x98 + ldr r0, [r0] + str r3, [sp, #0xc] + str r0, [sp, #0x24] + mov r0, #2 + str r0, [sp, #0x34] + mov r0, #1 + str r0, [sp, #0x3c] + add r0, r3, #0 + str r1, [sp, #0x28] + str r1, [sp, #0x2c] + str r1, [sp, #0x30] + str r1, [sp, #0x38] + str r0, [sp, #0x40] + ldr r0, [r7, #4] + bl MOD16_021D9EC4 + sub r4, r0, #4 + ldr r0, [sp, #4] + ldr r6, [r0, #0x24] + ldr r0, [r7, #4] + bl MOD16_021D9ED0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] +_021DCDB4: + ldr r0, [sp, #4] + lsl r1, r6, #2 + add r5, r0, r1 + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021DCDC8 + bl MOD16_021DB338 + mov r0, #0 + str r0, [r5, #0x28] +_021DCDC8: + cmp r4, #0 + blt _021DCE20 + ldr r0, [sp, #0x10] + cmp r4, r0 + bge _021DCE20 + ldr r0, [r7, #4] + add r1, r4, #0 + bl MOD16_021D9EDC + add r1, r0, #0 + ldr r0, _021DCE40 ; =0x000001EE + cmp r1, r0 + beq _021DCE0E + ldr r0, [r7, #4] + bl MOD16_021D9E08 + add r3, r0, #0 + ldr r0, [sp, #8] + ldr r1, [r7, #4] + ldr r2, [sp, #0xc] + ldr r3, [r3] + bl MOD16_021D7E14 + ldr r1, [sp, #4] + str r0, [sp, #0x20] + str r0, [sp, #0x18] + ldr r1, [r1, #0x4c] + add r0, sp, #0x1c + bl MOD16_021DB2D4 + str r0, [r5, #0x28] + ldr r0, [sp, #0x18] + bl MOD16_021DB3BC + b _021DCE24 +_021DCE0E: + add r0, r4, #1 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + add r3, r6, #0 + bl MOD16_021DD370 + b _021DCE24 +_021DCE20: + mov r0, #0 + str r0, [r5, #0x28] +_021DCE24: + add r0, r6, #1 + mov r1, #9 + blx _s32_div_f + ldr r0, [sp, #0x14] + add r6, r1, #0 + add r0, r0, #1 + add r4, r4, #1 + str r0, [sp, #0x14] + cmp r0, #9 + blt _021DCDB4 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021DCE40: .word 0x000001EE + thumb_func_end MOD16_021DCD68 + + thumb_func_start MOD16_021DCE44 +MOD16_021DCE44: ; 0x021DCE44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r6, r1, #0 + bl MOD16_021D9EC4 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl MOD16_021D9D88 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9E08 + add r7, r0, #0 + ldr r0, [r4, #4] + ldr r1, [sp, #8] + bl MOD16_021D9EDC + ldr r1, _021DCEB8 ; =0x000001EE + cmp r0, r1 + bne _021DCE8C + add r0, r6, #0 + mov r1, #0 + bl MOD16_021D870C + ldr r0, [r5, #0x7c] + cmp r0, #0 + beq _021DCEB4 + mov r1, #1 + bl FUN_020200A0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_021DCE8C: + mov r0, #0x38 + str r0, [sp] + mov r0, #0x50 + str r0, [sp, #4] + ldr r1, [r4, #4] + ldr r2, [r7] + add r0, r6, #0 + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #1 + bl MOD16_021D870C + ldr r0, [r5, #0x7c] + cmp r0, #0 + beq _021DCEB4 + mov r1, #0 + bl FUN_020200A0 +_021DCEB4: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DCEB8: .word 0x000001EE + thumb_func_end MOD16_021DCE44 + + thumb_func_start MOD16_021DCEBC +MOD16_021DCEBC: ; 0x021DCEBC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021DCEC2: + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021DCECC + bl MOD16_021DB338 +_021DCECC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blt _021DCEC2 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DCEBC + + thumb_func_start MOD16_021DCED8 +MOD16_021DCED8: ; 0x021DCED8 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_021DCEE0: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blt _021DCEE0 + mov r5, #0 + add r4, r6, #0 +_021DCEF2: + ldr r0, [r4, #0x50] + bl FUN_0201FFC8 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #9 + blt _021DCEF2 + ldr r0, [r6, #0x74] + bl FUN_0201FFC8 + ldr r0, [r6, #0x7c] + bl FUN_0201FFC8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DCED8 + + thumb_func_start MOD16_021DCF10 +MOD16_021DCF10: ; 0x021DCF10 + ldr r3, _021DCF18 ; =MOD16_021DD44C + mov r2, #0 + str r2, [r0, #0x24] + bx r3 + .align 2, 0 +_021DCF18: .word MOD16_021DD44C + thumb_func_end MOD16_021DCF10 + + thumb_func_start MOD16_021DCF1C +MOD16_021DCF1C: ; 0x021DCF1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5, #0x24] + str r1, [sp] + str r0, [sp, #4] + mov r4, #0 +_021DCF2A: + ldr r0, [sp] + ldr r0, [r0, #8] + cmp r0, #1 + bne _021DCF36 + add r0, r4, #2 + b _021DCF38 +_021DCF36: + add r0, r4, #0 +_021DCF38: + add r1, r4, #1 + ldr r3, [sp] + lsl r7, r1, #2 + mov r2, #0xa + lsl r0, r0, #2 + ldr r1, _021DCFCC ; =0x021FF570 + str r0, [sp, #8] + ldr r0, [r1, r0] + lsl r2, r2, #6 + ldr r6, [r3, #0xc] + add r3, r2, #0 + ldr r1, [r1, r7] + sub r3, r3, r6 + bl MOD16_021DD174 + str r0, [sp, #0xc] + ldr r3, [sp] + mov r2, #0xa + ldr r1, _021DCFD0 ; =0x021FF59C + ldr r0, [sp, #8] + lsl r2, r2, #6 + ldr r6, [r3, #0xc] + ldr r0, [r1, r0] + add r3, r2, #0 + ldr r1, [r1, r7] + sub r3, r3, r6 + bl MOD16_021DD174 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + add r1, sp, #0xc + lsl r6, r0, #2 + ldr r0, [r5, r6] + bl FUN_02020044 + mov r0, #4 + sub r7, r0, r4 + bpl _021DCF86 + neg r7, r7 +_021DCF86: + lsl r1, r7, #1 + bpl _021DCF8C + neg r1, r1 +_021DCF8C: + ldr r0, [r5, r6] + add r1, #0x20 + bl FUN_02020310 + cmp r4, #4 + bne _021DCFA2 + ldr r0, [r5, r6] + mov r1, #0 + bl FUN_020202DC + b _021DCFB6 +_021DCFA2: + add r1, r7, #6 + cmp r1, #9 + ldr r0, [r5, r6] + bge _021DCFB0 + bl FUN_020202DC + b _021DCFB6 +_021DCFB0: + mov r1, #9 + bl FUN_020202DC +_021DCFB6: + ldr r0, [sp, #4] + mov r1, #9 + add r0, r0, #1 + blx _s32_div_f + add r4, r4, #1 + str r1, [sp, #4] + cmp r4, #9 + blt _021DCF2A + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DCFCC: .word 0x021FF570 +_021DCFD0: .word 0x021FF59C + thumb_func_end MOD16_021DCF1C + + thumb_func_start MOD16_021DCFD4 +MOD16_021DCFD4: ; 0x021DCFD4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9EC4 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9ED0 + add r7, r0, #0 + ldr r0, [r4, #8] + cmp r0, #1 + bne _021DD026 + ldr r0, [r5, #0x24] + add r0, r0, #1 + cmp r0, #9 + bge _021DCFFA + b _021DCFFC +_021DCFFA: + mov r0, #0 +_021DCFFC: + str r0, [r5, #0x24] + ldr r0, [r5, #0x24] + mov r1, #9 + add r0, #8 + blx _s32_div_f + add r0, r6, #4 + cmp r0, r7 + blt _021DD01A + lsl r0, r1, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} +_021DD01A: + lsl r0, r1, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} +_021DD026: + cmp r0, #2 + bne _021DD054 + ldr r0, [r5, #0x24] + sub r0, r0, #1 + bmi _021DD032 + b _021DD034 +_021DD032: + mov r0, #8 +_021DD034: + str r0, [r5, #0x24] + ldr r1, [r5, #0x24] + sub r0, r6, #4 + bpl _021DD048 + lsl r0, r1, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} +_021DD048: + lsl r0, r1, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} +_021DD054: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD44C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DCFD4 + + thumb_func_start MOD16_021DD060 +MOD16_021DD060: ; 0x021DD060 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r1, #0 + str r0, [sp] + ldr r0, [r7, #4] + bl MOD16_021D9EC4 + add r5, r0, #0 + ldr r0, [r7, #4] + bl MOD16_021D9ED0 + str r0, [sp, #4] + sub r0, r5, #4 + mov r4, #0 + str r0, [sp, #8] +_021DD07E: + ldr r0, [sp] + mov r1, #9 + ldr r0, [r0, #0x24] + add r0, r0, r4 + blx _s32_div_f + ldr r0, [sp, #8] + add r5, r1, #0 + mov r6, #0 + add r1, r0, r4 + bmi _021DD0B6 + ldr r0, [sp, #4] + cmp r1, r0 + bge _021DD0B6 + ldr r0, [r7, #4] + bl MOD16_021D9EDC + add r1, r0, #0 + ldr r0, _021DD10C ; =0x000001EE + cmp r1, r0 + beq _021DD0B6 + ldr r0, [r7, #4] + bl MOD16_021D9E08 + ldr r0, [r0, #4] + cmp r0, #2 + bne _021DD0B6 + mov r6, #1 +_021DD0B6: + ldr r0, [sp] + lsl r1, r5, #2 + add r5, r0, r1 + ldr r0, [r5, #0x50] + add r1, r6, #0 + bl FUN_020200A0 + cmp r6, #0 + beq _021DD102 + ldr r0, [r5] + bl FUN_0202011C + mov r1, #0x36 + ldr r2, [r0] + lsl r1, r1, #0xc + sub r1, r2, r1 + str r1, [sp, #0xc] + ldr r0, [r0, #4] + add r1, sp, #0xc + str r0, [sp, #0x10] + ldr r0, [r5, #0x50] + bl FUN_02020044 + ldr r0, [r5] + bl FUN_02020300 + add r1, r0, #0 + ldr r0, [r5, #0x50] + bl FUN_020202A8 + ldr r0, [r5] + bl FUN_0202032C + add r1, r0, #0 + ldr r0, [r5, #0x50] + sub r1, r1, #1 + bl FUN_02020310 +_021DD102: + add r4, r4, #1 + cmp r4, #9 + blt _021DD07E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD10C: .word 0x000001EE + thumb_func_end MOD16_021DD060 + + thumb_func_start MOD16_021DD110 +MOD16_021DD110: ; 0x021DD110 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #4] + bl MOD16_021D9ED0 + add r1, r0, #0 + mov r0, #0x36 + lsl r0, r0, #0xc + lsl r1, r1, #0xc + blx FX_Div + str r0, [r4, #0x78] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DD110 + + thumb_func_start MOD16_021DD12C +MOD16_021DD12C: ; 0x021DD12C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r1, #4] + bl MOD16_021D9EC4 + add r2, r0, #0 + ldr r0, [r4, #0x78] + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + mov r0, #0x3a + lsl r0, r0, #0xc + str r1, [sp, #4] + add r0, r1, r0 + str r0, [sp, #4] + mov r0, #0x3e + lsl r0, r0, #0xe + str r0, [sp] + ldr r0, [r4, #0x74] + add r1, sp, #0 + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DD12C + + thumb_func_start MOD16_021DD174 +MOD16_021DD174: ; 0x021DD174 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + sub r0, r1, r5 + lsl r2, r3, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + lsl r1, r4, #0xc + blx FX_Div + add r0, r0, r5 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD174 + + thumb_func_start MOD16_021DD1A0 +MOD16_021DD1A0: ; 0x021DD1A0 + push {r3, r4, r5, lr} + mov r2, #0x52 + add r5, r1, #0 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + blx Call_FillMemWithValue + ldr r0, [r5, #4] + bl MOD16_021D9EC4 + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DD1A0 + + thumb_func_start MOD16_021DD1C0 +MOD16_021DD1C0: ; 0x021DD1C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + ldr r5, [r7, #0x24] + mov r6, #0 +_021DD1CA: + lsl r0, r5, #2 + add r4, r7, r0 + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _021DD20C + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl MOD16_021DD220 + ldr r0, [r4, #0x28] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r2, [sp] + bl FUN_020118C4 + ldr r0, [r4] + bl FUN_0202032C + add r1, r0, #0 + ldr r0, [r4, #0x28] + sub r1, r1, #1 + ldr r0, [r0] + bl FUN_02011A30 + ldr r0, [r4] + bl FUN_02020300 + add r1, r0, #0 + ldr r0, [r4, #0x28] + ldr r0, [r0] + bl FUN_02011A90 +_021DD20C: + add r0, r5, #1 + mov r1, #9 + blx _s32_div_f + add r6, r6, #1 + add r5, r1, #0 + cmp r6, #9 + blt _021DD1CA + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DD1C0 + + thumb_func_start MOD16_021DD220 +MOD16_021DD220: ; 0x021DD220 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + bl FUN_0202011C + ldr r1, [r0] + asr r1, r1, #0xc + str r1, [r5] + ldr r0, [r0, #4] + asr r0, r0, #0xc + str r0, [r4] + ldr r0, [r5] + sub r0, #0x40 + str r0, [r5] + ldr r0, [r4] + sub r0, #8 + str r0, [r4] + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD220 + + thumb_func_start MOD16_021DD244 +MOD16_021DD244: ; 0x021DD244 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r2, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + str r1, [sp, #8] + str r3, [sp, #0xc] + bl MOD16_021D9EC4 + str r0, [sp, #0x14] + ldr r0, [r4, #4] + bl MOD16_021D9ED0 + ldr r1, [r4, #8] + str r0, [sp, #0x10] + cmp r1, #1 + beq _021DD26C + cmp r1, #2 + beq _021DD276 + b _021DD27C +_021DD26C: + ldr r6, [r5, #0x24] + ldr r0, [sp, #0x14] + add r6, #8 + add r7, r0, #4 + b _021DD27C +_021DD276: + ldr r0, [sp, #0x14] + ldr r6, [r5, #0x24] + sub r7, r0, #4 +_021DD27C: + cmp r1, #0 + bne _021DD290 + ldr r1, [sp, #8] + ldr r3, [sp, #0xc] + add r0, r5, #0 + add r2, r4, #0 + bl MOD16_021DCD68 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DD290: + add r0, r6, #0 + mov r1, #9 + blx _s32_div_f + ldr r0, [sp, #0x10] + add r6, r1, #0 + cmp r7, r0 + bge _021DD2DA + cmp r7, #0 + blt _021DD2DA + ldr r0, [r4, #4] + add r1, r7, #0 + bl MOD16_021D9EDC + ldr r1, _021DD2F0 ; =0x000001EE + cmp r0, r1 + beq _021DD2C6 + str r6, [sp] + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r3, [sp, #0xc] + add r0, r5, #0 + add r2, r4, #0 + bl MOD16_021DD2F4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DD2C6: + add r0, r7, #1 + str r0, [sp] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r5, #0 + add r3, r6, #0 + bl MOD16_021DD370 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DD2DA: + lsl r4, r6, #2 + add r5, #0x28 + ldr r0, [r5, r4] + cmp r0, #0 + beq _021DD2EC + bl MOD16_021DB338 + mov r0, #0 + str r0, [r5, r4] +_021DD2EC: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD2F0: .word 0x000001EE + thumb_func_end MOD16_021DD244 + + thumb_func_start MOD16_021DD2F4 +MOD16_021DD2F4: ; 0x021DD2F4 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r4, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + ldr r0, [r4, #4] + ldr r1, [sp, #0x44] + add r7, r3, #0 + bl MOD16_021D9E08 + str r0, [sp] + cmp r0, #0 + bne _021DD312 + bl ErrorHandling +_021DD312: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + ldr r3, [sp] + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x24] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + str r1, [sp, #0x20] + str r7, [sp, #0x28] + ldr r1, [r4, #4] + ldr r3, [r3] + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021D7E14 + add r6, r0, #0 + ldr r0, [sp, #0x40] + add r4, r5, #0 + add r4, #0x28 + lsl r7, r0, #2 + ldr r0, [r4, r7] + cmp r0, #0 + beq _021DD358 + bl MOD16_021DB338 +_021DD358: + str r6, [sp, #8] + ldr r1, [r5, #0x4c] + add r0, sp, #4 + bl MOD16_021DB2D4 + str r0, [r4, r7] + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD2F4 + + thumb_func_start MOD16_021DD370 +MOD16_021DD370: ; 0x021DD370 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r2, #0 + str r0, [sp, #0x10] + add r5, r1, #0 + mov r0, #0x20 + add r1, r4, #0 + add r6, r3, #0 + bl FUN_020219F4 + add r7, r0, #0 + ldr r2, _021DD444 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r4, #0 + bl FUN_0200A86C + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [sp, #0x14] + ldr r0, [r5, r1] + mov r2, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #0x10] + add r0, #0x98 + ldr r0, [r0] + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x24] + str r0, [sp, #0x28] + str r0, [sp, #0x2c] + str r0, [sp, #0x34] + mov r0, #1 + str r2, [sp, #0x30] + str r4, [sp, #0x3c] + str r0, [sp, #0x38] + ldr r0, [r5, r1] + mov r1, #0xf + bl MOD16_021DB388 + add r5, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r1, [sp, #0x58] + add r0, r7, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02021B04 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DD448 ; =0x00030201 + add r2, r7, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #2 + mov r3, #0x16 + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + mov r1, #0x63 + add r2, r7, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DD448 ; =0x00030201 + add r2, r7, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #2 + mov r3, #0x31 + bl FUN_0201BDE0 + ldr r4, [sp, #0x10] + lsl r6, r6, #2 + add r4, #0x28 + ldr r0, [r4, r6] + cmp r0, #0 + beq _021DD420 + bl MOD16_021DB338 +_021DD420: + ldr r1, [sp, #0x10] + str r5, [sp, #0x1c] + ldr r1, [r1, #0x4c] + add r0, sp, #0x18 + bl MOD16_021DB2D4 + str r0, [r4, r6] + add r0, r5, #0 + bl MOD16_021DB3BC + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_0200A8B8 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD444: .word 0x00000266 +_021DD448: .word 0x00030201 + thumb_func_end MOD16_021DD370 + + thumb_func_start MOD16_021DD44C +MOD16_021DD44C: ; 0x021DD44C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9EC4 + add r5, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9ED0 + sub r4, r5, #4 + ldr r5, [r6, #0x24] + str r0, [sp] + mov r7, #0 +_021DD468: + cmp r4, #0 + blt _021DD47E + ldr r0, [sp] + cmp r4, r0 + bge _021DD47E + lsl r0, r5, #2 + ldr r0, [r6, r0] + mov r1, #1 + bl FUN_020200A0 + b _021DD488 +_021DD47E: + lsl r0, r5, #2 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_020200A0 +_021DD488: + add r0, r5, #1 + mov r1, #9 + blx _s32_div_f + add r7, r7, #1 + add r5, r1, #0 + add r4, r4, #1 + cmp r7, #9 + blt _021DD468 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DD44C + + thumb_func_start MOD16_021DD49C +MOD16_021DD49C: ; 0x021DD49C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r2, #0xc] + mov r0, #0xa + lsl r0, r0, #6 + sub r0, r0, r1 + lsl r0, r0, #0xc + mov r2, #0x1f + asr r1, r0, #0x1f + lsl r2, r2, #0xc + mov r3, #0 + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #0xa + lsl r1, r1, #0x12 + blx FX_Div + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021D8700 + mov r1, #0x17 + asr r2, r5, #0xc + bl FUN_02007558 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD49C + + thumb_func_start MOD16_021DD4E0 +MOD16_021DD4E0: ; 0x021DD4E0 + push {r3, lr} + bl MOD16_021D8700 + mov r1, #0x17 + mov r2, #0x1f + bl FUN_02007558 + pop {r3, pc} + thumb_func_end MOD16_021DD4E0 + + thumb_func_start MOD16_021DD4F0 +MOD16_021DD4F0: ; 0x021DD4F0 + push {r4, lr} + mov r1, #0xa + ldr r0, [r0, #0xc] + lsl r1, r1, #6 + sub r0, r1, r0 + lsl r3, r0, #0xc + asr r2, r3, #0x1f + lsr r0, r3, #0x10 + lsl r4, r2, #0x10 + orr r4, r0 + mov r0, #2 + lsl r3, r3, #0x10 + mov r2, #0 + lsl r0, r0, #0xa + add r0, r3, r0 + adc r4, r2 + lsl r2, r4, #0x14 + lsr r0, r0, #0xc + orr r0, r2 + lsl r1, r1, #0xc + blx FX_Div + asr r1, r0, #0xc + mov r0, #0x10 + sub r0, r0, r1 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _021DD52C ; =0x04000052 + strh r1, [r0] + pop {r4, pc} + .align 2, 0 +_021DD52C: .word 0x04000052 + thumb_func_end MOD16_021DD4F0 + + thumb_func_start MOD16_021DD530 +MOD16_021DD530: ; 0x021DD530 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0x14] + ldr r0, _021DD5BC ; =0x00000685 + add r5, r2, #0 + str r1, [sp, #0x18] + add r4, r3, #0 + bl FUN_020054C8 + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021DD576 + cmp r4, #0 + beq _021DD568 + ldr r0, [sp, #0x18] + mov r6, #3 + ldr r0, [r0] + mov r4, #0 + ldr r0, [r0] + mov r1, #1 + add r2, r6, #0 + mov r3, #0xc0 + str r4, [sp, #0x1c] + mov r7, #0xe + mov r5, #4 + bl FUN_020179E0 + b _021DD594 +_021DD568: + mov r0, #3 + mov r6, #0 + str r0, [sp, #0x1c] + mov r4, #0xe + add r7, r6, #0 + mov r5, #4 + b _021DD594 +_021DD576: + cmp r4, #0 + beq _021DD588 + mov r0, #0xc + str r0, [sp, #0x1c] + mov r4, #0x14 + mov r6, #3 + mov r7, #0xe + mov r5, #4 + b _021DD594 +_021DD588: + mov r0, #3 + str r0, [sp, #0x1c] + mov r4, #0xe + mov r6, #0xc + mov r7, #0x14 + mov r5, #4 +_021DD594: + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x14] + str r0, [sp] + str r6, [sp, #4] + str r4, [sp, #8] + str r7, [sp, #0xc] + ldr r1, [sp, #0x18] + str r5, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r1, [r1] + add r3, #0xdc + str r3, [sp, #0x14] + ldr r1, [r1] + ldr r3, [r3] + add r0, #0xe0 + mov r2, #2 + bl MOD16_021D7CA4 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD5BC: .word 0x00000685 + thumb_func_end MOD16_021DD530 + + thumb_func_start MOD16_021DD5C0 +MOD16_021DD5C0: ; 0x021DD5C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xe0 + add r4, r1, #0 + bl MOD16_021D7CC8 + add r6, r0, #0 + bne _021DD60A + add r0, r5, #0 + add r0, #0xf8 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xfc + ldr r0, [r0] + sub r0, r0, #1 + mul r0, r1 + mov r1, #1 + lsl r1, r1, #8 + ldr r1, [r5, r1] + blx _s32_div_f + add r5, #0xf0 + ldr r1, [r5] + add r0, r0, r1 + lsl r3, r0, #3 + mov r0, #0x2f + sub r3, #0x70 + mvn r0, r0 + cmp r3, r0 + bge _021DD5FE + add r3, r0, #0 +_021DD5FE: + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + mov r2, #3 + bl FUN_0201AEE4 +_021DD60A: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DD5C0 + + thumb_func_start MOD16_021DD610 +MOD16_021DD610: ; 0x021DD610 + push {r3, lr} + ldr r1, [r1, #0x10] + cmp r1, #0 + bne _021DD62A + cmp r2, #0 + bne _021DD62A + ldr r0, [r0] + mov r1, #1 + ldr r0, [r0] + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 +_021DD62A: + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021DD638 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + pop {r3, pc} + .align 2, 0 +_021DD638: .word 0xFFFF1FFF + thumb_func_end MOD16_021DD610 + + thumb_func_start MOD16_021DD63C +MOD16_021DD63C: ; 0x021DD63C + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r0, [r0, r1] + mov r1, #0xf + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + mov r1, #1 + add r2, r5, #0 + bl FUN_02011898 + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021DB3BC + add r0, r5, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD63C + + thumb_func_start MOD16_021DD664 +MOD16_021DD664: ; 0x021DD664 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x74] + mov r1, #1 + bl FUN_02020398 + mov r6, #1 + mov r4, #0 + add r7, r6, #0 +_021DD676: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #0x50] + add r1, r7, #0 + bl FUN_02020398 + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021DD694 + ldr r0, [r0] + mov r1, #1 + bl FUN_02011AF0 +_021DD694: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blt _021DD676 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD664 + + thumb_func_start MOD16_021DD6A0 +MOD16_021DD6A0: ; 0x021DD6A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x74] + mov r1, #0 + bl FUN_02020398 + mov r4, #0 + add r6, r4, #0 + add r7, r4, #0 +_021DD6B2: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #0x50] + add r1, r7, #0 + bl FUN_02020398 + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021DD6D0 + ldr r0, [r0] + mov r1, #0 + bl FUN_02011AF0 +_021DD6D0: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blt _021DD6B2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD6A0 + + thumb_func_start MOD16_021DD6DC +MOD16_021DD6DC: ; 0x021DD6DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x24] + add r6, r1, #0 + add r0, r0, #4 + mov r1, #9 + add r5, r2, #0 + add r7, r3, #0 + blx _s32_div_f + lsl r0, r1, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r4, r0, #0 + ldr r0, [r5, #4] + bl MOD16_021D9D88 + add r3, r0, #0 + ldr r0, [r4] + add r2, r7, #0 + str r0, [sp] + ldr r0, [r4, #4] + str r0, [sp, #4] + ldr r1, [r5, #4] + add r0, r6, #0 + bl MOD16_021D7E9C + add r0, r6, #0 + mov r1, #0 + bl MOD16_021D891C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD6DC + + thumb_func_start MOD16_021DD724 +MOD16_021DD724: ; 0x021DD724 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + bl MOD16_021DD530 + ldr r0, [r5, #0x10] + cmp r0, #1 + beq _021DD75E + cmp r4, #0 + beq _021DD74C + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x39 + bl FUN_0200A208 + pop {r3, r4, r5, pc} +_021DD74C: + mov r0, #1 + str r0, [sp] + mov r0, #4 + add r1, r0, #0 + sub r1, #0x14 + mov r2, #0 + mov r3, #0x39 + bl FUN_0200A208 +_021DD75E: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD724 + + thumb_func_start MOD16_021DD760 +MOD16_021DD760: ; 0x021DD760 + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021DD5C0 + add r7, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #1 + beq _021DD77C + mov r0, #1 + bl FUN_0200A344 + b _021DD77E +_021DD77C: + mov r0, #1 +_021DD77E: + cmp r7, #1 + bne _021DD7BE + cmp r0, #1 + bne _021DD7BE + ldr r0, [r4, #0x10] + cmp r0, #1 + beq _021DD7B0 + cmp r6, #0 + bne _021DD7B0 + mov r0, #0xf + mvn r0, r0 + mov r1, #0x3f + mov r2, #1 + bl FUN_0200A274 + ldr r0, [r5] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 +_021DD7B0: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021DD610 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DD7BE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD760 + + thumb_func_start MOD16_021DD7C4 +MOD16_021DD7C4: ; 0x021DD7C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + add r4, r3, #0 + bl MOD16_021DD664 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021DD530 + cmp r4, #0 + bne _021DD7F4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021DD910 + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021DD96C +_021DD7F4: + ldr r0, [r7, #0x10] + cmp r0, #1 + beq _021DD84A + cmp r4, #0 + beq _021DD826 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x28 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r2, r1, #0 + sub r2, #0x14 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021DD826: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x28 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r3, r1, #0 + sub r3, #0x14 + bl MOD16_021D8988 +_021DD84A: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD7C4 + + thumb_func_start MOD16_021DD850 +MOD16_021DD850: ; 0x021DD850 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r2, #0 + add r7, r0, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021DD5C0 + str r0, [sp, #8] + ldr r0, [r4, #0x10] + cmp r0, #1 + beq _021DD876 + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #0xc] +_021DD876: + cmp r6, #0 + bne _021DD890 + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021DD944 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021DD9A0 + str r0, [sp, #0x14] + b _021DD896 +_021DD890: + mov r0, #1 + str r0, [sp, #0x10] + str r0, [sp, #0x14] +_021DD896: + mov r1, #0 + add r2, sp, #8 +_021DD89A: + ldr r0, [r2] + cmp r0, #0 + beq _021DD8A8 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #4 + blt _021DD89A +_021DD8A8: + cmp r1, #4 + bne _021DD906 + cmp r6, #0 + bne _021DD8E0 + ldr r0, [r4, #0x10] + cmp r0, #1 + beq _021DD8F6 + mov r3, #0 + add r0, r3, #0 + str r3, [sp] + sub r0, #0x10 + str r0, [sp, #4] + ldr r0, _021DD90C ; =0x04000050 + mov r1, #0x2e + mov r2, #8 + blx G2x_SetBlendBrightnessExt_ + ldr r0, [r5] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + b _021DD8F6 +_021DD8E0: + add r0, r7, #0 + bl MOD16_021DD6A0 + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D8950 + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 +_021DD8F6: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021DD610 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DD906: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD90C: .word 0x04000050 + thumb_func_end MOD16_021DD850 + + thumb_func_start MOD16_021DD910 +MOD16_021DD910: ; 0x021DD910 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + mov r1, #0x48 + add r5, r0, #0 + str r1, [sp] + mov r0, #4 + add r1, #0xbc + str r0, [sp, #4] + add r0, r5, r1 + mov r1, #0x38 + mov r2, #0x30 + mov r3, #0x50 + bl MOD16_021D8BD8 + mov r2, #0x41 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r2, r2, #4 + ldr r0, [r4] + ldr r2, [r5, r2] + bl MOD16_021D86F4 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DD910 + + thumb_func_start MOD16_021DD944 +MOD16_021DD944: ; 0x021DD944 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x41 + lsl r0, r0, #2 + add r0, r5, r0 + add r4, r1, #0 + bl MOD16_021D8BF4 + mov r2, #0x41 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r2, r2, #4 + add r6, r0, #0 + ldr r0, [r4] + ldr r2, [r5, r2] + bl MOD16_021D86F4 + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DD944 + + thumb_func_start MOD16_021DD96C +MOD16_021DD96C: ; 0x021DD96C + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0x49 + lsl r0, r0, #2 + add r4, r1, #0 + add r0, r5, r0 + mov r1, #0xaa + mov r2, #0xac + mov r3, #0x52 + bl MOD16_021D8BD8 + mov r2, #0x49 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r2, r2, #4 + ldr r0, [r4] + ldr r2, [r5, r2] + bl MOD16_021D7F6C + add sp, #8 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD96C + + thumb_func_start MOD16_021DD9A0 +MOD16_021DD9A0: ; 0x021DD9A0 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + add r0, r5, r0 + add r4, r1, #0 + bl MOD16_021D8BF4 + mov r2, #0x49 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r2, r2, #4 + add r6, r0, #0 + ldr r0, [r4] + ldr r2, [r5, r2] + bl MOD16_021D7F6C + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DD9A0 + + thumb_func_start MOD16_021DD9C8 +MOD16_021DD9C8: ; 0x021DD9C8 + ldr r3, [r0] + mov r1, #4 + ldr r2, [r3] + orr r1, r2 + str r1, [r3] + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0x14] + mov r1, #2 + str r1, [r0, #0x20] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DD9C8 + + thumb_func_start MOD16_021DD9E0 +MOD16_021DD9E0: ; 0x021DD9E0 + ldr r3, [r1] + mov r0, #2 + ldr r2, [r3] + orr r2, r0 + str r2, [r3] + mov r3, #0 + str r3, [r1, #0x10] + mov r2, #1 + str r2, [r1, #0x14] + str r3, [r1, #0xc] + str r0, [r1, #0x20] + bx lr + thumb_func_end MOD16_021DD9E0 + + thumb_func_start MOD16_021DD9F8 +MOD16_021DD9F8: ; 0x021DD9F8 + push {r3, lr} + mov r1, #0x5d + ldr r2, [r0, #4] + lsl r1, r1, #6 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021DDA24 + ldr r3, [r0] + mov r1, #1 + ldr r2, [r3] + orr r1, r2 + str r1, [r3] + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0x14] + mov r1, #2 + str r1, [r0, #0x20] + ldr r0, _021DDA28 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r3, pc} +_021DDA24: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_021DDA28: .word 0x000005DD + thumb_func_end MOD16_021DD9F8 + + thumb_func_start MOD16_021DDA2C +MOD16_021DDA2C: ; 0x021DDA2C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + mov r1, #0x5d + ldr r0, [r5, #4] + lsl r1, r1, #6 + ldr r1, [r0, r1] + cmp r1, #1 + bne _021DDA46 + add sp, #0x10 + mov r0, #0 + pop {r4, r5, r6, pc} +_021DDA46: + bl MOD16_021D9D04 + cmp r0, #0 + bne _021DDA52 + mov r4, #1 + b _021DDA54 +_021DDA52: + mov r4, #0 +_021DDA54: + ldr r0, [r5, #4] + add r1, r4, #0 + bl MOD16_021D9CD0 + cmp r0, #0 + beq _021DDAA8 + ldr r0, [r5, #4] + add r1, r4, #0 + bl MOD16_021D9CEC + ldr r0, _021DDAB0 ; =0x000005DD + bl FUN_020054C8 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r4, [sp, #8] + str r6, [sp, #0xc] + ldr r0, [r5, #4] + add r2, r1, #0 + add r3, r1, #0 + bl MOD16_021D9CB0 + ldr r0, [r5, #4] + mov r1, #0 + bl MOD16_021D9D28 + mov r3, #0 + str r3, [r5, #0xc] + ldr r2, [r5] + mov r0, #0x10 + ldr r1, [r2] + add sp, #0x10 + orr r0, r1 + str r0, [r2] + str r3, [r5, #0x10] + str r3, [r5, #0x14] + mov r0, #2 + str r0, [r5, #0x20] + str r3, [r5, #0x1c] + mov r0, #1 + pop {r4, r5, r6, pc} +_021DDAA8: + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021DDAB0: .word 0x000005DD + thumb_func_end MOD16_021DDA2C + + thumb_func_start MOD16_021DDAB4 +MOD16_021DDAB4: ; 0x021DDAB4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + bl MOD16_021D9DE8 + add r6, r0, #0 + ldr r0, [r5, #4] + bl MOD16_021D9D04 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + ldr r0, [r5, #4] + add r2, r1, #0 + add r3, r1, #0 + bl MOD16_021D9CB0 + ldr r2, [r5] + mov r0, #0x10 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + ldr r0, [r5, #4] + add r1, r6, #0 + bl MOD16_021D9DC0 + mov r2, #0 + str r2, [r5, #0xc] + mov r0, #0x5d + ldr r1, [r5, #4] + lsl r0, r0, #6 + str r2, [r1, r0] + str r2, [r5, #0x10] + str r2, [r5, #0x14] + str r2, [r5, #8] + mov r0, #2 + str r0, [r5, #0x20] + str r2, [r5, #0x1c] + add sp, #0x10 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DDAB4 + + thumb_func_start MOD16_021DDB0C +MOD16_021DDB0C: ; 0x021DDB0C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r4, r1, #0 + sub r0, r0, #1 + str r0, [r5, #0x18] + bmi _021DDB42 + ldr r1, [r5, #0x1c] + add r0, r4, #0 + bl MOD16_021DC684 + cmp r0, #0 + beq _021DDB3C + ldr r2, [r5, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC678 + mov r0, #1 + str r0, [r4, #0x20] + ldr r0, _021DDB54 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021DDB3C: + mov r0, #0 + str r0, [r5, #0x18] + pop {r3, r4, r5, pc} +_021DDB42: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4D4 + mov r0, #0 + str r0, [r5, #0x14] + str r0, [r4, #0x20] + pop {r3, r4, r5, pc} + nop +_021DDB54: .word 0x0000068B + thumb_func_end MOD16_021DDB0C + + thumb_func_start MOD16_021DDB58 +MOD16_021DDB58: ; 0x021DDB58 + push {r3, r4, r5, lr} + ldr r2, _021DDC24 ; =0x021C48B8 + add r4, r1, #0 + ldr r3, [r2, #0x44] + add r5, r0, #0 + mov r1, #0x40 + add r0, r3, #0 + tst r0, r1 + beq _021DDB9A + add r0, r4, #0 + sub r1, #0x41 + bl MOD16_021DC684 + cmp r0, #0 + beq _021DDB8C + add r0, r4, #0 + add r1, r5, #0 + mov r2, #2 + bl MOD16_021DC678 + mov r0, #1 + str r0, [r4, #0x20] + ldr r0, _021DDC28 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021DDB8C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4D4 + mov r0, #0 + str r0, [r4, #0x20] + pop {r3, r4, r5, pc} +_021DDB9A: + mov r0, #0x80 + tst r0, r3 + beq _021DDBD0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021DC684 + cmp r0, #0 + beq _021DDBC2 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #1 + bl MOD16_021DC678 + mov r0, #1 + str r0, [r4, #0x20] + ldr r0, _021DDC28 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021DDBC2: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4D4 + mov r0, #0 + str r0, [r4, #0x20] + pop {r3, r4, r5, pc} +_021DDBD0: + ldr r1, [r2, #0x48] + mov r0, #0x20 + tst r0, r1 + beq _021DDBF2 + mov r0, #1 + str r0, [r5, #0x14] + mov r0, #5 + str r0, [r5, #0x18] + sub r0, r0, #6 + str r0, [r5, #0x1c] + mov r0, #2 + str r0, [r5, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4E8 + pop {r3, r4, r5, pc} +_021DDBF2: + mov r0, #0x10 + tst r0, r1 + beq _021DDC0E + mov r1, #1 + str r1, [r5, #0x14] + mov r0, #5 + str r0, [r5, #0x18] + str r1, [r5, #0x1c] + str r1, [r5, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4E8 + pop {r3, r4, r5, pc} +_021DDC0E: + ldr r0, [r4, #0x20] + cmp r0, #1 + bne _021DDC20 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4D4 + mov r0, #0 + str r0, [r4, #0x20] +_021DDC20: + pop {r3, r4, r5, pc} + nop +_021DDC24: .word 0x021C48B8 +_021DDC28: .word 0x0000068B + thumb_func_end MOD16_021DDB58 + + thumb_func_start MOD16_021DDC2C +MOD16_021DDC2C: ; 0x021DDC2C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021DDCA4 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DDCEC + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DDD14 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021DDD90 + str r0, [r5, #0x24] + ldr r0, _021DDC74 ; =MOD16_021DDD94 + str r0, [r5, #8] + ldr r0, _021DDC78 ; =MOD16_021DDDDC + str r0, [r5, #0xc] + ldr r0, _021DDC7C ; =MOD16_021DDE28 + str r0, [r5, #0x10] + ldr r0, _021DDC80 ; =MOD16_021DDE3C + str r0, [r5, #0x14] + ldr r0, _021DDC84 ; =MOD16_021DDECC + str r0, [r5, #0x18] + ldr r0, _021DDC88 ; =MOD16_021DDF60 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DDC74: .word MOD16_021DDD94 +_021DDC78: .word MOD16_021DDDDC +_021DDC7C: .word MOD16_021DDE28 +_021DDC80: .word MOD16_021DDE3C +_021DDC84: .word MOD16_021DDECC +_021DDC88: .word MOD16_021DDF60 + thumb_func_end MOD16_021DDC2C + + thumb_func_start MOD16_021DDC8C +MOD16_021DDC8C: ; 0x021DDC8C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021DDD50 + ldr r0, [r4] + bl MOD16_021DDD64 + ldr r0, [r4, #0x20] + bl MOD16_021DDD78 + pop {r4, pc} + thumb_func_end MOD16_021DDC8C + + thumb_func_start MOD16_021DDCA4 +MOD16_021DDCA4: ; 0x021DDCA4 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x28 + add r5, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DDCB8 + bl ErrorHandling +_021DDCB8: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x28 + blx Call_FillMemWithValue + add r0, r6, #0 + mov r1, #0 + bl MOD16_021D7B5C + ldr r0, [r0] + mov r1, #0 + str r0, [r4, #0x1c] + add r2, r4, #0 + mov r0, #4 +_021DDCD4: + add r1, r1, #1 + stmia r2!, {r0} + cmp r1, #7 + blt _021DDCD4 + add r0, r6, #0 + bl MOD16_021D7AEC + str r0, [r4, #0x20] + str r5, [r4, #0x24] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DDCA4 + + thumb_func_start MOD16_021DDCEC +MOD16_021DDCEC: ; 0x021DDCEC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021DDCFE + bl ErrorHandling +_021DDCFE: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DDCEC + + thumb_func_start MOD16_021DDD14 +MOD16_021DDD14: ; 0x021DDD14 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021DDD90 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DDD34 + bl ErrorHandling +_021DDD34: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + blx Call_FillMemWithValue + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + mov r3, #1 + bl MOD16_021DAE94 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DDD14 + + thumb_func_start MOD16_021DDD50 +MOD16_021DDD50: ; 0x021DDD50 + push {r4, lr} + add r4, r0, #0 + bne _021DDD5A + bl ErrorHandling +_021DDD5A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DDD50 + + thumb_func_start MOD16_021DDD64 +MOD16_021DDD64: ; 0x021DDD64 + push {r4, lr} + add r4, r0, #0 + bne _021DDD6E + bl ErrorHandling +_021DDD6E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DDD64 + + thumb_func_start MOD16_021DDD78 +MOD16_021DDD78: ; 0x021DDD78 + push {r4, lr} + add r4, r0, #0 + bne _021DDD82 + bl ErrorHandling +_021DDD82: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021DDD78 + + thumb_func_start MOD16_021DDD90 +MOD16_021DDD90: ; 0x021DDD90 + mov r0, #1 + bx lr + thumb_func_end MOD16_021DDD90 + + thumb_func_start MOD16_021DDD94 +MOD16_021DDD94: ; 0x021DDD94 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #0x24 + bl FUN_02016998 + str r0, [r5, #8] + cmp r0, #0 + bne _021DDDAC + bl ErrorHandling +_021DDDAC: + ldr r0, [r5, #8] + mov r1, #0 + mov r2, #0x24 + blx Call_FillMemWithValue + ldr r1, _021DDDD8 ; =0x000004CD + ldr r0, [r5, #8] + add r2, r4, #0 + str r1, [r0, #0x1c] + mov r1, #0 + mov r0, #4 +_021DDDC2: + add r1, r1, #1 + stmia r2!, {r0} + cmp r1, #7 + blt _021DDDC2 + ldr r0, [r5, #8] + ldr r2, [r5, #4] + add r1, r4, #0 + bl MOD16_021DDFE0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDDD8: .word 0x000004CD + thumb_func_end MOD16_021DDD94 + + thumb_func_start MOD16_021DDDDC +MOD16_021DDDDC: ; 0x021DDDDC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021DDDEC + mov r0, #1 + pop {r3, r4, r5, pc} +_021DDDEC: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021DDDF6 + mov r0, #0 + pop {r3, r4, r5, pc} +_021DDDF6: + ldr r2, [r5, #0x1c] + add r0, r4, #0 + ldr r1, [r2, #0xc] + ldr r2, [r2, #8] + bl MOD16_021DE9B0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DE09C + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x20] + cmp r0, #0 + bne _021DDE1C + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DE824 + b _021DDE22 +_021DDE1C: + mov r0, #0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] +_021DDE22: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DDDDC + + thumb_func_start MOD16_021DDE28 +MOD16_021DDE28: ; 0x021DDE28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl MOD16_021DE0EC + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021DDE28 + + thumb_func_start MOD16_021DDE3C +MOD16_021DDE3C: ; 0x021DDE3C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021DDEC8 + add r5, r1, r1 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021DDE56: ; jump table + .short _021DDE60 - _021DDE56 - 2 ; case 0 + .short _021DDE84 - _021DDE56 - 2 ; case 1 + .short _021DDE94 - _021DDE56 - 2 ; case 2 + .short _021DDEAE - _021DDE56 - 2 ; case 3 + .short _021DDEC0 - _021DDE56 - 2 ; case 4 +_021DDE60: + ldr r0, [r4, #4] + mov r1, #0x3c + bl FUN_02016998 + str r0, [r4, #8] + cmp r0, #0 + bne _021DDE72 + bl ErrorHandling +_021DDE72: + ldr r0, [r4, #8] + mov r1, #0 + mov r2, #0x3c + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDEC8 +_021DDE84: + add r1, r3, #0 + ldr r3, [r4, #4] + bl MOD16_021DE1E0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDEC8 +_021DDE94: + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDEC8 +_021DDEAE: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021DDEC8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDEC8 +_021DDEC0: + add r0, r1, #1 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DDEC8: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DDE3C + + thumb_func_start MOD16_021DDECC +MOD16_021DDECC: ; 0x021DDECC + push {r3, r4, r5, r6, r7, lr} + ldr r4, [r1, #8] + add r5, r2, #0 + add r7, r0, #0 + ldr r0, [r4] + ldr r1, [r5] + ldr r6, [r3, #8] + bl MOD16_021D7B98 + ldr r0, [r4, #4] + ldr r1, [r5, #4] + bl MOD16_021D7B98 + ldr r0, [r4, #8] + ldr r1, [r5, #8] + bl MOD16_021D7B98 + ldr r0, [r4, #0x18] + ldr r1, [r5, #0xc] + bl MOD16_021D7B98 + ldr r0, [r4, #0x1c] + ldr r1, [r5, #0x10] + bl MOD16_021D7B98 + mov r2, #5 + str r2, [sp] + ldr r0, [r4] + ldr r1, [r4, #0xc] + sub r2, #0x13 + mov r3, #3 + bl MOD16_021DEA24 + mov r2, #5 + str r2, [sp] + ldr r0, [r4, #4] + ldr r1, [r4, #0x10] + sub r2, #0x13 + mov r3, #3 + bl MOD16_021DEA24 + mov r2, #5 + str r2, [sp] + ldr r0, [r4, #8] + ldr r1, [r4, #0x14] + sub r2, #0x13 + mov r3, #2 + bl MOD16_021DEA24 + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x20] + cmp r0, #0 + bne _021DDF4E + mov r0, #0x83 + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + bl FUN_0201BC84 + add r2, r0, #0 + ldr r3, [r6, #0x1c] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021DE8D0 + b _021DDF5C +_021DDF4E: + cmp r0, #1 + bne _021DDF5C + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD16_021DE93C +_021DDF5C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DDECC + + thumb_func_start MOD16_021DDF60 +MOD16_021DDF60: ; 0x021DDF60 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021DDFD8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DDF7C: ; jump table + .short _021DDF86 - _021DDF7C - 2 ; case 0 + .short _021DDFA0 - _021DDF7C - 2 ; case 1 + .short _021DDFB2 - _021DDF7C - 2 ; case 2 + .short _021DDFC2 - _021DDF7C - 2 ; case 3 + .short _021DDFD2 - _021DDF7C - 2 ; case 4 +_021DDF86: + mov r0, #2 + str r0, [sp] + mov r0, #4 + add r1, r0, #0 + sub r1, #0x14 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDFD8 +_021DDFA0: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021DDFD8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDFD8 +_021DDFB2: + add r1, r2, #0 + ldr r2, [r4, #4] + bl MOD16_021DE228 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDFD8 +_021DDFC2: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDFD8 +_021DDFD2: + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021DDFD8: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DDF60 + + thumb_func_start MOD16_021DDFE0 +MOD16_021DDFE0: ; 0x021DDFE0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0x1c + bl FUN_02016998 + str r0, [r5, #8] + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x10 + mov r2, #0x40 + mov r3, #0 + bl MOD16_021D7C98 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x40 + add r0, r0, #4 + mov r2, #0x70 + mov r3, #0 + bl MOD16_021D7C98 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x70 + add r0, #8 + mov r2, #0xc0 + mov r3, #0 + bl MOD16_021D7C98 + mov r0, #0x84 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x38 + add r0, #0xc + mov r2, #0x48 + mov r3, #0x74 + bl MOD16_021D7C98 + mov r0, #0x84 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x8a + add r0, #0x10 + mov r2, #0x9a + mov r3, #0x74 + bl MOD16_021D7C98 + ldr r0, [r5, #8] + mov r1, #0xfe + strb r1, [r0, #0x14] + ldr r0, [r5, #8] + mov r1, #0xf8 + strb r1, [r0, #0x15] + ldr r0, [r5, #8] + mov r1, #0x68 + strb r1, [r0, #0x16] + ldr r0, [r5, #8] + mov r2, #0x10 + strb r1, [r0, #0x17] + mov r0, #0xb4 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0 + add r0, #0x18 + mov r3, #0x74 + bl MOD16_021D7C98 + add r0, r6, #0 + mov r1, #8 + bl FUN_02016998 + add r3, r0, #0 + str r5, [r3] + str r4, [r3, #4] + str r3, [r5, #4] + str r6, [sp] + ldr r0, [r5, #8] + ldr r2, _021DE098 ; =MOD16_021DE108 + mov r1, #7 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021DE098: .word MOD16_021DE108 + thumb_func_end MOD16_021DDFE0 + + thumb_func_start MOD16_021DE09C +MOD16_021DE09C: ; 0x021DE09C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #4 +_021DE0A8: + add r1, r1, #1 + stmia r2!, {r0} + cmp r1, #7 + blt _021DE0A8 + add r0, r4, #0 + bl MOD16_021DEA34 + ldr r0, [r5] + bl FUN_02022144 + ldr r1, [r4, #0x1c] + add r0, r5, #0 + ldr r1, [r1, #4] + bl MOD16_021DEA5C + cmp r0, #0 + bne _021DE0CE + mov r0, #0 + str r0, [r5, #0xc] +_021DE0CE: + ldr r0, [r4, #0x14] + cmp r0, #4 + ldr r0, [r5, #0x1c] + beq _021DE0E0 + ldr r1, [r5, #0xc] + bl MOD16_021DEAFC + str r0, [r5, #0x1c] + pop {r3, r4, r5, pc} +_021DE0E0: + mov r1, #0 + bl MOD16_021DEAFC + str r0, [r5, #0x1c] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DE09C + + thumb_func_start MOD16_021DE0EC +MOD16_021DE0EC: ; 0x021DE0EC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + thumb_func_end MOD16_021DE0EC + + thumb_func_start MOD16_021DE108 +MOD16_021DE108: ; 0x021DE108 + push {r4, r5, r6, lr} + ldr r5, [r2, #4] + add r6, r0, #0 + ldr r0, [r5, #0x1c] + ldr r4, [r2] + ldr r0, [r0, #4] + lsl r2, r6, #2 + str r1, [r5, r2] + cmp r1, #0 + beq _021DE122 + cmp r1, #2 + beq _021DE12E + b _021DE1D6 +_021DE122: + ldr r0, _021DE1DC ; =0x021C48F8 + ldrh r1, [r0, #0x1c] + str r1, [r4, #0x14] + ldrh r0, [r0, #0x1e] + str r0, [r4, #0x18] + pop {r4, r5, r6, pc} +_021DE12E: + cmp r6, #6 + bhi _021DE1A2 + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DE13E: ; jump table + .short _021DE14C - _021DE13E - 2 ; case 0 + .short _021DE154 - _021DE13E - 2 ; case 1 + .short _021DE15C - _021DE13E - 2 ; case 2 + .short _021DE164 - _021DE13E - 2 ; case 3 + .short _021DE174 - _021DE13E - 2 ; case 4 + .short _021DE1A2 - _021DE13E - 2 ; case 5 + .short _021DE18A - _021DE13E - 2 ; case 6 +_021DE14C: + ldr r0, [r5, #0x1c] + mov r1, #1 + str r1, [r0, #0x34] + b _021DE1A2 +_021DE154: + ldr r0, [r5, #0x1c] + mov r1, #1 + str r1, [r0, #0x30] + b _021DE1A2 +_021DE15C: + ldr r0, [r5, #0x1c] + mov r1, #1 + str r1, [r0, #0x2c] + b _021DE1A2 +_021DE164: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _021DE1A2 + add r0, r5, #0 + mov r1, #0 + bl MOD16_021DEAB8 + b _021DE1A2 +_021DE174: + ldr r1, [r4, #0x20] + cmp r1, #0 + bne _021DE1A2 + bl MOD16_021D9D94 + add r1, r0, #0 + add r0, r5, #0 + sub r1, r1, #1 + bl MOD16_021DEAB8 + b _021DE1A2 +_021DE18A: + ldr r0, [r5, #0x1c] + mov r1, #0x5d + ldr r2, [r0, #4] + lsl r1, r1, #6 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021DE19E + mov r1, #1 + str r1, [r0, #0x28] + b _021DE1A2 +_021DE19E: + mov r1, #1 + str r1, [r0, #0x24] +_021DE1A2: + cmp r6, #5 + bne _021DE1D0 + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x20] + cmp r0, #0 + bne _021DE1C6 + add r0, r4, #0 + bl MOD16_021DE8A0 + ldr r1, [r4, #0xc] + cmp r1, #0x10 + bgt _021DE1C6 + mov r0, #0xf + mvn r0, r0 + cmp r1, r0 + blt _021DE1C6 + mov r0, #0 + str r0, [r4, #0xc] +_021DE1C6: + ldr r0, _021DE1DC ; =0x021C48F8 + ldrh r1, [r0, #0x1c] + str r1, [r4, #0x14] + ldrh r0, [r0, #0x1e] + str r0, [r4, #0x18] +_021DE1D0: + mov r0, #1 + str r0, [r4, #0x20] + pop {r4, r5, r6, pc} +_021DE1D6: + mov r0, #0 + str r0, [r4, #0x20] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DE1DC: .word 0x021C48F8 + thumb_func_end MOD16_021DE108 + + thumb_func_start MOD16_021DE1E0 +MOD16_021DE1E0: ; 0x021DE1E0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021DE254 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021DE788 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD16_021DE308 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD16_021DE3FC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD16_021DE594 + mov r0, #7 + mov r1, #3 + bl FUN_020178BC + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DE1E0 + + thumb_func_start MOD16_021DE228 +MOD16_021DE228: ; 0x021DE228 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD16_021DE768 + add r0, r5, #0 + bl MOD16_021DE568 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DE3B8 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021DE808 + mov r0, #7 + mov r1, #1 + bl FUN_020178BC + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DE228 + + thumb_func_start MOD16_021DE254 +MOD16_021DE254: ; 0x021DE254 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r7, r1, #0 + ldr r6, [r0] + mov r1, #0 + add r4, r2, #0 + str r1, [sp] + str r4, [sp, #4] + mov r2, #4 + add r3, r1, #0 + bl MOD16_021D8CFC + ldr r0, [r7, #0x1c] + mov r1, #0x5d + ldr r0, [r0, #4] + lsl r1, r1, #6 + ldr r1, [r0, r1] + cmp r1, #1 + bne _021DE292 + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r5] + mov r1, #1 + mov r2, #4 + mov r3, #0x60 + bl MOD16_021D8CFC + b _021DE2AC +_021DE292: + bl MOD16_021D9D04 + cmp r0, #1 + bne _021DE2AC + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r5] + mov r1, #0x19 + mov r2, #4 + mov r3, #0x60 + bl MOD16_021D8CFC +_021DE2AC: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r4, [sp, #0xc] + ldr r0, [r5] + mov r1, #0x1d + add r2, r6, #0 + mov r3, #6 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x29 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r4, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r6, #0 + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + mov r1, #6 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DE254 + + thumb_func_start MOD16_021DE308 +MOD16_021DE308: ; 0x021DE308 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021DE3A8 ; =0x0000043C + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x54 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x2c] + bl FUN_02009B04 + ldr r0, [r5, #0x2c] + bl FUN_02009474 + ldr r0, _021DE3AC ; =0x000003EB + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0xc + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x30] + bl FUN_02009D68 + ldr r0, [r5, #0x30] + bl FUN_02009474 + ldr r0, _021DE3B0 ; =0x0000043A + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x52 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x34] + ldr r0, _021DE3B4 ; =0x0000043B + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x53 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x38] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE3A8: .word 0x0000043C +_021DE3AC: .word 0x000003EB +_021DE3B0: .word 0x0000043A +_021DE3B4: .word 0x0000043B + thumb_func_end MOD16_021DE308 + + thumb_func_start MOD16_021DE3B8 +MOD16_021DE3B8: ; 0x021DE3B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x30] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x2c] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x30] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x34] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x38] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DE3B8 + + thumb_func_start MOD16_021DE3FC +MOD16_021DE3FC: ; 0x021DE3FC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + add r7, r3, #0 + add r5, r0, #0 + mov r0, #0 + ldr r4, [r1] + ldr r3, _021DE564 ; =0x0000043B + add r6, r2, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x4c + sub r2, #0x50 + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #8 + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #3 + lsl r0, r0, #0x10 + str r0, [sp, #0x34] + lsl r1, r1, #0xe + lsl r0, r0, #2 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + str r7, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r6, #0x1c] + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021DE494 + ldr r0, [r5] + mov r1, #0 + bl FUN_020200A0 +_021DE494: + mov r0, #3 + lsl r0, r0, #0x10 + mov r1, #0x16 + str r0, [sp, #0x34] + lsl r1, r1, #0xe + lsl r0, r0, #2 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r6, #0x1c] + mov r1, #1 + ldr r0, [r0, #4] + bl MOD16_021D9CD0 + cmp r0, #0 + beq _021DE4D0 + ldr r0, [r6, #0x1c] + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021DE4D8 +_021DE4D0: + ldr r0, [r5, #4] + mov r1, #0 + bl FUN_020200A0 +_021DE4D8: + mov r0, #3 + lsl r0, r0, #0x10 + mov r1, #0x26 + str r0, [sp, #0x34] + lsl r1, r1, #0xe + lsl r0, r0, #2 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #1 + str r0, [r5, #8] + bl FUN_02020130 + mov r0, #0x1f + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #1 + mov r0, #3 + lsl r1, r1, #0x12 + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #3 + str r0, [r5, #0x18] + bl FUN_02020130 + mov r0, #0x1f + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #0x92 + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #4 + str r0, [r5, #0x1c] + bl FUN_02020130 + mov r0, #0x1f + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #2 + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #5 + str r0, [r5, #0x20] + bl FUN_02020130 + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE564: .word 0x0000043B + thumb_func_end MOD16_021DE3FC + + thumb_func_start MOD16_021DE568 +MOD16_021DE568: ; 0x021DE568 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + ldr r0, [r4, #4] + bl FUN_0201FFC8 + ldr r0, [r4, #8] + bl FUN_0201FFC8 + ldr r0, [r4, #0x18] + bl FUN_0201FFC8 + ldr r0, [r4, #0x1c] + bl FUN_0201FFC8 + ldr r0, [r4, #0x20] + bl FUN_0201FFC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DE568 + + thumb_func_start MOD16_021DE594 +MOD16_021DE594: ; 0x021DE594 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + ldr r0, [r5] + add r6, r2, #0 + add r7, r3, #0 + ldr r4, [r1] + cmp r0, #0 + bne _021DE5AA + bl ErrorHandling +_021DE5AA: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021DE760 ; =0x000003EB + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + mov r1, #0 + bl FUN_02009E54 + mov r1, #0x27 + mvn r1, r1 + str r1, [sp, #0x28] + add r1, #0x1a + str r1, [sp, #0x2c] + mov r1, #0 + str r1, [sp, #0x30] + str r1, [sp, #0x34] + mov r1, #2 + str r0, [sp, #0x20] + str r1, [sp, #0x38] + str r7, [sp, #0x3c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xa + mov r2, #4 + bl MOD16_021DB388 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + ldr r2, _021DE764 ; =0x00000266 + mov r3, #7 + bl MOD16_021DB3C8 + ldr r0, [sp, #0x10] + str r0, [sp, #0x1c] + ldr r0, [r5] + str r0, [sp, #0x24] + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r5, #0xc] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [r6, #0x1c] + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021DE638 + ldr r0, [r5, #0xc] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 +_021DE638: + ldr r0, [sp, #0x10] + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xa + mov r2, #4 + bl MOD16_021DB388 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #8] + ldr r2, _021DE764 ; =0x00000266 + mov r3, #5 + bl MOD16_021DB3C8 + ldr r0, [sp, #8] + str r0, [sp, #0x1c] + ldr r0, [r5, #4] + str r0, [sp, #0x24] + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r5, #0x10] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [r6, #0x1c] + mov r1, #1 + ldr r0, [r0, #4] + bl MOD16_021D9CD0 + cmp r0, #0 + beq _021DE698 + ldr r0, [r6, #0x1c] + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021DE6A2 +_021DE698: + ldr r0, [r5, #0x10] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 +_021DE6A2: + ldr r0, [sp, #8] + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xa + mov r2, #4 + bl MOD16_021DB388 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #0x14] + ldr r2, _021DE764 ; =0x00000266 + mov r3, #0x1d + bl MOD16_021DB3C8 + ldr r0, [sp, #0x14] + str r0, [sp, #0x1c] + ldr r0, [r5, #8] + str r0, [sp, #0x24] + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r5, #0x14] + ldr r0, [r0] + add r1, r7, #2 + bl FUN_02011A60 + ldr r0, [sp, #0x14] + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xe + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0xc] + ldr r0, [r6, #0x1c] + ldr r2, _021DE764 ; =0x00000266 + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + bne _021DE722 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #0xc] + mov r3, #0x6a + bl MOD16_021DB3C8 + b _021DE736 +_021DE722: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #0xc] + mov r3, #0x6b + bl MOD16_021DB3C8 +_021DE736: + ldr r0, [sp, #0xc] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x20] + str r0, [sp, #0x24] + mov r0, #0xa + str r0, [sp, #0x28] + sub r0, #0x12 + str r0, [sp, #0x2c] + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r5, #0x24] + ldr r0, [r0] + add r1, r7, #1 + bl FUN_02011A60 + ldr r0, [sp, #0xc] + bl MOD16_021DB3BC + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE760: .word 0x000003EB +_021DE764: .word 0x00000266 + thumb_func_end MOD16_021DE594 + + thumb_func_start MOD16_021DE768 +MOD16_021DE768: ; 0x021DE768 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl MOD16_021DB338 + ldr r0, [r4, #0x10] + bl MOD16_021DB338 + ldr r0, [r4, #0x14] + bl MOD16_021DB338 + ldr r0, [r4, #0x24] + bl MOD16_021DB338 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DE768 + + thumb_func_start MOD16_021DE788 +MOD16_021DE788: ; 0x021DE788 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + ldr r4, [r0] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r6, [sp, #0xc] + mov r1, #0x1b + add r2, r4, #0 + mov r3, #7 + bl MOD16_021D8CB4 + str r6, [sp] + ldr r0, [r5] + mov r1, #0x25 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #7 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #7 + bl FUN_0201AC68 + mov r2, #0 + add r3, r2, #0 + add r0, r4, #0 + mov r1, #7 + sub r3, #0x78 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #7 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DE788 + + thumb_func_start MOD16_021DE808 +MOD16_021DE808: ; 0x021DE808 + push {r4, lr} + ldr r0, [r0] + add r3, r1, #0 + ldr r4, [r0] + mov r0, #7 + mov r1, #0x40 + mov r2, #0 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #7 + bl FUN_02018744 + pop {r4, pc} + thumb_func_end MOD16_021DE808 + + thumb_func_start MOD16_021DE824 +MOD16_021DE824: ; 0x021DE824 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4, #0x1c] + add r5, r0, #0 + ldr r3, [r2, #0xc] + ldr r1, [r2, #4] + cmp r3, #0 + bgt _021DE860 + ldr r3, [r5, #0x10] + cmp r3, #0 + beq _021DE85C + bl MOD16_021DEA84 + cmp r0, #0 + bne _021DE84C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DEAAC + b _021DE860 +_021DE84C: + mov r1, #0xa + ldr r0, [r4, #0x1c] + lsl r1, r1, #6 + str r1, [r0, #0xc] + ldr r0, _021DE89C ; =0x0000068B + bl FUN_020054C8 + b _021DE860 +_021DE85C: + mov r0, #0 + str r0, [r2, #8] +_021DE860: + ldr r0, [r5, #0x10] + cmp r0, #0 + bge _021DE86E + ldr r0, [r4, #0x1c] + mov r1, #1 + str r1, [r0, #8] + b _021DE876 +_021DE86E: + ble _021DE876 + ldr r0, [r4, #0x1c] + mov r1, #2 + str r1, [r0, #8] +_021DE876: + ldr r2, [r4, #0x1c] + ldr r0, [r2, #8] + cmp r0, #0 + beq _021DE898 + ldr r1, [r5, #0x10] + cmp r1, #0 + bge _021DE886 + neg r1, r1 +_021DE886: + ldr r0, [r2, #0xc] + sub r0, r0, r1 + str r0, [r2, #0xc] + ldr r1, [r4, #0x1c] + ldr r0, [r1, #0xc] + cmp r0, #0 + bge _021DE898 + mov r0, #0 + str r0, [r1, #0xc] +_021DE898: + pop {r3, r4, r5, pc} + nop +_021DE89C: .word 0x0000068B + thumb_func_end MOD16_021DE824 + + thumb_func_start MOD16_021DE8A0 +MOD16_021DE8A0: ; 0x021DE8A0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + str r0, [sp] + ldr r3, _021DE8CC ; =0x021C48F8 + ldr r0, [r4, #0x14] + ldrh r2, [r3, #0x1c] + ldrh r3, [r3, #0x1e] + ldr r1, [r4, #0x18] + sub r0, #0xf8 + sub r1, #0x68 + sub r2, #0xf8 + sub r3, #0x68 + bl FUN_0201BBD0 + mov r1, #0xa + mul r1, r0 + str r1, [r4, #0xc] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021DE8CC: .word 0x021C48F8 + thumb_func_end MOD16_021DE8A0 + + thumb_func_start MOD16_021DE8D0 +MOD16_021DE8D0: ; 0x021DE8D0 + push {r4, r5, r6, lr} + add r5, r0, #0 + lsl r0, r2, #0xc + add r4, r1, #0 + asr r6, r3, #0x1f + add r2, r3, #0 + asr r1, r0, #0x1f + add r3, r6, #0 + blx _ll_mul + mov r3, #2 + mov r6, #0 + lsl r3, r3, #0xa + add r3, r0, r3 + adc r1, r6 + lsl r0, r1, #0x14 + lsr r1, r3, #0xc + orr r1, r0 + asr r0, r1, #0xc + ldrh r2, [r5, #0x28] + mov r1, #0xb6 + add r0, r2, r0 + strh r0, [r5, #0x28] + ldrh r0, [r5, #0x28] + strh r0, [r5, #0x28] + blx _s32_div_f + add r3, r0, #0 + ldr r0, [r4] + lsl r3, r3, #0x10 + ldr r0, [r0] + mov r1, #7 + add r2, r6, #0 + lsr r3, r3, #0x10 + bl FUN_0201AF08 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #9 + mov r3, #0x80 + bl FUN_0201AF50 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #0xc + mov r3, #0x68 + bl FUN_0201AF50 + ldrh r0, [r5, #0x28] + strh r0, [r5, #0x2a] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DE8D0 + + thumb_func_start MOD16_021DE93C +MOD16_021DE93C: ; 0x021DE93C + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + ldr r6, [r7, #0x1c] + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0xa + ldr r0, [r6, #0xc] + lsl r1, r1, #6 + sub r2, r1, r0 + ldr r0, _021DE9AC ; =0x000011C7 + mul r0, r2 + blx _s32_div_f + ldr r1, [r6, #8] + cmp r1, #1 + bne _021DE95E + neg r0, r0 +_021DE95E: + ldrh r1, [r5, #0x2a] + add r0, r1, r0 + strh r0, [r5, #0x28] + ldrh r0, [r5, #0x28] + mov r1, #0xb6 + strh r0, [r5, #0x28] + blx _s32_div_f + add r3, r0, #0 + ldr r0, [r4] + lsl r3, r3, #0x10 + ldr r0, [r0] + mov r1, #7 + mov r2, #0 + lsr r3, r3, #0x10 + bl FUN_0201AF08 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #9 + mov r3, #0x80 + bl FUN_0201AF50 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #0xc + mov r3, #0x68 + bl FUN_0201AF50 + ldr r0, [r7, #0x1c] + ldr r0, [r0, #0xc] + cmp r0, #0 + bne _021DE9A8 + ldrh r0, [r5, #0x28] + strh r0, [r5, #0x2a] +_021DE9A8: + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE9AC: .word 0x000011C7 + thumb_func_end MOD16_021DE93C + + thumb_func_start MOD16_021DE9B0 +MOD16_021DE9B0: ; 0x021DE9B0 + push {r3, r4} + ldr r3, [r0, #0xc] + cmp r3, #0 + ble _021DE9C8 + sub r3, r3, #2 + cmp r3, #4 + blt _021DE9C2 + str r3, [r0, #0xc] + b _021DE9D8 +_021DE9C2: + mov r3, #4 + str r3, [r0, #0xc] + b _021DE9D8 +_021DE9C8: + add r4, r3, #2 + mov r3, #3 + mvn r3, r3 + cmp r4, r3 + bgt _021DE9D6 + str r4, [r0, #0xc] + b _021DE9D8 +_021DE9D6: + str r3, [r0, #0xc] +_021DE9D8: + ldr r3, [r0, #0xc] + str r3, [r0, #0x10] + ldr r4, [r0, #0xc] + cmp r4, #0x21 + bgt _021DEA1A + mov r3, #0x20 + mvn r3, r3 + cmp r4, r3 + blt _021DEA1A + cmp r1, #0 + bne _021DEA08 + mov r3, #0 + str r3, [r0, #0x10] + ldr r2, [r0, #0xc] + cmp r2, #4 + bgt _021DEA1A + sub r1, r3, #4 + cmp r2, r1 + blt _021DEA1A + ldr r1, _021DEA20 ; =0x000004CD + str r3, [r0, #0xc] + str r1, [r0, #0x1c] + pop {r3, r4} + bx lr +_021DEA08: + cmp r2, #1 + bne _021DEA14 + str r3, [r0, #0x10] + str r3, [r0, #0xc] + pop {r3, r4} + bx lr +_021DEA14: + mov r1, #0x21 + str r1, [r0, #0x10] + str r1, [r0, #0xc] +_021DEA1A: + pop {r3, r4} + bx lr + nop +_021DEA20: .word 0x000004CD + thumb_func_end MOD16_021DE9B0 + + thumb_func_start MOD16_021DEA24 +MOD16_021DEA24: ; 0x021DEA24 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + bl MOD16_021D7C70 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021DEA24 + + thumb_func_start MOD16_021DEA34 +MOD16_021DEA34: ; 0x021DEA34 + ldr r2, [r0, #0x1c] + ldr r1, [r2, #0x2c] + cmp r1, #0 + beq _021DEA42 + mov r1, #2 + str r1, [r0, #8] + bx lr +_021DEA42: + ldr r1, [r2, #0x34] + cmp r1, #0 + beq _021DEA4E + mov r1, #2 + str r1, [r0] + bx lr +_021DEA4E: + ldr r1, [r2, #0x30] + cmp r1, #0 + beq _021DEA58 + mov r1, #2 + str r1, [r0, #4] +_021DEA58: + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEA34 + + thumb_func_start MOD16_021DEA5C +MOD16_021DEA5C: ; 0x021DEA5C + push {r3, lr} + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _021DEA7E + bge _021DEA6A + mov r2, #1 + b _021DEA6E +_021DEA6A: + mov r2, #0 + mvn r2, r2 +_021DEA6E: + add r0, r1, #0 + add r1, r2, #0 + bl MOD16_021D9EA8 + cmp r0, #0 + bne _021DEA7E + mov r0, #0 + pop {r3, pc} +_021DEA7E: + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DEA5C + + thumb_func_start MOD16_021DEA84 +MOD16_021DEA84: ; 0x021DEA84 + push {r3, lr} + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _021DEAA6 + bge _021DEA92 + mov r2, #1 + b _021DEA96 +_021DEA92: + mov r2, #0 + mvn r2, r2 +_021DEA96: + add r0, r1, #0 + add r1, r2, #0 + bl MOD16_021D9E70 + cmp r0, #0 + bne _021DEAA6 + mov r0, #0 + pop {r3, pc} +_021DEAA6: + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DEA84 + + thumb_func_start MOD16_021DEAAC +MOD16_021DEAAC: ; 0x021DEAAC + mov r2, #0 + str r2, [r0, #0x10] + str r2, [r0, #0xc] + ldr r0, [r1, #0x1c] + str r2, [r0, #8] + bx lr + thumb_func_end MOD16_021DEAAC + + thumb_func_start MOD16_021DEAB8 +MOD16_021DEAB8: ; 0x021DEAB8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + add r5, r1, #0 + bl MOD16_021DC0E4 + cmp r0, #0 + beq _021DEAF8 + ldr r0, [r4, #0x1c] + add r1, r5, #0 + ldr r0, [r0, #4] + bl MOD16_021D9D28 + ldr r1, [r4, #0x20] + mov r2, #1 + ldr r0, [r1] + mov r3, #2 + orr r0, r2 + str r0, [r1] + ldr r1, [r4, #0x1c] + mov r0, #0 + str r0, [r1, #0xc] + ldr r1, [r4, #0x1c] + str r3, [r1, #0x20] + ldr r1, [r4, #0x1c] + str r2, [r1, #0x10] + ldr r1, [r4, #0x1c] + str r0, [r1, #0x14] + ldr r1, [r4, #0x1c] + str r0, [r1, #8] + ldr r1, [r4, #0x1c] + str r0, [r1, #0x1c] +_021DEAF8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEAB8 + + thumb_func_start MOD16_021DEAFC +MOD16_021DEAFC: ; 0x021DEAFC + cmp r1, #0 + bge _021DEB02 + neg r1, r1 +_021DEB02: + cmp r1, #0x40 + bge _021DEB14 + add r2, r0, #0 + ldr r1, _021DEB24 ; =0x000004CD + sub r2, #0x29 + cmp r2, r1 + blt _021DEB22 + sub r0, #0x29 + bx lr +_021DEB14: + ldr r1, _021DEB28 ; =0x00000333 + add r2, r0, r1 + mov r1, #1 + lsl r1, r1, #0xc + cmp r2, r1 + bgt _021DEB22 + add r0, r2, #0 +_021DEB22: + bx lr + .align 2, 0 +_021DEB24: .word 0x000004CD +_021DEB28: .word 0x00000333 + thumb_func_end MOD16_021DEAFC + + thumb_func_start MOD16_021DEB2C +MOD16_021DEB2C: ; 0x021DEB2C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021DEC64 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DECA0 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DECC8 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021DED44 + str r0, [r5, #0x24] + ldr r0, _021DEB74 ; =MOD16_021DED48 + str r0, [r5, #8] + ldr r0, _021DEB78 ; =MOD16_021DED80 + str r0, [r5, #0xc] + ldr r0, _021DEB7C ; =MOD16_021DEEA4 + str r0, [r5, #0x10] + ldr r0, _021DEB80 ; =MOD16_021DEEB8 + str r0, [r5, #0x14] + ldr r0, _021DEB84 ; =MOD16_021DEF34 + str r0, [r5, #0x18] + ldr r0, _021DEB88 ; =MOD16_021DEF70 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DEB74: .word MOD16_021DED48 +_021DEB78: .word MOD16_021DED80 +_021DEB7C: .word MOD16_021DEEA4 +_021DEB80: .word MOD16_021DEEB8 +_021DEB84: .word MOD16_021DEF34 +_021DEB88: .word MOD16_021DEF70 + thumb_func_end MOD16_021DEB2C + + thumb_func_start MOD16_021DEB8C +MOD16_021DEB8C: ; 0x021DEB8C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021DED04 + ldr r0, [r4, #4] + bl MOD16_021DED18 + ldr r0, [r4, #0x20] + bl MOD16_021DED2C + pop {r4, pc} + thumb_func_end MOD16_021DEB8C + + thumb_func_start MOD16_021DEBA4 +MOD16_021DEBA4: ; 0x021DEBA4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #4 + blt _021DEBB2 + bl ErrorHandling +_021DEBB2: + str r5, [r4, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEBA4 + + thumb_func_start MOD16_021DEBB8 +MOD16_021DEBB8: ; 0x021DEBB8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEBB8 + + thumb_func_start MOD16_021DEBC0 +MOD16_021DEBC0: ; 0x021DEBC0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #6 + blt _021DEBCE + bl ErrorHandling +_021DEBCE: + str r5, [r4, #0x10] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEBC0 + + thumb_func_start MOD16_021DEBD4 +MOD16_021DEBD4: ; 0x021DEBD4 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEBD4 + + thumb_func_start MOD16_021DEBDC +MOD16_021DEBDC: ; 0x021DEBDC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #0xa + blt _021DEBEA + bl ErrorHandling +_021DEBEA: + str r5, [r4, #0x14] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEBDC + + thumb_func_start MOD16_021DEBF0 +MOD16_021DEBF0: ; 0x021DEBF0 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEBF0 + + thumb_func_start MOD16_021DEBF8 +MOD16_021DEBF8: ; 0x021DEBF8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + ldr r4, [r0] + cmp r5, #0x12 + blt _021DEC08 + bl ErrorHandling +_021DEC08: + cmp r6, #0 + bne _021DEC10 + str r5, [r4, #0x18] + pop {r4, r5, r6, pc} +_021DEC10: + str r5, [r4, #0x1c] + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DEBF8 + + thumb_func_start MOD16_021DEC14 +MOD16_021DEC14: ; 0x021DEC14 + ldr r0, [r0] + cmp r1, #0 + bne _021DEC1E + ldr r0, [r0, #0x18] + bx lr +_021DEC1E: + ldr r0, [r0, #0x1c] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC14 + + thumb_func_start MOD16_021DEC24 +MOD16_021DEC24: ; 0x021DEC24 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #0xf + blt _021DEC32 + bl ErrorHandling +_021DEC32: + str r5, [r4, #0x20] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEC24 + + thumb_func_start MOD16_021DEC38 +MOD16_021DEC38: ; 0x021DEC38 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC38 + + thumb_func_start MOD16_021DEC40 +MOD16_021DEC40: ; 0x021DEC40 + ldr r2, [r0] + mov r0, #1 + str r0, [r2, #0x24] + str r1, [r2, #0x28] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC40 + + thumb_func_start MOD16_021DEC4C +MOD16_021DEC4C: ; 0x021DEC4C + ldr r0, [r0] + ldr r0, [r0, #0x28] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC4C + + thumb_func_start MOD16_021DEC54 +MOD16_021DEC54: ; 0x021DEC54 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC54 + + thumb_func_start MOD16_021DEC5C +MOD16_021DEC5C: ; 0x021DEC5C + ldr r0, [r0] + ldr r0, [r0, #0x34] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC5C + + thumb_func_start MOD16_021DEC64 +MOD16_021DEC64: ; 0x021DEC64 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x38 + bl FUN_02016998 + add r4, r0, #0 + bne _021DEC76 + bl ErrorHandling +_021DEC76: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x38 + blx Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD16_021D7B5C + ldr r0, [r0] + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DEC64 + + thumb_func_start MOD16_021DECA0 +MOD16_021DECA0: ; 0x021DECA0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021DECB2 + bl ErrorHandling +_021DECB2: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DECA0 + + thumb_func_start MOD16_021DECC8 +MOD16_021DECC8: ; 0x021DECC8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021DED44 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DECE8 + bl ErrorHandling +_021DECE8: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + blx Call_FillMemWithValue + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD16_021DAE0C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DECC8 + + thumb_func_start MOD16_021DED04 +MOD16_021DED04: ; 0x021DED04 + push {r4, lr} + add r4, r0, #0 + bne _021DED0E + bl ErrorHandling +_021DED0E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DED04 + + thumb_func_start MOD16_021DED18 +MOD16_021DED18: ; 0x021DED18 + push {r4, lr} + add r4, r0, #0 + bne _021DED22 + bl ErrorHandling +_021DED22: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DED18 + + thumb_func_start MOD16_021DED2C +MOD16_021DED2C: ; 0x021DED2C + push {r4, lr} + add r4, r0, #0 + bne _021DED36 + bl ErrorHandling +_021DED36: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021DED2C + + thumb_func_start MOD16_021DED44 +MOD16_021DED44: ; 0x021DED44 + mov r0, #1 + bx lr + thumb_func_end MOD16_021DED44 + + thumb_func_start MOD16_021DED48 +MOD16_021DED48: ; 0x021DED48 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r6, r0, #0 + bne _021DED5E + bl ErrorHandling +_021DED5E: + mov r0, #0 + strb r0, [r6] + strb r0, [r6, #1] + strb r0, [r6, #2] + strb r0, [r6, #3] + str r6, [r5, #8] + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x30] + mov r0, #1 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DED48 + + thumb_func_start MOD16_021DED80 +MOD16_021DED80: ; 0x021DED80 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + cmp r0, #1 + bne _021DED94 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, pc} +_021DED94: + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _021DEDA0 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, pc} +_021DEDA0: + ldr r0, [r5] + cmp r0, #4 + bhi _021DEE96 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DEDB2: ; jump table + .short _021DEDBC - _021DEDB2 - 2 ; case 0 + .short _021DEDF2 - _021DEDB2 - 2 ; case 1 + .short _021DEE10 - _021DEDB2 - 2 ; case 2 + .short _021DEE20 - _021DEDB2 - 2 ; case 3 + .short _021DEE84 - _021DEDB2 - 2 ; case 4 +_021DEDBC: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021DEDC6 + mov r0, #0 + str r0, [r4, #0x2c] +_021DEDC6: + ldr r0, [r4, #0x24] + cmp r0, #1 + bne _021DEE9A + ldr r0, [r4, #0x28] + cmp r0, #0 + bne _021DEDE2 + ldr r2, [r4] + mov r0, #2 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + mov r0, #4 + str r0, [r4, #0x30] + b _021DEE9A +_021DEDE2: + mov r0, #1 + str r0, [r4, #0x30] + mov r0, #4 + str r0, [r4, #0x34] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DEE9A +_021DEDF2: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bpl _021DEE9A + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #2 + str r0, [r4, #0x30] + mov r0, #0x20 + str r0, [r4, #0x34] + ldr r0, _021DEEA0 ; =0x000005FF + bl FUN_020054C8 + b _021DEE9A +_021DEE10: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bpl _021DEE9A + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DEE9A +_021DEE20: + ldr r0, [r4, #4] + bl MOD16_021D9D04 + ldr r1, [r4, #0x1c] + str r1, [sp] + ldr r1, [r4, #0x20] + str r1, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #4] + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + ldr r3, [r4, #0x18] + bl MOD16_021D9A90 + cmp r0, #1 + bne _021DEE6A + ldr r2, [r4] + mov r0, #2 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + ldr r0, [r4, #4] + mov r1, #0 + bl MOD16_021D9E3C + mov r0, #0x5d + ldr r1, [r4, #4] + mov r2, #1 + lsl r0, r0, #6 + str r2, [r1, r0] + ldr r0, [r4, #8] + str r2, [r0, #0x18] + b _021DEE9A +_021DEE6A: + mov r0, #0 + str r0, [r4, #0x28] + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #3 + str r0, [r4, #0x30] + mov r0, #4 + str r0, [r4, #0x34] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DEE9A +_021DEE84: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bpl _021DEE9A + mov r0, #0 + str r0, [r4, #0x30] + str r0, [r4, #0x34] + str r0, [r5] + b _021DEE9A +_021DEE96: + bl ErrorHandling +_021DEE9A: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021DEEA0: .word 0x000005FF + thumb_func_end MOD16_021DED80 + + thumb_func_start MOD16_021DEEA4 +MOD16_021DEEA4: ; 0x021DEEA4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DEEA4 + + thumb_func_start MOD16_021DEEB8 +MOD16_021DEEB8: ; 0x021DEEB8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + ldr r3, [r3, #8] + ldr r0, [r4, #8] + cmp r1, #3 + bhi _021DEF2E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DEED4: ; jump table + .short _021DEEDC - _021DEED4 - 2 ; case 0 + .short _021DEEF6 - _021DEED4 - 2 ; case 1 + .short _021DEF18 - _021DEED4 - 2 ; case 2 + .short _021DEF2A - _021DEED4 - 2 ; case 3 +_021DEEDC: + ldr r0, [r4, #4] + mov r1, #0x64 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x64 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEF2E +_021DEEF6: + ldr r1, [r4, #4] + str r1, [sp] + add r1, r5, #0 + bl MOD16_021DEFF8 + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + str r0, [sp] + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEF2E +_021DEF18: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021DEF2E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEF2E +_021DEF2A: + mov r0, #1 + pop {r3, r4, r5, pc} +_021DEF2E: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEEB8 + + thumb_func_start MOD16_021DEF34 +MOD16_021DEF34: ; 0x021DEF34 + push {r4, lr} + add r3, r1, #0 + ldr r1, [r2, #0x30] + add r4, r0, #0 + ldr r0, [r3, #8] + cmp r1, #0 + bne _021DEF4C + ldr r3, [r3, #4] + add r1, r4, #0 + bl MOD16_021DF450 + b _021DEF6A +_021DEF4C: + cmp r1, #1 + beq _021DEF54 + cmp r1, #3 + bne _021DEF5E +_021DEF54: + ldr r3, [r3, #4] + add r1, r4, #0 + bl MOD16_021DF89C + b _021DEF6A +_021DEF5E: + cmp r1, #4 + beq _021DEF6A + ldr r3, [r3, #4] + add r1, r4, #0 + bl MOD16_021DF90C +_021DEF6A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DEF34 + + thumb_func_start MOD16_021DEF70 +MOD16_021DEF70: ; 0x021DEF70 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021DEFF2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DEF8C: ; jump table + .short _021DEF96 - _021DEF8C - 2 ; case 0 + .short _021DEFBC - _021DEF8C - 2 ; case 1 + .short _021DEFCE - _021DEF8C - 2 ; case 2 + .short _021DEFDC - _021DEF8C - 2 ; case 3 + .short _021DEFEC - _021DEF8C - 2 ; case 4 +_021DEF96: + ldr r0, [r2, #0x28] + cmp r0, #0 + bne _021DEFB6 + mov r0, #1 + str r0, [sp] + mov r0, #6 + add r1, r0, #0 + sub r1, #0x16 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEFF2 +_021DEFB6: + mov r0, #2 + str r0, [r4] + b _021DEFF2 +_021DEFBC: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021DEFF2 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEFF2 +_021DEFCE: + add r1, r3, #0 + bl MOD16_021DF0BC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEFF2 +_021DEFDC: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEFF2 +_021DEFEC: + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021DEFF2: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021DEF70 + + thumb_func_start MOD16_021DEFF8 +MOD16_021DEFF8: ; 0x021DEFF8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + mov r1, #2 + ldr r0, [r0] + add r4, r2, #0 + ldr r6, [sp, #0x18] + bl FUN_02018744 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r5] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r5] + mov r1, #7 + add r0, r0, #4 + bl FUN_0201AB24 + add r0, r5, #0 + bl MOD16_021DF17C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021DF108 + ldr r0, [r4, #4] + bl MOD16_021D9D04 + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021DF140 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021DF198 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021DF288 + ldr r1, [r4, #0xc] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF350 + ldr r1, [r4, #0xc] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF514 + ldr r1, [r4, #0x10] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF5D0 + ldr r1, [r4, #0x14] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF630 + ldr r1, [r4, #0x18] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF7B0 + ldr r1, [r4, #0x1c] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF7BC + ldr r1, [r4, #0x20] + add r0, r7, #0 + bl MOD16_021DF7C8 + mov r0, #1 + add r1, r0, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DEFF8 + + thumb_func_start MOD16_021DF0BC +MOD16_021DF0BC: ; 0x021DF0BC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021DF33C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DF244 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DF168 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_0201AB24 + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DF0BC + + thumb_func_start MOD16_021DF108 +MOD16_021DF108: ; 0x021DF108 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r4, r2, #0 + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x1c + mov r3, #3 + bl MOD16_021D8CB4 + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + mov r2, #0 + ldr r0, [r5] + mov r1, #5 + add r3, r2, #0 + bl MOD16_021D8CFC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DF108 + + thumb_func_start MOD16_021DF140 +MOD16_021DF140: ; 0x021DF140 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bne _021DF150 + mov r2, #0x2a + b _021DF152 +_021DF150: + mov r2, #0x28 +_021DF152: + str r3, [sp] + ldr r0, [r1] + add r3, r4, #0 + add r1, r2, #0 + mov r2, #1 + add r3, #0x60 + bl MOD16_021D8D48 + str r0, [r4, #0x5c] + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021DF140 + + thumb_func_start MOD16_021DF168 +MOD16_021DF168: ; 0x021DF168 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x5c] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x5c] + str r0, [r4, #0x60] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DF168 + + thumb_func_start MOD16_021DF17C +MOD16_021DF17C: ; 0x021DF17C + push {r4, lr} + ldr r0, [r0] + bl MOD16_021D8700 + add r4, r0, #0 + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02007EEC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DF17C + + thumb_func_start MOD16_021DF198 +MOD16_021DF198: ; 0x021DF198 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021DF234 ; =0x00003AE9 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x51 + bl FUN_020091E0 + str r0, [r5, #0x24] + bl FUN_02009B04 + ldr r0, [r5, #0x24] + bl FUN_02009474 + ldr r0, _021DF238 ; =0x00003A9B + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xc + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x28] + bl FUN_02009D68 + ldr r0, [r5, #0x28] + bl FUN_02009474 + ldr r0, _021DF23C ; =0x00003AE7 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x4f + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x2c] + ldr r0, _021DF240 ; =0x00003AE8 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x50 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x30] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DF234: .word 0x00003AE9 +_021DF238: .word 0x00003A9B +_021DF23C: .word 0x00003AE7 +_021DF240: .word 0x00003AE8 + thumb_func_end MOD16_021DF198 + + thumb_func_start MOD16_021DF244 +MOD16_021DF244: ; 0x021DF244 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x28] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x28] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x2c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x30] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DF244 + + thumb_func_start MOD16_021DF288 +MOD16_021DF288: ; 0x021DF288 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r6, r3, #0 + ldr r4, [r1] + ldr r3, _021DF338 ; =0x00003AE8 + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x4d + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + lsl r0, r0, #0x13 + str r0, [sp, #0x34] + mov r0, #0x29 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + mov r1, #3 + str r0, [r5, #0x20] + bl FUN_02020130 + mov r0, #2 + lsl r0, r0, #0x12 + str r0, [sp, #0x34] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #0x58] + mov r1, #0x11 + bl FUN_02020130 + ldr r0, [r5, #0x58] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #0x58] + mov r1, #1 + bl FUN_020200EC + ldr r0, [r5, #0x58] + mov r1, #0 + bl FUN_02020238 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DF338: .word 0x00003AE8 + thumb_func_end MOD16_021DF288 + + thumb_func_start MOD16_021DF33C +MOD16_021DF33C: ; 0x021DF33C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + bl FUN_0201FFC8 + ldr r0, [r4, #0x58] + bl FUN_0201FFC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DF33C + + thumb_func_start MOD16_021DF350 +MOD16_021DF350: ; 0x021DF350 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, [r0] + mov r0, #0xd0 + str r0, [sp] + mov r0, #0x20 + add r6, r1, #0 + add r7, r2, #0 + str r0, [sp, #4] + add r0, r5, #4 + mov r1, #0 + mov r2, #0x18 + mov r3, #8 + bl FUN_020196F4 + cmp r6, #3 + bhi _021DF394 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF37E: ; jump table + .short _021DF386 - _021DF37E - 2 ; case 0 + .short _021DF38A - _021DF37E - 2 ; case 1 + .short _021DF38E - _021DF37E - 2 ; case 2 + .short _021DF392 - _021DF37E - 2 ; case 3 +_021DF386: + mov r4, #0x5a + b _021DF394 +_021DF38A: + mov r4, #0x57 + b _021DF394 +_021DF38E: + mov r4, #0x58 + b _021DF394 +_021DF392: + mov r4, #0x59 +_021DF394: + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021D8270 + add r6, r0, #0 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002F08 + mov r1, #0xd0 + sub r0, r1, r0 + lsr r4, r0, #1 + add r0, r6, #0 + add r4, #0x18 + bl FUN_02002F90 + lsl r1, r0, #4 + mov r0, #0x20 + sub r0, r0, r1 + lsr r0, r0, #1 + add r0, #8 + str r0, [sp] + mov r1, #0 + ldr r0, _021DF3E0 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r6, #0 + add r3, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DF3E0: .word 0x00020100 + thumb_func_end MOD16_021DF350 + + thumb_func_start MOD16_021DF3E4 +MOD16_021DF3E4: ; 0x021DF3E4 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r4, [r0] + mov r0, #0xd0 + str r0, [sp] + mov r0, #0x20 + add r5, r1, #0 + str r0, [sp, #4] + add r0, r4, #4 + mov r1, #0 + mov r2, #0x18 + mov r3, #8 + bl FUN_020196F4 + mov r0, #0x5d + add r1, r5, #0 + bl MOD16_021D8270 + add r6, r0, #0 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002F08 + mov r1, #0xd0 + sub r0, r1, r0 + lsr r5, r0, #1 + add r0, r6, #0 + add r5, #0x18 + bl FUN_02002F90 + lsl r1, r0, #4 + mov r0, #0x20 + sub r0, r0, r1 + lsr r0, r0, #1 + add r0, #8 + str r0, [sp] + mov r1, #0 + ldr r0, _021DF44C ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r4, #4 + add r2, r6, #0 + add r3, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DF44C: .word 0x00020100 + thumb_func_end MOD16_021DF3E4 + + thumb_func_start MOD16_021DF450 +MOD16_021DF450: ; 0x021DF450 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r1, #0 + ldr r1, [r4, #0x2c] + ldr r0, [r5, #0x18] + add r7, r3, #0 + cmp r1, r0 + beq _021DF474 + str r1, [r5, #0x18] + cmp r1, #1 + bne _021DF474 + mov r0, #0x40 + str r0, [r5, #0x1c] + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DF3E4 +_021DF474: + ldr r0, [r5, #0x1c] + cmp r0, #0 + ble _021DF480 + sub r0, r0, #1 + str r0, [r5, #0x1c] + b _021DF492 +_021DF480: + bne _021DF492 + ldr r1, [r4, #0xc] + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF350 + ldr r0, [r5, #0x1c] + sub r0, r0, #1 + str r0, [r5, #0x1c] +_021DF492: + ldr r1, [r4, #0xc] + ldr r0, [r5] + cmp r0, r1 + beq _021DF4B0 + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF514 + ldr r1, [r4, #0xc] + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF350 + ldr r0, [r4, #0xc] + str r0, [r5] +_021DF4B0: + ldr r1, [r4, #0x10] + ldr r0, [r5, #4] + cmp r0, r1 + beq _021DF4C4 + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF5D0 + ldr r0, [r4, #0x10] + str r0, [r5, #4] +_021DF4C4: + ldr r1, [r4, #0x14] + ldr r0, [r5, #8] + cmp r0, r1 + beq _021DF4D8 + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF630 + ldr r0, [r4, #0x14] + str r0, [r5, #8] +_021DF4D8: + ldr r1, [r4, #0x18] + ldr r0, [r5, #0xc] + cmp r0, r1 + beq _021DF4EC + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF7B0 + ldr r0, [r4, #0x18] + str r0, [r5, #0xc] +_021DF4EC: + ldr r1, [r4, #0x1c] + ldr r0, [r5, #0x10] + cmp r0, r1 + beq _021DF500 + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF7BC + ldr r0, [r4, #0x1c] + str r0, [r5, #0x10] +_021DF500: + ldr r1, [r4, #0x20] + ldr r0, [r5, #0x14] + cmp r0, r1 + beq _021DF512 + add r0, r5, #0 + bl MOD16_021DF7C8 + ldr r0, [r4, #0x20] + str r0, [r5, #0x14] +_021DF512: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DF450 + + thumb_func_start MOD16_021DF514 +MOD16_021DF514: ; 0x021DF514 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r0, #0 + str r2, [sp] + add r7, r1, #0 + str r2, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x2b + mov r2, #1 + add r3, sp, #0x14 + bl MOD16_021D8D48 + ldr r2, [sp, #0x14] + mov r3, #0 + str r3, [sp] + str r0, [sp, #0x10] + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + ldr r0, [sp, #0x10] + bl FUN_02016A18 + cmp r7, #3 + bhi _021DF584 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF566: ; jump table + .short _021DF56E - _021DF566 - 2 ; case 0 + .short _021DF574 - _021DF566 - 2 ; case 1 + .short _021DF57A - _021DF566 - 2 ; case 2 + .short _021DF580 - _021DF566 - 2 ; case 3 +_021DF56E: + mov r5, #6 + mov r6, #0x2c + b _021DF584 +_021DF574: + mov r5, #9 + mov r6, #0x2d + b _021DF584 +_021DF57A: + mov r5, #0xc + mov r6, #0x2e + b _021DF584 +_021DF580: + mov r5, #0x11 + mov r6, #0x2f +_021DF584: + ldr r0, [sp, #0xc] + add r1, r6, #0 + str r0, [sp] + ldr r0, [r4] + mov r2, #1 + add r3, sp, #0x14 + bl MOD16_021D8D48 + add r6, r0, #0 + lsl r0, r5, #0x18 + ldr r2, [sp, #0x14] + lsr r0, r0, #0x18 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DF514 + + thumb_func_start MOD16_021DF5D0 +MOD16_021DF5D0: ; 0x021DF5D0 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r4, [r0] + mov r0, #0x50 + str r0, [sp] + mov r0, #0x10 + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r4, #4 + mov r1, #0 + mov r2, #0x58 + mov r3, #0x34 + bl FUN_020196F4 + add r5, #0x51 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021D8270 + add r5, r0, #0 + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0x50 + bl FUN_02002F40 + add r3, r0, #0 + mov r0, #0x34 + str r0, [sp] + mov r1, #0 + ldr r0, _021DF62C ; =0x00040300 + str r1, [sp, #4] + str r0, [sp, #8] + add r3, #0x58 + add r0, r4, #4 + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021DF62C: .word 0x00040300 + thumb_func_end MOD16_021DF5D0 + + thumb_func_start MOD16_021DF630 +MOD16_021DF630: ; 0x021DF630 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, [r0] + mov r0, #0x50 + str r0, [sp] + mov r0, #0x10 + add r6, r1, #0 + add r7, r2, #0 + str r0, [sp, #4] + add r0, r5, #4 + mov r1, #0 + mov r2, #0x58 + mov r3, #0x4d + bl FUN_020196F4 + cmp r6, #9 + bhi _021DF698 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF65E: ; jump table + .short _021DF672 - _021DF65E - 2 ; case 0 + .short _021DF676 - _021DF65E - 2 ; case 1 + .short _021DF67A - _021DF65E - 2 ; case 2 + .short _021DF67E - _021DF65E - 2 ; case 3 + .short _021DF682 - _021DF65E - 2 ; case 4 + .short _021DF686 - _021DF65E - 2 ; case 5 + .short _021DF68A - _021DF65E - 2 ; case 6 + .short _021DF68E - _021DF65E - 2 ; case 7 + .short _021DF692 - _021DF65E - 2 ; case 8 + .short _021DF696 - _021DF65E - 2 ; case 9 +_021DF672: + mov r4, #0x73 + b _021DF698 +_021DF676: + mov r4, #0x36 + b _021DF698 +_021DF67A: + mov r4, #0x37 + b _021DF698 +_021DF67E: + mov r4, #0x38 + b _021DF698 +_021DF682: + mov r4, #0x39 + b _021DF698 +_021DF686: + mov r4, #0x3a + b _021DF698 +_021DF68A: + mov r4, #0x3b + b _021DF698 +_021DF68E: + mov r4, #0x3c + b _021DF698 +_021DF692: + mov r4, #0x3d + b _021DF698 +_021DF696: + mov r4, #0x3e +_021DF698: + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021D8270 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + mov r3, #0x50 + bl FUN_02002F40 + add r3, r0, #0 + mov r0, #0x4d + str r0, [sp] + mov r1, #0 + ldr r0, _021DF6D4 ; =0x00040300 + str r1, [sp, #4] + str r0, [sp, #8] + add r3, #0x58 + add r0, r5, #4 + add r2, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DF6D4: .word 0x00040300 + thumb_func_end MOD16_021DF630 + + thumb_func_start MOD16_021DF6D8 +MOD16_021DF6D8: ; 0x021DF6D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r5, [r0] + add r7, r3, #0 + mov r0, #0x50 + str r0, [sp] + mov r0, #0x10 + lsl r3, r7, #0x10 + add r6, r1, #0 + str r2, [sp, #0x10] + str r0, [sp, #4] + add r0, r5, #4 + mov r1, #0 + mov r2, #0x58 + lsr r3, r3, #0x10 + bl FUN_020196F4 + cmp r6, #0x11 + bhi _021DF774 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF70A: ; jump table + .short _021DF72E - _021DF70A - 2 ; case 0 + .short _021DF732 - _021DF70A - 2 ; case 1 + .short _021DF736 - _021DF70A - 2 ; case 2 + .short _021DF73A - _021DF70A - 2 ; case 3 + .short _021DF73E - _021DF70A - 2 ; case 4 + .short _021DF742 - _021DF70A - 2 ; case 5 + .short _021DF746 - _021DF70A - 2 ; case 6 + .short _021DF74A - _021DF70A - 2 ; case 7 + .short _021DF74E - _021DF70A - 2 ; case 8 + .short _021DF752 - _021DF70A - 2 ; case 9 + .short _021DF756 - _021DF70A - 2 ; case 10 + .short _021DF75A - _021DF70A - 2 ; case 11 + .short _021DF75E - _021DF70A - 2 ; case 12 + .short _021DF762 - _021DF70A - 2 ; case 13 + .short _021DF766 - _021DF70A - 2 ; case 14 + .short _021DF76A - _021DF70A - 2 ; case 15 + .short _021DF76E - _021DF70A - 2 ; case 16 + .short _021DF772 - _021DF70A - 2 ; case 17 +_021DF72E: + mov r4, #0x74 + b _021DF774 +_021DF732: + mov r4, #0x40 + b _021DF774 +_021DF736: + mov r4, #0x46 + b _021DF774 +_021DF73A: + mov r4, #0x49 + b _021DF774 +_021DF73E: + mov r4, #0x47 + b _021DF774 +_021DF742: + mov r4, #0x48 + b _021DF774 +_021DF746: + mov r4, #0x4c + b _021DF774 +_021DF74A: + mov r4, #0x4b + b _021DF774 +_021DF74E: + mov r4, #0x4d + b _021DF774 +_021DF752: + mov r4, #0x50 + b _021DF774 +_021DF756: + mov r4, #0x41 + b _021DF774 +_021DF75A: + mov r4, #0x42 + b _021DF774 +_021DF75E: + mov r4, #0x44 + b _021DF774 +_021DF762: + mov r4, #0x43 + b _021DF774 +_021DF766: + mov r4, #0x4a + b _021DF774 +_021DF76A: + mov r4, #0x45 + b _021DF774 +_021DF76E: + mov r4, #0x4e + b _021DF774 +_021DF772: + mov r4, #0x4f +_021DF774: + ldr r1, [sp, #0x10] + add r0, r4, #0 + bl MOD16_021D8270 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + mov r3, #0x50 + bl FUN_02002F40 + add r3, r0, #0 + str r7, [sp] + mov r1, #0 + ldr r0, _021DF7AC ; =0x00040300 + str r1, [sp, #4] + str r0, [sp, #8] + add r3, #0x58 + add r0, r5, #4 + add r2, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DF7AC: .word 0x00040300 + thumb_func_end MOD16_021DF6D8 + + thumb_func_start MOD16_021DF7B0 +MOD16_021DF7B0: ; 0x021DF7B0 + push {r3, lr} + mov r3, #0x66 + bl MOD16_021DF6D8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DF7B0 + + thumb_func_start MOD16_021DF7BC +MOD16_021DF7BC: ; 0x021DF7BC + push {r3, lr} + mov r3, #0x78 + bl MOD16_021DF6D8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DF7BC + + thumb_func_start MOD16_021DF7C8 +MOD16_021DF7C8: ; 0x021DF7C8 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + ldr r0, [r4, #0x20] + bne _021DF7DA + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_021DF7DA: + mov r1, #1 + bl FUN_020200A0 + cmp r5, #0xe + bhi _021DF898 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF7F0: ; jump table + .short _021DF898 - _021DF7F0 - 2 ; case 0 + .short _021DF80E - _021DF7F0 - 2 ; case 1 + .short _021DF818 - _021DF7F0 - 2 ; case 2 + .short _021DF822 - _021DF7F0 - 2 ; case 3 + .short _021DF82C - _021DF7F0 - 2 ; case 4 + .short _021DF836 - _021DF7F0 - 2 ; case 5 + .short _021DF840 - _021DF7F0 - 2 ; case 6 + .short _021DF84A - _021DF7F0 - 2 ; case 7 + .short _021DF854 - _021DF7F0 - 2 ; case 8 + .short _021DF85E - _021DF7F0 - 2 ; case 9 + .short _021DF868 - _021DF7F0 - 2 ; case 10 + .short _021DF872 - _021DF7F0 - 2 ; case 11 + .short _021DF87C - _021DF7F0 - 2 ; case 12 + .short _021DF886 - _021DF7F0 - 2 ; case 13 + .short _021DF890 - _021DF7F0 - 2 ; case 14 +_021DF80E: + ldr r0, [r4, #0x20] + mov r1, #3 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF818: + ldr r0, [r4, #0x20] + mov r1, #4 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF822: + ldr r0, [r4, #0x20] + mov r1, #5 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF82C: + ldr r0, [r4, #0x20] + mov r1, #6 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF836: + ldr r0, [r4, #0x20] + mov r1, #7 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF840: + ldr r0, [r4, #0x20] + mov r1, #8 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF84A: + ldr r0, [r4, #0x20] + mov r1, #9 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF854: + ldr r0, [r4, #0x20] + mov r1, #0xa + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF85E: + ldr r0, [r4, #0x20] + mov r1, #0xb + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF868: + ldr r0, [r4, #0x20] + mov r1, #0xc + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF872: + ldr r0, [r4, #0x20] + mov r1, #0xd + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF87C: + ldr r0, [r4, #0x20] + mov r1, #0xe + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF886: + ldr r0, [r4, #0x20] + mov r1, #0xf + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF890: + ldr r0, [r4, #0x20] + mov r1, #0x10 + bl FUN_02020130 +_021DF898: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DF7C8 + + thumb_func_start MOD16_021DF89C +MOD16_021DF89C: ; 0x021DF89C + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r2, #0x34] + add r4, r1, #0 + cmp r0, #4 + bne _021DF900 + ldr r0, [r2, #0x30] + cmp r0, #1 + bne _021DF8D4 + mov r1, #0 + str r1, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x14 + str r0, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + ldr r1, [r4] + add r0, r5, #0 + ldr r1, [r1] + ldr r3, [r5, #0x60] + add r0, #0x34 + mov r2, #2 + bl MOD16_021D7CA4 + b _021DF900 +_021DF8D4: + add r0, r4, #0 + add r1, r5, #0 + add r2, r3, #0 + bl MOD16_021DF9C0 + mov r0, #0xc + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + ldr r1, [r4] + add r0, r5, #0 + ldr r1, [r1] + ldr r3, [r5, #0x60] + add r0, #0x34 + mov r2, #2 + bl MOD16_021D7CA4 +_021DF900: + add r5, #0x34 + add r0, r5, #0 + bl MOD16_021D7CC8 + add sp, #0x14 + pop {r4, r5, pc} + thumb_func_end MOD16_021DF89C + + thumb_func_start MOD16_021DF90C +MOD16_021DF90C: ; 0x021DF90C + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6, #0x34] + add r4, r1, #0 + add r7, r3, #0 + cmp r0, #0x20 + bne _021DF92E + ldr r0, [r5, #0x58] + mov r1, #1 + bl FUN_020200A0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021DF970 + b _021DF94C +_021DF92E: + cmp r0, #0 + bne _021DF94C + ldr r0, [r5, #0x58] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + add r0, r0, #4 + bl FUN_02019220 +_021DF94C: + ldr r2, [r6, #0x34] + mov r1, #4 + sub r2, r1, r2 + ldr r1, _021DF96C ; =0x00007FFF + add r3, r2, #0 + mul r3, r1 + asr r1, r3, #1 + lsr r1, r1, #0x1e + add r1, r3, r1 + lsl r1, r1, #0xe + ldr r0, [r5, #0x58] + lsr r1, r1, #0x10 + bl FUN_02020088 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DF96C: .word 0x00007FFF + thumb_func_end MOD16_021DF90C + + thumb_func_start MOD16_021DF970 +MOD16_021DF970: ; 0x021DF970 + push {r3, r4, r5, lr} + sub sp, #0x10 + ldr r5, [r0] + add r4, r1, #0 + add r0, r5, #4 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x5e + add r1, r4, #0 + bl MOD16_021D8270 + add r4, r0, #0 + mov r0, #0x80 + str r0, [sp] + mov r1, #0 + ldr r0, _021DF9BC ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0x60 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DF9BC: .word 0x00020100 + thumb_func_end MOD16_021DF970 + + thumb_func_start MOD16_021DF9C0 +MOD16_021DF9C0: ; 0x021DF9C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + add r1, r0, #0 + add r6, r2, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + ldr r0, [r5] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r1, [r4] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF514 + ldr r1, [r4] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF350 + ldr r1, [r4, #4] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF5D0 + ldr r1, [r4, #8] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF630 + ldr r1, [r4, #0xc] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF7B0 + ldr r1, [r4, #0x10] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF7BC + ldr r1, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DF7C8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DF9C0 + + thumb_func_start MOD16_021DFA28 +MOD16_021DFA28: ; 0x021DFA28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021DFAA0 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DFAE8 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DFB20 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021DFB50 + str r0, [r5, #0x24] + ldr r0, _021DFA70 ; =MOD16_021DFB54 + str r0, [r5, #8] + ldr r0, _021DFA74 ; =MOD16_021DFBB8 + str r0, [r5, #0xc] + ldr r0, _021DFA78 ; =MOD16_021DFCEC + str r0, [r5, #0x10] + ldr r0, _021DFA7C ; =MOD16_021DFD0C + str r0, [r5, #0x14] + ldr r0, _021DFA80 ; =MOD16_021DFD9C + str r0, [r5, #0x18] + ldr r0, _021DFA84 ; =MOD16_021DFECC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DFA70: .word MOD16_021DFB54 +_021DFA74: .word MOD16_021DFBB8 +_021DFA78: .word MOD16_021DFCEC +_021DFA7C: .word MOD16_021DFD0C +_021DFA80: .word MOD16_021DFD9C +_021DFA84: .word MOD16_021DFECC + thumb_func_end MOD16_021DFA28 + + thumb_func_start MOD16_021DFA88 +MOD16_021DFA88: ; 0x021DFA88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021DFB24 + ldr r0, [r4, #4] + bl MOD16_021DFB38 + ldr r0, [r4, #0x20] + bl MOD16_021DFB4C + pop {r4, pc} + thumb_func_end MOD16_021DFA88 + + thumb_func_start MOD16_021DFAA0 +MOD16_021DFAA0: ; 0x021DFAA0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021DFAB2 + bl ErrorHandling +_021DFAB2: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021DFAB8: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DFAB8 + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D7B7C + str r0, [r4, #0xc] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DFAA0 + + thumb_func_start MOD16_021DFAE8 +MOD16_021DFAE8: ; 0x021DFAE8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021DFAFA + bl ErrorHandling +_021DFAFA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DFAE8 + + thumb_func_start MOD16_021DFB20 +MOD16_021DFB20: ; 0x021DFB20 + mov r0, #0 + bx lr + thumb_func_end MOD16_021DFB20 + + thumb_func_start MOD16_021DFB24 +MOD16_021DFB24: ; 0x021DFB24 + push {r4, lr} + add r4, r0, #0 + bne _021DFB2E + bl ErrorHandling +_021DFB2E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DFB24 + + thumb_func_start MOD16_021DFB38 +MOD16_021DFB38: ; 0x021DFB38 + push {r4, lr} + add r4, r0, #0 + bne _021DFB42 + bl ErrorHandling +_021DFB42: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DFB38 + + thumb_func_start MOD16_021DFB4C +MOD16_021DFB4C: ; 0x021DFB4C + bx lr + .align 2, 0 + thumb_func_end MOD16_021DFB4C + + thumb_func_start MOD16_021DFB50 +MOD16_021DFB50: ; 0x021DFB50 + mov r0, #0 + bx lr + thumb_func_end MOD16_021DFB50 + + thumb_func_start MOD16_021DFB54 +MOD16_021DFB54: ; 0x021DFB54 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + mov r1, #0x9c + bl FUN_02016998 + add r4, r0, #0 + bne _021DFB6A + bl ErrorHandling +_021DFB6A: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x9c + blx Call_FillMemWithValue + add r0, r4, #0 + ldr r1, _021DFBB4 ; =0x0000FFFF + str r4, [r5, #8] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E2864 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E0048 + ldr r1, [r5, #4] + add r0, r4, #0 + bl MOD16_021E18E8 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E1930 + mov r1, #0 + mov r0, #4 +_021DFBA4: + add r1, r1, #1 + str r0, [r4, #0x2c] + add r4, r4, #4 + cmp r1, #6 + blt _021DFBA4 + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021DFBB4: .word 0x0000FFFF + thumb_func_end MOD16_021DFB54 + + thumb_func_start MOD16_021DFBB8 +MOD16_021DFBB8: ; 0x021DFBB8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #0xc] + ldr r4, [r5, #8] + ldr r7, [r0, #4] + ldr r0, [r5, #0xc] + cmp r0, #1 + bne _021DFBD2 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DFBD2: + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _021DFBDE + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DFBDE: + ldr r0, [r6, #8] + bl MOD16_021DEC54 + cmp r0, #0 + beq _021DFBEE + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DFBEE: + ldr r0, [r6, #8] + bl MOD16_021DEBB8 + str r0, [sp, #4] + ldr r0, [r5] + cmp r0, #4 + bhi _021DFCE4 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DFC08: ; jump table + .short _021DFC12 - _021DFC08 - 2 ; case 0 + .short _021DFC6E - _021DFC08 - 2 ; case 1 + .short _021DFC7C - _021DFC08 - 2 ; case 2 + .short _021DFCD2 - _021DFC08 - 2 ; case 3 + .short _021DFCE0 - _021DFC08 - 2 ; case 4 +_021DFC12: + ldr r1, [r4, #0x24] + ldr r0, [sp, #4] + cmp r1, r0 + bne _021DFC22 + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x20] + cmp r1, r0 + beq _021DFC4A +_021DFC22: + add r0, r4, #0 + mov r1, #0 + add r0, #0x98 + str r1, [r0] + mov r0, #2 + str r0, [r7, #4] + add r0, r4, #0 + add r0, #0x98 + str r0, [r7, #8] + add r0, r4, #0 + bl MOD16_021E0214 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD16_021E0224 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DFCE4 +_021DFC4A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E0104 + ldr r0, [r6, #4] + bl MOD16_021D9FB8 + cmp r0, #1 + bne _021DFC64 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E1804 +_021DFC64: + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E2870 + b _021DFCE4 +_021DFC6E: + add r4, #0x98 + ldr r1, [r4] + cmp r1, #0 + beq _021DFCE4 + add r0, r0, #1 + str r0, [r5] + b _021DFCE4 +_021DFC7C: + ldr r0, [r4, #0x24] + add r1, r6, #0 + str r0, [sp] + ldr r0, [sp, #4] + str r0, [r4, #0x24] + ldr r0, [r4, #0x20] + str r0, [r4, #0x28] + ldr r2, [r5, #4] + add r0, r4, #0 + bl MOD16_021E00A0 + ldr r1, [r5, #4] + add r0, r4, #0 + bl MOD16_021E1970 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E2864 + ldr r1, [r4, #0x24] + ldr r0, [sp] + cmp r0, r1 + beq _021DFCB2 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E1930 +_021DFCB2: + add r0, r4, #0 + mov r1, #0 + add r0, #0x98 + str r1, [r0] + mov r0, #1 + str r0, [r7, #4] + add r0, r4, #0 + add r0, #0x98 + str r0, [r7, #8] + add r0, r4, #0 + bl MOD16_021E02C4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DFCE4 +_021DFCD2: + add r4, #0x98 + ldr r1, [r4] + cmp r1, #0 + beq _021DFCE4 + add r0, r0, #1 + str r0, [r5] + b _021DFCE4 +_021DFCE0: + mov r0, #0 + str r0, [r5] +_021DFCE4: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DFBB8 + + thumb_func_start MOD16_021DFCEC +MOD16_021DFCEC: ; 0x021DFCEC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r5, [r4, #8] + add r0, r5, #0 + bl MOD16_021E0090 + add r0, r5, #0 + bl MOD16_021E18D0 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DFCEC + + thumb_func_start MOD16_021DFD0C +MOD16_021DFD0C: ; 0x021DFD0C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, [r4] + add r6, r0, #0 + add r7, r2, #0 + ldr r5, [r3, #8] + ldr r0, [r4, #8] + cmp r1, #3 + bhi _021DFD96 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DFD2A: ; jump table + .short _021DFD32 - _021DFD2A - 2 ; case 0 + .short _021DFD50 - _021DFD2A - 2 ; case 1 + .short _021DFD80 - _021DFD2A - 2 ; case 2 + .short _021DFD92 - _021DFD2A - 2 ; case 3 +_021DFD32: + mov r1, #0x4e + ldr r0, [r4, #4] + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x4e + str r0, [r4, #8] + mov r1, #0 + lsl r2, r2, #2 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFD96 +_021DFD50: + ldr r1, [r4, #4] + add r3, r5, #0 + str r1, [sp] + add r1, r6, #0 + bl MOD16_021DFF74 + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021E1988 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFD96 +_021DFD80: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021DFD96 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFD96 +_021DFD92: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DFD96: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DFD0C + + thumb_func_start MOD16_021DFD9C +MOD16_021DFD9C: ; 0x021DFD9C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r0, r2, #0 + add r5, r1, #0 + ldr r0, [r0, #8] + str r2, [sp, #4] + ldr r6, [r3, #8] + ldr r4, [r5, #8] + bl MOD16_021DEC54 + cmp r0, #0 + beq _021DFDC2 + ldr r2, [sp, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E2E74 + b _021DFE4C +_021DFDC2: + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E2CC8 + mov r0, #0x41 + lsl r0, r0, #2 + ldr r2, [r6, #0x24] + ldr r3, [r4, r0] + cmp r3, r2 + bne _021DFDE0 + add r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, [r6, #0x28] + cmp r1, r0 + beq _021DFE42 +_021DFDE0: + mov r0, #0x41 + lsl r0, r0, #2 + str r2, [r4, r0] + ldr r1, [r6, #0x28] + add r0, r0, #4 + str r1, [r4, r0] + cmp r3, #3 + bne _021DFDFE + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E1BD0 + add r0, r4, #0 + bl MOD16_021E22A8 +_021DFDFE: + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E1CA4 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E2344 + mov r0, #0x41 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #3 + bne _021DFE30 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E1B3C + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E20EC +_021DFE30: + mov r3, #0x41 + lsl r3, r3, #2 + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #1 + bl MOD16_021E2DBC +_021DFE42: + ldr r2, [sp, #4] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E19A4 +_021DFE4C: + mov r7, #0 + str r6, [sp, #8] + add r5, r4, #0 +_021DFE52: + ldr r1, [sp, #8] + ldr r0, [r5] + ldr r1, [r1, #0x2c] + bl MOD16_021D7B98 + ldr r1, [r5, #0x18] + cmp r1, #0 + beq _021DFE7A + cmp r7, #5 + bne _021DFE6A + mov r3, #1 + b _021DFE6C +_021DFE6A: + mov r3, #3 +_021DFE6C: + mov r0, #5 + str r0, [sp] + mov r2, #5 + ldr r0, [r5] + mvn r2, r2 + bl MOD16_021D7C70 +_021DFE7A: + ldr r0, [sp, #8] + add r7, r7, #1 + add r0, r0, #4 + add r5, r5, #4 + str r0, [sp, #8] + cmp r7, #6 + blt _021DFE52 + mov r5, #0 + mov r7, #6 +_021DFE8C: + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021DFE98 + ldr r1, [r6, #0x44] + bl MOD16_021D7B98 +_021DFE98: + ldr r1, [r4, #0x6c] + cmp r1, #0 + beq _021DFEAC + str r7, [sp] + mov r2, #5 + ldr r0, [r4, #0x30] + mvn r2, r2 + mov r3, #0xb + bl MOD16_021D7C70 +_021DFEAC: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DFEBC + ldr r1, [r6, #0x44] + bl MOD16_021D7B98 +_021DFEBC: + add r5, r5, #1 + add r4, r4, #4 + add r6, r6, #4 + cmp r5, #0xf + blt _021DFE8C + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DFD9C + + thumb_func_start MOD16_021DFECC +MOD16_021DFECC: ; 0x021DFECC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021DFF6E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DFEE8: ; jump table + .short _021DFEF2 - _021DFEE8 - 2 ; case 0 + .short _021DFF1C - _021DFEE8 - 2 ; case 1 + .short _021DFF2E - _021DFEE8 - 2 ; case 2 + .short _021DFF56 - _021DFEE8 - 2 ; case 3 + .short _021DFF68 - _021DFEE8 - 2 ; case 4 +_021DFEF2: + ldr r0, [r2, #8] + bl MOD16_021DEC4C + cmp r0, #1 + bne _021DFF02 + mov r0, #2 + str r0, [r4] + b _021DFF6E +_021DFF02: + mov r0, #2 + str r0, [sp] + mov r0, #6 + add r1, r0, #0 + sub r1, #0x16 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFF6E +_021DFF1C: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021DFF6E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFF6E +_021DFF2E: + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021DFFB8 + mov r0, #0x41 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #3 + bne _021DFF4E + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E1BD0 + add r0, r5, #0 + bl MOD16_021E22A8 +_021DFF4E: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFF6E +_021DFF56: + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFF6E +_021DFF68: + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021DFF6E: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021DFECC + + thumb_func_start MOD16_021DFF74 +MOD16_021DFF74: ; 0x021DFF74 + push {r4, r5, r6, lr} + ldr r4, [sp, #0x10] + add r6, r1, #0 + add r5, r0, #0 + add r1, r2, #0 + add r0, r6, #0 + add r2, r4, #0 + bl MOD16_021DFFE0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E1A14 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E1C10 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E22D0 + mov r3, #0x41 + lsl r3, r3, #2 + ldr r2, [r5, r3] + add r3, r3, #4 + ldr r3, [r5, r3] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021E2DBC + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DFF74 + + thumb_func_start MOD16_021DFFB8 +MOD16_021DFFB8: ; 0x021DFFB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E2334 + add r0, r5, #0 + bl MOD16_021E1C94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E1AE4 + mov r0, #0x79 + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B14 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DFFB8 + + thumb_func_start MOD16_021DFFE0 +MOD16_021DFFE0: ; 0x021DFFE0 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r2, #0 + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x1d + mov r3, #6 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x4b + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DFFE0 + + thumb_func_start MOD16_021E0048 +MOD16_021E0048: ; 0x021E0048 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD16_021E0158 + ldr r0, [r5, #0x28] + add r1, r4, #0 + str r0, [sp] + ldr r3, [r5, #0x24] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021E00C4 + add r0, r5, #0 + bl MOD16_021E0070 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E0048 + + thumb_func_start MOD16_021E0070 +MOD16_021E0070: ; 0x021E0070 + mov r2, #0 + add r3, r0, #0 + mov r1, #3 +_021E0076: + add r2, r2, #1 + str r1, [r3, #0x2c] + add r3, r3, #4 + cmp r2, #6 + blt _021E0076 + mov r2, #0 + mov r1, #3 +_021E0084: + add r2, r2, #1 + str r1, [r0, #0x44] + add r0, r0, #4 + cmp r2, #0xf + blt _021E0084 + bx lr + thumb_func_end MOD16_021E0070 + + thumb_func_start MOD16_021E0090 +MOD16_021E0090: ; 0x021E0090 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E026C + add r0, r4, #0 + bl MOD16_021E02AC + pop {r4, pc} + thumb_func_end MOD16_021E0090 + + thumb_func_start MOD16_021E00A0 +MOD16_021E00A0: ; 0x021E00A0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD16_021E02AC + ldr r0, [r5, #0x28] + add r1, r4, #0 + str r0, [sp] + ldr r3, [r5, #0x24] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021E00C4 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E00A0 + + thumb_func_start MOD16_021E00C4 +MOD16_021E00C4: ; 0x021E00C4 + push {r3, lr} + cmp r3, #3 + bhi _021E0100 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_021E00D6: ; jump table + .short _021E00DE - _021E00D6 - 2 ; case 0 + .short _021E00E4 - _021E00D6 - 2 ; case 1 + .short _021E00EA - _021E00D6 - 2 ; case 2 + .short _021E00FC - _021E00D6 - 2 ; case 3 +_021E00DE: + bl MOD16_021E02D4 + pop {r3, pc} +_021E00E4: + bl MOD16_021E0400 + pop {r3, pc} +_021E00EA: + ldr r3, [sp, #8] + cmp r3, #0 + bne _021E00F6 + bl MOD16_021E0558 + pop {r3, pc} +_021E00F6: + bl MOD16_021E06F8 + pop {r3, pc} +_021E00FC: + bl MOD16_021E08A0 +_021E0100: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E00C4 + + thumb_func_start MOD16_021E0104 +MOD16_021E0104: ; 0x021E0104 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E01FC + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E011C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E0104 + + thumb_func_start MOD16_021E011C +MOD16_021E011C: ; 0x021E011C + push {r3, lr} + cmp r2, #3 + bhi _021E0156 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E012E: ; jump table + .short _021E0136 - _021E012E - 2 ; case 0 + .short _021E013C - _021E012E - 2 ; case 1 + .short _021E0142 - _021E012E - 2 ; case 2 + .short _021E0152 - _021E012E - 2 ; case 3 +_021E0136: + bl MOD16_021E0364 + pop {r3, pc} +_021E013C: + bl MOD16_021E0490 + pop {r3, pc} +_021E0142: + cmp r3, #0 + bne _021E014C + bl MOD16_021E05FC + pop {r3, pc} +_021E014C: + bl MOD16_021E07B0 + pop {r3, pc} +_021E0152: + bl MOD16_021E0930 +_021E0156: + pop {r3, pc} + thumb_func_end MOD16_021E011C + + thumb_func_start MOD16_021E0158 +MOD16_021E0158: ; 0x021E0158 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0x18 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x20 + add r0, r0, #4 + mov r2, #0x40 + mov r3, #0xc0 + bl MOD16_021D7C98 + mov r0, #0xec + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0 + mov r2, #0x20 + mov r3, #0xbc + bl MOD16_021D7C98 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x40 + add r0, #8 + mov r2, #0x60 + mov r3, #0xc0 + bl MOD16_021D7C98 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x60 + add r0, #0xc + mov r2, #0x80 + mov r3, #0xc0 + bl MOD16_021D7C98 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x80 + add r0, #0x10 + mov r2, #0xa0 + mov r3, #0xc0 + bl MOD16_021D7C98 + mov r0, #0xfc + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x14 + mov r2, #0xc0 + mov r3, #0xac + bl MOD16_021D7C98 + str r4, [r5, #0x10] + str r5, [r5, #0x14] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021E01F8 ; =MOD16_021E0284 + mov r1, #6 + add r3, #0x10 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021E01F8: .word MOD16_021E0284 + thumb_func_end MOD16_021E0158 + + thumb_func_start MOD16_021E01FC +MOD16_021E01FC: ; 0x021E01FC + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E0214 + ldr r0, [r4] + bl FUN_02022144 + ldr r1, [r4, #0x24] + add r0, r4, #0 + bl MOD16_021E0224 + pop {r4, pc} + thumb_func_end MOD16_021E01FC + + thumb_func_start MOD16_021E0214 +MOD16_021E0214: ; 0x021E0214 + mov r2, #0 + mov r1, #3 +_021E0218: + add r2, r2, #1 + str r1, [r0, #0x2c] + add r0, r0, #4 + cmp r2, #6 + blt _021E0218 + bx lr + thumb_func_end MOD16_021E0214 + + thumb_func_start MOD16_021E0224 +MOD16_021E0224: ; 0x021E0224 + cmp r1, #3 + bhi _021E026A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E0234: ; jump table + .short _021E023C - _021E0234 - 2 ; case 0 + .short _021E0248 - _021E0234 - 2 ; case 1 + .short _021E0254 - _021E0234 - 2 ; case 2 + .short _021E0260 - _021E0234 - 2 ; case 3 +_021E023C: + ldr r1, [r0, #0x30] + cmp r1, #2 + beq _021E026A + mov r1, #1 + str r1, [r0, #0x30] + bx lr +_021E0248: + ldr r1, [r0, #0x34] + cmp r1, #2 + beq _021E026A + mov r1, #1 + str r1, [r0, #0x34] + bx lr +_021E0254: + ldr r1, [r0, #0x38] + cmp r1, #2 + beq _021E026A + mov r1, #1 + str r1, [r0, #0x38] + bx lr +_021E0260: + ldr r1, [r0, #0x3c] + cmp r1, #2 + beq _021E026A + mov r1, #1 + str r1, [r0, #0x3c] +_021E026A: + bx lr + thumb_func_end MOD16_021E0224 + + thumb_func_start MOD16_021E026C +MOD16_021E026C: ; 0x021E026C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E026C + + thumb_func_start MOD16_021E0284 +MOD16_021E0284: ; 0x021E0284 + ldr r2, [r2, #4] + lsl r3, r0, #2 + add r3, r2, r3 + str r1, [r3, #0x2c] + cmp r1, #2 + bne _021E02A4 + add r1, r2, #0 + add r1, #0x80 + str r0, [r1] + add r0, r2, #0 + add r0, #0x94 + ldr r0, [r0] + add r2, #0x94 + add r0, r0, #1 + str r0, [r2] + bx lr +_021E02A4: + mov r0, #0 + add r2, #0x94 + str r0, [r2] + bx lr + thumb_func_end MOD16_021E0284 + + thumb_func_start MOD16_021E02AC +MOD16_021E02AC: ; 0x021E02AC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_0202212C + ldr r0, [r4, #0xc] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0xc] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E02AC + + thumb_func_start MOD16_021E02C4 +MOD16_021E02C4: ; 0x021E02C4 + mov r2, #0 + mov r1, #3 +_021E02C8: + add r2, r2, #1 + str r1, [r0, #0x44] + add r0, r0, #4 + cmp r2, #0xf + blt _021E02C8 + bx lr + thumb_func_end MOD16_021E02C4 + + thumb_func_start MOD16_021E02D4 +MOD16_021E02D4: ; 0x021E02D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x18 + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x30 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E02F4: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x30 + sub r7, #0x10 + str r0, [sp, #0x18] +_021E0304: + add r0, r5, #0 + add r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x28 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x50 + cmp r4, #2 + blt _021E0304 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #3 + blt _021E02F4 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r3, [sp, #4] + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + ldr r2, _021E0360 ; =MOD16_021E03EC + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #6 + ldr r0, [r0, #0xc] + add r3, #0x10 + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E0360: .word MOD16_021E03EC + thumb_func_end MOD16_021E02D4 + + thumb_func_start MOD16_021E0364 +MOD16_021E0364: ; 0x021E0364 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #3 +_021E0370: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #6 + blt _021E0370 + ldr r0, [r4, #8] + bl FUN_02022144 + ldr r0, [r5, #8] + bl MOD16_021DEBD4 + cmp r0, #5 + bhi _021E03E8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0396: ; jump table + .short _021E03A2 - _021E0396 - 2 ; case 0 + .short _021E03AE - _021E0396 - 2 ; case 1 + .short _021E03BA - _021E0396 - 2 ; case 2 + .short _021E03C6 - _021E0396 - 2 ; case 3 + .short _021E03D2 - _021E0396 - 2 ; case 4 + .short _021E03DE - _021E0396 - 2 ; case 5 +_021E03A2: + ldr r0, [r4, #0x44] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x44] + pop {r3, r4, r5, pc} +_021E03AE: + ldr r0, [r4, #0x48] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x48] + pop {r3, r4, r5, pc} +_021E03BA: + ldr r0, [r4, #0x4c] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x4c] + pop {r3, r4, r5, pc} +_021E03C6: + ldr r0, [r4, #0x50] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x50] + pop {r3, r4, r5, pc} +_021E03D2: + ldr r0, [r4, #0x54] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x54] + pop {r3, r4, r5, pc} +_021E03DE: + ldr r0, [r4, #0x58] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x58] +_021E03E8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E0364 + + thumb_func_start MOD16_021E03EC +MOD16_021E03EC: ; 0x021E03EC + ldr r3, [r2, #4] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x44] + cmp r1, #2 + bne _021E03FC + add r3, #0x84 + str r0, [r3] +_021E03FC: + bx lr + .align 2, 0 + thumb_func_end MOD16_021E03EC + + thumb_func_start MOD16_021E0400 +MOD16_021E0400: ; 0x021E0400 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x28 + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x10 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E0420: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x30 + sub r7, #0x10 + str r0, [sp, #0x18] +_021E0430: + add r0, r5, #0 + add r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x28 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x50 + cmp r4, #2 + blt _021E0430 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #5 + blt _021E0420 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r3, [sp, #4] + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + ldr r2, _021E048C ; =MOD16_021E0544 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0xa + ldr r0, [r0, #0xc] + add r3, #0x10 + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E048C: .word MOD16_021E0544 + thumb_func_end MOD16_021E0400 + + thumb_func_start MOD16_021E0490 +MOD16_021E0490: ; 0x021E0490 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #3 +_021E049C: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #0xa + blt _021E049C + ldr r0, [r4, #8] + bl FUN_02022144 + ldr r0, [r5, #8] + bl MOD16_021DEBF0 + cmp r0, #9 + bhi _021E0540 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E04C2: ; jump table + .short _021E0540 - _021E04C2 - 2 ; case 0 + .short _021E04D6 - _021E04C2 - 2 ; case 1 + .short _021E04E2 - _021E04C2 - 2 ; case 2 + .short _021E04EE - _021E04C2 - 2 ; case 3 + .short _021E04FA - _021E04C2 - 2 ; case 4 + .short _021E0506 - _021E04C2 - 2 ; case 5 + .short _021E0512 - _021E04C2 - 2 ; case 6 + .short _021E051E - _021E04C2 - 2 ; case 7 + .short _021E052A - _021E04C2 - 2 ; case 8 + .short _021E0536 - _021E04C2 - 2 ; case 9 +_021E04D6: + ldr r0, [r4, #0x44] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x44] + pop {r3, r4, r5, pc} +_021E04E2: + ldr r0, [r4, #0x48] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x48] + pop {r3, r4, r5, pc} +_021E04EE: + ldr r0, [r4, #0x4c] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x4c] + pop {r3, r4, r5, pc} +_021E04FA: + ldr r0, [r4, #0x50] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x50] + pop {r3, r4, r5, pc} +_021E0506: + ldr r0, [r4, #0x54] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x54] + pop {r3, r4, r5, pc} +_021E0512: + ldr r0, [r4, #0x58] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x58] + pop {r3, r4, r5, pc} +_021E051E: + ldr r0, [r4, #0x5c] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x5c] + pop {r3, r4, r5, pc} +_021E052A: + ldr r0, [r4, #0x60] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x60] + pop {r3, r4, r5, pc} +_021E0536: + ldr r0, [r4, #0x64] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x64] +_021E0540: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E0490 + + thumb_func_start MOD16_021E0544 +MOD16_021E0544: ; 0x021E0544 + ldr r3, [r2, #4] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x44] + cmp r1, #2 + bne _021E0554 + add r3, #0x84 + str r0, [r3] +_021E0554: + bx lr + .align 2, 0 + thumb_func_end MOD16_021E0544 + + thumb_func_start MOD16_021E0558 +MOD16_021E0558: ; 0x021E0558 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x2c + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x10 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E0578: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x30 + sub r7, #0x10 + str r0, [sp, #0x18] +_021E0588: + add r0, r5, #0 + add r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x28 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x50 + cmp r4, #2 + blt _021E0588 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #5 + blt _021E0578 + mov r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0xa0 + ldr r0, [r0, #0xc] + mov r2, #0xc0 + add r0, #0x28 + mov r3, #8 + bl MOD16_021D7C98 + ldr r3, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r2, _021E05F8 ; =MOD16_021E06CC + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + mov r1, #0xb + str r0, [sp] + ldr r0, [sp, #4] + add r3, #0x10 + ldr r0, [r0, #0xc] + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E05F8: .word MOD16_021E06CC + thumb_func_end MOD16_021E0558 + + thumb_func_start MOD16_021E05FC +MOD16_021E05FC: ; 0x021E05FC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r2, r5, #0 + mov r0, #3 +_021E0608: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #0xb + blt _021E0608 + ldr r0, [r5, #8] + bl FUN_02022144 + ldr r0, [r4, #8] + mov r1, #0 + bl MOD16_021DEC14 + add r1, r0, #0 + add r0, r5, #0 + bl MOD16_021E063C + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEC14 + add r1, r0, #0 + add r0, r5, #0 + bl MOD16_021E063C + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E05FC + + thumb_func_start MOD16_021E063C +MOD16_021E063C: ; 0x021E063C + cmp r1, #9 + bhi _021E06CA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E064C: ; jump table + .short _021E06CA - _021E064C - 2 ; case 0 + .short _021E0660 - _021E064C - 2 ; case 1 + .short _021E066C - _021E064C - 2 ; case 2 + .short _021E0678 - _021E064C - 2 ; case 3 + .short _021E0684 - _021E064C - 2 ; case 4 + .short _021E0690 - _021E064C - 2 ; case 5 + .short _021E069C - _021E064C - 2 ; case 6 + .short _021E06A8 - _021E064C - 2 ; case 7 + .short _021E06B4 - _021E064C - 2 ; case 8 + .short _021E06C0 - _021E064C - 2 ; case 9 +_021E0660: + ldr r1, [r0, #0x44] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x44] + bx lr +_021E066C: + ldr r1, [r0, #0x48] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x48] + bx lr +_021E0678: + ldr r1, [r0, #0x4c] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x4c] + bx lr +_021E0684: + ldr r1, [r0, #0x50] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x50] + bx lr +_021E0690: + ldr r1, [r0, #0x54] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x54] + bx lr +_021E069C: + ldr r1, [r0, #0x58] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x58] + bx lr +_021E06A8: + ldr r1, [r0, #0x5c] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x5c] + bx lr +_021E06B4: + ldr r1, [r0, #0x60] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x60] + bx lr +_021E06C0: + ldr r1, [r0, #0x64] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x64] +_021E06CA: + bx lr + thumb_func_end MOD16_021E063C + + thumb_func_start MOD16_021E06CC +MOD16_021E06CC: ; 0x021E06CC + ldr r2, [r2, #4] + lsl r3, r0, #2 + add r3, r2, r3 + str r1, [r3, #0x44] + cmp r1, #2 + bne _021E06F0 + add r1, r2, #0 + add r1, #0x90 + ldr r1, [r1] + cmp r1, #0 + bne _021E06F6 + add r1, r2, #0 + add r1, #0x84 + str r0, [r1] + mov r0, #1 + add r2, #0x90 + str r0, [r2] + bx lr +_021E06F0: + mov r0, #0 + add r2, #0x90 + str r0, [r2] +_021E06F6: + bx lr + thumb_func_end MOD16_021E06CC + + thumb_func_start MOD16_021E06F8 +MOD16_021E06F8: ; 0x021E06F8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x28 + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x10 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E0718: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x30 + sub r7, #0x10 + str r0, [sp, #0x18] +_021E0728: + add r0, r5, #0 + add r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x28 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x50 + cmp r4, #2 + blt _021E0728 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #4 + blt _021E0718 + mov r0, #0xa8 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0x80 + ldr r0, [r0, #0xc] + mov r2, #0xa0 + add r0, #0x20 + mov r3, #0x58 + bl MOD16_021D7C98 + mov r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0xa0 + ldr r0, [r0, #0xc] + mov r2, #0xc0 + add r0, #0x24 + mov r3, #8 + bl MOD16_021D7C98 + ldr r3, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r2, _021E07AC ; =MOD16_021E07F0 + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + mov r1, #0xa + str r0, [sp] + ldr r0, [sp, #4] + add r3, #0x10 + ldr r0, [r0, #0xc] + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E07AC: .word MOD16_021E07F0 + thumb_func_end MOD16_021E06F8 + + thumb_func_start MOD16_021E07B0 +MOD16_021E07B0: ; 0x021E07B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r2, r5, #0 + mov r0, #3 +_021E07BC: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #0xa + blt _021E07BC + ldr r0, [r5, #8] + bl FUN_02022144 + ldr r0, [r4, #8] + mov r1, #0 + bl MOD16_021DEC14 + add r1, r0, #0 + add r0, r5, #0 + bl MOD16_021E081C + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEC14 + add r1, r0, #0 + add r0, r5, #0 + bl MOD16_021E081C + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E07B0 + + thumb_func_start MOD16_021E07F0 +MOD16_021E07F0: ; 0x021E07F0 + ldr r2, [r2, #4] + lsl r3, r0, #2 + add r3, r2, r3 + str r1, [r3, #0x44] + cmp r1, #2 + bne _021E0814 + add r1, r2, #0 + add r1, #0x90 + ldr r1, [r1] + cmp r1, #0 + bne _021E081A + add r1, r2, #0 + add r1, #0x84 + str r0, [r1] + mov r0, #1 + add r2, #0x90 + str r0, [r2] + bx lr +_021E0814: + mov r0, #0 + add r2, #0x90 + str r0, [r2] +_021E081A: + bx lr + thumb_func_end MOD16_021E07F0 + + thumb_func_start MOD16_021E081C +MOD16_021E081C: ; 0x021E081C + sub r1, #0xa + cmp r1, #7 + bhi _021E089C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E082E: ; jump table + .short _021E083E - _021E082E - 2 ; case 0 + .short _021E084A - _021E082E - 2 ; case 1 + .short _021E0856 - _021E082E - 2 ; case 2 + .short _021E0862 - _021E082E - 2 ; case 3 + .short _021E086E - _021E082E - 2 ; case 4 + .short _021E087A - _021E082E - 2 ; case 5 + .short _021E0886 - _021E082E - 2 ; case 6 + .short _021E0892 - _021E082E - 2 ; case 7 +_021E083E: + ldr r1, [r0, #0x44] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x44] + bx lr +_021E084A: + ldr r1, [r0, #0x48] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x48] + bx lr +_021E0856: + ldr r1, [r0, #0x4c] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x4c] + bx lr +_021E0862: + ldr r1, [r0, #0x50] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x50] + bx lr +_021E086E: + ldr r1, [r0, #0x54] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x54] + bx lr +_021E087A: + ldr r1, [r0, #0x58] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x58] + bx lr +_021E0886: + ldr r1, [r0, #0x5c] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x5c] + bx lr +_021E0892: + ldr r1, [r0, #0x60] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x60] +_021E089C: + bx lr + .align 2, 0 + thumb_func_end MOD16_021E081C + + thumb_func_start MOD16_021E08A0 +MOD16_021E08A0: ; 0x021E08A0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x3c + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x10 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E08C0: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x1c + sub r7, #0x10 + str r0, [sp, #0x18] +_021E08D0: + add r0, r5, #0 + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x18 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x38 + cmp r4, #3 + blt _021E08D0 + ldr r0, [sp, #0x10] + add r6, r6, #3 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #5 + blt _021E08C0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r3, [sp, #4] + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + ldr r2, _021E092C ; =MOD16_021E0A28 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0xf + ldr r0, [r0, #0xc] + add r3, #0x10 + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E092C: .word MOD16_021E0A28 + thumb_func_end MOD16_021E08A0 + + thumb_func_start MOD16_021E0930 +MOD16_021E0930: ; 0x021E0930 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #3 +_021E093C: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #0xf + blt _021E093C + ldr r0, [r4, #8] + bl FUN_02022144 + ldr r0, [r5, #8] + bl MOD16_021DEC38 + cmp r0, #0xe + bhi _021E0A26 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0962: ; jump table + .short _021E0A26 - _021E0962 - 2 ; case 0 + .short _021E0980 - _021E0962 - 2 ; case 1 + .short _021E098C - _021E0962 - 2 ; case 2 + .short _021E0998 - _021E0962 - 2 ; case 3 + .short _021E09A4 - _021E0962 - 2 ; case 4 + .short _021E09B0 - _021E0962 - 2 ; case 5 + .short _021E09BC - _021E0962 - 2 ; case 6 + .short _021E09C8 - _021E0962 - 2 ; case 7 + .short _021E09D4 - _021E0962 - 2 ; case 8 + .short _021E09E0 - _021E0962 - 2 ; case 9 + .short _021E09EC - _021E0962 - 2 ; case 10 + .short _021E09F8 - _021E0962 - 2 ; case 11 + .short _021E0A04 - _021E0962 - 2 ; case 12 + .short _021E0A10 - _021E0962 - 2 ; case 13 + .short _021E0A1C - _021E0962 - 2 ; case 14 +_021E0980: + ldr r0, [r4, #0x60] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x60] + pop {r3, r4, r5, pc} +_021E098C: + ldr r0, [r4, #0x70] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x70] + pop {r3, r4, r5, pc} +_021E0998: + ldr r0, [r4, #0x58] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x58] + pop {r3, r4, r5, pc} +_021E09A4: + ldr r0, [r4, #0x48] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x48] + pop {r3, r4, r5, pc} +_021E09B0: + ldr r0, [r4, #0x74] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x74] + pop {r3, r4, r5, pc} +_021E09BC: + ldr r0, [r4, #0x64] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x64] + pop {r3, r4, r5, pc} +_021E09C8: + ldr r0, [r4, #0x78] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x78] + pop {r3, r4, r5, pc} +_021E09D4: + ldr r0, [r4, #0x54] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x54] + pop {r3, r4, r5, pc} +_021E09E0: + ldr r0, [r4, #0x50] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x50] + pop {r3, r4, r5, pc} +_021E09EC: + ldr r0, [r4, #0x5c] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x5c] + pop {r3, r4, r5, pc} +_021E09F8: + ldr r0, [r4, #0x68] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x68] + pop {r3, r4, r5, pc} +_021E0A04: + ldr r0, [r4, #0x4c] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x4c] + pop {r3, r4, r5, pc} +_021E0A10: + ldr r0, [r4, #0x44] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x44] + pop {r3, r4, r5, pc} +_021E0A1C: + ldr r0, [r4, #0x6c] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x6c] +_021E0A26: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E0930 + + thumb_func_start MOD16_021E0A28 +MOD16_021E0A28: ; 0x021E0A28 + ldr r3, [r2, #4] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x44] + cmp r1, #2 + bne _021E0A38 + add r3, #0x84 + str r0, [r3] +_021E0A38: + bx lr + .align 2, 0 + thumb_func_end MOD16_021E0A28 + + thumb_func_start MOD16_021E0A3C +MOD16_021E0A3C: ; 0x021E0A3C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r1, #0 + add r6, r0, #0 + cmp r4, #5 + bhi _021E0A9A + add r5, r4, r4 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021E0A54: ; jump table + .short _021E0A60 - _021E0A54 - 2 ; case 0 + .short _021E0A6A - _021E0A54 - 2 ; case 1 + .short _021E0A74 - _021E0A54 - 2 ; case 2 + .short _021E0A7E - _021E0A54 - 2 ; case 3 + .short _021E0A88 - _021E0A54 - 2 ; case 4 + .short _021E0A92 - _021E0A54 - 2 ; case 5 +_021E0A60: + mov r2, #0x10 + mov r1, #0xd4 + mov r3, #0x1c + add r0, r2, #0 + b _021E0A9A +_021E0A6A: + mov r1, #0xe0 + mov r2, #0x30 + mov r3, #0x2c + mov r0, #0x10 + b _021E0A9A +_021E0A74: + mov r1, #0xe0 + mov r2, #0x50 + mov r3, #0x2c + mov r0, #0x10 + b _021E0A9A +_021E0A7E: + mov r1, #0xe0 + mov r2, #0x70 + mov r3, #0x2c + mov r0, #0x10 + b _021E0A9A +_021E0A88: + mov r1, #0xe0 + mov r2, #0x90 + mov r3, #0x2c + mov r0, #0x10 + b _021E0A9A +_021E0A92: + mov r1, #0xd4 + mov r2, #0xb0 + mov r3, #0x3c + mov r0, #0x10 +_021E0A9A: + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + str r4, [sp, #0xc] + bl MOD16_021DB590 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E0A3C + + thumb_func_start MOD16_021E0AB0 +MOD16_021E0AB0: ; 0x021E0AB0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0BB4 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + beq _021E0B86 + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E0B94 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #5 + bhi _021E0B76 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0ADE: ; jump table + .short _021E0B60 - _021E0ADE - 2 ; case 0 + .short _021E0AEA - _021E0ADE - 2 ; case 1 + .short _021E0B02 - _021E0ADE - 2 ; case 2 + .short _021E0B18 - _021E0ADE - 2 ; case 3 + .short _021E0B30 - _021E0ADE - 2 ; case 4 + .short _021E0B48 - _021E0ADE - 2 ; case 5 +_021E0AEA: + add r0, r4, #0 + mov r1, #1 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B02: + add r0, r4, #0 + mov r1, #2 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B18: + add r0, r4, #0 + mov r1, #3 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B30: + add r0, r4, #0 + mov r1, #4 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B48: + add r0, r4, #0 + mov r1, #5 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B60: + add r0, r4, #0 + mov r1, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] +_021E0B76: + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x94 + str r1, [r0] + b _021E0B94 +_021E0B86: + add r0, r4, #0 + mov r1, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] +_021E0B94: + ldr r0, _021E0BB4 ; =0x021C48B8 + mov r1, #2 + ldr r0, [r0, #0x48] + tst r0, r1 + beq _021E0BB2 + add r0, r4, #0 + mov r2, #0 + add r0, #0x80 + str r2, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] +_021E0BB2: + pop {r4, pc} + .align 2, 0 +_021E0BB4: .word 0x021C48B8 + thumb_func_end MOD16_021E0AB0 + + thumb_func_start MOD16_021E0BB8 +MOD16_021E0BB8: ; 0x021E0BB8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x7e + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #0x10 + str r0, [sp, #0x1c] + mov r0, #6 + ldr r7, [sp, #0x20] + str r0, [sp, #0x18] +_021E0BDC: + mov r4, #0 + mov r6, #0x30 +_021E0BE0: + ldr r0, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x20] + cmp r0, #5 + bhi _021E0C48 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0BF6: ; jump table + .short _021E0C02 - _021E0BF6 - 2 ; case 0 + .short _021E0C0E - _021E0BF6 - 2 ; case 1 + .short _021E0C1A - _021E0BF6 - 2 ; case 2 + .short _021E0C26 - _021E0BF6 - 2 ; case 3 + .short _021E0C32 - _021E0BF6 - 2 ; case 4 + .short _021E0C3E - _021E0BF6 - 2 ; case 5 +_021E0C02: + cmp r4, #2 + bne _021E0C0A + mov r1, #0 + b _021E0C48 +_021E0C0A: + mov r5, #1 + b _021E0C48 +_021E0C0E: + cmp r4, #2 + bne _021E0C16 + mov r1, #1 + b _021E0C48 +_021E0C16: + mov r5, #0 + b _021E0C48 +_021E0C1A: + cmp r4, #2 + bne _021E0C22 + mov r1, #2 + b _021E0C48 +_021E0C22: + mov r5, #0 + b _021E0C48 +_021E0C26: + cmp r4, #2 + bne _021E0C2E + mov r1, #3 + b _021E0C48 +_021E0C2E: + mov r5, #0 + b _021E0C48 +_021E0C32: + cmp r4, #2 + bne _021E0C3A + mov r1, #4 + b _021E0C48 +_021E0C3A: + mov r5, #1 + b _021E0C48 +_021E0C3E: + cmp r4, #2 + bne _021E0C46 + mov r1, #5 + b _021E0C48 +_021E0C46: + mov r5, #1 +_021E0C48: + cmp r4, #2 + bge _021E0C6E + mov r0, #0x10 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + add r2, r4, r7 + mov r1, #0x1c + mul r1, r2 + ldr r0, [r0, #0x1c] + ldr r2, [sp, #0x1c] + add r0, r0, r1 + add r1, r6, #0 + mov r3, #0x3c + bl MOD16_021DB590 + b _021E0C7E +_021E0C6E: + ldr r0, [sp, #0x10] + add r2, r4, r7 + ldr r3, [r0, #0x1c] + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E0C7E: + add r4, r4, #1 + add r6, #0x50 + cmp r4, #3 + blt _021E0BE0 + ldr r0, [sp, #0x1c] + add r7, r7, #3 + add r0, #0x20 + str r0, [sp, #0x1c] + 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, #6 + blt _021E0BDC + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #3 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E0BB8 + + thumb_func_start MOD16_021E0CB8 +MOD16_021E0CB8: ; 0x021E0CB8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0D8C ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + beq _021E0D82 + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E0D88 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + sub r0, #8 + cmp r0, #5 + bhi _021E0D88 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0CE8: ; jump table + .short _021E0CF4 - _021E0CE8 - 2 ; case 0 + .short _021E0D0C - _021E0CE8 - 2 ; case 1 + .short _021E0D24 - _021E0CE8 - 2 ; case 2 + .short _021E0D3A - _021E0CE8 - 2 ; case 3 + .short _021E0D52 - _021E0CE8 - 2 ; case 4 + .short _021E0D6A - _021E0CE8 - 2 ; case 5 +_021E0CF4: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D0C: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D24: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D3A: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D52: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D6A: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D82: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E0D88: + pop {r4, pc} + nop +_021E0D8C: .word 0x021C48B8 + thumb_func_end MOD16_021E0CB8 + + thumb_func_start MOD16_021E0D90 +MOD16_021E0D90: ; 0x021E0D90 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x7e + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #0x10 + str r0, [sp, #0x1c] + mov r0, #6 + ldr r7, [sp, #0x20] + str r0, [sp, #0x18] +_021E0DB4: + mov r4, #0 + mov r6, #0x30 +_021E0DB8: + ldr r0, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x20] + cmp r0, #5 + bhi _021E0E20 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0DCE: ; jump table + .short _021E0DDA - _021E0DCE - 2 ; case 0 + .short _021E0DE6 - _021E0DCE - 2 ; case 1 + .short _021E0DF2 - _021E0DCE - 2 ; case 2 + .short _021E0DFE - _021E0DCE - 2 ; case 3 + .short _021E0E0A - _021E0DCE - 2 ; case 4 + .short _021E0E16 - _021E0DCE - 2 ; case 5 +_021E0DDA: + cmp r4, #2 + bne _021E0DE2 + mov r1, #0 + b _021E0E20 +_021E0DE2: + mov r5, #0 + b _021E0E20 +_021E0DE6: + cmp r4, #2 + bne _021E0DEE + mov r1, #1 + b _021E0E20 +_021E0DEE: + mov r5, #0 + b _021E0E20 +_021E0DF2: + cmp r4, #2 + bne _021E0DFA + mov r1, #2 + b _021E0E20 +_021E0DFA: + mov r5, #0 + b _021E0E20 +_021E0DFE: + cmp r4, #2 + bne _021E0E06 + mov r1, #3 + b _021E0E20 +_021E0E06: + mov r5, #0 + b _021E0E20 +_021E0E0A: + cmp r4, #2 + bne _021E0E12 + mov r1, #4 + b _021E0E20 +_021E0E12: + mov r5, #0 + b _021E0E20 +_021E0E16: + cmp r4, #2 + bne _021E0E1E + mov r1, #5 + b _021E0E20 +_021E0E1E: + mov r5, #1 +_021E0E20: + cmp r4, #2 + bge _021E0E46 + mov r0, #0x10 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + add r2, r4, r7 + mov r1, #0x1c + mul r1, r2 + ldr r0, [r0, #0x1c] + ldr r2, [sp, #0x1c] + add r0, r0, r1 + add r1, r6, #0 + mov r3, #0x3c + bl MOD16_021DB590 + b _021E0E56 +_021E0E46: + ldr r0, [sp, #0x10] + add r2, r4, r7 + ldr r3, [r0, #0x1c] + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E0E56: + add r4, r4, #1 + add r6, #0x50 + cmp r4, #3 + blt _021E0DB8 + ldr r0, [sp, #0x1c] + add r7, r7, #3 + add r0, #0x20 + str r0, [sp, #0x1c] + 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, #6 + blt _021E0DB4 + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #3 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E0D90 + + thumb_func_start MOD16_021E0E90 +MOD16_021E0E90: ; 0x021E0E90 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0FD8 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + bne _021E0EA0 + b _021E0FD0 +_021E0EA0: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E0EB4 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #0xf + bls _021E0EB6 +_021E0EB4: + b _021E0FD6 +_021E0EB6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0EC2: ; jump table + .short _021E0FD6 - _021E0EC2 - 2 ; case 0 + .short _021E0FD6 - _021E0EC2 - 2 ; case 1 + .short _021E0FD6 - _021E0EC2 - 2 ; case 2 + .short _021E0FD6 - _021E0EC2 - 2 ; case 3 + .short _021E0FD6 - _021E0EC2 - 2 ; case 4 + .short _021E0FD6 - _021E0EC2 - 2 ; case 5 + .short _021E0EE2 - _021E0EC2 - 2 ; case 6 + .short _021E0EFA - _021E0EC2 - 2 ; case 7 + .short _021E0F12 - _021E0EC2 - 2 ; case 8 + .short _021E0F28 - _021E0EC2 - 2 ; case 9 + .short _021E0F40 - _021E0EC2 - 2 ; case 10 + .short _021E0F58 - _021E0EC2 - 2 ; case 11 + .short _021E0F70 - _021E0EC2 - 2 ; case 12 + .short _021E0F88 - _021E0EC2 - 2 ; case 13 + .short _021E0FA0 - _021E0EC2 - 2 ; case 14 + .short _021E0FB8 - _021E0EC2 - 2 ; case 15 +_021E0EE2: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0EFA: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F12: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F28: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F40: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F58: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F70: + add r0, r4, #0 + mov r1, #6 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F88: + add r0, r4, #0 + mov r1, #7 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0FA0: + add r0, r4, #0 + mov r1, #8 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0FB8: + add r0, r4, #0 + mov r1, #9 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0FD0: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E0FD6: + pop {r4, pc} + .align 2, 0 +_021E0FD8: .word 0x021C48B8 + thumb_func_end MOD16_021E0E90 + + thumb_func_start MOD16_021E0FDC +MOD16_021E0FDC: ; 0x021E0FDC + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x7e + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #0x10 + str r0, [sp, #0x24] + mov r0, #6 + str r0, [sp, #0x20] + ldr r0, [sp, #0x28] + str r0, [sp, #0x1c] +_021E1002: + mov r0, #0x30 + mov r4, #0 + str r0, [sp, #0x18] +_021E1008: + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x28] + cmp r0, #5 + bhi _021E1098 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1020: ; jump table + .short _021E102C - _021E1020 - 2 ; case 0 + .short _021E103C - _021E1020 - 2 ; case 1 + .short _021E104C - _021E1020 - 2 ; case 2 + .short _021E105C - _021E1020 - 2 ; case 3 + .short _021E106C - _021E1020 - 2 ; case 4 + .short _021E107C - _021E1020 - 2 ; case 5 +_021E102C: + cmp r4, #2 + bne _021E1034 + mov r1, #0 + b _021E1098 +_021E1034: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E103C: + cmp r4, #2 + bne _021E1044 + mov r1, #1 + b _021E1098 +_021E1044: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E104C: + cmp r4, #2 + bne _021E1054 + mov r1, #2 + b _021E1098 +_021E1054: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E105C: + cmp r4, #2 + bne _021E1064 + mov r1, #3 + b _021E1098 +_021E1064: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E106C: + cmp r4, #2 + bne _021E1074 + mov r1, #4 + b _021E1098 +_021E1074: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E107C: + cmp r4, #2 + bne _021E1084 + mov r1, #5 + b _021E1098 +_021E1084: + cmp r4, #0 + bne _021E1092 + mov r7, #0x10 + mov r5, #0 + add r6, r7, #0 + mov r3, #0x18 + b _021E1098 +_021E1092: + mov r5, #1 + mov r7, #0x3c + mov r6, #0x10 +_021E1098: + cmp r4, #2 + bge _021E10BE + str r6, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + ldr r2, [r0, #0x1c] + ldr r0, [sp, #0x1c] + add r1, r4, r0 + mov r0, #0x1c + mul r0, r1 + add r0, r2, r0 + add r1, r3, #0 + ldr r2, [sp, #0x24] + add r3, r7, #0 + bl MOD16_021DB590 + b _021E10D0 +_021E10BE: + ldr r0, [sp, #0x10] + ldr r3, [r0, #0x1c] + ldr r0, [sp, #0x1c] + add r2, r4, r0 + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E10D0: + ldr r0, [sp, #0x18] + add r4, r4, #1 + add r0, #0x50 + str r0, [sp, #0x18] + cmp r4, #3 + blt _021E1008 + ldr r0, [sp, #0x24] + add r0, #0x20 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r0, r0, #2 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r0, r0, #3 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #6 + blt _021E1002 + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #3 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E0FDC + + thumb_func_start MOD16_021E1110 +MOD16_021E1110: ; 0x021E1110 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E1278 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + bne _021E1120 + b _021E1270 +_021E1120: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E1134 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #0x10 + bls _021E1136 +_021E1134: + b _021E1276 +_021E1136: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1142: ; jump table + .short _021E1276 - _021E1142 - 2 ; case 0 + .short _021E1276 - _021E1142 - 2 ; case 1 + .short _021E1276 - _021E1142 - 2 ; case 2 + .short _021E1276 - _021E1142 - 2 ; case 3 + .short _021E1276 - _021E1142 - 2 ; case 4 + .short _021E1276 - _021E1142 - 2 ; case 5 + .short _021E1164 - _021E1142 - 2 ; case 6 + .short _021E117C - _021E1142 - 2 ; case 7 + .short _021E1194 - _021E1142 - 2 ; case 8 + .short _021E11AA - _021E1142 - 2 ; case 9 + .short _021E11C2 - _021E1142 - 2 ; case 10 + .short _021E11DA - _021E1142 - 2 ; case 11 + .short _021E11F2 - _021E1142 - 2 ; case 12 + .short _021E120A - _021E1142 - 2 ; case 13 + .short _021E1222 - _021E1142 - 2 ; case 14 + .short _021E123A - _021E1142 - 2 ; case 15 + .short _021E1258 - _021E1142 - 2 ; case 16 +_021E1164: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E117C: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1194: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E11AA: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E11C2: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E11DA: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E11F2: + add r0, r4, #0 + mov r1, #6 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E120A: + add r0, r4, #0 + mov r1, #7 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1222: + add r0, r4, #0 + mov r1, #8 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E123A: + add r0, r4, #0 + mov r1, #9 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + mov r0, #1 + add r4, #0x8c + str r0, [r4] + pop {r4, pc} +_021E1258: + add r0, r4, #0 + mov r1, #0xa + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1270: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E1276: + pop {r4, pc} + .align 2, 0 +_021E1278: .word 0x021C48B8 + thumb_func_end MOD16_021E1110 + + thumb_func_start MOD16_021E127C +MOD16_021E127C: ; 0x021E127C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x7e + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x2c] + mov r0, #0x10 + str r0, [sp, #0x24] + mov r0, #6 + str r0, [sp, #0x20] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x1c] +_021E12A2: + mov r0, #0x30 + mov r4, #0 + str r0, [sp, #0x18] +_021E12A8: + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x2c] + cmp r0, #5 + bhi _021E1364 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E12C0: ; jump table + .short _021E12CC - _021E12C0 - 2 ; case 0 + .short _021E12E0 - _021E12C0 - 2 ; case 1 + .short _021E12F4 - _021E12C0 - 2 ; case 2 + .short _021E1308 - _021E12C0 - 2 ; case 3 + .short _021E131C - _021E12C0 - 2 ; case 4 + .short _021E1340 - _021E12C0 - 2 ; case 5 +_021E12CC: + cmp r4, #2 + bne _021E12D4 + mov r1, #0 + b _021E1364 +_021E12D4: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E12E0: + cmp r4, #2 + bne _021E12E8 + mov r1, #1 + b _021E1364 +_021E12E8: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E12F4: + cmp r4, #2 + bne _021E12FC + mov r1, #2 + b _021E1364 +_021E12FC: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E1308: + cmp r4, #2 + bne _021E1310 + mov r1, #3 + b _021E1364 +_021E1310: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E131C: + cmp r4, #2 + bne _021E1324 + mov r1, #4 + b _021E1364 +_021E1324: + cmp r4, #0 + bne _021E1334 + mov r0, #0x3c + mov r6, #1 + mov r5, #2 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E1334: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E1340: + cmp r4, #2 + bne _021E1348 + mov r1, #5 + b _021E1364 +_021E1348: + cmp r4, #0 + bne _021E135A + mov r0, #0x10 + mov r6, #0 + add r5, r6, #0 + str r0, [sp, #0x28] + add r7, r0, #0 + mov r3, #0x18 + b _021E1364 +_021E135A: + mov r6, #1 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 +_021E1364: + cmp r4, #2 + bge _021E138A + str r7, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + ldr r2, [r0, #0x1c] + ldr r0, [sp, #0x1c] + add r1, r4, r0 + mov r0, #0x1c + mul r0, r1 + add r0, r2, r0 + add r1, r3, #0 + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl MOD16_021DB590 + b _021E139C +_021E138A: + ldr r0, [sp, #0x10] + ldr r3, [r0, #0x1c] + ldr r0, [sp, #0x1c] + add r2, r4, r0 + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E139C: + ldr r0, [sp, #0x18] + add r4, r4, #1 + add r0, #0x50 + str r0, [sp, #0x18] + cmp r4, #3 + bge _021E13AA + b _021E12A8 +_021E13AA: + ldr r0, [sp, #0x24] + add r0, #0x20 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r0, r0, #2 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r0, r0, #3 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + cmp r0, #6 + bge _021E13C8 + b _021E12A2 +_021E13C8: + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #3 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E127C + + thumb_func_start MOD16_021E13E0 +MOD16_021E13E0: ; 0x021E13E0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E1530 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + bne _021E13F0 + b _021E1528 +_021E13F0: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E1404 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #0x10 + bls _021E1406 +_021E1404: + b _021E152E +_021E1406: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1412: ; jump table + .short _021E152E - _021E1412 - 2 ; case 0 + .short _021E152E - _021E1412 - 2 ; case 1 + .short _021E152E - _021E1412 - 2 ; case 2 + .short _021E152E - _021E1412 - 2 ; case 3 + .short _021E152E - _021E1412 - 2 ; case 4 + .short _021E152E - _021E1412 - 2 ; case 5 + .short _021E1434 - _021E1412 - 2 ; case 6 + .short _021E144C - _021E1412 - 2 ; case 7 + .short _021E1464 - _021E1412 - 2 ; case 8 + .short _021E147A - _021E1412 - 2 ; case 9 + .short _021E1492 - _021E1412 - 2 ; case 10 + .short _021E14AA - _021E1412 - 2 ; case 11 + .short _021E14C2 - _021E1412 - 2 ; case 12 + .short _021E14DA - _021E1412 - 2 ; case 13 + .short _021E152E - _021E1412 - 2 ; case 14 + .short _021E14F2 - _021E1412 - 2 ; case 15 + .short _021E1510 - _021E1412 - 2 ; case 16 +_021E1434: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E144C: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1464: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E147A: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1492: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E14AA: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E14C2: + add r0, r4, #0 + mov r1, #6 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E14DA: + add r0, r4, #0 + mov r1, #7 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E14F2: + add r0, r4, #0 + mov r1, #8 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + mov r0, #1 + add r4, #0x8c + str r0, [r4] + pop {r4, pc} +_021E1510: + add r0, r4, #0 + mov r1, #9 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1528: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E152E: + pop {r4, pc} + .align 2, 0 +_021E1530: .word 0x021C48B8 + thumb_func_end MOD16_021E13E0 + + thumb_func_start MOD16_021E1534 +MOD16_021E1534: ; 0x021E1534 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x2a + lsl r1, r1, #4 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #0x10 + str r0, [sp, #0x1c] + mov r0, #6 + ldr r7, [sp, #0x20] + str r0, [sp, #0x18] +_021E1558: + mov r4, #0 + mov r6, #0x1c +_021E155C: + ldr r0, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x20] + cmp r0, #5 + bhi _021E15C4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1572: ; jump table + .short _021E157E - _021E1572 - 2 ; case 0 + .short _021E158A - _021E1572 - 2 ; case 1 + .short _021E1596 - _021E1572 - 2 ; case 2 + .short _021E15A2 - _021E1572 - 2 ; case 3 + .short _021E15AE - _021E1572 - 2 ; case 4 + .short _021E15BA - _021E1572 - 2 ; case 5 +_021E157E: + cmp r4, #3 + bne _021E1586 + mov r1, #0 + b _021E15C4 +_021E1586: + mov r5, #0 + b _021E15C4 +_021E158A: + cmp r4, #3 + bne _021E1592 + mov r1, #1 + b _021E15C4 +_021E1592: + mov r5, #0 + b _021E15C4 +_021E1596: + cmp r4, #3 + bne _021E159E + mov r1, #2 + b _021E15C4 +_021E159E: + mov r5, #0 + b _021E15C4 +_021E15A2: + cmp r4, #3 + bne _021E15AA + mov r1, #3 + b _021E15C4 +_021E15AA: + mov r5, #0 + b _021E15C4 +_021E15AE: + cmp r4, #3 + bne _021E15B6 + mov r1, #4 + b _021E15C4 +_021E15B6: + mov r5, #0 + b _021E15C4 +_021E15BA: + cmp r4, #3 + bne _021E15C2 + mov r1, #5 + b _021E15C4 +_021E15C2: + mov r5, #1 +_021E15C4: + cmp r4, #3 + bge _021E15EA + mov r0, #0x14 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + add r2, r4, r7 + mov r1, #0x1c + mul r1, r2 + ldr r0, [r0, #0x1c] + ldr r2, [sp, #0x1c] + add r0, r0, r1 + add r1, r6, #0 + mov r3, #0x20 + bl MOD16_021DB590 + b _021E15FA +_021E15EA: + ldr r0, [sp, #0x10] + add r2, r4, r7 + ldr r3, [r0, #0x1c] + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E15FA: + add r4, r4, #1 + add r6, #0x38 + cmp r4, #4 + blt _021E155C + ldr r0, [sp, #0x1c] + add r7, r7, #4 + add r0, #0x20 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #3 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #6 + blt _021E1558 + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #4 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E1534 + + thumb_func_start MOD16_021E1634 +MOD16_021E1634: ; 0x021E1634 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E1800 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + bne _021E1644 + b _021E17F6 +_021E1644: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E1658 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #0x14 + bls _021E165A +_021E1658: + b _021E17FC +_021E165A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1666: ; jump table + .short _021E17FC - _021E1666 - 2 ; case 0 + .short _021E17FC - _021E1666 - 2 ; case 1 + .short _021E17FC - _021E1666 - 2 ; case 2 + .short _021E17FC - _021E1666 - 2 ; case 3 + .short _021E17FC - _021E1666 - 2 ; case 4 + .short _021E17FC - _021E1666 - 2 ; case 5 + .short _021E1690 - _021E1666 - 2 ; case 6 + .short _021E16A8 - _021E1666 - 2 ; case 7 + .short _021E16C0 - _021E1666 - 2 ; case 8 + .short _021E16D6 - _021E1666 - 2 ; case 9 + .short _021E16EE - _021E1666 - 2 ; case 10 + .short _021E1706 - _021E1666 - 2 ; case 11 + .short _021E171E - _021E1666 - 2 ; case 12 + .short _021E1736 - _021E1666 - 2 ; case 13 + .short _021E174E - _021E1666 - 2 ; case 14 + .short _021E1766 - _021E1666 - 2 ; case 15 + .short _021E177E - _021E1666 - 2 ; case 16 + .short _021E1796 - _021E1666 - 2 ; case 17 + .short _021E17AE - _021E1666 - 2 ; case 18 + .short _021E17C6 - _021E1666 - 2 ; case 19 + .short _021E17DE - _021E1666 - 2 ; case 20 +_021E1690: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E16A8: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E16C0: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E16D6: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E16EE: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1706: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E171E: + add r0, r4, #0 + mov r1, #6 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1736: + add r0, r4, #0 + mov r1, #7 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E174E: + add r0, r4, #0 + mov r1, #8 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1766: + add r0, r4, #0 + mov r1, #9 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E177E: + add r0, r4, #0 + mov r1, #0xa + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1796: + add r0, r4, #0 + mov r1, #0xb + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E17AE: + add r0, r4, #0 + mov r1, #0xc + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E17C6: + add r0, r4, #0 + mov r1, #0xd + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E17DE: + add r0, r4, #0 + mov r1, #0xe + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E17F6: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E17FC: + pop {r4, pc} + nop +_021E1800: .word 0x021C48B8 + thumb_func_end MOD16_021E1634 + + thumb_func_start MOD16_021E1804 +MOD16_021E1804: ; 0x021E1804 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E1890 ; =0x021C48B8 + add r4, r1, #0 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021E1826 + ldr r0, [r5, #0x18] + mov r1, #0 + mov r2, #1 + bl MOD16_021DB4CC + add r0, r5, #0 + mov r1, #1 + add r0, #0x8c + str r1, [r0] +_021E1826: + ldr r0, _021E1890 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x20 + tst r0, r1 + beq _021E1842 + mov r1, #0 + ldr r0, [r5, #0x18] + sub r2, r1, #1 + bl MOD16_021DB4CC + add r0, r5, #0 + mov r1, #1 + add r0, #0x8c + str r1, [r0] +_021E1842: + ldr r0, _021E1890 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x40 + tst r0, r1 + beq _021E185E + mov r1, #1 + ldr r0, [r5, #0x18] + sub r2, r1, #2 + bl MOD16_021DB4CC + add r0, r5, #0 + mov r1, #1 + add r0, #0x8c + str r1, [r0] +_021E185E: + ldr r0, _021E1890 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x80 + tst r0, r1 + beq _021E187A + mov r1, #1 + ldr r0, [r5, #0x18] + add r2, r1, #0 + bl MOD16_021DB4CC + add r0, r5, #0 + mov r1, #1 + add r0, #0x8c + str r1, [r0] +_021E187A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E0AB0 + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E1894 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E1890: .word 0x021C48B8 + thumb_func_end MOD16_021E1804 + + thumb_func_start MOD16_021E1894 +MOD16_021E1894: ; 0x021E1894 + push {r3, lr} + cmp r2, #3 + bhi _021E18CE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E18A6: ; jump table + .short _021E18AE - _021E18A6 - 2 ; case 0 + .short _021E18B4 - _021E18A6 - 2 ; case 1 + .short _021E18BA - _021E18A6 - 2 ; case 2 + .short _021E18CA - _021E18A6 - 2 ; case 3 +_021E18AE: + bl MOD16_021E0CB8 + pop {r3, pc} +_021E18B4: + bl MOD16_021E0E90 + pop {r3, pc} +_021E18BA: + cmp r3, #0 + bne _021E18C4 + bl MOD16_021E1110 + pop {r3, pc} +_021E18C4: + bl MOD16_021E13E0 + pop {r3, pc} +_021E18CA: + bl MOD16_021E1634 +_021E18CE: + pop {r3, pc} + thumb_func_end MOD16_021E1894 + + thumb_func_start MOD16_021E18D0 +MOD16_021E18D0: ; 0x021E18D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_02016A18 + ldr r0, [r4, #0x18] + bl MOD16_021DB4A8 + mov r0, #0 + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + pop {r4, pc} + thumb_func_end MOD16_021E18D0 + + thumb_func_start MOD16_021E18E8 +MOD16_021E18E8: ; 0x021E18E8 + push {r3, lr} + ldr r2, [r0, #0x24] + ldr r3, [r0, #0x28] + bl MOD16_021E18F4 + pop {r3, pc} + thumb_func_end MOD16_021E18E8 + + thumb_func_start MOD16_021E18F4 +MOD16_021E18F4: ; 0x021E18F4 + push {r3, lr} + cmp r2, #3 + bhi _021E192E + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E1906: ; jump table + .short _021E190E - _021E1906 - 2 ; case 0 + .short _021E1914 - _021E1906 - 2 ; case 1 + .short _021E191A - _021E1906 - 2 ; case 2 + .short _021E192A - _021E1906 - 2 ; case 3 +_021E190E: + bl MOD16_021E0BB8 + pop {r3, pc} +_021E1914: + bl MOD16_021E0D90 + pop {r3, pc} +_021E191A: + cmp r3, #0 + bne _021E1924 + bl MOD16_021E0FDC + pop {r3, pc} +_021E1924: + bl MOD16_021E127C + pop {r3, pc} +_021E192A: + bl MOD16_021E1534 +_021E192E: + pop {r3, pc} + thumb_func_end MOD16_021E18F4 + + thumb_func_start MOD16_021E1930 +MOD16_021E1930: ; 0x021E1930 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + cmp r0, #3 + bhi _021E195E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1946: ; jump table + .short _021E194E - _021E1946 - 2 ; case 0 + .short _021E1952 - _021E1946 - 2 ; case 1 + .short _021E1956 - _021E1946 - 2 ; case 2 + .short _021E195A - _021E1946 - 2 ; case 3 +_021E194E: + mov r4, #1 + b _021E1962 +_021E1952: + mov r4, #2 + b _021E1962 +_021E1956: + mov r4, #3 + b _021E1962 +_021E195A: + mov r4, #4 + b _021E1962 +_021E195E: + bl ErrorHandling +_021E1962: + ldr r0, [r5, #0x18] + mov r1, #4 + add r2, r4, #0 + bl MOD16_021DB4CC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E1930 + + thumb_func_start MOD16_021E1970 +MOD16_021E1970: ; 0x021E1970 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E18D0 + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E18F4 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E1970 + + thumb_func_start MOD16_021E1988 +MOD16_021E1988: ; 0x021E1988 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r0, [r4, #0x18] + ldr r1, [r5] + add r6, r2, #0 + bl MOD16_021D8B48 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E19A4 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E1988 + + thumb_func_start MOD16_021E19A4 +MOD16_021E19A4: ; 0x021E19A4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r2, #4] + add r4, r1, #0 + bl MOD16_021D9FB8 + cmp r0, #1 + bne _021E19D2 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021E19EC + cmp r0, #0 + beq _021E19C8 + ldr r0, [r4, #0x18] + ldr r1, [r5] + bl MOD16_021D8B48 +_021E19C8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E19DC + pop {r3, r4, r5, pc} +_021E19D2: + add r0, r5, #0 + mov r1, #0 + bl MOD16_021E19EC + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E19A4 + + thumb_func_start MOD16_021E19DC +MOD16_021E19DC: ; 0x021E19DC + ldr r3, _021E19E8 ; =MOD16_021D8AD4 + add r2, r0, #0 + ldr r0, [r1, #0x18] + ldr r1, [r2] + bx r3 + nop +_021E19E8: .word MOD16_021D8AD4 + thumb_func_end MOD16_021E19DC + + thumb_func_start MOD16_021E19EC +MOD16_021E19EC: ; 0x021E19EC + push {r3, r4, r5, lr} + ldr r4, [r0] + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r4, r0 + add r5, r1, #0 + bl MOD16_021D8B30 + cmp r5, r0 + beq _021E1A10 + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r5, #0 + bl MOD16_021D8B14 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E1A10: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E19EC + + thumb_func_start MOD16_021E1A14 +MOD16_021E1A14: ; 0x021E1A14 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E1AD4 ; =0x00003EFD + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x7d + mov r3, #1 + bl FUN_020091E0 + add r1, r5, #0 + add r1, #0xe4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + bl FUN_02009B04 + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E1AD8 ; =0x00003E83 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + add r1, r5, #0 + add r1, #0xe8 + str r0, [r1] + add r0, r5, #0 + add r0, #0xe8 + ldr r0, [r0] + bl FUN_02009D68 + add r0, r5, #0 + add r0, #0xe8 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E1ADC ; =0x00003EFE + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x7e + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xec + str r0, [r1] + ldr r0, _021E1AE0 ; =0x00003EFC + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x7c + mov r3, #1 + bl FUN_02009358 + add r5, #0xf0 + str r0, [r5] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1AD4: .word 0x00003EFD +_021E1AD8: .word 0x00003E83 +_021E1ADC: .word 0x00003EFE +_021E1AE0: .word 0x00003EFC + thumb_func_end MOD16_021E1A14 + + thumb_func_start MOD16_021E1AE4 +MOD16_021E1AE4: ; 0x021E1AE4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xe4 + ldr r0, [r0] + ldr r4, [r1] + bl FUN_02009C0C + add r0, r5, #0 + add r0, #0xe8 + ldr r0, [r0] + bl FUN_02009E04 + mov r0, #5 + add r1, r5, #0 + lsl r0, r0, #6 + add r1, #0xe4 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x51 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xe8 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x52 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xec + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + add r5, #0xf0 + ldr r0, [r4, r0] + ldr r1, [r5] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E1AE4 + + thumb_func_start MOD16_021E1B3C +MOD16_021E1B3C: ; 0x021E1B3C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + mov r0, #0x3f + lsl r0, r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x80 + mov r3, #1 + bl FUN_020091E0 + add r1, r5, #0 + add r1, #0xf4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xf4 + ldr r0, [r0] + bl FUN_02009B04 + add r0, r5, #0 + add r0, #0xf4 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E1BC8 ; =0x00003F01 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x81 + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xfc + str r0, [r1] + ldr r0, _021E1BCC ; =0x00003EFF + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x7f + mov r3, #1 + bl FUN_02009358 + mov r1, #1 + lsl r1, r1, #8 + str r0, [r5, r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E1BC8: .word 0x00003F01 +_021E1BCC: .word 0x00003EFF + thumb_func_end MOD16_021E1B3C + + thumb_func_start MOD16_021E1BD0 +MOD16_021E1BD0: ; 0x021E1BD0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xf4 + ldr r0, [r0] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + add r1, r5, #0 + lsl r0, r0, #6 + add r1, #0xf4 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x52 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xfc + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r1, #0x53 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, #0x4c + ldr r1, [r5, r1] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E1BD0 + + thumb_func_start MOD16_021E1C10 +MOD16_021E1C10: ; 0x021E1C10 + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E1C90 ; =0x00003EFC + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x79 + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x2c + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x20 + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + add r0, r5, #0 + str r6, [sp, #0x48] + bl MOD16_021E1D60 + mov r3, #0x41 + lsl r3, r3, #2 + ldr r2, [r5, r3] + add r3, r3, #4 + ldr r3, [r5, r3] + add r0, r5, #0 + add r1, sp, #0x2c + bl MOD16_021E1D24 + add sp, #0x70 + pop {r4, r5, r6, pc} + nop +_021E1C90: .word 0x00003EFC + thumb_func_end MOD16_021E1C10 + + thumb_func_start MOD16_021E1C94 +MOD16_021E1C94: ; 0x021E1C94 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E1E14 + add r0, r4, #0 + bl MOD16_021E1E2C + pop {r4, pc} + thumb_func_end MOD16_021E1C94 + + thumb_func_start MOD16_021E1CA4 +MOD16_021E1CA4: ; 0x021E1CA4 + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E1D20 ; =0x00003EFC + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x79 + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x20 + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + add r0, r5, #0 + str r6, [sp, #0x48] + bl MOD16_021E1E2C + mov r3, #0x41 + lsl r3, r3, #2 + ldr r2, [r5, r3] + add r3, r3, #4 + ldr r3, [r5, r3] + add r0, r5, #0 + add r1, sp, #0x2c + bl MOD16_021E1D24 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E1D20: .word 0x00003EFC + thumb_func_end MOD16_021E1CA4 + + thumb_func_start MOD16_021E1D24 +MOD16_021E1D24: ; 0x021E1D24 + push {r3, lr} + cmp r2, #3 + bhi _021E1D5E + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E1D36: ; jump table + .short _021E1D3E - _021E1D36 - 2 ; case 0 + .short _021E1D44 - _021E1D36 - 2 ; case 1 + .short _021E1D4A - _021E1D36 - 2 ; case 2 + .short _021E1D5A - _021E1D36 - 2 ; case 3 +_021E1D3E: + bl MOD16_021E1E4C + pop {r3, pc} +_021E1D44: + bl MOD16_021E1EBC + pop {r3, pc} +_021E1D4A: + cmp r3, #0 + bne _021E1D54 + bl MOD16_021E1F2C + pop {r3, pc} +_021E1D54: + bl MOD16_021E1FC0 + pop {r3, pc} +_021E1D5A: + bl MOD16_021E207C +_021E1D5E: + pop {r3, pc} + thumb_func_end MOD16_021E1D24 + + thumb_func_start MOD16_021E1D60 +MOD16_021E1D60: ; 0x021E1D60 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0xe + add r6, r0, #0 + add r4, r1, #0 + mov r5, #0 + lsl r7, r7, #0x10 +_021E1D6C: + cmp r5, #5 + bhi _021E1DCA + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1D7C: ; jump table + .short _021E1D88 - _021E1D7C - 2 ; case 0 + .short _021E1D96 - _021E1D7C - 2 ; case 1 + .short _021E1DA0 - _021E1D7C - 2 ; case 2 + .short _021E1DAA - _021E1D7C - 2 ; case 3 + .short _021E1DB4 - _021E1D7C - 2 ; case 4 + .short _021E1DBE - _021E1D7C - 2 ; case 5 +_021E1D88: + mov r0, #0xd + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + mov r0, #0x35 + lsl r0, r0, #0xe + str r0, [r4, #8] + b _021E1DCA +_021E1D96: + mov r0, #0xf + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + str r7, [r4, #8] + b _021E1DCA +_021E1DA0: + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + str r7, [r4, #8] + b _021E1DCA +_021E1DAA: + mov r0, #0x13 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + str r7, [r4, #8] + b _021E1DCA +_021E1DB4: + mov r0, #0x15 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + str r7, [r4, #8] + b _021E1DCA +_021E1DBE: + mov r0, #0x17 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + mov r0, #0x35 + lsl r0, r0, #0xe + str r0, [r4, #8] +_021E1DCA: + add r0, r4, #0 + bl FUN_0201FF84 + str r0, [r6] + cmp r5, #5 + bhi _021E1E0A + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1DE2: ; jump table + .short _021E1DEE - _021E1DE2 - 2 ; case 0 + .short _021E1DF8 - _021E1DE2 - 2 ; case 1 + .short _021E1DF8 - _021E1DE2 - 2 ; case 2 + .short _021E1DF8 - _021E1DE2 - 2 ; case 3 + .short _021E1DF8 - _021E1DE2 - 2 ; case 4 + .short _021E1E02 - _021E1DE2 - 2 ; case 5 +_021E1DEE: + ldr r0, [r6] + mov r1, #3 + bl FUN_02020130 + b _021E1E0A +_021E1DF8: + ldr r0, [r6] + mov r1, #2 + bl FUN_02020130 + b _021E1E0A +_021E1E02: + ldr r0, [r6] + mov r1, #1 + bl FUN_02020130 +_021E1E0A: + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #6 + blt _021E1D6C + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E1D60 + + thumb_func_start MOD16_021E1E14 +MOD16_021E1E14: ; 0x021E1E14 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E1E1A: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021E1E1A + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E1E14 + + thumb_func_start MOD16_021E1E2C +MOD16_021E1E2C: ; 0x021E1E2C + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E1E34: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E1E40 + bl FUN_0201FFC8 + str r6, [r5, #0x30] +_021E1E40: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E1E34 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E1E2C + + thumb_func_start MOD16_021E1E4C +MOD16_021E1E4C: ; 0x021E1E4C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x30 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E1E64: + ldr r0, [sp, #8] + mov r4, #0x30 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E1E7E: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x50 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #2 + blt _021E1E7E + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #3 + blt _021E1E64 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E1E4C + + thumb_func_start MOD16_021E1EBC +MOD16_021E1EBC: ; 0x021E1EBC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x10 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E1ED4: + ldr r0, [sp, #8] + mov r4, #0x30 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E1EEE: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x50 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #2 + blt _021E1EEE + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #5 + blt _021E1ED4 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E1EBC + + thumb_func_start MOD16_021E1F2C +MOD16_021E1F2C: ; 0x021E1F2C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x10 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E1F44: + ldr r0, [sp, #8] + mov r4, #0x30 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E1F5E: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x50 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #2 + blt _021E1F5E + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #5 + blt _021E1F44 + mov r0, #0xb0 + mov r2, #0x18 + str r0, [r6, #0xc] + lsl r0, r2, #0xc + str r0, [r6, #8] + ldr r0, [r6, #0xc] + lsl r1, r0, #0xc + lsl r0, r2, #0xf + add r0, r1, r0 + str r0, [r6, #0xc] + add r0, r6, #0 + bl FUN_0201FF84 + ldr r1, [sp] + str r0, [r1, #0x58] + mov r1, #5 + bl FUN_02020130 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E1F2C + + thumb_func_start MOD16_021E1FC0 +MOD16_021E1FC0: ; 0x021E1FC0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x10 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E1FD8: + ldr r0, [sp, #8] + mov r4, #0x30 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E1FF2: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x50 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #2 + blt _021E1FF2 + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #4 + blt _021E1FD8 + mov r0, #0x90 + str r0, [r6, #0xc] + mov r0, #0x80 + lsl r0, r0, #0xc + str r0, [r6, #8] + ldr r0, [r6, #0xc] + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + add r0, r6, #0 + bl FUN_0201FF84 + ldr r1, [sp] + str r0, [r1, #0x50] + mov r1, #0 + bl FUN_02020130 + mov r0, #0xb0 + mov r2, #0x18 + str r0, [r6, #0xc] + lsl r0, r2, #0xc + str r0, [r6, #8] + ldr r0, [r6, #0xc] + lsl r1, r0, #0xc + lsl r0, r2, #0xf + add r0, r1, r0 + str r0, [r6, #0xc] + add r0, r6, #0 + bl FUN_0201FF84 + ldr r1, [sp] + str r0, [r1, #0x54] + mov r1, #4 + bl FUN_02020130 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E1FC0 + + thumb_func_start MOD16_021E207C +MOD16_021E207C: ; 0x021E207C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x10 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E2094: + ldr r0, [sp, #8] + mov r4, #0x1c + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E20AE: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #6 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x38 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #3 + blt _021E20AE + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #3 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #5 + blt _021E2094 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E207C + + thumb_func_start MOD16_021E20EC +MOD16_021E20EC: ; 0x021E20EC + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + ldr r4, [r1] + ldr r3, _021E22A4 ; =0x00003EFF + str r0, [sp, #0x2c] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + add r5, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x58 + sub r2, #0x7c + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x38] + add r0, sp, #0x58 + str r0, [sp, #0x3c] + mov r0, #0xf + str r0, [sp, #0x4c] + mov r0, #2 + str r0, [sp, #0x50] + mov r0, #0 + str r0, [sp, #0x34] + mov r0, #0x10 + ldr r7, [sp, #0x34] + str r5, [sp, #0x54] + str r0, [sp, #0x30] +_021E2156: + ldr r0, [sp, #0x30] + mov r6, #0 + str r0, [sp, #0x44] + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0x44] + ldr r0, [sp, #0x2c] + lsl r1, r7, #2 + mov r5, #0x1c + add r4, r0, r1 +_021E216E: + str r5, [sp, #0x40] + lsl r0, r5, #0xc + str r0, [sp, #0x40] + add r0, sp, #0x38 + bl FUN_0201FF84 + add r1, r4, #0 + add r1, #0xa8 + str r0, [r1] + add r0, r6, r7 + cmp r0, #0xe + bhi _021E2280 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2192: ; jump table + .short _021E21B0 - _021E2192 - 2 ; case 0 + .short _021E21BE - _021E2192 - 2 ; case 1 + .short _021E21CC - _021E2192 - 2 ; case 2 + .short _021E21DA - _021E2192 - 2 ; case 3 + .short _021E21E8 - _021E2192 - 2 ; case 4 + .short _021E21F6 - _021E2192 - 2 ; case 5 + .short _021E2204 - _021E2192 - 2 ; case 6 + .short _021E2212 - _021E2192 - 2 ; case 7 + .short _021E2220 - _021E2192 - 2 ; case 8 + .short _021E222E - _021E2192 - 2 ; case 9 + .short _021E223C - _021E2192 - 2 ; case 10 + .short _021E224A - _021E2192 - 2 ; case 11 + .short _021E2258 - _021E2192 - 2 ; case 12 + .short _021E2266 - _021E2192 - 2 ; case 13 + .short _021E2274 - _021E2192 - 2 ; case 14 +_021E21B0: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl FUN_02020130 + b _021E2280 +_021E21BE: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #5 + bl FUN_02020130 + b _021E2280 +_021E21CC: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0xa + bl FUN_02020130 + b _021E2280 +_021E21DA: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #1 + bl FUN_02020130 + b _021E2280 +_021E21E8: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #6 + bl FUN_02020130 + b _021E2280 +_021E21F6: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0xb + bl FUN_02020130 + b _021E2280 +_021E2204: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #2 + bl FUN_02020130 + b _021E2280 +_021E2212: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #9 + bl FUN_02020130 + b _021E2280 +_021E2220: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0xc + bl FUN_02020130 + b _021E2280 +_021E222E: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #3 + bl FUN_02020130 + b _021E2280 +_021E223C: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #8 + bl FUN_02020130 + b _021E2280 +_021E224A: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0xd + bl FUN_02020130 + b _021E2280 +_021E2258: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #4 + bl FUN_02020130 + b _021E2280 +_021E2266: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #7 + bl FUN_02020130 + b _021E2280 +_021E2274: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl FUN_020200A0 +_021E2280: + add r6, r6, #1 + add r5, #0x38 + add r4, r4, #4 + cmp r6, #3 + bge _021E228C + b _021E216E +_021E228C: + ldr r0, [sp, #0x30] + add r7, r7, #3 + add r0, #0x20 + str r0, [sp, #0x30] + ldr r0, [sp, #0x34] + add r0, r0, #1 + str r0, [sp, #0x34] + cmp r0, #5 + bge _021E22A0 + b _021E2156 +_021E22A0: + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E22A4: .word 0x00003EFF + thumb_func_end MOD16_021E20EC + + thumb_func_start MOD16_021E22A8 +MOD16_021E22A8: ; 0x021E22A8 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E22B0: + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021E22C4 + bl FUN_0201FFC8 + add r0, r5, #0 + add r0, #0xa8 + str r6, [r0] +_021E22C4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E22B0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E22A8 + + thumb_func_start MOD16_021E22D0 +MOD16_021E22D0: ; 0x021E22D0 + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r4, [r1] + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021E2330 ; =0x00003E83 + add r6, r2, #0 + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #4] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0xc] + mov r0, #0 + mov r2, #0x15 + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + mov r0, #2 + str r0, [sp, #0x24] + str r6, [sp, #0x28] + lsl r2, r2, #4 + ldr r2, [r4, r2] + add r0, r5, #0 + add r1, sp, #4 + bl MOD16_021E23D0 + mov r3, #0x42 + lsl r3, r3, #2 + ldr r0, [r5, r3] + add r2, r3, #0 + str r0, [sp] + add r2, #0x48 + sub r3, r3, #4 + ldr r2, [r4, r2] + ldr r3, [r5, r3] + add r0, r5, #0 + add r1, sp, #4 + bl MOD16_021E23A0 + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + nop +_021E2330: .word 0x00003E83 + thumb_func_end MOD16_021E22D0 + + thumb_func_start MOD16_021E2334 +MOD16_021E2334: ; 0x021E2334 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E2554 + add r0, r4, #0 + bl MOD16_021E2570 + pop {r4, pc} + thumb_func_end MOD16_021E2334 + + thumb_func_start MOD16_021E2344 +MOD16_021E2344: ; 0x021E2344 + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r4, [r1] + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021E239C ; =0x00003E83 + add r6, r2, #0 + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #4] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + mov r0, #2 + str r0, [sp, #0x24] + add r0, r5, #0 + str r6, [sp, #0x28] + bl MOD16_021E2570 + mov r3, #0x42 + lsl r3, r3, #2 + ldr r0, [r5, r3] + add r2, r3, #0 + str r0, [sp] + add r2, #0x48 + sub r3, r3, #4 + ldr r2, [r4, r2] + ldr r3, [r5, r3] + add r0, r5, #0 + add r1, sp, #4 + bl MOD16_021E23A0 + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + nop +_021E239C: .word 0x00003E83 + thumb_func_end MOD16_021E2344 + + thumb_func_start MOD16_021E23A0 +MOD16_021E23A0: ; 0x021E23A0 + push {r3, lr} + cmp r3, #0 + beq _021E23B0 + cmp r3, #1 + beq _021E23B6 + cmp r3, #2 + beq _021E23BC + pop {r3, pc} +_021E23B0: + bl MOD16_021E2590 + pop {r3, pc} +_021E23B6: + bl MOD16_021E2634 + pop {r3, pc} +_021E23BC: + ldr r3, [sp, #8] + cmp r3, #0 + bne _021E23C8 + bl MOD16_021E26F0 + pop {r3, pc} +_021E23C8: + bl MOD16_021E27AC + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E23A0 + + thumb_func_start MOD16_021E23D0 +MOD16_021E23D0: ; 0x021E23D0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + add r6, r2, #0 + mov r1, #2 + bl FUN_0201E28C + add r7, r0, #0 + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x32 + bl MOD16_021DB3C8 + ldr r1, [sp, #8] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #4] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x1c] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [sp, #8] + bl MOD16_021DB3BC + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0xc] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x2f + bl MOD16_021DB3C8 + ldr r1, [sp, #0xc] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #8] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x20] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [sp, #0xc] + bl MOD16_021DB3BC + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x10] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x30 + bl MOD16_021DB3C8 + ldr r1, [sp, #0x10] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #0xc] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x24] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [sp, #0x10] + bl MOD16_021DB3BC + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x14] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x31 + bl MOD16_021DB3C8 + ldr r1, [sp, #0x14] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #0x10] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x28] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [sp, #0x14] + bl MOD16_021DB3BC + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x18] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x33 + bl MOD16_021DB3C8 + ldr r1, [sp, #0x18] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #0x14] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x2c] + ldr r0, [r0] + add r1, r7, #1 + bl FUN_02011A60 + ldr r0, [sp, #0x18] + bl MOD16_021DB3BC + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E2550: .word 0x00000266 + thumb_func_end MOD16_021E23D0 + + thumb_func_start MOD16_021E2554 +MOD16_021E2554: ; 0x021E2554 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E255A: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021E2564 + bl MOD16_021DB338 +_021E2564: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021E255A + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E2554 + + thumb_func_start MOD16_021E2570 +MOD16_021E2570: ; 0x021E2570 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E2578: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _021E2584 + bl MOD16_021DB338 + str r6, [r5, #0x6c] +_021E2584: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E2578 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E2570 + + thumb_func_start MOD16_021E2590 +MOD16_021E2590: ; 0x021E2590 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp, #8] + ldr r0, [r0, #8] + mov r1, #2 + str r2, [sp, #0xc] + bl FUN_0201E28C + str r0, [sp, #0x10] + add r0, #0xb + mov r5, #0 + str r0, [sp, #0x10] +_021E25AC: + ldr r0, [sp, #0xc] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r7, r0, #0 + cmp r5, #5 + bhi _021E25EA + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E25C8: ; jump table + .short _021E25D4 - _021E25C8 - 2 ; case 0 + .short _021E25D8 - _021E25C8 - 2 ; case 1 + .short _021E25DC - _021E25C8 - 2 ; case 2 + .short _021E25E0 - _021E25C8 - 2 ; case 3 + .short _021E25E4 - _021E25C8 - 2 ; case 4 + .short _021E25E8 - _021E25C8 - 2 ; case 5 +_021E25D4: + mov r4, #0x51 + b _021E25EA +_021E25D8: + mov r4, #0x52 + b _021E25EA +_021E25DC: + mov r4, #0x53 + b _021E25EA +_021E25E0: + mov r4, #0x54 + b _021E25EA +_021E25E4: + mov r4, #0x55 + b _021E25EA +_021E25E8: + mov r4, #0x56 +_021E25EA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _021E2630 ; =0x00000266 + add r1, r7, #0 + add r3, r4, #0 + bl MOD16_021DB3C8 + neg r0, r0 + lsr r1, r0, #1 + ldr r0, [sp, #8] + str r1, [r0, #0x10] + str r7, [r0, #4] + ldr r1, [r6, #0x30] + str r1, [r0, #0xc] + mov r1, #5 + mvn r1, r1 + str r1, [r0, #0x14] + bl MOD16_021DB2BC + str r0, [r6, #0x6c] + ldr r0, [r0] + ldr r1, [sp, #0x10] + bl FUN_02011A60 + add r0, r7, #0 + bl MOD16_021DB3BC + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #6 + blt _021E25AC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E2630: .word 0x00000266 + thumb_func_end MOD16_021E2590 + + thumb_func_start MOD16_021E2634 +MOD16_021E2634: ; 0x021E2634 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp, #8] + ldr r0, [r0, #8] + mov r1, #2 + str r2, [sp, #0xc] + bl FUN_0201E28C + str r0, [sp, #0x10] + add r0, #0xb + mov r5, #0 + str r0, [sp, #0x10] +_021E2650: + ldr r0, [sp, #0xc] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r7, r0, #0 + cmp r5, #9 + bhi _021E26A6 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E266C: ; jump table + .short _021E2680 - _021E266C - 2 ; case 0 + .short _021E2684 - _021E266C - 2 ; case 1 + .short _021E2688 - _021E266C - 2 ; case 2 + .short _021E268C - _021E266C - 2 ; case 3 + .short _021E2690 - _021E266C - 2 ; case 4 + .short _021E2694 - _021E266C - 2 ; case 5 + .short _021E2698 - _021E266C - 2 ; case 6 + .short _021E269C - _021E266C - 2 ; case 7 + .short _021E26A0 - _021E266C - 2 ; case 8 + .short _021E26A4 - _021E266C - 2 ; case 9 +_021E2680: + mov r4, #0x36 + b _021E26A6 +_021E2684: + mov r4, #0x37 + b _021E26A6 +_021E2688: + mov r4, #0x38 + b _021E26A6 +_021E268C: + mov r4, #0x39 + b _021E26A6 +_021E2690: + mov r4, #0x3a + b _021E26A6 +_021E2694: + mov r4, #0x3b + b _021E26A6 +_021E2698: + mov r4, #0x3c + b _021E26A6 +_021E269C: + mov r4, #0x3d + b _021E26A6 +_021E26A0: + mov r4, #0x3e + b _021E26A6 +_021E26A4: + mov r4, #0x73 +_021E26A6: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _021E26EC ; =0x00000266 + add r1, r7, #0 + add r3, r4, #0 + bl MOD16_021DB3C8 + neg r0, r0 + lsr r1, r0, #1 + ldr r0, [sp, #8] + str r1, [r0, #0x10] + str r7, [r0, #4] + ldr r1, [r6, #0x30] + str r1, [r0, #0xc] + mov r1, #5 + mvn r1, r1 + str r1, [r0, #0x14] + bl MOD16_021DB2BC + str r0, [r6, #0x6c] + ldr r0, [r0] + ldr r1, [sp, #0x10] + bl FUN_02011A60 + add r0, r7, #0 + bl MOD16_021DB3BC + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #0xa + blt _021E2650 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E26EC: .word 0x00000266 + thumb_func_end MOD16_021E2634 + + thumb_func_start MOD16_021E26F0 +MOD16_021E26F0: ; 0x021E26F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp, #8] + ldr r0, [r0, #8] + mov r1, #2 + str r2, [sp, #0xc] + bl FUN_0201E28C + str r0, [sp, #0x10] + add r0, #0xb + mov r5, #0 + str r0, [sp, #0x10] +_021E270C: + ldr r0, [sp, #0xc] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r7, r0, #0 + cmp r5, #9 + bhi _021E2762 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2728: ; jump table + .short _021E273C - _021E2728 - 2 ; case 0 + .short _021E2740 - _021E2728 - 2 ; case 1 + .short _021E2744 - _021E2728 - 2 ; case 2 + .short _021E2748 - _021E2728 - 2 ; case 3 + .short _021E274C - _021E2728 - 2 ; case 4 + .short _021E2750 - _021E2728 - 2 ; case 5 + .short _021E2754 - _021E2728 - 2 ; case 6 + .short _021E2758 - _021E2728 - 2 ; case 7 + .short _021E275C - _021E2728 - 2 ; case 8 + .short _021E2760 - _021E2728 - 2 ; case 9 +_021E273C: + mov r4, #0x40 + b _021E2762 +_021E2740: + mov r4, #0x46 + b _021E2762 +_021E2744: + mov r4, #0x49 + b _021E2762 +_021E2748: + mov r4, #0x47 + b _021E2762 +_021E274C: + mov r4, #0x48 + b _021E2762 +_021E2750: + mov r4, #0x4c + b _021E2762 +_021E2754: + mov r4, #0x4b + b _021E2762 +_021E2758: + mov r4, #0x4d + b _021E2762 +_021E275C: + mov r4, #0x50 + b _021E2762 +_021E2760: + mov r4, #0x74 +_021E2762: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _021E27A8 ; =0x00000266 + add r1, r7, #0 + add r3, r4, #0 + bl MOD16_021DB3C8 + neg r0, r0 + lsr r1, r0, #1 + ldr r0, [sp, #8] + str r1, [r0, #0x10] + str r7, [r0, #4] + ldr r1, [r6, #0x30] + str r1, [r0, #0xc] + mov r1, #5 + mvn r1, r1 + str r1, [r0, #0x14] + bl MOD16_021DB2BC + str r0, [r6, #0x6c] + ldr r0, [r0] + ldr r1, [sp, #0x10] + bl FUN_02011A60 + add r0, r7, #0 + bl MOD16_021DB3BC + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #0xa + blt _021E270C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E27A8: .word 0x00000266 + thumb_func_end MOD16_021E26F0 + + thumb_func_start MOD16_021E27AC +MOD16_021E27AC: ; 0x021E27AC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp, #8] + ldr r0, [r0, #8] + mov r1, #2 + str r2, [sp, #0xc] + bl FUN_0201E28C + str r0, [sp, #0x10] + add r0, #0xb + mov r5, #0 + str r0, [sp, #0x10] +_021E27C8: + ldr r0, [sp, #0xc] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r7, r0, #0 + cmp r5, #8 + bhi _021E2818 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E27E4: ; jump table + .short _021E27F6 - _021E27E4 - 2 ; case 0 + .short _021E27FA - _021E27E4 - 2 ; case 1 + .short _021E27FE - _021E27E4 - 2 ; case 2 + .short _021E2802 - _021E27E4 - 2 ; case 3 + .short _021E2806 - _021E27E4 - 2 ; case 4 + .short _021E280A - _021E27E4 - 2 ; case 5 + .short _021E280E - _021E27E4 - 2 ; case 6 + .short _021E2812 - _021E27E4 - 2 ; case 7 + .short _021E2816 - _021E27E4 - 2 ; case 8 +_021E27F6: + mov r4, #0x41 + b _021E2818 +_021E27FA: + mov r4, #0x42 + b _021E2818 +_021E27FE: + mov r4, #0x44 + b _021E2818 +_021E2802: + mov r4, #0x43 + b _021E2818 +_021E2806: + mov r4, #0x4a + b _021E2818 +_021E280A: + mov r4, #0x45 + b _021E2818 +_021E280E: + mov r4, #0x4e + b _021E2818 +_021E2812: + mov r4, #0x4f + b _021E2818 +_021E2816: + mov r4, #0x74 +_021E2818: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _021E2860 ; =0x00000266 + add r1, r7, #0 + add r3, r4, #0 + bl MOD16_021DB3C8 + neg r0, r0 + lsr r1, r0, #1 + ldr r0, [sp, #8] + str r1, [r0, #0x10] + str r7, [r0, #4] + ldr r1, [r6, #0x30] + str r1, [r0, #0xc] + mov r1, #5 + mvn r1, r1 + str r1, [r0, #0x14] + bl MOD16_021DB2BC + str r0, [r6, #0x6c] + ldr r0, [r0] + ldr r1, [sp, #0x10] + bl FUN_02011A60 + add r0, r7, #0 + bl MOD16_021DB3BC + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #9 + blt _021E27C8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E2860: .word 0x00000266 + thumb_func_end MOD16_021E27AC + + thumb_func_start MOD16_021E2864 +MOD16_021E2864: ; 0x021E2864 + ldr r1, _021E286C ; =0x0000FFFF + add r0, #0x84 + str r1, [r0] + bx lr + .align 2, 0 +_021E286C: .word 0x0000FFFF + thumb_func_end MOD16_021E2864 + + thumb_func_start MOD16_021E2870 +MOD16_021E2870: ; 0x021E2870 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E28C4 + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E2888 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E2870 + + thumb_func_start MOD16_021E2888 +MOD16_021E2888: ; 0x021E2888 + push {r3, lr} + cmp r2, #3 + bhi _021E28C2 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E289A: ; jump table + .short _021E28A2 - _021E289A - 2 ; case 0 + .short _021E28A8 - _021E289A - 2 ; case 1 + .short _021E28AE - _021E289A - 2 ; case 2 + .short _021E28BE - _021E289A - 2 ; case 3 +_021E28A2: + bl MOD16_021E2994 + pop {r3, pc} +_021E28A8: + bl MOD16_021E2A00 + pop {r3, pc} +_021E28AE: + cmp r3, #0 + bne _021E28B8 + bl MOD16_021E2A84 + pop {r3, pc} +_021E28B8: + bl MOD16_021E2B08 + pop {r3, pc} +_021E28BE: + bl MOD16_021E2C28 +_021E28C2: + pop {r3, pc} + thumb_func_end MOD16_021E2888 + + thumb_func_start MOD16_021E28C4 +MOD16_021E28C4: ; 0x021E28C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x80 + ldr r0, [r0] + add r4, r1, #0 + cmp r0, #5 + bhi _021E2982 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E28DE: ; jump table + .short _021E28EA - _021E28DE - 2 ; case 0 + .short _021E28FA - _021E28DE - 2 ; case 1 + .short _021E2914 - _021E28DE - 2 ; case 2 + .short _021E292E - _021E28DE - 2 ; case 3 + .short _021E2950 - _021E28DE - 2 ; case 4 + .short _021E296A - _021E28DE - 2 ; case 5 +_021E28EA: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD16_021DEC40 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + b _021E2982 +_021E28FA: + ldr r0, [r4, #8] + bl MOD16_021DEBB8 + cmp r0, #0 + beq _021E2982 + ldr r0, [r4, #8] + mov r1, #0 + bl MOD16_021DEBA4 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + b _021E2982 +_021E2914: + ldr r0, [r4, #8] + bl MOD16_021DEBB8 + cmp r0, #1 + beq _021E2982 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEBA4 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + b _021E2982 +_021E292E: + ldr r0, [r4, #8] + bl MOD16_021DEBB8 + cmp r0, #2 + beq _021E2982 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD16_021DEBA4 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0 + add r0, #0x88 + str r1, [r0] + b _021E2982 +_021E2950: + ldr r0, [r4, #8] + bl MOD16_021DEBB8 + cmp r0, #3 + beq _021E2982 + ldr r0, [r4, #8] + mov r1, #3 + bl MOD16_021DEBA4 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + b _021E2982 +_021E296A: + add r0, r5, #0 + add r0, #0x94 + ldr r0, [r0] + cmp r0, #1 + bgt _021E2982 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEC40 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 +_021E2982: + ldr r0, _021E2990 ; =0x0000FFFF + add r5, #0x80 + str r0, [r5] + pop {r3, r4, r5, pc} + nop +_021E298C: .word 0x000005DD +_021E2990: .word 0x0000FFFF + thumb_func_end MOD16_021E28C4 + + thumb_func_start MOD16_021E2994 +MOD16_021E2994: ; 0x021E2994 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #5 + bhi _021E29D2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E29B0: ; jump table + .short _021E29BC - _021E29B0 - 2 ; case 0 + .short _021E29C0 - _021E29B0 - 2 ; case 1 + .short _021E29C4 - _021E29B0 - 2 ; case 2 + .short _021E29C8 - _021E29B0 - 2 ; case 3 + .short _021E29CC - _021E29B0 - 2 ; case 4 + .short _021E29D0 - _021E29B0 - 2 ; case 5 +_021E29BC: + mov r4, #0 + b _021E29D2 +_021E29C0: + mov r4, #1 + b _021E29D2 +_021E29C4: + mov r4, #2 + b _021E29D2 +_021E29C8: + mov r4, #3 + b _021E29D2 +_021E29CC: + mov r4, #4 + b _021E29D2 +_021E29D0: + mov r4, #5 +_021E29D2: + cmp r4, #0x64 + beq _021E29EE + ldr r0, [r6, #8] + bl MOD16_021DEBD4 + cmp r4, r0 + beq _021E29EE + ldr r0, _021E29F8 ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r6, #8] + add r1, r4, #0 + bl MOD16_021DEBC0 +_021E29EE: + ldr r0, _021E29FC ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + nop +_021E29F8: .word 0x000005DD +_021E29FC: .word 0x0000FFFF + thumb_func_end MOD16_021E2994 + + thumb_func_start MOD16_021E2A00 +MOD16_021E2A00: ; 0x021E2A00 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #9 + bhi _021E2A56 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2A1C: ; jump table + .short _021E2A30 - _021E2A1C - 2 ; case 0 + .short _021E2A34 - _021E2A1C - 2 ; case 1 + .short _021E2A38 - _021E2A1C - 2 ; case 2 + .short _021E2A3C - _021E2A1C - 2 ; case 3 + .short _021E2A40 - _021E2A1C - 2 ; case 4 + .short _021E2A44 - _021E2A1C - 2 ; case 5 + .short _021E2A48 - _021E2A1C - 2 ; case 6 + .short _021E2A4C - _021E2A1C - 2 ; case 7 + .short _021E2A50 - _021E2A1C - 2 ; case 8 + .short _021E2A54 - _021E2A1C - 2 ; case 9 +_021E2A30: + mov r4, #1 + b _021E2A56 +_021E2A34: + mov r4, #2 + b _021E2A56 +_021E2A38: + mov r4, #3 + b _021E2A56 +_021E2A3C: + mov r4, #4 + b _021E2A56 +_021E2A40: + mov r4, #5 + b _021E2A56 +_021E2A44: + mov r4, #6 + b _021E2A56 +_021E2A48: + mov r4, #7 + b _021E2A56 +_021E2A4C: + mov r4, #8 + b _021E2A56 +_021E2A50: + mov r4, #9 + b _021E2A56 +_021E2A54: + mov r4, #0 +_021E2A56: + cmp r4, #0x64 + beq _021E2A72 + ldr r0, [r6, #8] + bl MOD16_021DEBF0 + cmp r4, r0 + beq _021E2A72 + ldr r0, _021E2A7C ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r6, #8] + add r1, r4, #0 + bl MOD16_021DEBDC +_021E2A72: + ldr r0, _021E2A80 ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + nop +_021E2A7C: .word 0x000005DD +_021E2A80: .word 0x0000FFFF + thumb_func_end MOD16_021E2A00 + + thumb_func_start MOD16_021E2A84 +MOD16_021E2A84: ; 0x021E2A84 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #0xa + bhi _021E2AE8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2AA0: ; jump table + .short _021E2AB6 - _021E2AA0 - 2 ; case 0 + .short _021E2ABA - _021E2AA0 - 2 ; case 1 + .short _021E2ABE - _021E2AA0 - 2 ; case 2 + .short _021E2AC2 - _021E2AA0 - 2 ; case 3 + .short _021E2AC6 - _021E2AA0 - 2 ; case 4 + .short _021E2ACA - _021E2AA0 - 2 ; case 5 + .short _021E2ACE - _021E2AA0 - 2 ; case 6 + .short _021E2AD2 - _021E2AA0 - 2 ; case 7 + .short _021E2AD6 - _021E2AA0 - 2 ; case 8 + .short _021E2ADA - _021E2AA0 - 2 ; case 9 + .short _021E2ADE - _021E2AA0 - 2 ; case 10 +_021E2AB6: + mov r4, #1 + b _021E2AE8 +_021E2ABA: + mov r4, #2 + b _021E2AE8 +_021E2ABE: + mov r4, #3 + b _021E2AE8 +_021E2AC2: + mov r4, #4 + b _021E2AE8 +_021E2AC6: + mov r4, #5 + b _021E2AE8 +_021E2ACA: + mov r4, #6 + b _021E2AE8 +_021E2ACE: + mov r4, #7 + b _021E2AE8 +_021E2AD2: + mov r4, #8 + b _021E2AE8 +_021E2AD6: + mov r4, #9 + b _021E2AE8 +_021E2ADA: + mov r4, #0 + b _021E2AE8 +_021E2ADE: + mov r0, #1 + str r0, [r5, #0x20] + ldr r0, _021E2B00 ; =0x000005DD + bl FUN_020054C8 +_021E2AE8: + cmp r4, #0x64 + beq _021E2AF6 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E2B84 +_021E2AF6: + ldr r0, _021E2B04 ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + nop +_021E2B00: .word 0x000005DD +_021E2B04: .word 0x0000FFFF + thumb_func_end MOD16_021E2A84 + + thumb_func_start MOD16_021E2B08 +MOD16_021E2B08: ; 0x021E2B08 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #9 + bhi _021E2B66 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2B24: ; jump table + .short _021E2B38 - _021E2B24 - 2 ; case 0 + .short _021E2B3C - _021E2B24 - 2 ; case 1 + .short _021E2B40 - _021E2B24 - 2 ; case 2 + .short _021E2B44 - _021E2B24 - 2 ; case 3 + .short _021E2B48 - _021E2B24 - 2 ; case 4 + .short _021E2B4C - _021E2B24 - 2 ; case 5 + .short _021E2B50 - _021E2B24 - 2 ; case 6 + .short _021E2B54 - _021E2B24 - 2 ; case 7 + .short _021E2B58 - _021E2B24 - 2 ; case 8 + .short _021E2B5C - _021E2B24 - 2 ; case 9 +_021E2B38: + mov r4, #0xa + b _021E2B66 +_021E2B3C: + mov r4, #0xb + b _021E2B66 +_021E2B40: + mov r4, #0xc + b _021E2B66 +_021E2B44: + mov r4, #0xd + b _021E2B66 +_021E2B48: + mov r4, #0xe + b _021E2B66 +_021E2B4C: + mov r4, #0xf + b _021E2B66 +_021E2B50: + mov r4, #0x10 + b _021E2B66 +_021E2B54: + mov r4, #0x11 + b _021E2B66 +_021E2B58: + mov r4, #0 + b _021E2B66 +_021E2B5C: + mov r0, #0 + str r0, [r5, #0x20] + ldr r0, _021E2B7C ; =0x000005DD + bl FUN_020054C8 +_021E2B66: + cmp r4, #0x64 + beq _021E2B74 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E2B84 +_021E2B74: + ldr r0, _021E2B80 ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + .align 2, 0 +_021E2B7C: .word 0x000005DD +_021E2B80: .word 0x0000FFFF + thumb_func_end MOD16_021E2B08 + + thumb_func_start MOD16_021E2B84 +MOD16_021E2B84: ; 0x021E2B84 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + ldr r0, [r4, #8] + beq _021E2BE4 + mov r1, #0 + bl MOD16_021DEC14 + cmp r6, r0 + beq _021E2C20 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEC14 + cmp r6, r0 + beq _021E2C20 + add r1, r5, #0 + add r1, #0x88 + ldr r0, [r4, #8] + ldr r1, [r1] + bl MOD16_021DEC14 + cmp r6, r0 + beq _021E2C20 + add r2, r5, #0 + add r2, #0x88 + ldr r0, [r4, #8] + ldr r2, [r2] + add r1, r6, #0 + bl MOD16_021DEBF8 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + add r5, #0x88 + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + str r0, [r5] + ldr r0, _021E2C24 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E2BE4: + mov r1, #0 + bl MOD16_021DEC14 + cmp r0, #0 + ldr r0, [r4, #8] + beq _021E2C00 + add r1, r6, #0 + mov r2, #0 + bl MOD16_021DEBF8 + ldr r0, _021E2C24 ; =0x000005DD + bl FUN_020054C8 + b _021E2C1A +_021E2C00: + mov r1, #1 + bl MOD16_021DEC14 + cmp r0, #0 + beq _021E2C1A + ldr r0, [r4, #8] + add r1, r6, #0 + mov r2, #1 + bl MOD16_021DEBF8 + ldr r0, _021E2C24 ; =0x000005DD + bl FUN_020054C8 +_021E2C1A: + mov r0, #0 + add r5, #0x88 + str r0, [r5] +_021E2C20: + pop {r4, r5, r6, pc} + nop +_021E2C24: .word 0x000005DD + thumb_func_end MOD16_021E2B84 + + thumb_func_start MOD16_021E2C28 +MOD16_021E2C28: ; 0x021E2C28 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #0xe + bhi _021E2C9C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2C44: ; jump table + .short _021E2C62 - _021E2C44 - 2 ; case 0 + .short _021E2C66 - _021E2C44 - 2 ; case 1 + .short _021E2C6A - _021E2C44 - 2 ; case 2 + .short _021E2C6E - _021E2C44 - 2 ; case 3 + .short _021E2C72 - _021E2C44 - 2 ; case 4 + .short _021E2C76 - _021E2C44 - 2 ; case 5 + .short _021E2C7A - _021E2C44 - 2 ; case 6 + .short _021E2C7E - _021E2C44 - 2 ; case 7 + .short _021E2C82 - _021E2C44 - 2 ; case 8 + .short _021E2C86 - _021E2C44 - 2 ; case 9 + .short _021E2C8A - _021E2C44 - 2 ; case 10 + .short _021E2C8E - _021E2C44 - 2 ; case 11 + .short _021E2C92 - _021E2C44 - 2 ; case 12 + .short _021E2C96 - _021E2C44 - 2 ; case 13 + .short _021E2C9A - _021E2C44 - 2 ; case 14 +_021E2C62: + mov r4, #0xd + b _021E2C9C +_021E2C66: + mov r4, #4 + b _021E2C9C +_021E2C6A: + mov r4, #0xc + b _021E2C9C +_021E2C6E: + mov r4, #9 + b _021E2C9C +_021E2C72: + mov r4, #8 + b _021E2C9C +_021E2C76: + mov r4, #3 + b _021E2C9C +_021E2C7A: + mov r4, #0xa + b _021E2C9C +_021E2C7E: + mov r4, #1 + b _021E2C9C +_021E2C82: + mov r4, #6 + b _021E2C9C +_021E2C86: + mov r4, #0xb + b _021E2C9C +_021E2C8A: + mov r4, #0xe + b _021E2C9C +_021E2C8E: + mov r4, #2 + b _021E2C9C +_021E2C92: + mov r4, #5 + b _021E2C9C +_021E2C96: + mov r4, #7 + b _021E2C9C +_021E2C9A: + mov r4, #0 +_021E2C9C: + cmp r4, #0x64 + beq _021E2CB8 + ldr r0, [r6, #8] + bl MOD16_021DEC38 + cmp r4, r0 + beq _021E2CB8 + ldr r0, _021E2CC0 ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r6, #8] + add r1, r4, #0 + bl MOD16_021DEC24 +_021E2CB8: + ldr r0, _021E2CC4 ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + .align 2, 0 +_021E2CC0: .word 0x000005DD +_021E2CC4: .word 0x0000FFFF + thumb_func_end MOD16_021E2C28 + + thumb_func_start MOD16_021E2CC8 +MOD16_021E2CC8: ; 0x021E2CC8 + push {r3, r4, r5, lr} + mov r3, #0x4b + lsl r3, r3, #2 + ldr r2, [r0, r3] + cmp r2, #0 + bne _021E2CF4 + ldr r2, [r1, #4] + cmp r2, #0 + ble _021E2CF8 + str r2, [r0, r3] + mov r5, #0 + add r2, r3, #4 + str r5, [r0, r2] + add r2, r3, #0 + ldr r4, [r1, #8] + add r2, #8 + add r3, #8 + str r4, [r0, r2] + ldr r0, [r0, r3] + str r5, [r0] + str r5, [r1, #4] + pop {r3, r4, r5, pc} +_021E2CF4: + bl MOD16_021E2CFC +_021E2CF8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E2CC8 + + thumb_func_start MOD16_021E2CFC +MOD16_021E2CFC: ; 0x021E2CFC + push {r4, lr} + sub sp, #8 + mov r3, #0x4b + add r4, r0, #0 + lsl r3, r3, #2 + ldr r1, [r4, r3] + cmp r1, #0 + beq _021E2DAE + add r0, r3, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021E2D1C + cmp r0, #1 + beq _021E2D6E + add sp, #8 + pop {r4, pc} +_021E2D1C: + cmp r1, #1 + bne _021E2D36 + mov r1, #0 + str r1, [sp] + mov r0, #2 + sub r3, #0x20 + str r0, [sp, #4] + add r0, r4, r3 + mov r2, #0x10 + add r3, r1, #0 + bl MOD16_021D8BD8 + b _021E2D4A +_021E2D36: + mov r2, #0 + str r2, [sp] + mov r0, #2 + sub r3, #0x20 + str r0, [sp, #4] + add r0, r4, r3 + mov r1, #0x10 + add r3, r2, #0 + bl MOD16_021D8BD8 +_021E2D4A: + mov r0, #0x43 + lsl r0, r0, #2 + ldr r3, [r4, r0] + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _021E2DB4 ; =0x04001050 + mov r1, #0 + mov r2, #4 + blx G2x_SetBlendAlpha_ + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add sp, #8 + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_021E2D6E: + sub r3, #0x20 + add r0, r4, r3 + bl MOD16_021D8BF4 + mov r1, #0x43 + lsl r1, r1, #2 + ldr r3, [r4, r1] + mov r2, #0x10 + sub r2, r2, r3 + lsl r2, r2, #8 + orr r3, r2 + ldr r2, _021E2DB8 ; =0x04001052 + cmp r0, #1 + strh r3, [r2] + bne _021E2DAE + add r1, #0x20 + ldr r0, [r4, r1] + cmp r0, #1 + bne _021E2D9A + mov r1, #0 + sub r0, r2, #2 + strh r1, [r0] +_021E2D9A: + mov r1, #0x4d + lsl r1, r1, #2 + ldr r0, [r4, r1] + mov r2, #1 + str r2, [r0] + sub r0, r1, #4 + mov r2, #0 + str r2, [r4, r0] + sub r1, #8 + str r2, [r4, r1] +_021E2DAE: + add sp, #8 + pop {r4, pc} + nop +_021E2DB4: .word 0x04001050 +_021E2DB8: .word 0x04001052 + thumb_func_end MOD16_021E2CFC + + thumb_func_start MOD16_021E2DBC +MOD16_021E2DBC: ; 0x021E2DBC + push {r3, lr} + cmp r2, #2 + bne _021E2DD2 + cmp r3, #0 + bne _021E2DCC + bl MOD16_021E2E14 + pop {r3, pc} +_021E2DCC: + bl MOD16_021E2E44 + pop {r3, pc} +_021E2DD2: + bl MOD16_021E2DD8 + pop {r3, pc} + thumb_func_end MOD16_021E2DBC + + thumb_func_start MOD16_021E2DD8 +MOD16_021E2DD8: ; 0x021E2DD8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 +_021E2DE0: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E2DEC + add r1, r4, #0 + bl FUN_02020398 +_021E2DEC: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _021E2DFA + ldr r0, [r0] + add r1, r4, #0 + bl FUN_02011AF0 +_021E2DFA: + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021E2E0A + add r1, r4, #0 + bl FUN_02020398 +_021E2E0A: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #0xf + blt _021E2DE0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E2DD8 + + thumb_func_start MOD16_021E2E14 +MOD16_021E2E14: ; 0x021E2E14 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021E2E1C: + cmp r4, #0xa + beq _021E2E3A + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E2E2C + add r1, r6, #0 + bl FUN_02020398 +_021E2E2C: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _021E2E3A + ldr r0, [r0] + add r1, r6, #0 + bl FUN_02011AF0 +_021E2E3A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E2E1C + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E2E14 + + thumb_func_start MOD16_021E2E44 +MOD16_021E2E44: ; 0x021E2E44 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021E2E4C: + cmp r4, #9 + beq _021E2E6A + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E2E5C + add r1, r6, #0 + bl FUN_02020398 +_021E2E5C: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _021E2E6A + ldr r0, [r0] + add r1, r6, #0 + bl FUN_02011AF0 +_021E2E6A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E2E4C + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E2E44 + + thumb_func_start MOD16_021E2E74 +MOD16_021E2E74: ; 0x021E2E74 + push {r3, r4, lr} + sub sp, #4 + add r4, r2, #0 + ldr r0, [r4, #8] + bl MOD16_021DEC5C + cmp r0, #4 + bne _021E2EC0 + ldr r0, [r4, #8] + bl MOD16_021DEC54 + cmp r0, #3 + bne _021E2EA4 + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + add sp, #4 + pop {r3, r4, pc} +_021E2EA4: + ldr r0, [r4, #8] + bl MOD16_021DEC54 + cmp r0, #1 + bne _021E2EC0 + mov r0, #2 + str r0, [sp] + mov r0, #4 + add r1, r0, #0 + sub r1, #0x14 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 +_021E2EC0: + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021E2E74 + + thumb_func_start MOD16_021E2EC4 +MOD16_021E2EC4: ; 0x021E2EC4 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021E2F64 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E2FA8 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021E2FFC + str r0, [r5, #0x24] + ldr r0, _021E2F04 ; =MOD16_021E3000 + str r0, [r5, #8] + ldr r0, _021E2F08 ; =MOD16_021E3074 + str r0, [r5, #0xc] + ldr r0, _021E2F0C ; =MOD16_021E30B0 + str r0, [r5, #0x10] + ldr r0, _021E2F10 ; =MOD16_021E30E0 + str r0, [r5, #0x14] + ldr r0, _021E2F14 ; =MOD16_021E31E0 + str r0, [r5, #0x18] + ldr r0, _021E2F18 ; =MOD16_021E320C + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E2F04: .word MOD16_021E3000 +_021E2F08: .word MOD16_021E3074 +_021E2F0C: .word MOD16_021E30B0 +_021E2F10: .word MOD16_021E30E0 +_021E2F14: .word MOD16_021E31E0 +_021E2F18: .word MOD16_021E320C + thumb_func_end MOD16_021E2EC4 + + thumb_func_start MOD16_021E2F1C +MOD16_021E2F1C: ; 0x021E2F1C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E2FD4 + ldr r0, [r4, #4] + bl MOD16_021E2FE8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E2F1C + + thumb_func_start MOD16_021E2F30 +MOD16_021E2F30: ; 0x021E2F30 + ldr r0, [r0] + ldr r0, [r0, #4] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E2F30 + + thumb_func_start MOD16_021E2F38 +MOD16_021E2F38: ; 0x021E2F38 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #3 + blt _021E2F46 + bl ErrorHandling +_021E2F46: + str r5, [r4, #4] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E2F38 + + thumb_func_start MOD16_021E2F4C +MOD16_021E2F4C: ; 0x021E2F4C + ldr r0, [r0, #4] + str r1, [r0, #4] + str r2, [r0, #8] + bx lr + thumb_func_end MOD16_021E2F4C + + thumb_func_start MOD16_021E2F54 +MOD16_021E2F54: ; 0x021E2F54 + ldr r0, [r0, #4] + str r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E2F54 + + thumb_func_start MOD16_021E2F5C +MOD16_021E2F5C: ; 0x021E2F5C + ldr r0, [r0, #4] + str r1, [r0, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E2F5C + + thumb_func_start MOD16_021E2F64 +MOD16_021E2F64: ; 0x021E2F64 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021E2F76 + bl ErrorHandling +_021E2F76: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E2F64 + + thumb_func_start MOD16_021E2FA8 +MOD16_021E2FA8: ; 0x021E2FA8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + bne _021E2FBA + bl ErrorHandling +_021E2FBA: + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_021E2FC0: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021E2FC0 + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E2FA8 + + thumb_func_start MOD16_021E2FD4 +MOD16_021E2FD4: ; 0x021E2FD4 + push {r4, lr} + add r4, r0, #0 + bne _021E2FDE + bl ErrorHandling +_021E2FDE: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E2FD4 + + thumb_func_start MOD16_021E2FE8 +MOD16_021E2FE8: ; 0x021E2FE8 + push {r4, lr} + add r4, r0, #0 + bne _021E2FF2 + bl ErrorHandling +_021E2FF2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E2FE8 + + thumb_func_start MOD16_021E2FFC +MOD16_021E2FFC: ; 0x021E2FFC + mov r0, #0 + bx lr + thumb_func_end MOD16_021E2FFC + + thumb_func_start MOD16_021E3000 +MOD16_021E3000: ; 0x021E3000 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #4] + add r5, r1, #0 + mov r1, #0x34 + bl FUN_02016998 + add r4, r0, #0 + bne _021E3016 + bl ErrorHandling +_021E3016: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x34 + blx Call_FillMemWithValue + str r4, [r6, #8] + ldr r1, [r5] + ldr r0, _021E3070 ; =0x00001744 + ldr r0, [r1, r0] + cmp r0, #0 + bne _021E3032 + mov r0, #0 + str r0, [r5, #4] + b _021E3042 +_021E3032: + sub r0, r0, #1 + cmp r0, #1 + bhi _021E303E + mov r0, #1 + str r0, [r5, #4] + b _021E3042 +_021E303E: + mov r0, #2 + str r0, [r5, #4] +_021E3042: + add r2, r4, #0 + ldr r0, [r6, #4] + add r1, r5, #0 + add r2, #0xc + bl MOD16_021E3E08 + str r0, [r4, #4] + add r2, r4, #0 + ldr r0, [r6, #4] + add r1, r5, #0 + add r2, #0x10 + bl MOD16_021E3E10 + str r0, [r4, #8] + ldr r2, [r6, #4] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E3FC4 + ldr r0, [r5, #4] + str r0, [r4] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E3070: .word 0x00001744 + thumb_func_end MOD16_021E3000 + + thumb_func_start MOD16_021E3074 +MOD16_021E3074: ; 0x021E3074 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r6, r1, #0 + ldr r4, [r5, #8] + cmp r0, #1 + bne _021E3086 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E3086: + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _021E3090 + mov r0, #0 + pop {r4, r5, r6, pc} +_021E3090: + ldr r1, [r4] + ldr r0, [r6, #4] + cmp r1, r0 + beq _021E30AC + add r0, r4, #0 + bl MOD16_021E4070 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E3FC4 + ldr r0, [r6, #4] + str r0, [r4] +_021E30AC: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E3074 + + thumb_func_start MOD16_021E30B0 +MOD16_021E30B0: ; 0x021E30B0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r5, [r4, #8] + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E30C0 + bl FUN_02016A18 +_021E30C0: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021E30CA + bl FUN_02016A18 +_021E30CA: + add r0, r5, #0 + bl MOD16_021E4070 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E30B0 + + thumb_func_start MOD16_021E30E0 +MOD16_021E30E0: ; 0x021E30E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r3, #8] + add r4, r1, #0 + str r0, [sp, #4] + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021E31CE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E3102: ; jump table + .short _021E310A - _021E3102 - 2 ; case 0 + .short _021E3142 - _021E3102 - 2 ; case 1 + .short _021E319A - _021E3102 - 2 ; case 2 + .short _021E31C2 - _021E3102 - 2 ; case 3 +_021E310A: + ldr r0, [r4, #4] + ldr r1, _021E31D4 ; =0x00000844 + bl FUN_02016998 + ldr r2, _021E31D4 ; =0x00000844 + str r0, [r4, #8] + mov r1, #0 + blx Call_FillMemWithValue + ldr r5, [r4, #8] + ldr r0, [r7, #4] + mov r1, #0 + str r0, [r5] + ldr r0, [r4, #4] + bl MOD16_021DBDE4 + ldr r1, _021E31D8 ; =0x00000804 + str r0, [r5, r1] + ldr r0, [r4, #4] + mov r1, #0 + bl MOD16_021DBE0C + ldr r1, _021E31DC ; =0x00000808 + str r0, [r5, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E31CE +_021E3142: + ldr r0, [r4, #4] + ldr r3, [sp, #4] + str r0, [sp] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E32D8 + ldr r0, [r4, #8] + ldr r2, [sp, #4] + ldr r3, [r4, #4] + add r1, r7, #0 + bl MOD16_021E3C18 + ldr r0, [r4, #8] + ldr r1, [sp, #4] + bl MOD16_021E3EF0 + add r0, r6, #0 + bl MOD16_021E4094 + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E3E6C + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _021E3186 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E3998 + b _021E3192 +_021E3186: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E3A5C +_021E3192: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E31CE +_021E319A: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _021E31AC + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E3A10 + b _021E31B6 +_021E31AC: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E3AEC +_021E31B6: + cmp r0, #0 + beq _021E31CE + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E31CE +_021E31C2: + add r0, r6, #0 + bl MOD16_021E40D4 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E31CE: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E31D4: .word 0x00000844 +_021E31D8: .word 0x00000804 +_021E31DC: .word 0x00000808 + thumb_func_end MOD16_021E30E0 + + thumb_func_start MOD16_021E31E0 +MOD16_021E31E0: ; 0x021E31E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #8] + add r7, r2, #0 + ldr r4, [r3, #8] + str r0, [sp, #4] + bl MOD16_021E411C + ldr r0, [r5, #4] + add r1, r6, #0 + str r0, [sp] + ldr r0, [sp, #4] + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021E3F88 + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E31E0 + + thumb_func_start MOD16_021E320C +MOD16_021E320C: ; 0x021E320C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021E32CC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E3228: ; jump table + .short _021E3232 - _021E3228 - 2 ; case 0 + .short _021E3260 - _021E3228 - 2 ; case 1 + .short _021E3288 - _021E3228 - 2 ; case 2 + .short _021E329E - _021E3228 - 2 ; case 3 + .short _021E32C8 - _021E3228 - 2 ; case 4 +_021E3232: + add r0, r5, #0 + bl MOD16_021E4094 + ldr r0, [r6, #0xc] + cmp r0, #0 + bne _021E324C + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021E3998 + b _021E3258 +_021E324C: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021E3A5C +_021E3258: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E32CC +_021E3260: + ldr r0, [r6, #0xc] + cmp r0, #0 + bne _021E3272 + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0 + bl MOD16_021E3A10 + b _021E327C +_021E3272: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0 + bl MOD16_021E3AEC +_021E327C: + cmp r0, #0 + beq _021E32CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E32CC +_021E3288: + add r0, r5, #0 + bl MOD16_021E3DBC + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E3328 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E32CC +_021E329E: + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, _021E32D0 ; =0x00000804 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, _021E32D4 ; =0x00000808 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E32CC +_021E32C8: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E32CC: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E32D0: .word 0x00000804 +_021E32D4: .word 0x00000808 + thumb_func_end MOD16_021E320C + + thumb_func_start MOD16_021E32D8 +MOD16_021E32D8: ; 0x021E32D8 + push {r3, r4, r5, r6, r7, lr} + ldr r6, [sp, #0x18] + add r7, r2, #0 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021E3348 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E3B70 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E34D0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E36B0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl MOD16_021E37E8 + ldr r1, [r7, #4] + add r0, r5, #0 + bl MOD16_021E3F50 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E41FC + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E32D8 + + thumb_func_start MOD16_021E3328 +MOD16_021E3328: ; 0x021E3328 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E3BC8 + add r0, r5, #0 + bl MOD16_021E3904 + add r0, r5, #0 + bl MOD16_021E37C0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E361C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E3328 + + thumb_func_start MOD16_021E3348 +MOD16_021E3348: ; 0x021E3348 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r4, r2, #0 + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x40 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r7, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r7, #0 + bl FUN_02016A18 + ldr r1, [r6] + ldr r0, _021E34C0 ; =0x00001764 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021E33E6 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x41 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r7, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xd + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r7, #0 + bl FUN_02016A18 +_021E33E6: + ldr r1, [r6] + ldr r0, _021E34C4 ; =0x0000176C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021E342A + str r4, [sp] + ldr r0, [r5] + mov r1, #0x42 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r7, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #7 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0x1c + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r7, #0 + bl FUN_02016A18 +_021E342A: + ldr r1, [r6] + ldr r0, _021E34C8 ; =0x00001760 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021E346E + str r4, [sp] + ldr r0, [r5] + mov r1, #0x43 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r7, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xb + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r7, #0 + bl FUN_02016A18 +_021E346E: + ldr r1, [r6] + ldr r0, _021E34CC ; =0x00001768 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021E34B2 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x44 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #0x10 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0x19 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 +_021E34B2: + ldr r0, [r5] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E34C0: .word 0x00001764 +_021E34C4: .word 0x0000176C +_021E34C8: .word 0x00001760 +_021E34CC: .word 0x00001768 + thumb_func_end MOD16_021E3348 + + thumb_func_start MOD16_021E34D0 +MOD16_021E34D0: ; 0x021E34D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E3600 ; =0x000017DC + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x6c + bl FUN_020091E0 + add r1, r5, #0 + add r1, #0xb4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl FUN_02009B04 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E3604 ; =0x000017DA + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x6a + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xbc + str r0, [r1] + ldr r0, _021E3608 ; =0x000017DB + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x6b + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xc0 + str r0, [r1] + ldr r0, _021E360C ; =0x000017CD + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5d + bl FUN_020091E0 + add r1, r5, #0 + add r1, #0xd0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02009B04 + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E3610 ; =0x0000177E + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xe + mov r3, #0 + bl FUN_02009298 + add r1, r5, #0 + add r1, #0xd4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_02009D68 + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E3614 ; =0x000017CB + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5b + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xd8 + str r0, [r1] + ldr r0, _021E3618 ; =0x000017CC + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5c + mov r3, #1 + bl FUN_02009358 + add r5, #0xdc + str r0, [r5] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E3600: .word 0x000017DC +_021E3604: .word 0x000017DA +_021E3608: .word 0x000017DB +_021E360C: .word 0x000017CD +_021E3610: .word 0x0000177E +_021E3614: .word 0x000017CB +_021E3618: .word 0x000017CC + thumb_func_end MOD16_021E34D0 + + thumb_func_start MOD16_021E361C +MOD16_021E361C: ; 0x021E361C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xb4 + ldr r0, [r0] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + add r1, r5, #0 + lsl r0, r0, #6 + add r1, #0xb4 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x52 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xbc + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x53 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xc0 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02009C0C + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_02009E04 + mov r0, #5 + add r1, r5, #0 + lsl r0, r0, #6 + add r1, #0xd0 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x51 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xd4 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x52 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xd8 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + add r5, #0xdc + ldr r0, [r4, r0] + ldr r1, [r5] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E361C + + thumb_func_start MOD16_021E36B0 +MOD16_021E36B0: ; 0x021E36B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E37B8 ; =0x000017CC + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x4e + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #0xa + lsl r0, r0, #0x10 + str r0, [sp, #0x34] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + add r1, r5, #0 + add r1, #0xc8 + str r0, [r1] + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #2 + bl FUN_02020130 + ldr r3, _021E37BC ; =0x000017DB + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x5d + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r4, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + str r6, [sp, #0x48] + str r4, [sp, #0x34] + str r4, [sp, #0x38] + add r6, sp, #0x2c + add r7, r4, #0 +_021E3796: + add r0, r6, #0 + bl FUN_0201FF84 + str r0, [r5, #4] + add r1, r7, #0 + bl FUN_020200A0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02020398 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x2c + blt _021E3796 + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E37B8: .word 0x000017CC +_021E37BC: .word 0x000017DB + thumb_func_end MOD16_021E36B0 + + thumb_func_start MOD16_021E37C0 +MOD16_021E37C0: ; 0x021E37C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_0201FFC8 + add r0, r5, #0 + mov r4, #0 + add r0, #0xc8 + str r4, [r0] + add r6, r4, #0 +_021E37D6: + ldr r0, [r5, #4] + bl FUN_0201FFC8 + str r6, [r5, #4] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x2c + blt _021E37D6 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E37C0 + + thumb_func_start MOD16_021E37E8 +MOD16_021E37E8: ; 0x021E37E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + add r0, #0xc8 + add r4, r1, #0 + ldr r0, [r0] + add r6, r3, #0 + ldr r7, [r4] + cmp r0, #0 + bne _021E3800 + bl ErrorHandling +_021E3800: + mov r0, #0x51 + ldr r1, [r4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, _021E38FC ; =0x0000177E + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r7, r1] + str r1, [sp, #0xc] + mov r1, #0 + bl FUN_02009E54 + mov r1, #1 + mov r2, #0x1e + str r0, [sp, #0x14] + str r1, [sp, #0x24] + str r2, [sp, #0x28] + str r1, [sp, #0x2c] + str r6, [sp, #0x30] + bl FUN_0201E28C + str r0, [sp, #8] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + mov r1, #0x10 + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + ldr r2, _021E3900 ; =0x00000266 + add r1, r4, #0 + mov r3, #0x23 + bl MOD16_021DB3C8 + add r1, r5, #0 + lsr r0, r0, #1 + str r4, [sp, #0x10] + add r1, #0xc8 + ldr r1, [r1] + neg r0, r0 + str r0, [sp, #0x1c] + mov r0, #7 + mvn r0, r0 + str r0, [sp, #0x20] + add r0, sp, #0xc + str r1, [sp, #0x18] + bl MOD16_021DB2BC + add r1, r5, #0 + add r1, #0xcc + str r0, [r1] + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + ldr r1, [sp, #8] + ldr r0, [r0] + add r1, r1, #2 + bl FUN_02011A60 + add r0, r4, #0 + bl MOD16_021DB3BC + mov r6, #0 +_021E3890: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + mov r1, #9 + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + add r3, r6, #0 + ldr r0, [r7, r0] + ldr r2, _021E3900 ; =0x00000266 + add r1, r4, #0 + add r3, #0x24 + bl MOD16_021DB3C8 + mov r1, #0 + str r1, [sp, #0x18] + mov r1, #0x48 + sub r0, r1, r0 + lsr r0, r0, #1 + add r0, #8 + str r0, [sp, #0x1c] + mov r0, #0x20 + str r0, [sp, #0x20] + add r0, sp, #0xc + str r4, [sp, #0x10] + bl MOD16_021DB2BC + add r1, r5, #0 + add r1, #0xe0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + ldr r1, [sp, #8] + ldr r0, [r0] + add r1, r1, #2 + bl FUN_02011A60 + add r0, r4, #0 + bl MOD16_021DB3BC + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021E3890 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021E38FC: .word 0x0000177E +_021E3900: .word 0x00000266 + thumb_func_end MOD16_021E37E8 + + thumb_func_start MOD16_021E3904 +MOD16_021E3904: ; 0x021E3904 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xcc + ldr r0, [r0] + bl MOD16_021DB338 + mov r4, #0 +_021E3912: + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E3912 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E3904 + + thumb_func_start MOD16_021E3928 +MOD16_021E3928: ; 0x021E3928 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #1 + bl FUN_02020398 + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + mov r4, #0 + mov r6, #1 +_021E3948: + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E3948 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E3928 + + thumb_func_start MOD16_021E3960 +MOD16_021E3960: ; 0x021E3960 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + bl FUN_02020398 + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + mov r4, #0 + add r6, r4, #0 +_021E3980: + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E3980 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E3960 + + thumb_func_start MOD16_021E3998 +MOD16_021E3998: ; 0x021E3998 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E3928 + ldr r0, [r4, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E39FE + cmp r6, #0 + beq _021E39DA + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + b _021E39FE +_021E39DA: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E39FE: + mov r1, #0x5b + ldr r0, [r5] + lsl r1, r1, #2 + add r1, r0, r1 + bl MOD16_021D8A8C + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E3998 + + thumb_func_start MOD16_021E3A10 +MOD16_021E3A10: ; 0x021E3A10 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E3A30 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E3A3A +_021E3A30: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021E3A3A: + cmp r0, #0 + beq _021E3A4C + cmp r4, #0 + beq _021E3A48 + add r0, r6, #0 + bl MOD16_021E3960 +_021E3A48: + mov r0, #1 + pop {r4, r5, r6, pc} +_021E3A4C: + mov r1, #0x5b + ldr r0, [r5] + lsl r1, r1, #2 + add r1, r0, r1 + bl MOD16_021D8A8C + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E3A10 + + thumb_func_start MOD16_021E3A5C +MOD16_021E3A5C: ; 0x021E3A5C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + add r4, r3, #0 + bl MOD16_021E3928 + cmp r4, #0 + bne _021E3A86 + ldr r0, [r5, #8] + mov r1, #0x28 + str r0, [sp] + ldr r0, [r5, #0x10] + mov r3, #0x78 + str r0, [sp, #4] + ldr r0, _021E3AE8 ; =0x00000814 + ldr r2, [r5, #4] + add r0, r6, r0 + bl MOD16_021D8BD8 +_021E3A86: + ldr r0, [r7, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E3AE4 + cmp r4, #0 + beq _021E3ABE + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r2, #0x2f + str r2, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r5, #0x10] + sub r2, #0x3f + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E3ABE: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r3, #0x2f + str r3, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r5, #0x10] + sub r3, #0x3f + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD16_021D8988 +_021E3AE4: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E3AE8: .word 0x00000814 + thumb_func_end MOD16_021E3A5C + + thumb_func_start MOD16_021E3AEC +MOD16_021E3AEC: ; 0x021E3AEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bne _021E3B14 + ldr r0, _021E3B6C ; =0x00000814 + add r0, r5, r0 + bl MOD16_021D8BF4 + str r0, [sp] + ldr r2, _021E3B6C ; =0x00000814 + ldr r0, [r4] + ldr r1, [r5, r2] + add r2, r2, #4 + ldr r2, [r5, r2] + bl MOD16_021D86F4 + b _021E3B18 +_021E3B14: + mov r0, #1 + str r0, [sp] +_021E3B18: + ldr r0, [r6, #8] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021E3B32 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #4] + b _021E3B3E +_021E3B32: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #4] +_021E3B3E: + mov r1, #0 + add r2, sp, #0 +_021E3B42: + ldr r0, [r2] + cmp r0, #0 + beq _021E3B50 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021E3B42 +_021E3B50: + cmp r1, #2 + bne _021E3B64 + cmp r7, #1 + bne _021E3B5E + add r0, r5, #0 + bl MOD16_021E3960 +_021E3B5E: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E3B64: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E3B6C: .word 0x00000814 + thumb_func_end MOD16_021E3AEC + + thumb_func_start MOD16_021E3B70 +MOD16_021E3B70: ; 0x021E3B70 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + add r0, r0, #4 + mov r1, #0 + bl FUN_02019620 + str r6, [sp] + ldr r3, _021E3BBC ; =0x000007F8 + ldr r0, [r4] + mov r1, #0x1e + mov r2, #1 + add r3, r5, r3 + bl MOD16_021D8D98 + ldr r1, _021E3BC0 ; =0x000007F4 + mov r2, #1 + str r0, [r5, r1] + str r6, [sp] + lsl r3, r2, #0xb + ldr r0, [r4] + mov r1, #0x1f + add r3, r5, r3 + bl MOD16_021D8D98 + ldr r1, _021E3BC4 ; =0x000007FC + str r0, [r5, r1] + ldr r0, [r4] + mov r1, #8 + add r0, r0, #4 + bl FUN_0201AB24 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021E3BBC: .word 0x000007F8 +_021E3BC0: .word 0x000007F4 +_021E3BC4: .word 0x000007FC + thumb_func_end MOD16_021E3B70 + + thumb_func_start MOD16_021E3BC8 +MOD16_021E3BC8: ; 0x021E3BC8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, _021E3C10 ; =0x000007F4 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r1, _021E3C10 ; =0x000007F4 + mov r2, #0 + str r2, [r5, r1] + add r0, r1, #4 + add r1, #8 + str r2, [r5, r0] + ldr r0, [r5, r1] + bl FUN_02016A18 + ldr r0, _021E3C14 ; =0x000007FC + mov r1, #0 + str r1, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] + ldr r0, [r4] + add r0, r0, #4 + bl FUN_0201AB24 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E3C10: .word 0x000007F4 +_021E3C14: .word 0x000007FC + thumb_func_end MOD16_021E3BC8 + + thumb_func_start MOD16_021E3C18 +MOD16_021E3C18: ; 0x021E3C18 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r4, r2, #0 + add r6, r0, #0 + str r1, [sp, #0x28] + str r3, [sp, #0x2c] + bl MOD16_021E3DBC + add r0, r4, #0 + add r0, #0x1c + str r0, [sp] + ldr r0, [r4, #4] + mov r1, #0x1e + str r0, [sp, #4] + ldr r0, [r4, #0xc] + ldr r3, _021E3DAC ; =0x00000808 + str r0, [sp, #8] + add r0, r6, #0 + ldr r3, [r6, r3] + add r0, #0xec + add r2, r1, #0 + bl MOD16_021DBEC4 + ldr r1, _021E3DB0 ; =0x00000838 + str r0, [r6, r1] + ldr r0, [r4, #0x20] + sub r1, r0, #1 + ldr r0, [r4, #0xc] + add r7, r1, r0 + ldr r0, [sp, #0x2c] + add r1, r7, #0 + bl FUN_020169D8 + add r5, r0, #0 + mov r1, #0 + cmp r7, #0 + ble _021E3C7E +_021E3C62: + ldr r2, [r4, #0xc] + cmp r1, r2 + bhs _021E3C6E + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + b _021E3C76 +_021E3C6E: + sub r2, r1, r2 + ldr r0, [r4, #0x1c] + lsl r2, r2, #2 + ldr r0, [r0, r2] +_021E3C76: + strb r0, [r5, r1] + add r1, r1, #1 + cmp r1, r7 + blt _021E3C62 +_021E3C7E: + add r0, r4, #0 + add r0, #0x2c + str r0, [sp] + str r5, [sp, #4] + mov r0, #0x47 + lsl r0, r0, #4 + mov r1, #0x1e + ldr r3, _021E3DAC ; =0x00000808 + str r7, [sp, #8] + ldr r3, [r6, r3] + add r0, r6, r0 + add r2, r1, #0 + bl MOD16_021DBEC4 + mov r1, #0x21 + lsl r1, r1, #6 + str r0, [r6, r1] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + mov r1, #0x1e + add r0, #0xec + add r2, r1, #0 + bl MOD16_021DB7C0 + mov r0, #0x47 + lsl r0, r0, #4 + mov r1, #0x1e + add r0, r6, r0 + add r2, r1, #0 + bl MOD16_021DB7C0 + ldr r0, [sp, #0x28] + ldr r0, [r0] + bl MOD16_021D9DE8 + ldr r1, _021E3DB4 ; =0x0000015D + cmp r0, r1 + bne _021E3CDE + mov r1, #5 + str r1, [sp, #0x38] + mov r1, #0x5c + str r1, [sp, #0x34] + mov r1, #0xe + mov r0, #4 + str r1, [sp, #0x30] + b _021E3CEC +_021E3CDE: + mov r1, #1 + str r1, [sp, #0x38] + mov r1, #0x5c + str r1, [sp, #0x34] + mov r1, #0x20 + mov r0, #0 + str r1, [sp, #0x30] +_021E3CEC: + add r1, r6, #0 + mov r2, #0 + add r1, #0xc4 + str r2, [r1] + ldr r1, [sp, #0x30] + ldr r3, [sp, #0x34] + str r1, [sp] + mov r1, #5 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r1, _021E3DB8 ; =0x00000804 + ldr r2, [r6, r1] + add r1, #0x30 + str r2, [sp, #0xc] + add r2, r4, #0 + add r2, #0x14 + str r2, [sp, #0x10] + mov r2, #2 + str r2, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #8] + mov r2, #0x2c + str r0, [sp, #0x1c] + ldr r0, [r4, #0x10] + str r0, [sp, #0x20] + add r0, r6, r1 + add r1, r6, #0 + str r0, [sp, #0x24] + add r1, #0xc4 + ldr r1, [r1] + add r0, r6, #4 + bl MOD16_021DBF9C + add r1, r6, #0 + add r1, #0xc4 + str r0, [r1] + ldr r0, [r4, #0x18] + sub r1, r0, #1 + ldr r0, [r4, #0x10] + add r7, r1, r0 + ldr r0, [sp, #0x2c] + add r1, r7, #0 + bl FUN_020169D8 + add r5, r0, #0 + mov r1, #0 + cmp r7, #0 + ble _021E3D68 +_021E3D4C: + ldr r2, [r4, #0x10] + cmp r1, r2 + bhs _021E3D58 + ldr r0, [r4, #8] + ldrb r0, [r0, r1] + b _021E3D60 +_021E3D58: + sub r2, r1, r2 + ldr r0, [r4, #0x14] + lsl r2, r2, #2 + ldr r0, [r0, r2] +_021E3D60: + strb r0, [r5, r1] + add r1, r1, #1 + cmp r1, r7 + blt _021E3D4C +_021E3D68: + ldr r0, [sp, #0x30] + ldr r1, _021E3DB8 ; =0x00000804 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r6, r1] + add r4, #0x24 + str r0, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0x14] + ldr r0, [sp, #0x38] + add r1, #0x38 + str r0, [sp, #0x18] + str r5, [sp, #0x1c] + add r0, r6, r1 + str r7, [sp, #0x20] + add r1, r6, #0 + str r0, [sp, #0x24] + add r1, #0xc4 + ldr r1, [r1] + ldr r3, [sp, #0x34] + add r0, r6, #4 + mov r2, #0x2c + bl MOD16_021DBF9C + add r6, #0xc4 + str r0, [r6] + add r0, r5, #0 + bl FUN_02016A18 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E3DAC: .word 0x00000808 +_021E3DB0: .word 0x00000838 +_021E3DB4: .word 0x0000015D +_021E3DB8: .word 0x00000804 + thumb_func_end MOD16_021E3C18 + + thumb_func_start MOD16_021E3DBC +MOD16_021E3DBC: ; 0x021E3DBC + push {r3, r4, r5, r6, r7, lr} + mov r2, #0xe1 + add r6, r0, #0 + add r0, #0xec + mov r1, #0 + lsl r2, r2, #2 + blx Call_FillMemWithValue + mov r2, #0x47 + lsl r2, r2, #4 + add r0, r6, r2 + mov r1, #0 + sub r2, #0xec + blx Call_FillMemWithValue + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021E3E00 + add r5, r6, #0 + add r7, r4, #0 +_021E3DEA: + ldr r0, [r5, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021E3DEA +_021E3E00: + mov r0, #0 + add r6, #0xc4 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E3DBC + + thumb_func_start MOD16_021E3E08 +MOD16_021E3E08: ; 0x021E3E08 + mov r0, #0 + str r0, [r2] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E3E08 + + thumb_func_start MOD16_021E3E10 +MOD16_021E3E10: ; 0x021E3E10 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + ldr r2, [r5] + ldr r1, _021E3E60 ; =0x00001768 + mov r4, #0 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021E3E30 + ldr r3, _021E3E64 ; =0x021FF5D6 + ldr r1, _021E3E68 ; =0x0000FFFF +_021E3E26: + add r3, r3, #2 + ldrh r2, [r3] + add r4, r4, #1 + cmp r2, r1 + bne _021E3E26 +_021E3E30: + cmp r4, #0 + beq _021E3E3C + add r1, r4, #0 + bl FUN_02016998 + b _021E3E3E +_021E3E3C: + mov r0, #0 +_021E3E3E: + str r4, [r6] + ldr r3, [r5] + ldr r2, _021E3E60 ; =0x00001768 + mov r1, #0 + ldr r2, [r3, r2] + cmp r2, #0 + bne _021E3E5E + ldr r4, _021E3E64 ; =0x021FF5D6 + ldr r2, _021E3E68 ; =0x0000FFFF +_021E3E50: + ldrh r3, [r4] + add r4, r4, #2 + strb r3, [r0, r1] + ldrh r3, [r4] + add r1, r1, #1 + cmp r3, r2 + bne _021E3E50 +_021E3E5E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E3E60: .word 0x00001768 +_021E3E64: .word 0x021FF5D6 +_021E3E68: .word 0x0000FFFF + thumb_func_end MOD16_021E3E10 + + thumb_func_start MOD16_021E3E6C +MOD16_021E3E6C: ; 0x021E3E6C + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + mov r0, #2 + lsl r0, r0, #0xa + ldr r3, [r5, r0] + mov r0, #5 + str r0, [sp] + mov r0, #0x47 + lsl r0, r0, #4 + add r0, r5, r0 + str r0, [sp, #4] + mov r1, #0x1e + str r1, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0x59 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldrh r2, [r3, #2] + ldr r1, [r3, #0x14] + ldrh r3, [r3] + ldr r0, [r4] + lsl r2, r2, #0x13 + lsl r3, r3, #0x13 + add r0, r0, #4 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl MOD16_021DB728 + ldr r0, _021E3EEC ; =0x000007F8 + mov r1, #0x1e + ldr r3, [r5, r0] + mov r0, #5 + str r0, [sp] + add r5, #0xec + str r5, [sp, #4] + str r1, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0x59 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldrh r2, [r3, #2] + ldr r1, [r3, #0x14] + ldrh r3, [r3] + ldr r0, [r4] + lsl r2, r2, #0x13 + lsl r3, r3, #0x13 + add r0, r0, #4 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl MOD16_021DB728 + ldr r0, [r4] + add r0, r0, #4 + bl FUN_020191D0 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E3EEC: .word 0x000007F8 + thumb_func_end MOD16_021E3E6C + + thumb_func_start MOD16_021E3EF0 +MOD16_021E3EF0: ; 0x021E3EF0 + push {r4, lr} + ldr r1, _021E3F4C ; =0x00000834 + add r4, r0, #0 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021E3F30 + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021E3F30 + add r0, r1, #0 + add r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021E3F30 + add r1, #0xc + ldr r0, [r4, r1] + cmp r0, #0 + bne _021E3F30 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #1 + bl FUN_020200A0 + add r4, #0xcc + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, pc} +_021E3F30: + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + bl FUN_020200A0 + add r4, #0xcc + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, pc} + nop +_021E3F4C: .word 0x00000834 + thumb_func_end MOD16_021E3EF0 + + thumb_func_start MOD16_021E3F50 +MOD16_021E3F50: ; 0x021E3F50 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + mov r7, #1 +_021E3F5A: + cmp r4, r6 + bne _021E3F6E + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + add r1, r7, #0 + ldr r0, [r0] + bl FUN_020119D0 + b _021E3F7C +_021E3F6E: + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 +_021E3F7C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E3F5A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E3F50 + + thumb_func_start MOD16_021E3F88 +MOD16_021E3F88: ; 0x021E3F88 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r2, #0 + add r4, r3, #0 + add r7, r1, #0 + ldr r2, [r5] + ldr r1, [r4] + cmp r2, r1 + beq _021E3FC0 + ldr r3, [sp, #0x18] + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E3C18 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021E3E6C + ldr r1, [r6, #4] + add r0, r5, #0 + bl MOD16_021E3F50 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E3EF0 + ldr r0, [r4] + str r0, [r5] +_021E3FC0: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E3F88 + + thumb_func_start MOD16_021E3FC4 +MOD16_021E3FC4: ; 0x021E3FC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021E3FE6 + cmp r0, #1 + beq _021E3FF0 + cmp r0, #2 + beq _021E3FFA + b _021E4004 +_021E3FE6: + mov r0, #0 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp] + b _021E4008 +_021E3FF0: + mov r0, #1 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp] + b _021E4008 +_021E3FFA: + mov r0, #2 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp] + b _021E4008 +_021E4004: + bl ErrorHandling +_021E4008: + add r0, r5, #0 + ldr r2, [sp, #4] + add r0, #0x14 + add r1, r7, #0 + add r3, r6, #0 + bl MOD16_021DBD30 + add r0, r5, #0 + ldr r2, [sp] + add r0, #0x1c + add r1, r7, #0 + add r3, r6, #0 + bl MOD16_021DBD30 + ldr r0, [r4] + bl MOD16_021D9A54 + cmp r0, #0 + bne _021E404E + add r0, r5, #0 + add r0, #0x24 + add r1, r7, #0 + mov r2, #3 + add r3, r6, #0 + bl MOD16_021DBD30 + add r5, #0x2c + add r0, r5, #0 + add r1, r7, #0 + mov r2, #8 + add r3, r6, #0 + bl MOD16_021DBD30 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021E404E: + add r0, r5, #0 + add r0, #0x24 + add r1, r7, #0 + mov r2, #4 + add r3, r6, #0 + bl MOD16_021DBD30 + add r5, #0x2c + add r0, r5, #0 + add r1, r7, #0 + mov r2, #9 + add r3, r6, #0 + bl MOD16_021DBD30 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E3FC4 + + thumb_func_start MOD16_021E4070 +MOD16_021E4070: ; 0x021E4070 + push {r4, lr} + add r4, r0, #0 + add r0, #0x14 + bl MOD16_021DBDC0 + add r0, r4, #0 + add r0, #0x1c + bl MOD16_021DBDC0 + add r0, r4, #0 + add r0, #0x24 + bl MOD16_021DBDC0 + add r4, #0x2c + add r0, r4, #0 + bl MOD16_021DBDC0 + pop {r4, pc} + thumb_func_end MOD16_021E4070 + + thumb_func_start MOD16_021E4094 +MOD16_021E4094: ; 0x021E4094 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _021E40D0 ; =0x0000080C + mov r1, #0 + str r1, [r6, r0] + add r0, r0, #4 + str r1, [r6, r0] + mov r0, #2 + bl FUN_0201E6E4 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021E40CE + add r5, r6, #0 + add r7, r4, #0 +_021E40B8: + ldr r0, [r5, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021E40B8 +_021E40CE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E40D0: .word 0x0000080C + thumb_func_end MOD16_021E4094 + + thumb_func_start MOD16_021E40D4 +MOD16_021E40D4: ; 0x021E40D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021E4118 ; =0x04000050 + mov r1, #0xa + mov r2, #8 + mov r3, #0 + blx G2x_SetBlendAlpha_ + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021E4116 + add r5, r6, #0 + add r7, r4, #0 +_021E4100: + ldr r0, [r5, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021E4100 +_021E4116: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4118: .word 0x04000050 + thumb_func_end MOD16_021E40D4 + + thumb_func_start MOD16_021E411C +MOD16_021E411C: ; 0x021E411C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021E41F4 ; =0x0000080C + ldr r1, [r5, r0] + cmp r1, #0x20 + blt _021E4172 + mov r4, #0 + str r4, [r5, r0] + add r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + bne _021E4162 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + ble _021E4158 + add r6, r5, #0 + mov r7, #1 +_021E4142: + ldr r0, [r6, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, r0 + blt _021E4142 +_021E4158: + mov r0, #0x81 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r5, r0] + b _021E4172 +_021E4162: + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x81 + add r1, r4, #0 + lsl r0, r0, #4 + str r1, [r5, r0] +_021E4172: + ldr r0, _021E41F4 ; =0x0000080C + ldr r1, [r5, r0] + cmp r1, #0x10 + blt _021E417E + mov r0, #0x20 + sub r1, r0, r1 +_021E417E: + lsl r2, r1, #0xc + asr r1, r2, #0x1f + lsr r0, r2, #0x10 + lsl r3, r1, #0x10 + mov r1, #2 + orr r3, r0 + lsl r2, r2, #0x10 + mov r0, #0 + lsl r1, r1, #0xa + add r4, r2, r1 + adc r3, r0 + lsl r2, r3, #0x14 + lsr r0, r4, #0xc + orr r0, r2 + lsl r1, r1, #5 + blx FX_Div + asr r1, r0, #0xc + mov r0, #1 + lsl r0, r0, #0xc + orr r1, r0 + ldr r0, _021E41F8 ; =0x04000052 + strh r1, [r0] + ldr r0, _021E41F4 ; =0x0000080C + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + ldr r1, [r5, r0] + cmp r1, #0x20 + blt _021E41F2 + add r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + bne _021E41CC + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + pop {r3, r4, r5, r6, r7, pc} +_021E41CC: + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021E41F2 + add r6, r5, #0 + add r7, r4, #0 +_021E41DC: + ldr r0, [r6, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, r0 + blt _021E41DC +_021E41F2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E41F4: .word 0x0000080C +_021E41F8: .word 0x04000052 + thumb_func_end MOD16_021E411C + + thumb_func_start MOD16_021E41FC +MOD16_021E41FC: ; 0x021E41FC + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4] + bl MOD16_021D9DE8 + add r2, r0, #0 + mov r0, #0x28 + str r0, [sp] + mov r0, #0x78 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E41FC + + thumb_func_start MOD16_021E4234 +MOD16_021E4234: ; 0x021E4234 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021E42AC + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E42E8 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E4310 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021E4340 + str r0, [r5, #0x24] + ldr r0, _021E427C ; =MOD16_021E4344 + str r0, [r5, #8] + ldr r0, _021E4280 ; =MOD16_021E437C + str r0, [r5, #0xc] + ldr r0, _021E4284 ; =MOD16_021E43AC + str r0, [r5, #0x10] + ldr r0, _021E4288 ; =MOD16_021E43C0 + str r0, [r5, #0x14] + ldr r0, _021E428C ; =MOD16_021E4478 + str r0, [r5, #0x18] + ldr r0, _021E4290 ; =MOD16_021E44AC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E427C: .word MOD16_021E4344 +_021E4280: .word MOD16_021E437C +_021E4284: .word MOD16_021E43AC +_021E4288: .word MOD16_021E43C0 +_021E428C: .word MOD16_021E4478 +_021E4290: .word MOD16_021E44AC + thumb_func_end MOD16_021E4234 + + thumb_func_start MOD16_021E4294 +MOD16_021E4294: ; 0x021E4294 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E4314 + ldr r0, [r4, #4] + bl MOD16_021E4328 + ldr r0, [r4, #0x20] + bl MOD16_021E433C + pop {r4, pc} + thumb_func_end MOD16_021E4294 + + thumb_func_start MOD16_021E42AC +MOD16_021E42AC: ; 0x021E42AC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + bne _021E42BE + bl ErrorHandling +_021E42BE: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + add r0, r5, #0 + mov r1, #6 + bl MOD16_021D7B5C + str r0, [r4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E42AC + + thumb_func_start MOD16_021E42E8 +MOD16_021E42E8: ; 0x021E42E8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E42FA + bl ErrorHandling +_021E42FA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E42E8 + + thumb_func_start MOD16_021E4310 +MOD16_021E4310: ; 0x021E4310 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4310 + + thumb_func_start MOD16_021E4314 +MOD16_021E4314: ; 0x021E4314 + push {r4, lr} + add r4, r0, #0 + bne _021E431E + bl ErrorHandling +_021E431E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4314 + + thumb_func_start MOD16_021E4328 +MOD16_021E4328: ; 0x021E4328 + push {r4, lr} + add r4, r0, #0 + bne _021E4332 + bl ErrorHandling +_021E4332: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4328 + + thumb_func_start MOD16_021E433C +MOD16_021E433C: ; 0x021E433C + bx lr + .align 2, 0 + thumb_func_end MOD16_021E433C + + thumb_func_start MOD16_021E4340 +MOD16_021E4340: ; 0x021E4340 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4340 + + thumb_func_start MOD16_021E4344 +MOD16_021E4344: ; 0x021E4344 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + mov r1, #0x28 + bl FUN_02016998 + add r4, r0, #0 + bne _021E435A + bl ErrorHandling +_021E435A: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x28 + blx Call_FillMemWithValue + str r4, [r5, #8] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E4A88 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E47E4 + mov r0, #1 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E4344 + + thumb_func_start MOD16_021E437C +MOD16_021E437C: ; 0x021E437C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021E438C + mov r0, #1 + pop {r3, r4, r5, pc} +_021E438C: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021E4396 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4396: + ldr r0, [r5, #4] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021E43A8 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E482C +_021E43A8: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E437C + + thumb_func_start MOD16_021E43AC +MOD16_021E43AC: ; 0x021E43AC + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021E4968 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021E43AC + + thumb_func_start MOD16_021E43C0 +MOD16_021E43C0: ; 0x021E43C0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r3, #8] + add r4, r1, #0 + str r0, [sp] + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021E4474 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E43E0: ; jump table + .short _021E43E8 - _021E43E0 - 2 ; case 0 + .short _021E4402 - _021E43E0 - 2 ; case 1 + .short _021E4436 - _021E43E0 - 2 ; case 2 + .short _021E4458 - _021E43E0 - 2 ; case 3 +_021E43E8: + ldr r0, [r4, #4] + mov r1, #0x2c + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x2c + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4474 +_021E4402: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E45F8 + ldr r2, [sp] + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021E4980 + ldr r3, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021E49B8 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E4550 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4474 +_021E4436: + ldr r3, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E49B8 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E45BC + cmp r0, #0 + beq _021E4474 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4474 +_021E4458: + ldr r3, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E49B8 + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E4474: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E43C0 + + thumb_func_start MOD16_021E4478 +MOD16_021E4478: ; 0x021E4478 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r3, #8] + add r5, r1, #0 + add r4, r2, #0 + str r0, [sp] + ldr r7, [r5, #8] + ldr r2, [sp] + add r0, r7, #0 + add r1, r4, #0 + bl MOD16_021E4980 + ldr r1, [sp] + add r0, r6, #0 + add r2, r4, #0 + bl MOD16_021E4B14 + ldr r3, [r5, #4] + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E49B8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E4478 + + thumb_func_start MOD16_021E44AC +MOD16_021E44AC: ; 0x021E44AC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021E4534 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E44C8: ; jump table + .short _021E44D2 - _021E44C8 - 2 ; case 0 + .short _021E44F4 - _021E44C8 - 2 ; case 1 + .short _021E450A - _021E44C8 - 2 ; case 2 + .short _021E451C - _021E44C8 - 2 ; case 3 + .short _021E4530 - _021E44C8 - 2 ; case 4 +_021E44D2: + mov r0, #0x79 + ldr r1, [r6] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021E4550 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4534 +_021E44F4: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0 + bl MOD16_021E45BC + cmp r0, #0 + beq _021E4534 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4534 +_021E450A: + ldr r2, [r4, #4] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E4620 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4534 +_021E451C: + ldr r0, [r5, #0x14] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4534 +_021E4530: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E4534: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E44AC + + thumb_func_start MOD16_021E4538 +MOD16_021E4538: ; 0x021E4538 + ldr r3, _021E4540 ; =0x02020399 + ldr r0, [r0] + mov r1, #1 + bx r3 + .align 2, 0 +_021E4540: .word 0x02020399 + thumb_func_end MOD16_021E4538 + + thumb_func_start MOD16_021E4544 +MOD16_021E4544: ; 0x021E4544 + ldr r3, _021E454C ; =0x02020399 + ldr r0, [r0] + mov r1, #0 + bx r3 + .align 2, 0 +_021E454C: .word 0x02020399 + thumb_func_end MOD16_021E4544 + + thumb_func_start MOD16_021E4550 +MOD16_021E4550: ; 0x021E4550 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E4538 + ldr r0, [r4, #4] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021E45B8 + cmp r6, #0 + beq _021E4594 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r2, [r5] + lsl r0, r0, #4 + add r0, r2, r0 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021E4594: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r3, [r5] + lsl r0, r0, #4 + add r0, r3, r0 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E45B8: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E4550 + + thumb_func_start MOD16_021E45BC +MOD16_021E45BC: ; 0x021E45BC + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #4] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021E45DC + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E45E2 +_021E45DC: + mov r0, #2 + bl FUN_0200A344 +_021E45E2: + cmp r0, #0 + beq _021E45F4 + cmp r4, #0 + beq _021E45F0 + add r0, r6, #0 + bl MOD16_021E4544 +_021E45F0: + mov r0, #1 + pop {r4, r5, r6, pc} +_021E45F4: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E45BC + + thumb_func_start MOD16_021E45F8 +MOD16_021E45F8: ; 0x021E45F8 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E4634 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E469C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E4750 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E45F8 + + thumb_func_start MOD16_021E4620 +MOD16_021E4620: ; 0x021E4620 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E47D8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E471C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E4620 + + thumb_func_start MOD16_021E4634 +MOD16_021E4634: ; 0x021E4634 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x45 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4634 + + thumb_func_start MOD16_021E469C +MOD16_021E469C: ; 0x021E469C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E4710 ; =0x000017D9 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x69 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #4] + bl FUN_02009B04 + ldr r0, [r5, #4] + bl FUN_02009474 + ldr r0, _021E4714 ; =0x000017D7 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x67 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0xc] + ldr r0, _021E4718 ; =0x000017D8 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x68 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x10] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E4710: .word 0x000017D9 +_021E4714: .word 0x000017D7 +_021E4718: .word 0x000017D8 + thumb_func_end MOD16_021E469C + + thumb_func_start MOD16_021E471C +MOD16_021E471C: ; 0x021E471C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #4] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0xc] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E471C + + thumb_func_start MOD16_021E4750 +MOD16_021E4750: ; 0x021E4750 + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E47D0 ; =0x000017D8 + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, _021E47D4 ; =0x0000083F + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #3 + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + str r1, [sp, #0x34] + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5] + bl FUN_02020130 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E47D0: .word 0x000017D8 +_021E47D4: .word 0x0000083F + thumb_func_end MOD16_021E4750 + + thumb_func_start MOD16_021E47D8 +MOD16_021E47D8: ; 0x021E47D8 + ldr r3, _021E47E0 ; =0x0201FFC9 + ldr r0, [r0] + bx r3 + nop +_021E47E0: .word 0x0201FFC9 + thumb_func_end MOD16_021E47D8 + + thumb_func_start MOD16_021E47E4 +MOD16_021E47E4: ; 0x021E47E4 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #4 + bl FUN_02016998 + str r0, [r5, #0x14] + mov r1, #0xfe + strb r1, [r0] + ldr r1, [r5] + ldr r0, [r5, #0x14] + add r3, r5, #0 + strb r1, [r0, #1] + ldr r1, [r5, #4] + ldr r0, [r5, #0x14] + ldr r2, _021E4828 ; =MOD16_021E4938 + strb r1, [r0, #2] + ldr r0, [r5, #0x14] + mov r1, #0x20 + strb r1, [r0, #3] + str r4, [r5, #0x18] + str r5, [r5, #0x1c] + str r6, [sp] + ldr r0, [r5, #0x14] + mov r1, #1 + add r3, #0x18 + bl FUN_020220C4 + str r0, [r5, #0x10] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021E4828: .word MOD16_021E4938 + thumb_func_end MOD16_021E47E4 + + thumb_func_start MOD16_021E482C +MOD16_021E482C: ; 0x021E482C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + add r5, r1, #0 + bl FUN_02022144 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E48BC + ldr r1, [r4] + ldr r0, [r4, #0x14] + strb r1, [r0, #1] + ldr r1, [r4, #4] + ldr r0, [r4, #0x14] + strb r1, [r0, #2] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E482C + + thumb_func_start MOD16_021E4850 +MOD16_021E4850: ; 0x021E4850 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E48B4 ; =0x021C48F8 + add r4, r1, #0 + ldrh r0, [r0, #0x22] + cmp r0, #0 + bne _021E48B2 + ldr r0, [r4, #4] + bl MOD16_021E95C8 + cmp r0, #1 + bne _021E48B2 + ldr r0, [r4] + bl MOD16_021E2F30 + ldr r1, _021E48B8 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x20 + tst r1, r2 + beq _021E4892 + sub r1, r0, #1 + bpl _021E487E + mov r1, #0 +_021E487E: + ldr r0, [r4] + bl MOD16_021E2F38 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E4A88 + mov r0, #1 + str r0, [r5, #0x24] + pop {r3, r4, r5, pc} +_021E4892: + mov r1, #0x10 + tst r1, r2 + beq _021E48B2 + add r1, r0, #1 + cmp r1, #3 + blt _021E48A0 + mov r1, #2 +_021E48A0: + ldr r0, [r4] + bl MOD16_021E2F38 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E4A88 + mov r0, #1 + str r0, [r5, #0x24] +_021E48B2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E48B4: .word 0x021C48F8 +_021E48B8: .word 0x021C48B8 + thumb_func_end MOD16_021E4850 + + thumb_func_start MOD16_021E48BC +MOD16_021E48BC: ; 0x021E48BC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r2, #0 + str r2, [r5, #0x24] + ldr r3, [r5, #0x20] + add r4, r1, #0 + cmp r3, #0 + beq _021E492E + ldr r0, _021E4934 ; =0x021C48F8 + ldrh r1, [r0, #0x22] + cmp r1, #0 + beq _021E492A + ldrh r2, [r0, #0x1c] + ldr r1, [r5, #8] + sub r1, r2, r1 + str r1, [r5] + ldrh r1, [r0, #0x1e] + ldr r0, [r5, #0xc] + sub r0, r1, r0 + str r0, [r5, #4] + ldr r0, [r5] + cmp r0, #0x18 + bge _021E48EE + mov r0, #0x18 + str r0, [r5] +_021E48EE: + ldr r0, [r5] + cmp r0, #0xf6 + ble _021E48F8 + mov r0, #0xf6 + str r0, [r5] +_021E48F8: + ldr r0, [r5, #4] + cmp r0, #0x40 + bge _021E4902 + mov r0, #0x40 + str r0, [r5, #4] +_021E4902: + ldr r0, [r5] + bl MOD16_021E4AC0 + ldr r1, [r5, #4] + add r0, #0x84 + cmp r1, r0 + ble _021E4912 + str r0, [r5, #4] +_021E4912: + ldr r0, [r5] + mov r1, #0x55 + blx _s32_div_f + add r1, r0, #0 + cmp r1, #2 + ble _021E4922 + mov r1, #2 +_021E4922: + ldr r0, [r4] + bl MOD16_021E2F38 + pop {r3, r4, r5, pc} +_021E492A: + str r2, [r5, #0x20] + pop {r3, r4, r5, pc} +_021E492E: + bl MOD16_021E4850 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E4934: .word 0x021C48F8 + thumb_func_end MOD16_021E48BC + + thumb_func_start MOD16_021E4938 +MOD16_021E4938: ; 0x021E4938 + push {r4, lr} + ldr r4, [r2, #4] + cmp r1, #0 + bne _021E495C + ldr r0, _021E4960 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + str r0, [r4, #0x20] + ldr r0, _021E4964 ; =0x021C48F8 + ldr r1, [r4] + ldrh r2, [r0, #0x1c] + sub r1, r2, r1 + str r1, [r4, #8] + ldrh r1, [r0, #0x1e] + ldr r0, [r4, #4] + sub r0, r1, r0 + str r0, [r4, #0xc] +_021E495C: + pop {r4, pc} + nop +_021E4960: .word 0x000005DD +_021E4964: .word 0x021C48F8 + thumb_func_end MOD16_021E4938 + + thumb_func_start MOD16_021E4968 +MOD16_021E4968: ; 0x021E4968 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_0202212C + ldr r0, [r4, #0x14] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4968 + + thumb_func_start MOD16_021E4980 +MOD16_021E4980: ; 0x021E4980 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r2] + add r4, r1, #0 + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, [r2, #4] + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + str r1, [sp, #4] + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r5] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4] + bl MOD16_021E2F30 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_02020130 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4980 + + thumb_func_start MOD16_021E49B8 +MOD16_021E49B8: ; 0x021E49B8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r2] + add r7, r1, #0 + str r3, [sp] + mov r4, #0 + bl MOD16_021E2F30 + ldr r1, [r5, #0x18] + add r6, r0, #0 + cmp r1, r6 + bne _021E49DC + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E49DC + ldr r0, [r5, #0x1c] + cmp r0, r1 + beq _021E4A86 +_021E49DC: + ldr r0, [r5, #0x1c] + cmp r0, r6 + beq _021E49E8 + str r0, [r5, #0x18] + mov r0, #0 + str r0, [r5, #0x24] +_021E49E8: + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _021E49F8 + cmp r0, #1 + beq _021E4A2E + cmp r0, #2 + beq _021E4A64 + b _021E4A6C +_021E49F8: + str r6, [r5, #0x1c] + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E4A04 + bl FUN_02016A18 +_021E4A04: + ldr r1, [r5, #0x18] + add r2, r5, #0 + ldr r0, [r7] + ldr r3, [sp] + add r1, #0xf + add r2, #0x20 + bl MOD16_021D8D70 + str r0, [r5, #0x14] + mov r0, #0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x18] + cmp r0, r6 + ble _021E4A24 + mov r4, #1 + b _021E4A26 +_021E4A24: + mov r4, #2 +_021E4A26: + ldr r0, [r5, #0x24] + add r0, r0, #1 + str r0, [r5, #0x24] + b _021E4A6C +_021E4A2E: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E4A38 + bl FUN_02016A18 +_021E4A38: + ldr r1, [r5, #0x1c] + add r2, r5, #0 + ldr r0, [r7] + ldr r3, [sp] + add r1, #0xf + add r2, #0x20 + bl MOD16_021D8D70 + str r0, [r5, #0x14] + mov r0, #0 + str r0, [r5, #0x28] + ldr r1, [r5, #0x18] + ldr r0, [r5, #0x1c] + cmp r1, r0 + bge _021E4A5A + mov r4, #1 + b _021E4A5C +_021E4A5A: + mov r4, #2 +_021E4A5C: + ldr r0, [r5, #0x24] + add r0, r0, #1 + str r0, [r5, #0x24] + b _021E4A6C +_021E4A64: + mov r4, #0 + str r4, [r5, #0x24] + ldr r0, [r5, #0x1c] + str r0, [r5, #0x18] +_021E4A6C: + ldr r2, [r5, #0x20] + mov r0, #0x1f + ldr r3, [r2, #0xc] + lsl r2, r4, #5 + add r2, r3, r2 + mov r1, #0x40 + mov r3, #0x20 + bl FUN_0201C2C8 + cmp r0, #0 + bne _021E4A86 + bl ErrorHandling +_021E4A86: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E49B8 + + thumb_func_start MOD16_021E4A88 +MOD16_021E4A88: ; 0x021E4A88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1] + bl MOD16_021E2F30 + cmp r0, #0 + beq _021E4AA0 + cmp r0, #1 + beq _021E4AAA + cmp r0, #2 + beq _021E4AB4 + pop {r4, pc} +_021E4AA0: + mov r0, #0x20 + str r0, [r4] + mov r0, #0x80 + str r0, [r4, #4] + pop {r4, pc} +_021E4AAA: + mov r0, #0x80 + str r0, [r4] + mov r0, #0x60 + str r0, [r4, #4] + pop {r4, pc} +_021E4AB4: + mov r0, #0xe0 + str r0, [r4] + mov r0, #0x80 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4A88 + + thumb_func_start MOD16_021E4AC0 +MOD16_021E4AC0: ; 0x021E4AC0 + push {r3, lr} + cmp r0, #0x28 + blt _021E4ACA + cmp r0, #0xd8 + ble _021E4ACE +_021E4ACA: + mov r0, #0x30 + pop {r3, pc} +_021E4ACE: + ldr r1, _021E4B0C ; =0x00007FFF + sub r0, #0x28 + mul r1, r0 + add r0, r1, #0 + mov r1, #0xb0 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _021E4B10 ; =0x020FFA38 + mov r2, #3 + ldrsh r0, [r0, r1] + lsl r2, r2, #0x10 + mov r3, #0 + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + asr r1, r1, #0xc + mov r0, #0x30 + sub r0, r0, r1 + pop {r3, pc} + .align 2, 0 +_021E4B0C: .word 0x00007FFF +_021E4B10: .word 0x020FFA38 + thumb_func_end MOD16_021E4AC0 + + thumb_func_start MOD16_021E4B14 +MOD16_021E4B14: ; 0x021E4B14 + push {r3, r4, r5, lr} + ldr r4, [r0] + ldr r0, [r2, #4] + add r5, r1, #0 + bl MOD16_021E95C8 + cmp r0, #1 + bne _021E4B48 + ldr r0, [r5, #0x24] + cmp r0, #0 + bne _021E4B3A + mov r3, #0x20 + str r3, [sp] + ldr r1, [r5] + ldr r2, [r5, #4] + add r0, r4, #0 + bl MOD16_021D8B04 + pop {r3, r4, r5, pc} +_021E4B3A: + mov r3, #0x20 + str r3, [sp] + ldr r1, [r5] + ldr r2, [r5, #4] + add r0, r4, #0 + bl MOD16_021D8B78 +_021E4B48: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4B14 + + thumb_func_start MOD16_021E4B4C +MOD16_021E4B4C: ; 0x021E4B4C + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021E4BCC + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E4C08 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021E4C58 + str r0, [r5, #0x24] + ldr r0, _021E4B8C ; =MOD16_021E4C5C + str r0, [r5, #8] + ldr r0, _021E4B90 ; =MOD16_021E4C80 + str r0, [r5, #0xc] + ldr r0, _021E4B94 ; =MOD16_021E4CD0 + str r0, [r5, #0x10] + ldr r0, _021E4B98 ; =MOD16_021E4CDC + str r0, [r5, #0x14] + ldr r0, _021E4B9C ; =MOD16_021E4DBC + str r0, [r5, #0x18] + ldr r0, _021E4BA0 ; =MOD16_021E4DC0 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4B8C: .word MOD16_021E4C5C +_021E4B90: .word MOD16_021E4C80 +_021E4B94: .word MOD16_021E4CD0 +_021E4B98: .word MOD16_021E4CDC +_021E4B9C: .word MOD16_021E4DBC +_021E4BA0: .word MOD16_021E4DC0 + thumb_func_end MOD16_021E4B4C + + thumb_func_start MOD16_021E4BA4 +MOD16_021E4BA4: ; 0x021E4BA4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E4C30 + ldr r0, [r4, #4] + bl MOD16_021E4C44 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4BA4 + + thumb_func_start MOD16_021E4BB8 +MOD16_021E4BB8: ; 0x021E4BB8 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4BB8 + + thumb_func_start MOD16_021E4BBC +MOD16_021E4BBC: ; 0x021E4BBC + mov r2, #1 + cmp r1, #1 + bne _021E4BC6 + mov r1, #0 + add r2, r1, #0 +_021E4BC6: + str r1, [r0, #0x18] + add r0, r2, #0 + bx lr + thumb_func_end MOD16_021E4BBC + + thumb_func_start MOD16_021E4BCC +MOD16_021E4BCC: ; 0x021E4BCC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0 + bne _021E4BDE + bl ErrorHandling +_021E4BDE: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x20 + blx Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4BCC + + thumb_func_start MOD16_021E4C08 +MOD16_021E4C08: ; 0x021E4C08 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E4C1A + bl ErrorHandling +_021E4C1A: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E4C08 + + thumb_func_start MOD16_021E4C30 +MOD16_021E4C30: ; 0x021E4C30 + push {r4, lr} + add r4, r0, #0 + bne _021E4C3A + bl ErrorHandling +_021E4C3A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4C30 + + thumb_func_start MOD16_021E4C44 +MOD16_021E4C44: ; 0x021E4C44 + push {r4, lr} + add r4, r0, #0 + bne _021E4C4E + bl ErrorHandling +_021E4C4E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4C44 + + thumb_func_start MOD16_021E4C58 +MOD16_021E4C58: ; 0x021E4C58 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4C58 + + thumb_func_start MOD16_021E4C5C +MOD16_021E4C5C: ; 0x021E4C5C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9A60 + ldr r0, [r4, #4] + bl MOD16_021D9D04 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9A78 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021E4C5C + + thumb_func_start MOD16_021E4C80 +MOD16_021E4C80: ; 0x021E4C80 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + cmp r0, #1 + bne _021E4C90 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E4C90: + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _021E4C9A + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4C9A: + ldr r0, [r5] + cmp r0, #0 + bne _021E4CC8 + ldr r0, [r4, #0x1c] + cmp r0, #1 + bne _021E4CC2 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r1, r0, #0 + ldr r2, _021E4CCC ; =0x000001FF + lsl r1, r1, #0x10 + mov r0, #0xe + lsr r1, r1, #0x10 + add r3, r2, #0 + str r2, [sp] + bl FUN_020056AC + mov r0, #0 + str r0, [r4, #0x1c] +_021E4CC2: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_021E4CC8: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E4CCC: .word 0x000001FF + thumb_func_end MOD16_021E4C80 + + thumb_func_start MOD16_021E4CD0 +MOD16_021E4CD0: ; 0x021E4CD0 + push {r3, lr} + mov r0, #0 + bl FUN_02005614 + mov r0, #1 + pop {r3, pc} + thumb_func_end MOD16_021E4CD0 + + thumb_func_start MOD16_021E4CDC +MOD16_021E4CDC: ; 0x021E4CDC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #3 + bhi _021E4DB2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E4CF8: ; jump table + .short _021E4D00 - _021E4CF8 - 2 ; case 0 + .short _021E4D1A - _021E4CF8 - 2 ; case 1 + .short _021E4D64 - _021E4CF8 - 2 ; case 2 + .short _021E4DA8 - _021E4CF8 - 2 ; case 3 +_021E4D00: + ldr r0, [r4, #4] + mov r1, #0x74 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x74 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4DB2 +_021E4D1A: + ldr r3, [r4, #4] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E4E7C + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021E4D34 + cmp r0, #1 + beq _021E4D42 + cmp r0, #2 + beq _021E4D50 + b _021E4D5C +_021E4D34: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E5908 + b _021E4D5C +_021E4D42: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E5830 + b _021E4D5C +_021E4D50: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E5A04 +_021E4D5C: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4DB2 +_021E4D64: + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021E4D74 + cmp r0, #1 + beq _021E4D82 + cmp r0, #2 + beq _021E4D90 + b _021E4D9C +_021E4D74: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E598C + add r1, r0, #0 + b _021E4D9C +_021E4D82: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E58AC + add r1, r0, #0 + b _021E4D9C +_021E4D90: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E5A8C + add r1, r0, #0 +_021E4D9C: + cmp r1, #0 + beq _021E4DB2 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4DB2 +_021E4DA8: + ldr r0, _021E4DB8 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E4DB2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E4DB8: .word 0x04000050 + thumb_func_end MOD16_021E4CDC + + thumb_func_start MOD16_021E4DBC +MOD16_021E4DBC: ; 0x021E4DBC + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4DBC + + thumb_func_start MOD16_021E4DC0 +MOD16_021E4DC0: ; 0x021E4DC0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r5, [r4] + add r3, r0, #0 + add r1, r2, #0 + ldr r0, [r4, #8] + cmp r5, #4 + bhi _021E4E76 + add r5, r5, r5 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021E4DDC: ; jump table + .short _021E4DE6 - _021E4DDC - 2 ; case 0 + .short _021E4E1A - _021E4DDC - 2 ; case 1 + .short _021E4E58 - _021E4DDC - 2 ; case 2 + .short _021E4E66 - _021E4DDC - 2 ; case 3 + .short _021E4E72 - _021E4DDC - 2 ; case 4 +_021E4DE6: + ldr r1, [r1, #0x14] + cmp r1, #0 + beq _021E4DF6 + cmp r1, #1 + beq _021E4E00 + cmp r1, #2 + beq _021E4E0A + b _021E4E12 +_021E4DF6: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E5908 + b _021E4E12 +_021E4E00: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E5830 + b _021E4E12 +_021E4E0A: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E5A04 +_021E4E12: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4E76 +_021E4E1A: + ldr r1, [r1, #0x14] + cmp r1, #0 + beq _021E4E2A + cmp r1, #1 + beq _021E4E36 + cmp r1, #2 + beq _021E4E42 + b _021E4E4C +_021E4E2A: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E598C + add r2, r0, #0 + b _021E4E4C +_021E4E36: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E58AC + add r2, r0, #0 + b _021E4E4C +_021E4E42: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E5A8C + add r2, r0, #0 +_021E4E4C: + cmp r2, #0 + beq _021E4E76 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4E76 +_021E4E58: + add r1, r3, #0 + bl MOD16_021E4EE4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4E76 +_021E4E66: + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4E76 +_021E4E72: + mov r0, #1 + pop {r3, r4, r5, pc} +_021E4E76: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4DC0 + + thumb_func_start MOD16_021E4E7C +MOD16_021E4E7C: ; 0x021E4E7C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E53C4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E5410 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021E5464 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E56D0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E4F1C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E5030 + ldr r0, [r4, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + bne _021E4EE2 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E51FC + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E5554 +_021E4EE2: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E4E7C + + thumb_func_start MOD16_021E4EE4 +MOD16_021E4EE4: ; 0x021E4EE4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl MOD16_021E5818 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E5224 + add r0, r5, #0 + bl MOD16_021E56B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E5510 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4EE4 + + thumb_func_start MOD16_021E4F1C +MOD16_021E4F1C: ; 0x021E4F1C + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x32 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x33 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r1, #3 + str r1, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x34 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r6, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x36 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #0x10 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E4F1C + + thumb_func_start MOD16_021E5030 +MOD16_021E5030: ; 0x021E5030 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r7, r2, #0 + bl MOD16_021D9DE8 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + beq _021E504C + mov r6, #0 +_021E504C: + ldr r0, _021E5060 ; =0x00020100 + add r1, r6, #0 + str r0, [sp] + ldr r0, [r5] + ldr r3, [r4, #0x18] + add r0, r0, #4 + add r2, r7, #0 + bl MOD16_021E5064 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5060: .word 0x00020100 + thumb_func_end MOD16_021E5030 + + thumb_func_start MOD16_021E5064 +MOD16_021E5064: ; 0x021E5064 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r2, #0 + add r5, r0, #0 + str r1, [sp, #0x10] + mov r0, #0x40 + add r1, r6, #0 + str r3, [sp, #0x14] + ldr r4, [sp, #0x30] + bl FUN_020219F4 + add r7, r0, #0 + ldr r2, _021E5100 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #9 + add r2, r7, #0 + str r0, [sp, #0x18] + bl FUN_0200A8E0 + mov r0, #0x58 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r4, [sp, #8] + add r0, r5, #0 + add r2, r7, #0 + mov r3, #0x98 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + mov r1, #0xa + add r2, r7, #0 + bl FUN_0200A8E0 + mov r0, #0x68 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r4, [sp, #8] + add r0, r5, #0 + add r2, r7, #0 + mov r3, #0x98 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x18] + bl FUN_0200A8B8 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r6, #0 + add r3, r4, #0 + bl MOD16_021E5104 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r6, #0 + add r3, r4, #0 + bl MOD16_021E5158 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r5, #0 + add r1, r6, #0 + str r4, [sp] + bl MOD16_021E51AC + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E5100: .word 0x00000266 + thumb_func_end MOD16_021E5064 + + thumb_func_start MOD16_021E5104 +MOD16_021E5104: ; 0x021E5104 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0x40 + add r6, r1, #0 + str r2, [sp, #0x10] + add r5, r3, #0 + bl FUN_020219F4 + mov r2, #0x9b + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + add r3, r6, #0 + bl FUN_0200A86C + ldr r1, [sp, #0x10] + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0x58 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r5, [sp, #8] + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0xb8 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5104 + + thumb_func_start MOD16_021E5158 +MOD16_021E5158: ; 0x021E5158 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0x40 + add r6, r1, #0 + str r2, [sp, #0x10] + add r5, r3, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021E51A8 ; =0x0000026B + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + ldr r1, [sp, #0x10] + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0x68 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r5, [sp, #8] + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0xb8 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E51A8: .word 0x0000026B + thumb_func_end MOD16_021E5158 + + thumb_func_start MOD16_021E51AC +MOD16_021E51AC: ; 0x021E51AC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r2, #0 + add r2, r3, #0 + mov r1, #2 + add r3, r4, #0 + bl MOD16_021DBC48 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002F08 + cmp r0, #0xf0 + bhs _021E51D8 + lsr r1, r0, #1 + mov r0, #0x80 + sub r3, r0, r1 + b _021E51DA +_021E51D8: + mov r3, #8 +_021E51DA: + mov r0, #0x88 + str r0, [sp] + mov r1, #0 + ldr r0, [sp, #0x20] + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r2, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl MOD16_021DBBAC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E51AC + + thumb_func_start MOD16_021E51FC +MOD16_021E51FC: ; 0x021E51FC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r2, #4] + add r4, r1, #0 + add r6, r3, #0 + bl MOD16_021D9DE8 + add r3, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E5238 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E533C + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E51FC + + thumb_func_start MOD16_021E5224 +MOD16_021E5224: ; 0x021E5224 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E53B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E52F4 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E5224 + + thumb_func_start MOD16_021E5238 +MOD16_021E5238: ; 0x021E5238 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r3, [sp, #0x10] + add r5, r0, #0 + add r6, r2, #0 + ldr r4, [r1] + bl MOD16_021D8520 + add r7, r0, #0 + ldr r0, [sp, #0x10] + bl MOD16_021D8524 + str r0, [sp, #0x14] + bl MOD16_021D8528 + str r0, [sp, #0x18] + bl MOD16_021D852C + str r0, [sp, #0x1c] + bl MOD16_021D8530 + str r0, [sp, #0x20] + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + mov r0, #5 + str r6, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r2, [sp, #0x14] + add r1, r7, #0 + bl FUN_02008F34 + str r0, [r5, #0x24] + bl FUN_02009B04 + ldr r0, [r5, #0x24] + bl FUN_02009474 + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r6, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [sp, #0x18] + add r1, r7, #0 + mov r3, #0 + bl FUN_02008FEC + str r0, [r5, #0x28] + bl FUN_02009D68 + ldr r0, [r5, #0x28] + bl FUN_02009474 + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [sp, #0x1c] + add r1, r7, #0 + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0x2c] + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [sp, #0x20] + add r1, r7, #0 + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0x30] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E5238 + + thumb_func_start MOD16_021E52F4 +MOD16_021E52F4: ; 0x021E52F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + ldr r4, [r1] + cmp r0, #0 + beq _021E533A + bl FUN_02009C0C + ldr r0, [r5, #0x28] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x28] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x2c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x30] + bl FUN_02009490 +_021E533A: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E52F4 + + thumb_func_start MOD16_021E533C +MOD16_021E533C: ; 0x021E533C + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + mov r1, #0xfa + add r5, r0, #0 + lsl r1, r1, #4 + mov r0, #0 + add r6, r2, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r3, [r4, r0] + str r3, [sp, #0x14] + add r3, r0, #4 + ldr r3, [r4, r3] + str r3, [sp, #0x18] + add r3, r0, #0 + add r3, #8 + ldr r3, [r4, r3] + add r0, #0xc + str r3, [sp, #0x1c] + ldr r0, [r4, r0] + add r3, r1, #0 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r0, sp, #0x4c + add r2, r1, #0 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x20 + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + mov r0, #0x1e + lsl r0, r0, #0xe + str r0, [sp, #0x34] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + str r0, [r5] + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E533C + + thumb_func_start MOD16_021E53B4 +MOD16_021E53B4: ; 0x021E53B4 + push {r3, lr} + ldr r0, [r0] + cmp r0, #0 + beq _021E53C0 + bl FUN_0201FFC8 +_021E53C0: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E53B4 + + thumb_func_start MOD16_021E53C4 +MOD16_021E53C4: ; 0x021E53C4 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r6, r2, #0 + bl MOD16_021D9D88 + add r3, r0, #0 + mov r0, #0x2b + lsl r0, r0, #0xe + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + add r2, r6, #0 + bl MOD16_021D7E9C + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D891C + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E53C4 + + thumb_func_start MOD16_021E53F8 +MOD16_021E53F8: ; 0x021E53F8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl MOD16_021D8950 + ldr r0, [r4] + mov r1, #0 + bl MOD16_021D88F0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E53F8 + + thumb_func_start MOD16_021E5410 +MOD16_021E5410: ; 0x021E5410 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r2, r0, #0 + mov r0, #0x30 + str r0, [sp] + mov r0, #0x48 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E5410 + + thumb_func_start MOD16_021E5448 +MOD16_021E5448: ; 0x021E5448 + push {r4, lr} + ldr r0, [r0] + bl MOD16_021D8700 + add r4, r0, #0 + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02007EEC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5448 + + thumb_func_start MOD16_021E5464 +MOD16_021E5464: ; 0x021E5464 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E5500 ; =0x00000FFA + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5a + bl FUN_020091E0 + str r0, [r5, #0x14] + bl FUN_02009B04 + ldr r0, [r5, #0x14] + bl FUN_02009474 + ldr r0, _021E5504 ; =0x00000FAD + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xd + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x18] + bl FUN_02009D68 + ldr r0, [r5, #0x18] + bl FUN_02009474 + ldr r0, _021E5508 ; =0x00000FF8 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x58 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x1c] + ldr r0, _021E550C ; =0x00000FF9 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x59 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x20] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5500: .word 0x00000FFA +_021E5504: .word 0x00000FAD +_021E5508: .word 0x00000FF8 +_021E550C: .word 0x00000FF9 + thumb_func_end MOD16_021E5464 + + thumb_func_start MOD16_021E5510 +MOD16_021E5510: ; 0x021E5510 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x14] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x18] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x20] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E5510 + + thumb_func_start MOD16_021E5554 +MOD16_021E5554: ; 0x021E5554 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x78 + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + str r3, [sp, #0x2c] + ldr r4, [r1] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r6, #4] + add r1, r7, #0 + bl MOD16_021D9964 + str r0, [sp, #0x30] + ldr r1, [sp, #0x30] + add r0, r7, #0 + mov r2, #6 + bl FUN_02068654 + add r6, r0, #0 + ldr r1, [sp, #0x30] + add r0, r7, #0 + mov r2, #7 + bl FUN_02068654 + add r7, r0, #0 + add r0, r6, #0 + bl MOD16_021E563C + add r6, r0, #0 + add r0, r7, #0 + bl MOD16_021E563C + ldr r3, _021E5638 ; =0x00000FF9 + add r7, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x54 + sub r2, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x34] + add r0, sp, #0x54 + str r0, [sp, #0x38] + mov r0, #0x20 + str r0, [sp, #0x48] + mov r0, #1 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x50] + mov r0, #0xaa + lsl r0, r0, #0xc + str r0, [sp, #0x3c] + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x40] + add r0, sp, #0x34 + bl FUN_0201FF84 + add r1, r6, #0 + str r0, [r5, #4] + bl FUN_02020130 + cmp r6, r7 + beq _021E562E + mov r0, #0x37 + lsl r0, r0, #0xe + str r0, [sp, #0x3c] + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x40] + add r0, sp, #0x34 + bl FUN_0201FF84 + add r1, r7, #0 + str r0, [r5, #8] + bl FUN_02020130 + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} +_021E562E: + mov r0, #0 + str r0, [r5, #8] + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5638: .word 0x00000FF9 + thumb_func_end MOD16_021E5554 + + thumb_func_start MOD16_021E563C +MOD16_021E563C: ; 0x021E563C + cmp r0, #0x11 + bhi _021E56B2 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E564C: ; jump table + .short _021E5670 - _021E564C - 2 ; case 0 + .short _021E5674 - _021E564C - 2 ; case 1 + .short _021E5678 - _021E564C - 2 ; case 2 + .short _021E567C - _021E564C - 2 ; case 3 + .short _021E5680 - _021E564C - 2 ; case 4 + .short _021E5684 - _021E564C - 2 ; case 5 + .short _021E5688 - _021E564C - 2 ; case 6 + .short _021E568C - _021E564C - 2 ; case 7 + .short _021E5690 - _021E564C - 2 ; case 8 + .short _021E568C - _021E564C - 2 ; case 9 + .short _021E5694 - _021E564C - 2 ; case 10 + .short _021E5698 - _021E564C - 2 ; case 11 + .short _021E569C - _021E564C - 2 ; case 12 + .short _021E56A0 - _021E564C - 2 ; case 13 + .short _021E56A4 - _021E564C - 2 ; case 14 + .short _021E56A8 - _021E564C - 2 ; case 15 + .short _021E56AC - _021E564C - 2 ; case 16 + .short _021E56B0 - _021E564C - 2 ; case 17 +_021E5670: + mov r0, #0 + bx lr +_021E5674: + mov r0, #6 + bx lr +_021E5678: + mov r0, #0xe + bx lr +_021E567C: + mov r0, #0xa + bx lr +_021E5680: + mov r0, #8 + bx lr +_021E5684: + mov r0, #5 + bx lr +_021E5688: + mov r0, #0xb + bx lr +_021E568C: + mov r0, #7 + bx lr +_021E5690: + mov r0, #9 + bx lr +_021E5694: + mov r0, #1 + bx lr +_021E5698: + mov r0, #3 + bx lr +_021E569C: + mov r0, #2 + bx lr +_021E56A0: + mov r0, #4 + bx lr +_021E56A4: + mov r0, #0xf + bx lr +_021E56A8: + mov r0, #0xd + bx lr +_021E56AC: + mov r0, #0x10 + bx lr +_021E56B0: + mov r0, #0xc +_021E56B2: + bx lr + thumb_func_end MOD16_021E563C + + thumb_func_start MOD16_021E56B4 +MOD16_021E56B4: ; 0x021E56B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021E56C2 + bl FUN_0201FFC8 +_021E56C2: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E56CC + bl FUN_0201FFC8 +_021E56CC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E56B4 + + thumb_func_start MOD16_021E56D0 +MOD16_021E56D0: ; 0x021E56D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xa0 + add r6, r0, #0 + add r0, r2, #0 + add r5, r1, #0 + ldr r0, [r0, #4] + str r2, [sp, #0x2c] + add r7, r3, #0 + ldr r4, [r5] + bl MOD16_021D9DE8 + ldr r3, _021E57C4 ; =0x00000FF9 + str r0, [sp, #0x30] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x7c + sub r2, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x5c] + add r0, sp, #0x7c + str r0, [sp, #0x60] + mov r0, #0x20 + str r0, [sp, #0x70] + mov r0, #1 + str r0, [sp, #0x74] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp, #0x64] + mov r0, #0xd + lsl r0, r0, #0xe + str r0, [sp, #0x68] + add r0, sp, #0x5c + str r7, [sp, #0x78] + bl FUN_0201FF84 + mov r1, #0x11 + str r0, [r6, #0xc] + bl FUN_02020130 + ldr r0, [sp, #0x2c] + ldr r0, [r0, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + beq _021E5768 + mov r0, #0 + str r0, [sp, #0x30] +_021E5768: + mov r0, #0x15 + ldr r1, [r5] + lsl r0, r0, #4 + ldr r0, [r1, r0] + ldr r1, [sp, #0x30] + add r2, r7, #0 + bl MOD16_021E57C8 + add r4, r0, #0 + ldr r0, [r5] + mov r1, #1 + bl MOD16_021D88D4 + mov r1, #0x15 + ldr r2, [r5] + lsl r1, r1, #4 + ldr r1, [r2, r1] + str r1, [sp, #0x34] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0x3c] + ldr r0, [r6, #0xc] + str r0, [sp, #0x40] + mov r0, #0x4d + mvn r0, r0 + str r0, [sp, #0x44] + add r0, #0x46 + str r0, [sp, #0x48] + mov r0, #0 + str r0, [sp, #0x4c] + mov r0, #0x1f + str r0, [sp, #0x50] + mov r0, #1 + str r0, [sp, #0x54] + str r7, [sp, #0x58] + str r4, [sp, #0x38] + add r0, sp, #0x34 + bl MOD16_021DB2BC + str r0, [r6, #0x10] + add r0, r4, #0 + bl MOD16_021DB3BC + add sp, #0xa0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E57C4: .word 0x00000FF9 + thumb_func_end MOD16_021E56D0 + + thumb_func_start MOD16_021E57C8 +MOD16_021E57C8: ; 0x021E57C8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r2, #0 + mov r1, #0x12 + mov r2, #2 + add r7, r0, #0 + bl MOD16_021DB388 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #2 + add r2, r6, #0 + bl MOD16_021DBC08 + add r5, r0, #0 + mov r0, #2 + add r1, r5, #0 + mov r2, #0 + bl FUN_02002E14 + cmp r0, #0x88 + bhs _021E57FC + mov r1, #0x88 + sub r0, r1, r0 + lsr r3, r0, #1 + b _021E57FE +_021E57FC: + mov r3, #0 +_021E57FE: + mov r0, #0 + str r0, [sp] + add r0, r7, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD16_021DB42C + add r0, r5, #0 + bl MOD16_021DBBAC + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E57C8 + + thumb_func_start MOD16_021E5818 +MOD16_021E5818: ; 0x021E5818 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + bl MOD16_021DB338 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5818 + + thumb_func_start MOD16_021E5830 +MOD16_021E5830: ; 0x021E5830 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + mov r1, #1 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021D88F0 + add r0, r7, #0 + bl MOD16_021E5B08 + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E58A2 + cmp r6, #0 + beq _021E587E + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + b _021E58A2 +_021E587E: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E58A2: + add r0, r5, #0 + bl MOD16_021E5B70 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E5830 + + thumb_func_start MOD16_021E58AC +MOD16_021E58AC: ; 0x021E58AC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r2, #0x10] + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E58CC + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E58D6 +_021E58CC: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021E58D6: + add r4, r0, #0 + cmp r4, #1 + bne _021E58FE + cmp r6, #1 + bne _021E58F0 + add r0, r7, #0 + bl MOD16_021E5B3C + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 + b _021E5904 +_021E58F0: + add r0, r5, #0 + bl MOD16_021E5448 + add r0, r5, #0 + bl MOD16_021E53F8 + b _021E5904 +_021E58FE: + add r0, r5, #0 + bl MOD16_021E5B70 +_021E5904: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E58AC + + thumb_func_start MOD16_021E5908 +MOD16_021E5908: ; 0x021E5908 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021E5B08 + cmp r6, #0 + bne _021E592E + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, r7, #0 + mov r3, #4 + bl MOD16_021E5B80 + add r0, r7, #0 + bl MOD16_021E5BB8 +_021E592E: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E5988 + cmp r6, #0 + beq _021E5964 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r2, r1, #0 + sub r2, #0x14 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E5964: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r3, r1, #0 + sub r3, #0x14 + bl MOD16_021D8988 +_021E5988: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E5908 + + thumb_func_start MOD16_021E598C +MOD16_021E598C: ; 0x021E598C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bne _021E59AC + bl MOD16_021E5B9C + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E5BD4 + str r0, [sp, #4] + b _021E59B2 +_021E59AC: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] +_021E59B2: + ldr r0, [r6, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021E59CC + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #8] + b _021E59D8 +_021E59CC: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #8] +_021E59D8: + mov r1, #0 + add r2, sp, #0 +_021E59DC: + ldr r0, [r2] + cmp r0, #0 + beq _021E59EA + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #3 + blt _021E59DC +_021E59EA: + cmp r1, #3 + bne _021E59FE + cmp r7, #1 + bne _021E59F8 + add r0, r5, #0 + bl MOD16_021E5B3C +_021E59F8: + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021E59FE: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E598C + + thumb_func_start MOD16_021E5A04 +MOD16_021E5A04: ; 0x021E5A04 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021E5B08 + ldr r0, [r5] + mov r1, #1 + bl MOD16_021D88F0 + cmp r6, #0 + bne _021E5A2C + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, r7, #0 + mov r3, #1 + bl MOD16_021E5B80 +_021E5A2C: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E5A86 + cmp r6, #0 + beq _021E5A62 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E5A62: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E5A86: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5A04 + + thumb_func_start MOD16_021E5A8C +MOD16_021E5A8C: ; 0x021E5A8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bne _021E5AA2 + bl MOD16_021E5B9C + str r0, [sp] + b _021E5AA6 +_021E5AA2: + mov r0, #1 + str r0, [sp] +_021E5AA6: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E5AC0 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #4] + b _021E5ACC +_021E5AC0: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #4] +_021E5ACC: + mov r1, #0 + add r2, sp, #0 +_021E5AD0: + ldr r0, [r2] + cmp r0, #0 + beq _021E5ADE + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021E5AD0 +_021E5ADE: + cmp r1, #2 + bne _021E5B02 + cmp r6, #1 + bne _021E5AF6 + add r0, r7, #0 + bl MOD16_021E5B3C + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 + b _021E5AFC +_021E5AF6: + add r0, r5, #0 + bl MOD16_021E53F8 +_021E5AFC: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E5B02: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E5A8C + + thumb_func_start MOD16_021E5B08 +MOD16_021E5B08: ; 0x021E5B08 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r4, #0 + add r5, r7, #0 + mov r6, #1 +_021E5B12: + ldr r0, [r5] + cmp r0, #0 + beq _021E5B1E + add r1, r6, #0 + bl FUN_02020398 +_021E5B1E: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E5B12 + ldr r0, [r7, #0xc] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r7, #0x10] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5B08 + + thumb_func_start MOD16_021E5B3C +MOD16_021E5B3C: ; 0x021E5B3C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r4, #0 + add r5, r7, #0 + add r6, r4, #0 +_021E5B46: + ldr r0, [r5] + cmp r0, #0 + beq _021E5B52 + add r1, r6, #0 + bl FUN_02020398 +_021E5B52: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E5B46 + ldr r0, [r7, #0xc] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r7, #0x10] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5B3C + + thumb_func_start MOD16_021E5B70 +MOD16_021E5B70: ; 0x021E5B70 + mov r1, #0x5b + ldr r0, [r0] + lsl r1, r1, #2 + ldr r3, _021E5B7C ; =MOD16_021D8A8C + add r1, r0, r1 + bx r3 + .align 2, 0 +_021E5B7C: .word MOD16_021D8A8C + thumb_func_end MOD16_021E5B70 + + thumb_func_start MOD16_021E5B80 +MOD16_021E5B80: ; 0x021E5B80 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + str r2, [sp] + str r3, [sp, #4] + add r0, #0x34 + mov r1, #0x30 + add r2, r4, #0 + mov r3, #0x48 + bl MOD16_021D8BD8 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5B80 + + thumb_func_start MOD16_021E5B9C +MOD16_021E5B9C: ; 0x021E5B9C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x34 + bl MOD16_021D8BF4 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r5, #0x34] + ldr r2, [r5, #0x38] + bl MOD16_021D86F4 + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E5B9C + + thumb_func_start MOD16_021E5BB8 +MOD16_021E5BB8: ; 0x021E5BB8 + push {r3, lr} + sub sp, #8 + mov r1, #0x52 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + add r0, #0x54 + mov r1, #0xac + mov r2, #0xaa + mov r3, #0x20 + bl MOD16_021D8BD8 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD16_021E5BB8 + + thumb_func_start MOD16_021E5BD4 +MOD16_021E5BD4: ; 0x021E5BD4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x54 + bl MOD16_021D8BF4 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r5, #0x54] + ldr r2, [r5, #0x58] + bl MOD16_021D7F6C + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E5BD4 + + thumb_func_start MOD16_021E5BF0 +MOD16_021E5BF0: ; 0x021E5BF0 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021E5C88 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E5CC8 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021E5D28 + str r0, [r5, #0x24] + ldr r0, _021E5C30 ; =MOD16_021E5D44 + str r0, [r5, #8] + ldr r0, _021E5C34 ; =MOD16_021E5D6C + str r0, [r5, #0xc] + ldr r0, _021E5C38 ; =MOD16_021E5D7C + str r0, [r5, #0x10] + ldr r0, _021E5C3C ; =MOD16_021E5D80 + str r0, [r5, #0x14] + ldr r0, _021E5C40 ; =MOD16_021E5E14 + str r0, [r5, #0x18] + ldr r0, _021E5C44 ; =MOD16_021E5ED4 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5C30: .word MOD16_021E5D44 +_021E5C34: .word MOD16_021E5D6C +_021E5C38: .word MOD16_021E5D7C +_021E5C3C: .word MOD16_021E5D80 +_021E5C40: .word MOD16_021E5E14 +_021E5C44: .word MOD16_021E5ED4 + thumb_func_end MOD16_021E5BF0 + + thumb_func_start MOD16_021E5C48 +MOD16_021E5C48: ; 0x021E5C48 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E5D00 + ldr r0, [r4, #4] + bl MOD16_021E5D14 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5C48 + + thumb_func_start MOD16_021E5C5C +MOD16_021E5C5C: ; 0x021E5C5C + push {r3, r4, r5, lr} + ldr r4, [r0] + ldr r0, [r0, #4] + add r2, r1, #0 + ldr r0, [r0, #4] + cmp r0, #1 + bne _021E5C6E + mov r0, #0 + pop {r3, r4, r5, pc} +_021E5C6E: + ldr r5, [r4, #0x14] + ldr r0, [r4, #0xc] + ldr r3, [r4, #0x10] + add r1, r5, #0 + bl MOD16_021E5D2C + str r0, [r4, #0x14] + cmp r5, r0 + beq _021E5C84 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E5C84: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E5C5C + + thumb_func_start MOD16_021E5C88 +MOD16_021E5C88: ; 0x021E5C88 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bne _021E5C9A + bl ErrorHandling +_021E5C9A: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021E5CA0: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021E5CA0 + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E5C88 + + thumb_func_start MOD16_021E5CC8 +MOD16_021E5CC8: ; 0x021E5CC8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021E5CDA + bl ErrorHandling +_021E5CDA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E5CC8 + + thumb_func_start MOD16_021E5D00 +MOD16_021E5D00: ; 0x021E5D00 + push {r4, lr} + add r4, r0, #0 + bne _021E5D0A + bl ErrorHandling +_021E5D0A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5D00 + + thumb_func_start MOD16_021E5D14 +MOD16_021E5D14: ; 0x021E5D14 + push {r4, lr} + add r4, r0, #0 + bne _021E5D1E + bl ErrorHandling +_021E5D1E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5D14 + + thumb_func_start MOD16_021E5D28 +MOD16_021E5D28: ; 0x021E5D28 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E5D28 + + thumb_func_start MOD16_021E5D2C +MOD16_021E5D2C: ; 0x021E5D2C + cmp r2, #0 + ble _021E5D3A + add r2, r1, r2 + cmp r2, r3 + blt _021E5D40 + mov r2, #0 + b _021E5D40 +_021E5D3A: + add r0, r1, r2 + bpl _021E5D40 + sub r2, r3, #1 +_021E5D40: + add r0, r2, #0 + bx lr + thumb_func_end MOD16_021E5D2C + + thumb_func_start MOD16_021E5D44 +MOD16_021E5D44: ; 0x021E5D44 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r5, r0, #0 + add r1, r4, #0 + bl MOD16_021E6648 + str r0, [r4, #0xc] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E6690 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E5D44 + + thumb_func_start MOD16_021E5D6C +MOD16_021E5D6C: ; 0x021E5D6C + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _021E5D76 + mov r0, #1 + bx lr +_021E5D76: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E5D6C + + thumb_func_start MOD16_021E5D7C +MOD16_021E5D7C: ; 0x021E5D7C + mov r0, #1 + bx lr + thumb_func_end MOD16_021E5D7C + + thumb_func_start MOD16_021E5D80 +MOD16_021E5D80: ; 0x021E5D80 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021E5E0A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E5D9C: ; jump table + .short _021E5DA4 - _021E5D9C - 2 ; case 0 + .short _021E5DCC - _021E5D9C - 2 ; case 1 + .short _021E5DEA - _021E5D9C - 2 ; case 2 + .short _021E5E00 - _021E5D9C - 2 ; case 3 +_021E5DA4: + ldr r0, [r4, #4] + mov r1, #0xd0 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0xd0 + blx Call_FillMemWithValue + ldr r0, [r4, #8] + ldr r1, [r7, #0xc] + add r0, #0xc8 + str r1, [r0] + mov r0, #0 + str r0, [r5, #4] + str r0, [r5, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5E0A +_021E5DCC: + ldr r3, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E5F40 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E63B4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5E0A +_021E5DEA: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E6424 + cmp r0, #0 + beq _021E5E0A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5E0A +_021E5E00: + ldr r0, _021E5E10 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E5E0A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5E10: .word 0x04000050 + thumb_func_end MOD16_021E5D80 + + thumb_func_start MOD16_021E5E14 +MOD16_021E5E14: ; 0x021E5E14 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #0 + beq _021E5E30 + cmp r0, #1 + beq _021E5E7C + cmp r0, #2 + beq _021E5E94 + b _021E5EC0 +_021E5E30: + add r0, r6, #0 + add r0, #0xcc + ldr r1, [r7, #0x14] + ldr r0, [r0] + cmp r1, r0 + beq _021E5EC4 + add r0, r6, #0 + add r0, #0xcc + str r1, [r0] + add r0, r6, #0 + add r0, #0xb8 + ldr r0, [r0] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r6, #0 + add r1, r2, r1 + add r0, #0xb8 + str r1, [r0] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E6510 + add r0, r6, #0 + bl MOD16_021E6E24 + mov r0, #1 + str r0, [r5, #4] + ldr r0, _021E5ED0 ; =0x0000068B + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5EC4 +_021E5E7C: + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E6534 + cmp r0, #1 + bne _021E5EC4 + mov r0, #1 + str r0, [r5, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5EC4 +_021E5E94: + ldr r0, [r5, #8] + cmp r0, #1 + bne _021E5EC4 + ldr r0, [r7, #0xc] + add r1, r5, #0 + str r0, [sp] + ldr r0, [r7, #0x14] + str r0, [sp, #4] + ldr r3, [r4, #4] + add r0, r6, #0 + bl MOD16_021E6BA4 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021E6070 + mov r0, #0 + str r0, [r5, #8] + str r0, [r5, #4] + str r0, [r4] + b _021E5EC4 +_021E5EC0: + bl ErrorHandling +_021E5EC4: + add r0, r6, #0 + bl MOD16_021E6E44 + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5ED0: .word 0x0000068B + thumb_func_end MOD16_021E5E14 + + thumb_func_start MOD16_021E5ED4 +MOD16_021E5ED4: ; 0x021E5ED4 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021E5F3A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E5EEE: ; jump table + .short _021E5EF8 - _021E5EEE - 2 ; case 0 + .short _021E5F08 - _021E5EEE - 2 ; case 1 + .short _021E5F1C - _021E5EEE - 2 ; case 2 + .short _021E5F2A - _021E5EEE - 2 ; case 3 + .short _021E5F36 - _021E5EEE - 2 ; case 4 +_021E5EF8: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E63B4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5F3A +_021E5F08: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E6424 + cmp r0, #0 + beq _021E5F3A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5F3A +_021E5F1C: + add r1, r3, #0 + bl MOD16_021E5F88 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5F3A +_021E5F2A: + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5F3A +_021E5F36: + mov r0, #1 + pop {r4, pc} +_021E5F3A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5ED4 + + thumb_func_start MOD16_021E5F40 +MOD16_021E5F40: ; 0x021E5F40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + add r5, r1, #0 + add r6, r3, #0 + add r4, r2, #0 + bl MOD16_021E600C + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021E6198 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E5FA4 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E6288 + ldr r0, [r4, #0xc] + add r1, r5, #0 + str r0, [sp] + ldr r0, [r4, #0x14] + add r2, r4, #0 + str r0, [sp, #4] + add r0, r7, #0 + add r3, r6, #0 + bl MOD16_021E6B30 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5F40 + + thumb_func_start MOD16_021E5F88 +MOD16_021E5F88: ; 0x021E5F88 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E6E0C + add r0, r5, #0 + bl MOD16_021E6394 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E6244 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E5F88 + + thumb_func_start MOD16_021E5FA4 +MOD16_021E5FA4: ; 0x021E5FA4 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x32 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E5FA4 + + thumb_func_start MOD16_021E600C +MOD16_021E600C: ; 0x021E600C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + add r6, r0, #0 + ldr r0, [r4, #4] + add r5, r1, #0 + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r4, #0xc] + add r1, r5, #0 + str r0, [sp] + ldr r0, [r4, #0x14] + add r2, r4, #0 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r3, r7, #0 + bl MOD16_021E60A8 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + ldr r3, [r4, #0x10] + mov r2, #1 + bl MOD16_021E5D2C + ldr r1, [r4, #0xc] + add r2, r4, #0 + str r1, [sp] + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021E60A8 + mov r4, #0 + mov r6, #1 +_021E605C: + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021D8810 + add r4, r4, #1 + cmp r4, #4 + blt _021E605C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E600C + + thumb_func_start MOD16_021E6070 +MOD16_021E6070: ; 0x021E6070 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r6, r1, #0 + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + ldr r3, [r4, #0x10] + mov r2, #1 + bl MOD16_021E5D2C + ldr r1, [r4, #0xc] + add r2, r4, #0 + str r1, [sp] + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD16_021E60A8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6070 + + thumb_func_start MOD16_021E60A8 +MOD16_021E60A8: ; 0x021E60A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, [sp, #0x30] + add r6, r0, #0 + add r7, r1, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r4, [sp, #0x2c] + cmp r5, #2 + ble _021E60C0 + bl ErrorHandling +_021E60C0: + ldr r0, [sp, #0x28] + cmp r0, #9 + bhi _021E6172 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E60D2: ; jump table + .short _021E60E6 - _021E60D2 - 2 ; case 0 + .short _021E60E6 - _021E60D2 - 2 ; case 1 + .short _021E60E6 - _021E60D2 - 2 ; case 2 + .short _021E60E6 - _021E60D2 - 2 ; case 3 + .short _021E6122 - _021E60D2 - 2 ; case 4 + .short _021E6136 - _021E60D2 - 2 ; case 5 + .short _021E60FA - _021E60D2 - 2 ; case 6 + .short _021E610E - _021E60D2 - 2 ; case 7 + .short _021E614A - _021E60D2 - 2 ; case 8 + .short _021E615E - _021E60D2 - 2 ; case 9 +_021E60E6: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6758 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E60FA: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E67F0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E610E: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E687C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E6122: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6908 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E6136: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6994 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E614A: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E615E: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6AAC + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E6172: + bl ErrorHandling + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E60A8 + + thumb_func_start MOD16_021E617C +MOD16_021E617C: ; 0x021E617C + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E6184: + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021D8810 + add r4, r4, #1 + cmp r4, #4 + blt _021E6184 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E617C + + thumb_func_start MOD16_021E6198 +MOD16_021E6198: ; 0x021E6198 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E6234 ; =0x0000372A + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x7a + bl FUN_020091E0 + str r0, [r5, #0x10] + bl FUN_02009B04 + ldr r0, [r5, #0x10] + bl FUN_02009474 + ldr r0, _021E6238 ; =0x000036C6 + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x16 + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x14] + bl FUN_02009D68 + ldr r0, [r5, #0x14] + bl FUN_02009474 + ldr r0, _021E623C ; =0x0000372B + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x7b + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x18] + ldr r0, _021E6240 ; =0x00003729 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x79 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x1c] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E6234: .word 0x0000372A +_021E6238: .word 0x000036C6 +_021E623C: .word 0x0000372B +_021E6240: .word 0x00003729 + thumb_func_end MOD16_021E6198 + + thumb_func_start MOD16_021E6244 +MOD16_021E6244: ; 0x021E6244 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x14] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E6244 + + thumb_func_start MOD16_021E6288 +MOD16_021E6288: ; 0x021E6288 + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + add r5, r3, #0 + ldr r4, [r1] + ldr r3, _021E6390 ; =0x00003729 + add r6, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + str r2, [sp, #0x2c] + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x58 + sub r2, #0x63 + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r4, #0 + str r0, [sp, #0x38] + add r0, sp, #0x58 + str r0, [sp, #0x3c] + mov r0, #0x20 + str r0, [sp, #0x4c] + mov r0, #1 + str r5, [sp, #0x54] + str r0, [sp, #0x50] + str r4, [sp, #0x40] + str r4, [sp, #0x44] + add r5, r6, #0 + mov r7, #0x1f +_021E62F6: + add r0, r4, #0 + add r1, sp, #0x34 + add r2, sp, #0x30 + bl MOD16_021E6D54 + ldr r0, [sp, #0x34] + lsl r0, r0, #0xc + str r0, [sp, #0x40] + ldr r0, [sp, #0x30] + add r0, #8 + lsl r0, r0, #0xc + str r0, [sp, #0x44] + add r0, sp, #0x38 + bl FUN_0201FF84 + str r0, [r5] + lsr r1, r4, #0x1f + lsl r0, r4, #0x1f + sub r0, r0, r1 + ror r0, r7 + add r0, r1, r0 + ldr r0, [r5] + bne _021E632C + mov r1, #0 + bl FUN_02020130 + b _021E6332 +_021E632C: + mov r1, #2 + bl FUN_02020130 +_021E6332: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021E62F6 + mov r0, #0x3e + lsl r0, r0, #0xe + str r0, [sp, #0x40] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x44] + mov r0, #0 + str r0, [sp, #0x4c] + add r0, sp, #0x38 + bl FUN_0201FF84 + add r1, r6, #0 + add r1, #0xbc + str r0, [r1] + add r0, r6, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #1 + bl FUN_02020130 + add r0, r6, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #1 + bl FUN_020200BC + add r0, r6, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #0 + bl FUN_02020238 + ldr r0, [sp, #0x2c] + ldr r0, [r0, #0x10] + cmp r0, #1 + bgt _021E638C + add r6, #0xbc + ldr r0, [r6] + mov r1, #0 + bl FUN_020200A0 +_021E638C: + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E6390: .word 0x00003729 + thumb_func_end MOD16_021E6288 + + thumb_func_start MOD16_021E6394 +MOD16_021E6394: ; 0x021E6394 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_021E639C: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021E639C + add r6, #0xbc + ldr r0, [r6] + bl FUN_0201FFC8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E6394 + + thumb_func_start MOD16_021E63B4 +MOD16_021E63B4: ; 0x021E63B4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E6474 + ldr r0, [r4, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E641A + cmp r6, #0 + beq _021E63F6 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + b _021E641A +_021E63F6: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E641A: + add r0, r5, #0 + bl MOD16_021E64F4 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E63B4 + + thumb_func_start MOD16_021E6424 +MOD16_021E6424: ; 0x021E6424 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E6444 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E644E +_021E6444: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021E644E: + add r4, r0, #0 + cmp r4, #1 + bne _021E6468 + cmp r6, #1 + bne _021E6460 + add r0, r7, #0 + bl MOD16_021E64B4 + b _021E646E +_021E6460: + add r0, r5, #0 + bl MOD16_021E617C + b _021E646E +_021E6468: + add r0, r5, #0 + bl MOD16_021E64F4 +_021E646E: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6424 + + thumb_func_start MOD16_021E6474 +MOD16_021E6474: ; 0x021E6474 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + mov r7, #1 +_021E647E: + ldr r0, [r4] + add r1, r7, #0 + bl FUN_02020398 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _021E647E + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #1 + bl FUN_02020398 + mov r4, #0 + mov r6, #1 +_021E649E: + ldr r0, [r5, #0x20] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E649E + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6474 + + thumb_func_start MOD16_021E64B4 +MOD16_021E64B4: ; 0x021E64B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_021E64BE: + ldr r0, [r4] + add r1, r7, #0 + bl FUN_02020398 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _021E64BE + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #0 + bl FUN_02020398 + mov r4, #0 + add r6, r4, #0 +_021E64DE: + ldr r0, [r5, #0x20] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E64DE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E64B4 + + thumb_func_start MOD16_021E64F4 +MOD16_021E64F4: ; 0x021E64F4 + push {r4, r5, r6, lr} + mov r6, #0x5b + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_021E64FE: + ldr r0, [r5] + add r2, r4, #0 + add r1, r0, r6 + bl MOD16_021D8AAC + add r4, r4, #1 + cmp r4, #4 + blt _021E64FE + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E64F4 + + thumb_func_start MOD16_021E6510 +MOD16_021E6510: ; 0x021E6510 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0xff + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + mvn r7, r7 +_021E651C: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + str r4, [sp] + bl MOD16_021E6570 + add r4, r4, #1 + cmp r4, #4 + blt _021E651C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6510 + + thumb_func_start MOD16_021E6534 +MOD16_021E6534: ; 0x021E6534 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + cmp r0, #0 + bne _021E6544 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E6544: + mov r4, #0 +_021E6546: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E65D8 + add r4, r4, #1 + add r7, r0, #0 + cmp r4, #4 + blt _021E6546 + mov r4, #0 +_021E655A: + ldr r0, [r5, #0x20] + ldr r0, [r0] + bl FUN_02011938 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E655A + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6534 + + thumb_func_start MOD16_021E6570 +MOD16_021E6570: ; 0x021E6570 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r6, r0, #0 + add r0, #0xb8 + ldr r0, [r0] + add r7, r1, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r5, [sp, #0x38] + cmp r0, #0 + bne _021E658A + add r4, r5, #0 + b _021E6590 +_021E658A: + sub r4, r5, #2 + bpl _021E6590 + add r4, r4, #4 +_021E6590: + add r0, r5, #0 + add r1, sp, #0x14 + add r2, sp, #0x10 + bl MOD16_021E6D54 + ldr r0, [r7] + add r1, sp, #0x1c + add r2, sp, #0x18 + add r3, r4, #0 + bl MOD16_021D87E0 + add r1, r6, #0 + ldr r3, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r0, #0x10 + str r3, [sp] + str r0, [sp, #4] + ldr r4, [sp, #0xc] + add r1, #0x28 + lsl r0, r5, #5 + add r0, r1, r0 + ldr r1, [sp, #8] + add r3, r3, r4 + add r1, r2, r1 + bl MOD16_021D8BD8 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x10] + sub r1, r1, r0 + lsl r0, r5, #2 + add r0, r6, r0 + add r0, #0xa8 + str r1, [r0] + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6570 + + thumb_func_start MOD16_021E65D8 +MOD16_021E65D8: ; 0x021E65D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + add r0, #0xb8 + ldr r0, [r0] + add r4, r2, #0 + str r1, [sp] + str r2, [sp, #4] + cmp r0, #0 + beq _021E65F2 + sub r4, r4, #2 + bpl _021E65F2 + add r4, r4, #4 +_021E65F2: + ldr r0, [sp, #4] + add r7, r6, #0 + lsl r5, r0, #5 + add r7, #0x28 + add r0, r7, r5 + bl MOD16_021D8BF4 + str r0, [sp, #8] + add r0, r6, #0 + str r0, [sp, #0xc] + add r0, #0x2c + str r0, [sp, #0xc] + ldr r2, [sp, #0xc] + ldr r0, [sp] + ldr r3, [r2, r5] + ldr r2, [sp, #4] + ldr r0, [r0] + lsl r2, r2, #2 + add r2, r6, r2 + add r2, #0xa8 + ldr r2, [r2] + ldr r1, [r7, r5] + add r2, r3, r2 + add r3, r4, #0 + bl MOD16_021D87BC + ldr r0, [r7, r5] + add r1, sp, #0x10 + lsl r0, r0, #0xc + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + ldr r0, [r0, r5] + add r0, #8 + lsl r0, r0, #0xc + str r0, [sp, #0x14] + lsl r0, r4, #2 + ldr r0, [r6, r0] + bl FUN_02020044 + ldr r0, [sp, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E65D8 + + thumb_func_start MOD16_021E6648 +MOD16_021E6648: ; 0x021E6648 + push {r3, lr} + mov r3, #0x67 + lsl r3, r3, #2 + cmp r0, r3 + bne _021E6656 + mov r0, #6 + pop {r3, pc} +_021E6656: + add r2, r3, #1 + cmp r0, r2 + bne _021E6660 + mov r0, #7 + pop {r3, pc} +_021E6660: + add r2, r3, #0 + add r2, #0xa + cmp r0, r2 + bne _021E666C + mov r0, #4 + pop {r3, pc} +_021E666C: + add r2, r3, #0 + add r2, #0xb + cmp r0, r2 + bne _021E6678 + mov r0, #5 + pop {r3, pc} +_021E6678: + cmp r0, #0xc9 + bne _021E6680 + mov r0, #8 + pop {r3, pc} +_021E6680: + sub r3, #0x1a + cmp r0, r3 + bne _021E668A + mov r0, #9 + pop {r3, pc} +_021E668A: + bl MOD16_021E66F4 + pop {r3, pc} + thumb_func_end MOD16_021E6648 + + thumb_func_start MOD16_021E6690 +MOD16_021E6690: ; 0x021E6690 + push {r3, lr} + mov r2, #0x67 + add r3, r0, #0 + lsl r2, r2, #2 + cmp r3, r2 + bne _021E66A4 + ldr r0, [r1, #4] + bl MOD16_021D9A18 + pop {r3, pc} +_021E66A4: + add r0, r2, #1 + cmp r3, r0 + bne _021E66B2 + ldr r0, [r1, #4] + bl MOD16_021D9A24 + pop {r3, pc} +_021E66B2: + add r0, r2, #0 + add r0, #0xa + cmp r3, r0 + bne _021E66C2 + ldr r0, [r1, #4] + bl MOD16_021D9A00 + pop {r3, pc} +_021E66C2: + add r0, r2, #0 + add r0, #0xb + cmp r3, r0 + bne _021E66D2 + ldr r0, [r1, #4] + bl MOD16_021D9A0C + pop {r3, pc} +_021E66D2: + cmp r3, #0xc9 + bne _021E66DE + ldr r0, [r1, #4] + bl MOD16_021D99F4 + pop {r3, pc} +_021E66DE: + sub r2, #0x1a + cmp r3, r2 + ldr r0, [r1, #4] + bne _021E66EC + bl MOD16_021D9A48 + pop {r3, pc} +_021E66EC: + add r1, r3, #0 + bl MOD16_021D99DC + pop {r3, pc} + thumb_func_end MOD16_021E6690 + + thumb_func_start MOD16_021E66F4 +MOD16_021E66F4: ; 0x021E66F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x12 + add r5, r0, #0 + bl FUN_02068678 + cmp r0, #0 + bne _021E6708 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E6708: + cmp r0, #0xfe + bne _021E6710 + mov r0, #2 + pop {r3, r4, r5, pc} +_021E6710: + cmp r0, #0xff + bne _021E6718 + mov r0, #3 + pop {r3, r4, r5, pc} +_021E6718: + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD16_021D99DC + cmp r0, #1 + bne _021E6754 + ldr r0, [r4, #4] + add r1, r5, #0 + mov r2, #0 + bl MOD16_021D98DC + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _021E673C + bl ErrorHandling +_021E673C: + cmp r4, #0 + bne _021E6744 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E6744: + cmp r4, #0xfe + bne _021E674C + mov r0, #2 + pop {r3, r4, r5, pc} +_021E674C: + cmp r4, #0xff + bne _021E6754 + mov r0, #3 + pop {r3, r4, r5, pc} +_021E6754: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E66F4 + + thumb_func_start MOD16_021E6758 +MOD16_021E6758: ; 0x021E6758 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r4, [sp, #0x34] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x18 + add r2, sp, #0x14 + str r3, [sp, #0x10] + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E677E + add r0, r4, #0 + b _021E6784 +_021E677E: + sub r0, r4, #2 + bpl _021E6784 + add r0, r0, #4 +_021E6784: + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x10] + str r1, [sp] + ldr r1, [sp, #0x14] + mov r3, #2 + str r1, [sp, #4] + ldr r1, [sp, #0x30] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r6] + ldr r1, [r7, #4] + bl MOD16_021D8070 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E67AA + bl ErrorHandling +_021E67AA: + add r0, r4, #1 + add r1, sp, #0x18 + add r2, sp, #0x14 + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r1, [r5] + add r0, r4, #1 + cmp r1, #0 + beq _021E67C4 + sub r0, r0, #2 + bpl _021E67C4 + add r0, r0, #4 +_021E67C4: + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x10] + str r1, [sp] + ldr r1, [sp, #0x14] + mov r3, #0 + str r1, [sp, #4] + ldr r1, [sp, #0x30] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r6] + ldr r1, [r7, #4] + bl MOD16_021D8070 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E67EA + bl ErrorHandling +_021E67EA: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6758 + + thumb_func_start MOD16_021E67F0 +MOD16_021E67F0: ; 0x021E67F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E6814 + add r1, r4, #0 + b _021E681A +_021E6814: + sub r1, r4, #2 + bpl _021E681A + add r1, r1, #4 +_021E681A: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D81A0 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E683C + bl ErrorHandling +_021E683C: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E6856 + sub r1, r1, #2 + bpl _021E6856 + add r1, r1, #4 +_021E6856: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D81A0 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6878 + bl ErrorHandling +_021E6878: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E67F0 + + thumb_func_start MOD16_021E687C +MOD16_021E687C: ; 0x021E687C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E68A0 + add r1, r4, #0 + b _021E68A6 +_021E68A0: + sub r1, r4, #2 + bpl _021E68A6 + add r1, r1, #4 +_021E68A6: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D81E4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E68C8 + bl ErrorHandling +_021E68C8: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E68E2 + sub r1, r1, #2 + bpl _021E68E2 + add r1, r1, #4 +_021E68E2: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D81E4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6904 + bl ErrorHandling +_021E6904: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E687C + + thumb_func_start MOD16_021E6908 +MOD16_021E6908: ; 0x021E6908 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E692C + add r1, r4, #0 + b _021E6932 +_021E692C: + sub r1, r4, #2 + bpl _021E6932 + add r1, r1, #4 +_021E6932: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D8110 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6954 + bl ErrorHandling +_021E6954: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E696E + sub r1, r1, #2 + bpl _021E696E + add r1, r1, #4 +_021E696E: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D8110 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6990 + bl ErrorHandling +_021E6990: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6908 + + thumb_func_start MOD16_021E6994 +MOD16_021E6994: ; 0x021E6994 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E69B8 + add r1, r4, #0 + b _021E69BE +_021E69B8: + sub r1, r4, #2 + bpl _021E69BE + add r1, r1, #4 +_021E69BE: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D8158 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E69E0 + bl ErrorHandling +_021E69E0: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E69FA + sub r1, r1, #2 + bpl _021E69FA + add r1, r1, #4 +_021E69FA: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D8158 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6A1C + bl ErrorHandling +_021E6A1C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6994 + + thumb_func_start MOD16_021E6A20 +MOD16_021E6A20: ; 0x021E6A20 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E6A44 + add r1, r4, #0 + b _021E6A4A +_021E6A44: + sub r1, r4, #2 + bpl _021E6A4A + add r1, r1, #4 +_021E6A4A: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D80CC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6A6C + bl ErrorHandling +_021E6A6C: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E6A86 + sub r1, r1, #2 + bpl _021E6A86 + add r1, r1, #4 +_021E6A86: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D80CC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6AA8 + bl ErrorHandling +_021E6AA8: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6A20 + + thumb_func_start MOD16_021E6AAC +MOD16_021E6AAC: ; 0x021E6AAC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E6AD0 + add r1, r4, #0 + b _021E6AD6 +_021E6AD0: + sub r1, r4, #2 + bpl _021E6AD6 + add r1, r1, #4 +_021E6AD6: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D822C + cmp r0, #0xf + bne _021E6AF4 + bl ErrorHandling +_021E6AF4: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E6B0E + sub r1, r1, #2 + bpl _021E6B0E + add r1, r1, #4 +_021E6B0E: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D822C + cmp r0, #0xf + bne _021E6B2C + bl ErrorHandling +_021E6B2C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6AAC + + thumb_func_start MOD16_021E6B30 +MOD16_021E6B30: ; 0x021E6B30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r1, r5, #0 + add r1, #0xb8 + ldr r1, [r1] + add r4, r2, #0 + add r7, r3, #0 + mov r0, #0 + cmp r1, #0 + beq _021E6B4E + sub r0, r0, #2 + bpl _021E6B4E + add r0, r0, #4 +_021E6B4E: + ldr r1, [sp, #0x28] + add r2, r4, #0 + str r1, [sp] + ldr r1, [sp, #0x2c] + add r3, r7, #0 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E6C04 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x2c] + ldr r3, [r4, #0x10] + mov r2, #1 + bl MOD16_021E5D2C + add r2, r5, #0 + add r2, #0xb8 + ldr r2, [r2] + mov r1, #2 + cmp r2, #0 + beq _021E6B86 + sub r1, r1, #2 + bpl _021E6B86 + add r1, r1, #4 +_021E6B86: + ldr r2, [sp, #0x28] + add r3, r7, #0 + str r2, [sp] + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E6C04 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6B30 + + thumb_func_start MOD16_021E6BA4 +MOD16_021E6BA4: ; 0x021E6BA4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r2, #0 + add r5, r0, #0 + str r1, [sp, #0x10] + str r3, [sp, #0x14] + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x34] + ldr r3, [r6, #0x10] + mov r2, #1 + bl MOD16_021E5D2C + str r0, [sp, #0x18] + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + mov r4, #2 + cmp r0, #0 + beq _021E6BD0 + sub r4, r4, #2 + bpl _021E6BD0 + add r4, r4, #4 +_021E6BD0: + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r7, r2, r1 + lsl r0, r7, #2 + add r0, r5, r0 + ldr r0, [r0, #0x20] + bl MOD16_021DB338 + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x10] + str r0, [sp] + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x14] + str r0, [sp, #4] + str r4, [sp, #8] + add r0, r5, #0 + add r2, r6, #0 + str r7, [sp, #0xc] + bl MOD16_021E6C04 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6BA4 + + thumb_func_start MOD16_021E6C04 +MOD16_021E6C04: ; 0x021E6C04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r0, #0 + ldr r0, [sp, #0x60] + add r6, r1, #0 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r5, [r6] + cmp r0, #0 + bne _021E6C20 + bl ErrorHandling +_021E6C20: + ldr r1, [sp, #8] + ldr r2, [sp, #0x58] + ldr r3, [sp, #0x5c] + add r0, r6, #0 + bl MOD16_021E6D94 + str r0, [sp, #0x10] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + str r0, [sp, #0x18] + ldr r0, [r4, #0x14] + bl FUN_02009E54 + mov r1, #0x28 + str r1, [sp, #0x2c] + mov r1, #3 + str r1, [sp, #0x30] + mov r1, #0 + ldr r2, [sp, #0xc] + str r1, [sp, #0x34] + mov r1, #1 + str r0, [sp, #0x20] + str r1, [sp, #0x38] + str r2, [sp, #0x3c] + bl FUN_0201E28C + str r0, [sp, #0x14] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r2, _021E6CB0 ; =0x00000266 + ldr r3, [sp, #0x10] + add r1, r6, #0 + bl MOD16_021DB3C8 + lsr r0, r0, #1 + neg r0, r0 + str r6, [sp, #0x1c] + str r0, [sp, #0x28] + ldr r0, [r4, r7] + add r4, #0x20 + str r0, [sp, #0x24] + ldr r0, [sp, #0x64] + lsl r5, r0, #2 + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r4, r5] + ldr r0, [r4, r5] + ldr r1, [sp, #0x14] + ldr r0, [r0] + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E6CB0: .word 0x00000266 + thumb_func_end MOD16_021E6C04 + + thumb_func_start MOD16_021E6CB4 +MOD16_021E6CB4: ; 0x021E6CB4 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #4] + add r6, r2, #0 + bl MOD16_021D9DE8 + add r1, r0, #0 + ldr r0, [r5, #4] + add r2, r6, #0 + bl MOD16_021D98DC + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _021E6CD8 + bl ErrorHandling +_021E6CD8: + cmp r5, #0 + beq _021E6CE2 + cmp r5, #1 + beq _021E6CE6 + b _021E6CEA +_021E6CE2: + mov r4, #0xd + b _021E6CEE +_021E6CE6: + mov r4, #0xe + b _021E6CEE +_021E6CEA: + bl ErrorHandling +_021E6CEE: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E6CB4 + + thumb_func_start MOD16_021E6CF4 +MOD16_021E6CF4: ; 0x021E6CF4 + mov r0, #0xd + bx lr + thumb_func_end MOD16_021E6CF4 + + thumb_func_start MOD16_021E6CF8 +MOD16_021E6CF8: ; 0x021E6CF8 + mov r0, #0xe + bx lr + thumb_func_end MOD16_021E6CF8 + + thumb_func_start MOD16_021E6CFC +MOD16_021E6CFC: ; 0x021E6CFC + mov r0, #0x15 + bx lr + thumb_func_end MOD16_021E6CFC + + thumb_func_start MOD16_021E6D00 +MOD16_021E6D00: ; 0x021E6D00 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D9934 + add r0, #0x11 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D00 + + thumb_func_start MOD16_021E6D10 +MOD16_021E6D10: ; 0x021E6D10 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D994C + add r0, #0x11 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D10 + + thumb_func_start MOD16_021E6D20 +MOD16_021E6D20: ; 0x021E6D20 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D9904 + add r0, #0xf + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D20 + + thumb_func_start MOD16_021E6D30 +MOD16_021E6D30: ; 0x021E6D30 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D991C + add r0, #0xf + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D30 + + thumb_func_start MOD16_021E6D40 +MOD16_021E6D40: ; 0x021E6D40 + mov r0, #0x14 + bx lr + thumb_func_end MOD16_021E6D40 + + thumb_func_start MOD16_021E6D44 +MOD16_021E6D44: ; 0x021E6D44 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D9A3C + add r0, #0x6e + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D44 + + thumb_func_start MOD16_021E6D54 +MOD16_021E6D54: ; 0x021E6D54 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r6, r1, #0 + add r7, r2, #0 + add r5, r4, #0 + cmp r0, #3 + bhi _021E6D8A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E6D6E: ; jump table + .short _021E6D78 - _021E6D6E - 2 ; case 0 + .short _021E6D76 - _021E6D6E - 2 ; case 1 + .short _021E6D80 - _021E6D6E - 2 ; case 2 + .short _021E6D7E - _021E6D6E - 2 ; case 3 +_021E6D76: + mov r4, #0x70 +_021E6D78: + add r4, #0x48 + mov r5, #0x58 + b _021E6D8E +_021E6D7E: + mov r4, #0x70 +_021E6D80: + mov r0, #0x52 + lsl r0, r0, #2 + add r4, r4, r0 + mov r5, #0x58 + b _021E6D8E +_021E6D8A: + bl ErrorHandling +_021E6D8E: + str r4, [r6] + str r5, [r7] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6D54 + + thumb_func_start MOD16_021E6D94 +MOD16_021E6D94: ; 0x021E6D94 + push {r3, lr} + cmp r2, #9 + bhi _021E6E08 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E6DA6: ; jump table + .short _021E6DBA - _021E6DA6 - 2 ; case 0 + .short _021E6DC2 - _021E6DA6 - 2 ; case 1 + .short _021E6DCA - _021E6DA6 - 2 ; case 2 + .short _021E6DD2 - _021E6DA6 - 2 ; case 3 + .short _021E6DEA - _021E6DA6 - 2 ; case 4 + .short _021E6DF2 - _021E6DA6 - 2 ; case 5 + .short _021E6DDA - _021E6DA6 - 2 ; case 6 + .short _021E6DE2 - _021E6DA6 - 2 ; case 7 + .short _021E6DFA - _021E6DA6 - 2 ; case 8 + .short _021E6E02 - _021E6DA6 - 2 ; case 9 +_021E6DBA: + add r2, r3, #0 + bl MOD16_021E6CB4 + pop {r3, pc} +_021E6DC2: + add r2, r3, #0 + bl MOD16_021E6CF4 + pop {r3, pc} +_021E6DCA: + add r2, r3, #0 + bl MOD16_021E6CF8 + pop {r3, pc} +_021E6DD2: + add r2, r3, #0 + bl MOD16_021E6CFC + pop {r3, pc} +_021E6DDA: + add r2, r3, #0 + bl MOD16_021E6D00 + pop {r3, pc} +_021E6DE2: + add r2, r3, #0 + bl MOD16_021E6D10 + pop {r3, pc} +_021E6DEA: + add r2, r3, #0 + bl MOD16_021E6D20 + pop {r3, pc} +_021E6DF2: + add r2, r3, #0 + bl MOD16_021E6D30 + pop {r3, pc} +_021E6DFA: + add r2, r3, #0 + bl MOD16_021E6D40 + pop {r3, pc} +_021E6E02: + add r2, r3, #0 + bl MOD16_021E6D44 +_021E6E08: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D94 + + thumb_func_start MOD16_021E6E0C +MOD16_021E6E0C: ; 0x021E6E0C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E6E12: + ldr r0, [r5, #0x20] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E6E12 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E6E0C + + thumb_func_start MOD16_021E6E24 +MOD16_021E6E24: ; 0x021E6E24 + push {r4, lr} + add r4, r0, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #0x18 + add r0, #0xc0 + str r1, [r0] + mov r0, #1 + add r4, #0xc4 + str r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E6E24 + + thumb_func_start MOD16_021E6E44 +MOD16_021E6E44: ; 0x021E6E44 + push {r4, lr} + add r4, r0, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _021E6E7A + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xc0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + cmp r0, #0 + bgt _021E6E7A + add r0, r4, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0 + add r4, #0xc4 + str r0, [r4] +_021E6E7A: + pop {r4, pc} + thumb_func_end MOD16_021E6E44 + + thumb_func_start MOD16_021E6E7C +MOD16_021E6E7C: ; 0x021E6E7C + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021E6F18 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E6F54 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021E6FA4 + str r0, [r5, #0x24] + ldr r0, _021E6EBC ; =MOD16_021E6FA8 + str r0, [r5, #8] + ldr r0, _021E6EC0 ; =MOD16_021E6FAC + str r0, [r5, #0xc] + ldr r0, _021E6EC4 ; =MOD16_021E6FBC + str r0, [r5, #0x10] + ldr r0, _021E6EC8 ; =MOD16_021E6FC0 + str r0, [r5, #0x14] + ldr r0, _021E6ECC ; =MOD16_021E70A0 + str r0, [r5, #0x18] + ldr r0, _021E6ED0 ; =MOD16_021E70A4 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E6EBC: .word MOD16_021E6FA8 +_021E6EC0: .word MOD16_021E6FAC +_021E6EC4: .word MOD16_021E6FBC +_021E6EC8: .word MOD16_021E6FC0 +_021E6ECC: .word MOD16_021E70A0 +_021E6ED0: .word MOD16_021E70A4 + thumb_func_end MOD16_021E6E7C + + thumb_func_start MOD16_021E6ED4 +MOD16_021E6ED4: ; 0x021E6ED4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E6F7C + ldr r0, [r4, #4] + bl MOD16_021E6F90 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E6ED4 + + thumb_func_start MOD16_021E6EE8 +MOD16_021E6EE8: ; 0x021E6EE8 + ldr r0, [r0] + str r1, [r0, #8] + str r2, [r0, #0xc] + bx lr + thumb_func_end MOD16_021E6EE8 + + thumb_func_start MOD16_021E6EF0 +MOD16_021E6EF0: ; 0x021E6EF0 + ldr r0, [r0] + str r1, [r0, #0x14] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E6EF0 + + thumb_func_start MOD16_021E6EF8 +MOD16_021E6EF8: ; 0x021E6EF8 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E6EF8 + + thumb_func_start MOD16_021E6EFC +MOD16_021E6EFC: ; 0x021E6EFC + ldr r2, [r0] + mov r0, #1 + cmp r1, #1 + bne _021E6F08 + mov r1, #0 + add r0, r1, #0 +_021E6F08: + str r1, [r2, #0x1c] + bx lr + thumb_func_end MOD16_021E6EFC + + thumb_func_start MOD16_021E6F0C +MOD16_021E6F0C: ; 0x021E6F0C + ldr r2, [r0] + mov r0, #0 + str r1, [r2, #0x18] + str r0, [r2, #0x1c] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E6F0C + + thumb_func_start MOD16_021E6F18 +MOD16_021E6F18: ; 0x021E6F18 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0 + bne _021E6F2A + bl ErrorHandling +_021E6F2A: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x20 + blx Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E6F18 + + thumb_func_start MOD16_021E6F54 +MOD16_021E6F54: ; 0x021E6F54 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E6F66 + bl ErrorHandling +_021E6F66: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E6F54 + + thumb_func_start MOD16_021E6F7C +MOD16_021E6F7C: ; 0x021E6F7C + push {r4, lr} + add r4, r0, #0 + bne _021E6F86 + bl ErrorHandling +_021E6F86: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E6F7C + + thumb_func_start MOD16_021E6F90 +MOD16_021E6F90: ; 0x021E6F90 + push {r4, lr} + add r4, r0, #0 + bne _021E6F9A + bl ErrorHandling +_021E6F9A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E6F90 + + thumb_func_start MOD16_021E6FA4 +MOD16_021E6FA4: ; 0x021E6FA4 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E6FA4 + + thumb_func_start MOD16_021E6FA8 +MOD16_021E6FA8: ; 0x021E6FA8 + mov r0, #1 + bx lr + thumb_func_end MOD16_021E6FA8 + + thumb_func_start MOD16_021E6FAC +MOD16_021E6FAC: ; 0x021E6FAC + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _021E6FB6 + mov r0, #1 + bx lr +_021E6FB6: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E6FAC + + thumb_func_start MOD16_021E6FBC +MOD16_021E6FBC: ; 0x021E6FBC + mov r0, #1 + bx lr + thumb_func_end MOD16_021E6FBC + + thumb_func_start MOD16_021E6FC0 +MOD16_021E6FC0: ; 0x021E6FC0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #3 + bhi _021E7096 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E6FDC: ; jump table + .short _021E6FE4 - _021E6FDC - 2 ; case 0 + .short _021E6FFE - _021E6FDC - 2 ; case 1 + .short _021E7048 - _021E6FDC - 2 ; case 2 + .short _021E708C - _021E6FDC - 2 ; case 3 +_021E6FE4: + ldr r0, [r4, #4] + mov r1, #0x58 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x58 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7096 +_021E6FFE: + ldr r3, [r4, #4] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E7160 + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021E7018 + cmp r0, #1 + beq _021E7026 + cmp r0, #2 + beq _021E7034 + b _021E7040 +_021E7018: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E77C0 + b _021E7040 +_021E7026: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E76E8 + b _021E7040 +_021E7034: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E78BC +_021E7040: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7096 +_021E7048: + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021E7058 + cmp r0, #1 + beq _021E7066 + cmp r0, #2 + beq _021E7074 + b _021E7080 +_021E7058: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E7844 + add r1, r0, #0 + b _021E7080 +_021E7066: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E7764 + add r1, r0, #0 + b _021E7080 +_021E7074: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E7944 + add r1, r0, #0 +_021E7080: + cmp r1, #0 + beq _021E7096 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7096 +_021E708C: + ldr r0, _021E709C ; =0x04000050 + mov r1, #0 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E7096: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E709C: .word 0x04000050 + thumb_func_end MOD16_021E6FC0 + + thumb_func_start MOD16_021E70A0 +MOD16_021E70A0: ; 0x021E70A0 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E70A0 + + thumb_func_start MOD16_021E70A4 +MOD16_021E70A4: ; 0x021E70A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r5, [r4] + add r3, r0, #0 + add r1, r2, #0 + ldr r0, [r4, #8] + cmp r5, #4 + bhi _021E715A + add r5, r5, r5 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021E70C0: ; jump table + .short _021E70CA - _021E70C0 - 2 ; case 0 + .short _021E70FE - _021E70C0 - 2 ; case 1 + .short _021E713C - _021E70C0 - 2 ; case 2 + .short _021E714A - _021E70C0 - 2 ; case 3 + .short _021E7156 - _021E70C0 - 2 ; case 4 +_021E70CA: + ldr r1, [r1, #0x14] + cmp r1, #0 + beq _021E70DA + cmp r1, #1 + beq _021E70E4 + cmp r1, #2 + beq _021E70EE + b _021E70F6 +_021E70DA: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E77C0 + b _021E70F6 +_021E70E4: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E76E8 + b _021E70F6 +_021E70EE: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E78BC +_021E70F6: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E715A +_021E70FE: + ldr r1, [r1, #0x14] + cmp r1, #0 + beq _021E710E + cmp r1, #1 + beq _021E711A + cmp r1, #2 + beq _021E7126 + b _021E7130 +_021E710E: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E7844 + add r2, r0, #0 + b _021E7130 +_021E711A: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E7764 + add r2, r0, #0 + b _021E7130 +_021E7126: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E7944 + add r2, r0, #0 +_021E7130: + cmp r2, #0 + beq _021E715A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E715A +_021E713C: + add r1, r3, #0 + bl MOD16_021E71A8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E715A +_021E714A: + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E715A +_021E7156: + mov r0, #1 + pop {r3, r4, r5, pc} +_021E715A: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E70A4 + + thumb_func_start MOD16_021E7160 +MOD16_021E7160: ; 0x021E7160 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E73F0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E743C + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021E7490 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E7580 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E71D0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E72E4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7160 + + thumb_func_start MOD16_021E71A8 +MOD16_021E71A8: ; 0x021E71A8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl MOD16_021E76D0 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E753C + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E71A8 + + thumb_func_start MOD16_021E71D0 +MOD16_021E71D0: ; 0x021E71D0 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x32 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x33 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r1, #3 + str r1, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x37 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r6, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #0x10 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x38 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xe + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E71D0 + + thumb_func_start MOD16_021E72E4 +MOD16_021E72E4: ; 0x021E72E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp, #0x10] + mov r0, #0x40 + add r1, r2, #0 + bl FUN_020219F4 + str r0, [sp, #0x18] + ldr r2, _021E7394 ; =0x00000266 + ldr r3, [sp, #0x10] + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [sp, #0x14] + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + beq _021E731E + mov r7, #0 + bl ErrorHandling +_021E731E: + ldr r0, [r4, #0x18] + bl MOD16_021E7A70 + add r1, r0, #0 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x18] + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [sp, #0x18] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0x48 + str r0, [sp] + mov r1, #0 + lsr r6, r3, #0x1f + add r6, r3, r6 + ldr r0, _021E7398 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + ldr r2, [sp, #0x18] + asr r6, r6, #1 + mov r3, #0xb8 + add r0, r0, #4 + sub r3, r3, r6 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_0200A8B8 + ldr r0, [r4, #0x1c] + ldr r1, [sp, #0x10] + str r0, [sp] + ldr r3, [r4, #0x18] + add r0, r5, #0 + add r2, r7, #0 + bl MOD16_021E739C + ldr r1, [sp, #0x10] + ldr r3, [r4, #0x18] + add r0, r5, #0 + add r2, r7, #0 + bl MOD16_021E7AB4 + ldr r1, [sp, #0x10] + ldr r3, [r4, #0x18] + add r0, r5, #0 + add r2, r7, #0 + bl MOD16_021E7AF0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E7394: .word 0x00000266 +_021E7398: .word 0x00020100 + thumb_func_end MOD16_021E72E4 + + thumb_func_start MOD16_021E739C +MOD16_021E739C: ; 0x021E739C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r1, #0 + add r0, r2, #0 + add r1, r3, #0 + ldr r2, [sp, #0x20] + add r3, r4, #0 + bl MOD16_021DBC48 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002F08 + cmp r0, #0xf0 + bhs _021E73C8 + lsr r1, r0, #1 + mov r0, #0x80 + sub r3, r0, r1 + b _021E73CA +_021E73C8: + mov r3, #8 +_021E73CA: + mov r0, #0x88 + str r0, [sp] + mov r1, #0 + ldr r0, _021E73EC ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r4, #0 + bl MOD16_021DBBAC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E73EC: .word 0x00020100 + thumb_func_end MOD16_021E739C + + thumb_func_start MOD16_021E73F0 +MOD16_021E73F0: ; 0x021E73F0 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r6, r2, #0 + bl MOD16_021D9D88 + add r3, r0, #0 + mov r0, #0x2b + lsl r0, r0, #0xe + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + add r2, r6, #0 + bl MOD16_021D7E9C + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D891C + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E73F0 + + thumb_func_start MOD16_021E7424 +MOD16_021E7424: ; 0x021E7424 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl MOD16_021D8950 + ldr r0, [r4] + mov r1, #0 + bl MOD16_021D88F0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7424 + + thumb_func_start MOD16_021E743C +MOD16_021E743C: ; 0x021E743C + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r2, r0, #0 + mov r0, #0x30 + str r0, [sp] + mov r0, #0x48 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E743C + + thumb_func_start MOD16_021E7474 +MOD16_021E7474: ; 0x021E7474 + push {r4, lr} + ldr r0, [r0] + bl MOD16_021D8700 + add r4, r0, #0 + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02007EEC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7474 + + thumb_func_start MOD16_021E7490 +MOD16_021E7490: ; 0x021E7490 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E752C ; =0x00000FFA + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5a + bl FUN_020091E0 + str r0, [r5, #8] + bl FUN_02009B04 + ldr r0, [r5, #8] + bl FUN_02009474 + ldr r0, _021E7530 ; =0x00000FAD + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xd + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0xc] + bl FUN_02009D68 + ldr r0, [r5, #0xc] + bl FUN_02009474 + ldr r0, _021E7534 ; =0x00000FF8 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x58 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x10] + ldr r0, _021E7538 ; =0x00000FF9 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x59 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x14] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E752C: .word 0x00000FFA +_021E7530: .word 0x00000FAD +_021E7534: .word 0x00000FF8 +_021E7538: .word 0x00000FF9 + thumb_func_end MOD16_021E7490 + + thumb_func_start MOD16_021E753C +MOD16_021E753C: ; 0x021E753C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0xc] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #8] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0xc] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E753C + + thumb_func_start MOD16_021E7580 +MOD16_021E7580: ; 0x021E7580 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xa0 + add r6, r0, #0 + add r0, r2, #0 + add r5, r1, #0 + ldr r0, [r0, #4] + str r2, [sp, #0x2c] + add r7, r3, #0 + ldr r4, [r5] + bl MOD16_021D9DE8 + ldr r3, _021E7670 ; =0x00000FF9 + str r0, [sp, #0x30] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x7c + sub r2, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x5c] + add r0, sp, #0x7c + str r0, [sp, #0x60] + mov r0, #0x20 + str r0, [sp, #0x70] + mov r0, #1 + str r0, [sp, #0x74] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp, #0x64] + mov r0, #0xd + lsl r0, r0, #0xe + str r0, [sp, #0x68] + add r0, sp, #0x5c + str r7, [sp, #0x78] + bl FUN_0201FF84 + mov r1, #0x11 + str r0, [r6] + bl FUN_02020130 + ldr r0, [sp, #0x2c] + ldr r0, [r0, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + beq _021E7618 + mov r0, #0 + str r0, [sp, #0x30] +_021E7618: + ldr r1, [sp, #0x30] + add r0, r5, #0 + add r2, r7, #0 + bl MOD16_021E7674 + add r4, r0, #0 + ldr r0, [r5] + mov r1, #1 + bl MOD16_021D88D4 + mov r1, #0x15 + ldr r2, [r5] + lsl r1, r1, #4 + ldr r1, [r2, r1] + str r1, [sp, #0x34] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0x3c] + ldr r0, [r6] + str r0, [sp, #0x40] + mov r0, #0x4d + mvn r0, r0 + str r0, [sp, #0x44] + add r0, #0x46 + str r0, [sp, #0x48] + mov r0, #0 + str r0, [sp, #0x4c] + mov r0, #0x1f + str r0, [sp, #0x50] + mov r0, #1 + str r0, [sp, #0x54] + str r7, [sp, #0x58] + str r4, [sp, #0x38] + add r0, sp, #0x34 + bl MOD16_021DB2BC + str r0, [r6, #4] + add r0, r4, #0 + bl MOD16_021DB3BC + add sp, #0xa0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7670: .word 0x00000FF9 + thumb_func_end MOD16_021E7580 + + thumb_func_start MOD16_021E7674 +MOD16_021E7674: ; 0x021E7674 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x15 + ldr r1, [r5] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r7, r2, #0 + mov r1, #0x12 + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #2 + add r2, r7, #0 + bl MOD16_021DBC08 + add r6, r0, #0 + mov r0, #2 + add r1, r6, #0 + mov r2, #0 + bl FUN_02002E14 + cmp r0, #0x88 + bhs _021E76B0 + mov r1, #0x88 + sub r0, r1, r0 + lsr r3, r0, #1 + b _021E76B2 +_021E76B0: + mov r3, #0 +_021E76B2: + mov r0, #0 + str r0, [sp] + mov r0, #0x15 + ldr r1, [r5] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021DB42C + add r0, r6, #0 + bl MOD16_021DBBAC + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E7674 + + thumb_func_start MOD16_021E76D0 +MOD16_021E76D0: ; 0x021E76D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #4] + bl MOD16_021DB338 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E76D0 + + thumb_func_start MOD16_021E76E8 +MOD16_021E76E8: ; 0x021E76E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + mov r1, #1 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021D88F0 + add r0, r7, #0 + bl MOD16_021E79C0 + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E775A + cmp r6, #0 + beq _021E7736 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + b _021E775A +_021E7736: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E775A: + add r0, r5, #0 + bl MOD16_021E79F0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E76E8 + + thumb_func_start MOD16_021E7764 +MOD16_021E7764: ; 0x021E7764 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r2, #0x10] + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E7784 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E778E +_021E7784: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021E778E: + add r4, r0, #0 + cmp r4, #1 + bne _021E77B6 + cmp r6, #1 + bne _021E77A8 + add r0, r7, #0 + bl MOD16_021E79D8 + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 + b _021E77BC +_021E77A8: + add r0, r5, #0 + bl MOD16_021E7474 + add r0, r5, #0 + bl MOD16_021E7424 + b _021E77BC +_021E77B6: + add r0, r5, #0 + bl MOD16_021E79F0 +_021E77BC: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E7764 + + thumb_func_start MOD16_021E77C0 +MOD16_021E77C0: ; 0x021E77C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021E79C0 + cmp r6, #0 + bne _021E77E6 + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, r7, #0 + mov r3, #4 + bl MOD16_021E7A00 + add r0, r7, #0 + bl MOD16_021E7A38 +_021E77E6: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E7840 + cmp r6, #0 + beq _021E781C + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E781C: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E7840: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E77C0 + + thumb_func_start MOD16_021E7844 +MOD16_021E7844: ; 0x021E7844 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bne _021E7864 + bl MOD16_021E7A1C + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E7A54 + str r0, [sp, #4] + b _021E786A +_021E7864: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] +_021E786A: + ldr r0, [r6, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021E7884 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #8] + b _021E7890 +_021E7884: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #8] +_021E7890: + mov r1, #0 + add r2, sp, #0 +_021E7894: + ldr r0, [r2] + cmp r0, #0 + beq _021E78A2 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #3 + blt _021E7894 +_021E78A2: + cmp r1, #3 + bne _021E78B6 + cmp r7, #1 + bne _021E78B0 + add r0, r5, #0 + bl MOD16_021E79D8 +_021E78B0: + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021E78B6: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E7844 + + thumb_func_start MOD16_021E78BC +MOD16_021E78BC: ; 0x021E78BC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021E79C0 + ldr r0, [r5] + mov r1, #1 + bl MOD16_021D88F0 + cmp r6, #0 + bne _021E78E4 + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, r7, #0 + mov r3, #1 + bl MOD16_021E7A00 +_021E78E4: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E793E + cmp r6, #0 + beq _021E791A + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E791A: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E793E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E78BC + + thumb_func_start MOD16_021E7944 +MOD16_021E7944: ; 0x021E7944 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bne _021E795A + bl MOD16_021E7A1C + str r0, [sp] + b _021E795E +_021E795A: + mov r0, #1 + str r0, [sp] +_021E795E: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E7978 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #4] + b _021E7984 +_021E7978: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #4] +_021E7984: + mov r1, #0 + add r2, sp, #0 +_021E7988: + ldr r0, [r2] + cmp r0, #0 + beq _021E7996 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021E7988 +_021E7996: + cmp r1, #2 + bne _021E79BA + cmp r6, #1 + bne _021E79AE + add r0, r7, #0 + bl MOD16_021E79D8 + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 + b _021E79B4 +_021E79AE: + add r0, r5, #0 + bl MOD16_021E7424 +_021E79B4: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E79BA: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E7944 + + thumb_func_start MOD16_021E79C0 +MOD16_021E79C0: ; 0x021E79C0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + thumb_func_end MOD16_021E79C0 + + thumb_func_start MOD16_021E79D8 +MOD16_021E79D8: ; 0x021E79D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + thumb_func_end MOD16_021E79D8 + + thumb_func_start MOD16_021E79F0 +MOD16_021E79F0: ; 0x021E79F0 + mov r1, #0x5b + ldr r0, [r0] + lsl r1, r1, #2 + ldr r3, _021E79FC ; =MOD16_021D8A8C + add r1, r0, r1 + bx r3 + .align 2, 0 +_021E79FC: .word MOD16_021D8A8C + thumb_func_end MOD16_021E79F0 + + thumb_func_start MOD16_021E7A00 +MOD16_021E7A00: ; 0x021E7A00 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + str r2, [sp] + str r3, [sp, #4] + add r0, #0x18 + mov r1, #0x30 + add r2, r4, #0 + mov r3, #0x48 + bl MOD16_021D8BD8 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7A00 + + thumb_func_start MOD16_021E7A1C +MOD16_021E7A1C: ; 0x021E7A1C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x18 + bl MOD16_021D8BF4 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x1c] + bl MOD16_021D86F4 + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E7A1C + + thumb_func_start MOD16_021E7A38 +MOD16_021E7A38: ; 0x021E7A38 + push {r3, lr} + sub sp, #8 + mov r1, #0x52 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + add r0, #0x38 + mov r1, #0xac + mov r2, #0xaa + mov r3, #0x20 + bl MOD16_021D8BD8 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD16_021E7A38 + + thumb_func_start MOD16_021E7A54 +MOD16_021E7A54: ; 0x021E7A54 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x38 + bl MOD16_021D8BF4 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r5, #0x38] + ldr r2, [r5, #0x3c] + bl MOD16_021D7F6C + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E7A54 + + thumb_func_start MOD16_021E7A70 +MOD16_021E7A70: ; 0x021E7A70 + push {r4, lr} + cmp r0, #7 + bhi _021E7AAA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7A82: ; jump table + .short _021E7AAA - _021E7A82 - 2 ; case 0 + .short _021E7A92 - _021E7A82 - 2 ; case 1 + .short _021E7A96 - _021E7A82 - 2 ; case 2 + .short _021E7A9A - _021E7A82 - 2 ; case 3 + .short _021E7A9E - _021E7A82 - 2 ; case 4 + .short _021E7AA2 - _021E7A82 - 2 ; case 5 + .short _021E7AAA - _021E7A82 - 2 ; case 6 + .short _021E7AA6 - _021E7A82 - 2 ; case 7 +_021E7A92: + mov r4, #0x72 + b _021E7AAE +_021E7A96: + mov r4, #0x16 + b _021E7AAE +_021E7A9A: + mov r4, #0x17 + b _021E7AAE +_021E7A9E: + mov r4, #0x19 + b _021E7AAE +_021E7AA2: + mov r4, #0x18 + b _021E7AAE +_021E7AA6: + mov r4, #0x1a + b _021E7AAE +_021E7AAA: + bl ErrorHandling +_021E7AAE: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7A70 + + thumb_func_start MOD16_021E7AB4 +MOD16_021E7AB4: ; 0x021E7AB4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r2, #0 + add r1, r3, #0 + add r2, r4, #0 + bl MOD16_021DBBC8 + add r4, r0, #0 + mov r0, #0x60 + str r0, [sp] + mov r1, #0 + ldr r0, _021E7AEC ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x80 + bl FUN_0201BDE0 + add r0, r4, #0 + bl MOD16_021DBBAC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E7AEC: .word 0x00020100 + thumb_func_end MOD16_021E7AB4 + + thumb_func_start MOD16_021E7AF0 +MOD16_021E7AF0: ; 0x021E7AF0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r2, #0 + add r1, r3, #0 + add r2, r4, #0 + bl MOD16_021DBC08 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xf2 + sub r3, r1, r0 + mov r0, #0x70 + str r0, [sp] + mov r1, #0 + ldr r0, _021E7B34 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r4, #0 + bl MOD16_021DBBAC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E7B34: .word 0x00020100 + thumb_func_end MOD16_021E7AF0 + + thumb_func_start MOD16_021E7B38 +MOD16_021E7B38: ; 0x021E7B38 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021E7BB0 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E7C10 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E7C38 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021E7CE0 + str r0, [r5, #0x24] + ldr r0, _021E7B80 ; =MOD16_021E7CE4 + str r0, [r5, #8] + ldr r0, _021E7B84 ; =MOD16_021E7D28 + str r0, [r5, #0xc] + ldr r0, _021E7B88 ; =MOD16_021E7D68 + str r0, [r5, #0x10] + ldr r0, _021E7B8C ; =MOD16_021E7D7C + str r0, [r5, #0x14] + ldr r0, _021E7B90 ; =MOD16_021E7E10 + str r0, [r5, #0x18] + ldr r0, _021E7B94 ; =MOD16_021E7ECC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E7B80: .word MOD16_021E7CE4 +_021E7B84: .word MOD16_021E7D28 +_021E7B88: .word MOD16_021E7D68 +_021E7B8C: .word MOD16_021E7D7C +_021E7B90: .word MOD16_021E7E10 +_021E7B94: .word MOD16_021E7ECC + thumb_func_end MOD16_021E7B38 + + thumb_func_start MOD16_021E7B98 +MOD16_021E7B98: ; 0x021E7B98 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E7C90 + ldr r0, [r4] + bl MOD16_021E7CA4 + ldr r0, [r4, #0x20] + bl MOD16_021E7CB8 + pop {r4, pc} + thumb_func_end MOD16_021E7B98 + + thumb_func_start MOD16_021E7BB0 +MOD16_021E7BB0: ; 0x021E7BB0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bne _021E7BC2 + bl ErrorHandling +_021E7BC2: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021E7BC8: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021E7BC8 + add r0, r5, #0 + bl MOD16_021D7AEC + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + add r0, r5, #0 + mov r1, #2 + bl MOD16_021D7B5C + ldr r0, [r0] + mov r1, #3 + str r0, [r4, #8] + add r0, r5, #0 + bl MOD16_021D7B5C + str r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #4 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E7BB0 + + thumb_func_start MOD16_021E7C10 +MOD16_021E7C10: ; 0x021E7C10 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E7C22 + bl ErrorHandling +_021E7C22: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E7C10 + + thumb_func_start MOD16_021E7C38 +MOD16_021E7C38: ; 0x021E7C38 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021E7CE0 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021E7C58 + bl ErrorHandling +_021E7C58: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + blx Call_FillMemWithValue + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD16_021DB0B0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x14 + add r2, r6, #0 + mov r3, #2 + bl MOD16_021DB1D0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x28 + add r2, r6, #0 + mov r3, #4 + bl MOD16_021DB114 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7C38 + + thumb_func_start MOD16_021E7C90 +MOD16_021E7C90: ; 0x021E7C90 + push {r4, lr} + add r4, r0, #0 + bne _021E7C9A + bl ErrorHandling +_021E7C9A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7C90 + + thumb_func_start MOD16_021E7CA4 +MOD16_021E7CA4: ; 0x021E7CA4 + push {r4, lr} + add r4, r0, #0 + bne _021E7CAE + bl ErrorHandling +_021E7CAE: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7CA4 + + thumb_func_start MOD16_021E7CB8 +MOD16_021E7CB8: ; 0x021E7CB8 + push {r4, lr} + add r4, r0, #0 + bne _021E7CC2 + bl ErrorHandling +_021E7CC2: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x14 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x28 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021E7CB8 + + thumb_func_start MOD16_021E7CE0 +MOD16_021E7CE0: ; 0x021E7CE0 + mov r0, #3 + bx lr + thumb_func_end MOD16_021E7CE0 + + thumb_func_start MOD16_021E7CE4 +MOD16_021E7CE4: ; 0x021E7CE4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + mov r1, #0x3c + bl FUN_02016998 + mov r1, #0 + mov r2, #0x3c + add r4, r0, #0 + blx Call_FillMemWithValue + mov r1, #0 + add r2, r4, #0 + mov r0, #4 +_021E7D02: + add r1, r1, #1 + str r0, [r2, #0x14] + add r2, r2, #4 + cmp r1, #8 + blt _021E7D02 + mov r0, #0 + str r0, [r4, #0x10] + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E7F54 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E8B7C + str r4, [r5, #8] + mov r0, #1 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E7CE4 + + thumb_func_start MOD16_021E7D28 +MOD16_021E7D28: ; 0x021E7D28 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021E7D38 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E7D38: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021E7D42 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E7D42: + ldr r0, [r5, #0x14] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021E7D62 + add r0, r4, #0 + bl MOD16_021E8ABC + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E8014 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E8A78 +_021E7D62: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E7D28 + + thumb_func_start MOD16_021E7D68 +MOD16_021E7D68: ; 0x021E7D68 + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021E8088 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021E7D68 + + thumb_func_start MOD16_021E7D7C +MOD16_021E7D7C: ; 0x021E7D7C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + str r2, [sp] + ldr r7, [r3, #8] + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021E7E0A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7D9A: ; jump table + .short _021E7DA2 - _021E7D9A - 2 ; case 0 + .short _021E7DBC - _021E7D9A - 2 ; case 1 + .short _021E7DE2 - _021E7D9A - 2 ; case 2 + .short _021E7DF8 - _021E7D9A - 2 ; case 3 +_021E7DA2: + ldr r0, [r4, #4] + mov r1, #0xc4 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0xc4 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7E0A +_021E7DBC: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E8228 + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021E8AE4 + ldr r2, [sp] + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E880C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7E0A +_021E7DE2: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E8878 + cmp r0, #0 + beq _021E7E0A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7E0A +_021E7DF8: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E7E0A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7D7C + + thumb_func_start MOD16_021E7E10 +MOD16_021E7E10: ; 0x021E7E10 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r0, [sp, #0x1c] + add r0, r1, #0 + ldr r7, [r0, #8] + ldr r6, [r3, #8] + add r0, r7, #0 + add r0, #0xc0 + str r1, [sp, #0x20] + ldr r1, [r0] + ldr r0, [r6, #0x38] + cmp r1, r0 + beq _021E7E3A + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E8AE4 + add r0, r7, #0 + ldr r1, [r6, #0x38] + add r0, #0xc0 + str r1, [r0] +_021E7E3A: + mov r0, #0 + str r0, [sp, #0x2c] + add r0, r7, #0 + str r0, [sp, #0x28] + add r0, #0xa0 + str r0, [sp, #0x28] + add r0, r7, #0 + str r0, [sp, #0x24] + add r0, #0x80 + str r0, [sp, #0x24] + add r4, r6, #0 + add r5, r7, #0 +_021E7E52: + ldr r0, [sp, #0x2c] + cmp r0, #0 + bne _021E7E5C + mov r1, #4 + b _021E7E5E +_021E7E5C: + mov r1, #5 +_021E7E5E: + mov r0, #5 + mvn r0, r0 + str r0, [sp] + ldr r0, [sp, #0x24] + str r1, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x20] + ldr r0, [r0, #4] + str r0, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + ldr r1, [r5] + ldr r2, [r5, #0x20] + ldr r3, [r4, #0x14] + bl MOD16_021E88B4 + ldr r0, [r5, #0x50] + ldr r1, [r4, #0x14] + bl MOD16_021D7B98 + ldr r0, [sp, #0x28] + add r4, r4, #4 + add r0, r0, #4 + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + add r5, r5, #4 + add r0, r0, #4 + str r0, [sp, #0x24] + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + cmp r0, #1 + ble _021E7E52 + mov r4, #2 + add r6, #8 + add r7, #8 +_021E7EB0: + ldr r0, [r7] + ldr r1, [r6, #0x14] + add r2, r4, #0 + bl MOD16_021E8BB8 + add r4, r4, #1 + add r6, r6, #4 + add r7, r7, #4 + cmp r4, #8 + blt _021E7EB0 + mov r0, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7E10 + + thumb_func_start MOD16_021E7ECC +MOD16_021E7ECC: ; 0x021E7ECC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #4 + bhi _021E7F4E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7EE8: ; jump table + .short _021E7EF2 - _021E7EE8 - 2 ; case 0 + .short _021E7F14 - _021E7EE8 - 2 ; case 1 + .short _021E7F2A - _021E7EE8 - 2 ; case 2 + .short _021E7F3C - _021E7EE8 - 2 ; case 3 + .short _021E7F4A - _021E7EE8 - 2 ; case 4 +_021E7EF2: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021E880C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7F4E +_021E7F14: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021E8878 + cmp r0, #0 + beq _021E7F4E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7F4E +_021E7F2A: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E8258 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7F4E +_021E7F3C: + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7F4E +_021E7F4A: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E7F4E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7ECC + + thumb_func_start MOD16_021E7F54 +MOD16_021E7F54: ; 0x021E7F54 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0x20 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #0xd0 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x70 + mov r2, #0x98 + mov r3, #0x30 + bl MOD16_021D7C98 + mov r0, #0xd0 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x38 + add r0, r0, #4 + mov r2, #0x60 + mov r3, #0x30 + bl MOD16_021D7C98 + mov r0, #0x30 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #8 + mov r2, #0xc0 + mov r3, #8 + bl MOD16_021D7C98 + mov r0, #0x58 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0xc + mov r2, #0xc0 + mov r3, #0x30 + bl MOD16_021D7C98 + mov r0, #0x80 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x10 + mov r2, #0xc0 + mov r3, #0x58 + bl MOD16_021D7C98 + mov r0, #0xa8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x14 + mov r2, #0xc0 + mov r3, #0x80 + bl MOD16_021D7C98 + mov r0, #0xd0 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x18 + mov r2, #0xc0 + mov r3, #0xa8 + bl MOD16_021D7C98 + mov r0, #0xf8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x1c + mov r2, #0xc0 + mov r3, #0xd0 + bl MOD16_021D7C98 + str r4, [r5, #8] + str r5, [r5, #0xc] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021E8010 ; =MOD16_021E80A0 + mov r1, #8 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021E8010: .word MOD16_021E80A0 + thumb_func_end MOD16_021E7F54 + + thumb_func_start MOD16_021E8014 +MOD16_021E8014: ; 0x021E8014 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #3 +_021E801E: + add r1, r1, #1 + str r0, [r2, #0x14] + add r2, r2, #4 + cmp r1, #8 + blt _021E801E + ldr r0, [r4] + bl FUN_02022144 + ldr r0, [r4, #0x10] + cmp r0, #5 + bhi _021E806E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8040: ; jump table + .short _021E804C - _021E8040 - 2 ; case 0 + .short _021E8052 - _021E8040 - 2 ; case 1 + .short _021E8058 - _021E8040 - 2 ; case 2 + .short _021E805E - _021E8040 - 2 ; case 3 + .short _021E8064 - _021E8040 - 2 ; case 4 + .short _021E806A - _021E8040 - 2 ; case 5 +_021E804C: + mov r0, #1 + str r0, [r4, #0x1c] + b _021E806E +_021E8052: + mov r0, #1 + str r0, [r4, #0x20] + b _021E806E +_021E8058: + mov r0, #1 + str r0, [r4, #0x24] + b _021E806E +_021E805E: + mov r0, #1 + str r0, [r4, #0x28] + b _021E806E +_021E8064: + mov r0, #1 + str r0, [r4, #0x2c] + b _021E806E +_021E806A: + mov r0, #1 + str r0, [r4, #0x30] +_021E806E: + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _021E807A + cmp r0, #1 + beq _021E8080 + pop {r4, pc} +_021E807A: + mov r0, #2 + str r0, [r4, #0x14] + pop {r4, pc} +_021E8080: + mov r0, #2 + str r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8014 + + thumb_func_start MOD16_021E8088 +MOD16_021E8088: ; 0x021E8088 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8088 + + thumb_func_start MOD16_021E80A0 +MOD16_021E80A0: ; 0x021E80A0 + push {r3, r4, r5, lr} + ldr r4, [r2, #4] + ldr r5, [r2] + lsl r2, r0, #2 + add r2, r4, r2 + str r1, [r2, #0x14] + cmp r1, #2 + bne _021E811A + cmp r0, #7 + bhi _021E811A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E80C0: ; jump table + .short _021E80D0 - _021E80C0 - 2 ; case 0 + .short _021E80D6 - _021E80C0 - 2 ; case 1 + .short _021E80DC - _021E80C0 - 2 ; case 2 + .short _021E8112 - _021E80C0 - 2 ; case 3 + .short _021E814A - _021E80C0 - 2 ; case 4 + .short _021E8180 - _021E80C0 - 2 ; case 5 + .short _021E81B6 - _021E80C0 - 2 ; case 6 + .short _021E81EC - _021E80C0 - 2 ; case 7 +_021E80D0: + mov r0, #0 + str r0, [r4, #0x34] + pop {r3, r4, r5, pc} +_021E80D6: + mov r0, #1 + str r0, [r4, #0x34] + pop {r3, r4, r5, pc} +_021E80DC: + ldr r0, [r4, #0x38] + mov r1, #1 + tst r0, r1 + beq _021E811A + ldr r0, [r4, #0x10] + cmp r0, #0 + ldr r0, [r5, #8] + bne _021E80F2 + bl MOD16_021E4BB8 + b _021E80FA +_021E80F2: + mov r1, #0 + bl MOD16_021E4BBC + mov r0, #1 +_021E80FA: + cmp r0, #0 + beq _021E811A + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E8112: + ldr r1, [r4, #0x38] + mov r0, #2 + tst r0, r1 + bne _021E811C +_021E811A: + b _021E8220 +_021E811C: + ldr r0, [r4, #0x10] + cmp r0, #1 + ldr r0, [r5, #0x10] + bne _021E812A + bl MOD16_021E6EF8 + b _021E8132 +_021E812A: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E8132: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E814A: + ldr r1, [r4, #0x38] + mov r0, #4 + tst r0, r1 + beq _021E8220 + ldr r0, [r4, #0x10] + cmp r0, #2 + ldr r0, [r5, #0x10] + bne _021E8160 + bl MOD16_021E6EF8 + b _021E8168 +_021E8160: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E8168: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #2 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E8180: + ldr r1, [r4, #0x38] + mov r0, #8 + tst r0, r1 + beq _021E8220 + ldr r0, [r4, #0x10] + cmp r0, #3 + ldr r0, [r5, #0x10] + bne _021E8196 + bl MOD16_021E6EF8 + b _021E819E +_021E8196: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E819E: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #3 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E81B6: + ldr r1, [r4, #0x38] + mov r0, #0x10 + tst r0, r1 + beq _021E8220 + ldr r0, [r4, #0x10] + cmp r0, #4 + ldr r0, [r5, #0x10] + bne _021E81CC + bl MOD16_021E6EF8 + b _021E81D4 +_021E81CC: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E81D4: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #4 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E81EC: + ldr r1, [r4, #0x38] + mov r0, #0x20 + tst r0, r1 + beq _021E8220 + ldr r0, [r4, #0x10] + cmp r0, #5 + ldr r0, [r5, #0x10] + bne _021E8202 + bl MOD16_021E6EF8 + b _021E820A +_021E8202: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E820A: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #5 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 +_021E8220: + pop {r3, r4, r5, pc} + nop +_021E8224: .word 0x0000068B + thumb_func_end MOD16_021E80A0 + + thumb_func_start MOD16_021E8228 +MOD16_021E8228: ; 0x021E8228 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E82B8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E8394 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E84DC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E868C + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E8228 + + thumb_func_start MOD16_021E8258 +MOD16_021E8258: ; 0x021E8258 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x20 + add r6, r2, #0 + str r0, [sp] + add r4, r1, #0 + str r6, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0x80 + bl MOD16_021D8CFC + mov r0, #0x20 + str r0, [sp] + str r6, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0xa0 + bl MOD16_021D8CFC + add r0, r5, #0 + bl MOD16_021E866C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E8780 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E8480 + mov r4, #0 +_021E829E: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + beq _021E82AC + bl FUN_02016A18 +_021E82AC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E829E + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E8258 + + thumb_func_start MOD16_021E82B8 +MOD16_021E82B8: ; 0x021E82B8 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x3e + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x3c + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r6, r0, #0 + mov r1, #6 + ldr r2, [sp, #0x10] + mov r0, #0xe + str r0, [sp] + ldrh r0, [r2] + add r3, r1, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x3f + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + mov r1, #6 + ldr r2, [sp, #0x10] + mov r0, #7 + str r0, [sp] + ldrh r0, [r2] + add r3, r1, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E82B8 + + thumb_func_start MOD16_021E8394 +MOD16_021E8394: ; 0x021E8394 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E8468 ; =0x000013EE + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x66 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x40] + bl FUN_02009B04 + ldr r0, [r5, #0x40] + bl FUN_02009474 + ldr r0, _021E846C ; =0x000013EC + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x64 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x48] + ldr r0, _021E8470 ; =0x000013ED + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x65 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x4c] + ldr r0, _021E8474 ; =0x000013EB + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x63 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x70] + bl FUN_02009B04 + ldr r0, [r5, #0x70] + bl FUN_02009474 + ldr r0, _021E8478 ; =0x000013E9 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x61 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x78] + ldr r0, _021E847C ; =0x000013EA + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x62 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x7c] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021E8468: .word 0x000013EE +_021E846C: .word 0x000013EC +_021E8470: .word 0x000013ED +_021E8474: .word 0x000013EB +_021E8478: .word 0x000013E9 +_021E847C: .word 0x000013EA + thumb_func_end MOD16_021E8394 + + thumb_func_start MOD16_021E8480 +MOD16_021E8480: ; 0x021E8480 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x40] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x40] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x48] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x4c] + bl FUN_02009490 + ldr r0, [r5, #0x70] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x70] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x78] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x7c] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E8480 + + thumb_func_start MOD16_021E84DC +MOD16_021E84DC: ; 0x021E84DC + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + ldr r4, [r1] + ldr r3, _021E8658 ; =0x000013ED + add r7, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r5, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, _021E865C ; =0x0000083F + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x50 + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x21 + str r0, [sp, #0x30] + add r0, sp, #0x50 + str r0, [sp, #0x34] + mov r0, #0x1f + str r0, [sp, #0x44] + mov r0, #2 + str r0, [sp, #0x48] + lsl r0, r0, #0x12 + str r0, [sp, #0x38] + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + add r0, sp, #0x30 + str r5, [sp, #0x4c] + bl FUN_0201FF84 + mov r1, #0 + str r0, [r7] + bl FUN_02020130 + mov r0, #2 + lsl r0, r0, #0x12 + str r0, [sp, #0x38] + mov r1, #0x13 + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r7, #4] + bl FUN_02020130 + ldr r3, _021E8660 ; =0x000013EA + mov r0, #0 + mov r2, #5 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #2 + lsl r2, r2, #6 + str r1, [sp, #0x10] + ldr r1, [r4, r2] + str r1, [sp, #0x14] + add r1, r2, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r2, #0 + add r1, #8 + ldr r1, [r4, r1] + add r2, #0xc + str r1, [sp, #0x1c] + ldr r1, [r4, r2] + ldr r2, _021E865C ; =0x0000083F + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x50 + sub r3, r3, #1 + bl FUN_02008AA4 + add r0, sp, #0x50 + str r0, [sp, #0x34] + mov r1, #0xb + mov r0, #3 + lsl r1, r1, #0x10 + lsl r0, r0, #0x12 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + mov r0, #0 + ldr r4, _021E8664 ; =0x021FF5DC + ldr r5, _021E8668 ; =0x021FF5F4 + str r0, [sp, #0x2c] + add r6, r7, #0 +_021E85DA: + ldr r0, [r4] + str r0, [sp, #0x38] + add r0, sp, #0x30 + bl FUN_0201FF84 + str r0, [r6, #8] + ldr r1, [r5] + bl FUN_02020130 + ldr r0, [sp, #0x2c] + add r4, r4, #4 + add r0, r0, #1 + add r6, r6, #4 + add r5, r5, #4 + str r0, [sp, #0x2c] + cmp r0, #6 + blt _021E85DA + mov r0, #0x1e + str r0, [sp, #0x44] + mov r0, #0xa + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + mov r1, #0x86 + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FF84 + mov r1, #0xd + str r0, [r7, #0x50] + bl FUN_02020130 + mov r0, #6 + lsl r0, r0, #0x10 + mov r1, #0x4e + str r0, [sp, #0x38] + lsl r1, r1, #0xc + lsl r0, r0, #1 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FF84 + mov r1, #0xc + str r0, [r7, #0x54] + bl FUN_02020130 + mov r1, #2 + add r7, #8 + mov r0, #0 +_021E8648: + add r1, r1, #1 + str r0, [r7, #0x50] + add r7, r7, #4 + cmp r1, #8 + blt _021E8648 + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + nop +_021E8658: .word 0x000013ED +_021E865C: .word 0x0000083F +_021E8660: .word 0x000013EA +_021E8664: .word 0x021FF5DC +_021E8668: .word 0x021FF5F4 + thumb_func_end MOD16_021E84DC + + thumb_func_start MOD16_021E866C +MOD16_021E866C: ; 0x021E866C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E8672: + ldr r0, [r5] + bl FUN_0201FFC8 + ldr r0, [r5, #0x50] + cmp r0, #0 + beq _021E8682 + bl FUN_0201FFC8 +_021E8682: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E8672 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E866C + + thumb_func_start MOD16_021E868C +MOD16_021E868C: ; 0x021E868C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5] + add r6, r2, #0 + ldr r4, [r1] + cmp r0, #0 + bne _021E86A0 + bl ErrorHandling +_021E86A0: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021E8778 ; =0x0000083F + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #8] + mov r1, #0 + bl FUN_02009E54 + mov r1, #5 + mvn r1, r1 + str r1, [sp, #0x1c] + mov r1, #2 + mov r2, #0 + str r0, [sp, #0x10] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + str r1, [sp, #0x28] + str r6, [sp, #0x2c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + mov r2, #4 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021E877C ; =0x00000266 + add r1, r6, #0 + mov r3, #0x21 + bl MOD16_021DB3C8 + str r6, [sp, #0xc] + ldr r0, [r5] + str r0, [sp, #0x14] + mov r0, #0x1f + mvn r0, r0 + str r0, [sp, #0x18] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0x20] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + mov r2, #4 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021E877C ; =0x00000266 + add r1, r6, #0 + mov r3, #0x22 + bl MOD16_021DB3C8 + mov r1, #0x20 + sub r0, r1, r0 + str r6, [sp, #0xc] + str r0, [sp, #0x18] + ldr r0, [r5, #4] + str r0, [sp, #0x14] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0x24] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + mov r1, #2 + add r5, #8 + mov r0, #0 +_021E876A: + add r1, r1, #1 + str r0, [r5, #0x20] + add r5, r5, #4 + cmp r1, #8 + blt _021E876A + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E8778: .word 0x0000083F +_021E877C: .word 0x00000266 + thumb_func_end MOD16_021E868C + + thumb_func_start MOD16_021E8780 +MOD16_021E8780: ; 0x021E8780 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E8786: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _021E8790 + bl MOD16_021DB338 +_021E8790: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E8786 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E8780 + + thumb_func_start MOD16_021E879C +MOD16_021E879C: ; 0x021E879C + push {r3, r4, r5, r6, r7, lr} + mov r7, #1 + add r5, r0, #0 + mov r4, #0 + add r6, r7, #0 +_021E87A6: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _021E87BC + ldr r0, [r0] + add r1, r7, #0 + bl FUN_02011AF0 +_021E87BC: + ldr r0, [r5, #0x50] + cmp r0, #0 + beq _021E87C8 + mov r1, #1 + bl FUN_02020398 +_021E87C8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E87A6 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E879C + + thumb_func_start MOD16_021E87D4 +MOD16_021E87D4: ; 0x021E87D4 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r7, r4, #0 + add r6, r4, #0 +_021E87DE: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _021E87F4 + ldr r0, [r0] + add r1, r7, #0 + bl FUN_02011AF0 +_021E87F4: + ldr r0, [r5, #0x50] + cmp r0, #0 + beq _021E8800 + mov r1, #0 + bl FUN_02020398 +_021E8800: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E87DE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E87D4 + + thumb_func_start MOD16_021E880C +MOD16_021E880C: ; 0x021E880C + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E879C + ldr r0, [r4, #0x14] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021E8874 + cmp r6, #0 + beq _021E8850 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r2, [r5] + lsl r0, r0, #4 + add r0, r2, r0 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021E8850: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r3, [r5] + lsl r0, r0, #4 + add r0, r3, r0 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E8874: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E880C + + thumb_func_start MOD16_021E8878 +MOD16_021E8878: ; 0x021E8878 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #0x14] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021E8898 + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E889E +_021E8898: + mov r0, #2 + bl FUN_0200A344 +_021E889E: + cmp r0, #0 + beq _021E88B0 + cmp r4, #0 + beq _021E88AC + add r0, r6, #0 + bl MOD16_021E87D4 +_021E88AC: + mov r0, #1 + pop {r4, r5, r6, pc} +_021E88B0: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E8878 + + thumb_func_start MOD16_021E88B4 +MOD16_021E88B4: ; 0x021E88B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + add r1, r3, #0 + str r2, [sp, #0xc] + ldr r4, [sp, #0x30] + ldr r6, [sp, #0x40] + mov r5, #0 + bl MOD16_021D7B98 + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0xc] + str r0, [sp] + ldr r0, [sp, #8] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x38] + bl MOD16_021E8960 + ldr r0, [sp, #8] + bl FUN_0202022C + cmp r0, #3 + bhi _021E8926 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E88F2: ; jump table + .short _021E88FA - _021E88F2 - 2 ; case 0 + .short _021E88FA - _021E88F2 - 2 ; case 1 + .short _021E890A - _021E88F2 - 2 ; case 2 + .short _021E8918 - _021E88F2 - 2 ; case 3 +_021E88FA: + ldr r0, [r4] + cmp r0, #0 + beq _021E8926 + mov r0, #0 + mov r5, #1 + mov r7, #9 + str r0, [r4] + b _021E8926 +_021E890A: + ldr r0, [r4] + cmp r0, #1 + beq _021E8926 + mov r5, #1 + mov r7, #0xa + str r5, [r4] + b _021E8926 +_021E8918: + ldr r0, [r4] + cmp r0, #2 + beq _021E8926 + mov r0, #2 + mov r5, #1 + mov r7, #8 + str r0, [r4] +_021E8926: + cmp r5, #0 + beq _021E895C + ldr r0, [r6] + cmp r0, #0 + beq _021E8934 + bl FUN_02016A18 +_021E8934: + ldr r0, [sp, #4] + ldr r3, [sp, #0x34] + ldr r0, [r0] + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD16_021D8D70 + str r0, [r6] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x2c] + ldr r2, [r2, #0xc] + mov r0, #0x1f + lsl r1, r1, #5 + mov r3, #0x20 + bl FUN_0201C2C8 + cmp r0, #0 + bne _021E895C + bl ErrorHandling +_021E895C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E88B4 + + thumb_func_start MOD16_021E8960 +MOD16_021E8960: ; 0x021E8960 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + bl MOD16_021D7C70 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021E8960 + + thumb_func_start MOD16_021E8970 +MOD16_021E8970: ; 0x021E8970 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r4, #8] + mov r6, #1 + str r6, [r1, #0x1c] + ldr r3, [r4] + add r5, r2, #0 + ldr r2, [r3] + mov r1, #4 + orr r1, r2 + str r1, [r3] + mov r1, #0 + str r1, [r0, #0x10] + mov r1, #2 + ldr r0, [r4, #8] + cmp r5, #5 + str r1, [r0, #0x14] + bhi _021E89D0 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E89A0: ; jump table + .short _021E89AC - _021E89A0 - 2 ; case 0 + .short _021E89BE - _021E89A0 - 2 ; case 1 + .short _021E89BE - _021E89A0 - 2 ; case 2 + .short _021E89BE - _021E89A0 - 2 ; case 3 + .short _021E89BE - _021E89A0 - 2 ; case 4 + .short _021E89BE - _021E89A0 - 2 ; case 5 +_021E89AC: + ldr r0, [r4, #8] + mov r1, #0x30 + str r1, [r0, #8] + ldr r0, [r4, #8] + mov r1, #0x48 + str r1, [r0, #0xc] + ldr r0, [r4, #8] + str r6, [r0, #0x14] + pop {r4, r5, r6, pc} +_021E89BE: + ldr r0, [r4, #0x10] + mov r1, #0x30 + mov r2, #0x48 + bl MOD16_021E6EE8 + ldr r0, [r4, #0x10] + add r1, r6, #0 + bl MOD16_021E6EF0 +_021E89D0: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E8970 + + thumb_func_start MOD16_021E89D4 +MOD16_021E89D4: ; 0x021E89D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r3, #0 + add r4, r1, #0 + str r2, [sp] + cmp r5, #5 + bhi _021E8A36 + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E89EC: ; jump table + .short _021E89F8 - _021E89EC - 2 ; case 0 + .short _021E8A12 - _021E89EC - 2 ; case 1 + .short _021E8A12 - _021E89EC - 2 ; case 2 + .short _021E8A12 - _021E89EC - 2 ; case 3 + .short _021E8A12 - _021E89EC - 2 ; case 4 + .short _021E8A12 - _021E89EC - 2 ; case 5 +_021E89F8: + ldr r3, [r4] + mov r1, #4 + ldr r2, [r3] + mov r7, #0x30 + orr r1, r2 + str r1, [r3] + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [r4, #8] + mov r1, #2 + mov r6, #0x48 + str r1, [r0, #0x14] + b _021E8A36 +_021E8A12: + ldr r2, [r4] + mov r1, #2 + ldr r3, [r2] + mov r7, #0x30 + orr r3, r1 + str r3, [r2] + str r5, [r0, #0x10] + ldr r0, [r4, #0x10] + mov r6, #0x48 + bl MOD16_021E6EF0 + sub r0, r5, #1 + bl MOD16_021DBBB4 + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl MOD16_021E6F0C +_021E8A36: + ldr r0, [sp] + cmp r0, #5 + bhi _021E8A76 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8A48: ; jump table + .short _021E8A54 - _021E8A48 - 2 ; case 0 + .short _021E8A64 - _021E8A48 - 2 ; case 1 + .short _021E8A64 - _021E8A48 - 2 ; case 2 + .short _021E8A64 - _021E8A48 - 2 ; case 3 + .short _021E8A64 - _021E8A48 - 2 ; case 4 + .short _021E8A64 - _021E8A48 - 2 ; case 5 +_021E8A54: + ldr r0, [r4, #8] + mov r1, #2 + str r7, [r0, #8] + ldr r0, [r4, #8] + str r6, [r0, #0xc] + ldr r0, [r4, #8] + str r1, [r0, #0x14] + pop {r3, r4, r5, r6, r7, pc} +_021E8A64: + ldr r0, [r4, #0x10] + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021E6EE8 + ldr r0, [r4, #0x10] + mov r1, #2 + bl MOD16_021E6EF0 +_021E8A76: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E89D4 + + thumb_func_start MOD16_021E8A78 +MOD16_021E8A78: ; 0x021E8A78 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x34] + add r4, r1, #0 + cmp r0, #8 + beq _021E8AB6 + cmp r0, #1 + ldr r0, [r4, #4] + bne _021E8A94 + mov r1, #0 + mvn r1, r1 + bl MOD16_021D9D48 + b _021E8A9A +_021E8A94: + mov r1, #1 + bl MOD16_021D9D48 +_021E8A9A: + cmp r0, #1 + bne _021E8AB6 + ldr r2, [r5, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E8970 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E8B7C + ldr r0, _021E8AB8 ; =0x0000068B + bl FUN_020054C8 +_021E8AB6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E8AB8: .word 0x0000068B + thumb_func_end MOD16_021E8A78 + + thumb_func_start MOD16_021E8ABC +MOD16_021E8ABC: ; 0x021E8ABC + ldr r1, _021E8AE0 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x40 + tst r1, r2 + beq _021E8ACC + mov r1, #1 + str r1, [r0, #0x34] + bx lr +_021E8ACC: + mov r1, #0x80 + tst r1, r2 + beq _021E8AD8 + mov r1, #0 + str r1, [r0, #0x34] + bx lr +_021E8AD8: + mov r1, #8 + str r1, [r0, #0x34] + bx lr + nop +_021E8AE0: .word 0x021C48B8 + thumb_func_end MOD16_021E8ABC + + thumb_func_start MOD16_021E8AE4 +MOD16_021E8AE4: ; 0x021E8AE4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x38] + mov r1, #1 + tst r0, r1 + ldr r0, [r5, #8] + bne _021E8AFC + mov r1, #0 + bl FUN_020200A0 + b _021E8B00 +_021E8AFC: + bl FUN_020200A0 +_021E8B00: + ldr r1, [r4, #0x38] + mov r0, #2 + tst r0, r1 + ldr r0, [r5, #0xc] + bne _021E8B12 + mov r1, #0 + bl FUN_020200A0 + b _021E8B18 +_021E8B12: + mov r1, #1 + bl FUN_020200A0 +_021E8B18: + ldr r1, [r4, #0x38] + mov r0, #4 + tst r0, r1 + ldr r0, [r5, #0x10] + bne _021E8B2A + mov r1, #0 + bl FUN_020200A0 + b _021E8B30 +_021E8B2A: + mov r1, #1 + bl FUN_020200A0 +_021E8B30: + ldr r1, [r4, #0x38] + mov r0, #8 + tst r0, r1 + ldr r0, [r5, #0x14] + bne _021E8B42 + mov r1, #0 + bl FUN_020200A0 + b _021E8B48 +_021E8B42: + mov r1, #1 + bl FUN_020200A0 +_021E8B48: + ldr r1, [r4, #0x38] + mov r0, #0x10 + tst r0, r1 + ldr r0, [r5, #0x18] + bne _021E8B5A + mov r1, #0 + bl FUN_020200A0 + b _021E8B60 +_021E8B5A: + mov r1, #1 + bl FUN_020200A0 +_021E8B60: + ldr r1, [r4, #0x38] + mov r0, #0x20 + tst r0, r1 + ldr r0, [r5, #0x1c] + bne _021E8B72 + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_021E8B72: + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E8AE4 + + thumb_func_start MOD16_021E8B7C +MOD16_021E8B7C: ; 0x021E8B7C + push {r3, r4, r5, r6, r7, lr} + mov r5, #0 + add r4, r0, #0 + add r6, r1, #0 + str r5, [r0, #0x38] + add r4, #0x38 + mov r7, #1 +_021E8B8A: + add r0, r5, #0 + bl MOD16_021DBBB4 + add r1, r0, #0 + ldr r0, [r6, #4] + bl MOD16_021D9F58 + cmp r0, #0 + beq _021E8BB0 + ldr r1, [r4] + mov r0, #1 + add r2, r1, #0 + orr r2, r0 + add r0, r5, #1 + add r1, r7, #0 + lsl r1, r0 + add r0, r2, #0 + orr r0, r1 + str r0, [r4] +_021E8BB0: + add r5, r5, #1 + cmp r5, #6 + blt _021E8B8A + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E8B7C + + thumb_func_start MOD16_021E8BB8 +MOD16_021E8BB8: ; 0x021E8BB8 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + cmp r4, #2 + blt _021E8BC8 + cmp r4, #8 + blt _021E8BCC +_021E8BC8: + bl ErrorHandling +_021E8BCC: + sub r0, r4, #2 + lsl r1, r0, #2 + ldr r0, _021E8BEC ; =0x021FF5F4 + cmp r6, #1 + ldr r1, [r0, r1] + bne _021E8BE2 + add r0, r5, #0 + add r1, r1, #1 + bl FUN_02020130 + pop {r4, r5, r6, pc} +_021E8BE2: + add r0, r5, #0 + bl FUN_02020130 + pop {r4, r5, r6, pc} + nop +_021E8BEC: .word 0x021FF5F4 + thumb_func_end MOD16_021E8BB8 + + thumb_func_start MOD16_021E8BF0 +MOD16_021E8BF0: ; 0x021E8BF0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021E8C70 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E8CF4 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E8D1C + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021E8E34 + str r0, [r5, #0x24] + ldr r0, _021E8C38 ; =MOD16_021E8E38 + str r0, [r5, #8] + ldr r0, _021E8C3C ; =MOD16_021E8E40 + str r0, [r5, #0xc] + ldr r0, _021E8C40 ; =MOD16_021E8E70 + str r0, [r5, #0x10] + ldr r0, _021E8C44 ; =MOD16_021E8E78 + str r0, [r5, #0x14] + ldr r0, _021E8C48 ; =MOD16_021E8F24 + str r0, [r5, #0x18] + ldr r0, _021E8C4C ; =MOD16_021E8F4C + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E8C38: .word MOD16_021E8E38 +_021E8C3C: .word MOD16_021E8E40 +_021E8C40: .word MOD16_021E8E70 +_021E8C44: .word MOD16_021E8E78 +_021E8C48: .word MOD16_021E8F24 +_021E8C4C: .word MOD16_021E8F4C + thumb_func_end MOD16_021E8BF0 + + thumb_func_start MOD16_021E8C50 +MOD16_021E8C50: ; 0x021E8C50 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E8DBC + ldr r0, [r4, #4] + bl MOD16_021E8DD0 + ldr r0, [r4, #0x20] + bl MOD16_021E8DE4 + pop {r4, pc} + thumb_func_end MOD16_021E8C50 + + thumb_func_start MOD16_021E8C68 +MOD16_021E8C68: ; 0x021E8C68 + ldr r0, [r0] + ldr r0, [r0, #0x28] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E8C68 + + thumb_func_start MOD16_021E8C70 +MOD16_021E8C70: ; 0x021E8C70 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x34 + bl FUN_02016998 + add r4, r0, #0 + bne _021E8C82 + bl ErrorHandling +_021E8C82: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x34 + blx Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7B00 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #2 + bl MOD16_021D7B5C + ldr r0, [r0] + mov r1, #3 + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD16_021D7B5C + str r0, [r4, #0x14] + add r0, r5, #0 + mov r1, #4 + bl MOD16_021D7B5C + str r0, [r4, #0x18] + add r0, r5, #0 + mov r1, #6 + bl MOD16_021D7B5C + str r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #7 + bl MOD16_021D7B5C + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #6 + bl MOD16_021D7B7C + str r0, [r4, #0x24] + add r0, r5, #0 + mov r1, #0 + bl MOD16_021D7B5C + ldr r0, [r0] + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #0x2c] + str r0, [r4, #0x30] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E8C70 + + thumb_func_start MOD16_021E8CF4 +MOD16_021E8CF4: ; 0x021E8CF4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E8D06 + bl ErrorHandling +_021E8D06: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E8CF4 + + thumb_func_start MOD16_021E8D1C +MOD16_021E8D1C: ; 0x021E8D1C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021E8E34 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021E8D3C + bl ErrorHandling +_021E8D3C: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + blx Call_FillMemWithValue + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD16_021DAE0C + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x14 + add r2, r6, #0 + mov r3, #4 + bl MOD16_021DB0B0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x28 + add r2, r6, #0 + mov r3, #8 + bl MOD16_021DAED4 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x3c + add r2, r6, #0 + mov r3, #0x10 + bl MOD16_021DAF38 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x50 + add r2, r6, #0 + mov r3, #0x20 + bl MOD16_021DAF9C + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x64 + add r2, r6, #0 + mov r3, #0x40 + bl MOD16_021DB000 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x78 + add r2, r6, #0 + mov r3, #0x80 + bl MOD16_021DB058 + add r1, r4, #0 + mov r3, #1 + add r0, r5, #0 + add r1, #0x8c + add r2, r6, #0 + lsl r3, r3, #8 + bl MOD16_021DB16C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E8D1C + + thumb_func_start MOD16_021E8DBC +MOD16_021E8DBC: ; 0x021E8DBC + push {r4, lr} + add r4, r0, #0 + bne _021E8DC6 + bl ErrorHandling +_021E8DC6: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8DBC + + thumb_func_start MOD16_021E8DD0 +MOD16_021E8DD0: ; 0x021E8DD0 + push {r4, lr} + add r4, r0, #0 + bne _021E8DDA + bl ErrorHandling +_021E8DDA: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8DD0 + + thumb_func_start MOD16_021E8DE4 +MOD16_021E8DE4: ; 0x021E8DE4 + push {r4, lr} + add r4, r0, #0 + bne _021E8DEE + bl ErrorHandling +_021E8DEE: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x14 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x28 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x3c + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x50 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x64 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x78 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x8c + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021E8DE4 + + thumb_func_start MOD16_021E8E34 +MOD16_021E8E34: ; 0x021E8E34 + mov r0, #8 + bx lr + thumb_func_end MOD16_021E8E34 + + thumb_func_start MOD16_021E8E38 +MOD16_021E8E38: ; 0x021E8E38 + ldr r1, [r1, #0x10] + mov r0, #1 + str r0, [r1, #0x1c] + bx lr + thumb_func_end MOD16_021E8E38 + + thumb_func_start MOD16_021E8E40 +MOD16_021E8E40: ; 0x021E8E40 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #1 + bne _021E8E4E + mov r0, #1 + pop {r4, pc} +_021E8E4E: + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _021E8E58 + mov r0, #0 + pop {r4, pc} +_021E8E58: + ldr r0, [r4] + cmp r0, #0 + bne _021E8E6A + add r0, r1, #0 + bl MOD16_021E9534 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E8E6A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8E40 + + thumb_func_start MOD16_021E8E70 +MOD16_021E8E70: ; 0x021E8E70 + mov r0, #0 + str r0, [r1, #8] + mov r0, #1 + bx lr + thumb_func_end MOD16_021E8E70 + + thumb_func_start MOD16_021E8E78 +MOD16_021E8E78: ; 0x021E8E78 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r1, #3 + bhi _021E8F1A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E8E96: ; jump table + .short _021E8E9E - _021E8E96 - 2 ; case 0 + .short _021E8EBE - _021E8E96 - 2 ; case 1 + .short _021E8EF6 - _021E8E96 - 2 ; case 2 + .short _021E8F0E - _021E8E96 - 2 ; case 3 +_021E8E9E: + ldr r0, [r4, #4] + mov r1, #0x28 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x28 + blx Call_FillMemWithValue + ldr r1, [r7, #8] + ldr r0, [r4, #8] + str r1, [r0] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E8F1E +_021E8EBE: + ldr r3, [r4, #4] + add r1, r6, #0 + bl MOD16_021E9294 + add r0, r6, #0 + bl MOD16_021E9DE0 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2f + str r0, [sp, #8] + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r2, r1, #0 + sub r2, #0x14 + bl MOD16_021D8988 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E8F1E +_021E8EF6: + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + cmp r0, #0 + beq _021E8F1E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E8F1E +_021E8F0E: + add r0, r6, #0 + bl MOD16_021E9DFC + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021E8F1A: + bl ErrorHandling +_021E8F1E: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E8E78 + + thumb_func_start MOD16_021E8F24 +MOD16_021E8F24: ; 0x021E8F24 + push {r3, r4, r5, lr} + ldr r4, [r1, #8] + add r5, r2, #0 + ldr r1, [r5, #8] + ldr r0, [r4] + cmp r0, r1 + beq _021E8F46 + add r0, r4, #0 + bl MOD16_021E9530 + ldr r1, [r5, #8] + ldr r2, [r4] + add r0, r4, #0 + bl MOD16_021EA1B4 + ldr r0, [r5, #8] + str r0, [r4] +_021E8F46: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E8F24 + + thumb_func_start MOD16_021E8F4C +MOD16_021E8F4C: ; 0x021E8F4C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + ldr r3, [r4] + add r5, r0, #0 + ldr r1, [r4, #8] + cmp r3, #4 + bhi _021E9008 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_021E8F68: ; jump table + .short _021E8F72 - _021E8F68 - 2 ; case 0 + .short _021E8FCC - _021E8F68 - 2 ; case 1 + .short _021E8FE4 - _021E8F68 - 2 ; case 2 + .short _021E8FF0 - _021E8F68 - 2 ; case 3 + .short _021E9002 - _021E8F68 - 2 ; case 4 +_021E8F72: + ldr r0, [r2, #0x2c] + cmp r0, #0 + beq _021E8FA2 + add r0, r1, #0 + bl MOD16_021E9DE0 + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2f + str r0, [sp, #8] + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r3, r1, #0 + sub r3, #0x14 + bl MOD16_021D8988 + b _021E8FC4 +_021E8FA2: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x3f + str r0, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r3, r1, #0 + sub r3, #0x14 + bl MOD16_021D8988 +_021E8FC4: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E900C +_021E8FCC: + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + cmp r0, #0 + beq _021E900C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E900C +_021E8FE4: + bl MOD16_021E92D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E900C +_021E8FF0: + add r0, r1, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E900C +_021E9002: + add sp, #0x14 + mov r0, #1 + pop {r4, r5, pc} +_021E9008: + bl ErrorHandling +_021E900C: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E8F4C + + thumb_func_start MOD16_021E9014 +MOD16_021E9014: ; 0x021E9014 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E9024 + mov r0, #1 + str r0, [r4, #0x30] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E9014 + + thumb_func_start MOD16_021E9024 +MOD16_021E9024: ; 0x021E9024 + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4] + mov r0, #2 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + mov r1, #0 + str r1, [r4, #0x28] + ldr r0, [r4, #0x10] + str r1, [r0, #0x14] + ldr r0, [r4, #0x18] + bl MOD16_021E6EF0 + ldr r0, [r4, #8] + cmp r0, #4 + bhi _021E90D2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9052: ; jump table + .short _021E905C - _021E9052 - 2 ; case 0 + .short _021E9078 - _021E9052 - 2 ; case 1 + .short _021E909C - _021E9052 - 2 ; case 2 + .short _021E90C0 - _021E9052 - 2 ; case 3 + .short _021E90CA - _021E9052 - 2 ; case 4 +_021E905C: + ldr r0, [r4, #0x10] + mov r1, #0x38 + str r1, [r0, #8] + ldr r0, [r4, #0x10] + mov r2, #0x50 + str r2, [r0, #0xc] + ldr r0, [r4, #0x18] + bl MOD16_021E6EE8 + ldr r0, [r4, #0xc] + mov r1, #1 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] + pop {r4, pc} +_021E9078: + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD16_021E2F54 + ldr r0, [r4, #0x1c] + mov r1, #4 + bl MOD16_021E2F5C + ldr r0, [r4, #0x1c] + mov r1, #0x38 + mov r2, #0x50 + bl MOD16_021E2F4C + ldr r0, [r4, #0xc] + mov r1, #1 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] + pop {r4, pc} +_021E909C: + ldr r0, [r4, #0x20] + mov r1, #1 + bl MOD16_021EA264 + ldr r0, [r4, #0x20] + mov r1, #4 + bl MOD16_021EA26C + ldr r0, [r4, #0x20] + mov r1, #0x38 + mov r2, #0x50 + bl MOD16_021EA25C + ldr r0, [r4, #0xc] + mov r1, #1 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] + pop {r4, pc} +_021E90C0: + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] + pop {r4, pc} +_021E90CA: + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] +_021E90D2: + pop {r4, pc} + thumb_func_end MOD16_021E9024 + + thumb_func_start MOD16_021E90D4 +MOD16_021E90D4: ; 0x021E90D4 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E90D4 + + thumb_func_start MOD16_021E90D8 +MOD16_021E90D8: ; 0x021E90D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #1 + add r7, r1, #0 + str r2, [sp] + str r0, [sp, #4] + cmp r7, #4 + bhi _021E91D6 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E90F6: ; jump table + .short _021E9100 - _021E90F6 - 2 ; case 0 + .short _021E9128 - _021E90F6 - 2 ; case 1 + .short _021E915E - _021E90F6 - 2 ; case 2 + .short _021E9194 - _021E90F6 - 2 ; case 3 + .short _021E91B4 - _021E90F6 - 2 ; case 4 +_021E9100: + add r0, r2, #0 + bl MOD16_021E90D4 + cmp r0, #0 + beq _021E910E + mov r1, #2 + b _021E9110 +_021E910E: + mov r1, #1 +_021E9110: + ldr r0, [r4, #0x10] + mov r6, #0x30 + str r1, [r0, #0x14] + ldr r2, [r4] + mov r0, #4 + ldr r1, [r2] + mov r5, #0x48 + orr r0, r1 + str r0, [r2] + mov r0, #0 + str r0, [r4, #8] + b _021E91DA +_021E9128: + add r0, r2, #0 + bl MOD16_021E90D4 + cmp r0, #0 + ldr r0, [r4, #0x1c] + beq _021E9144 + mov r1, #1 + bl MOD16_021E2F54 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD16_021E2F5C + b _021E914A +_021E9144: + mov r1, #0 + bl MOD16_021E2F54 +_021E914A: + ldr r2, [r4] + mov r0, #8 + ldr r1, [r2] + mov r6, #0x28 + orr r0, r1 + str r0, [r2] + mov r0, #1 + str r0, [r4, #8] + mov r5, #0x78 + b _021E91DA +_021E915E: + add r0, r2, #0 + bl MOD16_021E90D4 + cmp r0, #0 + ldr r0, [r4, #0x20] + beq _021E917A + mov r1, #1 + bl MOD16_021EA264 + ldr r0, [r4, #0x20] + mov r1, #1 + bl MOD16_021EA26C + b _021E9180 +_021E917A: + mov r1, #0 + bl MOD16_021EA264 +_021E9180: + ldr r2, [r4] + mov r0, #0x10 + ldr r1, [r2] + mov r6, #0x30 + orr r0, r1 + str r0, [r2] + mov r0, #2 + str r0, [r4, #8] + mov r5, #0x40 + b _021E91DA +_021E9194: + ldr r0, [r4, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + bne _021E91AE + ldr r2, [r4] + mov r0, #0x20 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + mov r0, #3 + str r0, [r4, #8] + b _021E91DA +_021E91AE: + mov r0, #0 + str r0, [sp, #4] + b _021E91DA +_021E91B4: + ldr r0, [r4, #4] + bl MOD16_021D9F80 + cmp r0, #1 + bne _021E91D0 + ldr r2, [r4] + mov r0, #1 + ldr r1, [r2] + lsl r0, r0, #8 + orr r0, r1 + str r0, [r2] + mov r0, #4 + str r0, [r4, #8] + b _021E91DA +_021E91D0: + mov r0, #0 + str r0, [sp, #4] + b _021E91DA +_021E91D6: + bl ErrorHandling +_021E91DA: + ldr r0, [sp] + cmp r0, #4 + bhi _021E928A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E91EC: ; jump table + .short _021E91F6 - _021E91EC - 2 ; case 0 + .short _021E922E - _021E91EC - 2 ; case 1 + .short _021E925C - _021E91EC - 2 ; case 2 + .short _021E928E - _021E91EC - 2 ; case 3 + .short _021E928E - _021E91EC - 2 ; case 4 +_021E91F6: + add r0, r7, #0 + bl MOD16_021E90D4 + cmp r0, #0 + beq _021E920E + ldr r0, [r4, #0x10] + mov r1, #2 + str r1, [r0, #0x14] + ldr r0, [r4, #0x18] + bl MOD16_021E6EF0 + b _021E921A +_021E920E: + ldr r0, [r4, #0x10] + mov r1, #1 + str r1, [r0, #0x14] + ldr r0, [r4, #0x18] + bl MOD16_021E6EF0 +_021E921A: + ldr r0, [r4, #0x10] + add r1, r6, #0 + str r6, [r0, #8] + ldr r0, [r4, #0x10] + add r2, r5, #0 + str r5, [r0, #0xc] + ldr r0, [r4, #0x18] + bl MOD16_021E6EE8 + b _021E928E +_021E922E: + add r0, r7, #0 + bl MOD16_021E90D4 + cmp r0, #0 + ldr r0, [r4, #0x1c] + beq _021E924A + mov r1, #1 + bl MOD16_021E2F54 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD16_021E2F5C + b _021E9250 +_021E924A: + mov r1, #0 + bl MOD16_021E2F54 +_021E9250: + ldr r0, [r4, #0x1c] + add r1, r6, #0 + add r2, r5, #0 + bl MOD16_021E2F4C + b _021E928E +_021E925C: + add r0, r7, #0 + bl MOD16_021E90D4 + cmp r0, #0 + ldr r0, [r4, #0x20] + beq _021E9278 + mov r1, #1 + bl MOD16_021EA264 + ldr r0, [r4, #0x20] + mov r1, #1 + bl MOD16_021EA26C + b _021E927E +_021E9278: + mov r1, #0 + bl MOD16_021EA264 +_021E927E: + ldr r0, [r4, #0x20] + add r1, r6, #0 + add r2, r5, #0 + bl MOD16_021EA25C + b _021E928E +_021E928A: + bl ErrorHandling +_021E928E: + ldr r0, [sp, #4] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E90D8 + + thumb_func_start MOD16_021E9294 +MOD16_021E9294: ; 0x021E9294 + push {r4, r5, r6, lr} + add r4, r3, #0 + add r5, r1, #0 + add r1, r2, #0 + add r6, r0, #0 + add r2, r4, #0 + bl MOD16_021E92F8 + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021E938C + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021E947C + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021E9484 + add r0, r5, #0 + mov r1, #0 + mov r2, #1 + bl MOD16_021EA1B4 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E9294 + + thumb_func_start MOD16_021E92D0 +MOD16_021E92D0: ; 0x021E92D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021E9480 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E9438 + add r0, r4, #0 + bl MOD16_021E9518 + ldr r0, [r5] + mov r1, #2 + ldr r0, [r0] + bl FUN_02018744 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E92D0 + + thumb_func_start MOD16_021E92F8 +MOD16_021E92F8: ; 0x021E92F8 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + mov r2, #0 + str r2, [sp] + add r5, r0, #0 + str r4, [sp, #4] + add r6, r1, #0 + ldr r0, [r5] + mov r1, #6 + add r3, r2, #0 + bl MOD16_021D8CFC + ldr r0, [r6, #4] + bl MOD16_021D9D04 + cmp r0, #1 + bne _021E932E + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + mov r2, #0 + ldr r0, [r5] + mov r1, #0x18 + add r3, r2, #0 + bl MOD16_021D8CFC +_021E932E: + ldr r0, [r5] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #2 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x39 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r4, r0, #0 + ldrh r0, [r2] + mov r1, #2 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #2 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E92F8 + + thumb_func_start MOD16_021E938C +MOD16_021E938C: ; 0x021E938C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r0] + add r5, r1, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E9428 ; =0x00000827 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x57 + bl FUN_020091E0 + str r0, [r5, #0x18] + bl FUN_02009B04 + ldr r0, [r5, #0x18] + bl FUN_02009474 + ldr r0, _021E942C ; =0x000007DC + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xc + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x1c] + bl FUN_02009D68 + ldr r0, [r5, #0x1c] + bl FUN_02009474 + ldr r0, _021E9430 ; =0x00000825 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x55 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x20] + ldr r0, _021E9434 ; =0x00000826 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x56 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x24] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9428: .word 0x00000827 +_021E942C: .word 0x000007DC +_021E9430: .word 0x00000825 +_021E9434: .word 0x00000826 + thumb_func_end MOD16_021E938C + + thumb_func_start MOD16_021E9438 +MOD16_021E9438: ; 0x021E9438 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + ldr r0, [r5, #0x18] + bl FUN_02009C0C + ldr r0, [r5, #0x1c] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x20] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E9438 + + thumb_func_start MOD16_021E947C +MOD16_021E947C: ; 0x021E947C + bx lr + .align 2, 0 + thumb_func_end MOD16_021E947C + + thumb_func_start MOD16_021E9480 +MOD16_021E9480: ; 0x021E9480 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9480 + + thumb_func_start MOD16_021E9484 +MOD16_021E9484: ; 0x021E9484 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r7, [r0] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + add r5, r1, #0 + str r0, [sp, #0xc] + ldr r0, [r5, #0x1c] + mov r1, #0 + add r4, r2, #0 + bl FUN_02009E54 + mov r1, #0x10 + str r1, [sp, #0x1c] + mov r1, #0 + str r1, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + str r1, [sp, #0x18] + mov r1, #1 + str r0, [sp, #0x14] + str r1, [sp, #0x2c] + str r4, [sp, #0x30] + bl FUN_0201E28C + str r0, [sp, #8] + mov r6, #0 +_021E94BC: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + add r3, r6, #0 + ldr r0, [r7, r0] + ldr r2, _021E9514 ; =0x00000266 + add r1, r4, #0 + add r3, #0x65 + bl MOD16_021DB3C8 + str r4, [sp, #0x10] + add r0, sp, #0xc + bl MOD16_021DB2BC + str r0, [r5, #4] + ldr r0, [r0] + ldr r1, [sp, #8] + bl FUN_02011A60 + ldr r0, [r5, #4] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + add r0, r4, #0 + bl MOD16_021DB3BC + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #5 + blt _021E94BC + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021E9514: .word 0x00000266 + thumb_func_end MOD16_021E9484 + + thumb_func_start MOD16_021E9518 +MOD16_021E9518: ; 0x021E9518 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E951E: + ldr r0, [r5, #4] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E951E + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E9518 + + thumb_func_start MOD16_021E9530 +MOD16_021E9530: ; 0x021E9530 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9530 + + thumb_func_start MOD16_021E9534 +MOD16_021E9534: ; 0x021E9534 + mov r1, #1 + str r1, [r0, #0x28] + ldr r0, [r0, #0x10] + str r1, [r0, #0x14] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9534 + + thumb_func_start MOD16_021E9540 +MOD16_021E9540: ; 0x021E9540 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021E95D0 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E960C + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E9634 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021E9664 + str r0, [r5, #0x24] + ldr r0, _021E9588 ; =MOD16_021E9668 + str r0, [r5, #8] + ldr r0, _021E958C ; =MOD16_021E96B8 + str r0, [r5, #0xc] + ldr r0, _021E9590 ; =MOD16_021E972C + str r0, [r5, #0x10] + ldr r0, _021E9594 ; =MOD16_021E974C + str r0, [r5, #0x14] + ldr r0, _021E9598 ; =MOD16_021E97DC + str r0, [r5, #0x18] + ldr r0, _021E959C ; =MOD16_021E9810 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E9588: .word MOD16_021E9668 +_021E958C: .word MOD16_021E96B8 +_021E9590: .word MOD16_021E972C +_021E9594: .word MOD16_021E974C +_021E9598: .word MOD16_021E97DC +_021E959C: .word MOD16_021E9810 + thumb_func_end MOD16_021E9540 + + thumb_func_start MOD16_021E95A0 +MOD16_021E95A0: ; 0x021E95A0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E9638 + ldr r0, [r4, #4] + bl MOD16_021E964C + ldr r0, [r4, #0x20] + bl MOD16_021E9660 + pop {r4, pc} + thumb_func_end MOD16_021E95A0 + + thumb_func_start MOD16_021E95B8 +MOD16_021E95B8: ; 0x021E95B8 + ldr r0, [r0] + ldr r0, [r0, #0x24] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E95B8 + + thumb_func_start MOD16_021E95C0 +MOD16_021E95C0: ; 0x021E95C0 + ldr r0, [r0] + ldr r0, [r0, #0x28] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E95C0 + + thumb_func_start MOD16_021E95C8 +MOD16_021E95C8: ; 0x021E95C8 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E95C8 + + thumb_func_start MOD16_021E95D0 +MOD16_021E95D0: ; 0x021E95D0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x34 + bl FUN_02016998 + add r4, r0, #0 + bne _021E95E2 + bl ErrorHandling +_021E95E2: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x34 + blx Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7B14 + str r0, [r4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + ldr r0, [r0] + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E95D0 + + thumb_func_start MOD16_021E960C +MOD16_021E960C: ; 0x021E960C + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E961E + bl ErrorHandling +_021E961E: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E960C + + thumb_func_start MOD16_021E9634 +MOD16_021E9634: ; 0x021E9634 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E9634 + + thumb_func_start MOD16_021E9638 +MOD16_021E9638: ; 0x021E9638 + push {r4, lr} + add r4, r0, #0 + bne _021E9642 + bl ErrorHandling +_021E9642: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E9638 + + thumb_func_start MOD16_021E964C +MOD16_021E964C: ; 0x021E964C + push {r4, lr} + add r4, r0, #0 + bne _021E9656 + bl ErrorHandling +_021E9656: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E964C + + thumb_func_start MOD16_021E9660 +MOD16_021E9660: ; 0x021E9660 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9660 + + thumb_func_start MOD16_021E9664 +MOD16_021E9664: ; 0x021E9664 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E9664 + + thumb_func_start MOD16_021E9668 +MOD16_021E9668: ; 0x021E9668 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #0x1c + bl FUN_02016998 + add r6, r0, #0 + add r2, r6, #0 + mov r1, #0x1c + mov r0, #0 +_021E967E: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021E967E + ldr r2, [r5, #4] + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021E9894 + ldr r2, [r5, #4] + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021E9E6C + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021EA08C + mov r1, #0 + mov r0, #4 +_021E96A6: + add r1, r1, #1 + str r0, [r4, #0xc] + add r4, r4, #4 + cmp r1, #6 + blt _021E96A6 + str r6, [r5, #8] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E9668 + + thumb_func_start MOD16_021E96B8 +MOD16_021E96B8: ; 0x021E96B8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021E96CC + mov r0, #0 + str r0, [r5, #0x24] + mov r0, #1 + pop {r3, r4, r5, pc} +_021E96CC: + ldr r1, [r0, #0x10] + cmp r1, #1 + bne _021E96D6 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E96D6: + ldr r1, [r0] + cmp r1, #0 + bne _021E96F0 + mov r3, #1 + str r3, [r5, #0x24] + ldr r1, [r5, #4] + mov r2, #0 + str r2, [r1, #0x30] + str r3, [r5, #0x28] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + b _021E9728 +_021E96F0: + mov r0, #1 + str r0, [r5, #0x28] + add r0, r5, #0 + bl MOD16_021E9E2C + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EA0EC + add r0, r5, #0 + bl MOD16_021E9930 + ldr r0, [r5, #8] + bl MOD16_021D9FB8 + cmp r0, #1 + bne _021E9720 + ldr r0, [r5, #0x30] + cmp r0, #0 + bne _021E9720 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E9F48 +_021E9720: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E9940 +_021E9728: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E96B8 + + thumb_func_start MOD16_021E972C +MOD16_021E972C: ; 0x021E972C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r5, [r4, #8] + add r0, r5, #0 + bl MOD16_021E99C0 + add r0, r5, #0 + bl MOD16_021EA074 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E972C + + thumb_func_start MOD16_021E974C +MOD16_021E974C: ; 0x021E974C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + add r7, r2, #0 + ldr r6, [r3, #8] + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021E97D8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E976A: ; jump table + .short _021E9774 - _021E976A - 2 ; case 0 + .short _021E978E - _021E976A - 2 ; case 1 + .short _021E979E - _021E976A - 2 ; case 2 + .short _021E97C2 - _021E976A - 2 ; case 3 + .short _021E97D4 - _021E976A - 2 ; case 4 +_021E9774: + ldr r0, [r4, #4] + mov r1, #0x28 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x28 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E97D8 +_021E978E: + ldr r3, [r4, #4] + add r1, r5, #0 + bl MOD16_021E9B00 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E97D8 +_021E979E: + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021EA120 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E97D8 +_021E97C2: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021E97D8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E97D8 +_021E97D4: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E97D8: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E974C + + thumb_func_start MOD16_021E97DC +MOD16_021E97DC: ; 0x021E97DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + ldr r0, [r3, #8] + add r7, r2, #0 + ldr r5, [r1, #8] + str r0, [sp, #4] + mov r6, #0 + add r4, r7, #0 +_021E97EE: + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021D7B98 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #6 + blt _021E97EE + ldr r0, [sp] + ldr r1, [sp, #4] + add r2, r7, #0 + bl MOD16_021EA13C + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E97DC + + thumb_func_start MOD16_021E9810 +MOD16_021E9810: ; 0x021E9810 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021E9890 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E982A: ; jump table + .short _021E9834 - _021E982A - 2 ; case 0 + .short _021E984E - _021E982A - 2 ; case 1 + .short _021E9860 - _021E982A - 2 ; case 2 + .short _021E987C - _021E982A - 2 ; case 3 + .short _021E988C - _021E982A - 2 ; case 4 +_021E9834: + mov r0, #2 + str r0, [sp] + mov r0, #4 + add r1, r0, #0 + sub r1, #0x14 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E9890 +_021E984E: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021E9890 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E9890 +_021E9860: + add r1, r5, #0 + bl MOD16_021E9B3C + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B14 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E9890 +_021E987C: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E9890 +_021E988C: + mov r0, #1 + pop {r3, r4, r5, pc} +_021E9890: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E9810 + + thumb_func_start MOD16_021E9894 +MOD16_021E9894: ; 0x021E9894 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0x18 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #0x30 + str r0, [sp] + mov r1, #8 + ldr r0, [r5, #4] + mov r2, #0x28 + add r3, r1, #0 + bl MOD16_021D7C98 + mov r0, #0xf8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, #0x14 + mov r2, #0x28 + mov r3, #0xd0 + bl MOD16_021D7C98 + mov r0, #0x58 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, r0, #4 + mov r2, #0x28 + mov r3, #0x30 + bl MOD16_021D7C98 + mov r0, #0x80 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, #8 + mov r2, #0x28 + mov r3, #0x58 + bl MOD16_021D7C98 + mov r0, #0xa8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, #0xc + mov r2, #0x28 + mov r3, #0x80 + bl MOD16_021D7C98 + mov r0, #0xd0 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, #0x10 + mov r2, #0x28 + mov r3, #0xa8 + bl MOD16_021D7C98 + str r4, [r5, #8] + str r5, [r5, #0xc] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021E992C ; =MOD16_021E99D8 + mov r1, #6 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021E992C: .word MOD16_021E99D8 + thumb_func_end MOD16_021E9894 + + thumb_func_start MOD16_021E9930 +MOD16_021E9930: ; 0x021E9930 + mov r2, #0 + mov r1, #3 +_021E9934: + add r2, r2, #1 + str r1, [r0, #0xc] + add r0, r0, #4 + cmp r2, #6 + blt _021E9934 + bx lr + thumb_func_end MOD16_021E9930 + + thumb_func_start MOD16_021E9940 +MOD16_021E9940: ; 0x021E9940 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0x2c] + cmp r1, #0 + bne _021E9950 + ldr r0, [r0] + bl FUN_02022144 +_021E9950: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021E9960 + ldr r0, [r4, #0x20] + cmp r0, #2 + beq _021E9960 + mov r0, #1 + str r0, [r4, #0x20] +_021E9960: + ldr r0, [r4, #4] + ldr r0, [r0, #8] + cmp r0, #4 + bhi _021E99BA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9974: ; jump table + .short _021E997E - _021E9974 - 2 ; case 0 + .short _021E998A - _021E9974 - 2 ; case 1 + .short _021E9996 - _021E9974 - 2 ; case 2 + .short _021E99A2 - _021E9974 - 2 ; case 3 + .short _021E99AE - _021E9974 - 2 ; case 4 +_021E997E: + ldr r0, [r4, #0xc] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0xc] + pop {r4, pc} +_021E998A: + ldr r0, [r4, #0x10] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0x10] + pop {r4, pc} +_021E9996: + ldr r0, [r4, #0x14] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0x14] + pop {r4, pc} +_021E99A2: + ldr r0, [r4, #0x18] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0x18] + pop {r4, pc} +_021E99AE: + ldr r0, [r4, #0x1c] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0x1c] + pop {r4, pc} +_021E99BA: + bl ErrorHandling +_021E99BE: + pop {r4, pc} + thumb_func_end MOD16_021E9940 + + thumb_func_start MOD16_021E99C0 +MOD16_021E99C0: ; 0x021E99C0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E99C0 + + thumb_func_start MOD16_021E99D8 +MOD16_021E99D8: ; 0x021E99D8 + push {r4, r5, r6, lr} + ldr r6, [r2] + ldr r5, [r2, #4] + lsl r2, r0, #2 + add r2, r6, r2 + ldr r4, [r6, #4] + cmp r1, #0 + str r1, [r2, #0xc] + beq _021E99F0 + cmp r1, #2 + beq _021E99F6 + pop {r4, r5, r6, pc} +_021E99F0: + mov r0, #0 + str r0, [r5, #0x10] + pop {r4, r5, r6, pc} +_021E99F6: + cmp r0, #5 + bhi _021E9AF6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9A06: ; jump table + .short _021E9A20 - _021E9A06 - 2 ; case 0 + .short _021E9A3E - _021E9A06 - 2 ; case 1 + .short _021E9A5C - _021E9A06 - 2 ; case 2 + .short _021E9A7A - _021E9A06 - 2 ; case 3 + .short _021E9AB4 - _021E9A06 - 2 ; case 4 + .short _021E9A12 - _021E9A06 - 2 ; case 5 +_021E9A12: + add r0, r4, #0 + bl MOD16_021E9014 + ldr r0, _021E9AF8 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A20: + ldr r2, [r4, #8] + cmp r2, #0 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #0 + bl MOD16_021E9E18 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A3E: + ldr r2, [r4, #8] + cmp r2, #1 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #1 + bl MOD16_021E9E18 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A5C: + ldr r2, [r4, #8] + cmp r2, #2 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #2 + bl MOD16_021E9E18 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A7A: + ldr r2, [r4, #8] + cmp r2, #3 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #3 + bl MOD16_021E9E18 + cmp r0, #0 + beq _021E9A9C + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A9C: + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E9AF6 + ldr r0, [r4, #8] + cmp r0, #2 + beq _021E9AAE + ldr r0, _021E9AF8 ; =0x000005DD + bl FUN_020054C8 +_021E9AAE: + mov r0, #1 + str r0, [r5, #0x10] + pop {r4, r5, r6, pc} +_021E9AB4: + ldr r2, [r4, #8] + cmp r2, #4 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #4 + bl MOD16_021E9E18 + cmp r0, #0 + beq _021E9AD6 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9AD6: + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E9AF6 + ldr r0, [r4, #4] + bl MOD16_021D9F80 + cmp r0, #1 + bne _021E9AF2 + ldr r0, [r4, #8] + cmp r0, #2 + beq _021E9AF2 + ldr r0, _021E9AF8 ; =0x000005DD + bl FUN_020054C8 +_021E9AF2: + mov r0, #0 + str r0, [r5, #0x10] +_021E9AF6: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E9AF8: .word 0x000005DD +_021E9AFC: .word 0x0000068B + thumb_func_end MOD16_021E99D8 + + thumb_func_start MOD16_021E9B00 +MOD16_021E9B00: ; 0x021E9B00 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021E9B60 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD16_021E9BFC + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD16_021E9CF0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD16_021E9DD8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA1D8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E9B00 + + thumb_func_start MOD16_021E9B3C +MOD16_021E9B3C: ; 0x021E9B3C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E9DDC + add r0, r5, #0 + bl MOD16_021E9DC0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E9CAC + ldr r0, [r4] + mov r1, #5 + ldr r0, [r0] + bl FUN_02018744 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E9B3C + + thumb_func_start MOD16_021E9B60 +MOD16_021E9B60: ; 0x021E9B60 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + add r4, r2, #0 + ldr r0, [r0, #0x30] + cmp r0, #0 + beq _021E9B9E + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + ldr r0, [r5] + mov r1, #6 + mov r2, #4 + bl MOD16_021D8CFC + ldr r0, [r6, #8] + bl MOD16_021D9D04 + cmp r0, #1 + bne _021E9B9E + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r5] + mov r1, #0x18 + mov r2, #4 + mov r3, #0 + bl MOD16_021D8CFC +_021E9B9E: + ldr r0, [r5] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #5 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x3b + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r4, r0, #0 + ldrh r0, [r2] + mov r1, #5 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #5 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E9B60 + + thumb_func_start MOD16_021E9BFC +MOD16_021E9BFC: ; 0x021E9BFC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E9C9C ; =0x00000894 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x60 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x18] + bl FUN_02009B04 + ldr r0, [r5, #0x18] + bl FUN_02009474 + ldr r0, _021E9CA0 ; =0x0000083F + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xb + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x1c] + bl FUN_02009D68 + ldr r0, [r5, #0x1c] + bl FUN_02009474 + ldr r0, _021E9CA4 ; =0x00000892 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5e + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x20] + ldr r0, _021E9CA8 ; =0x00000893 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5f + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x24] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9C9C: .word 0x00000894 +_021E9CA0: .word 0x0000083F +_021E9CA4: .word 0x00000892 +_021E9CA8: .word 0x00000893 + thumb_func_end MOD16_021E9BFC + + thumb_func_start MOD16_021E9CAC +MOD16_021E9CAC: ; 0x021E9CAC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x1c] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x20] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E9CAC + + thumb_func_start MOD16_021E9CF0 +MOD16_021E9CF0: ; 0x021E9CF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E9DBC ; =0x00000893 + add r5, r0, #0 + mov r0, #0 + add r6, r2, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x4c + sub r2, #0x54 + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r7, #7 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x20 + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #0x36 + str r6, [sp, #0x48] + lsl r0, r0, #0xe + mov r6, #0x39 + str r0, [sp, #0x38] + mov r4, #0 + lsl r7, r7, #0xe + lsl r6, r6, #0xe +_021E9D60: + cmp r4, #5 + bhi _021E9DA2 + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9D70: ; jump table + .short _021E9D80 - _021E9D70 - 2 ; case 0 + .short _021E9D84 - _021E9D70 - 2 ; case 1 + .short _021E9D8C - _021E9D70 - 2 ; case 2 + .short _021E9D94 - _021E9D70 - 2 ; case 3 + .short _021E9D9C - _021E9D70 - 2 ; case 4 + .short _021E9D7C - _021E9D70 - 2 ; case 5 +_021E9D7C: + str r6, [sp, #0x34] + b _021E9DA2 +_021E9D80: + str r7, [sp, #0x34] + b _021E9DA2 +_021E9D84: + mov r0, #0x11 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + b _021E9DA2 +_021E9D8C: + mov r0, #0x1b + lsl r0, r0, #0xe + str r0, [sp, #0x34] + b _021E9DA2 +_021E9D94: + mov r0, #0x25 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + b _021E9DA2 +_021E9D9C: + mov r0, #0x2f + lsl r0, r0, #0xe + str r0, [sp, #0x34] +_021E9DA2: + add r0, sp, #0x2c + bl FUN_0201FF84 + add r1, r4, #0 + stmia r5!, {r0} + bl FUN_02020130 + add r4, r4, #1 + cmp r4, #6 + blt _021E9D60 + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9DBC: .word 0x00000893 + thumb_func_end MOD16_021E9CF0 + + thumb_func_start MOD16_021E9DC0 +MOD16_021E9DC0: ; 0x021E9DC0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E9DC6: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021E9DC6 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E9DC0 + + thumb_func_start MOD16_021E9DD8 +MOD16_021E9DD8: ; 0x021E9DD8 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9DD8 + + thumb_func_start MOD16_021E9DDC +MOD16_021E9DDC: ; 0x021E9DDC + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9DDC + + thumb_func_start MOD16_021E9DE0 +MOD16_021E9DE0: ; 0x021E9DE0 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r4, #0 + mov r6, #1 +_021E9DE8: + ldr r0, [r5, #4] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E9DE8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E9DE0 + + thumb_func_start MOD16_021E9DFC +MOD16_021E9DFC: ; 0x021E9DFC + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E9E04: + ldr r0, [r5, #4] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E9E04 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E9DFC + + thumb_func_start MOD16_021E9E18 +MOD16_021E9E18: ; 0x021E9E18 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021E90D8 + cmp r0, #1 + bne _021E9E2A + mov r1, #0 + str r1, [r4, #0x28] +_021E9E2A: + pop {r4, pc} + thumb_func_end MOD16_021E9E18 + + thumb_func_start MOD16_021E9E2C +MOD16_021E9E2C: ; 0x021E9E2C + ldr r3, _021E9E30 ; =MOD16_021E9E34 + bx r3 + .align 2, 0 +_021E9E30: .word MOD16_021E9E34 + thumb_func_end MOD16_021E9E2C + + thumb_func_start MOD16_021E9E34 +MOD16_021E9E34: ; 0x021E9E34 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #4] + bl MOD16_021E9E64 + ldr r0, _021E9E5C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _021E9E58 + add r0, r4, #0 + bl MOD16_021E9014 + mov r0, #1 + str r0, [r5, #0x2c] + ldr r0, _021E9E60 ; =0x000005DD + bl FUN_020054C8 +_021E9E58: + pop {r3, r4, r5, pc} + nop +_021E9E5C: .word 0x021C48B8 +_021E9E60: .word 0x000005DD + thumb_func_end MOD16_021E9E34 + + thumb_func_start MOD16_021E9E64 +MOD16_021E9E64: ; 0x021E9E64 + mov r1, #0 + str r1, [r0, #0x2c] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9E64 + + thumb_func_start MOD16_021E9E6C +MOD16_021E9E6C: ; 0x021E9E6C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0xa8 + bl FUN_02016998 + str r0, [r5, #0x18] + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0x18 + ldr r0, [r5, #0x18] + mov r1, #0x1c + add r3, r2, #0 + bl MOD16_021DB590 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x1c + mov r1, #0x44 + add r3, r2, #0 + bl MOD16_021DB590 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x38 + mov r1, #0x6c + add r3, r2, #0 + bl MOD16_021DB590 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x54 + mov r1, #0x94 + add r3, r2, #0 + bl MOD16_021DB590 + ldr r0, [r4, #8] + bl MOD16_021D9F80 + cmp r0, #1 + bne _021E9EFA + mov r1, #0 + b _021E9EFC +_021E9EFA: + mov r1, #2 +_021E9EFC: + mov r0, #0x10 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x70 + mov r1, #0xbc + add r3, r2, #0 + bl MOD16_021DB590 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x8c + mov r1, #0xe4 + add r3, r2, #0 + bl MOD16_021DB590 + add r0, r6, #0 + bl MOD16_021DB490 + str r0, [r5, #0x14] + ldr r1, [r5, #0x18] + mov r2, #6 + mov r3, #1 + bl MOD16_021DB4B0 + add sp, #0x10 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E9E6C + + thumb_func_start MOD16_021E9F48 +MOD16_021E9F48: ; 0x021E9F48 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4, #0x2c] + ldr r5, [r4, #4] + cmp r0, #0 + beq _021E9F58 + b _021EA066 +_021E9F58: + ldr r0, _021EA068 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021E9F6C + ldr r0, [r6, #0x14] + mov r1, #0 + mov r2, #1 + bl MOD16_021DB4CC +_021E9F6C: + ldr r0, _021EA068 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x20 + tst r0, r1 + beq _021E9F80 + mov r1, #0 + ldr r0, [r6, #0x14] + sub r2, r1, #1 + bl MOD16_021DB4CC +_021E9F80: + ldr r0, _021EA068 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _021EA066 + ldr r0, [r6, #0x14] + bl MOD16_021DB528 + cmp r0, #5 + bhi _021EA066 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9FA0: ; jump table + .short _021E9FAC - _021E9FA0 - 2 ; case 0 + .short _021E9FC6 - _021E9FA0 - 2 ; case 1 + .short _021E9FE0 - _021E9FA0 - 2 ; case 2 + .short _021E9FFA - _021E9FA0 - 2 ; case 3 + .short _021EA026 - _021E9FA0 - 2 ; case 4 + .short _021EA052 - _021E9FA0 - 2 ; case 5 +_021E9FAC: + ldr r2, [r5, #8] + cmp r2, #0 + beq _021EA066 + add r0, r4, #0 + mov r1, #0 + bl MOD16_021E9E18 + mov r0, #2 + str r0, [r4, #0xc] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9FC6: + ldr r2, [r5, #8] + cmp r2, #1 + beq _021EA066 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021E9E18 + mov r0, #2 + str r0, [r4, #0x10] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9FE0: + ldr r2, [r5, #8] + cmp r2, #2 + beq _021EA066 + add r0, r4, #0 + mov r1, #2 + bl MOD16_021E9E18 + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9FFA: + ldr r2, [r5, #8] + cmp r2, #3 + beq _021EA066 + add r0, r4, #0 + mov r1, #3 + bl MOD16_021E9E18 + cmp r0, #0 + beq _021EA018 + mov r0, #2 + str r0, [r4, #0x18] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021EA018: + ldr r0, [r5, #8] + cmp r0, #2 + beq _021EA066 + ldr r0, _021EA070 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021EA026: + ldr r2, [r5, #8] + cmp r2, #4 + beq _021EA066 + add r0, r4, #0 + mov r1, #4 + bl MOD16_021E9E18 + cmp r0, #0 + beq _021EA044 + mov r0, #2 + str r0, [r4, #0x1c] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021EA044: + ldr r0, [r5, #8] + cmp r0, #2 + beq _021EA066 + ldr r0, _021EA070 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021EA052: + add r0, r5, #0 + bl MOD16_021E9014 + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #2 + str r0, [r4, #0x20] + ldr r0, _021EA070 ; =0x000005DD + bl FUN_020054C8 +_021EA066: + pop {r4, r5, r6, pc} + .align 2, 0 +_021EA068: .word 0x021C48B8 +_021EA06C: .word 0x0000068B +_021EA070: .word 0x000005DD + thumb_func_end MOD16_021E9F48 + + thumb_func_start MOD16_021EA074 +MOD16_021EA074: ; 0x021EA074 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_02016A18 + ldr r0, [r4, #0x14] + bl MOD16_021DB4A8 + mov r0, #0 + str r0, [r4, #0x14] + str r0, [r4, #0x18] + pop {r4, pc} + thumb_func_end MOD16_021EA074 + + thumb_func_start MOD16_021EA08C +MOD16_021EA08C: ; 0x021EA08C + push {r3, lr} + ldr r3, [r1, #4] + mov r2, #0 + str r2, [r1, #0x30] + ldr r1, [r3, #8] + cmp r1, #4 + bhi _021EA0E8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA0A6: ; jump table + .short _021EA0B0 - _021EA0A6 - 2 ; case 0 + .short _021EA0BA - _021EA0A6 - 2 ; case 1 + .short _021EA0C6 - _021EA0A6 - 2 ; case 2 + .short _021EA0D2 - _021EA0A6 - 2 ; case 3 + .short _021EA0DE - _021EA0A6 - 2 ; case 4 +_021EA0B0: + ldr r0, [r0, #0x14] + mov r1, #4 + bl MOD16_021DB4CC + pop {r3, pc} +_021EA0BA: + ldr r0, [r0, #0x14] + mov r1, #4 + mov r2, #1 + bl MOD16_021DB4CC + pop {r3, pc} +_021EA0C6: + ldr r0, [r0, #0x14] + mov r1, #4 + mov r2, #2 + bl MOD16_021DB4CC + pop {r3, pc} +_021EA0D2: + ldr r0, [r0, #0x14] + mov r1, #4 + mov r2, #3 + bl MOD16_021DB4CC + pop {r3, pc} +_021EA0DE: + mov r1, #4 + ldr r0, [r0, #0x14] + add r2, r1, #0 + bl MOD16_021DB4CC +_021EA0E8: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EA08C + + thumb_func_start MOD16_021EA0EC +MOD16_021EA0EC: ; 0x021EA0EC + ldr r0, [r1, #4] + ldr r0, [r0, #8] + cmp r0, #0 + beq _021EA118 + ldr r0, [r1, #0x30] + cmp r0, #0 + bne _021EA10A + ldr r0, _021EA11C ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #0x80 + tst r0, r2 + beq _021EA118 + mov r0, #1 + str r0, [r1, #0x30] + bx lr +_021EA10A: + ldr r0, _021EA11C ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #0x40 + tst r0, r2 + beq _021EA118 + mov r0, #0 + str r0, [r1, #0x30] +_021EA118: + bx lr + nop +_021EA11C: .word 0x021C48B8 + thumb_func_end MOD16_021EA0EC + + thumb_func_start MOD16_021EA120 +MOD16_021EA120: ; 0x021EA120 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r0, [r4, #0x14] + ldr r1, [r5] + add r6, r2, #0 + bl MOD16_021D8B48 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EA13C + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EA120 + + thumb_func_start MOD16_021EA13C +MOD16_021EA13C: ; 0x021EA13C + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6, #8] + add r4, r1, #0 + bl MOD16_021D9FB8 + cmp r0, #1 + bne _021EA172 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021EA18C + ldr r1, [r6, #0x30] + cmp r1, #0 + bne _021EA17A + cmp r0, #0 + beq _021EA168 + ldr r0, [r4, #0x14] + ldr r1, [r5] + bl MOD16_021D8B48 +_021EA168: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EA17C + pop {r4, r5, r6, pc} +_021EA172: + add r0, r5, #0 + mov r1, #0 + bl MOD16_021EA18C +_021EA17A: + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EA13C + + thumb_func_start MOD16_021EA17C +MOD16_021EA17C: ; 0x021EA17C + ldr r3, _021EA188 ; =MOD16_021D8AD4 + add r2, r0, #0 + ldr r0, [r1, #0x14] + ldr r1, [r2] + bx r3 + nop +_021EA188: .word MOD16_021D8AD4 + thumb_func_end MOD16_021EA17C + + thumb_func_start MOD16_021EA18C +MOD16_021EA18C: ; 0x021EA18C + push {r3, r4, r5, lr} + ldr r4, [r0] + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r4, r0 + add r5, r1, #0 + bl MOD16_021D8B30 + cmp r5, r0 + beq _021EA1B0 + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r5, #0 + bl MOD16_021D8B14 + mov r0, #1 + pop {r3, r4, r5, pc} +_021EA1B0: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA18C + + thumb_func_start MOD16_021EA1B4 +MOD16_021EA1B4: ; 0x021EA1B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r2, #2 + add r0, r5, r0 + ldr r0, [r0, #4] + add r4, r1, #0 + ldr r0, [r0] + mov r1, #0 + bl FUN_020119D0 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #4] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA1B4 + + thumb_func_start MOD16_021EA1D8 +MOD16_021EA1D8: ; 0x021EA1D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #8] + bl MOD16_021D9F80 + cmp r0, #0 + bne _021EA1EE + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_020200A0 +_021EA1EE: + pop {r4, pc} + thumb_func_end MOD16_021EA1D8 + + thumb_func_start MOD16_021EA1F0 +MOD16_021EA1F0: ; 0x021EA1F0 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021EA274 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021EA2BC + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021EA310 + str r0, [r5, #0x24] + ldr r0, _021EA230 ; =MOD16_021EA314 + str r0, [r5, #8] + ldr r0, _021EA234 ; =MOD16_021EA35C + str r0, [r5, #0xc] + ldr r0, _021EA238 ; =MOD16_021EA388 + str r0, [r5, #0x10] + ldr r0, _021EA23C ; =MOD16_021EA39C + str r0, [r5, #0x14] + ldr r0, _021EA240 ; =MOD16_021EA45C + str r0, [r5, #0x18] + ldr r0, _021EA244 ; =MOD16_021EA47C + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EA230: .word MOD16_021EA314 +_021EA234: .word MOD16_021EA35C +_021EA238: .word MOD16_021EA388 +_021EA23C: .word MOD16_021EA39C +_021EA240: .word MOD16_021EA45C +_021EA244: .word MOD16_021EA47C + thumb_func_end MOD16_021EA1F0 + + thumb_func_start MOD16_021EA248 +MOD16_021EA248: ; 0x021EA248 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021EA2E8 + ldr r0, [r4, #4] + bl MOD16_021EA2FC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EA248 + + thumb_func_start MOD16_021EA25C +MOD16_021EA25C: ; 0x021EA25C + ldr r0, [r0, #4] + str r1, [r0, #4] + str r2, [r0, #8] + bx lr + thumb_func_end MOD16_021EA25C + + thumb_func_start MOD16_021EA264 +MOD16_021EA264: ; 0x021EA264 + ldr r0, [r0, #4] + str r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EA264 + + thumb_func_start MOD16_021EA26C +MOD16_021EA26C: ; 0x021EA26C + ldr r0, [r0, #4] + str r1, [r0, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EA26C + + thumb_func_start MOD16_021EA274 +MOD16_021EA274: ; 0x021EA274 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021EA286 + bl ErrorHandling +_021EA286: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021EA28C: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EA28C + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B7C + str r0, [r4, #0xc] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA274 + + thumb_func_start MOD16_021EA2BC +MOD16_021EA2BC: ; 0x021EA2BC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + bne _021EA2CE + bl ErrorHandling +_021EA2CE: + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_021EA2D4: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EA2D4 + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA2BC + + thumb_func_start MOD16_021EA2E8 +MOD16_021EA2E8: ; 0x021EA2E8 + push {r4, lr} + add r4, r0, #0 + bne _021EA2F2 + bl ErrorHandling +_021EA2F2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EA2E8 + + thumb_func_start MOD16_021EA2FC +MOD16_021EA2FC: ; 0x021EA2FC + push {r4, lr} + add r4, r0, #0 + bne _021EA306 + bl ErrorHandling +_021EA306: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EA2FC + + thumb_func_start MOD16_021EA310 +MOD16_021EA310: ; 0x021EA310 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EA310 + + thumb_func_start MOD16_021EA314 +MOD16_021EA314: ; 0x021EA314 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r5, #4] + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bne _021EA332 + bl ErrorHandling +_021EA332: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021EA338: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EA338 + str r4, [r5, #8] + add r0, r7, #0 + bl FUN_02004E98 + str r0, [r4] + bl FUN_02004E8C + str r0, [r4, #8] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EAA8C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA314 + + thumb_func_start MOD16_021EA35C +MOD16_021EA35C: ; 0x021EA35C + push {r3, r4, r5, lr} + ldr r2, [r0, #0xc] + add r5, r1, #0 + ldr r4, [r0, #8] + cmp r2, #1 + bne _021EA36C + mov r0, #1 + pop {r3, r4, r5, pc} +_021EA36C: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021EA376 + mov r0, #0 + pop {r3, r4, r5, pc} +_021EA376: + add r0, r4, #0 + bl MOD16_021EAA8C + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EAE5C + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA35C + + thumb_func_start MOD16_021EA388 +MOD16_021EA388: ; 0x021EA388 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EA388 + + thumb_func_start MOD16_021EA39C +MOD16_021EA39C: ; 0x021EA39C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r3, [r3, #8] + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021EA458 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EA3BA: ; jump table + .short _021EA3C2 - _021EA3BA - 2 ; case 0 + .short _021EA3E0 - _021EA3BA - 2 ; case 1 + .short _021EA41C - _021EA3BA - 2 ; case 2 + .short _021EA454 - _021EA3BA - 2 ; case 3 +_021EA3C2: + mov r1, #0x33 + ldr r0, [r4, #4] + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x33 + str r0, [r4, #8] + mov r1, #0 + lsl r2, r2, #4 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA458 +_021EA3E0: + ldr r0, [r4, #4] + add r1, r5, #0 + str r0, [sp] + add r0, r6, #0 + bl MOD16_021EA784 + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _021EA400 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EA5BC + b _021EA40C +_021EA400: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EA680 +_021EA40C: + mov r0, #0 + mov r1, #3 + bl FUN_020053CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA458 +_021EA41C: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _021EA42E + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021EA634 + b _021EA438 +_021EA42E: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021EA70C +_021EA438: + cmp r0, #1 + bne _021EA458 + bl FUN_02005404 + cmp r0, #0 + bne _021EA458 + mov r0, #1 + add r1, r0, #0 + bl FUN_020047C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA458 +_021EA454: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EA458: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA39C + + thumb_func_start MOD16_021EA45C +MOD16_021EA45C: ; 0x021EA45C + push {r3, r4, r5, lr} + ldr r4, [r3, #8] + ldr r5, [r1, #8] + add r2, r0, #0 + add r1, r2, #0 + add r0, r5, #0 + add r2, r4, #0 + bl MOD16_021EAC1C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EAD04 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EA45C + + thumb_func_start MOD16_021EA47C +MOD16_021EA47C: ; 0x021EA47C + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021EA518 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA496: ; jump table + .short _021EA4A0 - _021EA496 - 2 ; case 0 + .short _021EA4D2 - _021EA496 - 2 ; case 1 + .short _021EA4F6 - _021EA496 - 2 ; case 2 + .short _021EA504 - _021EA496 - 2 ; case 3 + .short _021EA514 - _021EA496 - 2 ; case 4 +_021EA4A0: + ldr r1, [r3, #0xc] + cmp r1, #0 + bne _021EA4B0 + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EA5BC + b _021EA4B8 +_021EA4B0: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EA680 +_021EA4B8: + mov r0, #1 + mov r1, #0 + bl FUN_020047C8 + mov r0, #0x7f + mov r1, #3 + mov r2, #0 + bl FUN_0200538C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA518 +_021EA4D2: + ldr r1, [r3, #0xc] + cmp r1, #0 + bne _021EA4E2 + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EA634 + b _021EA4EA +_021EA4E2: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EA70C +_021EA4EA: + cmp r0, #0 + beq _021EA518 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA518 +_021EA4F6: + add r1, r3, #0 + bl MOD16_021EA7D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA518 +_021EA504: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA518 +_021EA514: + mov r0, #1 + pop {r4, pc} +_021EA518: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021EA47C + + thumb_func_start MOD16_021EA51C +MOD16_021EA51C: ; 0x021EA51C + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r2, r0, #0 + mov r0, #0x30 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EA51C + + thumb_func_start MOD16_021EA554 +MOD16_021EA554: ; 0x021EA554 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0 + str r0, [sp] + mov r6, #1 +_021EA55E: + mov r4, #0 + add r5, r7, #0 +_021EA562: + ldr r0, [r5, #0x20] + add r1, r6, #0 + bl FUN_02020398 + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EA562 + ldr r0, [r7, #0x68] + mov r1, #1 + bl FUN_02020398 + ldr r0, [sp] + add r7, #0x54 + add r0, r0, #1 + str r0, [sp] + cmp r0, #9 + blt _021EA55E + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA554 + + thumb_func_start MOD16_021EA588 +MOD16_021EA588: ; 0x021EA588 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0 + str r0, [sp] + add r6, r0, #0 +_021EA592: + mov r4, #0 + add r5, r7, #0 +_021EA596: + ldr r0, [r5, #0x20] + add r1, r6, #0 + bl FUN_02020398 + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EA596 + ldr r0, [r7, #0x68] + mov r1, #0 + bl FUN_02020398 + ldr r0, [sp] + add r7, #0x54 + add r0, r0, #1 + str r0, [sp] + cmp r0, #9 + blt _021EA592 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA588 + + thumb_func_start MOD16_021EA5BC +MOD16_021EA5BC: ; 0x021EA5BC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021EA554 + ldr r0, [r4, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021EA622 + cmp r6, #0 + beq _021EA5FE + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #3 + add r2, r1, #0 + sub r2, #0x13 + bl MOD16_021D8988 + b _021EA622 +_021EA5FE: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #3 + add r3, r1, #0 + sub r3, #0x13 + bl MOD16_021D8988 +_021EA622: + mov r1, #0x5b + ldr r0, [r5] + lsl r1, r1, #2 + add r1, r0, r1 + bl MOD16_021D8A8C + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EA5BC + + thumb_func_start MOD16_021EA634 +MOD16_021EA634: ; 0x021EA634 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021EA654 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021EA65E +_021EA654: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021EA65E: + cmp r0, #0 + beq _021EA670 + cmp r4, #0 + beq _021EA66C + add r0, r6, #0 + bl MOD16_021EA588 +_021EA66C: + mov r0, #1 + pop {r4, r5, r6, pc} +_021EA670: + mov r1, #0x5b + ldr r0, [r5] + lsl r1, r1, #2 + add r1, r0, r1 + bl MOD16_021D8A8C + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EA634 + + thumb_func_start MOD16_021EA680 +MOD16_021EA680: ; 0x021EA680 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + add r4, r3, #0 + bl MOD16_021EA554 + cmp r4, #0 + bne _021EA6A8 + ldr r0, [r5, #8] + mov r1, #0x30 + str r0, [sp] + ldr r0, [r5, #0x10] + mov r3, #0x40 + str r0, [sp, #4] + ldr r2, [r5, #4] + add r0, r7, #0 + bl MOD16_021D8BD8 +_021EA6A8: + ldr r0, [r6, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021EA706 + cmp r4, #0 + beq _021EA6E0 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r2, #0x2f + str r2, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r5, #0x10] + sub r2, #0x3f + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EA6E0: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r3, #0x2f + str r3, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r5, #0x10] + sub r3, #0x3f + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD16_021D8988 +_021EA706: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EA680 + + thumb_func_start MOD16_021EA70C +MOD16_021EA70C: ; 0x021EA70C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bne _021EA72C + bl MOD16_021D8BF4 + str r0, [sp] + ldr r0, [r4] + ldr r1, [r5] + ldr r2, [r5, #4] + bl MOD16_021D86F4 + b _021EA730 +_021EA72C: + mov r0, #1 + str r0, [sp] +_021EA730: + ldr r0, [r6, #8] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021EA74A + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #4] + b _021EA756 +_021EA74A: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #4] +_021EA756: + mov r1, #0 + add r2, sp, #0 +_021EA75A: + ldr r0, [r2] + cmp r0, #0 + beq _021EA768 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021EA75A +_021EA768: + cmp r1, #2 + bne _021EA77C + cmp r7, #1 + bne _021EA776 + add r0, r5, #0 + bl MOD16_021EA588 +_021EA776: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EA77C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EA70C + + thumb_func_start MOD16_021EA784 +MOD16_021EA784: ; 0x021EA784 + push {r3, r4, r5, r6, r7, lr} + ldr r6, [sp, #0x18] + add r7, r2, #0 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021EA7F0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EA89C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EA9C0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl MOD16_021EAA84 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021EA51C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EACB0 + add r0, r5, #0 + bl MOD16_021EACE8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA784 + + thumb_func_start MOD16_021EA7D0 +MOD16_021EA7D0: ; 0x021EA7D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EAA88 + add r0, r5, #0 + bl MOD16_021EAA5C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EA964 + add r0, r4, #0 + bl MOD16_021EA858 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA7D0 + + thumb_func_start MOD16_021EA7F0 +MOD16_021EA7F0: ; 0x021EA7F0 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r2, #0 + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x46 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EA7F0 + + thumb_func_start MOD16_021EA858 +MOD16_021EA858: ; 0x021EA858 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4] + mov r2, #0 + ldr r0, [r0] + mov r1, #1 + add r3, r2, #0 + bl FUN_0201AEE4 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + add r0, r0, #4 + add r3, r1, #0 + bl FUN_020196F4 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_0201AB24 + add sp, #8 + pop {r4, pc} + thumb_func_end MOD16_021EA858 + + thumb_func_start MOD16_021EA89C +MOD16_021EA89C: ; 0x021EA89C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021EA954 ; =0x00002B6C + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x74 + bl FUN_020091E0 + mov r1, #0xc5 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + bl FUN_02009B04 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009474 + ldr r0, _021EA958 ; =0x00002B0B + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x13 + mov r3, #0 + bl FUN_02009298 + mov r1, #0xc6 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + bl FUN_02009D68 + mov r0, #0xc6 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009474 + ldr r0, _021EA95C ; =0x00002B6D + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x75 + mov r3, #1 + bl FUN_02009358 + mov r1, #0xc7 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, _021EA960 ; =0x00002B6B + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x73 + mov r3, #1 + bl FUN_02009358 + mov r1, #0x32 + lsl r1, r1, #4 + str r0, [r5, r1] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EA954: .word 0x00002B6C +_021EA958: .word 0x00002B0B +_021EA95C: .word 0x00002B6D +_021EA960: .word 0x00002B6B + thumb_func_end MOD16_021EA89C + + thumb_func_start MOD16_021EA964 +MOD16_021EA964: ; 0x021EA964 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #0xc6 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009E04 + mov r0, #5 + mov r1, #0xc5 + lsl r0, r0, #6 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r5, r1] + bl FUN_02009490 + mov r0, #0x51 + mov r1, #0xc6 + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r5, r1] + bl FUN_02009490 + mov r0, #0x52 + mov r1, #0xc7 + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r5, r1] + bl FUN_02009490 + mov r0, #0x53 + mov r1, #0x32 + lsl r0, r0, #2 + lsl r1, r1, #4 + ldr r0, [r4, r0] + ldr r1, [r5, r1] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA964 + + thumb_func_start MOD16_021EA9C0 +MOD16_021EA9C0: ; 0x021EA9C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + ldr r4, [r1] + ldr r3, _021EAA58 ; =0x00002B6B + add r7, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + add r5, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x50 + sub r2, #0x60 + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r6, sp, #0x30 + str r0, [sp, #0x30] + add r0, sp, #0x50 + str r0, [sp, #0x34] + mov r0, #0x11 + str r0, [sp, #0x44] + mov r0, #1 + str r0, [sp, #0x48] + mov r0, #0 + str r5, [sp, #0x4c] + str r0, [sp, #0x2c] + str r0, [sp, #0x38] + str r0, [sp, #0x3c] +_021EAA2A: + mov r4, #0 + add r5, r7, #0 +_021EAA2E: + add r0, r6, #0 + bl FUN_0201FF84 + str r0, [r5, #0x20] + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EAA2E + add r0, r6, #0 + bl FUN_0201FF84 + str r0, [r7, #0x68] + ldr r0, [sp, #0x2c] + add r7, #0x54 + add r0, r0, #1 + str r0, [sp, #0x2c] + cmp r0, #9 + blt _021EAA2A + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + nop +_021EAA58: .word 0x00002B6B + thumb_func_end MOD16_021EA9C0 + + thumb_func_start MOD16_021EAA5C +MOD16_021EAA5C: ; 0x021EAA5C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r7, #0 +_021EAA62: + mov r4, #0 + add r5, r6, #0 +_021EAA66: + ldr r0, [r5, #0x20] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EAA66 + ldr r0, [r6, #0x68] + bl FUN_0201FFC8 + add r7, r7, #1 + add r6, #0x54 + cmp r7, #9 + blt _021EAA62 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAA5C + + thumb_func_start MOD16_021EAA84 +MOD16_021EAA84: ; 0x021EAA84 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EAA84 + + thumb_func_start MOD16_021EAA88 +MOD16_021EAA88: ; 0x021EAA88 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EAA88 + + thumb_func_start MOD16_021EAA8C +MOD16_021EAA8C: ; 0x021EAA8C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl MOD16_021EAF10 + add r2, r0, #0 + ldr r1, [r4] + mov r0, #1 + bl FUN_02004F28 + str r0, [r4, #4] + pop {r4, pc} + thumb_func_end MOD16_021EAA8C + + thumb_func_start MOD16_021EAAA4 +MOD16_021EAAA4: ; 0x021EAAA4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r0, [sp, #0x44] + ldr r7, [sp, #0x3c] + str r0, [sp, #0x44] + ldr r0, [sp, #0x48] + str r1, [sp, #8] + str r0, [sp, #0x48] + add r0, r2, #0 + str r3, [sp, #0xc] + ldr r5, [sp, #0x40] + bl FUN_02004E80 + str r0, [sp, #0x1c] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r3, [sp, #0x44] + ldr r0, [r0] + sub r3, #0x20 + lsl r2, r5, #0x10 + lsl r3, r3, #0x10 + add r0, r0, #4 + mov r1, #0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0xc] + mov r6, #0 + sub r0, r1, r0 + cmp r7, #0 + ble _021EAB48 + lsl r0, r0, #0xc + str r0, [sp, #0x14] + asr r0, r0, #0x1f + str r0, [sp, #0x18] + lsl r0, r7, #0xc + add r4, r6, #0 + str r0, [sp, #0x10] +_021EAAFC: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + asr r3, r4, #0x1f + add r2, r4, #0 + blx _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _021EAB4C ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [sp, #0x10] + blx FX_Div + asr r1, r0, #0xc + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x1c] + add r1, r1, r0 + ldr r0, [sp, #0x48] + ldr r3, [sp, #0x44] + str r0, [sp] + ldr r0, [sp, #8] + ldrb r1, [r2, r1] + ldr r0, [r0] + add r2, r5, #0 + add r0, r0, #4 + bl MOD16_021EAB50 + mov r0, #1 + lsl r0, r0, #0xc + add r6, r6, #1 + add r5, r5, #1 + add r4, r4, r0 + cmp r6, r7 + blt _021EAAFC +_021EAB48: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EAB4C: .word 0x00000000 + thumb_func_end MOD16_021EAAA4 + + thumb_func_start MOD16_021EAB50 +MOD16_021EAB50: ; 0x021EAB50 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + str r0, [sp, #8] + add r6, r2, #0 + add r7, r3, #0 + ldr r4, [sp, #0x20] + cmp r5, #0x7f + bls _021EAB64 + sub r5, #0xff +_021EAB64: + cmp r5, #0 + beq _021EAB8E + lsl r2, r5, #0xc + asr r0, r2, #0x1f + lsr r1, r2, #0xf + lsl r0, r0, #0x11 + orr r0, r1 + mov r1, #2 + lsl r3, r2, #0x11 + mov r2, #0 + lsl r1, r1, #0xa + add r3, r3, r1 + adc r0, r2 + lsl r1, r0, #0x14 + lsr r0, r3, #0xc + orr r0, r1 + mov r1, #0x7f + lsl r1, r1, #0xc + blx FX_Div + asr r5, r0, #0xc +_021EAB8E: + ldr r1, [r4] + add r0, r7, r5 + add r1, r7, r1 + cmp r0, r1 + ble _021EAB9E + add r3, r1, #0 + sub r1, r0, r1 + b _021EABA2 +_021EAB9E: + add r3, r0, #0 + sub r1, r1, r0 +_021EABA2: + mov r0, #1 + str r0, [sp] + add r0, r1, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + lsl r2, r6, #0x10 + lsl r3, r3, #0x10 + ldr r0, [sp, #8] + mov r1, #6 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + str r5, [r4] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAB50 + + thumb_func_start MOD16_021EABC4 +MOD16_021EABC4: ; 0x021EABC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + ldr r0, [sp, #0x20] + add r5, r1, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r6, r2, #0 + add r4, r3, #0 + str r0, [sp, #0x24] + sub r0, r6, r5 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + ldr r3, [sp, #0x20] + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr r0, [r7] + sub r3, #0x20 + lsl r2, r4, #0x10 + lsl r3, r3, #0x10 + add r0, r0, #4 + mov r1, #0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + cmp r5, r6 + bge _021EAC18 +_021EABFE: + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + ldr r0, [r7] + mov r1, #0 + add r0, r0, #4 + add r2, r4, #0 + bl MOD16_021EAB50 + add r5, r5, #1 + add r4, r4, #1 + cmp r5, r6 + blt _021EABFE +_021EAC18: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EABC4 + + thumb_func_start MOD16_021EAC1C +MOD16_021EAC1C: ; 0x021EAC1C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r3, #0xc9 + add r5, r0, #0 + lsl r3, r3, #2 + ldr r0, [r5, r3] + add r4, r1, #0 + add r0, r0, #4 + str r0, [r5, r3] + ldr r0, [r5, r3] + add r6, r2, #0 + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r1, r2, r1 + str r1, [r5, r3] + ldr r3, [r5, r3] + sub r3, #8 + bpl _021EAC4A + add r0, #0xe8 + add r3, r3, r0 +_021EAC4A: + mov r0, #0xcb + lsl r0, r0, #2 + ldr r1, [r6, #4] + ldr r7, [r5, r0] + cmp r7, r1 + beq _021EAC76 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + str r3, [sp, #8] + mov r1, #0x97 + sub r0, r0, #4 + str r1, [sp, #0xc] + add r0, r5, r0 + str r0, [sp, #0x10] + ldr r2, [r6] + add r0, r5, #0 + add r1, r4, #0 + add r3, r7, #0 + bl MOD16_021EAAA4 + b _021EAC8A +_021EAC76: + mov r1, #0x97 + sub r0, r0, #4 + str r1, [sp] + add r0, r5, r0 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #4 + bl MOD16_021EABC4 +_021EAC8A: + ldr r0, [r4] + mov r3, #0xc9 + lsl r3, r3, #2 + ldr r0, [r0] + ldr r3, [r5, r3] + mov r1, #1 + mov r2, #0 + bl FUN_0201AEE4 + ldr r0, [r4] + add r0, r0, #4 + bl FUN_02019220 + mov r0, #0xcb + ldr r1, [r6, #4] + lsl r0, r0, #2 + str r1, [r5, r0] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAC1C + + thumb_func_start MOD16_021EACB0 +MOD16_021EACB0: ; 0x021EACB0 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #9 + add r0, r0, #4 + bl FUN_0201AB24 + mov r0, #0xca + mov r2, #0x97 + lsl r0, r0, #2 + str r2, [sp] + add r0, r5, r0 + mov r1, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r2, #0x69 + add r3, r1, #0 + bl MOD16_021EABC4 + ldr r0, [r4] + add r0, r0, #4 + bl FUN_020191D0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EACB0 + + thumb_func_start MOD16_021EACE8 +MOD16_021EACE8: ; 0x021EACE8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x20 +_021EACF0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EAD24 + add r4, r4, #1 + add r5, #0x54 + cmp r4, #9 + blt _021EACF0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EACE8 + + thumb_func_start MOD16_021EAD04 +MOD16_021EAD04: ; 0x021EAD04 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + add r5, #0x20 +_021EAD0E: + add r1, r6, r4 + ldrb r1, [r1, #0xc] + add r0, r5, #0 + bl MOD16_021EAD88 + add r4, r4, #1 + add r5, #0x54 + cmp r4, #9 + blt _021EAD0E + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EAD04 + + thumb_func_start MOD16_021EAD24 +MOD16_021EAD24: ; 0x021EAD24 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + lsl r0, r1, #4 + add r0, #0x70 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #6 + lsl r0, r0, #0x10 + mov r6, #2 + ldr r5, [sp] + str r0, [sp, #8] + mov r4, #0 + add r7, sp, #4 + lsl r6, r6, #0xe +_021EAD42: + ldr r0, [r5] + add r1, r7, #0 + bl FUN_02020044 + ldr r0, [r5] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [sp, #8] + mov r1, #1 + sub r0, r0, r6 + str r0, [sp, #8] + ldr r0, [r5] + bl FUN_02020130 + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EAD42 + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp] + add r1, sp, #4 + ldr r0, [r0, #0x48] + bl FUN_02020044 + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #0x48] + bl FUN_020200A0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EAD24 + + thumb_func_start MOD16_021EAD88 +MOD16_021EAD88: ; 0x021EAD88 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r7, r1, #0 + add r6, r0, #0 + str r4, [sp] + cmp r7, #0 + ble _021EADAC + add r5, r6, #0 +_021EAD98: + ldr r0, [r5] + mov r1, #1 + bl FUN_020200A0 + add r4, r4, #1 + lsl r0, r4, #1 + str r0, [r5, #4] + add r5, #8 + cmp r4, r7 + blt _021EAD98 +_021EADAC: + mov r5, #0 + add r4, r6, #0 + add r7, r5, #0 +_021EADB2: + ldr r0, [r4] + bl FUN_02020128 + cmp r0, #0 + beq _021EADD4 + ldr r0, [r4, #4] + sub r0, r0, #1 + cmp r0, #0 + ble _021EADCC + str r0, [r4, #4] + add r0, r5, #1 + str r0, [sp] + b _021EADD4 +_021EADCC: + ldr r0, [r4] + add r1, r7, #0 + bl FUN_020200A0 +_021EADD4: + add r5, r5, #1 + add r4, #8 + cmp r5, #9 + blt _021EADB2 + ldr r1, [r6, #0x4c] + ldr r0, [sp] + cmp r1, r0 + bgt _021EAE04 + ldr r0, [r6, #0x48] + ldr r1, [sp] + bl MOD16_021EAE2C + mov r0, #0x10 + str r0, [r6, #0x50] + ldr r1, [r6, #0x4c] + ldr r0, [sp] + cmp r1, r0 + bge _021EAE00 + ldr r0, [r6, #0x48] + mov r1, #1 + bl FUN_020200A0 +_021EAE00: + ldr r0, [sp] + str r0, [r6, #0x4c] +_021EAE04: + ldr r1, [r6, #0x4c] + cmp r1, #0 + ble _021EAE22 + ldr r0, [r6, #0x50] + cmp r0, #0 + bge _021EAE1C + sub r1, r1, #1 + str r1, [r6, #0x4c] + ldr r0, [r6, #0x48] + bl MOD16_021EAE2C + pop {r3, r4, r5, r6, r7, pc} +_021EAE1C: + sub r0, r0, #1 + str r0, [r6, #0x50] + pop {r3, r4, r5, r6, r7, pc} +_021EAE22: + ldr r0, [r6, #0x48] + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAD88 + + thumb_func_start MOD16_021EAE2C +MOD16_021EAE2C: ; 0x021EAE2C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + 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] + lsl r0, r4, #3 + neg r0, r0 + add r0, #0x60 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r5, #0 + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EAE2C + + thumb_func_start MOD16_021EAE5C +MOD16_021EAE5C: ; 0x021EAE5C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r1, #0xc] + bl MOD16_021EAF10 + add r4, r0, #0 + add r1, r5, #0 + mov r0, #0 + add r1, #0xc + strb r0, [r5, #0xc] + strb r0, [r1, #1] + strb r0, [r1, #2] + strb r0, [r1, #3] + strb r0, [r1, #4] + strb r0, [r1, #5] + strb r0, [r1, #6] + strb r0, [r1, #7] + strb r0, [r1, #8] + bl FUN_02005670 + cmp r0, #0 + beq _021EAE96 + ldr r0, [r5] + add r5, #0xc + add r1, r5, #0 + mov r2, #9 + add r3, r4, #0 + bl FUN_02004F70 +_021EAE96: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EAE5C + + thumb_func_start MOD16_021EAE98 +MOD16_021EAE98: ; 0x021EAE98 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021EAF18 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EAF58 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EAF80 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021EAFB0 + str r0, [r5, #0x24] + ldr r0, _021EAEE0 ; =MOD16_021EAFB4 + str r0, [r5, #8] + ldr r0, _021EAEE4 ; =MOD16_021EAFF4 + str r0, [r5, #0xc] + ldr r0, _021EAEE8 ; =MOD16_021EB078 + str r0, [r5, #0x10] + ldr r0, _021EAEEC ; =MOD16_021EB08C + str r0, [r5, #0x14] + ldr r0, _021EAEF0 ; =MOD16_021EB114 + str r0, [r5, #0x18] + ldr r0, _021EAEF4 ; =MOD16_021EB16C + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EAEE0: .word MOD16_021EAFB4 +_021EAEE4: .word MOD16_021EAFF4 +_021EAEE8: .word MOD16_021EB078 +_021EAEEC: .word MOD16_021EB08C +_021EAEF0: .word MOD16_021EB114 +_021EAEF4: .word MOD16_021EB16C + thumb_func_end MOD16_021EAE98 + + thumb_func_start MOD16_021EAEF8 +MOD16_021EAEF8: ; 0x021EAEF8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021EAF84 + ldr r0, [r4, #4] + bl MOD16_021EAF98 + ldr r0, [r4, #0x20] + bl MOD16_021EAFAC + pop {r4, pc} + thumb_func_end MOD16_021EAEF8 + + thumb_func_start MOD16_021EAF10 +MOD16_021EAF10: ; 0x021EAF10 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EAF10 + + thumb_func_start MOD16_021EAF18 +MOD16_021EAF18: ; 0x021EAF18 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021EAF2A + bl ErrorHandling +_021EAF2A: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021EAF30: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EAF30 + add r0, r5, #0 + bl MOD16_021D7AEC + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EAF18 + + thumb_func_start MOD16_021EAF58 +MOD16_021EAF58: ; 0x021EAF58 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021EAF6A + bl ErrorHandling +_021EAF6A: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EAF58 + + thumb_func_start MOD16_021EAF80 +MOD16_021EAF80: ; 0x021EAF80 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EAF80 + + thumb_func_start MOD16_021EAF84 +MOD16_021EAF84: ; 0x021EAF84 + push {r4, lr} + add r4, r0, #0 + bne _021EAF8E + bl ErrorHandling +_021EAF8E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EAF84 + + thumb_func_start MOD16_021EAF98 +MOD16_021EAF98: ; 0x021EAF98 + push {r4, lr} + add r4, r0, #0 + bne _021EAFA2 + bl ErrorHandling +_021EAFA2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EAF98 + + thumb_func_start MOD16_021EAFAC +MOD16_021EAFAC: ; 0x021EAFAC + bx lr + .align 2, 0 + thumb_func_end MOD16_021EAFAC + + thumb_func_start MOD16_021EAFB0 +MOD16_021EAFB0: ; 0x021EAFB0 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EAFB0 + + thumb_func_start MOD16_021EAFB4 +MOD16_021EAFB4: ; 0x021EAFB4 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r5, #4] + mov r1, #0x70 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x70 + add r4, r0, #0 + blx Call_FillMemWithValue + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EB31C + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EB3D0 + add r0, r7, #0 + bl FUN_02004E98 + str r0, [r4, #0x6c] + str r4, [r5, #8] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAFB4 + + thumb_func_start MOD16_021EAFF4 +MOD16_021EAFF4: ; 0x021EAFF4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021EB010 + add r0, r4, #0 + bl MOD16_021EC000 + add r0, r4, #0 + bl MOD16_021EC010 + mov r0, #1 + pop {r3, r4, r5, pc} +_021EB010: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021EB01A + mov r0, #0 + pop {r3, r4, r5, pc} +_021EB01A: + ldr r0, [r4, #0x3c] + str r0, [r5, #0xc] + ldr r0, [r5, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021EB074 + bl FUN_02005670 + cmp r0, #0 + bne _021EB03C + ldr r0, [r4, #0x64] + cmp r0, #0 + bne _021EB03C + add r0, r4, #0 + bl MOD16_021EC000 +_021EB03C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EB3D0 + ldr r0, [r5, #8] + bl MOD16_021E95C8 + cmp r0, #0 + beq _021EB060 + ldr r0, [r5, #4] + bl MOD16_021D9FB8 + cmp r0, #0 + beq _021EB060 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EC144 +_021EB060: + ldr r0, [r4, #0x64] + cmp r0, #0 + beq _021EB074 + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021EB074 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EC030 +_021EB074: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EAFF4 + + thumb_func_start MOD16_021EB078 +MOD16_021EB078: ; 0x021EB078 + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021EB3F4 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021EB078 + + thumb_func_start MOD16_021EB08C +MOD16_021EB08C: ; 0x021EB08C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021EB110 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EB0A8: ; jump table + .short _021EB0B0 - _021EB0A8 - 2 ; case 0 + .short _021EB0CA - _021EB0A8 - 2 ; case 1 + .short _021EB0E8 - _021EB0A8 - 2 ; case 2 + .short _021EB0FE - _021EB0A8 - 2 ; case 3 +_021EB0B0: + ldr r0, [r4, #4] + mov r1, #0x74 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x74 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB110 +_021EB0CA: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021EB6C0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EB270 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB110 +_021EB0E8: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021EB2E0 + cmp r0, #0 + beq _021EB110 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB110 +_021EB0FE: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EB110: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EB08C + + thumb_func_start MOD16_021EB114 +MOD16_021EB114: ; 0x021EB114 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r7, r0, #0 + ldr r0, [r6, #8] + ldr r4, [r3, #8] + ldr r5, [r1, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021EB168 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBBA0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBBF0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBC18 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBD3C + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EBD58 + add r0, r5, #0 + bl MOD16_021EBE38 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EC120 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021EC1B8 +_021EB168: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EB114 + + thumb_func_start MOD16_021EB16C +MOD16_021EB16C: ; 0x021EB16C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021EB1F4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EB188: ; jump table + .short _021EB192 - _021EB188 - 2 ; case 0 + .short _021EB1BA - _021EB188 - 2 ; case 1 + .short _021EB1D0 - _021EB188 - 2 ; case 2 + .short _021EB1E2 - _021EB188 - 2 ; case 3 + .short _021EB1F0 - _021EB188 - 2 ; case 4 +_021EB192: + mov r0, #0x79 + ldr r1, [r6] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r5, #0 + bl MOD16_021EC0A8 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021EB270 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB1F4 +_021EB1BA: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0 + bl MOD16_021EB2E0 + cmp r0, #0 + beq _021EB1F4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB1F4 +_021EB1D0: + ldr r2, [r4, #4] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EB6FC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB1F4 +_021EB1E2: + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB1F4 +_021EB1F0: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EB1F4: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EB16C + + thumb_func_start MOD16_021EB1F8 +MOD16_021EB1F8: ; 0x021EB1F8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #0x20] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #0x50] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + ldr r0, [r4, #0x54] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB1F8 + + thumb_func_start MOD16_021EB234 +MOD16_021EB234: ; 0x021EB234 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #0x20] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #0x50] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + ldr r0, [r4, #0x54] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB234 + + thumb_func_start MOD16_021EB270 +MOD16_021EB270: ; 0x021EB270 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021EB1F8 + ldr r0, [r4, #8] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021EB2DC + cmp r6, #0 + beq _021EB2B6 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #3 + add r2, r1, #0 + sub r2, #0x13 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021EB2B6: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #3 + add r3, r1, #0 + sub r3, #0x13 + bl MOD16_021D8988 +_021EB2DC: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EB270 + + thumb_func_start MOD16_021EB2E0 +MOD16_021EB2E0: ; 0x021EB2E0 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021EB300 + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021EB306 +_021EB300: + mov r0, #2 + bl FUN_0200A344 +_021EB306: + cmp r0, #0 + beq _021EB318 + cmp r4, #0 + beq _021EB314 + add r0, r6, #0 + bl MOD16_021EB234 +_021EB314: + mov r0, #1 + pop {r4, r5, r6, pc} +_021EB318: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EB2E0 + + thumb_func_start MOD16_021EB31C +MOD16_021EB31C: ; 0x021EB31C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r4, #0 + mov r1, #0xc + bl FUN_02016998 + str r0, [r5, #4] + add r0, r4, #0 + mov r1, #8 + bl FUN_02016998 + str r0, [r5, #0x10] + mov r0, #0x6a + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x35 + mov r2, #0x51 + mov r3, #0x16 + bl MOD16_021D7C98 + ldr r1, [r5, #4] + mov r0, #0xfe + strb r0, [r1, #4] + ldr r1, [r5, #4] + mov r2, #0x33 + strb r2, [r1, #5] + ldr r1, [r5, #4] + mov r2, #0x9d + strb r2, [r1, #6] + ldr r1, [r5, #4] + mov r2, #0x20 + strb r2, [r1, #7] + ldr r1, [r5, #4] + mov r2, #0x9b + strb r0, [r1, #8] + ldr r0, [r5, #4] + mov r1, #0xb3 + strb r1, [r0, #9] + ldr r0, [r5, #4] + mov r1, #0x7b + strb r1, [r0, #0xa] + ldr r0, [r5, #4] + mov r1, #0x48 + strb r1, [r0, #0xb] + mov r0, #0xcc + str r0, [sp] + ldr r0, [r5, #0x10] + mov r1, #0x6b + mov r3, #0x9c + bl MOD16_021D7C98 + mov r0, #0xf6 + str r0, [sp] + ldr r0, [r5, #0x10] + mov r1, #0x96 + add r0, r0, #4 + mov r2, #0xb6 + mov r3, #0xd6 + bl MOD16_021D7C98 + str r6, [r5, #8] + str r5, [r5, #0xc] + str r4, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021EB3C8 ; =MOD16_021EB41C + mov r1, #3 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + str r4, [sp] + add r3, r5, #0 + ldr r0, [r5, #0x10] + ldr r2, _021EB3CC ; =MOD16_021EB45C + mov r1, #2 + add r3, #8 + bl FUN_020220C4 + str r0, [r5, #0x14] + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021EB3C8: .word MOD16_021EB41C +_021EB3CC: .word MOD16_021EB45C + thumb_func_end MOD16_021EB31C + + thumb_func_start MOD16_021EB3D0 +MOD16_021EB3D0: ; 0x021EB3D0 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #0x64 +_021EB3DA: + add r1, r1, #1 + str r0, [r2, #0x18] + add r2, r2, #4 + cmp r1, #2 + blt _021EB3DA + ldr r0, [r4] + bl FUN_02022144 + ldr r0, [r4, #0x14] + bl FUN_02022144 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB3D0 + + thumb_func_start MOD16_021EB3F4 +MOD16_021EB3F4: ; 0x021EB3F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #0x14] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x10] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB3F4 + + thumb_func_start MOD16_021EB41C +MOD16_021EB41C: ; 0x021EB41C + push {r3, lr} + ldr r3, [r2] + ldr r2, [r2, #4] + cmp r1, #3 + bhi _021EB458 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EB432: ; jump table + .short _021EB43A - _021EB432 - 2 ; case 0 + .short _021EB44A - _021EB432 - 2 ; case 1 + .short _021EB442 - _021EB432 - 2 ; case 2 + .short _021EB452 - _021EB432 - 2 ; case 3 +_021EB43A: + add r1, r3, #0 + bl MOD16_021EB4F8 + pop {r3, pc} +_021EB442: + add r1, r3, #0 + bl MOD16_021EB568 + pop {r3, pc} +_021EB44A: + add r1, r3, #0 + bl MOD16_021EB648 + pop {r3, pc} +_021EB452: + add r1, r3, #0 + bl MOD16_021EB684 +_021EB458: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EB41C + + thumb_func_start MOD16_021EB45C +MOD16_021EB45C: ; 0x021EB45C + push {r3, r4, r5, r6, r7, lr} + ldr r7, [r2] + add r5, r0, #0 + ldr r0, [r7, #4] + ldr r4, [r2, #4] + add r6, r1, #0 + bl MOD16_021D9DE8 + str r0, [sp] + lsl r0, r5, #2 + add r0, r4, r0 + str r6, [r0, #0x18] + cmp r6, #3 + bhi _021EB4F0 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EB484: ; jump table + .short _021EB48C - _021EB484 - 2 ; case 0 + .short _021EB4F0 - _021EB484 - 2 ; case 1 + .short _021EB492 - _021EB484 - 2 ; case 2 + .short _021EB4F0 - _021EB484 - 2 ; case 3 +_021EB48C: + mov r0, #0 + str r0, [r4, #0x24] + pop {r3, r4, r5, r6, r7, pc} +_021EB492: + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _021EB4F0 + mov r2, #1 + str r2, [r4, #0x24] + cmp r5, #0 + beq _021EB4A6 + cmp r5, #1 + beq _021EB4DC + pop {r3, r4, r5, r6, r7, pc} +_021EB4A6: + ldr r0, [r4, #0x64] + cmp r0, #1 + ldr r0, [r4, #0x2c] + bne _021EB4C6 + cmp r0, #0 + bne _021EB4BE + ldr r2, [sp] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021EBFD4 + pop {r3, r4, r5, r6, r7, pc} +_021EB4BE: + add r0, r4, #0 + bl MOD16_021EC000 + pop {r3, r4, r5, r6, r7, pc} +_021EB4C6: + cmp r0, #1 + bne _021EB4D0 + mov r0, #0 + bl FUN_02005614 +_021EB4D0: + ldr r2, [sp] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021EBFD4 + pop {r3, r4, r5, r6, r7, pc} +_021EB4DC: + mov r0, #2 + str r0, [r4, #0x28] + ldr r1, [r4, #0x64] + add r0, r4, #0 + eor r1, r2 + bl MOD16_021EC060 + ldr r0, _021EB4F4 ; =0x000005DD + bl FUN_020054C8 +_021EB4F0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021EB4F4: .word 0x000005DD + thumb_func_end MOD16_021EB45C + + thumb_func_start MOD16_021EB4F8 +MOD16_021EB4F8: ; 0x021EB4F8 + push {r4, lr} + add r4, r2, #0 + cmp r0, #0 + beq _021EB50A + cmp r0, #1 + beq _021EB522 + cmp r0, #2 + beq _021EB53E + pop {r4, pc} +_021EB50A: + ldr r0, [r4, #0x2c] + cmp r0, #1 + bne _021EB516 + add r0, r4, #0 + bl MOD16_021EC000 +_021EB516: + ldr r0, _021EB564 ; =0x021C48F8 + ldrh r0, [r0, #0x1c] + str r0, [r4, #0x38] + mov r0, #1 + str r0, [r4, #0x30] + pop {r4, pc} +_021EB522: + ldr r0, [r4, #0x2c] + cmp r0, #1 + bne _021EB52E + add r0, r4, #0 + bl MOD16_021EC000 +_021EB52E: + mov r0, #1 + str r0, [r4, #0x4c] + ldr r0, _021EB564 ; =0x021C48F8 + ldrh r1, [r0, #0x1c] + str r1, [r4, #0x54] + ldrh r0, [r0, #0x1e] + str r0, [r4, #0x58] + pop {r4, pc} +_021EB53E: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021EB55C + ldr r0, [r4, #0x10] + bl FUN_02020A40 + str r0, [r4, #0x20] + ldr r0, [r4, #0x10] + add r0, r0, #4 + bl FUN_02020A40 + ldr r1, [r4, #0x20] + orr r0, r1 + str r0, [r4, #0x20] + pop {r4, pc} +_021EB55C: + mov r0, #1 + str r0, [r4, #0x20] + pop {r4, pc} + nop +_021EB564: .word 0x021C48F8 + thumb_func_end MOD16_021EB4F8 + + thumb_func_start MOD16_021EB568 +MOD16_021EB568: ; 0x021EB568 + push {r4, lr} + add r4, r2, #0 + cmp r0, #0 + beq _021EB57A + cmp r0, #1 + beq _021EB5BA + cmp r0, #2 + beq _021EB5DE + pop {r4, pc} +_021EB57A: + ldr r0, [r4, #0x30] + cmp r0, #1 + bne _021EB638 + ldr r1, _021EB63C ; =0x021C48F8 + ldr r0, [r4, #0x38] + ldrh r2, [r1, #0x1c] + sub r2, r2, r0 + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _021EB5A2 + cmp r2, #0xc + blt _021EB638 + mov r0, #1 + str r0, [r4, #0x34] + ldrh r0, [r1, #0x1c] + str r0, [r4, #0x38] + ldr r0, _021EB640 ; =0x000005F7 + bl FUN_020054C8 + pop {r4, pc} +_021EB5A2: + mov r0, #0xb + mvn r0, r0 + cmp r2, r0 + bgt _021EB638 + mov r0, #0 + str r0, [r4, #0x34] + ldrh r0, [r1, #0x1c] + str r0, [r4, #0x38] + ldr r0, _021EB640 ; =0x000005F7 + bl FUN_020054C8 + pop {r4, pc} +_021EB5BA: + ldr r0, [r4, #0x4c] + cmp r0, #1 + bne _021EB638 + add r0, r4, #0 + bl MOD16_021EBC30 + add r0, r4, #0 + bl MOD16_021EBC98 + add r0, r4, #0 + bl MOD16_021EBCC4 + ldr r0, _021EB63C ; =0x021C48F8 + ldrh r1, [r0, #0x1c] + str r1, [r4, #0x54] + ldrh r0, [r0, #0x1e] + str r0, [r4, #0x58] + pop {r4, pc} +_021EB5DE: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _021EB638 + ldr r0, [r4, #0x2c] + cmp r0, #0 + bne _021EB5F8 + mov r0, #1 + str r0, [r4, #0x20] + add r0, r4, #0 + mov r1, #0 + bl MOD16_021EC0C0 + b _021EB632 +_021EB5F8: + ldr r1, _021EB63C ; =0x021C48F8 + ldrh r0, [r1, #0x1e] + cmp r0, #0x83 + bhs _021EB626 + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _021EB610 + ldrh r1, [r1, #0x1c] + add r0, r4, #0 + bl MOD16_021EBDD0 + b _021EB618 +_021EB610: + ldrh r1, [r1, #0x1c] + add r0, r4, #0 + bl MOD16_021EBE04 +_021EB618: + mov r0, #0 + str r0, [r4, #0x3c] + add r0, r4, #0 + mov r1, #1 + bl MOD16_021EC0C0 + b _021EB632 +_021EB626: + add r0, r4, #0 + mov r1, #0 + bl MOD16_021EC0D8 + ldr r0, _021EB644 ; =0xFFFFFA00 + str r0, [r4, #0x3c] +_021EB632: + add r0, r4, #0 + bl MOD16_021EC0E8 +_021EB638: + pop {r4, pc} + nop +_021EB63C: .word 0x021C48F8 +_021EB640: .word 0x000005F7 +_021EB644: .word 0xFFFFFA00 + thumb_func_end MOD16_021EB568 + + thumb_func_start MOD16_021EB648 +MOD16_021EB648: ; 0x021EB648 + push {r4, lr} + add r4, r2, #0 + cmp r0, #0 + beq _021EB65A + cmp r0, #1 + beq _021EB660 + cmp r0, #2 + beq _021EB66C + pop {r4, pc} +_021EB65A: + mov r0, #0 + str r0, [r4, #0x30] + pop {r4, pc} +_021EB660: + ldr r0, [r4, #0x60] + lsl r0, r0, #2 + str r0, [r4, #0x5c] + mov r0, #0 + str r0, [r4, #0x4c] + pop {r4, pc} +_021EB66C: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _021EB680 + add r0, r4, #0 + mov r1, #0 + bl MOD16_021EC0C0 + add r0, r4, #0 + bl MOD16_021EC0E8 +_021EB680: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB648 + + thumb_func_start MOD16_021EB684 +MOD16_021EB684: ; 0x021EB684 + push {r4, lr} + add r4, r2, #0 + cmp r0, #0 + beq _021EB696 + cmp r0, #1 + beq _021EB69C + cmp r0, #2 + beq _021EB6A8 + pop {r4, pc} +_021EB696: + mov r0, #0 + str r0, [r4, #0x30] + pop {r4, pc} +_021EB69C: + ldr r0, [r4, #0x60] + lsl r0, r0, #2 + str r0, [r4, #0x5c] + mov r0, #0 + str r0, [r4, #0x4c] + pop {r4, pc} +_021EB6A8: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _021EB6BC + add r0, r4, #0 + mov r1, #0 + bl MOD16_021EC0C0 + add r0, r4, #0 + bl MOD16_021EC0E8 +_021EB6BC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB684 + + thumb_func_start MOD16_021EB6C0 +MOD16_021EB6C0: ; 0x021EB6C0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EB724 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EB830 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EB920 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EBAA4 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EC068 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EB6C0 + + thumb_func_start MOD16_021EB6FC +MOD16_021EB6FC: ; 0x021EB6FC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EBA84 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBB88 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EB8DC + add r0, r4, #0 + bl MOD16_021EB80C + add r0, r5, #0 + bl MOD16_021EC080 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EB6FC + + thumb_func_start MOD16_021EB724 +MOD16_021EB724: ; 0x021EB724 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x47 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + ldr r0, [r5] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x23 + mov r3, #7 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x48 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r4, r0, #0 + ldrh r0, [r2] + mov r1, #7 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #7 + ldr r0, [r0] + bl FUN_0201AC68 + ldr r0, [r5] + mov r2, #0 + add r3, r2, #0 + ldr r0, [r0] + mov r1, #7 + sub r3, #0x30 + bl FUN_020179E0 + ldr r0, [r5] + mov r2, #3 + add r3, r2, #0 + ldr r0, [r0] + mov r1, #7 + sub r3, #0x13 + bl FUN_020179E0 + mov r0, #7 + mov r1, #3 + bl FUN_020178BC + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EB724 + + thumb_func_start MOD16_021EB80C +MOD16_021EB80C: ; 0x021EB80C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + bl FUN_02018744 + mov r0, #7 + mov r1, #1 + bl FUN_020178BC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB80C + + thumb_func_start MOD16_021EB830 +MOD16_021EB830: ; 0x021EB830 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021EB8D0 ; =0x00002781 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x71 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x58] + bl FUN_02009B04 + ldr r0, [r5, #0x58] + bl FUN_02009474 + ldr r0, _021EB8D4 ; =0x00002722 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x12 + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x5c] + bl FUN_02009D68 + ldr r0, [r5, #0x5c] + bl FUN_02009474 + ldr r0, _021EB8D8 ; =0x00002782 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x72 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x60] + mov r0, #0x9e + lsl r0, r0, #6 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x70 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x64] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EB8D0: .word 0x00002781 +_021EB8D4: .word 0x00002722 +_021EB8D8: .word 0x00002782 + thumb_func_end MOD16_021EB830 + + thumb_func_start MOD16_021EB8DC +MOD16_021EB8DC: ; 0x021EB8DC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x58] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x5c] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x58] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x5c] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x60] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x64] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EB8DC + + thumb_func_start MOD16_021EB920 +MOD16_021EB920: ; 0x021EB920 + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + mov r3, #0x9e + add r5, r0, #0 + lsl r3, r3, #6 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x5e + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x43 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + lsl r0, r0, #0x11 + str r0, [sp, #0x34] + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + str r6, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #0x3c] + mov r1, #4 + bl FUN_02020130 + ldr r0, [r5, #0x3c] + mov r1, #1 + bl FUN_020200BC + mov r1, #2 + ldr r0, [r5, #0x3c] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5, #0x3c] + mov r1, #8 + bl FUN_02020208 + mov r0, #0x33 + lsl r0, r0, #0xc + str r0, [sp, #0x34] + mov r1, #0x9d + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r5] + mov r1, #1 + bl FUN_020200EC + mov r0, #0x2d + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #0x83 + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #4] + mov r1, #3 + bl FUN_02020130 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_020200BC + mov r1, #2 + ldr r0, [r5, #4] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5, #4] + mov r1, #5 + bl FUN_02020208 + mov r2, #3 + str r2, [r5, #8] + mov r1, #2 + str r1, [r5, #0xc] + str r2, [r5, #0x10] + mov r0, #5 + str r0, [r5, #0x18] + mov r0, #0xe6 + str r1, [r5, #0x1c] + lsl r0, r0, #0xc + mov r1, #0xa6 + str r0, [sp, #0x34] + lsl r1, r1, #0xc + lsl r0, r2, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #0x20] + mov r1, #6 + bl FUN_02020130 + ldr r0, [r5, #0x20] + mov r1, #1 + bl FUN_020200BC + mov r1, #2 + ldr r0, [r5, #0x20] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5, #0x20] + mov r1, #5 + bl FUN_02020208 + mov r1, #6 + str r1, [r5, #0x24] + mov r0, #5 + str r0, [r5, #0x28] + str r1, [r5, #0x2c] + str r0, [r5, #0x34] + mov r0, #2 + str r0, [r5, #0x38] + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EB920 + + thumb_func_start MOD16_021EBA84 +MOD16_021EBA84: ; 0x021EBA84 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + ldr r0, [r4, #0x3c] + bl FUN_0201FFC8 + ldr r0, [r4, #4] + bl FUN_0201FFC8 + ldr r0, [r4, #0x20] + bl FUN_0201FFC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EBA84 + + thumb_func_start MOD16_021EBAA4 +MOD16_021EBAA4: ; 0x021EBAA4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r4, [r1] + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021EBB80 ; =0x00002722 + add r6, r2, #0 + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #8] + mov r1, #0 + bl FUN_02009E54 + mov r2, #0 + mov r1, #0x45 + lsl r1, r1, #2 + str r1, [sp, #0x1c] + mov r1, #2 + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + str r1, [sp, #0x28] + str r6, [sp, #0x2c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021EBB84 ; =0x00000266 + add r1, r6, #0 + mov r3, #0x29 + bl MOD16_021DB3C8 + lsr r1, r0, #1 + mov r0, #0x40 + sub r0, r0, r1 + str r0, [sp, #0x18] + str r6, [sp, #0xc] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0x50] + ldr r0, [r0] + add r1, r7, #0 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021EBB84 ; =0x00000266 + add r1, r6, #0 + mov r3, #0x2a + bl MOD16_021DB3C8 + lsr r1, r0, #1 + mov r0, #0x40 + sub r0, r0, r1 + str r0, [sp, #0x18] + str r6, [sp, #0xc] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0x54] + ldr r0, [r0] + add r1, r7, #0 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + ldr r0, [r5, #0x54] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EBB80: .word 0x00002722 +_021EBB84: .word 0x00000266 + thumb_func_end MOD16_021EBAA4 + + thumb_func_start MOD16_021EBB88 +MOD16_021EBB88: ; 0x021EBB88 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021EBB8E: + ldr r0, [r5, #0x50] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021EBB8E + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EBB88 + + thumb_func_start MOD16_021EBBA0 +MOD16_021EBBA0: ; 0x021EBBA0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #0x40] + ldr r0, [r4, #0x34] + cmp r1, r0 + beq _021EBBEC + ldr r0, [r5, #0x3c] + bl FUN_0202022C + add r6, r0, #0 + ldr r0, [r4, #0x34] + cmp r0, #0 + ldr r0, [r5, #0x3c] + bne _021EBBD4 + mov r1, #4 + bl FUN_02020130 + mov r1, #8 + sub r1, r1, r6 + lsl r1, r1, #0x10 + ldr r0, [r5, #0x3c] + lsr r1, r1, #0x10 + bl FUN_02020208 + b _021EBBE8 +_021EBBD4: + mov r1, #0 + bl FUN_02020130 + mov r1, #8 + sub r1, r1, r6 + lsl r1, r1, #0x10 + ldr r0, [r5, #0x3c] + lsr r1, r1, #0x10 + bl FUN_02020208 +_021EBBE8: + ldr r0, [r4, #0x34] + str r0, [r5, #0x40] +_021EBBEC: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EBBA0 + + thumb_func_start MOD16_021EBBF0 +MOD16_021EBBF0: ; 0x021EBBF0 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldr r0, [r2, #0x64] + ldr r3, [r2, #0x18] + cmp r0, #0 + ldr r0, [r4, #4] + bne _021EBC0C + add r4, #8 + add r1, r4, #0 + mov r2, #0 + bl MOD16_021EBEE4 + pop {r4, pc} +_021EBC0C: + add r4, #8 + ldr r2, [r2, #0x2c] + add r1, r4, #0 + bl MOD16_021EBE6C + pop {r4, pc} + thumb_func_end MOD16_021EBBF0 + + thumb_func_start MOD16_021EBC18 +MOD16_021EBC18: ; 0x021EBC18 + push {r3, lr} + add r2, r0, #0 + ldr r0, [r2, #0x20] + add r3, r1, #0 + add r2, #0x24 + add r1, r2, #0 + ldr r2, [r3, #0x64] + ldr r3, [r3, #0x1c] + bl MOD16_021EBE6C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EBC18 + + thumb_func_start MOD16_021EBC30 +MOD16_021EBC30: ; 0x021EBC30 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r3, _021EBC94 ; =0x021C48F8 + ldr r0, [r5, #0x54] + ldrh r2, [r3, #0x1c] + ldrh r3, [r3, #0x1e] + ldr r1, [r5, #0x58] + sub r0, #0x33 + sub r1, #0x9d + sub r2, #0x33 + sub r3, #0x9d + bl FUN_0201BBD0 + add r6, r0, #0 + bpl _021EBC56 + neg r0, r6 +_021EBC56: + cmp r0, #1 + blt _021EBC90 + ldr r0, [r5, #0x5c] + add r4, r5, #0 + add r4, #0x5c + add r0, r0, r6 + str r0, [r5, #0x5c] + ldr r0, [r4] + bpl _021EBC6E + add r0, #0x58 + str r0, [r4] + b _021EBC76 +_021EBC6E: + mov r1, #0x58 + blx _s32_div_f + str r1, [r4] +_021EBC76: + ldr r0, [r5, #0x5c] + cmp r0, #0x20 + blt _021EBC90 + cmp r0, #0x38 + bgt _021EBC90 + cmp r6, #0 + ble _021EBC8C + mov r0, #0x20 + add sp, #4 + str r0, [r5, #0x5c] + pop {r3, r4, r5, r6, pc} +_021EBC8C: + mov r0, #0x38 + str r0, [r5, #0x5c] +_021EBC90: + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021EBC94: .word 0x021C48F8 + thumb_func_end MOD16_021EBC30 + + thumb_func_start MOD16_021EBC98 +MOD16_021EBC98: ; 0x021EBC98 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x5c] + asr r0, r1, #1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r1, r0, #2 + ldr r0, [r4, #0x60] + cmp r1, r0 + beq _021EBCBE + ldr r0, _021EBCC0 ; =0x000005F7 + bl FUN_020054C8 + ldr r1, [r4, #0x5c] + asr r0, r1, #1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r0, r0, #2 + str r0, [r4, #0x60] +_021EBCBE: + pop {r4, pc} + .align 2, 0 +_021EBCC0: .word 0x000005F7 + thumb_func_end MOD16_021EBC98 + + thumb_func_start MOD16_021EBCC4 +MOD16_021EBCC4: ; 0x021EBCC4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x5c] + cmp r1, #0 + bne _021EBCD4 + bl MOD16_021EC010 + pop {r4, pc} +_021EBCD4: + ble _021EBD02 + cmp r1, #0x2c + bgt _021EBD02 + ldr r0, [r4, #0x50] + cmp r0, #1 + bne _021EBCE6 + mov r0, #0 + bl FUN_02004CA4 +_021EBCE6: + ldr r0, [r4, #0x50] + cmp r0, #2 + beq _021EBCF4 + bl FUN_02004CB4 + mov r0, #2 + str r0, [r4, #0x50] +_021EBCF4: + ldr r0, [r4, #0x60] + cmp r0, #0 + bne _021EBCFC + mov r0, #1 +_021EBCFC: + bl FUN_02004D04 + pop {r4, pc} +_021EBD02: + ldr r0, [r4, #0x50] + cmp r0, #2 + bne _021EBD0C + bl FUN_02004CFC +_021EBD0C: + ldr r0, [r4, #0x50] + cmp r0, #1 + beq _021EBD1C + mov r0, #0 + bl FUN_02004C80 + mov r0, #1 + str r0, [r4, #0x50] +_021EBD1C: + ldr r0, [r4, #0x5c] + cmp r0, #0 + bne _021EBD26 + mov r0, #0x58 + str r0, [r4, #0x5c] +_021EBD26: + ldr r1, [r4, #0x60] + mov r0, #0x16 + sub r0, r0, r1 + lsl r0, r0, #3 + cmp r0, #0 + ble _021EBD34 + sub r0, r0, #1 +_021EBD34: + mov r1, #0 + bl FUN_02004CAC + pop {r4, pc} + thumb_func_end MOD16_021EBCC4 + + thumb_func_start MOD16_021EBD3C +MOD16_021EBD3C: ; 0x021EBD3C + push {r4, lr} + ldr r1, [r1, #0x5c] + add r4, r0, #0 + mov r0, #0xe + bl FUN_0201BC84 + add r1, r0, #0 + lsl r1, r1, #0x10 + ldr r0, [r4] + lsr r1, r1, #0x10 + bl FUN_02020088 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EBD3C + + thumb_func_start MOD16_021EBD58 +MOD16_021EBD58: ; 0x021EBD58 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r2, #0x6c] + add r5, r0, #0 + ldr r2, [r2, #0x3c] + mov r0, #1 + bl FUN_02004F28 + add r6, r0, #0 + bne _021EBD70 + mov r0, #0 + str r0, [r5, #0x48] +_021EBD70: + add r0, r5, #0 + ldr r1, [r5, #0x48] + add r0, #0x4c + sub r1, r6, r1 + lsl r1, r1, #4 + ldrh r0, [r0] + neg r1, r1 + add r1, r0, r1 + add r0, r5, #0 + add r0, #0x4c + strh r1, [r0] + add r0, r5, #0 + add r0, #0x4c + ldrh r1, [r0] + add r0, r5, #0 + add r0, #0x4c + strh r1, [r0] + add r0, r5, #0 + add r0, #0x4c + ldrh r0, [r0] + mov r1, #0xb6 + blx _s32_div_f + add r3, r0, #0 + ldr r0, [r4] + lsl r3, r3, #0x10 + ldr r0, [r0] + mov r1, #7 + mov r2, #0 + lsr r3, r3, #0x10 + bl FUN_0201AF08 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #9 + mov r3, #0x83 + bl FUN_0201AF50 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #0xc + mov r3, #0x63 + bl FUN_0201AF50 + str r6, [r5, #0x48] + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EBD58 + + thumb_func_start MOD16_021EBDD0 +MOD16_021EBDD0: ; 0x021EBDD0 + push {r4, lr} + sub r1, #0x6b + add r4, r0, #0 + lsl r0, r1, #0xc + mov r2, #0x7f + asr r1, r0, #0x1f + lsl r2, r2, #0xc + mov r3, #0 + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #9 + lsl r1, r1, #0x10 + blx FX_Div + asr r0, r0, #0xc + str r0, [r4, #0x44] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EBDD0 + + thumb_func_start MOD16_021EBE04 +MOD16_021EBE04: ; 0x021EBE04 + push {r4, lr} + sub r1, #0xb3 + add r4, r0, #0 + lsl r0, r1, #0xc + mov r2, #0x7f + asr r1, r0, #0x1f + lsl r2, r2, #0xc + mov r3, #0 + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #0x12 + lsl r1, r1, #0xe + blx FX_Div + asr r0, r0, #0xc + str r0, [r4, #0x40] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EBE04 + + thumb_func_start MOD16_021EBE38 +MOD16_021EBE38: ; 0x021EBE38 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x40] + cmp r0, #0 + ldr r0, [r4, #0x50] + bne _021EBE58 + ldr r0, [r0] + mov r1, #1 + bl FUN_020119D0 + ldr r0, [r4, #0x54] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, pc} +_021EBE58: + ldr r0, [r0] + mov r1, #0 + bl FUN_020119D0 + ldr r0, [r4, #0x54] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, pc} + thumb_func_end MOD16_021EBE38 + + thumb_func_start MOD16_021EBE6C +MOD16_021EBE6C: ; 0x021EBE6C + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + cmp r4, #3 + bne _021EBE7C + mov r4, #1 +_021EBE7C: + add r0, r6, #0 + bl FUN_0202022C + str r0, [sp] + ldr r0, [r5, #0xc] + cmp r0, r7 + beq _021EBE96 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021EBF7C + str r7, [r5, #0xc] +_021EBE96: + cmp r4, #2 + bgt _021EBEAA + cmp r4, #0 + blt _021EBEE0 + beq _021EBEE0 + cmp r4, #1 + beq _021EBECC + cmp r4, #2 + beq _021EBEB0 + pop {r3, r4, r5, r6, r7, pc} +_021EBEAA: + cmp r4, #0x64 + beq _021EBECC + pop {r3, r4, r5, r6, r7, pc} +_021EBEB0: + ldr r1, [r5, #0x14] + ldr r0, [sp] + cmp r0, r1 + ble _021EBEE0 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_02020208 + add r0, r6, #0 + mov r1, #0 + bl FUN_020200D8 + pop {r3, r4, r5, r6, r7, pc} +_021EBECC: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021EBF7C + mov r1, #2 + add r0, r6, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_021EBEE0: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EBE6C + + thumb_func_start MOD16_021EBEE4 +MOD16_021EBEE4: ; 0x021EBEE4 + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + cmp r4, #1 + bne _021EBEF4 + mov r4, #3 +_021EBEF4: + add r0, r6, #0 + bl FUN_0202022C + ldr r0, [r5, #0xc] + cmp r0, r7 + beq _021EBF0C + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021EBF7C + str r7, [r5, #0xc] +_021EBF0C: + cmp r4, #3 + bgt _021EBF20 + cmp r4, #0 + blt _021EBF7A + beq _021EBF26 + cmp r4, #2 + beq _021EBF50 + cmp r4, #3 + beq _021EBF66 + pop {r3, r4, r5, r6, r7, pc} +_021EBF20: + cmp r4, #0x64 + beq _021EBF66 + pop {r3, r4, r5, r6, r7, pc} +_021EBF26: + cmp r7, #1 + bne _021EBF36 + add r0, r6, #0 + add r1, r5, #0 + mov r2, #0 + bl MOD16_021EBF7C + b _021EBF40 +_021EBF36: + add r0, r6, #0 + add r1, r5, #0 + mov r2, #1 + bl MOD16_021EBF7C +_021EBF40: + ldr r1, [r5, #0x14] + add r0, r6, #0 + sub r1, r1, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 + pop {r3, r4, r5, r6, r7, pc} +_021EBF50: + ldr r1, [r5, #0x14] + add r0, r6, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 + add r0, r6, #0 + mov r1, #0 + bl FUN_020200D8 + pop {r3, r4, r5, r6, r7, pc} +_021EBF66: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021EBF7C + mov r1, #2 + add r0, r6, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_021EBF7A: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EBEE4 + + thumb_func_start MOD16_021EBF7C +MOD16_021EBF7C: ; 0x021EBF7C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r7, r2, #0 + bl FUN_0202022C + add r6, r0, #0 + cmp r7, #1 + ldr r1, [r4, #8] + bne _021EBFB2 + ldr r0, [r4] + cmp r1, r0 + bne _021EBFD2 + ldr r1, [r4, #4] + add r0, r5, #0 + bl FUN_02020130 + ldr r0, [r4, #4] + str r0, [r4, #8] + ldr r1, [r4, #0x10] + add r0, r5, #0 + sub r1, r1, r6 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 + pop {r3, r4, r5, r6, r7, pc} +_021EBFB2: + ldr r0, [r4, #4] + cmp r1, r0 + bne _021EBFD2 + ldr r1, [r4] + add r0, r5, #0 + bl FUN_02020130 + ldr r0, [r4] + str r0, [r4, #8] + ldr r1, [r4, #0x10] + add r0, r5, #0 + sub r1, r1, r6 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 +_021EBFD2: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EBF7C + + thumb_func_start MOD16_021EBFD4 +MOD16_021EBFD4: ; 0x021EBFD4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #1 + lsl r1, r2, #0x10 + str r0, [r4, #0x2c] + ldr r0, _021EBFFC ; =0x000001FF + lsr r1, r1, #0x10 + str r0, [sp] + mov r0, #0xd + mov r2, #0 + mov r3, #0x7f + bl FUN_020056AC + add r0, r4, #0 + bl MOD16_021EC0E8 + add sp, #4 + pop {r3, r4, pc} + nop +_021EBFFC: .word 0x000001FF + thumb_func_end MOD16_021EBFD4 + + thumb_func_start MOD16_021EC000 +MOD16_021EC000: ; 0x021EC000 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + bl FUN_02005614 + mov r0, #0 + str r0, [r4, #0x2c] + pop {r4, pc} + thumb_func_end MOD16_021EC000 + + thumb_func_start MOD16_021EC010 +MOD16_021EC010: ; 0x021EC010 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #1 + bne _021EC020 + mov r0, #0 + bl FUN_02004CA4 +_021EC020: + ldr r0, [r4, #0x50] + cmp r0, #2 + bne _021EC02A + bl FUN_02004CFC +_021EC02A: + mov r0, #0 + str r0, [r4, #0x50] + pop {r4, pc} + thumb_func_end MOD16_021EC010 + + thumb_func_start MOD16_021EC030 +MOD16_021EC030: ; 0x021EC030 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r6, r0, #0 + bl FUN_02005670 + cmp r0, #0 + bne _021EC05C + ldr r0, [r5, #0x68] + sub r0, r0, #1 + str r0, [r5, #0x68] + bne _021EC05C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EBFD4 + mov r0, #0xa + str r0, [r5, #0x68] +_021EC05C: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EC030 + + thumb_func_start MOD16_021EC060 +MOD16_021EC060: ; 0x021EC060 + str r1, [r0, #0x64] + mov r1, #0xa + str r1, [r0, #0x68] + bx lr + thumb_func_end MOD16_021EC060 + + thumb_func_start MOD16_021EC068 +MOD16_021EC068: ; 0x021EC068 + push {r4, lr} + add r4, r0, #0 + add r3, r2, #0 + ldr r0, [r1] + add r2, r4, #0 + mov r1, #0x14 + add r2, #0x6c + bl MOD16_021D8D70 + str r0, [r4, #0x68] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC068 + + thumb_func_start MOD16_021EC080 +MOD16_021EC080: ; 0x021EC080 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x68] + str r0, [r4, #0x6c] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC080 + + thumb_func_start MOD16_021EC094 +MOD16_021EC094: ; 0x021EC094 + push {r3, lr} + add r2, r0, #0 + ldr r2, [r2, #0x6c] + mov r0, #0x1f + ldr r2, [r2, #0xc] + mov r1, #0xe0 + mov r3, #0x20 + bl FUN_0201C2C8 + pop {r3, pc} + thumb_func_end MOD16_021EC094 + + thumb_func_start MOD16_021EC0A8 +MOD16_021EC0A8: ; 0x021EC0A8 + push {r3, lr} + add r2, r0, #0 + ldr r2, [r2, #0x6c] + mov r0, #0x1f + ldr r2, [r2, #0xc] + mov r1, #0xe0 + add r2, #0x20 + mov r3, #0x20 + bl FUN_0201C2C8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EC0A8 + + thumb_func_start MOD16_021EC0C0 +MOD16_021EC0C0: ; 0x021EC0C0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EC0D8 + cmp r4, #0 + bne _021EC0D4 + add r0, r5, #0 + bl MOD16_021EC0DC +_021EC0D4: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EC0C0 + + thumb_func_start MOD16_021EC0D8 +MOD16_021EC0D8: ; 0x021EC0D8 + str r1, [r0, #0x48] + bx lr + thumb_func_end MOD16_021EC0D8 + + thumb_func_start MOD16_021EC0DC +MOD16_021EC0DC: ; 0x021EC0DC + mov r1, #0 + str r1, [r0, #0x3c] + str r1, [r0, #0x40] + str r1, [r0, #0x44] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC0DC + + thumb_func_start MOD16_021EC0E8 +MOD16_021EC0E8: ; 0x021EC0E8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021EC108 + ldr r0, [r4, #0x3c] + bl MOD16_021EC1DC + ldr r1, _021EC10C ; =0x0000FFFF + ldr r2, [r4, #0x40] + mov r0, #1 + bl FUN_02004D4C + ldr r0, [r4, #0x44] + bl MOD16_021EC110 +_021EC108: + pop {r4, pc} + nop +_021EC10C: .word 0x0000FFFF + thumb_func_end MOD16_021EC0E8 + + thumb_func_start MOD16_021EC110 +MOD16_021EC110: ; 0x021EC110 + ldr r3, _021EC11C ; =0x02004829 + add r1, r0, #0 + mov r0, #8 + mov r2, #0 + bx r3 + nop +_021EC11C: .word 0x02004829 + thumb_func_end MOD16_021EC110 + + thumb_func_start MOD16_021EC120 +MOD16_021EC120: ; 0x021EC120 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r2, [r4, #0x48] + ldr r1, [r5, #0x70] + cmp r2, r1 + beq _021EC140 + cmp r2, #1 + bne _021EC138 + bl MOD16_021EC094 + b _021EC13C +_021EC138: + bl MOD16_021EC0A8 +_021EC13C: + ldr r0, [r4, #0x48] + str r0, [r5, #0x70] +_021EC140: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EC120 + + thumb_func_start MOD16_021EC144 +MOD16_021EC144: ; 0x021EC144 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r6, r0, #0 + ldr r0, _021EC1B4 ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + tst r0, r1 + beq _021EC198 + str r1, [r5, #0x28] + mov r0, #0 + str r0, [r5, #0x18] + ldr r1, [r5, #0x64] + cmp r1, #0 + bne _021EC17E + ldr r1, [r5, #0x2c] + cmp r1, #1 + bne _021EC172 + bl FUN_02005614 +_021EC172: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EBFD4 + pop {r4, r5, r6, pc} +_021EC17E: + ldr r0, [r5, #0x2c] + cmp r0, #0 + bne _021EC190 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EBFD4 + pop {r4, r5, r6, pc} +_021EC190: + add r0, r5, #0 + bl MOD16_021EC000 + pop {r4, r5, r6, pc} +_021EC198: + ldr r0, [r5, #0x28] + cmp r0, #1 + bne _021EC1A6 + mov r0, #2 + str r0, [r5, #0x28] + str r0, [r5, #0x18] + pop {r4, r5, r6, pc} +_021EC1A6: + cmp r0, #2 + bne _021EC1B0 + mov r0, #0 + str r0, [r5, #0x28] + str r1, [r5, #0x18] +_021EC1B0: + pop {r4, r5, r6, pc} + nop +_021EC1B4: .word 0x021C48B8 + thumb_func_end MOD16_021EC144 + + thumb_func_start MOD16_021EC1B8 +MOD16_021EC1B8: ; 0x021EC1B8 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [r0] + ldr r0, [r1, #8] + bl MOD16_021E95C8 + cmp r0, #1 + bne _021EC1D6 + mov r3, #0x18 + add r0, r4, #0 + mov r1, #0xb4 + mov r2, #0x83 + str r3, [sp] + bl MOD16_021D8B04 +_021EC1D6: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC1B8 + + thumb_func_start MOD16_021EC1DC +MOD16_021EC1DC: ; 0x021EC1DC + push {r4, lr} + add r4, r0, #0 + ldr r1, _021EC1F8 ; =0x0000FFFF + mov r0, #1 + add r2, r4, #0 + bl FUN_02004D20 + add r4, #0x14 + ldr r1, _021EC1F8 ; =0x0000FFFF + mov r0, #8 + add r2, r4, #0 + bl FUN_02004D20 + pop {r4, pc} + .align 2, 0 +_021EC1F8: .word 0x0000FFFF + thumb_func_end MOD16_021EC1DC + + thumb_func_start MOD16_021EC1FC +MOD16_021EC1FC: ; 0x021EC1FC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021EC274 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EC2C0 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EC2E8 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021EC318 + str r0, [r5, #0x24] + ldr r0, _021EC244 ; =MOD16_021EC31C + str r0, [r5, #8] + ldr r0, _021EC248 ; =MOD16_021EC340 + str r0, [r5, #0xc] + ldr r0, _021EC24C ; =MOD16_021EC350 + str r0, [r5, #0x10] + ldr r0, _021EC250 ; =MOD16_021EC364 + str r0, [r5, #0x14] + ldr r0, _021EC254 ; =MOD16_021EC3E8 + str r0, [r5, #0x18] + ldr r0, _021EC258 ; =MOD16_021EC3EC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EC244: .word MOD16_021EC31C +_021EC248: .word MOD16_021EC340 +_021EC24C: .word MOD16_021EC350 +_021EC250: .word MOD16_021EC364 +_021EC254: .word MOD16_021EC3E8 +_021EC258: .word MOD16_021EC3EC + thumb_func_end MOD16_021EC1FC + + thumb_func_start MOD16_021EC25C +MOD16_021EC25C: ; 0x021EC25C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021EC2EC + ldr r0, [r4, #4] + bl MOD16_021EC300 + ldr r0, [r4, #0x20] + bl MOD16_021EC314 + pop {r4, pc} + thumb_func_end MOD16_021EC25C + + thumb_func_start MOD16_021EC274 +MOD16_021EC274: ; 0x021EC274 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021EC286 + bl ErrorHandling +_021EC286: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EC274 + + thumb_func_start MOD16_021EC2C0 +MOD16_021EC2C0: ; 0x021EC2C0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021EC2D2 + bl ErrorHandling +_021EC2D2: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EC2C0 + + thumb_func_start MOD16_021EC2E8 +MOD16_021EC2E8: ; 0x021EC2E8 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EC2E8 + + thumb_func_start MOD16_021EC2EC +MOD16_021EC2EC: ; 0x021EC2EC + push {r4, lr} + add r4, r0, #0 + bne _021EC2F6 + bl ErrorHandling +_021EC2F6: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC2EC + + thumb_func_start MOD16_021EC300 +MOD16_021EC300: ; 0x021EC300 + push {r4, lr} + add r4, r0, #0 + bne _021EC30A + bl ErrorHandling +_021EC30A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC300 + + thumb_func_start MOD16_021EC314 +MOD16_021EC314: ; 0x021EC314 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC314 + + thumb_func_start MOD16_021EC318 +MOD16_021EC318: ; 0x021EC318 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EC318 + + thumb_func_start MOD16_021EC31C +MOD16_021EC31C: ; 0x021EC31C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021EC330 + bl ErrorHandling +_021EC330: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + str r4, [r5, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EC31C + + thumb_func_start MOD16_021EC340 +MOD16_021EC340: ; 0x021EC340 + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _021EC34A + mov r0, #1 + bx lr +_021EC34A: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC340 + + thumb_func_start MOD16_021EC350 +MOD16_021EC350: ; 0x021EC350 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC350 + + thumb_func_start MOD16_021EC364 +MOD16_021EC364: ; 0x021EC364 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r3, [r3, #8] + ldr r5, [r4, #8] + cmp r0, #3 + bhi _021EC3E2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EC382: ; jump table + .short _021EC38A - _021EC382 - 2 ; case 0 + .short _021EC3A8 - _021EC382 - 2 ; case 1 + .short _021EC3C8 - _021EC382 - 2 ; case 2 + .short _021EC3DE - _021EC382 - 2 ; case 3 +_021EC38A: + ldr r0, [r4, #4] + mov r1, #0x14 + bl FUN_02016998 + str r0, [r4, #8] + mov r2, #0x14 + mov r1, #0 +_021EC398: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021EC398 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC3E2 +_021EC3A8: + ldr r0, [r4, #4] + add r1, r6, #0 + str r0, [sp] + add r0, r5, #0 + bl MOD16_021EC520 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EC474 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC3E2 +_021EC3C8: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021EC4E0 + cmp r0, #0 + beq _021EC3E2 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC3E2 +_021EC3DE: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EC3E2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EC364 + + thumb_func_start MOD16_021EC3E8 +MOD16_021EC3E8: ; 0x021EC3E8 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EC3E8 + + thumb_func_start MOD16_021EC3EC +MOD16_021EC3EC: ; 0x021EC3EC + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021EC456 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EC406: ; jump table + .short _021EC410 - _021EC406 - 2 ; case 0 + .short _021EC420 - _021EC406 - 2 ; case 1 + .short _021EC434 - _021EC406 - 2 ; case 2 + .short _021EC442 - _021EC406 - 2 ; case 3 + .short _021EC452 - _021EC406 - 2 ; case 4 +_021EC410: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EC474 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC456 +_021EC420: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EC4E0 + cmp r0, #0 + beq _021EC456 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC456 +_021EC434: + add r1, r3, #0 + bl MOD16_021EC574 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC456 +_021EC442: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC456 +_021EC452: + mov r0, #1 + pop {r4, pc} +_021EC456: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC3EC + + thumb_func_start MOD16_021EC45C +MOD16_021EC45C: ; 0x021EC45C + ldr r3, _021EC464 ; =0x02020399 + ldr r0, [r0, #0x10] + mov r1, #1 + bx r3 + .align 2, 0 +_021EC464: .word 0x02020399 + thumb_func_end MOD16_021EC45C + + thumb_func_start MOD16_021EC468 +MOD16_021EC468: ; 0x021EC468 + ldr r3, _021EC470 ; =0x02020399 + ldr r0, [r0, #0x10] + mov r1, #0 + bx r3 + .align 2, 0 +_021EC470: .word 0x02020399 + thumb_func_end MOD16_021EC468 + + thumb_func_start MOD16_021EC474 +MOD16_021EC474: ; 0x021EC474 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021EC45C + ldr r0, [r4, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021EC4DC + cmp r6, #0 + beq _021EC4B8 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021EC4B8: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021EC4DC: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EC474 + + thumb_func_start MOD16_021EC4E0 +MOD16_021EC4E0: ; 0x021EC4E0 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021EC500 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021EC50A +_021EC500: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021EC50A: + cmp r0, #0 + beq _021EC51C + cmp r4, #0 + beq _021EC518 + add r0, r6, #0 + bl MOD16_021EC468 +_021EC518: + mov r0, #1 + pop {r4, r5, r6, pc} +_021EC51C: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EC4E0 + + thumb_func_start MOD16_021EC520 +MOD16_021EC520: ; 0x021EC520 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r7, r2, #0 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EC5A8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EC7E8 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EC898 + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021EC610 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EC700 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EC7E0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021EC9B0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EC520 + + thumb_func_start MOD16_021EC574 +MOD16_021EC574: ; 0x021EC574 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EC7E4 + add r0, r5, #0 + bl MOD16_021EC7D4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EC6BC + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + add r0, r4, #0 + bl MOD16_021ECA2C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EC574 + + thumb_func_start MOD16_021EC5A8 +MOD16_021EC5A8: ; 0x021EC5A8 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r2, #0 + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x4a + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EC5A8 + + thumb_func_start MOD16_021EC610 +MOD16_021EC610: ; 0x021EC610 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021EC6AC ; =0x00001BB5 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5d + bl FUN_020091E0 + str r0, [r5] + bl FUN_02009B04 + ldr r0, [r5] + bl FUN_02009474 + ldr r0, _021EC6B0 ; =0x00001B66 + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xe + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #4] + bl FUN_02009D68 + ldr r0, [r5, #4] + bl FUN_02009474 + ldr r0, _021EC6B4 ; =0x00001BB3 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5b + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #8] + ldr r0, _021EC6B8 ; =0x00001BB4 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5c + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EC6AC: .word 0x00001BB5 +_021EC6B0: .word 0x00001B66 +_021EC6B4: .word 0x00001BB3 +_021EC6B8: .word 0x00001BB4 + thumb_func_end MOD16_021EC610 + + thumb_func_start MOD16_021EC6BC +MOD16_021EC6BC: ; 0x021EC6BC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #4] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #4] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #8] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0xc] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EC6BC + + thumb_func_start MOD16_021EC700 +MOD16_021EC700: ; 0x021EC700 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + add r7, r3, #0 + ldr r4, [r1] + bl MOD16_021D9DE8 + ldr r3, _021EC7CC ; =0x00001BB4 + str r0, [sp, #0x2c] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x50 + sub r2, #0x4e + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x30] + add r0, sp, #0x50 + str r0, [sp, #0x34] + mov r0, #0x1f + str r0, [sp, #0x44] + mov r0, #1 + str r0, [sp, #0x48] + str r7, [sp, #0x4c] + ldr r1, [r6, #4] + ldr r0, _021EC7D0 ; =0x00001748 + ldr r0, [r1, r0] + ldr r1, [sp, #0x2c] + bl FUN_02087B98 + add r4, r0, #0 + ldr r1, [r6, #4] + ldr r0, _021EC7D0 ; =0x00001748 + ldr r0, [r1, r0] + ldr r1, [sp, #0x2c] + bl FUN_02087BD8 + add r7, r0, #0 + mov r0, #0x2a + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, r4, #0 + add r0, #0x58 + lsl r0, r0, #0xc + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FF84 + str r0, [r5, #0x10] + ldr r0, [r6, #4] + bl MOD16_021D9F4C + cmp r0, #0 + ldr r0, [r5, #0x10] + bne _021EC7B2 + mov r1, #5 + bl FUN_02020130 + b _021EC7B8 +_021EC7B2: + mov r1, #6 + bl FUN_02020130 +_021EC7B8: + ldr r0, [r5, #0x10] + add r1, r4, #0 + bl MOD16_021ECA48 + ldr r0, [r5, #0x10] + add r1, r7, #0 + bl MOD16_021ECA74 + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021EC7CC: .word 0x00001BB4 +_021EC7D0: .word 0x00001748 + thumb_func_end MOD16_021EC700 + + thumb_func_start MOD16_021EC7D4 +MOD16_021EC7D4: ; 0x021EC7D4 + ldr r3, _021EC7DC ; =0x0201FFC9 + ldr r0, [r0, #0x10] + bx r3 + nop +_021EC7DC: .word 0x0201FFC9 + thumb_func_end MOD16_021EC7D4 + + thumb_func_start MOD16_021EC7E0 +MOD16_021EC7E0: ; 0x021EC7E0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC7E0 + + thumb_func_start MOD16_021EC7E4 +MOD16_021EC7E4: ; 0x021EC7E4 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC7E4 + + thumb_func_start MOD16_021EC7E8 +MOD16_021EC7E8: ; 0x021EC7E8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x20 + add r6, r1, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021EC890 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #0x2b + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0 + mov r3, #1 + add r1, r4, #0 + add r2, r0, #0 + lsl r3, r3, #8 + bl FUN_02002F40 + add r3, r0, #0 + mov r0, #0x18 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC894 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #9 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC894 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x20 + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #9 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC894 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x98 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021EC890: .word 0x00000266 +_021EC894: .word 0x00020100 + thumb_func_end MOD16_021EC7E8 + + thumb_func_start MOD16_021EC898 +MOD16_021EC898: ; 0x021EC898 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x20 + add r1, r7, #0 + bl FUN_020219F4 + mov r2, #0x9b + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + add r3, r7, #0 + bl FUN_0200A86C + str r0, [sp, #0x10] + ldr r0, [r6, #4] + bl MOD16_021D9DE8 + add r1, r7, #0 + str r0, [sp, #0x14] + bl FUN_0200AA50 + str r0, [sp, #0x18] + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC9A8 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + ldr r2, [sp, #0x18] + add r0, r0, #4 + mov r3, #0x1a + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x6e + sub r3, r1, r0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC9A8 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + ldr r2, _021EC9AC ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r7, #0 + bl FUN_0200A86C + add r7, r0, #0 + ldr r0, [r6, #4] + bl MOD16_021D9F40 + add r2, r0, #0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC9A8 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + mov r3, #0x92 + add r0, r0, #4 + bl FUN_0201BDE0 + ldr r0, [r6, #4] + bl MOD16_021D9F4C + cmp r0, #0 + bne _021EC966 + add r0, r7, #0 + mov r1, #0x5f + add r2, r4, #0 + bl FUN_0200A8E0 + b _021EC970 +_021EC966: + add r0, r7, #0 + mov r1, #0x60 + add r2, r4, #0 + bl FUN_0200A8E0 +_021EC970: + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xe6 + sub r3, r1, r0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC9A8 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021EC9A8: .word 0x00020100 +_021EC9AC: .word 0x00000266 + thumb_func_end MOD16_021EC898 + + thumb_func_start MOD16_021EC9B0 +MOD16_021EC9B0: ; 0x021EC9B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r1, [r4, #4] + ldr r0, _021ECA28 ; =0x00001748 + ldr r0, [r1, r0] + add r1, r7, #0 + bl FUN_02087BB8 + str r0, [sp, #8] + ldr r1, [r4, #4] + ldr r0, _021ECA28 ; =0x00001748 + ldr r0, [r1, r0] + add r1, r7, #0 + bl FUN_02087BF8 + str r0, [sp, #0xc] + mov r0, #0x58 + str r0, [sp] + ldr r0, [sp, #8] + add r2, r7, #0 + add r0, #0x58 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + mov r1, #0xf + mov r3, #0 + add r0, r6, #0 + add r2, r1, #0 + str r3, [sp] + bl FUN_02007E68 + ldr r1, [sp, #8] + add r0, r6, #0 + bl MOD16_021ECA64 + ldr r1, [sp, #0xc] + add r0, r6, #0 + bl MOD16_021ECA98 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021ECA28: .word 0x00001748 + thumb_func_end MOD16_021EC9B0 + + thumb_func_start MOD16_021ECA2C +MOD16_021ECA2C: ; 0x021ECA2C + push {r4, lr} + ldr r0, [r0] + bl MOD16_021D8700 + add r4, r0, #0 + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02007EEC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECA2C + + thumb_func_start MOD16_021ECA48 +MOD16_021ECA48: ; 0x021ECA48 + push {lr} + sub sp, #0xc + add r1, #0x58 + mov r2, #0x2a + lsl r1, r1, #0xc + lsl r2, r2, #0xe + str r1, [sp, #4] + add r1, sp, #0 + str r2, [sp] + bl FUN_02020044 + add sp, #0xc + pop {pc} + .align 2, 0 + thumb_func_end MOD16_021ECA48 + + thumb_func_start MOD16_021ECA64 +MOD16_021ECA64: ; 0x021ECA64 + ldr r3, _021ECA70 ; =0x02007559 + add r2, r1, #0 + mov r1, #1 + add r2, #0x58 + bx r3 + nop +_021ECA70: .word 0x02007559 + thumb_func_end MOD16_021ECA64 + + thumb_func_start MOD16_021ECA74 +MOD16_021ECA74: ; 0x021ECA74 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #1 + lsl r0, r0, #0x14 + lsl r1, r1, #0xc + blx FX_Div + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + mov r2, #2 + bl FUN_02020074 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECA74 + + thumb_func_start MOD16_021ECA98 +MOD16_021ECA98: ; 0x021ECA98 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #1 + lsl r0, r0, #0x14 + lsl r1, r1, #0xc + blx FX_Div + asr r2, r0, #0x1f + lsl r3, r2, #0x14 + lsr r1, r0, #0xc + lsl r2, r0, #0x14 + mov r0, #2 + orr r3, r1 + mov r1, #0 + lsl r0, r0, #0xa + add r2, r2, r0 + adc r3, r1 + lsl r0, r3, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + lsl r0, r1, #4 + asr r5, r0, #0x10 + add r0, r4, #0 + mov r1, #0xc + add r2, r5, #0 + bl FUN_02007558 + add r0, r4, #0 + mov r1, #0xd + add r2, r5, #0 + bl FUN_02007558 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ECA98 + + thumb_func_start MOD16_021ECADC +MOD16_021ECADC: ; 0x021ECADC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021ECB54 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021ECB98 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021ECBC0 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021ECC50 + str r0, [r5, #0x24] + ldr r0, _021ECB24 ; =MOD16_021ECC54 + str r0, [r5, #8] + ldr r0, _021ECB28 ; =MOD16_021ECCA0 + str r0, [r5, #0xc] + ldr r0, _021ECB2C ; =MOD16_021ECCF4 + str r0, [r5, #0x10] + ldr r0, _021ECB30 ; =MOD16_021ECD08 + str r0, [r5, #0x14] + ldr r0, _021ECB34 ; =MOD16_021ECD90 + str r0, [r5, #0x18] + ldr r0, _021ECB38 ; =MOD16_021ECDC0 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021ECB24: .word MOD16_021ECC54 +_021ECB28: .word MOD16_021ECCA0 +_021ECB2C: .word MOD16_021ECCF4 +_021ECB30: .word MOD16_021ECD08 +_021ECB34: .word MOD16_021ECD90 +_021ECB38: .word MOD16_021ECDC0 + thumb_func_end MOD16_021ECADC + + thumb_func_start MOD16_021ECB3C +MOD16_021ECB3C: ; 0x021ECB3C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021ECC08 + ldr r0, [r4, #4] + bl MOD16_021ECC1C + ldr r0, [r4, #0x20] + bl MOD16_021ECC30 + pop {r4, pc} + thumb_func_end MOD16_021ECB3C + + thumb_func_start MOD16_021ECB54 +MOD16_021ECB54: ; 0x021ECB54 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021ECB66 + bl ErrorHandling +_021ECB66: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021ECB6C: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021ECB6C + add r0, r5, #0 + bl MOD16_021D7AEC + str r0, [r4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ECB54 + + thumb_func_start MOD16_021ECB98 +MOD16_021ECB98: ; 0x021ECB98 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021ECBAA + bl ErrorHandling +_021ECBAA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021ECB98 + + thumb_func_start MOD16_021ECBC0 +MOD16_021ECBC0: ; 0x021ECBC0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021ECC50 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021ECBE0 + bl ErrorHandling +_021ECBE0: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + blx Call_FillMemWithValue + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD16_021DB000 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x14 + add r2, r6, #0 + mov r3, #2 + bl MOD16_021DB058 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ECBC0 + + thumb_func_start MOD16_021ECC08 +MOD16_021ECC08: ; 0x021ECC08 + push {r4, lr} + add r4, r0, #0 + bne _021ECC12 + bl ErrorHandling +_021ECC12: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECC08 + + thumb_func_start MOD16_021ECC1C +MOD16_021ECC1C: ; 0x021ECC1C + push {r4, lr} + add r4, r0, #0 + bne _021ECC26 + bl ErrorHandling +_021ECC26: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECC1C + + thumb_func_start MOD16_021ECC30 +MOD16_021ECC30: ; 0x021ECC30 + push {r4, lr} + add r4, r0, #0 + bne _021ECC3A + bl ErrorHandling +_021ECC3A: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x14 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021ECC30 + + thumb_func_start MOD16_021ECC50 +MOD16_021ECC50: ; 0x021ECC50 + mov r0, #2 + bx lr + thumb_func_end MOD16_021ECC50 + + thumb_func_start MOD16_021ECC54 +MOD16_021ECC54: ; 0x021ECC54 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r6, r0, #0 + add r2, r6, #0 + mov r1, #0x18 + mov r0, #0 +_021ECC6A: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021ECC6A + mov r1, #0 + add r2, r6, #0 + mov r0, #4 +_021ECC78: + add r1, r1, #1 + str r0, [r2, #0x10] + add r2, r2, #4 + cmp r1, #2 + blt _021ECC78 + mov r0, #0 + str r0, [r4, #4] + ldr r2, [r5, #4] + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021ECF40 + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021ECFA4 + str r6, [r5, #8] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021ECC54 + + thumb_func_start MOD16_021ECCA0 +MOD16_021ECCA0: ; 0x021ECCA0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021ECCB0 + mov r0, #1 + pop {r3, r4, r5, pc} +_021ECCB0: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021ECCBA + mov r0, #0 + pop {r3, r4, r5, pc} +_021ECCBA: + ldr r0, [r5, #0xc] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021ECCEE + add r0, r4, #0 + bl MOD16_021ECF94 + ldr r0, [r5, #0xc] + bl MOD16_021E95C8 + cmp r0, #0 + beq _021ECCE6 + ldr r0, [r5, #8] + bl MOD16_021D9FB8 + cmp r0, #0 + beq _021ECCE6 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021ED4C8 +_021ECCE6: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021ECFA4 +_021ECCEE: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ECCA0 + + thumb_func_start MOD16_021ECCF4 +MOD16_021ECCF4: ; 0x021ECCF4 + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021ECFD4 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021ECCF4 + + thumb_func_start MOD16_021ECD08 +MOD16_021ECD08: ; 0x021ECD08 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021ECD8C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021ECD24: ; jump table + .short _021ECD2C - _021ECD24 - 2 ; case 0 + .short _021ECD46 - _021ECD24 - 2 ; case 1 + .short _021ECD64 - _021ECD24 - 2 ; case 2 + .short _021ECD7A - _021ECD24 - 2 ; case 3 +_021ECD2C: + ldr r0, [r4, #4] + mov r1, #0x40 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x40 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECD8C +_021ECD46: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021ED044 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021ECE98 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECD8C +_021ECD64: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021ECF04 + cmp r0, #0 + beq _021ECD8C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECD8C +_021ECD7A: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021ECD8C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ECD08 + + thumb_func_start MOD16_021ECD90 +MOD16_021ECD90: ; 0x021ECD90 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r3, #8] + add r4, r2, #0 + str r0, [sp] + add r5, r1, #0 + ldr r0, [r4, #0xc] + ldr r7, [r5, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021ECDBC + ldr r2, [sp] + ldr r3, [r5, #4] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021ED46C + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021ED50C +_021ECDBC: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ECD90 + + thumb_func_start MOD16_021ECDC0 +MOD16_021ECDC0: ; 0x021ECDC0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #4 + bhi _021ECE42 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021ECDDC: ; jump table + .short _021ECDE6 - _021ECDDC - 2 ; case 0 + .short _021ECE08 - _021ECDDC - 2 ; case 1 + .short _021ECE1E - _021ECDDC - 2 ; case 2 + .short _021ECE30 - _021ECDDC - 2 ; case 3 + .short _021ECE3E - _021ECDDC - 2 ; case 4 +_021ECDE6: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021ECE98 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECE42 +_021ECE08: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021ECF04 + cmp r0, #0 + beq _021ECE42 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECE42 +_021ECE1E: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021ED074 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECE42 +_021ECE30: + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECE42 +_021ECE3E: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021ECE42: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021ECDC0 + + thumb_func_start MOD16_021ECE48 +MOD16_021ECE48: ; 0x021ECE48 + push {r3, r4, r5, r6, r7, lr} + mov r6, #1 + add r5, r0, #0 + mov r4, #0 + add r7, r6, #0 +_021ECE52: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #8] + add r1, r7, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ECE52 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021ECE48 + + thumb_func_start MOD16_021ECE70 +MOD16_021ECE70: ; 0x021ECE70 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 + add r7, r4, #0 +_021ECE7A: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #8] + add r1, r7, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ECE7A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021ECE70 + + thumb_func_start MOD16_021ECE98 +MOD16_021ECE98: ; 0x021ECE98 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021ECE48 + ldr r0, [r4, #0xc] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021ECF00 + cmp r6, #0 + beq _021ECEDC + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r2, [r5] + lsl r0, r0, #4 + add r0, r2, r0 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021ECEDC: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r3, [r5] + lsl r0, r0, #4 + add r0, r3, r0 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021ECF00: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021ECE98 + + thumb_func_start MOD16_021ECF04 +MOD16_021ECF04: ; 0x021ECF04 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #0xc] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021ECF24 + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021ECF2A +_021ECF24: + mov r0, #2 + bl FUN_0200A344 +_021ECF2A: + cmp r0, #0 + beq _021ECF3C + cmp r4, #0 + beq _021ECF38 + add r0, r6, #0 + bl MOD16_021ECE70 +_021ECF38: + mov r0, #1 + pop {r4, r5, r6, pc} +_021ECF3C: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021ECF04 + + thumb_func_start MOD16_021ECF40 +MOD16_021ECF40: ; 0x021ECF40 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #8 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #0x80 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x40 + mov r2, #0xb0 + mov r3, #8 + bl MOD16_021D7C98 + mov r0, #0xf8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x40 + add r0, r0, #4 + mov r2, #0xb0 + mov r3, #0x80 + bl MOD16_021D7C98 + str r4, [r5, #8] + str r5, [r5, #0xc] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021ECF90 ; =MOD16_021ECFEC + mov r1, #2 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021ECF90: .word MOD16_021ECFEC + thumb_func_end MOD16_021ECF40 + + thumb_func_start MOD16_021ECF94 +MOD16_021ECF94: ; 0x021ECF94 + mov r2, #0 + mov r1, #3 +_021ECF98: + add r2, r2, #1 + str r1, [r0, #0x10] + add r0, r0, #4 + cmp r2, #2 + blt _021ECF98 + bx lr + thumb_func_end MOD16_021ECF94 + + thumb_func_start MOD16_021ECFA4 +MOD16_021ECFA4: ; 0x021ECFA4 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + bl FUN_02022144 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021ECFBC + cmp r0, #1 + beq _021ECFC8 + pop {r3, r4, r5, pc} +_021ECFBC: + ldr r0, [r4, #0x10] + cmp r0, #2 + beq _021ECFD2 + mov r0, #1 + str r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_021ECFC8: + ldr r0, [r4, #0x14] + cmp r0, #2 + beq _021ECFD2 + mov r0, #1 + str r0, [r4, #0x14] +_021ECFD2: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021ECFA4 + + thumb_func_start MOD16_021ECFD4 +MOD16_021ECFD4: ; 0x021ECFD4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECFD4 + + thumb_func_start MOD16_021ECFEC +MOD16_021ECFEC: ; 0x021ECFEC + push {r4, lr} + ldr r3, [r2, #4] + ldr r4, [r2] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x10] + cmp r1, #2 + bne _021ED03C + cmp r0, #0 + beq _021ED006 + cmp r0, #1 + beq _021ED022 + pop {r4, pc} +_021ED006: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021ED03C + ldr r0, _021ED040 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0 + str r0, [r4, #4] + ldr r2, [r4] + mov r0, #1 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + pop {r4, pc} +_021ED022: + ldr r0, [r4, #4] + cmp r0, #1 + beq _021ED03C + ldr r0, _021ED040 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + str r0, [r4, #4] + ldr r2, [r4] + mov r0, #2 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] +_021ED03C: + pop {r4, pc} + nop +_021ED040: .word 0x000005DD + thumb_func_end MOD16_021ECFEC + + thumb_func_start MOD16_021ED044 +MOD16_021ED044: ; 0x021ED044 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021ED0D0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021ED138 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021ED1EC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021ED2B4 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021ED044 + + thumb_func_start MOD16_021ED074 +MOD16_021ED074: ; 0x021ED074 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x20 + add r6, r2, #0 + str r0, [sp] + add r4, r1, #0 + str r6, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0x80 + bl MOD16_021D8CFC + mov r0, #0x20 + str r0, [sp] + str r6, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0xa0 + bl MOD16_021D8CFC + add r0, r5, #0 + bl MOD16_021ED29C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021ED398 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021ED1B8 + mov r4, #0 +_021ED0BA: + ldr r0, [r5, #0x38] + cmp r0, #0 + beq _021ED0C4 + bl FUN_02016A18 +_021ED0C4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ED0BA + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021ED074 + + thumb_func_start MOD16_021ED0D0 +MOD16_021ED0D0: ; 0x021ED0D0 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x3d + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED0D0 + + thumb_func_start MOD16_021ED138 +MOD16_021ED138: ; 0x021ED138 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021ED1AC ; =0x0000238E + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x66 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x10] + bl FUN_02009B04 + ldr r0, [r5, #0x10] + bl FUN_02009474 + ldr r0, _021ED1B0 ; =0x0000238C + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x64 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x18] + ldr r0, _021ED1B4 ; =0x0000238D + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x65 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x1c] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021ED1AC: .word 0x0000238E +_021ED1B0: .word 0x0000238C +_021ED1B4: .word 0x0000238D + thumb_func_end MOD16_021ED138 + + thumb_func_start MOD16_021ED1B8 +MOD16_021ED1B8: ; 0x021ED1B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED1B8 + + thumb_func_start MOD16_021ED1EC +MOD16_021ED1EC: ; 0x021ED1EC + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021ED294 ; =0x0000238D + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, _021ED298 ; =0x0000083F + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1e + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #0x11 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + mov r1, #1 + str r0, [r5] + bl FUN_02020130 + mov r0, #0x2f + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #0x1e + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #1 + str r0, [r5, #4] + bl FUN_02020130 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021ED294: .word 0x0000238D +_021ED298: .word 0x0000083F + thumb_func_end MOD16_021ED1EC + + thumb_func_start MOD16_021ED29C +MOD16_021ED29C: ; 0x021ED29C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021ED2A2: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ED2A2 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED29C + + thumb_func_start MOD16_021ED2B4 +MOD16_021ED2B4: ; 0x021ED2B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5] + add r6, r2, #0 + ldr r4, [r1] + cmp r0, #0 + bne _021ED2C8 + bl ErrorHandling +_021ED2C8: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021ED390 ; =0x0000083F + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #8] + mov r1, #0 + bl FUN_02009E54 + mov r1, #7 + mvn r1, r1 + str r1, [sp, #0x1c] + mov r1, #2 + mov r2, #0 + str r0, [sp, #0x10] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + str r1, [sp, #0x28] + str r6, [sp, #0x2c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xc + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021ED394 ; =0x00000266 + add r1, r6, #0 + mov r3, #0x2d + bl MOD16_021DB3C8 + lsr r0, r0, #1 + neg r0, r0 + str r6, [sp, #0xc] + str r0, [sp, #0x18] + ldr r0, [r5] + str r0, [sp, #0x14] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #8] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xc + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021ED394 ; =0x00000266 + add r1, r6, #0 + mov r3, #0x2e + bl MOD16_021DB3C8 + lsr r0, r0, #1 + neg r0, r0 + str r6, [sp, #0xc] + str r0, [sp, #0x18] + ldr r0, [r5, #4] + str r0, [sp, #0x14] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0xc] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021ED390: .word 0x0000083F +_021ED394: .word 0x00000266 + thumb_func_end MOD16_021ED2B4 + + thumb_func_start MOD16_021ED398 +MOD16_021ED398: ; 0x021ED398 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021ED39E: + ldr r0, [r5, #8] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ED39E + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED398 + + thumb_func_start MOD16_021ED3B0 +MOD16_021ED3B0: ; 0x021ED3B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + add r1, r3, #0 + str r2, [sp, #0xc] + ldr r4, [sp, #0x30] + ldr r6, [sp, #0x40] + mov r5, #0 + bl MOD16_021D7B98 + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0xc] + str r0, [sp] + ldr r0, [sp, #8] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x38] + bl MOD16_021ED45C + ldr r0, [sp, #8] + bl FUN_0202022C + cmp r0, #3 + bhi _021ED422 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021ED3EE: ; jump table + .short _021ED3F6 - _021ED3EE - 2 ; case 0 + .short _021ED3F6 - _021ED3EE - 2 ; case 1 + .short _021ED406 - _021ED3EE - 2 ; case 2 + .short _021ED414 - _021ED3EE - 2 ; case 3 +_021ED3F6: + ldr r0, [r4] + cmp r0, #0 + beq _021ED422 + mov r0, #0 + mov r5, #1 + mov r7, #9 + str r0, [r4] + b _021ED422 +_021ED406: + ldr r0, [r4] + cmp r0, #1 + beq _021ED422 + mov r5, #1 + mov r7, #0xa + str r5, [r4] + b _021ED422 +_021ED414: + ldr r0, [r4] + cmp r0, #2 + beq _021ED422 + mov r0, #2 + mov r5, #1 + mov r7, #8 + str r0, [r4] +_021ED422: + cmp r5, #0 + beq _021ED458 + ldr r0, [r6] + cmp r0, #0 + beq _021ED430 + bl FUN_02016A18 +_021ED430: + ldr r0, [sp, #4] + ldr r3, [sp, #0x34] + ldr r0, [r0] + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD16_021D8D70 + str r0, [r6] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x2c] + ldr r2, [r2, #0xc] + mov r0, #0x1f + lsl r1, r1, #5 + mov r3, #0x20 + bl FUN_0201C2C8 + cmp r0, #0 + bne _021ED458 + bl ErrorHandling +_021ED458: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ED3B0 + + thumb_func_start MOD16_021ED45C +MOD16_021ED45C: ; 0x021ED45C + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + bl MOD16_021D7C70 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021ED45C + + thumb_func_start MOD16_021ED46C +MOD16_021ED46C: ; 0x021ED46C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + add r6, r5, #0 + add r4, r5, #0 + str r1, [sp, #0x1c] + str r2, [sp, #0x20] + str r3, [sp, #0x24] + mov r7, #0 + add r6, #0x38 + add r4, #0x30 +_021ED482: + cmp r7, #0 + bne _021ED48A + mov r1, #4 + b _021ED48C +_021ED48A: + mov r1, #5 +_021ED48C: + mov r0, #7 + mvn r0, r0 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [sp, #0x24] + str r4, [sp, #8] + str r0, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + str r6, [sp, #0x18] + ldr r3, [sp, #0x20] + ldr r0, [sp, #0x1c] + ldr r1, [r5] + ldr r2, [r5, #8] + ldr r3, [r3, #0x10] + bl MOD16_021ED3B0 + ldr r0, [sp, #0x20] + add r7, r7, #1 + add r0, r0, #4 + add r6, r6, #4 + add r4, r4, #4 + add r5, r5, #4 + str r0, [sp, #0x20] + cmp r7, #2 + blt _021ED482 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ED46C + + thumb_func_start MOD16_021ED4C8 +MOD16_021ED4C8: ; 0x021ED4C8 + push {r3, lr} + ldr r2, _021ED504 ; =0x021C48B8 + ldr r3, [r2, #0x48] + mov r2, #1 + tst r3, r2 + beq _021ED500 + ldr r3, [r1, #4] + cmp r3, #1 + bne _021ED4EC + mov r3, #0 + str r3, [r1, #4] + ldr r3, [r1] + ldr r1, [r3] + orr r1, r2 + str r1, [r3] + mov r1, #2 + str r1, [r0, #0x10] + b _021ED4FA +_021ED4EC: + str r2, [r1, #4] + ldr r3, [r1] + mov r1, #2 + ldr r2, [r3] + orr r2, r1 + str r2, [r3] + str r1, [r0, #0x14] +_021ED4FA: + ldr r0, _021ED508 ; =0x000005DD + bl FUN_020054C8 +_021ED500: + pop {r3, pc} + nop +_021ED504: .word 0x021C48B8 +_021ED508: .word 0x000005DD + thumb_func_end MOD16_021ED4C8 + + thumb_func_start MOD16_021ED50C +MOD16_021ED50C: ; 0x021ED50C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl MOD16_021E95C8 + cmp r0, #1 + bne _021ED544 + ldr r0, [r5, #4] + cmp r0, #0 + bne _021ED534 + mov r0, #0x60 + str r0, [sp] + add r0, r4, #0 + mov r1, #0xbc + mov r2, #0x78 + mov r3, #0x68 + bl MOD16_021ED548 + pop {r3, r4, r5, pc} +_021ED534: + mov r0, #0x60 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x44 + mov r2, #0x78 + mov r3, #0x68 + bl MOD16_021ED548 +_021ED544: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED50C + + thumb_func_start MOD16_021ED548 +MOD16_021ED548: ; 0x021ED548 + push {r3, r4, lr} + sub sp, #4 + thumb_func_end MOD16_021ED548 + + thumb_func_start MOD16_021ED54C +MOD16_021ED54C: ; 0x021ED54C + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r0, [r0] + bl MOD16_021D8B04 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED54C + + thumb_func_start MOD16_021ED55C +MOD16_021ED55C: ; 0x021ED55C + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021ED5C8 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021ED604 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021ED67C + str r0, [r5, #0x24] + ldr r0, _021ED59C ; =MOD16_021ED680 + str r0, [r5, #8] + ldr r0, _021ED5A0 ; =MOD16_021ED6EC + str r0, [r5, #0xc] + ldr r0, _021ED5A4 ; =MOD16_021ED6FC + str r0, [r5, #0x10] + ldr r0, _021ED5A8 ; =MOD16_021ED710 + str r0, [r5, #0x14] + ldr r0, _021ED5AC ; =MOD16_021ED7B4 + str r0, [r5, #0x18] + ldr r0, _021ED5B0 ; =MOD16_021ED874 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021ED59C: .word MOD16_021ED680 +_021ED5A0: .word MOD16_021ED6EC +_021ED5A4: .word MOD16_021ED6FC +_021ED5A8: .word MOD16_021ED710 +_021ED5AC: .word MOD16_021ED7B4 +_021ED5B0: .word MOD16_021ED874 + thumb_func_end MOD16_021ED55C + + thumb_func_start MOD16_021ED5B4 +MOD16_021ED5B4: ; 0x021ED5B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021ED648 + ldr r0, [r4, #4] + bl MOD16_021ED65C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED5B4 + + thumb_func_start MOD16_021ED5C8 +MOD16_021ED5C8: ; 0x021ED5C8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + bne _021ED5DA + bl ErrorHandling +_021ED5DA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED5C8 + + thumb_func_start MOD16_021ED604 +MOD16_021ED604: ; 0x021ED604 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x20 + add r5, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021ED618 + bl ErrorHandling +_021ED618: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x20 + blx Call_FillMemWithValue + add r0, r6, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EE090 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EE110 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02013EB0 + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021ED604 + + thumb_func_start MOD16_021ED648 +MOD16_021ED648: ; 0x021ED648 + push {r4, lr} + add r4, r0, #0 + bne _021ED652 + bl ErrorHandling +_021ED652: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED648 + + thumb_func_start MOD16_021ED65C +MOD16_021ED65C: ; 0x021ED65C + push {r4, lr} + add r4, r0, #0 + bne _021ED666 + bl ErrorHandling +_021ED666: + add r0, r4, #0 + bl MOD16_021EE0F0 + add r0, r4, #0 + bl MOD16_021EE14C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED65C + + thumb_func_start MOD16_021ED67C +MOD16_021ED67C: ; 0x021ED67C + mov r0, #0 + bx lr + thumb_func_end MOD16_021ED67C + + thumb_func_start MOD16_021ED680 +MOD16_021ED680: ; 0x021ED680 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #4] + add r5, r1, #0 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + bne _021ED696 + bl ErrorHandling +_021ED696: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + str r4, [r6, #8] + ldr r0, [r5] + bl MOD16_021D9DE8 + add r1, r0, #0 + ldr r2, [r5] + ldr r0, _021ED6E8 ; =0x00001748 + ldr r0, [r2, r0] + bl FUN_02087B78 + add r6, r0, #0 + ldr r0, [r5] + bl MOD16_021D9F4C + cmp r0, #0 + bne _021ED6CC + mov r0, #0x5f + b _021ED6CE +_021ED6CC: + mov r0, #0x55 +_021ED6CE: + lsl r0, r0, #2 + cmp r6, r0 + blt _021ED6DC + sub r0, r6, r0 + str r0, [r4] + mov r0, #1 + b _021ED6E2 +_021ED6DC: + sub r0, r0, r6 + str r0, [r4] + mov r0, #0 +_021ED6E2: + str r0, [r4, #4] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_021ED6E8: .word 0x00001748 + thumb_func_end MOD16_021ED680 + + thumb_func_start MOD16_021ED6EC +MOD16_021ED6EC: ; 0x021ED6EC + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _021ED6F6 + mov r0, #1 + bx lr +_021ED6F6: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021ED6EC + + thumb_func_start MOD16_021ED6FC +MOD16_021ED6FC: ; 0x021ED6FC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED6FC + + thumb_func_start MOD16_021ED710 +MOD16_021ED710: ; 0x021ED710 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4] + str r2, [sp, #4] + ldr r6, [r3, #8] + ldr r5, [r4, #8] + cmp r0, #3 + bhi _021ED7A8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021ED730: ; jump table + .short _021ED738 - _021ED730 - 2 ; case 0 + .short _021ED75A - _021ED730 - 2 ; case 1 + .short _021ED77C - _021ED730 - 2 ; case 2 + .short _021ED792 - _021ED730 - 2 ; case 3 +_021ED738: + ldr r0, [r4, #4] + mov r1, #0xc4 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0xc4 + blx Call_FillMemWithValue + ldr r0, [r4, #8] + mov r1, #1 + add r0, #0xb8 + str r1, [r0] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED7A8 +_021ED75A: + ldr r0, [r4, #4] + add r1, r7, #0 + str r0, [sp] + add r0, r5, #0 + add r3, r6, #0 + bl MOD16_021ED9E0 + ldr r2, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + mov r3, #1 + bl MOD16_021ED8FC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED7A8 +_021ED77C: + add r0, r5, #0 + add r1, r7, #0 + mov r3, #1 + bl MOD16_021ED984 + cmp r0, #0 + beq _021ED7A8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED7A8 +_021ED792: + ldr r0, _021ED7B0 ; =0x021FF60C + ldr r2, [r6] + mov r1, #0x11 + bl MOD16_021EE5A8 + str r0, [r5, #0x34] + ldr r0, [r6, #4] + add sp, #8 + str r0, [r5, #0x38] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021ED7A8: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021ED7B0: .word 0x021FF60C + thumb_func_end MOD16_021ED710 + + thumb_func_start MOD16_021ED7B4 +MOD16_021ED7B4: ; 0x021ED7B4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r1, #7 + bhi _021ED86C + add r3, r1, r1 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_021ED7D0: ; jump table + .short _021ED7E0 - _021ED7D0 - 2 ; case 0 + .short _021ED7FA - _021ED7D0 - 2 ; case 1 + .short _021ED80A - _021ED7D0 - 2 ; case 2 + .short _021ED818 - _021ED7D0 - 2 ; case 3 + .short _021ED830 - _021ED7D0 - 2 ; case 4 + .short _021ED83E - _021ED7D0 - 2 ; case 5 + .short _021ED860 - _021ED7D0 - 2 ; case 6 + .short _021ED86C - _021ED7D0 - 2 ; case 7 +_021ED7E0: + add r1, r0, #0 + mov r2, #1 + add r1, #0xb8 + str r2, [r1] + ldr r0, [r0, #0x34] + ldr r0, [r0, #4] + cmp r0, #0 + beq _021ED7F4 + str r2, [r4] + b _021ED86C +_021ED7F4: + mov r0, #3 + str r0, [r4] + b _021ED86C +_021ED7FA: + add r1, r2, #0 + ldr r2, [r0, #0x38] + bl MOD16_021EE158 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED86C +_021ED80A: + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #1 + bne _021ED86C + add r0, r1, #1 + str r0, [r4] + b _021ED86C +_021ED818: + ldr r3, [r0, #0x34] + ldr r1, [r0, #0x38] + str r1, [sp] + add r1, r2, #0 + ldrh r2, [r3, #8] + ldrh r3, [r3, #0xa] + bl MOD16_021EE358 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED86C +_021ED830: + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #1 + bne _021ED86C + add r0, r1, #1 + str r0, [r4] + b _021ED86C +_021ED83E: + ldr r2, [r0, #0x34] + ldr r1, [r2, #0xc] + cmp r1, #0 + beq _021ED85A + ldr r1, [r2, #0x10] + ldr r2, [r0, #0x38] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + bl MOD16_021EE428 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED86C +_021ED85A: + mov r0, #7 + str r0, [r4] + b _021ED86C +_021ED860: + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #1 + bne _021ED86C + add r0, r1, #1 + str r0, [r4] +_021ED86C: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED7B4 + + thumb_func_start MOD16_021ED874 +MOD16_021ED874: ; 0x021ED874 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021ED8F0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021ED88E: ; jump table + .short _021ED898 - _021ED88E - 2 ; case 0 + .short _021ED8A8 - _021ED88E - 2 ; case 1 + .short _021ED8BC - _021ED88E - 2 ; case 2 + .short _021ED8CA - _021ED88E - 2 ; case 3 + .short _021ED8EC - _021ED88E - 2 ; case 4 +_021ED898: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021ED8FC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED8F0 +_021ED8A8: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021ED984 + cmp r0, #0 + beq _021ED8F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED8F0 +_021ED8BC: + add r1, r3, #0 + bl MOD16_021EDA3C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED8F0 +_021ED8CA: + add r1, r0, #0 + add r1, #0xb8 + ldr r1, [r1] + cmp r1, #0 + bne _021ED8DA + ldr r0, [r0, #0x3c] + bl FUN_0200CAB4 +_021ED8DA: + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED8F0 +_021ED8EC: + mov r0, #1 + pop {r4, pc} +_021ED8F0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021ED874 + + thumb_func_start MOD16_021ED8F4 +MOD16_021ED8F4: ; 0x021ED8F4 + bx lr + .align 2, 0 + thumb_func_end MOD16_021ED8F4 + + thumb_func_start MOD16_021ED8F8 +MOD16_021ED8F8: ; 0x021ED8F8 + bx lr + .align 2, 0 + thumb_func_end MOD16_021ED8F8 + + thumb_func_start MOD16_021ED8FC +MOD16_021ED8FC: ; 0x021ED8FC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r2, #0 + add r7, r0, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021ED8F4 + ldr r0, [r4, #4] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021ED97E + cmp r6, #0 + beq _021ED95C + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A48 + add r1, r0, #0 + neg r1, r1 + lsl r1, r1, #0x18 + add r0, r7, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl MOD16_021EE5D0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021ED95C: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021ED97E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021ED8FC + + thumb_func_start MOD16_021ED984 +MOD16_021ED984: ; 0x021ED984 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r2, #4] + add r4, r1, #0 + add r6, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021ED9A4 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021ED9AE +_021ED9A4: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021ED9AE: + cmp r0, #0 + beq _021ED9C0 + cmp r6, #0 + beq _021ED9BC + add r0, r5, #0 + bl MOD16_021ED8F8 +_021ED9BC: + mov r0, #1 + pop {r4, r5, r6, pc} +_021ED9C0: + mov r0, #0x5b + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A48 + add r1, r0, #0 + neg r1, r1 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl MOD16_021EE5D0 + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021ED984 + + thumb_func_start MOD16_021ED9E0 +MOD16_021ED9E0: ; 0x021ED9E0 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r7, r2, #0 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EDA7C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EDEC8 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EDF78 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EDAE4 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EDD04 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EDEC0 + ldr r0, [r5, #0xc] + mov r1, #0 + bl FUN_02013F2C + ldr r0, [r5, #0xc] + mov r1, #1 + bl FUN_02013EB0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ED9E0 + + thumb_func_start MOD16_021EDA3C +MOD16_021EDA3C: ; 0x021EDA3C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EDEC4 + add r0, r5, #0 + bl MOD16_021EDE9C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EDC70 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02013EB0 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02013F2C + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EDA3C + + thumb_func_start MOD16_021EDA7C +MOD16_021EDA7C: ; 0x021EDA7C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r2, #0 + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x49 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EDA7C + + thumb_func_start MOD16_021EDAE4 +MOD16_021EDAE4: ; 0x021EDAE4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + add r0, r2, #0 + add r7, r1, #0 + ldr r0, [r0] + str r2, [sp, #0x10] + add r4, r3, #0 + ldr r6, [r7] + bl MOD16_021D9DE8 + str r0, [sp, #0x1c] + ldr r0, [r7] + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x1c] + ldr r0, [r0] + bl MOD16_021D9964 + add r2, r0, #0 + ldr r0, [sp, #0x1c] + mov r1, #0 + bl FUN_0206B6D4 + str r0, [sp, #0x20] + bl FUN_0206B888 + str r0, [sp, #0x24] + bl FUN_0206B88C + str r0, [sp, #0x18] + bl FUN_0206B898 + str r0, [sp, #0x14] + mov r0, #0x7d + lsl r0, r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + ldr r2, [sp, #0x20] + mov r1, #0x13 + mov r3, #0 + bl FUN_02008F34 + str r0, [r5, #0x14] + bl FUN_02009B78 + ldr r0, [r5, #0x14] + bl FUN_02009474 + mov r0, #0x7d + lsl r0, r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [sp, #0x24] + mov r1, #0x13 + mov r3, #0 + bl FUN_02008FEC + str r0, [r5, #0x18] + bl FUN_02009D68 + cmp r0, #0 + bne _021EDB82 + bl ErrorHandling +_021EDB82: + add r0, r4, #0 + mov r1, #0x60 + bl FUN_02016998 + add r1, r5, #0 + add r1, #0xbc + str r0, [r1] + mov r0, #0x7d + lsl r0, r0, #6 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [sp, #0x18] + mov r1, #0x13 + mov r3, #0 + bl FUN_020090AC + str r0, [r5, #0x1c] + mov r0, #0x7d + lsl r0, r0, #6 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [sp, #0x14] + mov r1, #0x13 + mov r3, #0 + bl FUN_020090AC + str r0, [r5, #0x20] + ldr r0, _021EDC60 ; =0x00001BB5 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5d + bl FUN_020091E0 + str r0, [r5, #0x24] + bl FUN_02009B04 + ldr r0, [r5, #0x24] + bl FUN_02009474 + ldr r0, _021EDC64 ; =0x00001B66 + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xe + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x28] + bl FUN_02009D68 + add r0, r4, #0 + mov r1, #0xa0 + bl FUN_02016998 + add r1, r5, #0 + add r1, #0xc0 + str r0, [r1] + ldr r0, _021EDC68 ; =0x00001BB3 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5b + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x2c] + ldr r0, _021EDC6C ; =0x00001BB4 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5c + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x30] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EDC60: .word 0x00001BB5 +_021EDC64: .word 0x00001B66 +_021EDC68: .word 0x00001BB3 +_021EDC6C: .word 0x00001BB4 + thumb_func_end MOD16_021EDAE4 + + thumb_func_start MOD16_021EDC70 +MOD16_021EDC70: ; 0x021EDC70 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x14] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x18] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x20] + bl FUN_02009490 + ldr r0, [r5, #0x24] + bl FUN_02009C0C + ldr r0, [r5, #0x28] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x28] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x2c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x30] + bl FUN_02009490 + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + bl FUN_02016A18 + add r5, #0xc0 + ldr r0, [r5] + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EDC70 + + thumb_func_start MOD16_021EDD04 +MOD16_021EDD04: ; 0x021EDD04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x80 + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6] + add r7, r3, #0 + ldr r4, [r1] + bl MOD16_021D9DE8 + str r0, [sp, #0x2c] + ldr r0, [r6] + ldr r1, [sp, #0x2c] + bl MOD16_021D9964 + ldr r3, _021EDE98 ; =0x00001BB4 + str r0, [sp, #0x30] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x5c + sub r2, #0x4e + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + str r0, [sp, #0x3c] + add r0, sp, #0x5c + str r0, [sp, #0x40] + mov r0, #0x1f + str r0, [sp, #0x50] + mov r0, #0x2e + lsl r0, r0, #0xe + str r0, [sp, #0x44] + lsl r0, r1, #0x12 + str r0, [sp, #0x48] + str r1, [sp, #0x54] + str r7, [sp, #0x58] + add r0, sp, #0x3c + bl FUN_0201FF84 + str r0, [r5] + ldr r0, [r6] + bl MOD16_021D9F4C + cmp r0, #0 + ldr r0, [r5] + bne _021EDDA0 + mov r1, #3 + bl FUN_02020130 + b _021EDDA6 +_021EDDA0: + mov r1, #4 + bl FUN_02020130 +_021EDDA6: + mov r0, #2 + lsl r0, r0, #0x12 + str r0, [sp, #0x44] + mov r0, #0x6a + lsl r0, r0, #0xc + str r0, [sp, #0x48] + add r0, sp, #0x3c + bl FUN_0201FF84 + str r0, [r5, #8] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r5, #8] + mov r1, #1 + bl FUN_02020238 + mov r0, #0x2e + lsl r0, r0, #0xe + str r0, [sp, #0x44] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x48] + add r0, sp, #0x3c + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0xc] + bl FUN_02020130 + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x44] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x48] + add r0, sp, #0x3c + bl FUN_0201FF84 + str r0, [r5, #0x10] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r5, #0x14] + bl FUN_02009530 + add r6, r0, #0 + ldr r0, [r5, #0x18] + bl FUN_02009530 + str r0, [sp, #0x34] + ldr r0, [r5, #0x1c] + bl FUN_02009530 + str r0, [sp, #0x38] + ldr r0, [r5, #0x20] + bl FUN_02009530 + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + ldr r2, [r4, r0] + ldr r3, [sp, #0x38] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, [sp, #0x34] + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r0, sp, #0x5c + add r1, r6, #0 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x3c] + add r0, sp, #0x5c + str r0, [sp, #0x40] + mov r0, #0x1f + str r0, [sp, #0x50] + mov r0, #0x12 + mov r1, #1 + lsl r0, r0, #0xe + str r0, [sp, #0x44] + lsl r0, r1, #0x12 + str r0, [sp, #0x48] + str r1, [sp, #0x54] + str r7, [sp, #0x58] + add r0, sp, #0x3c + bl FUN_0201FF84 + str r0, [r5, #4] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + mov r2, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [r5, #4] + bl FUN_0202027C + add sp, #0x80 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EDE98: .word 0x00001BB4 + thumb_func_end MOD16_021EDD04 + + thumb_func_start MOD16_021EDE9C +MOD16_021EDE9C: ; 0x021EDE9C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + ldr r0, [r4, #4] + bl FUN_0201FFC8 + ldr r0, [r4, #8] + bl FUN_0201FFC8 + ldr r0, [r4, #0xc] + bl FUN_0201FFC8 + ldr r0, [r4, #0x10] + bl FUN_0201FFC8 + pop {r4, pc} + thumb_func_end MOD16_021EDE9C + + thumb_func_start MOD16_021EDEC0 +MOD16_021EDEC0: ; 0x021EDEC0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EDEC0 + + thumb_func_start MOD16_021EDEC4 +MOD16_021EDEC4: ; 0x021EDEC4 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EDEC4 + + thumb_func_start MOD16_021EDEC8 +MOD16_021EDEC8: ; 0x021EDEC8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x20 + add r6, r1, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021EDF70 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #0x2c + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0 + mov r3, #1 + add r1, r4, #0 + add r2, r0, #0 + lsl r3, r3, #8 + bl FUN_02002F40 + add r3, r0, #0 + mov r0, #0x18 + str r0, [sp] + mov r1, #0 + ldr r0, _021EDF74 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #0xa + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EDF74 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x20 + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #0xa + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EDF74 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x98 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021EDF70: .word 0x00000266 +_021EDF74: .word 0x00020100 + thumb_func_end MOD16_021EDEC8 + + thumb_func_start MOD16_021EDF78 +MOD16_021EDF78: ; 0x021EDF78 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x20 + add r1, r7, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021EE084 ; =0x0000026B + mov r0, #0 + mov r1, #0x1a + add r3, r7, #0 + bl FUN_0200A86C + str r0, [sp, #0x10] + ldr r0, [r6] + bl MOD16_021D9DE8 + add r1, r7, #0 + str r0, [sp, #0x14] + bl FUN_0200AA50 + str r0, [sp, #0x18] + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021EE088 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + ldr r2, [sp, #0x18] + add r0, r0, #4 + mov r3, #0x1a + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x6e + sub r3, r1, r0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EE088 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + ldr r2, _021EE08C ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r7, #0 + bl FUN_0200A86C + add r7, r0, #0 + ldr r0, [r6] + bl MOD16_021D9F40 + add r2, r0, #0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021EE088 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + mov r3, #0x92 + add r0, r0, #4 + bl FUN_0201BDE0 + ldr r0, [r6] + bl MOD16_021D9F4C + cmp r0, #0 + bne _021EE044 + add r0, r7, #0 + mov r1, #0x61 + add r2, r4, #0 + bl FUN_0200A8E0 + b _021EE04E +_021EE044: + add r0, r7, #0 + mov r1, #0x62 + add r2, r4, #0 + bl FUN_0200A8E0 +_021EE04E: + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xe6 + sub r3, r1, r0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EE088 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021EE084: .word 0x0000026B +_021EE088: .word 0x00020100 +_021EE08C: .word 0x00000266 + thumb_func_end MOD16_021EDF78 + + thumb_func_start MOD16_021EE090 +MOD16_021EE090: ; 0x021EE090 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r1, #0 + add r4, r0, #0 + str r5, [sp] + add r3, r4, #0 + ldr r0, [r4] + mov r1, #0x24 + mov r2, #1 + add r3, #0x18 + bl MOD16_021D8D98 + str r0, [r4, #0x10] + add r2, r4, #0 + ldr r0, [r4] + mov r1, #6 + add r2, #0x1c + add r3, r5, #0 + bl MOD16_021D8D70 + str r0, [r4, #0x14] + mov r0, #0x5a + ldr r1, [r4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + str r0, [sp, #4] + ldr r0, [r4, #0x18] + str r0, [sp, #8] + add r0, sp, #4 + bl FUN_02013D98 + str r0, [r4, #4] + mov r0, #0x5a + ldr r1, [r4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + str r0, [sp, #0xc] + ldr r0, [r4, #0x1c] + str r0, [sp, #0x10] + mov r0, #0x10 + str r0, [sp, #0x14] + add r0, sp, #0xc + bl FUN_02013E14 + str r0, [r4, #8] + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EE090 + + thumb_func_start MOD16_021EE0F0 +MOD16_021EE0F0: ; 0x021EE0F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_02013DD4 + ldr r0, [r4, #8] + bl FUN_02013E44 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EE0F0 + + thumb_func_start MOD16_021EE110 +MOD16_021EE110: ; 0x021EE110 + push {r4, lr} + sub sp, #0x20 + add r4, r0, #0 + mov r0, #0x5a + ldr r1, [r4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + str r0, [sp] + ldr r0, [r4, #4] + mov r2, #0 + str r0, [sp, #4] + ldr r0, [r4, #8] + str r0, [sp, #8] + add r0, sp, #0 + strh r1, [r0, #0xc] + mov r1, #0x58 + strh r1, [r0, #0xe] + strh r2, [r0, #0x10] + mov r1, #0x1f + str r1, [sp, #0x14] + str r2, [sp, #0x18] + strh r2, [r0, #0x1c] + add r0, sp, #0 + bl FUN_02013E84 + str r0, [r4, #0xc] + add sp, #0x20 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EE110 + + thumb_func_start MOD16_021EE14C +MOD16_021EE14C: ; 0x021EE14C + ldr r3, _021EE154 ; =0x02013EA9 + ldr r0, [r0, #0xc] + bx r3 + nop +_021EE154: .word 0x02013EA9 + thumb_func_end MOD16_021EE14C + + thumb_func_start MOD16_021EE158 +MOD16_021EE158: ; 0x021EE158 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + mov r1, #0 + str r0, [r4, #0x40] + ldr r0, [r4, #0xc] + str r0, [r4, #0x44] + ldr r0, [r4, #0x10] + str r0, [r4, #0x48] + ldr r0, [r4] + str r0, [r4, #0x4c] + ldr r0, [r4, #4] + str r0, [r4, #0x50] + add r0, r4, #0 + str r1, [r4, #0x6c] + add r0, #0xb8 + str r0, [r4, #0x70] + add r0, r4, #0 + add r0, #0xb8 + str r1, [r0] + cmp r2, #0 + bne _021EE188 + sub r0, r1, #1 + b _021EE18A +_021EE188: + mov r0, #1 +_021EE18A: + str r0, [r4, #0x54] + add r1, r4, #0 + ldr r0, _021EE19C ; =MOD16_021EE1A0 + add r1, #0x40 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #0x3c] + pop {r4, pc} + .align 2, 0 +_021EE19C: .word MOD16_021EE1A0 + thumb_func_end MOD16_021EE158 + + thumb_func_start MOD16_021EE1A0 +MOD16_021EE1A0: ; 0x021EE1A0 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0x2c] + cmp r1, #5 + bhi _021EE248 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EE1B6: ; jump table + .short _021EE1C2 - _021EE1B6 - 2 ; case 0 + .short _021EE1CA - _021EE1B6 - 2 ; case 1 + .short _021EE1D2 - _021EE1B6 - 2 ; case 2 + .short _021EE1F4 - _021EE1B6 - 2 ; case 3 + .short _021EE214 - _021EE1B6 - 2 ; case 4 + .short _021EE23E - _021EE1B6 - 2 ; case 5 +_021EE1C2: + mov r0, #2 + str r0, [r4, #0x18] + str r0, [r4, #0x2c] + pop {r4, pc} +_021EE1CA: + add r0, r4, #0 + bl MOD16_021EE254 + pop {r4, pc} +_021EE1D2: + ldr r1, [r4, #0x14] + ldr r0, _021EE24C ; =0xFFFFFDDE + mul r0, r1 + str r0, [r4, #0x24] + mov r0, #0xb5 + ldr r1, [r4, #0x14] + mvn r0, r0 + mul r0, r1 + str r0, [r4, #0x20] + mov r0, #3 + str r0, [r4, #0x28] + mov r0, #1 + str r0, [r4, #0x2c] + add r0, r4, #0 + bl MOD16_021EE254 + pop {r4, pc} +_021EE1F4: + ldr r1, [r4, #0x14] + ldr r0, _021EE250 ; =0x00000222 + mul r0, r1 + str r0, [r4, #0x24] + ldr r1, [r4, #0x14] + mov r0, #0xb6 + mul r0, r1 + str r0, [r4, #0x20] + mov r0, #4 + str r0, [r4, #0x28] + mov r0, #1 + str r0, [r4, #0x2c] + add r0, r4, #0 + bl MOD16_021EE254 + pop {r4, pc} +_021EE214: + mov r1, #0 + str r1, [r4, #0x24] + ldr r0, [r4, #0x14] + sub r1, #0xb6 + mul r1, r0 + str r1, [r4, #0x20] + mov r0, #1 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x18] + sub r0, r0, #1 + str r0, [r4, #0x18] + cmp r0, #0 + ble _021EE232 + mov r0, #2 + b _021EE234 +_021EE232: + mov r0, #5 +_021EE234: + str r0, [r4, #0x28] + add r0, r4, #0 + bl MOD16_021EE254 + pop {r4, pc} +_021EE23E: + bl FUN_0200CAB4 + ldr r0, [r4, #0x30] + mov r1, #1 + str r1, [r0] +_021EE248: + pop {r4, pc} + nop +_021EE24C: .word 0xFFFFFDDE +_021EE250: .word 0x00000222 + thumb_func_end MOD16_021EE1A0 + + thumb_func_start MOD16_021EE254 +MOD16_021EE254: ; 0x021EE254 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + ldr r2, [r3, #0x20] + ldr r1, [r3, #0x24] + cmp r2, #0 + bge _021EE276 + ldr r0, [r3, #0x1c] + add r0, r0, r2 + cmp r0, r1 + blt _021EE26E + str r0, [r3, #0x1c] + b _021EE288 +_021EE26E: + str r1, [r3, #0x1c] + ldr r0, [r3, #0x28] + str r0, [r3, #0x2c] + b _021EE288 +_021EE276: + ldr r0, [r3, #0x1c] + add r0, r0, r2 + cmp r0, r1 + bgt _021EE282 + str r0, [r3, #0x1c] + b _021EE288 +_021EE282: + str r1, [r3, #0x1c] + ldr r0, [r3, #0x28] + str r0, [r3, #0x2c] +_021EE288: + ldr r0, [r3, #0x10] + str r0, [sp] + ldr r0, [r3, #0x1c] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r3] + ldr r1, [r3, #4] + ldr r2, [r3, #8] + ldr r3, [r3, #0xc] + bl MOD16_021EE2A4 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD16_021EE254 + + thumb_func_start MOD16_021EE2A4 +MOD16_021EE2A4: ; 0x021EE2A4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + add r1, sp, #0x18 + ldrh r1, [r1, #0x14] + add r7, r2, #0 + str r3, [sp] + bl FUN_02013F2C + add r0, sp, #0x18 + ldrh r0, [r0, #0x14] + mov r2, #0xe + lsl r2, r2, #0xe + asr r0, r0, #4 + lsl r4, r0, #1 + add r0, r4, #1 + lsl r1, r0, #1 + ldr r0, _021EE354 ; =0x020FFA38 + mov r3, #0 + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r5, r2, #0xc + orr r5, r0 + mov r2, #0xe + ldr r0, _021EE354 ; =0x020FFA38 + lsl r1, r4, #1 + ldrsh r0, [r0, r1] + lsl r2, r2, #0xe + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + mov r3, #0 + add r0, r0, r2 + adc r1, r3 + lsr r4, r0, #0xc + lsl r0, r2, #8 + lsl r1, r1, #0x14 + add r0, r5, r0 + orr r4, r1 + str r0, [sp, #4] + lsl r0, r2, #7 + add r0, r4, r0 + str r0, [sp, #8] + ldr r0, [sp] + add r1, sp, #4 + bl FUN_02020044 + mov r0, #6 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + add r0, r6, #0 + add r1, sp, #4 + bl FUN_02020044 + mov r0, #2 + lsl r0, r0, #0x12 + sub r1, r0, r5 + lsr r0, r0, #1 + sub r0, r0, r4 + str r0, [sp, #8] + str r1, [sp, #4] + ldr r0, [sp, #0x28] + add r1, sp, #4 + bl FUN_02020044 + mov r0, #6 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + add r0, r7, #0 + add r1, sp, #4 + bl FUN_02020044 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EE354: .word 0x020FFA38 + thumb_func_end MOD16_021EE2A4 + + thumb_func_start MOD16_021EE358 +MOD16_021EE358: ; 0x021EE358 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + add r5, r4, #0 + str r0, [r4, #0x74] + ldr r0, [r4, #0xc] + add r5, #0xb8 + str r0, [r4, #0x78] + ldr r0, [r4, #0x10] + str r0, [r4, #0x7c] + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + ldr r1, [r4, #4] + add r0, #0x84 + str r1, [r0] + add r1, r4, #0 + mov r0, #0 + add r1, #0x88 + str r0, [r1] + add r1, r4, #0 + add r1, #0x94 + str r5, [r1] + add r1, r4, #0 + add r1, #0xb8 + str r0, [r1] + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _021EE3A4 + add r0, r4, #0 + add r0, #0x8c + str r2, [r0] + add r0, r4, #0 + add r0, #0x90 + str r3, [r0] + b _021EE3B4 +_021EE3A4: + add r0, r4, #0 + neg r1, r2 + add r0, #0x8c + str r1, [r0] + add r0, r4, #0 + neg r1, r3 + add r0, #0x90 + str r1, [r0] +_021EE3B4: + add r1, r4, #0 + ldr r0, _021EE3C4 ; =MOD16_021EE3C8 + add r1, #0x74 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #0x3c] + pop {r3, r4, r5, pc} + .align 2, 0 +_021EE3C4: .word MOD16_021EE3C8 + thumb_func_end MOD16_021EE358 + + thumb_func_start MOD16_021EE3C8 +MOD16_021EE3C8: ; 0x021EE3C8 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x18] + mov r4, #0 + cmp r0, #0 + ldr r2, [r5, #0x1c] + bge _021EE3EC + ldr r1, [r5, #0x14] + add r0, r1, r0 + cmp r0, r2 + blt _021EE3E6 + str r0, [r5, #0x14] + b _021EE3FC +_021EE3E6: + str r2, [r5, #0x14] + mov r4, #1 + b _021EE3FC +_021EE3EC: + ldr r1, [r5, #0x14] + add r0, r1, r0 + cmp r0, r2 + bgt _021EE3F8 + str r0, [r5, #0x14] + b _021EE3FC +_021EE3F8: + str r2, [r5, #0x14] + mov r4, #1 +_021EE3FC: + ldr r0, [r5, #0x10] + str r0, [sp] + ldr r0, [r5, #0x14] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r5, #4] + ldr r2, [r5, #8] + ldr r3, [r5, #0xc] + bl MOD16_021EE2A4 + cmp r4, #1 + bne _021EE424 + add r0, r6, #0 + bl FUN_0200CAB4 + ldr r0, [r5, #0x20] + mov r1, #1 + str r1, [r0] +_021EE424: + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EE3C8 + + thumb_func_start MOD16_021EE428 +MOD16_021EE428: ; 0x021EE428 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r2, #0 + bne _021EE436 + ldr r1, [r5, #4] + b _021EE438 +_021EE436: + ldr r1, [r5] +_021EE438: + add r0, #0x98 + str r1, [r0] + neg r0, r4 + lsl r1, r0, #1 + add r0, r5, #0 + add r0, #0xa8 + str r1, [r0] + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + bl FUN_0202011C + add r1, r5, #0 + ldr r2, [r0] + add r1, #0x9c + str r2, [r1] + ldr r1, [r0, #4] + add r0, r5, #0 + add r0, #0xa0 + str r1, [r0] + add r0, r5, #0 + add r1, r5, #0 + mov r2, #0 + add r0, #0xac + str r2, [r0] + add r0, r5, #0 + add r0, #0xa4 + strh r4, [r0] + add r0, r5, #0 + add r0, #0xb0 + str r2, [r0] + add r0, r5, #0 + add r1, #0xb8 + add r0, #0xb4 + str r1, [r0] + add r0, r5, #0 + add r0, #0xb8 + str r2, [r0] + add r1, r5, #0 + ldr r0, _021EE494 ; =MOD16_021EE498 + add r1, #0x98 + bl FUN_0200CA44 + str r0, [r5, #0x3c] + pop {r3, r4, r5, pc} + nop +_021EE494: .word MOD16_021EE498 + thumb_func_end MOD16_021EE428 + + thumb_func_start MOD16_021EE498 +MOD16_021EE498: ; 0x021EE498 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, #3 + bhi _021EE5A2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EE4B2: ; jump table + .short _021EE4BA - _021EE4B2 - 2 ; case 0 + .short _021EE50C - _021EE4B2 - 2 ; case 1 + .short _021EE540 - _021EE4B2 - 2 ; case 2 + .short _021EE586 - _021EE4B2 - 2 ; case 3 +_021EE4BA: + ldr r0, [r4, #0x14] + add r3, r0, #1 + str r3, [r4, #0x14] + mov r0, #0xc + ldrsh r0, [r4, r0] + add r1, r3, #0 + mul r1, r3 + add r2, r0, #0 + lsr r0, r1, #0x1f + add r0, r1, r0 + mul r2, r3 + asr r0, r0, #1 + add r2, r2, r0 + ldr r0, [r4, #4] + str r0, [sp] + ldr r1, [r4, #8] + lsl r0, r2, #0xc + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02020044 + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x10] + cmp r1, r0 + blt _021EE5A2 + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #0xc + ldrsh r1, [r4, r0] + add sp, #0xc + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021EE50C: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _021EE528 + mov r0, #2 + ldr r1, [r4, #4] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #8] + add r1, sp, #0 + str r0, [sp, #4] + ldr r0, [r4] + bl FUN_02020044 +_021EE528: + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #1 + ble _021EE5A2 + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x18] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021EE540: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _021EE55C + mov r0, #2 + ldr r1, [r4, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #8] + add r1, sp, #0 + str r0, [sp, #4] + ldr r0, [r4] + bl FUN_02020044 +_021EE55C: + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #1 + ble _021EE5A2 + ldr r0, [r4, #0x10] + sub r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #0 + ble _021EE57C + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #1 + add sp, #0xc + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021EE57C: + ldr r0, [r4, #0x18] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021EE586: + ldr r0, [r4, #4] + add r1, sp, #0 + str r0, [sp] + ldr r0, [r4, #8] + str r0, [sp, #4] + ldr r0, [r4] + bl FUN_02020044 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x1c] + mov r1, #1 + str r1, [r0] +_021EE5A2: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EE498 + + thumb_func_start MOD16_021EE5A8 +MOD16_021EE5A8: ; 0x021EE5A8 + push {r4, r5} + mov r4, #0 + cmp r1, #0 + ble _021EE5CA + add r5, r0, #0 +_021EE5B2: + ldr r3, [r5] + cmp r3, r2 + blt _021EE5C2 + mov r1, #0x14 + mul r1, r4 + add r0, r0, r1 + pop {r4, r5} + bx lr +_021EE5C2: + add r4, r4, #1 + add r5, #0x14 + cmp r4, r1 + blt _021EE5B2 +_021EE5CA: + mov r0, #0 + pop {r4, r5} + bx lr + thumb_func_end MOD16_021EE5A8 + + thumb_func_start MOD16_021EE5D0 +MOD16_021EE5D0: ; 0x021EE5D0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r7, r1, #0 + add r4, r2, #0 + bl FUN_0200955C + add r6, r0, #0 + ldr r0, [r5, #0x18] + mov r1, #0 + bl FUN_02009E54 + add r1, r5, #0 + str r4, [sp] + add r1, #0xbc + str r0, [sp, #4] + ldr r0, [r6, #0xc] + ldr r1, [r1] + mov r2, #0x30 + add r3, r7, #0 + bl FUN_02003974 + ldr r0, [sp, #4] + mov r1, #1 + blx FUN_020B19C4 + add r2, r5, #0 + add r2, #0xbc + add r1, r0, #0 + ldr r2, [r2] + mov r0, #0xe + mov r3, #0x60 + bl FUN_0201C2C8 + ldr r0, [r5, #0x28] + bl FUN_0200955C + add r6, r0, #0 + ldr r0, [r5, #0x28] + mov r1, #0 + bl FUN_02009E54 + add r1, r5, #0 + str r4, [sp] + add r1, #0xc0 + str r0, [sp, #8] + ldr r0, [r6, #0xc] + ldr r1, [r1] + mov r2, #0x50 + add r3, r7, #0 + bl FUN_02003974 + ldr r0, [sp, #8] + mov r1, #1 + blx FUN_020B19C4 + add r5, #0xc0 + add r1, r0, #0 + ldr r2, [r5] + mov r0, #0xe + mov r3, #0xa0 + bl FUN_0201C2C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EE5D0 + + thumb_func_start MOD16_021EE654 +MOD16_021EE654: ; 0x021EE654 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021EE6CC + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EE714 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EE73C + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021EE76C + str r0, [r5, #0x24] + ldr r0, _021EE69C ; =MOD16_021EE770 + str r0, [r5, #8] + ldr r0, _021EE6A0 ; =MOD16_021EE7AC + str r0, [r5, #0xc] + ldr r0, _021EE6A4 ; =MOD16_021EE810 + str r0, [r5, #0x10] + ldr r0, _021EE6A8 ; =MOD16_021EE824 + str r0, [r5, #0x14] + ldr r0, _021EE6AC ; =MOD16_021EE8AC + str r0, [r5, #0x18] + ldr r0, _021EE6B0 ; =MOD16_021EE8DC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EE69C: .word MOD16_021EE770 +_021EE6A0: .word MOD16_021EE7AC +_021EE6A4: .word MOD16_021EE810 +_021EE6A8: .word MOD16_021EE824 +_021EE6AC: .word MOD16_021EE8AC +_021EE6B0: .word MOD16_021EE8DC + thumb_func_end MOD16_021EE654 + + thumb_func_start MOD16_021EE6B4 +MOD16_021EE6B4: ; 0x021EE6B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021EE740 + ldr r0, [r4, #4] + bl MOD16_021EE754 + ldr r0, [r4, #0x20] + bl MOD16_021EE768 + pop {r4, pc} + thumb_func_end MOD16_021EE6B4 + + thumb_func_start MOD16_021EE6CC +MOD16_021EE6CC: ; 0x021EE6CC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021EE6DE + bl ErrorHandling +_021EE6DE: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021EE6E4: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EE6E4 + add r0, r5, #0 + bl MOD16_021D7AEC + str r0, [r4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B5C + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EE6CC + + thumb_func_start MOD16_021EE714 +MOD16_021EE714: ; 0x021EE714 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021EE726 + bl ErrorHandling +_021EE726: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EE714 + + thumb_func_start MOD16_021EE73C +MOD16_021EE73C: ; 0x021EE73C + mov r0, #0 + bx lr + thumb_func_end MOD16_021EE73C + + thumb_func_start MOD16_021EE740 +MOD16_021EE740: ; 0x021EE740 + push {r4, lr} + add r4, r0, #0 + bne _021EE74A + bl ErrorHandling +_021EE74A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EE740 + + thumb_func_start MOD16_021EE754 +MOD16_021EE754: ; 0x021EE754 + push {r4, lr} + add r4, r0, #0 + bne _021EE75E + bl ErrorHandling +_021EE75E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EE754 + + thumb_func_start MOD16_021EE768 +MOD16_021EE768: ; 0x021EE768 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EE768 + + thumb_func_start MOD16_021EE76C +MOD16_021EE76C: ; 0x021EE76C + mov r0, #0 + bx lr + thumb_func_end MOD16_021EE76C + + thumb_func_start MOD16_021EE770 +MOD16_021EE770: ; 0x021EE770 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021EE786: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EE786 + mov r0, #4 + str r0, [r4, #0x10] + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EEA3C + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EEA88 + str r4, [r5, #8] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EE770 + + thumb_func_start MOD16_021EE7AC +MOD16_021EE7AC: ; 0x021EE7AC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021EE7BC + mov r0, #1 + pop {r3, r4, r5, pc} +_021EE7BC: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021EE7C6 + mov r0, #0 + pop {r3, r4, r5, pc} +_021EE7C6: + ldr r0, [r5, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021EE80A + add r0, r4, #0 + bl MOD16_021EEA80 + ldr r0, [r5, #8] + bl MOD16_021E95C8 + cmp r0, #0 + beq _021EE7F2 + ldr r0, [r5, #4] + bl MOD16_021D9FB8 + cmp r0, #0 + beq _021EE7F2 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EEEB4 +_021EE7F2: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EEA88 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021EE80A + add r0, r5, #0 + bl MOD16_021EEF00 + mov r0, #0 + str r0, [r4, #0x14] +_021EE80A: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EE7AC + + thumb_func_start MOD16_021EE810 +MOD16_021EE810: ; 0x021EE810 + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021EEAA0 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021EE810 + + thumb_func_start MOD16_021EE824 +MOD16_021EE824: ; 0x021EE824 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021EE8A8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EE840: ; jump table + .short _021EE848 - _021EE840 - 2 ; case 0 + .short _021EE862 - _021EE840 - 2 ; case 1 + .short _021EE880 - _021EE840 - 2 ; case 2 + .short _021EE896 - _021EE840 - 2 ; case 3 +_021EE848: + ldr r0, [r4, #4] + mov r1, #0x30 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x30 + blx Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE8A8 +_021EE862: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021EEAE0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EE994 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE8A8 +_021EE880: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021EEA00 + cmp r0, #0 + beq _021EE8A8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE8A8 +_021EE896: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EE8A8: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EE824 + + thumb_func_start MOD16_021EE8AC +MOD16_021EE8AC: ; 0x021EE8AC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r3, #8] + add r4, r2, #0 + str r0, [sp] + add r5, r1, #0 + ldr r0, [r4, #8] + ldr r7, [r5, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021EE8D8 + ldr r2, [sp] + ldr r3, [r5, #4] + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021EEE80 + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021EEEC8 +_021EE8D8: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EE8AC + + thumb_func_start MOD16_021EE8DC +MOD16_021EE8DC: ; 0x021EE8DC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #4 + bhi _021EE95E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EE8F8: ; jump table + .short _021EE902 - _021EE8F8 - 2 ; case 0 + .short _021EE924 - _021EE8F8 - 2 ; case 1 + .short _021EE93A - _021EE8F8 - 2 ; case 2 + .short _021EE94C - _021EE8F8 - 2 ; case 3 + .short _021EE95A - _021EE8F8 - 2 ; case 4 +_021EE902: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021EE994 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE95E +_021EE924: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021EEA00 + cmp r0, #0 + beq _021EE95E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE95E +_021EE93A: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021EEB10 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE95E +_021EE94C: + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE95E +_021EE95A: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EE95E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EE8DC + + thumb_func_start MOD16_021EE964 +MOD16_021EE964: ; 0x021EE964 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + thumb_func_end MOD16_021EE964 + + thumb_func_start MOD16_021EE97C +MOD16_021EE97C: ; 0x021EE97C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + thumb_func_end MOD16_021EE97C + + thumb_func_start MOD16_021EE994 +MOD16_021EE994: ; 0x021EE994 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021EE964 + ldr r0, [r4, #8] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021EE9FC + cmp r6, #0 + beq _021EE9D8 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r2, [r5] + lsl r0, r0, #4 + add r0, r2, r0 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021EE9D8: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r3, [r5] + lsl r0, r0, #4 + add r0, r3, r0 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021EE9FC: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EE994 + + thumb_func_start MOD16_021EEA00 +MOD16_021EEA00: ; 0x021EEA00 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021EEA20 + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021EEA26 +_021EEA20: + mov r0, #2 + bl FUN_0200A344 +_021EEA26: + cmp r0, #0 + beq _021EEA38 + cmp r4, #0 + beq _021EEA34 + add r0, r6, #0 + bl MOD16_021EE97C +_021EEA34: + mov r0, #1 + pop {r4, r5, r6, pc} +_021EEA38: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EEA00 + + thumb_func_start MOD16_021EEA3C +MOD16_021EEA3C: ; 0x021EEA3C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #4 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #0xf8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x68 + mov r2, #0xb8 + mov r3, #8 + bl MOD16_021D7C98 + str r4, [r5, #8] + str r5, [r5, #0xc] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021EEA7C ; =MOD16_021EEAB8 + mov r1, #1 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021EEA7C: .word MOD16_021EEAB8 + thumb_func_end MOD16_021EEA3C + + thumb_func_start MOD16_021EEA80 +MOD16_021EEA80: ; 0x021EEA80 + mov r1, #3 + str r1, [r0, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EEA80 + + thumb_func_start MOD16_021EEA88 +MOD16_021EEA88: ; 0x021EEA88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02022144 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021EEA9C + mov r0, #2 + str r0, [r4, #0x10] +_021EEA9C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EEA88 + + thumb_func_start MOD16_021EEAA0 +MOD16_021EEAA0: ; 0x021EEAA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EEAA0 + + thumb_func_start MOD16_021EEAB8 +MOD16_021EEAB8: ; 0x021EEAB8 + ldr r3, [r2, #4] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x10] + cmp r1, #0 + beq _021EEACA + cmp r1, #2 + beq _021EEAD4 + bx lr +_021EEACA: + cmp r0, #0 + bne _021EEADC + mov r0, #1 + str r0, [r3, #0x14] + bx lr +_021EEAD4: + cmp r0, #0 + bne _021EEADC + mov r0, #1 + str r0, [r3, #0x14] +_021EEADC: + bx lr + .align 2, 0 + thumb_func_end MOD16_021EEAB8 + + thumb_func_start MOD16_021EEAE0 +MOD16_021EEAE0: ; 0x021EEAE0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EEB50 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EEBB8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EEC6C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EED04 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EEAE0 + + thumb_func_start MOD16_021EEB10 +MOD16_021EEB10: ; 0x021EEB10 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + add r4, r1, #0 + str r2, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0x80 + bl MOD16_021D8CFC + add r0, r5, #0 + bl MOD16_021EECF8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EEDA0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EEC38 + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021EEB4A + bl FUN_02016A18 +_021EEB4A: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EEB10 + + thumb_func_start MOD16_021EEB50 +MOD16_021EEB50: ; 0x021EEB50 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x3a + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EEB50 + + thumb_func_start MOD16_021EEBB8 +MOD16_021EEBB8: ; 0x021EEBB8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021EEC2C ; =0x0000332E + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x66 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #8] + bl FUN_02009B04 + ldr r0, [r5, #8] + bl FUN_02009474 + ldr r0, _021EEC30 ; =0x0000332C + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x64 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x10] + ldr r0, _021EEC34 ; =0x0000332D + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x65 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x14] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021EEC2C: .word 0x0000332E +_021EEC30: .word 0x0000332C +_021EEC34: .word 0x0000332D + thumb_func_end MOD16_021EEBB8 + + thumb_func_start MOD16_021EEC38 +MOD16_021EEC38: ; 0x021EEC38 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #8] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EEC38 + + thumb_func_start MOD16_021EEC6C +MOD16_021EEC6C: ; 0x021EEC6C + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021EECF0 ; =0x0000332D + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, _021EECF4 ; =0x0000083F + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + lsl r0, r0, #0x12 + str r0, [sp, #0x34] + mov r0, #3 + lsl r1, r1, #0x10 + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + mov r1, #2 + str r0, [r5] + bl FUN_02020130 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021EECF0: .word 0x0000332D +_021EECF4: .word 0x0000083F + thumb_func_end MOD16_021EEC6C + + thumb_func_start MOD16_021EECF8 +MOD16_021EECF8: ; 0x021EECF8 + ldr r3, _021EED00 ; =0x0201FFC9 + ldr r0, [r0] + bx r3 + nop +_021EED00: .word 0x0201FFC9 + thumb_func_end MOD16_021EECF8 + + thumb_func_start MOD16_021EED04 +MOD16_021EED04: ; 0x021EED04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5] + add r6, r2, #0 + ldr r4, [r1] + cmp r0, #0 + bne _021EED18 + bl ErrorHandling +_021EED18: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021EED98 ; =0x0000083F + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #8] + mov r1, #0 + bl FUN_02009E54 + mov r1, #7 + mvn r1, r1 + str r1, [sp, #0x1c] + mov r1, #2 + mov r2, #0 + str r0, [sp, #0x10] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + str r1, [sp, #0x28] + str r6, [sp, #0x2c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x10 + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021EED9C ; =0x00000266 + add r1, r6, #0 + mov r3, #0x64 + bl MOD16_021DB3C8 + lsr r0, r0, #1 + neg r0, r0 + str r6, [sp, #0xc] + str r0, [sp, #0x18] + ldr r0, [r5] + str r0, [sp, #0x14] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #4] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EED98: .word 0x0000083F +_021EED9C: .word 0x00000266 + thumb_func_end MOD16_021EED04 + + thumb_func_start MOD16_021EEDA0 +MOD16_021EEDA0: ; 0x021EEDA0 + ldr r3, _021EEDA8 ; =MOD16_021DB338 + ldr r0, [r0, #4] + bx r3 + nop +_021EEDA8: .word MOD16_021DB338 + thumb_func_end MOD16_021EEDA0 + + thumb_func_start MOD16_021EEDAC +MOD16_021EEDAC: ; 0x021EEDAC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + add r1, r3, #0 + str r2, [sp, #0xc] + ldr r4, [sp, #0x30] + ldr r6, [sp, #0x40] + mov r5, #0 + bl MOD16_021D7B98 + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0xc] + str r0, [sp] + ldr r0, [sp, #8] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x38] + bl MOD16_021EEE58 + ldr r0, [sp, #8] + bl FUN_0202022C + cmp r0, #3 + bhi _021EEE1E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EEDEA: ; jump table + .short _021EEDF2 - _021EEDEA - 2 ; case 0 + .short _021EEDF2 - _021EEDEA - 2 ; case 1 + .short _021EEE02 - _021EEDEA - 2 ; case 2 + .short _021EEE10 - _021EEDEA - 2 ; case 3 +_021EEDF2: + ldr r0, [r4] + cmp r0, #0 + beq _021EEE1E + mov r0, #0 + mov r5, #1 + mov r7, #9 + str r0, [r4] + b _021EEE1E +_021EEE02: + ldr r0, [r4] + cmp r0, #1 + beq _021EEE1E + mov r5, #1 + mov r7, #0xa + str r5, [r4] + b _021EEE1E +_021EEE10: + ldr r0, [r4] + cmp r0, #2 + beq _021EEE1E + mov r0, #2 + mov r5, #1 + mov r7, #8 + str r0, [r4] +_021EEE1E: + cmp r5, #0 + beq _021EEE54 + ldr r0, [r6] + cmp r0, #0 + beq _021EEE2C + bl FUN_02016A18 +_021EEE2C: + ldr r0, [sp, #4] + ldr r3, [sp, #0x34] + ldr r0, [r0] + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD16_021D8D70 + str r0, [r6] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x2c] + ldr r2, [r2, #0xc] + mov r0, #0x1f + lsl r1, r1, #5 + mov r3, #0x20 + bl FUN_0201C2C8 + cmp r0, #0 + bne _021EEE54 + bl ErrorHandling +_021EEE54: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EEDAC + + thumb_func_start MOD16_021EEE58 +MOD16_021EEE58: ; 0x021EEE58 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + bl MOD16_021D7BE4 + add r0, r5, #0 + bl FUN_0202022C + cmp r0, #2 + ldr r0, [r4] + bge _021EEE78 + add r1, r6, #0 + bl FUN_02011AC0 + pop {r4, r5, r6, pc} +_021EEE78: + ldr r1, [sp, #0x10] + bl FUN_02011AC0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EEE58 + + thumb_func_start MOD16_021EEE80 +MOD16_021EEE80: ; 0x021EEE80 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r1, #0 + mov r1, #7 + mvn r1, r1 + add r4, r2, #0 + str r1, [sp] + mov r2, #4 + add r1, r5, #0 + str r2, [sp, #4] + add r1, #0x28 + str r1, [sp, #8] + str r3, [sp, #0xc] + str r2, [sp, #0x10] + mov r1, #1 + str r1, [sp, #0x14] + add r1, r5, #0 + add r1, #0x2c + str r1, [sp, #0x18] + ldr r1, [r5] + ldr r2, [r5, #4] + ldr r3, [r4, #0x10] + bl MOD16_021EEDAC + add sp, #0x1c + pop {r4, r5, pc} + thumb_func_end MOD16_021EEE80 + + thumb_func_start MOD16_021EEEB4 +MOD16_021EEEB4: ; 0x021EEEB4 + ldr r1, _021EEEC4 ; =0x021C48B8 + ldr r2, [r1, #0x44] + mov r1, #1 + tst r2, r1 + beq _021EEEC0 + str r1, [r0, #0x14] +_021EEEC0: + bx lr + nop +_021EEEC4: .word 0x021C48B8 + thumb_func_end MOD16_021EEEB4 + + thumb_func_start MOD16_021EEEC8 +MOD16_021EEEC8: ; 0x021EEEC8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r1, #8] + bl MOD16_021E95C8 + cmp r0, #1 + bne _021EEEE8 + mov r0, #0x40 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x80 + mov r2, #0x90 + mov r3, #0xe4 + bl MOD16_021EEEEC +_021EEEE8: + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021EEEC8 + + thumb_func_start MOD16_021EEEEC +MOD16_021EEEEC: ; 0x021EEEEC + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r0, [r0] + bl MOD16_021D8B04 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EEEEC + + thumb_func_start MOD16_021EEF00 +MOD16_021EEF00: ; 0x021EEF00 + ldr r3, _021EEF08 ; =MOD16_021E5C5C + ldr r0, [r0, #0xc] + mov r1, #1 + bx r3 + .align 2, 0 +_021EEF08: .word MOD16_021E5C5C + thumb_func_end MOD16_021EEF00 + + thumb_func_start MOD16_021EEF0C +MOD16_021EEF0C: ; 0x021EEF0C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r1, #0x7a + ldr r0, [r5, #0xc] + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x7a + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + blx Call_FillMemWithValue + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EEFA4 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + bl MOD16_021EF9B8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + mov r2, #0xa + mov r3, #0xf + bl MOD16_021EF9D8 + ldr r0, _021EEF64 ; =MOD16_021EF90C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + mov r1, #7 + lsl r1, r1, #6 + str r0, [r4, r1] + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021EEF64: .word MOD16_021EF90C + thumb_func_end MOD16_021EEF0C + + thumb_func_start MOD16_021EEF68 +MOD16_021EEF68: ; 0x021EEF68 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021EF174 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EEF68 + + thumb_func_start MOD16_021EEF84 +MOD16_021EEF84: ; 0x021EEF84 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r0, [r0, r1] + cmp r0, #4 + bne _021EEF92 + mov r0, #1 + bx lr +_021EEF92: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EEF84 + + thumb_func_start MOD16_021EEF98 +MOD16_021EEF98: ; 0x021EEF98 + ldr r0, [r0, #0xc] + bx lr + thumb_func_end MOD16_021EEF98 + + thumb_func_start MOD16_021EEF9C +MOD16_021EEF9C: ; 0x021EEF9C + mov r2, #0x79 + lsl r2, r2, #2 + str r1, [r0, r2] + bx lr + thumb_func_end MOD16_021EEF9C + + thumb_func_start MOD16_021EEFA4 +MOD16_021EEFA4: ; 0x021EEFA4 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4] + add r1, r5, #0 + str r0, [r5] + ldr r2, [r4, #0xc] + mov r0, #0x20 + add r1, #0x10 + bl FUN_02008C9C + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4, #0xc] + bl FUN_020203CC + ldr r0, [r4, #0xc] + bl MOD16_021EFAEC + ldr r0, [r4, #0xc] + mov r2, #0x30 + str r0, [sp] + ldr r0, [r4, #8] + ldr r1, [r4, #0x10] + mov r3, #0x48 + bl MOD16_021EFAC0 + str r0, [r5, #0xc] + ldr r0, [r4, #4] + str r0, [r5, #8] + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r5, r0] + str r0, [sp, #4] + ldr r0, [r5] + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + ldr r0, [r4, #0xc] + str r0, [sp, #0x10] + add r0, sp, #4 + bl MOD16_021DB228 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021EF218 + mov r1, #0x3f + add r2, r1, #0 + ldr r0, _021EF170 ; =0x04000050 + sub r2, #0x4f + blx G2x_SetBlendBrightness_ + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021EF318 + str r0, [r5, #4] + mov r0, #0x4f + lsl r0, r0, #2 + ldr r1, [r4, #0xc] + add r0, r5, r0 + bl MOD16_021EF370 + mov r1, #0x15 + lsl r1, r1, #4 + add r0, r5, r1 + sub r1, #0x14 + ldr r2, [r4, #0xc] + add r1, r5, r1 + bl MOD16_021D9118 + mov r2, #0x15 + lsl r2, r2, #4 + mov r0, #2 + str r0, [sp] + add r1, r2, #0 + sub r1, #0x18 + add r0, r5, r2 + sub r2, #0x14 + ldr r1, [r5, r1] + ldr r3, [r4, #0xc] + add r2, r5, r2 + bl MOD16_021D9318 + ldr r0, [r4, #0x14] + mov r3, #0x15 + lsl r3, r3, #4 + str r0, [sp] + sub r1, r3, #4 + add r0, r5, r3 + add r3, #0x6c + ldr r1, [r5, r1] + ldr r2, [r4, #0xc] + ldr r3, [r5, r3] + bl MOD16_021EF3A8 + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r5, r0 + mov r1, #0xac + mov r2, #0x20 + bl MOD16_021D7F7C + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r5, r0 + mov r1, #1 + bl MOD16_021D93D4 + mov r2, #6 + lsl r2, r2, #6 + add r1, r2, #0 + add r0, r5, r2 + add r2, #0x3c + sub r1, #0x44 + ldr r2, [r5, r2] + ldr r3, [r4, #0xc] + add r1, r5, r1 + bl MOD16_021EF540 + mov r2, #6 + lsl r2, r2, #6 + add r1, r2, #0 + sub r1, #0x48 + add r0, r5, r2 + sub r2, #0x44 + ldr r1, [r5, r1] + ldr r3, [r4, #0xc] + add r2, r5, r2 + bl MOD16_021EF598 + mov r2, #0x67 + lsl r2, r2, #2 + add r1, r2, #0 + add r0, r5, r2 + add r2, #0x20 + sub r1, #0x60 + ldr r2, [r5, r2] + ldr r3, [r4, #0xc] + add r1, r5, r1 + bl MOD16_021EF6A4 + mov r2, #0x6f + lsl r2, r2, #2 + ldr r0, [r5, r2] + add r1, r2, #0 + str r0, [sp] + add r0, r2, #0 + sub r1, #0x84 + sub r0, #0x20 + sub r2, #0x80 + ldr r1, [r5, r1] + ldr r3, [r4, #0xc] + add r0, r5, r0 + add r2, r5, r2 + bl MOD16_021EF6E0 + mov r2, #0x69 + lsl r2, r2, #2 + add r0, r5, r2 + str r0, [sp] + add r1, r2, #0 + add r0, r2, #0 + sub r1, #0x6c + sub r0, #0x10 + sub r2, #0x68 + ldr r1, [r5, r1] + ldr r3, [r4, #0xc] + add r0, r5, r0 + add r2, r5, r2 + bl MOD16_021EF5EC + mov r3, #0x16 + lsl r3, r3, #4 + ldr r0, [r5, r3] + add r1, r3, #0 + str r0, [sp] + add r0, r3, #0 + sub r1, #0x14 + add r3, #0x5c + add r0, #0x34 + ldr r1, [r5, r1] + ldr r2, [r4, #0xc] + ldr r3, [r5, r3] + add r0, r5, r0 + bl MOD16_021EF648 + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021EF790 + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021EF8A8 + mov r2, #0x6f + lsl r2, r2, #2 + ldr r0, [r5, #4] + ldr r1, [r4, #0xc] + ldr r2, [r5, r2] + bl MOD16_021EFA48 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x14] + add r0, r5, r0 + bl MOD16_021EFB20 + mov r0, #0x79 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] + add sp, #0x14 + pop {r4, r5, pc} + nop +_021EF170: .word 0x04000050 + thumb_func_end MOD16_021EEFA4 + + thumb_func_start MOD16_021EF174 +MOD16_021EF174: ; 0x021EF174 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x71 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EFBA4 + mov r0, #0x67 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EF774 + mov r1, #0x67 + lsl r1, r1, #2 + add r0, r4, r1 + sub r1, #0x60 + add r1, r4, r1 + bl MOD16_021EF6D4 + mov r0, #0x65 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EF698 + mov r0, #0x65 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EF63C + mov r0, #6 + lsl r0, r0, #6 + add r0, r4, r0 + bl MOD16_021EF5E0 + mov r1, #6 + lsl r1, r1, #6 + add r0, r4, r1 + sub r1, #0x44 + add r1, r4, r1 + bl MOD16_021EF58C + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD16_021EF418 + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD16_021D93AC + mov r1, #0x15 + lsl r1, r1, #4 + add r0, r4, r1 + sub r1, #0x14 + add r1, r4, r1 + bl MOD16_021D91E8 + mov r0, #0x4f + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EF390 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FD58 + ldr r0, [r4, #4] + bl MOD16_021EF358 + ldr r0, [r4] + bl MOD16_021EF2FC + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD16_021DB288 + bl MOD16_021EFB18 + pop {r4, pc} + thumb_func_end MOD16_021EF174 + + thumb_func_start MOD16_021EF218 +MOD16_021EF218: ; 0x021EF218 + push {r4, r5, lr} + sub sp, #0x54 + ldr r3, _021EF2F0 ; =0x021FF78C + add r5, r0, #0 + add r4, r1, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x38 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #1 + str r0, [r2] + add r0, r5, #0 + bl FUN_020178A0 + add r0, r5, #0 + mov r1, #1 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #1 + bl FUN_02018744 + ldr r3, _021EF2F4 ; =0x021FF770 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + add r0, r5, #0 + bl FUN_020178A0 + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0x1c + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #2 + bl FUN_02018744 + mov r0, #0 + add r1, r0, #0 + bl FUN_020178BC + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r5, #0 + mov r1, #0 + bl FUN_020178A0 + ldr r3, _021EF2F8 ; =0x021FF7A8 + add r2, sp, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #3 + str r0, [r2] + add r0, r5, #0 + bl FUN_020178A0 + add r0, r5, #0 + mov r1, #3 + add r2, sp, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #3 + bl FUN_02018744 + add sp, #0x54 + pop {r4, r5, pc} + .align 2, 0 +_021EF2F0: .word 0x021FF78C +_021EF2F4: .word 0x021FF770 +_021EF2F8: .word 0x021FF7A8 + thumb_func_end MOD16_021EF218 + + thumb_func_start MOD16_021EF2FC +MOD16_021EF2FC: ; 0x021EF2FC + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD16_021EF2FC + + thumb_func_start MOD16_021EF318 +MOD16_021EF318: ; 0x021EF318 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + str r3, [sp, #0x10] + bl FUN_02019064 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_020191D0 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EF318 + + thumb_func_start MOD16_021EF358 +MOD16_021EF358: ; 0x021EF358 + push {r4, lr} + add r4, r0, #0 + bl FUN_02019570 + add r0, r4, #0 + bl FUN_02019178 + add r0, r4, #0 + mov r1, #1 + bl FUN_020191A4 + pop {r4, pc} + thumb_func_end MOD16_021EF358 + + thumb_func_start MOD16_021EF370 +MOD16_021EF370: ; 0x021EF370 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + mov r7, #8 +_021EF37A: + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02008DEC + add r4, r4, #1 + stmia r5!, {r0} + cmp r4, #4 + blt _021EF37A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EF370 + + thumb_func_start MOD16_021EF390 +MOD16_021EF390: ; 0x021EF390 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021EF398: + ldr r0, [r5] + bl FUN_02008E2C + add r4, r4, #1 + stmia r5!, {r6} + cmp r4, #4 + blt _021EF398 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EF390 + + thumb_func_start MOD16_021EF3A8 +MOD16_021EF3A8: ; 0x021EF3A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r1, #0 + str r4, [sp, #4] + mov r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02009E54 + str r0, [sp, #0xc] + ldr r0, [r5] + str r0, [sp, #0x10] + mov r0, #0x3f + mvn r0, r0 + str r0, [sp, #0x14] + add r0, #0x38 + str r0, [sp, #0x18] + mov r0, #2 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #1 + str r0, [sp, #0x24] + ldr r0, [sp, #0x40] + str r6, [sp, #0x28] + cmp r0, #0 + bne _021EF3EE + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021D7E68 + b _021EF3F8 +_021EF3EE: + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021D7E48 +_021EF3F8: + add r4, r0, #0 + ldr r0, [sp, #0x40] + str r4, [sp, #8] + str r0, [sp] + add r0, r5, #0 + add r1, sp, #4 + mov r2, #0 + add r3, r7, #0 + bl MOD16_021D8888 + add r0, r4, #0 + bl MOD16_021DB3BC + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EF3A8 + + thumb_func_start MOD16_021EF418 +MOD16_021EF418: ; 0x021EF418 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021EF42A + bl MOD16_021DB338 + mov r0, #0 + str r0, [r4, #8] +_021EF42A: + pop {r4, pc} + thumb_func_end MOD16_021EF418 + + thumb_func_start MOD16_021EF42C +MOD16_021EF42C: ; 0x021EF42C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r7, [sp, #0x3c] + str r3, [sp, #0x10] + str r7, [sp] + mov r3, #1 + add r6, r2, #0 + str r3, [sp, #4] + add r4, r1, #0 + str r6, [sp, #8] + add r5, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x28] + bl FUN_02008F34 + str r0, [r5] + bl FUN_02009B04 + ldr r0, [r5] + bl FUN_02009474 + str r7, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x10] + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r0, [r4, #4] + ldr r2, [sp, #0x2c] + mov r3, #0 + bl FUN_02008FEC + str r0, [r5, #4] + bl FUN_02009D68 + ldr r0, [r5, #4] + bl FUN_02009474 + str r7, [sp] + mov r0, #2 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #8] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x30] + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #8] + str r7, [sp] + mov r0, #3 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x34] + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0xc] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EF42C + + thumb_func_start MOD16_021EF4AC +MOD16_021EF4AC: ; 0x021EF4AC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_02009C0C + ldr r0, [r5, #4] + bl FUN_02009E04 + ldr r0, [r4] + ldr r1, [r5] + bl FUN_02009490 + ldr r0, [r4, #4] + ldr r1, [r5, #4] + bl FUN_02009490 + ldr r0, [r4, #8] + ldr r1, [r5, #8] + bl FUN_02009490 + ldr r0, [r4, #0xc] + ldr r1, [r5, #0xc] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EF4AC + + thumb_func_start MOD16_021EF4E0 +MOD16_021EF4E0: ; 0x021EF4E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + add r7, r2, #0 + add r6, r3, #0 + bl FUN_02009530 + str r0, [sp, #0x2c] + ldr r0, [r5, #4] + bl FUN_02009530 + str r0, [sp, #0x30] + ldr r0, [r5, #8] + bl FUN_02009530 + str r0, [sp, #0x34] + ldr r0, [r5, #0xc] + bl FUN_02009530 + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + ldr r1, [r4] + ldr r2, [sp, #0x30] + str r1, [sp, #0x14] + ldr r1, [r4, #4] + ldr r3, [sp, #0x34] + str r1, [sp, #0x18] + ldr r1, [r4, #8] + str r1, [sp, #0x1c] + ldr r1, [r4, #0xc] + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldr r1, [sp, #0x2c] + add r0, r7, #0 + bl FUN_02008AA4 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EF4E0 + + thumb_func_start MOD16_021EF540 +MOD16_021EF540: ; 0x021EF540 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r2, #0 + add r5, r0, #0 + str r1, [sp, #0x18] + str r3, [sp, #0x1c] + bl MOD16_021D8520 + str r0, [sp, #0x20] + add r0, r4, #0 + bl MOD16_021D8524 + add r4, r0, #0 + bl MOD16_021D8528 + add r6, r0, #0 + bl MOD16_021D852C + add r7, r0, #0 + bl MOD16_021D8530 + str r4, [sp] + str r6, [sp, #4] + str r7, [sp, #8] + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r0, r5, #4 + bl MOD16_021EF42C + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EF540 + + thumb_func_start MOD16_021EF58C +MOD16_021EF58C: ; 0x021EF58C + ldr r3, _021EF594 ; =MOD16_021EF4AC + add r0, r0, #4 + bx r3 + nop +_021EF594: .word MOD16_021EF4AC + thumb_func_end MOD16_021EF58C + + thumb_func_start MOD16_021EF598 +MOD16_021EF598: ; 0x021EF598 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + add r1, r2, #0 + add r0, r5, #4 + add r2, sp, #0 + mov r3, #2 + bl MOD16_021EF4E0 + add r0, sp, #0 + str r0, [sp, #0x28] + mov r0, #1 + str r0, [sp, #0x3c] + mov r0, #0x20 + str r0, [sp, #0x38] + mov r0, #0x1e + lsl r0, r0, #0xe + str r0, [sp, #0x2c] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x30] + add r0, sp, #0x24 + str r4, [sp, #0x24] + str r6, [sp, #0x40] + bl FUN_0201FF84 + str r0, [r5] + cmp r0, #0 + bne _021EF5DA + bl ErrorHandling +_021EF5DA: + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EF598 + + thumb_func_start MOD16_021EF5E0 +MOD16_021EF5E0: ; 0x021EF5E0 + ldr r3, _021EF5E8 ; =0x0201FFC9 + ldr r0, [r0] + bx r3 + nop +_021EF5E8: .word 0x0201FFC9 + thumb_func_end MOD16_021EF5E0 + + thumb_func_start MOD16_021EF5EC +MOD16_021EF5EC: ; 0x021EF5EC + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + add r1, r2, #0 + ldr r0, [sp, #0x58] + add r2, sp, #0 + mov r3, #2 + bl MOD16_021EF4E0 + add r0, sp, #0 + str r0, [sp, #0x28] + mov r0, #1 + str r0, [sp, #0x3c] + mov r0, #0x20 + str r0, [sp, #0x38] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp, #0x2c] + mov r0, #0xd + lsl r0, r0, #0xe + str r0, [sp, #0x30] + add r0, sp, #0x24 + str r4, [sp, #0x24] + str r6, [sp, #0x40] + bl FUN_0201FF84 + str r0, [r5] + cmp r0, #0 + bne _021EF62E + bl ErrorHandling +_021EF62E: + ldr r0, [r5] + mov r1, #0x11 + bl FUN_02020130 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EF5EC + + thumb_func_start MOD16_021EF63C +MOD16_021EF63C: ; 0x021EF63C + ldr r3, _021EF644 ; =0x0201FFC9 + ldr r0, [r0] + bx r3 + nop +_021EF644: .word 0x0201FFC9 + thumb_func_end MOD16_021EF63C + + thumb_func_start MOD16_021EF648 +MOD16_021EF648: ; 0x021EF648 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r1, #0 + add r5, r0, #0 + add r0, r7, #0 + add r1, r3, #0 + add r6, r2, #0 + bl MOD16_021E57C8 + add r4, r0, #0 + ldr r0, [sp, #0x40] + str r7, [sp] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #8] + ldr r0, [r5] + str r0, [sp, #0xc] + mov r0, #0x4d + mvn r0, r0 + str r0, [sp, #0x10] + add r0, #0x46 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x18] + mov r0, #0x1f + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r6, [sp, #0x24] + str r4, [sp, #4] + add r0, sp, #0 + bl MOD16_021DB2BC + str r0, [r5, #4] + add r0, r4, #0 + bl MOD16_021DB3BC + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EF648 + + thumb_func_start MOD16_021EF698 +MOD16_021EF698: ; 0x021EF698 + ldr r3, _021EF6A0 ; =MOD16_021DB338 + ldr r0, [r0, #4] + bx r3 + nop +_021EF6A0: .word MOD16_021DB338 + thumb_func_end MOD16_021EF698 + + thumb_func_start MOD16_021EF6A4 +MOD16_021EF6A4: ; 0x021EF6A4 + push {r3, lr} + sub sp, #0x18 + mov r2, #0x5a + str r2, [sp] + mov r2, #0xd + str r2, [sp, #4] + mov r2, #0x58 + str r2, [sp, #8] + mov r2, #0x59 + str r2, [sp, #0xc] + mov r2, #5 + str r2, [sp, #0x10] + ldr r2, _021EF6D0 ; =0x00004268 + add r0, #8 + str r2, [sp, #0x14] + add r2, r3, #0 + mov r3, #0x45 + bl MOD16_021EF42C + add sp, #0x18 + pop {r3, pc} + nop +_021EF6D0: .word 0x00004268 + thumb_func_end MOD16_021EF6A4 + + thumb_func_start MOD16_021EF6D4 +MOD16_021EF6D4: ; 0x021EF6D4 + ldr r3, _021EF6DC ; =MOD16_021EF4AC + add r0, #8 + bx r3 + nop +_021EF6DC: .word MOD16_021EF4AC + thumb_func_end MOD16_021EF6D4 + + thumb_func_start MOD16_021EF6E0 +MOD16_021EF6E0: ; 0x021EF6E0 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + add r7, r1, #0 + ldr r0, [sp, #0x60] + mov r1, #6 + str r2, [sp] + str r3, [sp, #4] + bl FUN_02068678 + add r4, r0, #0 + ldr r0, [sp, #0x60] + mov r1, #7 + bl FUN_02068678 + add r6, r0, #0 + add r0, r4, #0 + bl MOD16_021E563C + add r4, r0, #0 + add r0, r6, #0 + bl MOD16_021E563C + add r6, r0, #0 + add r0, r5, #0 + ldr r1, [sp] + add r0, #8 + add r2, sp, #8 + mov r3, #2 + bl MOD16_021EF4E0 + add r0, sp, #8 + str r0, [sp, #0x30] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #0x20 + str r0, [sp, #0x40] + ldr r0, [sp, #4] + str r7, [sp, #0x2c] + str r0, [sp, #0x48] + mov r0, #0xaa + lsl r0, r0, #0xc + str r0, [sp, #0x34] + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + add r1, r4, #0 + str r0, [r5] + bl FUN_02020130 + cmp r4, r6 + beq _021EF76C + mov r0, #0x37 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + add r1, r6, #0 + str r0, [r5, #4] + bl FUN_02020130 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_021EF76C: + mov r0, #0 + str r0, [r5, #4] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EF6E0 + + thumb_func_start MOD16_021EF774 +MOD16_021EF774: ; 0x021EF774 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021EF782 + bl FUN_0201FFC8 +_021EF782: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021EF78C + bl FUN_0201FFC8 +_021EF78C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EF774 + + thumb_func_start MOD16_021EF790 +MOD16_021EF790: ; 0x021EF790 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + mov r2, #0 + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp] + mov r0, #0x45 + mov r1, #6 + add r3, r2, #0 + str r4, [sp, #4] + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r4, [sp, #0xc] + mov r0, #0x45 + mov r1, #0x21 + add r2, r5, #0 + mov r3, #3 + bl FUN_0200687C + str r4, [sp] + mov r0, #0x45 + mov r1, #0x32 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + mov r0, #0x45 + mov r1, #0x33 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + ldr r2, [sp, #0x10] + mov r1, #3 + str r1, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + mov r0, #0x45 + mov r1, #0x34 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + add r6, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + mov r0, #0x45 + mov r1, #0x36 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #0x10 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #3 + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EF790 + + thumb_func_start MOD16_021EF8A8 +MOD16_021EF8A8: ; 0x021EF8A8 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + add r5, r1, #0 + str r0, [sp, #8] + str r5, [sp, #0xc] + mov r0, #0x45 + mov r1, #0x21 + add r2, r4, #0 + mov r3, #2 + bl FUN_0200687C + str r5, [sp] + mov r0, #0x45 + mov r1, #0x39 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #2 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #2 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EF8A8 + + thumb_func_start MOD16_021EF90C +MOD16_021EF90C: ; 0x021EF90C + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #4 + bhi _021EF994 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EF928: ; jump table + .short _021EF932 - _021EF928 - 2 ; case 0 + .short _021EF940 - _021EF928 - 2 ; case 1 + .short _021EF958 - _021EF928 - 2 ; case 2 + .short _021EF982 - _021EF928 - 2 ; case 3 + .short _021EF994 - _021EF928 - 2 ; case 4 +_021EF932: + ldr r0, _021EF9B4 ; =0x04000050 + mov r2, #0 + strh r2, [r0] + ldr r0, [r4, r1] + add r0, r0, #1 + str r0, [r4, r1] + b _021EF994 +_021EF940: + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + bl MOD16_021EFA28 + cmp r0, #0 + beq _021EF994 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021EF994 +_021EF958: + add r2, r1, #0 + add r2, #0x47 + str r2, [sp] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r0, #0xe + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r3, r2, #0 + bl FUN_020056AC + cmp r0, #0 + bne _021EF976 + bl ErrorHandling +_021EF976: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021EF994 +_021EF982: + bl FUN_02005670 + cmp r0, #0 + bne _021EF994 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_021EF994: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021EF9A6 + sub r0, #0x20 + add r0, r4, r0 + bl MOD16_021EFB78 +_021EF9A6: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FDEC + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021EF9B4: .word 0x04000050 + thumb_func_end MOD16_021EF90C + + thumb_func_start MOD16_021EF9B8 +MOD16_021EF9B8: ; 0x021EF9B8 + push {r4, lr} + mov r1, #0 + mov r3, #2 + add r2, r1, #0 + lsl r3, r3, #8 + add r4, r0, #0 + bl FUN_02003108 + mov r3, #7 + add r0, r4, #0 + mov r1, #2 + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02003108 + pop {r4, pc} + thumb_func_end MOD16_021EF9B8 + + thumb_func_start MOD16_021EF9D8 +MOD16_021EF9D8: ; 0x021EF9D8 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [sp, #0x20] + add r4, r3, #0 + str r0, [sp] + add r0, r1, #0 + add r1, r2, #0 + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + bl FUN_02007E68 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x1c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x20] + lsl r3, r3, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r2, _021EFA24 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #5 + asr r3, r3, #0x18 + bl FUN_02003210 + add r0, r5, #0 + mov r1, #0 + bl FUN_020038F0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021EFA24: .word 0x0000FFFF + thumb_func_end MOD16_021EF9D8 + + thumb_func_start MOD16_021EFA28 +MOD16_021EFA28: ; 0x021EFA28 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_020038E4 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02007F20 + cmp r4, #0 + bne _021EFA44 + cmp r0, #0 + bne _021EFA44 + mov r0, #1 + pop {r3, r4, r5, pc} +_021EFA44: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EFA28 + + thumb_func_start MOD16_021EFA48 +MOD16_021EFA48: ; 0x021EFA48 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _021EFA68 ; =0x00020100 + add r5, r0, #0 + str r1, [sp] + add r1, r2, #0 + add r2, r4, #0 + mov r3, #0 + bl MOD16_021E5064 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EFA6C + pop {r3, r4, r5, pc} + nop +_021EFA68: .word 0x00020100 + thumb_func_end MOD16_021EFA48 + + thumb_func_start MOD16_021EFA6C +MOD16_021EFA6C: ; 0x021EFA6C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r0, #0 + mov r0, #0x40 + add r4, r1, #0 + bl FUN_020219F4 + add r5, r0, #0 + ldr r2, _021EFABC ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r4, #0 + bl FUN_0200A86C + mov r1, #0x6d + add r2, r5, #0 + add r4, r0, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xc1 + str r1, [sp, #4] + lsl r0, r0, #0xa + str r0, [sp, #8] + add r0, r6, #0 + add r2, r5, #0 + mov r3, #0x20 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200A8B8 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021EFABC: .word 0x00000266 + thumb_func_end MOD16_021EFA6C + + thumb_func_start MOD16_021EFAC0 +MOD16_021EFAC0: ; 0x021EFAC0 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r2, #0 + add r0, sp, #0x10 + mov r2, #2 + add r6, r3, #0 + bl FUN_02068B68 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, sp, #0x10 + add r2, r4, #0 + add r3, r6, #0 + bl FUN_020073A0 + add sp, #0x20 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EFAC0 + + thumb_func_start MOD16_021EFAEC +MOD16_021EFAEC: ; 0x021EFAEC + push {r3, r4, r5, lr} + sub sp, #0x10 + ldr r4, _021EFB10 ; =0x021FF760 + add r3, sp, #0 + add r5, r0, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + ldr r1, _021EFB14 ; =0x00200010 + mov r2, #0x10 + str r5, [sp, #0xc] + bl FUN_0201D060 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021EFB10: .word 0x021FF760 +_021EFB14: .word 0x00200010 + thumb_func_end MOD16_021EFAEC + + thumb_func_start MOD16_021EFB18 +MOD16_021EFB18: ; 0x021EFB18 + ldr r3, _021EFB1C ; =0x0201D12D + bx r3 + .align 2, 0 +_021EFB1C: .word 0x0201D12D + thumb_func_end MOD16_021EFB18 + + thumb_func_start MOD16_021EFB20 +MOD16_021EFB20: ; 0x021EFB20 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + cmp r2, #0 + bne _021EFB3A + add r2, r4, #0 + mov r0, #0x45 + mov r1, #0x17 + add r2, #8 + add r3, r5, #0 + bl FUN_02006C08 + b _021EFB48 +_021EFB3A: + add r2, r4, #0 + mov r0, #0x45 + mov r1, #0x18 + add r2, #8 + add r3, r5, #0 + bl FUN_02006C08 +_021EFB48: + add r2, r4, #0 + str r0, [r4] + mov r0, #0x45 + mov r1, #0x1a + add r2, #0xc + add r3, r5, #0 + bl FUN_02006C08 + str r0, [r4, #4] + mov r1, #0 + str r1, [r4, #0x10] + str r1, [r4, #0x1c] + add r2, r4, #0 +_021EFB62: + add r1, r1, #1 + lsl r0, r1, #4 + str r0, [r2, #0x14] + add r2, r2, #4 + cmp r1, #2 + blt _021EFB62 + ldr r1, [r4, #0x1c] + add r0, r4, #0 + bl MOD16_021EFBC4 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EFB20 + + thumb_func_start MOD16_021EFB78 +MOD16_021EFB78: ; 0x021EFB78 + push {r3, lr} + ldr r3, [r0, #0x1c] + lsl r1, r3, #2 + add r1, r0, r1 + ldr r2, [r1, #0x14] + ldr r1, [r0, #0x10] + cmp r2, r1 + bgt _021EFB9E + add r1, r3, #1 + str r1, [r0, #0x1c] + cmp r1, #2 + blt _021EFB96 + mov r1, #0 + str r1, [r0, #0x1c] + str r1, [r0, #0x10] +_021EFB96: + ldr r1, [r0, #0x1c] + bl MOD16_021EFBD8 + pop {r3, pc} +_021EFB9E: + add r1, r1, #1 + str r1, [r0, #0x10] + pop {r3, pc} + thumb_func_end MOD16_021EFB78 + + thumb_func_start MOD16_021EFBA4 +MOD16_021EFBA4: ; 0x021EFBA4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021EFBAA: + ldr r0, [r5] + bl FUN_02016A18 + add r4, r4, #1 + cmp r4, #2 + blt _021EFBAA + add r0, r5, #0 + mov r1, #0 + mov r2, #0x20 + blx Call_FillMemWithValue + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EFBA4 + + thumb_func_start MOD16_021EFBC4 +MOD16_021EFBC4: ; 0x021EFBC4 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r0, [r0, #8] + ldr r3, _021EFBD4 ; =0x020C9550 + ldr r0, [r0, #0xc] + mov r1, #0 + mov r2, #0x20 + bx r3 + .align 2, 0 +_021EFBD4: .word 0x020C9550 + thumb_func_end MOD16_021EFBC4 + + thumb_func_start MOD16_021EFBD8 +MOD16_021EFBD8: ; 0x021EFBD8 + push {r3, lr} + add r2, r1, #0 + add r3, r0, #0 + lsl r2, r2, #2 + add r2, r3, r2 + ldr r2, [r2, #8] + mov r0, #0xf + ldr r2, [r2, #0xc] + mov r1, #0 + mov r3, #0x20 + bl FUN_0201C2C8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EFBD8 + + thumb_func_start MOD16_021EFBF4 +MOD16_021EFBF4: ; 0x021EFBF4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r2, #0xd5 + lsl r2, r2, #2 + str r1, [sp, #4] + add r1, r1, r2 + str r0, [sp] + ldr r2, _021EFC7C ; =0x00001DE0 + mov r0, #0 + blx MIi_CpuClear32 + ldr r0, [sp] + ldr r1, [r0, #0x2c] + mov r0, #1 + tst r0, r1 + beq _021EFC70 + mov r0, #0xb9 + lsl r0, r0, #2 + tst r0, r1 + bne _021EFC70 + ldr r6, _021EFC80 ; =0x000003CD + mov r0, #0 + add r7, r6, #0 + mov ip, r0 + sub r7, #0x31 +_021EFC26: + mov r1, ip + mov r0, #1 + tst r0, r1 + beq _021EFC60 + mov r0, ip + asr r4, r0, #1 + ldr r0, [sp, #4] + lsl r3, r4, #3 + ldr r2, [sp] + mov r1, #0 + add r3, r0, r3 + add r4, r0, r4 +_021EFC3E: + add r0, r2, #0 + add r0, #0xb0 + ldrh r0, [r0] + cmp r0, #0 + beq _021EFC58 + ldr r5, _021EFC80 ; =0x000003CD + ldrb r5, [r4, r5] + lsl r5, r5, #1 + add r5, r3, r5 + strh r0, [r5, r7] + ldrb r0, [r4, r6] + add r0, r0, #1 + strb r0, [r4, r6] +_021EFC58: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #4 + blt _021EFC3E +_021EFC60: + ldr r0, [sp] + add r0, #0x34 + str r0, [sp] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #4 + blt _021EFC26 +_021EFC70: + ldr r2, _021EFC84 ; =0x021F4E34 + ldr r1, _021EFC88 ; =0x00002134 + ldr r0, [sp, #4] + str r2, [r0, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EFC7C: .word 0x00001DE0 +_021EFC80: .word 0x000003CD +_021EFC84: .word 0x021F4E34 +_021EFC88: .word 0x00002134 + thumb_func_end MOD16_021EFBF4 + + thumb_func_start MOD16_021EFC8C +MOD16_021EFC8C: ; 0x021EFC8C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp, #4] + mov r0, #0xd5 + add r5, r1, #0 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0 + str r2, [sp, #8] + add r2, r0, #0 +_021EFCA0: + strb r2, [r1, r0] + add r0, r0, #1 + cmp r0, #0x1c + blo _021EFCA0 + mov r0, #0 + mov r1, #0x64 + mov r7, #1 +_021EFCAE: + add r4, r3, #0 + tst r4, r7 + beq _021EFCBE + mov r4, #0xd6 + add r6, r5, r2 + lsl r4, r4, #2 + strb r1, [r6, r4] + b _021EFCC6 +_021EFCBE: + mov r4, #0xd6 + add r6, r5, r2 + lsl r4, r4, #2 + strb r0, [r6, r4] +_021EFCC6: + lsl r3, r3, #0x17 + add r2, r2, #1 + lsr r3, r3, #0x18 + cmp r2, #4 + blt _021EFCAE + mov r0, #0 + mvn r0, r0 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + add r1, r5, #0 + mov r3, #0 + bl MOD11_02245D38 + lsl r0, r0, #0x18 + mov r4, #0 + lsr r6, r0, #0x18 + add r7, r4, #0 +_021EFCEA: + add r0, r4, #0 + bl FUN_0206A92C + tst r0, r6 + beq _021EFCFC + mov r0, #0xd6 + add r1, r5, r4 + lsl r0, r0, #2 + strb r7, [r1, r0] +_021EFCFC: + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x1c + sub r2, r2, r1 + mov r0, #0x1c + ror r2, r0 + add r1, r1, r2 + mov r0, #0x64 + sub r2, r0, r1 + mov r0, #0xdb + add r1, r5, r4 + lsl r0, r0, #2 + add r4, r4, #1 + strb r2, [r1, r0] + cmp r4, #4 + blt _021EFCEA + mov r1, #0 + add r0, #0x60 + strb r1, [r5, r0] + ldr r1, [sp, #4] + mov r3, #0x80 + ldr r2, [r1, #0x2c] + add r1, r2, #0 + tst r1, r3 + beq _021EFD38 + mov r1, #7 + sub r0, #0x6c + str r1, [r5, r0] + b _021EFD6E +_021EFD38: + add r1, r3, #0 + add r1, #0x80 + tst r1, r2 + beq _021EFD48 + lsl r1, r3, #0x16 + sub r0, #0x6c + str r1, [r5, r0] + b _021EFD6E +_021EFD48: + ldr r2, _021EFD88 ; =0x00002408 + ldr r1, [sp, #4] + ldr r2, [r1, r2] + mov r1, #1 + tst r1, r2 + beq _021EFD5C + lsl r1, r3, #0x18 + sub r0, #0x6c + str r1, [r5, r0] + b _021EFD6E +_021EFD5C: + ldr r1, [sp, #8] + mov r2, #0x34 + mul r2, r1 + ldr r1, [sp, #4] + sub r0, #0x6c + add r1, r1, r2 + add r1, #0xb8 + ldr r1, [r1] + str r1, [r5, r0] +_021EFD6E: + ldr r0, [sp, #4] + ldr r1, [r0, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021EFD84 + mov r1, #0x36 + lsl r1, r1, #4 + ldr r2, [r5, r1] + mov r0, #0x80 + orr r0, r2 + str r0, [r5, r1] +_021EFD84: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021EFD88: .word 0x00002408 + thumb_func_end MOD16_021EFC8C + + thumb_func_start MOD16_021EFD8C +MOD16_021EFD8C: ; 0x021EFD8C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r2, r1, #0 + mov r1, #0xd9 + ldr r4, [r5, #0x30] + lsl r1, r1, #2 + ldrb r6, [r4, r1] + mov r3, #0x10 + tst r3, r6 + bne _021EFDBE + add r1, #0x6b + strb r2, [r4, r1] + add r1, r4, #0 + bl MOD11_022482A4 + mov r2, #0x3d + lsl r2, r2, #4 + strb r0, [r4, r2] + sub r2, r2, #1 + ldrb r2, [r4, r2] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #0xf + bl MOD16_021EFC8C +_021EFDBE: + ldr r1, [r5, #0x2c] + mov r0, #2 + tst r0, r1 + bne _021EFDD0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EFDDC + pop {r4, r5, r6, pc} +_021EFDD0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EFED0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EFD8C + + thumb_func_start MOD16_021EFDDC +MOD16_021EFDDC: ; 0x021EFDDC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + add r5, r1, #0 + bl MOD16_021F2CEC + mov r0, #0x36 + lsl r0, r0, #4 + ldr r1, [r5, r0] + cmp r1, #0 + beq _021EFE32 + add r7, r0, #0 + add r6, r0, #5 +_021EFDF6: + mov r0, #1 + tst r0, r1 + beq _021EFE18 + mov r0, #0xd9 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + mov r0, #0x10 + tst r0, r1 + bne _021EFE10 + mov r0, #0xd5 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] +_021EFE10: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021F00F0 +_021EFE18: + ldr r0, [r5, r7] + mov r1, #0 + lsr r0, r0, #1 + str r0, [r5, r7] + ldrb r0, [r5, r6] + add r0, r0, #1 + strb r0, [r5, r6] + ldr r0, _021EFEC8 ; =0x00000355 + strb r1, [r5, r0] + add r0, #0xb + ldr r1, [r5, r0] + cmp r1, #0 + bne _021EFDF6 +_021EFE32: + mov r3, #0xd9 + lsl r3, r3, #2 + ldrb r1, [r5, r3] + mov r0, #2 + tst r0, r1 + beq _021EFE42 + mov r0, #4 + b _021EFEB2 +_021EFE42: + mov r0, #4 + tst r0, r1 + beq _021EFE4C + mov r0, #5 + b _021EFEB2 +_021EFE4C: + add r0, r3, #0 + sub r0, #0xc + ldrsb r0, [r5, r0] + add r1, sp, #0 + mov r4, #1 + strb r0, [r1, #4] + mov r0, #0 + strb r0, [r1] + add r3, #0x6b + ldrb r3, [r5, r3] + mov r0, #0xc0 + add r2, r4, #0 + mul r0, r3 + add r0, r5, r0 + add r3, r0, #2 +_021EFE6A: + ldr r0, _021EFECC ; =0x00002D4C + ldrh r0, [r3, r0] + cmp r0, #0 + beq _021EFE9C + mov r0, #0xd6 + add r6, r5, r2 + lsl r0, r0, #2 + ldrsb r6, [r6, r0] + ldrb r0, [r1, #4] + cmp r0, r6 + bne _021EFE90 + add r0, sp, #4 + strb r6, [r0, r4] + add r0, r4, #1 + lsl r0, r0, #0x18 + add r7, r4, #0 + lsr r4, r0, #0x18 + add r0, sp, #0 + strb r2, [r0, r7] +_021EFE90: + ldrb r0, [r1, #4] + cmp r0, r6 + bge _021EFE9C + strb r6, [r1, #4] + mov r4, #1 + strb r2, [r1] +_021EFE9C: + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #4 + blt _021EFE6A + bl FUN_0201B9EC + add r1, r4, #0 + blx _s32_div_f + add r0, sp, #0 + ldrb r0, [r0, r1] +_021EFEB2: + mov r2, #0x3d + lsl r2, r2, #4 + sub r1, r2, #1 + ldrb r1, [r5, r1] + ldrb r3, [r5, r2] + add r2, #0xa + add r1, r5, r1 + strb r3, [r1, r2] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EFEC8: .word 0x00000355 +_021EFECC: .word 0x00002D4C + thumb_func_end MOD16_021EFDDC + + thumb_func_start MOD16_021EFED0 +MOD16_021EFED0: ; 0x021EFED0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + add r0, sp, #0x18 + add r5, r1, #0 + str r0, [sp, #4] + add r0, sp, #0x20 + str r5, [sp, #8] + str r0, [sp] +_021EFEE6: + ldr r0, _021F00DC ; =0x000003CF + ldrb r2, [r5, r0] + ldr r0, [sp, #0xc] + cmp r0, r2 + beq _021EFEFA + ldr r1, _021F00E0 ; =0x00002D8C + ldr r0, [sp, #8] + ldr r0, [r0, r1] + cmp r0, #0 + bne _021EFF08 +_021EFEFA: + mov r1, #0 + ldr r0, [sp, #4] + mvn r1, r1 + strb r1, [r0] + ldr r0, [sp] + strh r1, [r0] + b _021F0026 +_021EFF08: + add r0, r7, #0 + add r1, r5, #0 + mov r3, #0xf + bl MOD16_021EFC8C + mov r1, #0x3d + ldr r0, [sp, #0xc] + lsl r1, r1, #4 + strb r0, [r5, r1] + sub r1, r1, #1 + mov r2, #1 + ldrb r1, [r5, r1] + and r0, r2 + and r1, r2 + cmp r0, r1 + beq _021EFF30 + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021F2CEC +_021EFF30: + ldr r0, _021F00E4 ; =0x00000365 + mov r2, #0 + add r1, r0, #0 + strb r2, [r5, r0] + sub r1, #0x10 + strb r2, [r5, r1] + sub r0, r0, #5 + ldr r4, [r5, r0] + cmp r4, #0 + beq _021EFF7A + ldr r6, _021F00E4 ; =0x00000365 +_021EFF46: + mov r0, #1 + tst r0, r4 + beq _021EFF68 + mov r0, #0xd9 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + mov r0, #0x10 + tst r0, r1 + bne _021EFF60 + mov r0, #0xd5 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] +_021EFF60: + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021F00F0 +_021EFF68: + ldrb r0, [r5, r6] + asr r4, r4, #1 + mov r1, #0 + add r0, r0, #1 + strb r0, [r5, r6] + ldr r0, _021F00E8 ; =0x00000355 + cmp r4, #0 + strb r1, [r5, r0] + bne _021EFF46 +_021EFF7A: + mov r2, #0xd9 + lsl r2, r2, #2 + ldrb r1, [r5, r2] + mov r0, #2 + tst r0, r1 + beq _021EFF8E + ldr r0, [sp, #4] + mov r1, #4 + strb r1, [r0] + b _021F0026 +_021EFF8E: + mov r0, #4 + tst r0, r1 + beq _021EFF9C + ldr r0, [sp, #4] + mov r1, #5 + strb r1, [r0] + b _021F0026 +_021EFF9C: + add r0, r2, #0 + sub r0, #0xc + ldrsb r1, [r5, r0] + add r0, sp, #0x10 + add r2, #0x6b + strb r1, [r0, #4] + mov r1, #0 + strb r1, [r0] + ldrb r3, [r5, r2] + mov r2, #0xc0 + mov r4, #1 + mul r2, r3 + add r2, r5, r2 + add r1, r4, #0 + add r2, r2, #2 +_021EFFBA: + ldr r3, _021F00EC ; =0x00002D4C + ldrh r3, [r2, r3] + cmp r3, #0 + beq _021EFFE6 + mov r3, #0xd6 + add r6, r5, r1 + lsl r3, r3, #2 + ldrsb r3, [r6, r3] + ldrb r6, [r0, #4] + cmp r6, r3 + bne _021EFFDA + add r6, sp, #0x14 + strb r3, [r6, r4] + add r6, sp, #0x10 + strb r1, [r6, r4] + add r4, r4, #1 +_021EFFDA: + ldrb r6, [r0, #4] + cmp r6, r3 + bge _021EFFE6 + strb r3, [r0, #4] + strb r1, [r0] + mov r4, #1 +_021EFFE6: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #4 + blt _021EFFBA + bl FUN_0201B9EC + add r1, r4, #0 + blx _s32_div_f + add r0, sp, #0x10 + ldrb r1, [r0, r1] + ldr r0, [sp, #4] + strb r1, [r0] + add r0, sp, #0x10 + ldrb r1, [r0, #4] + ldr r0, [sp] + strh r1, [r0] + ldr r0, _021F00DC ; =0x000003CF + ldrb r1, [r5, r0] + mov r0, #2 + eor r1, r0 + ldr r0, [sp, #0xc] + cmp r0, r1 + bne _021F0026 + ldr r0, [sp] + mov r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0x64 + bge _021F0026 + ldr r0, [sp] + sub r1, r1, #1 + strh r1, [r0] +_021F0026: + ldr r0, [sp, #8] + add r0, #0xc0 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + ldr r0, [sp] + add r0, r0, #2 + str r0, [sp] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #4 + bge _021F0044 + b _021EFEE6 +_021F0044: + mov r1, #0x10 + add r0, sp, #0x10 + ldrsh r1, [r0, r1] + mov r2, #0 + mov r6, #1 + strb r2, [r0, #0xc] + add r2, sp, #0x20 + add r4, r6, #0 + add r2, #2 +_021F0056: + mov r0, #0 + ldrsh r3, [r2, r0] + cmp r1, r3 + bne _021F0064 + add r0, sp, #0x1c + strb r4, [r0, r6] + add r6, r6, #1 +_021F0064: + cmp r1, r3 + bge _021F0070 + add r0, sp, #0x10 + add r1, r3, #0 + strb r4, [r0, #0xc] + mov r6, #1 +_021F0070: + add r4, r4, #1 + add r2, r2, #2 + cmp r4, #4 + blt _021F0056 + bl FUN_0201B9EC + add r1, r6, #0 + blx _s32_div_f + add r0, sp, #0x1c + ldrb r3, [r0, r1] + ldr r0, _021F00DC ; =0x000003CF + ldrb r1, [r5, r0] + add r2, r5, r1 + add r1, r0, #0 + add r1, #0xb + strb r3, [r2, r1] + ldrb r2, [r5, r0] + add r1, r0, #0 + add r1, #0xb + add r3, r5, r2 + ldrb r1, [r3, r1] + add r3, sp, #0x18 + add r0, #0x17 + ldrsb r4, [r3, r1] + mov r3, #0xc0 + mul r3, r2 + add r3, r5, r3 + lsl r2, r4, #1 + add r3, r3, r2 + ldr r2, _021F00EC ; =0x00002D4C + ldrh r2, [r3, r2] + lsl r2, r2, #4 + add r2, r5, r2 + ldrh r2, [r2, r0] + mov r0, #2 + lsl r0, r0, #8 + cmp r2, r0 + bne _021F00D2 + add r0, r7, #0 + bl MOD11_02230270 + cmp r0, #0 + bne _021F00D2 + ldr r0, _021F00DC ; =0x000003CF + ldrb r2, [r5, r0] + add r0, #0xb + add r1, r5, r2 + strb r2, [r1, r0] +_021F00D2: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F00DC: .word 0x000003CF +_021F00E0: .word 0x00002D8C +_021F00E4: .word 0x00000365 +_021F00E8: .word 0x00000355 +_021F00EC: .word 0x00002D4C + thumb_func_end MOD16_021EFED0 + + thumb_func_start MOD16_021F00F0 +MOD16_021F00F0: ; 0x021F00F0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0xd5 + add r5, r1, #0 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r0, #2 + beq _021F01D6 + mov r6, #0xd9 + lsl r6, r6, #2 + add r4, r6, #0 + sub r4, #0x10 +_021F0108: + cmp r0, #0 + beq _021F0114 + cmp r0, #1 + beq _021F0154 + cmp r0, #2 + b _021F01CC +_021F0114: + ldr r1, _021F01D8 ; =0x00000365 + ldr r0, _021F01DC ; =0x00002134 + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + lsl r1, r1, #2 + ldr r1, [r0, r1] + ldr r0, _021F01E0 ; =0x00002138 + str r1, [r5, r0] + ldr r0, _021F01E4 ; =0x000003CF + ldrb r1, [r5, r0] + mov r0, #0xc0 + mul r0, r1 + add r3, r5, r0 + ldr r0, _021F01E8 ; =0x00000355 + ldrb r2, [r5, r0] + ldr r0, _021F01EC ; =0x00002D6C + add r1, r3, r2 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _021F0140 + mov r1, #0 + b _021F0148 +_021F0140: + lsl r0, r2, #1 + add r1, r3, r0 + ldr r0, _021F01F0 ; =0x00002D4C + ldrh r1, [r1, r0] +_021F0148: + ldr r0, _021F01F4 ; =0x00000356 + strh r1, [r5, r0] + ldrb r0, [r5, r4] + add r0, r0, #1 + strb r0, [r5, r4] + b _021F01CC +_021F0154: + ldr r0, _021F01F4 ; =0x00000356 + ldrh r0, [r5, r0] + cmp r0, #0 + beq _021F0176 + ldr r3, _021F01E0 ; =0x00002138 + ldr r2, _021F01DC ; =0x00002134 + ldr r3, [r5, r3] + ldr r2, [r5, r2] + lsl r3, r3, #2 + ldr r2, [r2, r3] + add r0, r7, #0 + lsl r3, r2, #2 + ldr r2, _021F01F8 ; =0x021FF810 + add r1, r5, #0 + ldr r2, [r2, r3] + blx r2 + b _021F018C +_021F0176: + ldr r0, _021F01E8 ; =0x00000355 + mov r1, #0 + ldrb r0, [r5, r0] + add r2, r5, r0 + mov r0, #0xd6 + lsl r0, r0, #2 + strb r1, [r2, r0] + ldrb r1, [r5, r6] + mov r0, #1 + orr r0, r1 + strb r0, [r5, r6] +_021F018C: + mov r0, #0xd9 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + mov r0, #1 + tst r0, r1 + beq _021F01CC + ldr r0, _021F01E8 ; =0x00000355 + ldrb r0, [r5, r0] + add r1, r0, #1 + ldr r0, _021F01E8 ; =0x00000355 + strb r1, [r5, r0] + ldrb r0, [r5, r0] + cmp r0, #4 + bhs _021F01BE + mov r0, #0xd9 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + mov r0, #8 + tst r0, r1 + bne _021F01BE + mov r0, #0xd5 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] + b _021F01C4 +_021F01BE: + ldrb r0, [r5, r4] + add r0, r0, #1 + strb r0, [r5, r4] +_021F01C4: + ldrb r1, [r5, r6] + mov r0, #0xfe + and r0, r1 + strb r0, [r5, r6] +_021F01CC: + mov r0, #0xd5 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r0, #2 + bne _021F0108 +_021F01D6: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F01D8: .word 0x00000365 +_021F01DC: .word 0x00002134 +_021F01E0: .word 0x00002138 +_021F01E4: .word 0x000003CF +_021F01E8: .word 0x00000355 +_021F01EC: .word 0x00002D6C +_021F01F0: .word 0x00002D4C +_021F01F4: .word 0x00000356 +_021F01F8: .word 0x021FF810 + thumb_func_end MOD16_021F00F0 + + thumb_func_start MOD16_021F01FC +MOD16_021F01FC: ; 0x021F01FC + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + cmp r0, r4 + bge _021F0234 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F0234: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021F01FC + + thumb_func_start MOD16_021F0238 +MOD16_021F0238: ; 0x021F0238 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + cmp r0, r4 + ble _021F0270 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F0270: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021F0238 + + thumb_func_start MOD16_021F0274 +MOD16_021F0274: ; 0x021F0274 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + cmp r4, r0 + bne _021F02AC + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F02AC: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021F0274 + + thumb_func_start MOD16_021F02B0 +MOD16_021F02B0: ; 0x021F02B0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + cmp r4, r0 + beq _021F02E8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F02E8: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021F02B0 + + thumb_func_start MOD16_021F02EC +MOD16_021F02EC: ; 0x021F02EC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + mov r2, #0xd6 + lsl r2, r2, #2 + sub r3, r2, #3 + ldrb r5, [r4, r3] + add r1, r4, r2 + ldrsb r3, [r1, r5] + add r0, r3, r0 + strb r0, [r1, r5] + sub r0, r2, #3 + ldrb r2, [r4, r0] + ldrsb r0, [r1, r2] + cmp r0, #0 + bge _021F031C + mov r0, #0 + strb r0, [r1, r2] +_021F031C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F02EC + + thumb_func_start MOD16_021F0320 +MOD16_021F0320: ; 0x021F0320 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r3, _021F0374 ; =0x00002D8C + add r2, r5, r1 + ldr r1, [r2, r3] + mov r0, #0x64 + mul r0, r1 + add r1, r3, #4 + ldr r1, [r2, r1] + blx _u32_div_f + cmp r0, r6 + bhs _021F0370 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0370: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0374: .word 0x00002D8C + thumb_func_end MOD16_021F0320 + + thumb_func_start MOD16_021F0378 +MOD16_021F0378: ; 0x021F0378 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r3, _021F03CC ; =0x00002D8C + add r2, r5, r1 + ldr r1, [r2, r3] + mov r0, #0x64 + mul r0, r1 + add r1, r3, #4 + ldr r1, [r2, r1] + blx _u32_div_f + cmp r0, r6 + bls _021F03C8 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F03C8: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F03CC: .word 0x00002D8C + thumb_func_end MOD16_021F0378 + + thumb_func_start MOD16_021F03D0 +MOD16_021F03D0: ; 0x021F03D0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r3, _021F0424 ; =0x00002D8C + add r2, r5, r1 + ldr r1, [r2, r3] + mov r0, #0x64 + mul r0, r1 + add r1, r3, #4 + ldr r1, [r2, r1] + blx _u32_div_f + cmp r0, r6 + bne _021F0420 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0420: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0424: .word 0x00002D8C + thumb_func_end MOD16_021F03D0 + + thumb_func_start MOD16_021F0428 +MOD16_021F0428: ; 0x021F0428 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r3, _021F047C ; =0x00002D8C + add r2, r5, r1 + ldr r1, [r2, r3] + mov r0, #0x64 + mul r0, r1 + add r1, r3, #4 + ldr r1, [r2, r1] + blx _u32_div_f + cmp r0, r6 + beq _021F0478 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0478: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F047C: .word 0x00002D8C + thumb_func_end MOD16_021F0428 + + thumb_func_start MOD16_021F0480 +MOD16_021F0480: ; 0x021F0480 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F04C8 ; =0x00002DAC + add r1, r5, r1 + ldr r0, [r1, r0] + tst r0, r6 + beq _021F04C4 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F04C4: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F04C8: .word 0x00002DAC + thumb_func_end MOD16_021F0480 + + thumb_func_start MOD16_021F04CC +MOD16_021F04CC: ; 0x021F04CC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F0514 ; =0x00002DAC + add r1, r5, r1 + ldr r0, [r1, r0] + tst r0, r6 + bne _021F0510 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0510: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0514: .word 0x00002DAC + thumb_func_end MOD16_021F04CC + + thumb_func_start MOD16_021F0518 +MOD16_021F0518: ; 0x021F0518 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F0560 ; =0x00002DB0 + add r1, r5, r1 + ldr r0, [r1, r0] + tst r0, r6 + beq _021F055C + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F055C: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0560: .word 0x00002DB0 + thumb_func_end MOD16_021F0518 + + thumb_func_start MOD16_021F0564 +MOD16_021F0564: ; 0x021F0564 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F05AC ; =0x00002DB0 + add r1, r5, r1 + ldr r0, [r1, r0] + tst r0, r6 + bne _021F05A8 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F05A8: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F05AC: .word 0x00002DB0 + thumb_func_end MOD16_021F0564 + + thumb_func_start MOD16_021F05B0 +MOD16_021F05B0: ; 0x021F05B0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + mov r0, #0xb7 + add r1, r5, r1 + lsl r0, r0, #6 + ldr r0, [r1, r0] + tst r0, r6 + beq _021F05F6 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F05F6: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F05B0 + + thumb_func_start MOD16_021F05F8 +MOD16_021F05F8: ; 0x021F05F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + mov r0, #0xb7 + add r1, r5, r1 + lsl r0, r0, #6 + ldr r0, [r1, r0] + tst r0, r6 + bne _021F063E + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F063E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F05F8 + + thumb_func_start MOD16_021F0640 +MOD16_021F0640: ; 0x021F0640 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r7, #0 + bl MOD11_02230270 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r1, r0] + tst r0, r6 + beq _021F068E + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F068E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F0640 + + thumb_func_start MOD16_021F0690 +MOD16_021F0690: ; 0x021F0690 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r7, #0 + bl MOD11_02230270 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r1, r0] + tst r0, r6 + bne _021F06DE + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F06DE: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F0690 + + thumb_func_start MOD16_021F06E0 +MOD16_021F06E0: ; 0x021F06E0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, r4 + bge _021F070C + add r0, r5, #0 + bl MOD16_021F2D88 +_021F070C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F06E0 + + thumb_func_start MOD16_021F0710 +MOD16_021F0710: ; 0x021F0710 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, r4 + ble _021F073C + add r0, r5, #0 + bl MOD16_021F2D88 +_021F073C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0710 + + thumb_func_start MOD16_021F0740 +MOD16_021F0740: ; 0x021F0740 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, r4 + bne _021F076C + add r0, r5, #0 + bl MOD16_021F2D88 +_021F076C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0740 + + thumb_func_start MOD16_021F0770 +MOD16_021F0770: ; 0x021F0770 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, r4 + beq _021F079C + add r0, r5, #0 + bl MOD16_021F2D88 +_021F079C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0770 + + thumb_func_start MOD16_021F07A0 +MOD16_021F07A0: ; 0x021F07A0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + tst r0, r4 + beq _021F07CC + add r0, r5, #0 + bl MOD16_021F2D88 +_021F07CC: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F07A0 + + thumb_func_start MOD16_021F07D0 +MOD16_021F07D0: ; 0x021F07D0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + tst r0, r4 + bne _021F07FC + add r0, r5, #0 + bl MOD16_021F2D88 +_021F07FC: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F07D0 + + thumb_func_start MOD16_021F0800 +MOD16_021F0800: ; 0x021F0800 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + ldr r0, _021F082C ; =0x00000356 + ldrh r0, [r5, r0] + cmp r0, r4 + bne _021F082A + add r0, r5, #0 + bl MOD16_021F2D88 +_021F082A: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F082C: .word 0x00000356 + thumb_func_end MOD16_021F0800 + + thumb_func_start MOD16_021F0830 +MOD16_021F0830: ; 0x021F0830 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + ldr r0, _021F085C ; =0x00000356 + ldrh r0, [r5, r0] + cmp r0, r4 + beq _021F085A + add r0, r5, #0 + bl MOD16_021F2D88 +_021F085A: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F085C: .word 0x00000356 + thumb_func_end MOD16_021F0830 + + thumb_func_start MOD16_021F0860 +MOD16_021F0860: ; 0x021F0860 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2D74 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _021F08B0 + mov r6, #0xd7 + add r7, r1, #0 + lsl r6, r6, #2 +_021F0892: + ldr r1, [r5, r6] + cmp r1, r0 + bne _021F08A2 + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F08A2: + add r4, r4, #1 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2D74 + cmp r0, r7 + bne _021F0892 +_021F08B0: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021F0860 + + thumb_func_start MOD16_021F08B4 +MOD16_021F08B4: ; 0x021F08B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2D74 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _021F08FA + mov r6, #0xd7 + add r7, r1, #0 + lsl r6, r6, #2 +_021F08E6: + ldr r1, [r5, r6] + cmp r1, r0 + beq _021F0902 + add r4, r4, #1 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2D74 + cmp r0, r7 + bne _021F08E6 +_021F08FA: + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F0902: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F08B4 + + thumb_func_start MOD16_021F0904 +MOD16_021F0904: ; 0x021F0904 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r1, _021F095C ; =0x000003CF + mov ip, r0 + ldrb r2, [r6, r1] + mov r1, #0xc0 + mov r0, #0 + mul r1, r2 + add r3, r6, r1 + ldr r7, _021F0960 ; =0x00002D4C + add r1, r3, #0 + add r2, r0, #0 +_021F092A: + ldrh r4, [r1, r7] + cmp r4, #0 + beq _021F0942 + ldr r4, _021F0960 ; =0x00002D4C + add r5, r3, r2 + ldrh r4, [r5, r4] + lsl r4, r4, #4 + add r5, r6, r4 + ldr r4, _021F0964 ; =0x000003E1 + ldrb r4, [r5, r4] + cmp r4, #0 + bne _021F094C +_021F0942: + add r0, r0, #1 + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #4 + blt _021F092A +_021F094C: + cmp r0, #4 + bge _021F0958 + add r0, r6, #0 + mov r1, ip + bl MOD16_021F2D88 +_021F0958: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F095C: .word 0x000003CF +_021F0960: .word 0x00002D4C +_021F0964: .word 0x000003E1 + thumb_func_end MOD16_021F0904 + + thumb_func_start MOD16_021F0968 +MOD16_021F0968: ; 0x021F0968 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r1, _021F09C0 ; =0x000003CF + mov ip, r0 + ldrb r2, [r6, r1] + mov r1, #0xc0 + mov r0, #0 + mul r1, r2 + add r3, r6, r1 + ldr r7, _021F09C4 ; =0x00002D4C + add r1, r3, #0 + add r2, r0, #0 +_021F098E: + ldrh r4, [r1, r7] + cmp r4, #0 + beq _021F09A6 + ldr r4, _021F09C4 ; =0x00002D4C + add r5, r3, r2 + ldrh r4, [r5, r4] + lsl r4, r4, #4 + add r5, r6, r4 + ldr r4, _021F09C8 ; =0x000003E1 + ldrb r4, [r5, r4] + cmp r4, #0 + bne _021F09B0 +_021F09A6: + add r0, r0, #1 + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #4 + blt _021F098E +_021F09B0: + cmp r0, #4 + bne _021F09BC + add r0, r6, #0 + mov r1, ip + bl MOD16_021F2D88 +_021F09BC: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F09C0: .word 0x000003CF +_021F09C4: .word 0x00002D4C +_021F09C8: .word 0x000003E1 + thumb_func_end MOD16_021F0968 + + thumb_func_start MOD16_021F09CC +MOD16_021F09CC: ; 0x021F09CC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r1, [r4, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021F09CC + + thumb_func_start MOD16_021F09E8 +MOD16_021F09E8: ; 0x021F09E8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + cmp r0, #8 + bls _021F0A02 + b _021F0B0C +_021F0A02: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F0A0E: ; jump table + .short _021F0A36 - _021F0A0E - 2 ; case 0 + .short _021F0A20 - _021F0A0E - 2 ; case 1 + .short _021F0A64 - _021F0A0E - 2 ; case 2 + .short _021F0A4E - _021F0A0E - 2 ; case 3 + .short _021F0A7C - _021F0A0E - 2 ; case 4 + .short _021F0AAE - _021F0A0E - 2 ; case 5 + .short _021F0A90 - _021F0A0E - 2 ; case 6 + .short _021F0AEC - _021F0A0E - 2 ; case 7 + .short _021F0ACE - _021F0A0E - 2 ; case 8 +_021F0A20: + ldr r1, _021F0B14 ; =0x000003CF + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0A36: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0A4E: + ldr r1, _021F0B14 ; =0x000003CF + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0A64: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0A7C: + ldr r0, _021F0B18 ; =0x00000356 + ldrh r1, [r4, r0] + lsl r1, r1, #4 + add r2, r4, r1 + add r1, r0, #0 + add r1, #0x8c + ldrb r1, [r2, r1] + add r0, r0, #6 + str r1, [r4, r0] + pop {r3, r4, r5, pc} +_021F0A90: + ldr r1, _021F0B14 ; =0x000003CF + add r0, r5, #0 + ldrb r1, [r4, r1] + bl FUN_022302BC + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0AAE: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r4, r1] + add r0, r5, #0 + bl FUN_022302BC + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0ACE: + ldr r1, _021F0B14 ; =0x000003CF + add r0, r5, #0 + ldrb r1, [r4, r1] + bl FUN_022302BC + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0AEC: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r4, r1] + add r0, r5, #0 + bl FUN_022302BC + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0B0C: + bl ErrorHandling + pop {r3, r4, r5, pc} + nop +_021F0B14: .word 0x000003CF +_021F0B18: .word 0x00000356 + thumb_func_end MOD16_021F09E8 + + thumb_func_start MOD16_021F0B1C +MOD16_021F0B1C: ; 0x021F0B1C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r4, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r4, r0 + beq _021F0B64 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r4, r0 + bne _021F0B6E +_021F0B64: + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r4, r5, r6, pc} +_021F0B6E: + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021F0B1C + + thumb_func_start MOD16_021F0B78 +MOD16_021F0B78: ; 0x021F0B78 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, _021F0B98 ; =0x00000356 + ldrh r1, [r4, r0] + lsl r1, r1, #4 + add r2, r4, r1 + add r1, r0, #0 + add r1, #0x8b + ldrb r1, [r2, r1] + add r0, r0, #6 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F0B98: .word 0x00000356 + thumb_func_end MOD16_021F0B78 + + thumb_func_start MOD16_021F0B9C +MOD16_021F0B9C: ; 0x021F0B9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r6, r1, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r2, _021F0CB8 ; =0x00000356 + str r0, [sp, #0x1c] + ldrh r3, [r6, r2] + add r2, #0x88 + ldr r1, _021F0CBC ; =0x021FF7F4 + lsl r7, r3, #4 + add r3, r6, r7 + ldrh r3, [r3, r2] + ldr r2, _021F0CC0 ; =0x0000FFFF + mov r0, #0 +_021F0BC6: + ldrh r4, [r1] + cmp r3, r4 + beq _021F0BD6 + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F0BC6 +_021F0BD6: + ldr r2, _021F0CC4 ; =0x021FF7DC + ldr r4, _021F0CC0 ; =0x0000FFFF + mov r1, #0 +_021F0BDC: + ldrh r5, [r2] + cmp r3, r5 + beq _021F0BEC + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F0BDC +_021F0BEC: + lsl r2, r1, #1 + ldr r1, _021F0CC4 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F0CC0 ; =0x0000FFFF + cmp r1, r2 + bne _021F0C0C + ldr r1, _021F0CC8 ; =0x000003E1 + add r3, r6, r7 + ldrb r1, [r3, r1] + cmp r1, #1 + bls _021F0CAA + lsl r1, r0, #1 + ldr r0, _021F0CBC ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F0CAA +_021F0C0C: + ldr r7, _021F0CCC ; =0x000003CF + mov r4, #0 + add r5, sp, #0x20 +_021F0C12: + ldrb r1, [r6, r7] + add r2, r4, #0 + add r0, r6, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F0C12 + ldr r0, _021F0CCC ; =0x000003CF + ldrb r4, [r6, r0] + mov r0, #0xc0 + add r5, r4, #0 + mul r5, r0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x28 + str r1, [sp] + ldr r3, _021F0CD0 ; =0x00002DB8 + add r1, r6, r5 + ldrh r1, [r1, r3] + add r2, r4, #0 + str r1, [sp, #4] + add r1, sp, #0x20 + str r1, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0xc0 + mul r0, r4 + add r1, r6, r0 + add r0, r3, #0 + add r0, #0x14 + ldr r0, [r1, r0] + sub r3, #0x6c + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + add r3, r6, r3 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r6, #0 + add r3, r3, r5 + bl MOD16_021F2DE0 + ldr r0, _021F0CD4 ; =0x00000355 + add r1, sp, #0x28 + ldrb r0, [r6, r0] + mov r3, #0 + lsl r0, r0, #2 + ldr r2, [r1, r0] +_021F0C80: + ldr r0, [r1] + cmp r0, r2 + bgt _021F0C8E + add r3, r3, #1 + add r1, r1, #4 + cmp r3, #4 + blt _021F0C80 +_021F0C8E: + cmp r3, #4 + bne _021F0C9E + mov r0, #0xd7 + mov r1, #2 + lsl r0, r0, #2 + add sp, #0x38 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0C9E: + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + add sp, #0x38 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0CAA: + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r6, r0] + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0CB8: .word 0x00000356 +_021F0CBC: .word 0x021FF7F4 +_021F0CC0: .word 0x0000FFFF +_021F0CC4: .word 0x021FF7DC +_021F0CC8: .word 0x000003E1 +_021F0CCC: .word 0x000003CF +_021F0CD0: .word 0x00002DB8 +_021F0CD4: .word 0x00000355 + thumb_func_end MOD16_021F0B9C + + thumb_func_start MOD16_021F0CD8 +MOD16_021F0CD8: ; 0x021F0CD8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + lsl r0, r0, #1 + add r1, r4, r0 + ldr r0, _021F0D08 ; =0x0000307C + ldrh r1, [r1, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F0D08: .word 0x0000307C + thumb_func_end MOD16_021F0CD8 + + thumb_func_start MOD16_021F0D0C +MOD16_021F0D0C: ; 0x021F0D0C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r4, r0 + bne _021F0D38 + add r0, r5, #0 + bl MOD16_021F2D88 +_021F0D38: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0D0C + + thumb_func_start MOD16_021F0D3C +MOD16_021F0D3C: ; 0x021F0D3C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r4, r0 + beq _021F0D68 + add r0, r5, #0 + bl MOD16_021F2D88 +_021F0D68: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0D3C + + thumb_func_start MOD16_021F0D6C +MOD16_021F0D6C: ; 0x021F0D6C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r3, _021F0DAC ; =0x000003CF + add r0, r6, #0 + ldrb r2, [r5, r3] + add r3, r3, #1 + ldrb r3, [r5, r3] + add r1, r5, #0 + bl MOD11_02244248 + cmp r4, r0 + bne _021F0DAA + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0DAA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F0DAC: .word 0x000003CF + thumb_func_end MOD16_021F0D6C + + thumb_func_start MOD16_021F0DB0 +MOD16_021F0DB0: ; 0x021F0DB0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r3, _021F0DF0 ; =0x000003CF + add r0, r6, #0 + ldrb r2, [r5, r3] + add r3, r3, #1 + ldrb r3, [r5, r3] + add r1, r5, #0 + bl MOD11_02244248 + cmp r4, r0 + beq _021F0DEE + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0DEE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F0DF0: .word 0x000003CF + thumb_func_end MOD16_021F0DB0 + + thumb_func_start MOD16_021F0DF4 +MOD16_021F0DF4: ; 0x021F0DF4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r2, r0, #0 + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + lsl r1, r2, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + str r0, [sp] + ldr r1, [sp] + add r0, r7, #0 + bl FUN_0222FF88 + str r0, [sp, #0xc] + ldr r1, [r7, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F0E4E + ldr r0, [sp] + add r1, r5, r0 + ldr r0, _021F0EC8 ; =0x0000219C + ldrb r0, [r1, r0] + ldr r1, [sp] + str r0, [sp, #8] + add r0, r7, #0 + bl FUN_022302BC + add r1, r5, r0 + ldr r0, _021F0EC8 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + b _021F0E5A +_021F0E4E: + ldr r0, [sp] + add r1, r5, r0 + ldr r0, _021F0EC8 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + str r0, [sp, #8] +_021F0E5A: + ldr r1, [sp] + add r0, r7, #0 + mov r4, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F0EC4 +_021F0E68: + ldr r0, [sp, #0xc] + add r1, r4, #0 + bl FUN_0206B9B0 + ldr r1, [sp, #8] + add r6, r0, #0 + cmp r4, r1 + beq _021F0EB6 + ldr r1, [sp, #4] + cmp r4, r1 + beq _021F0EB6 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F0EB6 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F0EB6 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F0ECC ; =0x000001EE + cmp r0, r1 + beq _021F0EB6 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r0, #1 + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r5, r0] +_021F0EB6: + ldr r1, [sp] + add r0, r7, #0 + add r4, r4, #1 + bl MOD11_0222FFC8 + cmp r4, r0 + blt _021F0E68 +_021F0EC4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F0EC8: .word 0x0000219C +_021F0ECC: .word 0x000001EE + thumb_func_end MOD16_021F0DF4 + + thumb_func_start MOD16_021F0ED0 +MOD16_021F0ED0: ; 0x021F0ED0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, _021F0EE8 ; =0x00000356 + ldrh r1, [r4, r0] + add r0, r0, #6 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F0EE8: .word 0x00000356 + thumb_func_end MOD16_021F0ED0 + + thumb_func_start MOD16_021F0EEC +MOD16_021F0EEC: ; 0x021F0EEC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, _021F0F0C ; =0x00000356 + ldrh r1, [r4, r0] + lsl r1, r1, #4 + add r2, r4, r1 + add r1, r0, #0 + add r1, #0x88 + ldrh r1, [r2, r1] + add r0, r0, #6 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F0F0C: .word 0x00000356 + thumb_func_end MOD16_021F0EEC + + thumb_func_start MOD16_021F0F10 +MOD16_021F0F10: ; 0x021F0F10 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + lsl r1, r7, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + mov r3, #0xb7 + mov r2, #2 + mov r0, #0xc0 + add r6, r1, #0 + mul r6, r0 + add r0, r5, r6 + lsl r3, r3, #6 + ldr r4, [r0, r3] + lsl r2, r2, #0x14 + tst r2, r4 + beq _021F0F50 + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0F50: + ldr r2, _021F0FE4 ; =0x000003CF + ldrb r4, [r5, r2] + cmp r4, r1 + beq _021F0FD6 + cmp r7, #3 + beq _021F0FD6 + add r4, r5, r1 + add r1, r2, #0 + sub r1, #0x3f + ldrb r1, [r4, r1] + cmp r1, #0 + beq _021F0F6E + sub r2, #0x73 + str r1, [r5, r2] + pop {r3, r4, r5, r6, r7, pc} +_021F0F6E: + add r1, r3, #0 + sub r1, #0x59 + ldrb r1, [r0, r1] + cmp r1, #0x17 + beq _021F0F80 + cmp r1, #0x2a + beq _021F0F80 + cmp r1, #0x47 + bne _021F0F88 +_021F0F80: + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0F88: + sub r3, #0x80 + add r7, r5, r3 + ldrh r0, [r7, r6] + mov r1, #0x18 + bl FUN_02068678 + add r4, r0, #0 + ldrh r0, [r7, r6] + mov r1, #0x19 + bl FUN_02068678 + add r6, r0, #0 + cmp r4, #0 + beq _021F0FC2 + cmp r6, #0 + beq _021F0FC2 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F0FBA + mov r0, #0xd7 + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0FBA: + mov r0, #0xd7 + lsl r0, r0, #2 + str r6, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0FC2: + cmp r4, #0 + beq _021F0FCE + mov r0, #0xd7 + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0FCE: + mov r0, #0xd7 + lsl r0, r0, #2 + str r6, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0FD6: + ldr r0, _021F0FE8 ; =0x00002D67 + add r1, r5, r6 + ldrb r1, [r1, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F0FE4: .word 0x000003CF +_021F0FE8: .word 0x00002D67 + thumb_func_end MOD16_021F0F10 + + thumb_func_start MOD16_021F0FEC +MOD16_021F0FEC: ; 0x021F0FEC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + mov r2, #2 + mov ip, r1 + add r6, r5, r1 + mov r1, #0xb7 + lsl r1, r1, #6 + ldr r3, [r6, r1] + lsl r2, r2, #0x14 + tst r2, r3 + beq _021F102C + mov r4, #0 + b _021F1098 +_021F102C: + cmp r4, #0 + beq _021F1034 + cmp r4, #2 + bne _021F1094 +_021F1034: + mov r1, #0x39 + add r2, r5, r0 + lsl r1, r1, #4 + ldrb r4, [r2, r1] + cmp r4, #0 + beq _021F1046 + sub r1, #0x34 + str r4, [r5, r1] + b _021F1098 +_021F1046: + mov r1, ip + add r2, r5, r1 + ldr r1, _021F10C0 ; =0x00002D67 + ldrb r4, [r2, r1] + cmp r4, #0x17 + beq _021F1098 + cmp r4, #0x2a + beq _021F1098 + cmp r4, #0x47 + beq _021F1098 + sub r1, #0x27 + add r6, r5, r1 + mov r1, #0xc0 + mul r1, r0 + ldrh r0, [r6, r1] + str r1, [sp] + mov r1, #0x18 + bl FUN_02068678 + add r4, r0, #0 + ldr r0, [sp] + mov r1, #0x19 + ldrh r0, [r6, r0] + bl FUN_02068678 + cmp r4, #0 + beq _021F108C + cmp r0, #0 + beq _021F108C + cmp r4, r7 + beq _021F1088 + cmp r0, r7 + bne _021F1098 +_021F1088: + mov r4, #0 + b _021F1098 +_021F108C: + cmp r4, #0 + bne _021F1098 + add r4, r0, #0 + b _021F1098 +_021F1094: + sub r1, #0x59 + ldrb r4, [r6, r1] +_021F1098: + cmp r4, #0 + bne _021F10A6 + mov r0, #0xd7 + mov r1, #2 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F10A6: + cmp r4, r7 + bne _021F10B4 + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F10B4: + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} + nop +_021F10C0: .word 0x00002D67 + thumb_func_end MOD16_021F0FEC + + thumb_func_start MOD16_021F10C4 +MOD16_021F10C4: ; 0x021F10C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r0, #0 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [sp, #0x10] + str r0, [r5, r1] + add r4, r0, #0 +_021F10E0: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, _021F116C ; =0x000003CF + ldrb r2, [r5, r0] + mov r0, #0xc0 + mul r0, r2 + add r0, r5, r0 + add r1, r4, r0 + ldr r0, _021F1170 ; =0x00002D4C + ldrh r6, [r1, r0] + add r0, r7, #0 + add r1, r5, #0 + add r3, r6, #0 + bl MOD16_021F32DC + add r3, r0, #0 + cmp r6, #0 + beq _021F115C + ldr r0, _021F116C ; =0x000003CF + add r1, r5, #0 + ldrb r0, [r5, r0] + add r2, r6, #0 + str r0, [sp] + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r0, [r5, r0] + str r0, [sp, #4] + mov r0, #0x28 + str r0, [sp, #8] + add r0, sp, #0x14 + str r0, [sp, #0xc] + add r0, r7, #0 + bl MOD11_02246274 + cmp r0, #0x78 + bne _021F112C + mov r0, #0x50 + b _021F1142 +_021F112C: + cmp r0, #0xf0 + bne _021F1134 + mov r0, #0xa0 + b _021F1142 +_021F1134: + cmp r0, #0x1e + bne _021F113C + mov r0, #0x14 + b _021F1142 +_021F113C: + cmp r0, #0xf + bne _021F1142 + mov r0, #0xa +_021F1142: + ldr r2, [sp, #0x14] + ldr r1, _021F1174 ; =0x00140808 + tst r1, r2 + beq _021F114C + mov r0, #0 +_021F114C: + mov r1, #0xd7 + lsl r1, r1, #2 + ldr r1, [r5, r1] + cmp r1, r0 + bhs _021F115C + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r5, r1] +_021F115C: + ldr r0, [sp, #0x10] + add r4, r4, #2 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #4 + blt _021F10E0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F116C: .word 0x000003CF +_021F1170: .word 0x00002D4C +_021F1174: .word 0x00140808 + thumb_func_end MOD16_021F10C4 + + thumb_func_start MOD16_021F1178 +MOD16_021F1178: ; 0x021F1178 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r4, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r3, _021F1208 ; =0x000003CF + add r0, r5, #0 + ldrb r6, [r4, r3] + sub r3, #0x79 + ldrh r3, [r4, r3] + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021F32DC + mov r2, #0x3d + str r6, [sp] + lsl r2, r2, #4 + add r3, r0, #0 + ldrb r0, [r4, r2] + sub r2, #0x7a + add r1, r4, #0 + str r0, [sp, #4] + mov r0, #0x28 + str r0, [sp, #8] + add r0, sp, #0x14 + str r0, [sp, #0xc] + ldrh r2, [r4, r2] + add r0, r5, #0 + bl MOD11_02246274 + cmp r0, #0x78 + bne _021F11D6 + mov r0, #0x50 + b _021F11EC +_021F11D6: + cmp r0, #0xf0 + bne _021F11DE + mov r0, #0xa0 + b _021F11EC +_021F11DE: + cmp r0, #0x1e + bne _021F11E6 + mov r0, #0x14 + b _021F11EC +_021F11E6: + cmp r0, #0xf + bne _021F11EC + mov r0, #0xa +_021F11EC: + ldr r2, [sp, #0x14] + ldr r1, _021F120C ; =0x00140808 + tst r1, r2 + beq _021F11F6 + mov r0, #0 +_021F11F6: + cmp r0, r7 + bne _021F1202 + ldr r1, [sp, #0x10] + add r0, r4, #0 + bl MOD16_021F2D88 +_021F1202: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1208: .word 0x000003CF +_021F120C: .word 0x00140808 + thumb_func_end MOD16_021F1178 + + thumb_func_start MOD16_021F1210 +MOD16_021F1210: ; 0x021F1210 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp] + bl MOD16_021F2D54 + add r4, r0, #0 + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #0x10] + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #0xc] + lsl r1, r4, #0x18 + ldr r0, [sp] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + ldr r1, [r7, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F126A + ldr r0, [sp] + add r1, r0, r6 + ldr r0, _021F12FC ; =0x0000219C + ldrb r0, [r1, r0] + add r1, r6, #0 + str r0, [sp, #8] + add r0, r7, #0 + bl FUN_022302BC + ldr r1, [sp] + add r1, r1, r0 + ldr r0, _021F12FC ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + b _021F1276 +_021F126A: + ldr r0, [sp] + add r1, r0, r6 + ldr r0, _021F12FC ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + str r0, [sp, #8] +_021F1276: + add r0, r7, #0 + add r1, r6, #0 + bl FUN_0222FF88 + str r0, [sp, #0x14] + add r0, r7, #0 + add r1, r6, #0 + mov r5, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F12F8 +_021F128E: + ldr r0, [sp, #0x14] + add r1, r5, #0 + bl FUN_0206B9B0 + ldr r1, [sp, #8] + add r4, r0, #0 + cmp r5, r1 + beq _021F12EA + ldr r1, [sp, #4] + cmp r5, r1 + beq _021F12EA + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F12EA + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F12EA + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F1300 ; =0x000001EE + cmp r0, r1 + beq _021F12EA + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0x10] + tst r0, r1 + beq _021F12EA + ldr r0, [sp] + ldr r1, [sp, #0xc] + bl MOD16_021F2D88 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021F12EA: + add r0, r7, #0 + add r1, r6, #0 + add r5, r5, #1 + bl MOD11_0222FFC8 + cmp r5, r0 + blt _021F128E +_021F12F8: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F12FC: .word 0x0000219C +_021F1300: .word 0x000001EE + thumb_func_end MOD16_021F1210 + + thumb_func_start MOD16_021F1304 +MOD16_021F1304: ; 0x021F1304 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp] + bl MOD16_021F2D54 + add r4, r0, #0 + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #0x10] + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #0xc] + lsl r1, r4, #0x18 + ldr r0, [sp] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + ldr r1, [r7, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F135E + ldr r0, [sp] + add r1, r0, r6 + ldr r0, _021F13F0 ; =0x0000219C + ldrb r0, [r1, r0] + add r1, r6, #0 + str r0, [sp, #8] + add r0, r7, #0 + bl FUN_022302BC + ldr r1, [sp] + add r1, r1, r0 + ldr r0, _021F13F0 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + b _021F136A +_021F135E: + ldr r0, [sp] + add r1, r0, r6 + ldr r0, _021F13F0 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + str r0, [sp, #8] +_021F136A: + add r0, r7, #0 + add r1, r6, #0 + bl FUN_0222FF88 + str r0, [sp, #0x14] + add r0, r7, #0 + add r1, r6, #0 + mov r5, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F13EC +_021F1382: + ldr r0, [sp, #0x14] + add r1, r5, #0 + bl FUN_0206B9B0 + ldr r1, [sp, #8] + add r4, r0, #0 + cmp r5, r1 + beq _021F13DE + ldr r1, [sp, #4] + cmp r5, r1 + beq _021F13DE + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F13DE + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F13DE + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F13F4 ; =0x000001EE + cmp r0, r1 + beq _021F13DE + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0x10] + tst r0, r1 + bne _021F13DE + ldr r0, [sp] + ldr r1, [sp, #0xc] + bl MOD16_021F2D88 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021F13DE: + add r0, r7, #0 + add r1, r6, #0 + add r5, r5, #1 + bl MOD11_0222FFC8 + cmp r5, r0 + blt _021F1382 +_021F13EC: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F13F0: .word 0x0000219C +_021F13F4: .word 0x000001EE + thumb_func_end MOD16_021F1304 + + thumb_func_start MOD16_021F13F8 +MOD16_021F13F8: ; 0x021F13F8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #6 + lsl r1, r1, #6 + ldr r2, [r4, r1] + mov r1, #3 + tst r1, r2 + beq _021F141C + mov r1, #2 + str r1, [r4, r0] +_021F141C: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0xc + tst r0, r1 + beq _021F1430 + mov r0, #0xd7 + mov r1, #3 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F1430: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x30 + tst r0, r1 + beq _021F1444 + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F1444: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0xc0 + tst r0, r1 + beq _021F1458 + mov r0, #0xd7 + mov r1, #4 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F1458: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #2 + lsl r0, r0, #0xe + tst r0, r1 + beq _021F146E + mov r0, #0xd7 + mov r1, #5 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F146E: + pop {r4, pc} + thumb_func_end MOD16_021F13F8 + + thumb_func_start MOD16_021F1470 +MOD16_021F1470: ; 0x021F1470 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + ldr r0, _021F14A4 ; =0x00000356 + ldrh r2, [r5, r0] + add r0, #0x88 + lsl r2, r2, #4 + add r2, r5, r2 + ldrh r0, [r2, r0] + cmp r4, r0 + bne _021F14A2 + add r0, r5, #0 + bl MOD16_021F2D88 +_021F14A2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F14A4: .word 0x00000356 + thumb_func_end MOD16_021F1470 + + thumb_func_start MOD16_021F14A8 +MOD16_021F14A8: ; 0x021F14A8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + ldr r0, _021F14DC ; =0x00000356 + ldrh r2, [r5, r0] + add r0, #0x88 + lsl r2, r2, #4 + add r2, r5, r2 + ldrh r0, [r2, r0] + cmp r4, r0 + beq _021F14DA + add r0, r5, #0 + bl MOD16_021F2D88 +_021F14DA: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F14DC: .word 0x00000356 + thumb_func_end MOD16_021F14A8 + + thumb_func_start MOD16_021F14E0 +MOD16_021F14E0: ; 0x021F14E0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + add r1, r0, r6 + ldr r0, _021F1530 ; =0x00002D58 + ldrsb r0, [r1, r0] + cmp r0, r7 + bge _021F152E + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F152E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1530: .word 0x00002D58 + thumb_func_end MOD16_021F14E0 + + thumb_func_start MOD16_021F1534 +MOD16_021F1534: ; 0x021F1534 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + add r1, r0, r6 + ldr r0, _021F1584 ; =0x00002D58 + ldrsb r0, [r1, r0] + cmp r0, r7 + ble _021F1582 + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F1582: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1584: .word 0x00002D58 + thumb_func_end MOD16_021F1534 + + thumb_func_start MOD16_021F1588 +MOD16_021F1588: ; 0x021F1588 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + add r1, r0, r6 + ldr r0, _021F15D8 ; =0x00002D58 + ldrsb r0, [r1, r0] + cmp r7, r0 + bne _021F15D6 + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F15D6: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F15D8: .word 0x00002D58 + thumb_func_end MOD16_021F1588 + + thumb_func_start MOD16_021F15DC +MOD16_021F15DC: ; 0x021F15DC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + add r1, r0, r6 + ldr r0, _021F162C ; =0x00002D58 + ldrsb r0, [r1, r0] + cmp r7, r0 + beq _021F162A + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F162A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F162C: .word 0x00002D58 + thumb_func_end MOD16_021F15DC + + thumb_func_start MOD16_021F1630 +MOD16_021F1630: ; 0x021F1630 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r6, r1, #0 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r6, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x1c] + cmp r4, #1 + bne _021F1662 + ldr r0, _021F1738 ; =0x00000355 + ldrb r1, [r6, r0] + add r0, #0x17 + add r1, r6, r1 + ldrb r0, [r1, r0] + str r0, [sp, #0x18] + b _021F1666 +_021F1662: + mov r0, #0x64 + str r0, [sp, #0x18] +_021F1666: + ldr r2, _021F173C ; =0x00000356 + ldr r1, _021F1740 ; =0x021FF7F4 + ldrh r3, [r6, r2] + add r2, #0x88 + mov r0, #0 + lsl r7, r3, #4 + add r3, r6, r7 + ldrh r3, [r3, r2] + ldr r2, _021F1744 ; =0x0000FFFF +_021F1678: + ldrh r4, [r1] + cmp r3, r4 + beq _021F1688 + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F1678 +_021F1688: + ldr r2, _021F1748 ; =0x021FF7DC + ldr r4, _021F1744 ; =0x0000FFFF + mov r1, #0 +_021F168E: + ldrh r5, [r2] + cmp r3, r5 + beq _021F169E + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F168E +_021F169E: + lsl r2, r1, #1 + ldr r1, _021F1748 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F1744 ; =0x0000FFFF + cmp r1, r2 + bne _021F16BE + ldr r1, _021F174C ; =0x000003E1 + add r3, r6, r7 + ldrb r1, [r3, r1] + cmp r1, #1 + bls _021F1734 + lsl r1, r0, #1 + ldr r0, _021F1740 ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F1734 +_021F16BE: + ldr r7, _021F1750 ; =0x000003CF + mov r4, #0 + add r5, sp, #0x20 +_021F16C4: + ldrb r1, [r6, r7] + add r2, r4, #0 + add r0, r6, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F16C4 + ldr r0, _021F1750 ; =0x000003CF + ldrb r4, [r6, r0] + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x20 + str r1, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + mov r0, #0xc0 + mul r0, r4 + ldr r3, _021F1754 ; =0x00002DCC + add r4, r6, r0 + ldr r0, [r4, r3] + ldr r2, _021F173C ; =0x00000356 + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + sub r3, #0x14 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldrh r2, [r6, r2] + ldrh r3, [r4, r3] + ldr r0, [sp, #0x14] + add r1, r6, #0 + bl MOD16_021F2EE8 + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r2, [r6, r1] + mov r1, #0xc0 + mul r1, r2 + add r2, r6, r1 + ldr r1, _021F1758 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, r0 + bhi _021F1734 + ldr r1, [sp, #0x1c] + add r0, r6, #0 + bl MOD16_021F2D88 +_021F1734: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1738: .word 0x00000355 +_021F173C: .word 0x00000356 +_021F1740: .word 0x021FF7F4 +_021F1744: .word 0x0000FFFF +_021F1748: .word 0x021FF7DC +_021F174C: .word 0x000003E1 +_021F1750: .word 0x000003CF +_021F1754: .word 0x00002DCC +_021F1758: .word 0x00002D8C + thumb_func_end MOD16_021F1630 + + thumb_func_start MOD16_021F175C +MOD16_021F175C: ; 0x021F175C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r6, r1, #0 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r6, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x1c] + cmp r4, #1 + bne _021F178E + ldr r0, _021F1864 ; =0x00000355 + ldrb r1, [r6, r0] + add r0, #0x17 + add r1, r6, r1 + ldrb r0, [r1, r0] + str r0, [sp, #0x18] + b _021F1792 +_021F178E: + mov r0, #0x64 + str r0, [sp, #0x18] +_021F1792: + ldr r2, _021F1868 ; =0x00000356 + ldr r1, _021F186C ; =0x021FF7F4 + ldrh r3, [r6, r2] + add r2, #0x88 + mov r0, #0 + lsl r7, r3, #4 + add r3, r6, r7 + ldrh r3, [r3, r2] + ldr r2, _021F1870 ; =0x0000FFFF +_021F17A4: + ldrh r4, [r1] + cmp r3, r4 + beq _021F17B4 + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F17A4 +_021F17B4: + ldr r2, _021F1874 ; =0x021FF7DC + ldr r4, _021F1870 ; =0x0000FFFF + mov r1, #0 +_021F17BA: + ldrh r5, [r2] + cmp r3, r5 + beq _021F17CA + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F17BA +_021F17CA: + lsl r2, r1, #1 + ldr r1, _021F1874 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F1870 ; =0x0000FFFF + cmp r1, r2 + bne _021F17EA + ldr r1, _021F1878 ; =0x000003E1 + add r3, r6, r7 + ldrb r1, [r3, r1] + cmp r1, #1 + bls _021F1860 + lsl r1, r0, #1 + ldr r0, _021F186C ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F1860 +_021F17EA: + ldr r7, _021F187C ; =0x000003CF + mov r4, #0 + add r5, sp, #0x20 +_021F17F0: + ldrb r1, [r6, r7] + add r2, r4, #0 + add r0, r6, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F17F0 + ldr r0, _021F187C ; =0x000003CF + ldrb r4, [r6, r0] + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x20 + str r1, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + mov r0, #0xc0 + mul r0, r4 + ldr r3, _021F1880 ; =0x00002DCC + add r4, r6, r0 + ldr r0, [r4, r3] + ldr r2, _021F1868 ; =0x00000356 + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + sub r3, #0x14 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldrh r2, [r6, r2] + ldrh r3, [r4, r3] + ldr r0, [sp, #0x14] + add r1, r6, #0 + bl MOD16_021F2EE8 + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r2, [r6, r1] + mov r1, #0xc0 + mul r1, r2 + add r2, r6, r1 + ldr r1, _021F1884 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, r0 + bls _021F1860 + ldr r1, [sp, #0x1c] + add r0, r6, #0 + bl MOD16_021F2D88 +_021F1860: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1864: .word 0x00000355 +_021F1868: .word 0x00000356 +_021F186C: .word 0x021FF7F4 +_021F1870: .word 0x0000FFFF +_021F1874: .word 0x021FF7DC +_021F1878: .word 0x000003E1 +_021F187C: .word 0x000003CF +_021F1880: .word 0x00002DCC +_021F1884: .word 0x00002D8C + thumb_func_end MOD16_021F175C + + thumb_func_start MOD16_021F1888 +MOD16_021F1888: ; 0x021F1888 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r6, #0 + beq _021F1918 + cmp r6, #1 + beq _021F18C4 + cmp r6, #3 + beq _021F18EA + pop {r3, r4, r5, r6, r7, pc} +_021F18C4: + mov r2, #0xc0 + mul r2, r0 + ldr r0, _021F1940 ; =0x00002D4C + mov r1, #0 + add r3, r5, r2 +_021F18CE: + ldrh r2, [r3, r0] + cmp r4, r2 + beq _021F18DC + add r1, r1, #1 + add r3, r3, #2 + cmp r1, #4 + blt _021F18CE +_021F18DC: + cmp r1, #4 + bge _021F193C + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F18EA: + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + ldr r1, _021F1944 ; =0x00002D8C + ldr r1, [r0, r1] + cmp r1, #0 + beq _021F193C + ldr r1, _021F1940 ; =0x00002D4C + mov r3, #0 +_021F18FC: + ldrh r2, [r0, r1] + cmp r4, r2 + beq _021F190A + add r3, r3, #1 + add r0, r0, #2 + cmp r3, #4 + blt _021F18FC +_021F190A: + cmp r3, #4 + bge _021F193C + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F1918: + lsl r0, r0, #3 + add r3, r5, r0 + mov r0, #0x37 + mov r1, #0 + lsl r0, r0, #4 +_021F1922: + ldrh r2, [r3, r0] + cmp r4, r2 + beq _021F1930 + add r1, r1, #1 + add r3, r3, #2 + cmp r1, #4 + blt _021F1922 +_021F1930: + cmp r1, #4 + bge _021F193C + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F193C: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1940: .word 0x00002D4C +_021F1944: .word 0x00002D8C + thumb_func_end MOD16_021F1888 + + thumb_func_start MOD16_021F1948 +MOD16_021F1948: ; 0x021F1948 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r6, #0 + beq _021F19D8 + cmp r6, #1 + beq _021F1984 + cmp r6, #3 + beq _021F19AA + pop {r3, r4, r5, r6, r7, pc} +_021F1984: + mov r2, #0xc0 + mul r2, r0 + ldr r0, _021F1A00 ; =0x00002D4C + mov r1, #0 + add r3, r5, r2 +_021F198E: + ldrh r2, [r3, r0] + cmp r4, r2 + beq _021F199C + add r1, r1, #1 + add r3, r3, #2 + cmp r1, #4 + blt _021F198E +_021F199C: + cmp r1, #4 + bne _021F19FC + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F19AA: + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + ldr r1, _021F1A04 ; =0x00002D8C + ldr r1, [r0, r1] + cmp r1, #0 + beq _021F19FC + ldr r1, _021F1A00 ; =0x00002D4C + mov r3, #0 +_021F19BC: + ldrh r2, [r0, r1] + cmp r4, r2 + beq _021F19CA + add r3, r3, #1 + add r0, r0, #2 + cmp r3, #4 + blt _021F19BC +_021F19CA: + cmp r3, #4 + bne _021F19FC + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F19D8: + lsl r0, r0, #3 + add r3, r5, r0 + mov r0, #0x37 + mov r1, #0 + lsl r0, r0, #4 +_021F19E2: + ldrh r2, [r3, r0] + cmp r4, r2 + beq _021F19F0 + add r1, r1, #1 + add r3, r3, #2 + cmp r1, #4 + blt _021F19E2 +_021F19F0: + cmp r1, #4 + bne _021F19FC + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F19FC: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1A00: .word 0x00002D4C +_021F1A04: .word 0x00002D8C + thumb_func_end MOD16_021F1948 + + thumb_func_start MOD16_021F1A08 +MOD16_021F1A08: ; 0x021F1A08 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r6, #0 + beq _021F1A70 + cmp r6, #1 + bne _021F1AA0 + mov r2, #0xc0 + mul r2, r0 + add r0, r5, r2 + ldr r2, _021F1AA4 ; =0x000003DE + ldr r3, _021F1AA8 ; =0x00002D4C + mov r1, #0 +_021F1A4A: + ldrh r6, [r0, r3] + cmp r6, #0 + beq _021F1A5A + lsl r6, r6, #4 + add r6, r5, r6 + ldrh r6, [r6, r2] + cmp r4, r6 + beq _021F1A62 +_021F1A5A: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _021F1A4A +_021F1A62: + cmp r1, #4 + bge _021F1AA0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F1A70: + ldr r2, _021F1AA4 ; =0x000003DE + lsl r0, r0, #3 + add r3, r2, #0 + mov r1, #0 + add r0, r5, r0 + sub r3, #0x6e +_021F1A7C: + ldrh r6, [r0, r3] + cmp r6, #0 + beq _021F1A8C + lsl r6, r6, #4 + add r6, r5, r6 + ldrh r6, [r6, r2] + cmp r4, r6 + beq _021F1A94 +_021F1A8C: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _021F1A7C +_021F1A94: + cmp r1, #4 + bge _021F1AA0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1AA0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1AA4: .word 0x000003DE +_021F1AA8: .word 0x00002D4C + thumb_func_end MOD16_021F1A08 + + thumb_func_start MOD16_021F1AAC +MOD16_021F1AAC: ; 0x021F1AAC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r6, #0 + beq _021F1B14 + cmp r6, #1 + bne _021F1B44 + mov r2, #0xc0 + mul r2, r0 + add r0, r5, r2 + ldr r2, _021F1B48 ; =0x000003DE + ldr r3, _021F1B4C ; =0x00002D4C + mov r1, #0 +_021F1AEE: + ldrh r6, [r0, r3] + cmp r6, #0 + beq _021F1AFE + lsl r6, r6, #4 + add r6, r5, r6 + ldrh r6, [r6, r2] + cmp r4, r6 + beq _021F1B06 +_021F1AFE: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _021F1AEE +_021F1B06: + cmp r1, #4 + bne _021F1B44 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F1B14: + ldr r2, _021F1B48 ; =0x000003DE + lsl r0, r0, #3 + add r3, r2, #0 + mov r1, #0 + add r0, r5, r0 + sub r3, #0x6e +_021F1B20: + ldrh r6, [r0, r3] + cmp r6, #0 + beq _021F1B30 + lsl r6, r6, #4 + add r6, r5, r6 + ldrh r6, [r6, r2] + cmp r4, r6 + beq _021F1B38 +_021F1B30: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _021F1B20 +_021F1B38: + cmp r1, #4 + bne _021F1B44 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1B44: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1B48: .word 0x000003DE +_021F1B4C: .word 0x00002D4C + thumb_func_end MOD16_021F1AAC + + thumb_func_start MOD16_021F1B50 +MOD16_021F1B50: ; 0x021F1B50 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r4, #0 + beq _021F1B88 + cmp r4, #1 + beq _021F1BA2 + pop {r3, r4, r5, r6, r7, pc} +_021F1B88: + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F1BBC ; =0x00002DC8 + add r1, r5, r1 + ldr r0, [r1, r0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1d + beq _021F1BBA + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F1BA2: + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F1BBC ; =0x00002DC8 + add r1, r5, r1 + ldr r0, [r1, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1d + beq _021F1BBA + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1BBA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1BBC: .word 0x00002DC8 + thumb_func_end MOD16_021F1B50 + + thumb_func_start MOD16_021F1BC0 +MOD16_021F1BC0: ; 0x021F1BC0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + cmp r5, #0 + beq _021F1BE6 + cmp r5, #1 + beq _021F1C04 + pop {r3, r4, r5, pc} +_021F1BE6: + ldr r2, _021F1C24 ; =0x00000356 + ldrh r0, [r4, r2] + add r2, #0x79 + ldrb r3, [r4, r2] + mov r2, #0xc0 + mul r2, r3 + add r3, r4, r2 + ldr r2, _021F1C28 ; =0x00002DE8 + ldrh r2, [r3, r2] + cmp r0, r2 + bne _021F1C20 + add r0, r4, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, pc} +_021F1C04: + ldr r2, _021F1C24 ; =0x00000356 + ldrh r0, [r4, r2] + add r2, #0x79 + ldrb r3, [r4, r2] + mov r2, #0xc0 + mul r2, r3 + add r3, r4, r2 + ldr r2, _021F1C2C ; =0x00002DEC + ldrh r2, [r3, r2] + cmp r0, r2 + bne _021F1C20 + add r0, r4, #0 + bl MOD16_021F2D88 +_021F1C20: + pop {r3, r4, r5, pc} + nop +_021F1C24: .word 0x00000356 +_021F1C28: .word 0x00002DE8 +_021F1C2C: .word 0x00002DEC + thumb_func_end MOD16_021F1BC0 + + thumb_func_start MOD16_021F1C30 +MOD16_021F1C30: ; 0x021F1C30 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0xd9 + lsl r1, r1, #2 + ldrb r2, [r4, r1] + mov r0, #0xb + orr r0, r2 + strb r0, [r4, r1] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021F1C30 + + thumb_func_start MOD16_021F1C4C +MOD16_021F1C4C: ; 0x021F1C4C + bx lr + .align 2, 0 + thumb_func_end MOD16_021F1C4C + + thumb_func_start MOD16_021F1C50 +MOD16_021F1C50: ; 0x021F1C50 + bx lr + .align 2, 0 + thumb_func_end MOD16_021F1C50 + + thumb_func_start MOD16_021F1C54 +MOD16_021F1C54: ; 0x021F1C54 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F1C84 ; =0x00002DB8 + add r1, r4, r1 + ldrh r1, [r1, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F1C84: .word 0x00002DB8 + thumb_func_end MOD16_021F1C54 + + thumb_func_start MOD16_021F1C88 +MOD16_021F1C88: ; 0x021F1C88 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + ldr r1, _021F1CE4 ; =0x000003CF + add r2, r0, #0 + ldrb r0, [r4, r1] + cmp r0, r2 + beq _021F1CC8 + lsl r2, r2, #1 + add r2, r4, r2 + sub r1, #0x3b + ldrh r1, [r2, r1] + add r0, r4, #0 + mov r2, #1 + bl MOD11_0224C12C + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} +_021F1CC8: + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _021F1CE8 ; =0x00002DB8 + add r0, r4, #0 + ldrh r1, [r2, r1] + mov r2, #1 + bl MOD11_0224C12C + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_021F1CE4: .word 0x000003CF +_021F1CE8: .word 0x00002DB8 + thumb_func_end MOD16_021F1C88 + + thumb_func_start MOD16_021F1CEC +MOD16_021F1CEC: ; 0x021F1CEC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + ldr r0, _021F1D4C ; =0x000003CF + mov r1, #1 + add r3, r6, #0 + ldrb r2, [r5, r0] + and r3, r1 + and r1, r2 + cmp r3, r1 + bne _021F1D36 + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + ldr r0, _021F1D50 ; =0x00002DB8 + b _021F1D3C +_021F1D36: + lsl r1, r6, #1 + add r1, r5, r1 + sub r0, #0x3b +_021F1D3C: + ldrh r0, [r1, r0] + cmp r0, r4 + bne _021F1D4A + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1D4A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1D4C: .word 0x000003CF +_021F1D50: .word 0x00002DB8 + thumb_func_end MOD16_021F1CEC + + thumb_func_start MOD16_021F1D54 +MOD16_021F1D54: ; 0x021F1D54 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + tst r0, r4 + beq _021F1D80 + add r0, r5, #0 + bl MOD16_021F2D88 +_021F1D80: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F1D54 + + thumb_func_start MOD16_021F1D84 +MOD16_021F1D84: ; 0x021F1D84 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r4, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r7, #0 + bl MOD11_02230270 + cmp r4, #4 + beq _021F1DC2 + mov r1, #1 + lsl r1, r1, #0xa + cmp r4, r1 + beq _021F1DD8 + pop {r3, r4, r5, r6, r7, pc} +_021F1DC2: + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1e + lsr r1, r0, #0x1e + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F1DD8: + lsl r0, r0, #3 + add r2, r5, r0 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r2, r0] + sub r1, #0xa4 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1e + str r0, [r5, r1] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F1D84 + + thumb_func_start MOD16_021F1DEC +MOD16_021F1DEC: ; 0x021F1DEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp] + bl MOD16_021F2D54 + add r4, r0, #0 + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #8] + lsl r1, r4, #0x18 + ldr r0, [sp] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + mov r4, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F1E74 + ldr r0, [sp] + add r0, r0, r6 + str r0, [sp, #4] +_021F1E2C: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_02230014 + ldr r2, [sp, #4] + ldr r1, _021F1E78 ; =0x0000219C + str r0, [sp, #0xc] + ldrb r1, [r2, r1] + cmp r4, r1 + beq _021F1E66 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + ldr r0, [sp, #0xc] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + cmp r7, r0 + beq _021F1E66 + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD16_021F2D88 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021F1E66: + add r0, r5, #0 + add r1, r6, #0 + add r4, r4, #1 + bl MOD11_0222FFC8 + cmp r4, r0 + blt _021F1E2C +_021F1E74: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1E78: .word 0x0000219C + thumb_func_end MOD16_021F1DEC + + thumb_func_start MOD16_021F1E7C +MOD16_021F1E7C: ; 0x021F1E7C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp, #4] + bl MOD16_021F2D54 + add r4, r0, #0 + ldr r0, [sp, #4] + bl MOD16_021F2D54 + str r0, [sp, #0x10] + lsl r1, r4, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + str r0, [sp, #8] + ldr r0, [sp] + ldr r1, [sp, #8] + mov r7, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F1F16 + ldr r1, [sp, #4] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0xc] +_021F1EBE: + ldr r0, [sp] + ldr r1, [sp, #8] + add r2, r7, #0 + bl FUN_02230014 + add r5, r0, #0 + ldr r1, [sp, #0xc] + ldr r0, _021F1F1C ; =0x0000219C + ldrb r0, [r1, r0] + cmp r7, r0 + beq _021F1F08 + mov r4, #0 +_021F1ED6: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x3a + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, #0x42 + mov r2, #0 + bl FUN_020671BC + cmp r6, r0 + beq _021F1EFE + ldr r0, [sp, #4] + ldr r1, [sp, #0x10] + bl MOD16_021F2D88 + b _021F1F04 +_021F1EFE: + add r4, r4, #1 + cmp r4, #4 + blt _021F1ED6 +_021F1F04: + cmp r4, #4 + bne _021F1F16 +_021F1F08: + ldr r0, [sp] + ldr r1, [sp, #8] + add r7, r7, #1 + bl MOD11_0222FFC8 + cmp r7, r0 + blt _021F1EBE +_021F1F16: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021F1F1C: .word 0x0000219C + thumb_func_end MOD16_021F1E7C + + thumb_func_start MOD16_021F1F20 +MOD16_021F1F20: ; 0x021F1F20 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_02249E58 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021F1F20 + + thumb_func_start MOD16_021F1F50 +MOD16_021F1F50: ; 0x021F1F50 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r1, _021F1F78 ; =0x000003CF + mov r0, #0xc0 + ldrb r2, [r4, r1] + mul r0, r2 + add r2, r4, r0 + add r0, r1, #0 + sub r0, #0x7a + ldrb r0, [r4, r0] + sub r1, #0x73 + add r2, r2, r0 + ldr r0, _021F1F7C ; =0x00002D6C + ldrb r0, [r2, r0] + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_021F1F78: .word 0x000003CF +_021F1F7C: .word 0x00002D6C + thumb_func_end MOD16_021F1F50 + + thumb_func_start MOD16_021F1F80 +MOD16_021F1F80: ; 0x021F1F80 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021F2D54 + lsl r1, r5, #0x18 + add r7, r0, #0 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r5, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD11_022473F8 + mov r1, #0xc0 + mul r1, r5 + add r2, r4, r1 + ldr r1, _021F1FD8 ; =0x00002DCC + ldr r1, [r2, r1] + lsl r1, r1, #0x13 + lsr r2, r1, #0x1d + sub r1, r0, #1 + cmp r2, r1 + blo _021F1FD4 + cmp r0, #1 + ble _021F1FD4 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1FD4: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1FD8: .word 0x00002DCC + thumb_func_end MOD16_021F1F80 + + thumb_func_start MOD16_021F1FDC +MOD16_021F1FDC: ; 0x021F1FDC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, _021F1FFC ; =0x00000356 + ldrh r1, [r4, r0] + lsl r1, r1, #4 + add r2, r4, r1 + add r1, r0, #0 + add r1, #0x8a + ldrb r1, [r2, r1] + add r0, r0, #6 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F1FFC: .word 0x00000356 + thumb_func_end MOD16_021F1FDC + + thumb_func_start MOD16_021F2000 +MOD16_021F2000: ; 0x021F2000 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r0, [r4, r1] + lsl r0, r0, #1 + add r2, r4, r0 + ldr r0, _021F202C ; =0x0000307C + ldrh r0, [r2, r0] + lsl r0, r0, #4 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x10 + ldrb r0, [r2, r0] + sub r1, #0x74 + str r0, [r4, r1] + pop {r4, pc} + nop +_021F202C: .word 0x0000307C + thumb_func_end MOD16_021F2000 + + thumb_func_start MOD16_021F2030 +MOD16_021F2030: ; 0x021F2030 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp, #8] + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + ldr r0, [sp, #8] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + bl MOD11_0222FF84 + mov r1, #0 + str r0, [sp, #0x14] + cmp r0, #0 + ble _021F206E + add r2, sp, #0x24 +_021F2064: + ldr r0, [sp, #0x14] + stmia r2!, {r1} + add r1, r1, #1 + cmp r1, r0 + blt _021F2064 +_021F206E: + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + sub r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #0 + ble _021F20C8 + add r6, sp, #0x24 + str r6, [sp, #0x20] +_021F2080: + ldr r0, [sp, #0xc] + add r7, r0, #1 + ldr r0, [sp, #0x14] + cmp r7, r0 + bge _021F20BA + ldr r0, [sp, #0x20] + lsl r1, r7, #2 + add r5, r0, r1 +_021F2090: + ldr r0, [r6] + ldr r4, [r5] + str r0, [sp, #0x18] + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0x18] + add r3, r4, #0 + bl MOD11_02244248 + cmp r0, #0 + beq _021F20B0 + ldr r0, [sp, #0x18] + str r4, [r6] + str r0, [r5] +_021F20B0: + ldr r0, [sp, #0x14] + add r7, r7, #1 + add r5, r5, #4 + cmp r7, r0 + blt _021F2090 +_021F20BA: + ldr r0, [sp, #0xc] + add r6, r6, #4 + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [sp, #0xc] + cmp r1, r0 + blt _021F2080 +_021F20C8: + ldr r1, [sp, #0x14] + mov r0, #0 + cmp r1, #0 + ble _021F20F0 + add r3, sp, #0x24 +_021F20D2: + ldr r2, [r3] + ldr r1, [sp, #0x10] + cmp r1, r2 + bne _021F20E6 + mov r2, #0xd7 + ldr r1, [sp, #8] + lsl r2, r2, #2 + str r0, [r1, r2] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021F20E6: + ldr r1, [sp, #0x14] + add r0, r0, #1 + add r3, r3, #4 + cmp r0, r1 + blt _021F20D2 +_021F20F0: + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F2030 + + thumb_func_start MOD16_021F20F4 +MOD16_021F20F4: ; 0x021F20F4 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r2, [r4, r1] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F212C ; =0x00002DD4 + add r1, r4, r1 + ldr r0, [r1, r0] + sub r1, r2, r0 + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F212C: .word 0x00002DD4 + thumb_func_end MOD16_021F20F4 + + thumb_func_start MOD16_021F2130 +MOD16_021F2130: ; 0x021F2130 + push {r4, r5, r6, r7, lr} + sub sp, #0x54 + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp, #0x1c] + bl MOD16_021F2D54 + str r0, [sp, #0x30] + ldr r0, [sp, #0x1c] + bl MOD16_021F2D54 + str r0, [sp, #0x2c] + mov r4, #0 + ldr r1, _021F22B4 ; =0x000003CF + ldr r0, [sp, #0x1c] + add r5, sp, #0x34 + ldrb r0, [r0, r1] + add r6, r4, #0 + str r0, [sp, #0x28] +_021F215E: + add r2, r4, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x28] + add r2, #0xa + add r3, r6, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F215E + ldr r0, [sp, #0x28] + mov r1, #0xc0 + add r4, r0, #0 + mul r4, r1 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x28] + bl MOD11_02246D1C + add r1, sp, #0x44 + str r1, [sp] + ldr r1, [sp, #0x1c] + ldr r3, _021F22B8 ; =0x00002DB8 + add r2, r1, r4 + ldrh r1, [r2, r3] + ldr r5, _021F22B4 ; =0x000003CF + str r1, [sp, #4] + add r1, sp, #0x34 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r3, #0 + add r0, #0x14 + ldr r0, [r2, r0] + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + add r2, r1, #0 + str r0, [sp, #0x14] + ldrb r2, [r2, r5] + sub r3, #0x6c + add r5, r1, #0 + add r3, r5, r3 + ldr r0, [sp, #0x18] + add r3, r3, r4 + bl MOD16_021F2DE0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x28] + mov r7, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F22AE + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x20] +_021F21D8: + ldr r1, _021F22BC ; =0x0000219C + ldr r0, [sp, #0x20] + ldrb r0, [r0, r1] + cmp r7, r0 + beq _021F22A0 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x28] + add r2, r7, #0 + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F22A0 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F22A0 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F22C0 ; =0x000001EE + cmp r0, r1 + beq _021F22A0 + add r5, sp, #0x38 + mov r4, #0 + add r5, #2 +_021F221E: + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _021F221E + mov r5, #0 + add r4, sp, #0x34 +_021F2238: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x46 + mov r2, #0 + bl FUN_020671BC + strb r0, [r4] + add r5, r5, #1 + add r4, r4, #1 + cmp r5, #6 + blt _021F2238 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x44 + str r1, [sp] + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + str r1, [sp, #4] + add r1, sp, #0x34 + str r1, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x14] + ldr r3, _021F22B4 ; =0x000003CF + add r2, r1, #0 + ldrb r2, [r2, r3] + add r3, sp, #0x38 + ldr r0, [sp, #0x18] + add r3, #2 + bl MOD16_021F2DE0 + ldr r1, [sp, #0x24] + cmp r0, r1 + ble _021F22A0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x2c] + bl MOD16_021F2D88 + add sp, #0x54 + pop {r4, r5, r6, r7, pc} +_021F22A0: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x28] + add r7, r7, #1 + bl MOD11_0222FFC8 + cmp r7, r0 + blt _021F21D8 +_021F22AE: + add sp, #0x54 + pop {r4, r5, r6, r7, pc} + nop +_021F22B4: .word 0x000003CF +_021F22B8: .word 0x00002DB8 +_021F22BC: .word 0x0000219C +_021F22C0: .word 0x000001EE + thumb_func_end MOD16_021F2130 + + thumb_func_start MOD16_021F22C4 +MOD16_021F22C4: ; 0x021F22C4 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + ldr r2, _021F22F8 ; =0x000003CF + add r6, r0, #0 + ldrb r2, [r4, r2] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #1 + bl MOD16_021F3D3C + cmp r0, #1 + bne _021F22F4 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F22F4: + pop {r4, r5, r6, pc} + nop +_021F22F8: .word 0x000003CF + thumb_func_end MOD16_021F22C4 + + thumb_func_start MOD16_021F22FC +MOD16_021F22FC: ; 0x021F22FC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r6, r1, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x28] + add r0, r6, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x24] + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r7, _021F2400 ; =0x000003CF + str r0, [sp, #0x20] + mov r4, #0 + add r5, sp, #0x2c +_021F232A: + ldrb r1, [r6, r7] + add r2, r4, #0 + add r0, r6, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F232A + ldr r0, _021F2400 ; =0x000003CF + ldrb r4, [r6, r0] + mov r0, #0xc0 + add r5, r4, #0 + mul r5, r0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x34 + str r1, [sp] + ldr r3, _021F2404 ; =0x00002DB8 + add r1, r6, r5 + ldrh r1, [r1, r3] + add r2, r4, #0 + str r1, [sp, #4] + add r1, sp, #0x2c + str r1, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0xc0 + mul r0, r4 + add r1, r6, r0 + add r0, r3, #0 + add r0, #0x14 + ldr r0, [r1, r0] + sub r3, #0x6c + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0x10] + ldr r0, [sp, #0x24] + add r3, r6, r3 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r6, #0 + add r3, r3, r5 + bl MOD16_021F2DE0 + ldr r1, [sp, #0x28] + str r0, [sp, #0x1c] + lsl r1, r1, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r4, r0, #0 + ldr r0, [sp, #0x24] + cmp r0, #1 + bne _021F23AE + ldr r0, _021F2408 ; =0x00000355 + ldrb r1, [r6, r0] + add r0, #0x17 + add r1, r6, r1 + ldrb r5, [r1, r0] + b _021F23B0 +_021F23AE: + mov r5, #0x64 +_021F23B0: + mov r0, #0xc0 + add r7, r4, #0 + mul r7, r0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x2c + str r1, [sp] + str r4, [sp, #4] + lsl r2, r4, #1 + add r4, r6, r2 + ldr r3, _021F240C ; =0x00002DCC + add r7, r6, r7 + str r0, [sp, #8] + ldr r0, [r7, r3] + ldr r2, _021F2410 ; =0x0000307C + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0xc] + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + sub r3, #0x14 + ldrh r2, [r4, r2] + ldrh r3, [r7, r3] + ldr r0, [sp, #0x18] + add r1, r6, #0 + bl MOD16_021F2EE8 + ldr r1, [sp, #0x1c] + cmp r0, r1 + ble _021F23FA + ldr r1, [sp, #0x20] + add r0, r6, #0 + bl MOD16_021F2D88 +_021F23FA: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021F2400: .word 0x000003CF +_021F2404: .word 0x00002DB8 +_021F2408: .word 0x00000355 +_021F240C: .word 0x00002DCC +_021F2410: .word 0x0000307C + thumb_func_end MOD16_021F22FC + + thumb_func_start MOD16_021F2414 +MOD16_021F2414: ; 0x021F2414 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r2, #0xd7 + mov r3, #0xd7 + mov r1, #0 + lsl r2, r2, #2 + str r1, [r4, r2] + mov r2, #0xc0 + mul r2, r0 + add r0, r4, r2 + ldr r2, _021F2460 ; =0x00002D58 + lsl r3, r3, #2 +_021F2446: + ldrsb r5, [r0, r2] + cmp r5, #6 + ble _021F2454 + ldr r6, [r4, r3] + sub r5, r5, #6 + add r5, r6, r5 + str r5, [r4, r3] +_021F2454: + add r1, r1, #1 + add r0, r0, #1 + cmp r1, #8 + blt _021F2446 + pop {r4, r5, r6, pc} + nop +_021F2460: .word 0x00002D58 + thumb_func_end MOD16_021F2414 + + thumb_func_start MOD16_021F2464 +MOD16_021F2464: ; 0x021F2464 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r4, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + ldr r3, _021F24AC ; =0x000003CF + mov r1, #0xc0 + ldrb r6, [r5, r3] + add r2, r0, #0 + mul r2, r1 + add r0, r5, r2 + mul r1, r6 + add r1, r5, r1 + ldr r2, _021F24B0 ; =0x00002D58 + add r0, r0, r4 + add r1, r1, r4 + ldrsb r0, [r0, r2] + ldrsb r1, [r1, r2] + sub r3, #0x73 + sub r0, r0, r1 + str r0, [r5, r3] + pop {r4, r5, r6, pc} + .align 2, 0 +_021F24AC: .word 0x000003CF +_021F24B0: .word 0x00002D58 + thumb_func_end MOD16_021F2464 + + thumb_func_start MOD16_021F24B4 +MOD16_021F24B4: ; 0x021F24B4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + str r6, [sp] + add r0, r5, #0 + add r2, sp, #8 + add r3, sp, #4 + bl MOD16_021F25B0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + cmp r1, r0 + bge _021F2502 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F2502: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021F24B4 + + thumb_func_start MOD16_021F2508 +MOD16_021F2508: ; 0x021F2508 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + str r6, [sp] + add r0, r5, #0 + add r2, sp, #8 + add r3, sp, #4 + bl MOD16_021F25B0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + cmp r1, r0 + ble _021F2556 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F2556: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021F2508 + + thumb_func_start MOD16_021F255C +MOD16_021F255C: ; 0x021F255C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + str r6, [sp] + add r0, r5, #0 + add r2, sp, #8 + add r3, sp, #4 + bl MOD16_021F25B0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + cmp r1, r0 + bne _021F25AA + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F25AA: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021F255C + + thumb_func_start MOD16_021F25B0 +MOD16_021F25B0: ; 0x021F25B0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r1, r3, #0 + ldr r3, [sp, #0x10] + cmp r3, #5 + bhi _021F2688 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_021F25C8: ; jump table + .short _021F25D4 - _021F25C8 - 2 ; case 0 + .short _021F25F2 - _021F25C8 - 2 ; case 1 + .short _021F2610 - _021F25C8 - 2 ; case 2 + .short _021F266A - _021F25C8 - 2 ; case 3 + .short _021F262E - _021F25C8 - 2 ; case 4 + .short _021F264C - _021F25C8 - 2 ; case 5 +_021F25D4: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F2694 ; =0x00002D8C + add r6, r0, r6 + ldr r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldr r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F25F2: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F2698 ; =0x00002D42 + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F2610: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F269C ; =0x00002D44 + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F262E: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F26A0 ; =0x00002D48 + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F264C: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F26A4 ; =0x00002D4A + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F266A: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F26A8 ; =0x00002D46 + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F2688: + bl ErrorHandling + pop {r4, r5, r6, pc} + nop +_021F2690: .word 0x000003CF +_021F2694: .word 0x00002D8C +_021F2698: .word 0x00002D42 +_021F269C: .word 0x00002D44 +_021F26A0: .word 0x00002D48 +_021F26A4: .word 0x00002D4A +_021F26A8: .word 0x00002D46 + thumb_func_end MOD16_021F25B0 + + thumb_func_start MOD16_021F26AC +MOD16_021F26AC: ; 0x021F26AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r6, r1, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r2, _021F27E8 ; =0x00000356 + str r0, [sp, #0x20] + ldrh r3, [r6, r2] + add r2, #0x88 + ldr r1, _021F27EC ; =0x021FF7F4 + lsl r7, r3, #4 + add r3, r6, r7 + ldrh r3, [r3, r2] + ldr r2, _021F27F0 ; =0x0000FFFF + mov r0, #0 +_021F26D6: + ldrh r4, [r1] + cmp r3, r4 + beq _021F26E6 + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F26D6 +_021F26E6: + ldr r2, _021F27F4 ; =0x021FF7DC + ldr r4, _021F27F0 ; =0x0000FFFF + mov r1, #0 +_021F26EC: + ldrh r5, [r2] + cmp r3, r5 + beq _021F26FC + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F26EC +_021F26FC: + lsl r2, r1, #1 + ldr r1, _021F27F4 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F27F0 ; =0x0000FFFF + cmp r1, r2 + bne _021F271C + ldr r1, _021F27F8 ; =0x000003E1 + add r3, r6, r7 + ldrb r1, [r3, r1] + cmp r1, #1 + bls _021F27DA + lsl r1, r0, #1 + ldr r0, _021F27EC ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F27DA +_021F271C: + ldr r0, _021F27FC ; =0x000003CF + ldrb r7, [r6, r0] + mov r0, #0 + str r0, [sp, #0x1c] +_021F2724: + mov r4, #0 + add r5, sp, #0x28 +_021F2728: + add r2, r4, #0 + add r0, r6, #0 + add r1, r7, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F2728 + mov r0, #0xc0 + add r4, r7, #0 + mul r4, r0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD11_02246D1C + add r1, sp, #0x30 + str r1, [sp] + ldr r3, _021F2800 ; =0x00002DB8 + add r1, r6, r4 + ldrh r2, [r1, r3] + str r2, [sp, #4] + add r2, sp, #0x28 + str r2, [sp, #8] + str r0, [sp, #0xc] + add r0, r3, #0 + add r0, #0x14 + ldr r0, [r1, r0] + sub r3, #0x6c + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0x10] + ldr r0, [sp, #0x20] + add r3, r6, r3 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r6, #0 + add r2, r7, #0 + add r3, r3, r4 + bl MOD16_021F2DE0 + ldr r1, _021F27FC ; =0x000003CF + ldr r0, [sp, #0x18] + ldrb r1, [r6, r1] + bl FUN_022302BC + add r7, r0, #0 + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _021F279E + ldr r0, _021F2804 ; =0x00000355 + ldrb r0, [r6, r0] + lsl r1, r0, #2 + add r0, sp, #0x30 + ldr r0, [r0, r1] + str r0, [sp, #0x24] +_021F279E: + mov r3, #0 + add r2, sp, #0x30 +_021F27A2: + ldr r1, [r2] + ldr r0, [sp, #0x24] + cmp r1, r0 + bgt _021F27B2 + add r3, r3, #1 + add r2, r2, #4 + cmp r3, #4 + blt _021F27A2 +_021F27B2: + cmp r3, #4 + bne _021F27C0 + mov r0, #0xd7 + mov r1, #2 + lsl r0, r0, #2 + str r1, [r6, r0] + b _021F27CC +_021F27C0: + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + add sp, #0x40 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F27CC: + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #2 + blt _021F2724 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} +_021F27DA: + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r6, r0] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F27E8: .word 0x00000356 +_021F27EC: .word 0x021FF7F4 +_021F27F0: .word 0x0000FFFF +_021F27F4: .word 0x021FF7DC +_021F27F8: .word 0x000003E1 +_021F27FC: .word 0x000003CF +_021F2800: .word 0x00002DB8 +_021F2804: .word 0x00000355 + thumb_func_end MOD16_021F26AC + + thumb_func_start MOD16_021F2808 +MOD16_021F2808: ; 0x021F2808 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + cmp r4, #1 + bne _021F282C + bl ErrorHandling +_021F282C: + cmp r4, #0 + bne _021F2834 + bl ErrorHandling +_021F2834: + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + bl FUN_0206A92C + ldr r1, _021F2854 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + beq _021F2852 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F2852: + pop {r4, r5, r6, pc} + .align 2, 0 +_021F2854: .word 0x00003108 + thumb_func_end MOD16_021F2808 + + thumb_func_start MOD16_021F2858 +MOD16_021F2858: ; 0x021F2858 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + cmp r4, #1 + bne _021F287C + bl ErrorHandling +_021F287C: + cmp r4, #0 + bne _021F2884 + bl ErrorHandling +_021F2884: + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + bl FUN_0206A92C + ldr r1, _021F28A4 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _021F28A2 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F28A2: + pop {r4, r5, r6, pc} + .align 2, 0 +_021F28A4: .word 0x00003108 + thumb_func_end MOD16_021F2858 + + thumb_func_start MOD16_021F28A8 +MOD16_021F28A8: ; 0x021F28A8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F28DC ; =0x00002DBE + add r1, r4, r1 + ldrb r0, [r1, r0] + lsl r0, r0, #0x1c + lsr r1, r0, #0x1c + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F28DC: .word 0x00002DBE + thumb_func_end MOD16_021F28A8 + + thumb_func_start MOD16_021F28E0 +MOD16_021F28E0: ; 0x021F28E0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r2, r0, #0 + mov r1, #0xc0 + mul r2, r1 + ldr r0, _021F2928 ; =0x00002DD4 + add r2, r4, r2 + add r1, #0x90 + ldr r2, [r2, r0] + ldr r0, [r4, r1] + cmp r2, r0 + bge _021F291C + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} +_021F291C: + mov r1, #1 + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F2928: .word 0x00002DD4 + thumb_func_end MOD16_021F28E0 + + thumb_func_start MOD16_021F292C +MOD16_021F292C: ; 0x021F292C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F2960 ; =0x00002DC8 + add r1, r4, r1 + ldr r0, [r1, r0] + lsl r0, r0, #8 + lsr r1, r0, #0x1d + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F2960: .word 0x00002DC8 + thumb_func_end MOD16_021F292C + + thumb_func_start MOD16_021F2964 +MOD16_021F2964: ; 0x021F2964 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r0, #0xd7 + ldr r1, [r5, #0x2c] + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021F2964 + + thumb_func_start MOD16_021F297C +MOD16_021F297C: ; 0x021F297C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + lsl r0, r0, #1 + add r1, r4, r0 + ldr r0, _021F29AC ; =0x00003124 + ldrh r1, [r1, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F29AC: .word 0x00003124 + thumb_func_end MOD16_021F297C + + thumb_func_start MOD16_021F29B0 +MOD16_021F29B0: ; 0x021F29B0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0xd7 + lsl r1, r1, #2 + ldr r0, [r4, r1] + lsl r0, r0, #4 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x86 + ldrb r0, [r2, r0] + str r0, [r4, r1] + pop {r4, pc} + thumb_func_end MOD16_021F29B0 + + thumb_func_start MOD16_021F29D0 +MOD16_021F29D0: ; 0x021F29D0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0xd7 + lsl r1, r1, #2 + ldr r0, [r4, r1] + lsl r0, r0, #4 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x85 + ldrb r0, [r2, r0] + str r0, [r4, r1] + pop {r4, pc} + thumb_func_end MOD16_021F29D0 + + thumb_func_start MOD16_021F29F0 +MOD16_021F29F0: ; 0x021F29F0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0xd7 + lsl r1, r1, #2 + ldr r0, [r4, r1] + lsl r0, r0, #4 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x82 + ldrh r0, [r2, r0] + str r0, [r4, r1] + pop {r4, pc} + thumb_func_end MOD16_021F29F0 + + thumb_func_start MOD16_021F2A10 +MOD16_021F2A10: ; 0x021F2A10 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + lsl r1, r0, #1 + add r2, r4, r1 + ldr r1, _021F2A64 ; =0x0000305C + ldrh r1, [r2, r1] + cmp r1, #0xb6 + beq _021F2A4C + cmp r1, #0xc5 + beq _021F2A4C + cmp r1, #0xcb + beq _021F2A4C + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} +_021F2A4C: + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F2A68 ; =0x00002DC8 + add r1, r4, r1 + ldr r0, [r1, r0] + lsl r0, r0, #0x13 + lsr r1, r0, #0x1e + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F2A64: .word 0x0000305C +_021F2A68: .word 0x00002DC8 + thumb_func_end MOD16_021F2A10 + + thumb_func_start MOD16_021F2A6C +MOD16_021F2A6C: ; 0x021F2A6C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2C8C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021F2A6C + + thumb_func_start MOD16_021F2A8C +MOD16_021F2A8C: ; 0x021F2A8C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + add r0, r4, #0 + bl MOD16_021F2D88 + pop {r4, pc} + thumb_func_end MOD16_021F2A8C + + thumb_func_start MOD16_021F2AA8 +MOD16_021F2AA8: ; 0x021F2AA8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2CC4 + cmp r0, #1 + beq _021F2ACE + mov r1, #0xd9 + lsl r1, r1, #2 + ldrb r2, [r4, r1] + mov r0, #1 + orr r0, r2 + strb r0, [r4, r1] +_021F2ACE: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021F2AA8 + + thumb_func_start MOD16_021F2AD0 +MOD16_021F2AD0: ; 0x021F2AD0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + cmp r4, #0 + beq _021F2AFA + cmp r4, #1 + beq _021F2B20 + cmp r4, #2 + beq _021F2B46 + pop {r3, r4, r5, pc} +_021F2AFA: + ldr r2, _021F2B6C ; =0x000003CF + mov r3, #0xc0 + ldrb r0, [r5, r2] + add r2, r2, #1 + ldrb r2, [r5, r2] + add r4, r0, #0 + mul r4, r3 + add r0, r5, r4 + ldr r4, _021F2B70 ; =0x00002D74 + mul r3, r2 + add r2, r5, r3 + ldrb r0, [r0, r4] + ldrb r2, [r2, r4] + cmp r0, r2 + bls _021F2B6A + add r0, r5, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, pc} +_021F2B20: + ldr r2, _021F2B6C ; =0x000003CF + mov r3, #0xc0 + ldrb r0, [r5, r2] + add r2, r2, #1 + ldrb r2, [r5, r2] + add r4, r0, #0 + mul r4, r3 + add r0, r5, r4 + ldr r4, _021F2B70 ; =0x00002D74 + mul r3, r2 + add r2, r5, r3 + ldrb r0, [r0, r4] + ldrb r2, [r2, r4] + cmp r0, r2 + bhs _021F2B6A + add r0, r5, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, pc} +_021F2B46: + ldr r2, _021F2B6C ; =0x000003CF + mov r3, #0xc0 + ldrb r0, [r5, r2] + add r2, r2, #1 + ldrb r2, [r5, r2] + add r4, r0, #0 + mul r4, r3 + add r0, r5, r4 + ldr r4, _021F2B70 ; =0x00002D74 + mul r3, r2 + add r2, r5, r3 + ldrb r0, [r0, r4] + ldrb r2, [r2, r4] + cmp r0, r2 + bne _021F2B6A + add r0, r5, #0 + bl MOD16_021F2D88 +_021F2B6A: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F2B6C: .word 0x000003CF +_021F2B70: .word 0x00002D74 + thumb_func_end MOD16_021F2AD0 + + thumb_func_start MOD16_021F2B74 +MOD16_021F2B74: ; 0x021F2B74 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r2, [r4, r0] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _021F2BA8 ; =0x00002DC8 + ldr r0, [r2, r0] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1d + beq _021F2BA4 + add r0, r4, #0 + bl MOD16_021F2D88 +_021F2BA4: + pop {r4, pc} + nop +_021F2BA8: .word 0x00002DC8 + thumb_func_end MOD16_021F2B74 + + thumb_func_start MOD16_021F2BAC +MOD16_021F2BAC: ; 0x021F2BAC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r2, [r4, r0] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _021F2BE0 ; =0x00002DC8 + ldr r0, [r2, r0] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1d + bne _021F2BDC + add r0, r4, #0 + bl MOD16_021F2D88 +_021F2BDC: + pop {r4, pc} + nop +_021F2BE0: .word 0x00002DC8 + thumb_func_end MOD16_021F2BAC + + thumb_func_start MOD16_021F2BE4 +MOD16_021F2BE4: ; 0x021F2BE4 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + ldr r2, _021F2C14 ; =0x000003CF + add r1, r0, #0 + ldrb r0, [r4, r2] + add r2, r2, #1 + mov r3, #1 + ldrb r2, [r4, r2] + and r0, r3 + and r2, r3 + cmp r0, r2 + bne _021F2C10 + add r0, r4, #0 + bl MOD16_021F2D88 +_021F2C10: + pop {r4, pc} + nop +_021F2C14: .word 0x000003CF + thumb_func_end MOD16_021F2BE4 + + thumb_func_start MOD16_021F2C18 +MOD16_021F2C18: ; 0x021F2C18 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r6, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F2C58 ; =0x00002DC8 + add r1, r5, r1 + ldr r0, [r1, r0] + lsr r0, r0, #0x1f + beq _021F2C54 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F2C54: + pop {r4, r5, r6, pc} + nop +_021F2C58: .word 0x00002DC8 + thumb_func_end MOD16_021F2C18 + + thumb_func_start MOD16_021F2C5C +MOD16_021F2C5C: ; 0x021F2C5C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_02246D1C + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021F2C5C + + thumb_func_start MOD16_021F2C8C +MOD16_021F2C8C: ; 0x021F2C8C + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0xf3 + lsl r1, r1, #2 + ldrb r5, [r4, r1] + add r0, r5, #1 + strb r0, [r4, r1] + ldr r0, _021F2CC0 ; =0x00002138 + sub r1, #0x20 + ldr r3, [r4, r0] + lsl r0, r5, #2 + add r0, r4, r0 + str r3, [r0, r1] + add r0, r4, #0 + add r1, r2, #0 + bl MOD16_021F2D88 + mov r0, #0xf3 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #8 + bls _021F2CBC + bl ErrorHandling +_021F2CBC: + pop {r3, r4, r5, pc} + nop +_021F2CC0: .word 0x00002138 + thumb_func_end MOD16_021F2C8C + + thumb_func_start MOD16_021F2CC4 +MOD16_021F2CC4: ; 0x021F2CC4 + mov r0, #0xf3 + lsl r0, r0, #2 + ldrb r2, [r1, r0] + cmp r2, #0 + beq _021F2CE4 + sub r2, r2, #1 + strb r2, [r1, r0] + ldrb r2, [r1, r0] + sub r0, #0x20 + lsl r2, r2, #2 + add r2, r1, r2 + ldr r2, [r2, r0] + ldr r0, _021F2CE8 ; =0x00002138 + str r2, [r1, r0] + mov r0, #1 + bx lr +_021F2CE4: + mov r0, #0 + bx lr + .align 2, 0 +_021F2CE8: .word 0x00002138 + thumb_func_end MOD16_021F2CC4 + + thumb_func_start MOD16_021F2CEC +MOD16_021F2CEC: ; 0x021F2CEC + push {r3, r4, r5, r6, r7, lr} + mov r2, #0x3d + lsl r2, r2, #4 + str r1, [sp] + ldrb r1, [r1, r2] + mov r7, #0x37 + lsl r7, r7, #4 + mov lr, r1 + mov r3, lr + lsl r4, r3, #1 + ldr r3, [sp] + ldr r2, [sp] + lsl r1, r1, #3 + add r4, r3, r4 + ldr r3, _021F2D50 ; =0x0000307C + mov r0, #0 + add r5, r2, r1 + mov ip, r1 + ldrh r3, [r4, r3] + add r1, r5, #0 + add r2, r0, #0 + add r6, r7, #0 +_021F2D18: + ldrh r4, [r1, r6] + cmp r3, r4 + beq _021F2D4E + add r4, r5, r2 + ldrh r4, [r4, r7] + cmp r4, #0 + bne _021F2D44 + mov r1, lr + lsl r2, r1, #1 + ldr r1, [sp] + ldr r3, [sp] + add r2, r1, r2 + ldr r1, _021F2D50 ; =0x0000307C + lsl r0, r0, #1 + ldrh r1, [r2, r1] + mov r2, ip + add r2, r3, r2 + add r2, r2, r0 + mov r0, #0x37 + lsl r0, r0, #4 + strh r1, [r2, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F2D44: + add r0, r0, #1 + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #4 + blt _021F2D18 +_021F2D4E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F2D50: .word 0x0000307C + thumb_func_end MOD16_021F2CEC + + thumb_func_start MOD16_021F2D54 +MOD16_021F2D54: ; 0x021F2D54 + ldr r1, _021F2D70 ; =0x00002134 + add r2, r1, #4 + ldr r2, [r0, r2] + ldr r3, [r0, r1] + lsl r2, r2, #2 + ldr r3, [r3, r2] + add r2, r1, #4 + ldr r2, [r0, r2] + add r1, r1, #4 + add r2, r2, #1 + str r2, [r0, r1] + add r0, r3, #0 + bx lr + nop +_021F2D70: .word 0x00002134 + thumb_func_end MOD16_021F2D54 + + thumb_func_start MOD16_021F2D74 +MOD16_021F2D74: ; 0x021F2D74 + ldr r2, _021F2D84 ; =0x00002134 + ldr r3, [r0, r2] + add r2, r2, #4 + ldr r0, [r0, r2] + add r0, r0, r1 + lsl r0, r0, #2 + ldr r0, [r3, r0] + bx lr + .align 2, 0 +_021F2D84: .word 0x00002134 + thumb_func_end MOD16_021F2D74 + + thumb_func_start MOD16_021F2D88 +MOD16_021F2D88: ; 0x021F2D88 + ldr r2, _021F2D94 ; =0x00002138 + ldr r3, [r0, r2] + add r1, r3, r1 + str r1, [r0, r2] + bx lr + nop +_021F2D94: .word 0x00002138 + thumb_func_end MOD16_021F2D88 + + thumb_func_start MOD16_021F2D98 +MOD16_021F2D98: ; 0x021F2D98 + cmp r1, #3 + bhi _021F2DB6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021F2DA8: ; jump table + .short _021F2DB6 - _021F2DA8 - 2 ; case 0 + .short _021F2DB0 - _021F2DA8 - 2 ; case 1 + .short _021F2DCC - _021F2DA8 - 2 ; case 2 + .short _021F2DBE - _021F2DA8 - 2 ; case 3 +_021F2DB0: + ldr r1, _021F2DDC ; =0x000003CF + ldrb r0, [r0, r1] + bx lr +_021F2DB6: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r0, [r0, r1] + bx lr +_021F2DBE: + ldr r1, _021F2DDC ; =0x000003CF + ldrb r1, [r0, r1] + mov r0, #2 + eor r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021F2DCC: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r0, r1] + mov r0, #2 + eor r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .align 2, 0 +_021F2DDC: .word 0x000003CF + thumb_func_end MOD16_021F2D98 + + thumb_func_start MOD16_021F2DE0 +MOD16_021F2DE0: ; 0x021F2DE0 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + str r0, [sp, #0x14] + ldr r0, [sp, #0x44] + ldr r6, [sp, #0x40] + str r0, [sp, #0x44] + ldr r0, [sp, #0x48] + add r7, r1, #0 + str r0, [sp, #0x48] + ldr r0, [sp, #0x4c] + str r2, [sp, #0x18] + str r0, [sp, #0x4c] + ldr r0, [sp, #0x50] + str r3, [sp, #0x1c] + str r0, [sp, #0x50] + ldr r0, [sp, #0x54] + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp, #0x24] + str r0, [sp, #0x28] +_021F2E08: + ldr r2, [sp, #0x1c] + ldr r3, _021F2ED4 ; =0x000003DE + ldrh r2, [r2] + ldr r1, _021F2ED8 ; =0x021FF7F4 + mov r0, #0 + mov ip, r2 + lsl r2, r2, #4 + add r2, r7, r2 + ldrh r3, [r2, r3] + str r2, [sp, #0x20] + ldr r2, _021F2EDC ; =0x0000FFFF +_021F2E1E: + ldrh r4, [r1] + cmp r4, r3 + beq _021F2E2E + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F2E1E +_021F2E2E: + ldr r2, _021F2EE0 ; =0x021FF7DC + ldr r4, _021F2EDC ; =0x0000FFFF + mov r1, #0 +_021F2E34: + ldrh r5, [r2] + cmp r5, r3 + beq _021F2E44 + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F2E34 +_021F2E44: + lsl r2, r1, #1 + ldr r1, _021F2EE0 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F2EDC ; =0x0000FFFF + cmp r1, r2 + bne _021F2E6A + mov r1, ip + cmp r1, #0 + beq _021F2EA0 + lsl r1, r0, #1 + ldr r0, _021F2ED8 ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F2EA0 + ldr r1, _021F2EE4 ; =0x000003E1 + ldr r0, [sp, #0x20] + ldrb r0, [r0, r1] + cmp r0, #1 + bls _021F2EA0 +_021F2E6A: + ldr r0, [sp, #0x54] + cmp r0, #1 + bne _021F2E7C + ldr r0, [sp, #0x28] + add r1, r7, r0 + mov r0, #0xdb + lsl r0, r0, #2 + ldrb r0, [r1, r0] + b _021F2E7E +_021F2E7C: + mov r0, #0x64 +_021F2E7E: + ldr r1, [sp, #0x48] + mov r2, ip + str r1, [sp] + ldr r1, [sp, #0x18] + str r1, [sp, #4] + ldr r1, [sp, #0x4c] + str r1, [sp, #8] + ldr r1, [sp, #0x50] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0x44] + add r1, r7, #0 + bl MOD16_021F2EE8 + str r0, [r6] + b _021F2EA4 +_021F2EA0: + mov r0, #0 + str r0, [r6] +_021F2EA4: + ldr r0, [sp, #0x1c] + add r6, r6, #4 + add r0, r0, #2 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #4 + blt _021F2E08 + ldr r2, [sp, #0x40] + mov r3, #0 +_021F2EBA: + ldr r1, [r2] + ldr r0, [sp, #0x24] + cmp r0, r1 + bge _021F2EC4 + str r1, [sp, #0x24] +_021F2EC4: + add r3, r3, #1 + add r2, r2, #4 + cmp r3, #4 + blt _021F2EBA + ldr r0, [sp, #0x24] + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021F2ED4: .word 0x000003DE +_021F2ED8: .word 0x021FF7F4 +_021F2EDC: .word 0x0000FFFF +_021F2EE0: .word 0x021FF7DC +_021F2EE4: .word 0x000003E1 + thumb_func_end MOD16_021F2DE0 + + thumb_func_start MOD16_021F2EE8 +MOD16_021F2EE8: ; 0x021F2EE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r6, r1, #0 + ldr r1, [sp, #0x60] + str r3, [sp, #0x1c] + str r1, [sp, #0x60] + ldr r1, [sp, #0x64] + str r0, [sp, #0x18] + str r1, [sp, #0x64] + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r6, r1] + add r5, r2, #0 + bl MOD11_02230270 + mov r4, #0 + str r0, [sp, #0x28] + add r0, r4, #0 + add r7, r4, #0 + str r4, [sp, #0x20] + str r0, [sp, #0x48] + cmp r5, #0xd8 + bgt _021F2F4E + blt _021F2F1A + b _021F3156 +_021F2F1A: + cmp r5, #0x52 + bgt _021F2F3C + blt _021F2F22 + b _021F311C +_021F2F22: + cmp r5, #0x31 + bgt _021F2F2C + bne _021F2F2A + b _021F31CE +_021F2F2A: + b _021F3210 +_021F2F2C: + cmp r5, #0x45 + bgt _021F2F3A + cmp r5, #0x43 + blt _021F2F3A + beq _021F2F84 + cmp r5, #0x45 + beq _021F2F42 +_021F2F3A: + b _021F3210 +_021F2F3C: + cmp r5, #0x65 + bgt _021F2F46 + bne _021F2F44 +_021F2F42: + b _021F3122 +_021F2F44: + b _021F3210 +_021F2F46: + cmp r5, #0x95 + bne _021F2F4C + b _021F3132 +_021F2F4C: + b _021F3210 +_021F2F4E: + mov r0, #0x5a + lsl r0, r0, #2 + cmp r5, r0 + bgt _021F2F74 + blt _021F2F5A + b _021F30F2 +_021F2F5A: + cmp r5, #0xde + bgt _021F2F6E + cmp r5, #0xda + blt _021F2F6C + bne _021F2F66 + b _021F3170 +_021F2F66: + cmp r5, #0xde + bne _021F2F6C + b _021F318E +_021F2F6C: + b _021F3210 +_021F2F6E: + cmp r5, #0xed + beq _021F304C + b _021F3210 +_021F2F74: + add r1, r0, #0 + add r1, #0x57 + cmp r5, r1 + bgt _021F2F8E + add r1, r0, #0 + add r1, #0x57 + cmp r5, r1 + blt _021F2F86 +_021F2F84: + b _021F31D4 +_021F2F86: + add r0, r0, #3 + cmp r5, r0 + beq _021F2F96 + b _021F3210 +_021F2F8E: + add r0, #0x59 + cmp r5, r0 + beq _021F2FBE + b _021F3210 +_021F2F96: + ldr r0, [sp, #0x68] + cmp r0, #0x67 + beq _021F2FCA + ldr r0, [sp, #0x6c] + cmp r0, #0 + bne _021F2FCA + ldr r1, [sp, #0x1c] + add r0, r6, #0 + mov r2, #0xb + bl MOD11_0224C12C + add r4, r0, #0 + beq _021F2FCA + ldr r1, [sp, #0x1c] + add r0, r6, #0 + mov r2, #0xc + bl MOD11_0224C12C + add r7, r0, #0 + b _021F3214 +_021F2FBE: + ldr r0, [sp, #0x68] + cmp r0, #0x67 + beq _021F2FCA + ldr r0, [sp, #0x6c] + cmp r0, #0 + beq _021F2FCC +_021F2FCA: + b _021F3214 +_021F2FCC: + ldr r1, [sp, #0x1c] + add r0, r6, #0 + mov r2, #1 + bl MOD11_0224C12C + sub r0, #0x7d + cmp r0, #0xf + bhi _021F3048 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F2FE8: ; jump table + .short _021F3028 - _021F2FE8 - 2 ; case 0 + .short _021F302C - _021F2FE8 - 2 ; case 1 + .short _021F3034 - _021F2FE8 - 2 ; case 2 + .short _021F3030 - _021F2FE8 - 2 ; case 3 + .short _021F303C - _021F2FE8 - 2 ; case 4 + .short _021F3008 - _021F2FE8 - 2 ; case 5 + .short _021F3010 - _021F2FE8 - 2 ; case 6 + .short _021F3014 - _021F2FE8 - 2 ; case 7 + .short _021F300C - _021F2FE8 - 2 ; case 8 + .short _021F3038 - _021F2FE8 - 2 ; case 9 + .short _021F301C - _021F2FE8 - 2 ; case 10 + .short _021F3018 - _021F2FE8 - 2 ; case 11 + .short _021F3020 - _021F2FE8 - 2 ; case 12 + .short _021F3040 - _021F2FE8 - 2 ; case 13 + .short _021F3044 - _021F2FE8 - 2 ; case 14 + .short _021F3024 - _021F2FE8 - 2 ; case 15 +_021F3008: + mov r7, #1 + b _021F3214 +_021F300C: + mov r7, #2 + b _021F3214 +_021F3010: + mov r7, #3 + b _021F3214 +_021F3014: + mov r7, #4 + b _021F3214 +_021F3018: + mov r7, #5 + b _021F3214 +_021F301C: + mov r7, #6 + b _021F3214 +_021F3020: + mov r7, #7 + b _021F3214 +_021F3024: + mov r7, #8 + b _021F3214 +_021F3028: + mov r7, #0xa + b _021F3214 +_021F302C: + mov r7, #0xb + b _021F3214 +_021F3030: + mov r7, #0xc + b _021F3214 +_021F3034: + mov r7, #0xd + b _021F3214 +_021F3038: + mov r7, #0xe + b _021F3214 +_021F303C: + mov r7, #0xf + b _021F3214 +_021F3040: + mov r7, #0x10 + b _021F3214 +_021F3044: + mov r7, #0x11 + b _021F3214 +_021F3048: + mov r7, #0 + b _021F3214 +_021F304C: + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x60] + ldrb r0, [r0, #1] + ldrb r3, [r1, #4] + ldrb r1, [r1, #5] + str r0, [sp, #0x2c] + ldr r0, [sp, #0x60] + str r1, [sp, #0x34] + ldrb r0, [r0] + lsl r1, r1, #0x1f + lsr r1, r1, #0x1a + str r0, [sp, #0x30] + ldr r0, [sp, #0x60] + str r1, [sp, #0x38] + ldrb r2, [r0, #2] + lsl r1, r3, #0x1f + lsr r1, r1, #0x1b + ldrb r0, [r0, #3] + str r1, [sp, #0x3c] + mov r4, #1 + lsl r1, r0, #0x1f + lsr r1, r1, #0x1c + str r1, [sp, #0x40] + lsl r1, r2, #0x1f + lsr r7, r1, #0x1d + ldr r1, [sp, #0x30] + and r1, r4 + ldr r4, [sp, #0x2c] + lsl r4, r4, #0x1f + lsr r4, r4, #0x1e + orr r1, r4 + add r4, r7, #0 + orr r4, r1 + ldr r1, [sp, #0x40] + orr r4, r1 + ldr r1, [sp, #0x3c] + orr r4, r1 + ldr r1, [sp, #0x38] + orr r1, r4 + str r1, [sp, #0x24] + mov r1, #2 + ldr r4, [sp, #0x34] + and r3, r1 + and r4, r1 + lsl r4, r4, #4 + str r4, [sp, #0x44] + and r0, r1 + lsl r4, r3, #3 + lsl r3, r0, #2 + add r0, r2, #0 + and r0, r1 + lsl r2, r0, #1 + ldr r0, [sp, #0x30] + and r0, r1 + asr r7, r0, #1 + ldr r0, [sp, #0x2c] + and r0, r1 + orr r0, r7 + orr r0, r2 + orr r0, r3 + add r1, r4, #0 + orr r1, r0 + ldr r0, [sp, #0x44] + orr r1, r0 + mov r0, #0x28 + mul r0, r1 + mov r1, #0x3f + blx _s32_div_f + add r4, r0, #0 + ldr r1, [sp, #0x24] + mov r0, #0xf + mul r0, r1 + mov r1, #0x3f + add r4, #0x1e + blx _s32_div_f + add r7, r0, #1 + cmp r7, #9 + bge _021F30EE + b _021F3214 +_021F30EE: + add r7, r7, #1 + b _021F3214 +_021F30F2: + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r0, [r6, r0] + ldr r2, _021F32B4 ; =0x000021F0 + lsl r0, r0, #2 + add r0, r6, r0 + ldr r1, [r0, r2] + mov r0, #0x19 + mul r0, r1 + ldr r1, [sp, #0x64] + lsl r1, r1, #2 + add r1, r6, r1 + ldr r1, [r1, r2] + blx _u32_div_f + add r4, r0, #1 + cmp r4, #0x96 + ble _021F3118 + mov r4, #0x96 +_021F3118: + mov r7, #0 + b _021F3214 +_021F311C: + mov r0, #0x28 + str r0, [sp, #0x20] + b _021F3214 +_021F3122: + ldr r0, [sp, #0x64] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F32B8 ; =0x00002D74 + add r1, r6, r1 + ldrb r0, [r1, r0] + str r0, [sp, #0x20] + b _021F3214 +_021F3132: + bl FUN_0201B9EC + mov r1, #0xb + blx _s32_div_f + ldr r0, [sp, #0x64] + mov r2, #0xc0 + mul r2, r0 + ldr r0, _021F32B8 ; =0x00002D74 + add r2, r6, r2 + ldrb r2, [r2, r0] + add r0, r1, #5 + mov r1, #0xa + mul r0, r2 + blx _s32_div_f + str r0, [sp, #0x20] + b _021F3214 +_021F3156: + ldr r0, [sp, #0x64] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F32BC ; =0x00002D75 + add r1, r6, r1 + ldrb r1, [r1, r0] + mov r0, #0xa + mul r0, r1 + mov r1, #0x19 + blx _s32_div_f + add r4, r0, #0 + b _021F3214 +_021F3170: + ldr r0, [sp, #0x64] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F32BC ; =0x00002D75 + add r1, r6, r1 + ldrb r1, [r1, r0] + mov r0, #0xff + sub r1, r0, r1 + mov r0, #0xa + mul r0, r1 + mov r1, #0x19 + blx _s32_div_f + add r4, r0, #0 + b _021F3214 +_021F318E: + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + cmp r1, #5 + bge _021F31A0 + mov r4, #0xa + b _021F31CA +_021F31A0: + cmp r1, #0xf + bge _021F31A8 + mov r4, #0x1e + b _021F31CA +_021F31A8: + cmp r1, #0x23 + bge _021F31B0 + mov r4, #0x32 + b _021F31CA +_021F31B0: + cmp r1, #0x41 + bge _021F31B8 + mov r4, #0x46 + b _021F31CA +_021F31B8: + cmp r1, #0x55 + bge _021F31C0 + mov r4, #0x5a + b _021F31CA +_021F31C0: + cmp r1, #0x5f + bge _021F31C8 + mov r4, #0x6e + b _021F31CA +_021F31C8: + mov r4, #0x96 +_021F31CA: + mov r7, #0 + b _021F3214 +_021F31CE: + mov r0, #0x14 + str r0, [sp, #0x20] + b _021F3214 +_021F31D4: + mov r2, #0x3d + lsl r2, r2, #4 + ldrb r3, [r6, r2] + mov r2, #0xc0 + ldr r1, _021F32C0 ; =0x021FF7C4 + mul r2, r3 + add r3, r6, r2 + ldr r2, _021F32C4 ; =0x00002D60 + ldr r4, _021F32C8 ; =0x0000FFFF + ldr r2, [r3, r2] + mov r0, #0 +_021F31EA: + ldrh r3, [r1] + cmp r3, r2 + bge _021F31FA + add r1, r1, #4 + ldrh r3, [r1] + add r0, r0, #1 + cmp r3, r4 + bne _021F31EA +_021F31FA: + ldr r1, _021F32C0 ; =0x021FF7C4 + lsl r0, r0, #2 + ldrh r2, [r1, r0] + ldr r1, _021F32C8 ; =0x0000FFFF + cmp r2, r1 + beq _021F320C + ldr r1, _021F32CC ; =0x021FF7C6 + ldrh r4, [r1, r0] + b _021F3214 +_021F320C: + mov r4, #0x78 + b _021F3214 +_021F3210: + mov r4, #0 + add r7, r4, #0 +_021F3214: + ldr r0, [sp, #0x20] + cmp r0, #0 + bne _021F325E + mov r0, #6 + lsl r0, r0, #6 + mov ip, r0 + ldr r0, [r6, r0] + ldr r3, [sp, #0x28] + str r0, [sp] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x64] + lsl r3, r3, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r0, [r6, r0] + add r4, r6, r3 + mov r3, ip + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r3, #0x3c + ldr r0, [sp, #0x18] + ldr r3, [r4, r3] + add r1, r6, #0 + add r2, r5, #0 + bl MOD11_0224B310 + str r0, [sp, #0x20] + b _021F326A +_021F325E: + ldr r1, _021F32D0 ; =0x0000213C + mov r0, #2 + ldr r2, [r6, r1] + lsl r0, r0, #0xa + orr r0, r2 + str r0, [r6, r1] +_021F326A: + ldr r0, [sp, #0x64] + add r1, r6, #0 + str r0, [sp] + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r0, [r6, r0] + add r2, r5, #0 + add r3, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x20] + str r0, [sp, #8] + add r0, sp, #0x48 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + bl MOD11_02246274 + ldr r2, _021F32D0 ; =0x0000213C + ldr r1, _021F32D4 ; =0xFFFFF7FF + ldr r3, [r6, r2] + and r1, r3 + str r1, [r6, r2] + ldr r2, [sp, #0x48] + ldr r1, _021F32D8 ; =0x00140808 + tst r1, r2 + beq _021F32A2 + add sp, #0x4c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F32A2: + add r1, sp, #0x70 + ldrb r1, [r1] + mul r1, r0 + add r0, r1, #0 + mov r1, #0x64 + bl MOD11_022476C0 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021F32B4: .word 0x000021F0 +_021F32B8: .word 0x00002D74 +_021F32BC: .word 0x00002D75 +_021F32C0: .word 0x021FF7C4 +_021F32C4: .word 0x00002D60 +_021F32C8: .word 0x0000FFFF +_021F32CC: .word 0x021FF7C6 +_021F32D0: .word 0x0000213C +_021F32D4: .word 0xFFFFF7FF +_021F32D8: .word 0x00140808 + thumb_func_end MOD16_021F2EE8 + + thumb_func_start MOD16_021F32DC +MOD16_021F32DC: ; 0x021F32DC + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + ldr r2, _021F3448 ; =0x00000137 + add r7, r0, #0 + add r4, r1, #0 + cmp r3, r2 + bgt _021F32F4 + blt _021F32EE + b _021F33F0 +_021F32EE: + cmp r3, #0xed + beq _021F3396 + b _021F3442 +_021F32F4: + add r0, r2, #0 + add r0, #0x34 + cmp r3, r0 + bgt _021F3304 + add r2, #0x34 + cmp r3, r2 + beq _021F330C + b _021F3442 +_021F3304: + add r2, #0x8a + cmp r3, r2 + beq _021F3318 + b _021F3442 +_021F330C: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02249E04 + add r5, r0, #0 + b _021F3444 +_021F3318: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02249D90 + sub r0, #0x7d + cmp r0, #0xf + bhi _021F3392 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F3332: ; jump table + .short _021F3372 - _021F3332 - 2 ; case 0 + .short _021F3376 - _021F3332 - 2 ; case 1 + .short _021F337E - _021F3332 - 2 ; case 2 + .short _021F337A - _021F3332 - 2 ; case 3 + .short _021F3386 - _021F3332 - 2 ; case 4 + .short _021F3352 - _021F3332 - 2 ; case 5 + .short _021F335A - _021F3332 - 2 ; case 6 + .short _021F335E - _021F3332 - 2 ; case 7 + .short _021F3356 - _021F3332 - 2 ; case 8 + .short _021F3382 - _021F3332 - 2 ; case 9 + .short _021F3366 - _021F3332 - 2 ; case 10 + .short _021F3362 - _021F3332 - 2 ; case 11 + .short _021F336A - _021F3332 - 2 ; case 12 + .short _021F338A - _021F3332 - 2 ; case 13 + .short _021F338E - _021F3332 - 2 ; case 14 + .short _021F336E - _021F3332 - 2 ; case 15 +_021F3352: + mov r5, #1 + b _021F3444 +_021F3356: + mov r5, #2 + b _021F3444 +_021F335A: + mov r5, #3 + b _021F3444 +_021F335E: + mov r5, #4 + b _021F3444 +_021F3362: + mov r5, #5 + b _021F3444 +_021F3366: + mov r5, #6 + b _021F3444 +_021F336A: + mov r5, #7 + b _021F3444 +_021F336E: + mov r5, #8 + b _021F3444 +_021F3372: + mov r5, #0xa + b _021F3444 +_021F3376: + mov r5, #0xb + b _021F3444 +_021F337A: + mov r5, #0xc + b _021F3444 +_021F337E: + mov r5, #0xd + b _021F3444 +_021F3382: + mov r5, #0xe + b _021F3444 +_021F3386: + mov r5, #0xf + b _021F3444 +_021F338A: + mov r5, #0x10 + b _021F3444 +_021F338E: + mov r5, #0x11 + b _021F3444 +_021F3392: + mov r5, #0 + b _021F3444 +_021F3396: + ldr r0, _021F344C ; =0x00002D54 + add r1, r4, r0 + mov r0, #0xc0 + mul r0, r6 + ldr r4, [r1, r0] + lsl r0, r4, #2 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r5, r0, #0x1a + lsl r0, r4, #7 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r3, r0, #0x1b + lsl r0, r4, #0xc + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r2, r0, #0x1c + lsl r0, r4, #0x11 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r1, r0, #0x1d + lsl r0, r4, #0x1b + lsl r4, r4, #0x16 + lsr r4, r4, #0x1b + lsr r6, r0, #0x1b + mov r0, #1 + lsl r4, r4, #0x1f + and r0, r6 + lsr r4, r4, #0x1e + orr r0, r4 + orr r0, r1 + orr r0, r2 + orr r0, r3 + add r1, r5, #0 + orr r1, r0 + mov r0, #0xf + mul r0, r1 + mov r1, #0x3f + blx _s32_div_f + add r5, r0, #1 + cmp r5, #9 + blt _021F3444 + add r5, r5, #1 + b _021F3444 +_021F33F0: + mov r2, #0xd + str r2, [sp] + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F3444 + mov r0, #0x4c + str r0, [sp] + add r0, r7, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F3444 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, _021F3450 ; =0x000080FF + tst r1, r0 + beq _021F3444 + mov r1, #3 + tst r1, r0 + beq _021F3428 + mov r5, #0xb +_021F3428: + mov r1, #0xc + tst r1, r0 + beq _021F3430 + mov r5, #5 +_021F3430: + mov r1, #0x30 + tst r1, r0 + beq _021F3438 + mov r5, #0xa +_021F3438: + mov r1, #0xc0 + tst r0, r1 + beq _021F3444 + mov r5, #0xf + b _021F3444 +_021F3442: + mov r5, #0 +_021F3444: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F3448: .word 0x00000137 +_021F344C: .word 0x00002D54 +_021F3450: .word 0x000080FF + thumb_func_end MOD16_021F32DC + + thumb_func_start MOD16_021F3454 +MOD16_021F3454: ; 0x021F3454 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r2, _021F360C ; =0x00000137 + add r7, r0, #0 + add r6, r1, #0 + cmp r3, r2 + bgt _021F346E + blt _021F3468 + b _021F35B2 +_021F3468: + cmp r3, #0xed + beq _021F3530 + b _021F3604 +_021F346E: + add r0, r2, #0 + add r0, #0x34 + cmp r3, r0 + bgt _021F347E + add r2, #0x34 + cmp r3, r2 + beq _021F3486 + b _021F3604 +_021F347E: + add r2, #0x8a + cmp r3, r2 + beq _021F34A2 + b _021F3604 +_021F3486: + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + mov r2, #0xc + bl MOD11_0224C12C + add r5, r0, #0 + b _021F3606 +_021F34A2: + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + mov r2, #1 + bl MOD11_0224C12C + sub r0, #0x7d + cmp r0, #0xf + bhi _021F352C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F34CC: ; jump table + .short _021F350C - _021F34CC - 2 ; case 0 + .short _021F3510 - _021F34CC - 2 ; case 1 + .short _021F3518 - _021F34CC - 2 ; case 2 + .short _021F3514 - _021F34CC - 2 ; case 3 + .short _021F3520 - _021F34CC - 2 ; case 4 + .short _021F34EC - _021F34CC - 2 ; case 5 + .short _021F34F4 - _021F34CC - 2 ; case 6 + .short _021F34F8 - _021F34CC - 2 ; case 7 + .short _021F34F0 - _021F34CC - 2 ; case 8 + .short _021F351C - _021F34CC - 2 ; case 9 + .short _021F3500 - _021F34CC - 2 ; case 10 + .short _021F34FC - _021F34CC - 2 ; case 11 + .short _021F3504 - _021F34CC - 2 ; case 12 + .short _021F3524 - _021F34CC - 2 ; case 13 + .short _021F3528 - _021F34CC - 2 ; case 14 + .short _021F3508 - _021F34CC - 2 ; case 15 +_021F34EC: + mov r5, #1 + b _021F3606 +_021F34F0: + mov r5, #2 + b _021F3606 +_021F34F4: + mov r5, #3 + b _021F3606 +_021F34F8: + mov r5, #4 + b _021F3606 +_021F34FC: + mov r5, #5 + b _021F3606 +_021F3500: + mov r5, #6 + b _021F3606 +_021F3504: + mov r5, #7 + b _021F3606 +_021F3508: + mov r5, #8 + b _021F3606 +_021F350C: + mov r5, #0xa + b _021F3606 +_021F3510: + mov r5, #0xb + b _021F3606 +_021F3514: + mov r5, #0xc + b _021F3606 +_021F3518: + mov r5, #0xd + b _021F3606 +_021F351C: + mov r5, #0xe + b _021F3606 +_021F3520: + mov r5, #0xf + b _021F3606 +_021F3524: + mov r5, #0x10 + b _021F3606 +_021F3528: + mov r5, #0x11 + b _021F3606 +_021F352C: + mov r5, #0 + b _021F3606 +_021F3530: + add r0, r4, #0 + mov r1, #0x4b + mov r2, #0 + bl FUN_020671BC + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x4a + mov r2, #0 + bl FUN_020671BC + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0x49 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0x48 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0x46 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x47 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + lsl r2, r6, #0x1f + lsl r0, r5, #0x1f + lsr r5, r2, #0x1b + lsl r2, r7, #0x1f + lsr r4, r2, #0x1c + ldr r2, [sp, #4] + lsl r1, r1, #0x1f + lsl r2, r2, #0x1f + lsr r3, r2, #0x1d + ldr r2, [sp, #8] + mov r6, #1 + and r2, r6 + lsr r1, r1, #0x1e + orr r1, r2 + orr r1, r3 + orr r1, r4 + lsr r0, r0, #0x1a + orr r1, r5 + orr r1, r0 + mov r0, #0xf + mul r0, r1 + mov r1, #0x3f + blx _s32_div_f + add r5, r0, #1 + cmp r5, #9 + blt _021F3606 + add r5, r5, #1 + b _021F3606 +_021F35B2: + mov r2, #0xd + str r2, [sp] + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F3606 + mov r0, #0x4c + str r0, [sp] + add r0, r7, #0 + add r1, r6, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F3606 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r6, r0] + ldr r1, _021F3610 ; =0x000080FF + tst r1, r0 + beq _021F3606 + mov r1, #3 + tst r1, r0 + beq _021F35EA + mov r5, #0xb +_021F35EA: + mov r1, #0xc + tst r1, r0 + beq _021F35F2 + mov r5, #5 +_021F35F2: + mov r1, #0x30 + tst r1, r0 + beq _021F35FA + mov r5, #0xa +_021F35FA: + mov r1, #0xc0 + tst r0, r1 + beq _021F3606 + mov r5, #0xf + b _021F3606 +_021F3604: + mov r5, #0 +_021F3606: + add r0, r5, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021F360C: .word 0x00000137 +_021F3610: .word 0x000080FF + thumb_func_end MOD16_021F3454 + + thumb_func_start MOD16_021F3614 +MOD16_021F3614: ; 0x021F3614 + push {r4, r5} + mov r2, #0xc0 + mul r2, r1 + add r5, r0, r2 + mov r2, #0xb7 + lsl r2, r2, #6 + ldr r4, [r5, r2] + mov r3, #0x20 + tst r3, r4 + beq _021F3640 + add r2, #8 + ldr r2, [r5, r2] + lsl r2, r2, #0x11 + lsr r2, r2, #0x1e + bne _021F3640 + add r1, r0, r1 + ldr r0, _021F3648 ; =0x000021A4 + mov r2, #6 + strb r2, [r1, r0] + mov r0, #1 + pop {r4, r5} + bx lr +_021F3640: + mov r0, #0 + pop {r4, r5} + bx lr + nop +_021F3648: .word 0x000021A4 + thumb_func_end MOD16_021F3614 + + thumb_func_start MOD16_021F364C +MOD16_021F364C: ; 0x021F364C + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #0x14] + add r5, r1, #0 + str r2, [sp, #0x18] + bl FUN_0222FF74 + mov r1, #2 + tst r0, r1 + beq _021F3666 + add sp, #0x44 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3666: + ldr r0, [sp, #0x18] + mov r1, #1 + add r4, r0, #0 + eor r4, r1 + mov r1, #0xc0 + add r0, r4, #0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _021F37FC ; =0x00002D67 + ldrb r0, [r2, r0] + cmp r0, #0x19 + bne _021F36E4 + mov r0, #0 + str r0, [sp, #0x28] + ldr r0, [sp, #0x18] + mul r1, r0 + add r6, r5, r1 +_021F3688: + ldr r0, _021F3800 ; =0x00002D4C + ldr r2, [sp, #0x18] + ldrh r7, [r6, r0] + ldr r0, [sp, #0x14] + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021F32DC + add r3, r0, #0 + cmp r7, #0 + beq _021F36C8 + mov r0, #0 + str r0, [sp, #0x40] + ldr r0, [sp, #0x18] + add r1, r5, #0 + str r0, [sp] + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0x40 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r2, r7, #0 + bl MOD11_02246274 + ldr r1, [sp, #0x40] + mov r0, #2 + tst r0, r1 + beq _021F36C8 + add sp, #0x44 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F36C8: + ldr r0, [sp, #0x28] + add r6, r6, #2 + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #4 + blt _021F3688 + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl MOD11_0222FFC8 + cmp r0, #0 + bgt _021F36E6 +_021F36E4: + b _021F37F4 +_021F36E6: + ldr r0, [sp, #0x18] + add r0, r5, r0 + str r0, [sp, #0x24] +_021F36EC: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x20] + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F37DE + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F37DE + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F3804 ; =0x000001EE + cmp r0, r1 + beq _021F37DE + ldr r1, _021F3808 ; =0x0000219C + ldr r0, [sp, #0x24] + ldrb r1, [r0, r1] + ldr r0, [sp, #0x20] + cmp r0, r1 + beq _021F37DE + mov r7, #0 +_021F3730: + add r1, r7, #0 + add r0, r6, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0x1c] + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021F3454 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _021F37D8 + mov r0, #0 + str r0, [sp, #0x40] + add r0, r6, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x30] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + str r0, [sp, #0x34] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249D90 + str r0, [sp, #0x38] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x3c] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x2c] + str r1, [sp] + ldr r1, [sp, #0x38] + ldr r3, [sp, #0x30] + str r1, [sp, #4] + ldr r1, [sp, #0x3c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0x40 + str r0, [sp, #0x10] + ldr r1, [sp, #0x1c] + add r0, r5, #0 + bl MOD11_022465A0 + ldr r1, [sp, #0x40] + mov r0, #2 + tst r0, r1 + beq _021F37D8 + bl FUN_0201B9EC + mov r1, #3 + blx _s32_div_f + cmp r1, #2 + bge _021F37D8 + ldr r0, [sp, #0x18] + ldr r1, _021F380C ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x20] + add sp, #0x44 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F37D8: + add r7, r7, #1 + cmp r7, #4 + blt _021F3730 +_021F37DE: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + bl MOD11_0222FFC8 + ldr r1, [sp, #0x20] + cmp r1, r0 + bge _021F37F4 + b _021F36EC +_021F37F4: + mov r0, #0 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021F37FC: .word 0x00002D67 +_021F3800: .word 0x00002D4C +_021F3804: .word 0x000001EE +_021F3808: .word 0x0000219C +_021F380C: .word 0x000021A4 + thumb_func_end MOD16_021F364C + + thumb_func_start MOD16_021F3810 +MOD16_021F3810: ; 0x021F3810 + push {r4, r5, r6, r7, lr} + sub sp, #0xb4 + str r0, [sp, #0x14] + add r5, r1, #0 + str r2, [sp, #0x18] + bl FUN_0222FF74 + mov r4, #2 + tst r0, r4 + beq _021F3828 + mov r6, #0 + b _021F382C +_021F3828: + mov r6, #0 + add r4, r6, #0 +_021F382C: + mov r0, #0 + str r0, [sp, #0x54] + str r0, [sp, #0x6c] + ldr r0, [sp, #0x18] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + add r0, r5, r2 + str r0, [sp, #0x3c] + add r0, r6, #0 + mul r0, r1 + add r0, r5, r0 + str r0, [sp, #0x38] + add r0, r4, #0 + mul r0, r1 + add r0, r5, r0 + str r0, [sp, #0x34] +_021F384E: + ldr r1, [sp, #0x3c] + ldr r0, _021F3B78 ; =0x00002D4C + ldr r2, [sp, #0x18] + ldrh r7, [r1, r0] + ldr r0, [sp, #0x14] + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021F32DC + str r0, [sp, #0x5c] + cmp r7, #0 + beq _021F38E4 + lsl r0, r7, #4 + add r1, r5, r0 + ldr r0, _021F3B7C ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _021F38E4 + ldr r0, [sp, #0x54] + ldr r1, [sp, #0x38] + add r0, r0, #1 + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp, #0xb0] + ldr r0, _021F3B80 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F38A0 + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x5c] + str r0, [sp] + str r6, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0xb0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_02246274 +_021F38A0: + ldr r1, [sp, #0xb0] + mov r0, #8 + tst r0, r1 + bne _021F38AE + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F38AE: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x34] + ldr r0, _021F3B80 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F38D6 + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x5c] + str r0, [sp] + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0xb0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_02246274 +_021F38D6: + ldr r1, [sp, #0xb0] + mov r0, #8 + tst r0, r1 + bne _021F38E4 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F38E4: + ldr r0, [sp, #0x3c] + add r0, r0, #2 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x6c] + add r0, r0, #1 + str r0, [sp, #0x6c] + cmp r0, #4 + blt _021F384E + ldr r0, [sp, #0x54] + cmp r0, #2 + bge _021F3900 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3900: + ldr r0, [sp, #0x18] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x64] + ldr r0, [sp, #0x14] + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F3920 + ldr r0, [sp, #0x14] + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F3926 +_021F3920: + ldr r0, [sp, #0x64] + str r0, [sp, #0x60] + b _021F3934 +_021F3926: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x60] +_021F3934: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl MOD11_0222FFC8 + str r0, [sp, #0x58] + mov r0, #0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x58] + cmp r0, #0 + bgt _021F394A + b _021F3B24 +_021F394A: + ldr r0, [sp, #0x64] + add r0, r5, r0 + str r0, [sp, #0x44] + ldr r0, [sp, #0x60] + add r0, r5, r0 + str r0, [sp, #0x40] +_021F3956: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x2c] + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + str r0, [sp, #0x50] + bl FUN_020671BC + cmp r0, #0 + beq _021F39BC + ldr r0, [sp, #0x50] + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F39BC + ldr r0, [sp, #0x50] + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F3B84 ; =0x000001EE + cmp r0, r1 + beq _021F39BC + ldr r0, _021F3B88 ; =0x0000219C + ldr r1, [sp, #0x44] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x2c] + cmp r1, r2 + beq _021F39BC + ldr r1, [sp, #0x40] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x2c] + cmp r1, r2 + beq _021F39BC + add r2, r0, #0 + ldr r1, [sp, #0x44] + add r2, #8 + ldrb r2, [r1, r2] + ldr r1, [sp, #0x2c] + cmp r1, r2 + beq _021F39BC + ldr r1, [sp, #0x40] + add r0, #8 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x2c] + cmp r0, r1 + bne _021F39BE +_021F39BC: + b _021F3B16 +_021F39BE: + mov r0, #0 + str r0, [sp, #0x68] +_021F39C2: + ldr r1, [sp, #0x68] + ldr r0, [sp, #0x50] + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x50] + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021F3454 + str r0, [sp, #0x24] + cmp r7, #0 + beq _021F39F0 + lsl r0, r7, #4 + add r1, r5, r0 + ldr r0, _021F3B7C ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _021F39F2 +_021F39F0: + b _021F3B0A +_021F39F2: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x38] + ldr r0, _021F3B80 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F3A58 + ldr r0, [sp, #0x50] + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x70] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + str r0, [sp, #0x74] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + str r0, [sp, #0x78] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x7c] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x74] + ldr r2, [sp, #0x24] + str r1, [sp] + ldr r1, [sp, #0x78] + ldr r3, [sp, #0x70] + str r1, [sp, #4] + ldr r1, [sp, #0x7c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0xb0 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_022465A0 +_021F3A58: + ldr r1, [sp, #0xb0] + mov r0, #2 + tst r0, r1 + beq _021F3A7E + bl FUN_0201B9EC + mov r1, #3 + blx _s32_div_f + cmp r1, #2 + bge _021F3A7E + ldr r0, [sp, #0x18] + ldr r1, _021F3B8C ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x2c] + add sp, #0xb4 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3A7E: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x34] + ldr r0, _021F3B80 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F3AE4 + ldr r0, [sp, #0x50] + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x80] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + str r0, [sp, #0x84] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249D90 + str r0, [sp, #0x88] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x8c] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x84] + ldr r2, [sp, #0x24] + str r1, [sp] + ldr r1, [sp, #0x88] + ldr r3, [sp, #0x80] + str r1, [sp, #4] + ldr r1, [sp, #0x8c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0xb0 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_022465A0 +_021F3AE4: + ldr r1, [sp, #0xb0] + mov r0, #2 + tst r0, r1 + beq _021F3B0A + bl FUN_0201B9EC + mov r1, #3 + blx _s32_div_f + cmp r1, #2 + bge _021F3B0A + ldr r0, [sp, #0x18] + ldr r1, _021F3B8C ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x2c] + add sp, #0xb4 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3B0A: + ldr r0, [sp, #0x68] + add r0, r0, #1 + str r0, [sp, #0x68] + cmp r0, #4 + bge _021F3B16 + b _021F39C2 +_021F3B16: + ldr r0, [sp, #0x2c] + add r1, r0, #1 + ldr r0, [sp, #0x58] + str r1, [sp, #0x2c] + cmp r1, r0 + bge _021F3B24 + b _021F3956 +_021F3B24: + mov r0, #0 + str r0, [sp, #0x30] + ldr r0, [sp, #0x58] + cmp r0, #0 + bgt _021F3B30 + b _021F3D2A +_021F3B30: + ldr r0, [sp, #0x64] + add r0, r5, r0 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x60] + add r0, r5, r0 + str r0, [sp, #0x48] +_021F3B3C: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x30] + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + str r0, [sp, #0x20] + bl FUN_020671BC + cmp r0, #0 + beq _021F3BBE + ldr r0, [sp, #0x20] + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F3BBE + ldr r0, [sp, #0x20] + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F3B84 ; =0x000001EE + cmp r0, r1 + beq _021F3BBE + ldr r0, _021F3B88 ; =0x0000219C + b _021F3B90 + nop +_021F3B78: .word 0x00002D4C +_021F3B7C: .word 0x000003E1 +_021F3B80: .word 0x00002D8C +_021F3B84: .word 0x000001EE +_021F3B88: .word 0x0000219C +_021F3B8C: .word 0x000021A4 +_021F3B90: + ldr r1, [sp, #0x4c] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x30] + cmp r1, r2 + beq _021F3BBE + ldr r1, [sp, #0x48] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x30] + cmp r1, r2 + beq _021F3BBE + add r2, r0, #0 + ldr r1, [sp, #0x4c] + add r2, #8 + ldrb r2, [r1, r2] + ldr r1, [sp, #0x30] + cmp r1, r2 + beq _021F3BBE + ldr r1, [sp, #0x48] + add r0, #8 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x30] + cmp r0, r1 + bne _021F3BC0 +_021F3BBE: + b _021F3D1C +_021F3BC0: + mov r0, #0 + str r0, [sp, #0x1c] +_021F3BC4: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x20] + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x20] + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021F3454 + str r0, [sp, #0x28] + cmp r7, #0 + beq _021F3BF2 + lsl r0, r7, #4 + add r1, r5, r0 + ldr r0, _021F3D30 ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _021F3BF4 +_021F3BF2: + b _021F3D10 +_021F3BF4: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x38] + ldr r0, _021F3D34 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F3C5A + ldr r0, [sp, #0x20] + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x90] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + str r0, [sp, #0x94] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + str r0, [sp, #0x98] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x9c] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x94] + ldr r2, [sp, #0x28] + str r1, [sp] + ldr r1, [sp, #0x98] + ldr r3, [sp, #0x90] + str r1, [sp, #4] + ldr r1, [sp, #0x9c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0xb0 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_022465A0 +_021F3C5A: + ldr r0, [sp, #0xb0] + cmp r0, #0 + bne _021F3C82 + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x1f + sub r2, r2, r1 + mov r0, #0x1f + ror r2, r0 + add r0, r1, r2 + bne _021F3C82 + ldr r0, [sp, #0x18] + ldr r1, _021F3D38 ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x30] + add sp, #0xb4 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3C82: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x34] + ldr r0, _021F3D34 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F3CE8 + ldr r0, [sp, #0x20] + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xa0] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + str r0, [sp, #0xa4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249D90 + str r0, [sp, #0xa8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0xac] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0xa4] + ldr r2, [sp, #0x28] + str r1, [sp] + ldr r1, [sp, #0xa8] + ldr r3, [sp, #0xa0] + str r1, [sp, #4] + ldr r1, [sp, #0xac] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0xb0 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_022465A0 +_021F3CE8: + ldr r0, [sp, #0xb0] + cmp r0, #0 + bne _021F3D10 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + bne _021F3D10 + ldr r0, [sp, #0x18] + ldr r1, _021F3D38 ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x30] + add sp, #0xb4 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3D10: + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #4 + bge _021F3D1C + b _021F3BC4 +_021F3D1C: + ldr r0, [sp, #0x30] + add r1, r0, #1 + ldr r0, [sp, #0x58] + str r1, [sp, #0x30] + cmp r1, r0 + bge _021F3D2A + b _021F3B3C +_021F3D2A: + mov r0, #0 + add sp, #0xb4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021F3D30: .word 0x000003E1 +_021F3D34: .word 0x00002D8C +_021F3D38: .word 0x000021A4 + thumb_func_end MOD16_021F3810 + + thumb_func_start MOD16_021F3D3C +MOD16_021F3D3C: ; 0x021F3D3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r4, r2, #0 + add r5, r1, #0 + add r1, r4, #0 + add r6, r0, #0 + str r3, [sp, #0x10] + bl FUN_02230260 + mov r1, #1 + eor r0, r1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r0, r6, #0 + bl MOD11_0223022C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + bl FUN_0206A92C + ldr r1, _021F3E88 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _021F3DE2 + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #0xc0 + mul r0, r4 + add r7, r5, r0 +_021F3D78: + ldr r0, _021F3E8C ; =0x00002D4C + add r1, r5, #0 + ldrh r0, [r7, r0] + add r2, r4, #0 + str r0, [sp, #0x20] + ldr r3, [sp, #0x20] + add r0, r6, #0 + bl MOD16_021F32DC + add r3, r0, #0 + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _021F3DD6 + mov r0, #0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x24] + str r4, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0x2c + str r0, [sp, #0xc] + ldr r2, [sp, #0x20] + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_02246274 + ldr r1, [sp, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F3DD6 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _021F3DC2 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3DC2: + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + cmp r1, #0 + beq _021F3DD6 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3DD6: + ldr r0, [sp, #0x28] + add r7, r7, #2 + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #4 + blt _021F3D78 +_021F3DE2: + add r0, r6, #0 + bl FUN_0222FF74 + mov r1, #2 + tst r0, r1 + bne _021F3DF4 + add sp, #0x30 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3DF4: + ldr r1, [sp, #0x24] + add r0, r6, #0 + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + bl FUN_0206A92C + ldr r1, _021F3E88 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _021F3E82 + mov r0, #0 + str r0, [sp, #0x18] + mov r0, #0xc0 + mul r0, r4 + add r7, r5, r0 +_021F3E18: + ldr r0, _021F3E8C ; =0x00002D4C + add r1, r5, #0 + ldrh r0, [r7, r0] + add r2, r4, #0 + str r0, [sp, #0x14] + ldr r3, [sp, #0x14] + add r0, r6, #0 + bl MOD16_021F32DC + add r3, r0, #0 + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _021F3E76 + mov r0, #0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x1c] + str r4, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0x2c + str r0, [sp, #0xc] + ldr r2, [sp, #0x14] + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_02246274 + ldr r1, [sp, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F3E76 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _021F3E62 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3E62: + bl FUN_0201B9EC + mov r1, #0xa + blx _s32_div_f + cmp r1, #0 + beq _021F3E76 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3E76: + ldr r0, [sp, #0x18] + add r7, r7, #2 + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #4 + blt _021F3E18 +_021F3E82: + mov r0, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F3E88: .word 0x00003108 +_021F3E8C: .word 0x00002D4C + thumb_func_end MOD16_021F3D3C + + thumb_func_start MOD16_021F3E90 +MOD16_021F3E90: ; 0x021F3E90 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r3, #1 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + bl MOD16_021F3D3C + cmp r0, #0 + beq _021F3EB8 + bl FUN_0201B9EC + mov r1, #3 + blx _s32_div_f + cmp r1, #0 + beq _021F3EB8 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3EB8: + ldr r0, [sp, #8] + lsl r1, r0, #1 + ldr r0, [sp, #4] + add r1, r0, r1 + ldr r0, _021F3FF4 ; =0x00003064 + ldrh r0, [r1, r0] + cmp r0, #0 + bne _021F3ECE + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3ECE: + lsl r1, r0, #4 + ldr r0, [sp, #4] + add r2, r0, r1 + ldr r0, _021F3FF8 ; =0x000003E1 + ldrb r1, [r2, r0] + cmp r1, #0 + bne _021F3EE2 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3EE2: + add r0, r0, #1 + ldrb r0, [r2, r0] + cmp r0, #0xa + bne _021F3EF0 + mov r0, #0x12 + str r0, [sp, #0x10] + b _021F3F0A +_021F3EF0: + cmp r0, #0xb + bne _021F3EFA + mov r0, #0xb + str r0, [sp, #0x10] + b _021F3F0A +_021F3EFA: + cmp r0, #0xd + bne _021F3F04 + mov r0, #0xa + str r0, [sp, #0x10] + b _021F3F0A +_021F3F04: + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3F0A: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl MOD11_02246D1C + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _021F3F1E + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3F1E: + ldr r0, [sp, #8] + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp] + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F3F3C + ldr r0, [sp] + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F3F40 +_021F3F3C: + add r6, r4, #0 + b _021F3F4C +_021F3F40: + ldr r0, [sp] + ldr r1, [sp, #8] + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_021F3F4C: + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD11_0222FFC8 + mov r5, #0 + str r0, [sp, #0xc] + cmp r0, #0 + ble _021F3FEE + ldr r0, [sp, #4] + add r7, r0, r4 + add r6, r0, r6 +_021F3F62: + ldr r0, [sp] + ldr r1, [sp, #8] + add r2, r5, #0 + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F3FE6 + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F3FE6 + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F3FFC ; =0x000001EE + cmp r0, r1 + beq _021F3FE6 + ldr r0, _021F4000 ; =0x0000219C + ldrb r0, [r7, r0] + cmp r5, r0 + beq _021F3FE6 + ldr r0, _021F4000 ; =0x0000219C + ldrb r0, [r6, r0] + cmp r5, r0 + beq _021F3FE6 + ldr r0, _021F4004 ; =0x000021A4 + ldrb r0, [r7, r0] + cmp r5, r0 + beq _021F3FE6 + ldr r0, _021F4004 ; =0x000021A4 + ldrb r0, [r6, r0] + cmp r5, r0 + beq _021F3FE6 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x10] + cmp r0, r1 + bne _021F3FE6 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F3FE6 + ldr r1, [sp, #4] + ldr r0, [sp, #8] + add sp, #0x14 + add r1, r1, r0 + ldr r0, _021F4004 ; =0x000021A4 + strb r5, [r1, r0] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3FE6: + ldr r0, [sp, #0xc] + add r5, r5, #1 + cmp r5, r0 + blt _021F3F62 +_021F3FEE: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021F3FF4: .word 0x00003064 +_021F3FF8: .word 0x000003E1 +_021F3FFC: .word 0x000001EE +_021F4000: .word 0x0000219C +_021F4004: .word 0x000021A4 + thumb_func_end MOD16_021F3E90 + + thumb_func_start MOD16_021F4008 +MOD16_021F4008: ; 0x021F4008 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + add r5, r1, #0 + add r1, r2, #0 + lsl r6, r1, #1 + str r3, [sp, #0x1c] + ldr r1, _021F424C ; =0x00003064 + add r3, r5, r6 + str r2, [sp, #0x18] + ldrh r2, [r3, r1] + str r0, [sp, #0x14] + cmp r2, #0 + beq _021F402A + add r1, #8 + ldrh r1, [r3, r1] + cmp r1, #0xff + bne _021F4030 +_021F402A: + add sp, #0x60 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4030: + lsl r1, r2, #4 + add r2, r5, r1 + ldr r1, _021F4250 ; =0x000003E1 + ldrb r1, [r2, r1] + cmp r1, #0 + bne _021F4042 + add sp, #0x60 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4042: + ldr r1, [sp, #0x18] + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F405E + ldr r0, [sp, #0x14] + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F4062 +_021F405E: + add r7, r4, #0 + b _021F406E +_021F4062: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_021F406E: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl MOD11_0222FFC8 + str r0, [sp, #0x30] + mov r0, #0 + str r0, [sp, #0x34] + ldr r0, [sp, #0x30] + cmp r0, #0 + bgt _021F4084 + b _021F4246 +_021F4084: + add r0, r5, r4 + str r0, [sp, #0x2c] + add r0, r5, r7 + str r0, [sp, #0x28] + add r0, sp, #0x68 + ldrb r0, [r0, #0x10] + add r4, r5, r6 + str r0, [sp, #0x24] +_021F4094: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x34] + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F40FA + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F40FA + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F4254 ; =0x000001EE + cmp r0, r1 + beq _021F40FA + ldr r0, _021F4258 ; =0x0000219C + ldr r1, [sp, #0x2c] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x34] + cmp r1, r2 + beq _021F40FA + ldr r1, [sp, #0x28] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x34] + cmp r1, r2 + beq _021F40FA + add r2, r0, #0 + ldr r1, [sp, #0x2c] + add r2, #8 + ldrb r2, [r1, r2] + ldr r1, [sp, #0x34] + cmp r1, r2 + beq _021F40FA + ldr r1, [sp, #0x28] + add r0, #8 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x34] + cmp r0, r1 + bne _021F40FC +_021F40FA: + b _021F4238 +_021F40FC: + mov r0, #0 + str r0, [sp, #0x5c] + ldr r3, _021F425C ; =0x0000306C + ldr r0, [sp, #0x14] + ldrh r2, [r4, r3] + sub r3, #8 + ldrh r3, [r4, r3] + add r1, r5, #0 + bl MOD16_021F32DC + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x38] + ldrh r1, [r4, r1] + add r0, r5, #0 + bl MOD11_02246D1C + str r0, [sp, #0x3c] + add r0, r6, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x40] + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + mov r2, #1 + bl MOD11_0224C12C + str r0, [sp, #0x44] + add r0, r6, #0 + mov r1, #0xb0 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + mov r1, #0xb1 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0x40] + ldr r2, [sp, #0x38] + str r1, [sp] + ldr r1, [sp, #0x44] + ldr r3, [sp, #0x3c] + str r1, [sp, #4] + str r7, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0x5c + str r0, [sp, #0x10] + ldr r1, _021F424C ; =0x00003064 + add r0, r5, #0 + ldrh r1, [r4, r1] + bl MOD11_022465A0 + ldr r1, [sp, #0x5c] + ldr r0, [sp, #0x1c] + tst r0, r1 + beq _021F4238 + mov r7, #0 +_021F4182: + add r1, r7, #0 + add r0, r6, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0x20] + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021F3454 + str r0, [sp, #0x48] + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _021F4232 + mov r0, #0 + str r0, [sp, #0x5c] + add r0, r6, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x4c] + ldrh r1, [r4, r1] + add r0, r5, #0 + bl MOD11_02246D1C + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x50] + ldrh r1, [r4, r1] + add r0, r5, #0 + bl MOD11_02249D90 + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x54] + ldrh r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x58] + ldrh r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x50] + ldr r2, [sp, #0x48] + str r1, [sp] + ldr r1, [sp, #0x54] + ldr r3, [sp, #0x4c] + str r1, [sp, #4] + ldr r1, [sp, #0x58] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0x5c + str r0, [sp, #0x10] + ldr r1, [sp, #0x20] + add r0, r5, #0 + bl MOD11_022465A0 + ldr r1, [sp, #0x5c] + mov r0, #2 + tst r0, r1 + beq _021F4232 + bl FUN_0201B9EC + ldr r1, [sp, #0x24] + blx _s32_div_f + cmp r1, #0 + bne _021F4232 + ldr r0, [sp, #0x18] + ldr r1, _021F4260 ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x34] + add sp, #0x60 + strb r0, [r2, r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4232: + add r7, r7, #1 + cmp r7, #4 + blt _021F4182 +_021F4238: + ldr r0, [sp, #0x34] + add r1, r0, #1 + ldr r0, [sp, #0x30] + str r1, [sp, #0x34] + cmp r1, r0 + bge _021F4246 + b _021F4094 +_021F4246: + mov r0, #0 + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F424C: .word 0x00003064 +_021F4250: .word 0x000003E1 +_021F4254: .word 0x000001EE +_021F4258: .word 0x0000219C +_021F425C: .word 0x0000306C +_021F4260: .word 0x000021A4 + thumb_func_end MOD16_021F4008 + + thumb_func_start MOD16_021F4264 +MOD16_021F4264: ; 0x021F4264 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + add r4, r2, #0 + mov r0, #0xc0 + add r5, r1, #0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _021F4340 ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _021F429E + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x1e + bne _021F429E + mov r0, #0xc0 + mul r0, r4 + add r2, r5, r0 + ldr r0, _021F4344 ; =0x00002D8C + ldr r1, [r2, r0] + add r0, r0, #4 + ldr r0, [r2, r0] + lsr r0, r0, #1 + cmp r1, r0 + bhs _021F42A4 +_021F429E: + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F42A4: + ldr r0, _021F4348 ; =0x00003064 + lsl r7, r4, #1 + add r6, r5, r0 + ldrh r0, [r6, r7] + cmp r0, #0 + bne _021F42C8 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F42C8 + ldr r0, _021F434C ; =0x000021A4 + mov r3, #6 + add r2, r5, r4 + strb r3, [r2, r0] + add sp, #8 + add r0, r1, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F42C8: + ldrh r0, [r6, r7] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _021F4350 ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _021F42EE + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F42EE + ldr r0, _021F434C ; =0x000021A4 + mov r3, #6 + add r2, r5, r4 + strb r3, [r2, r0] + add sp, #8 + add r0, r1, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F42EE: + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #8 + bl MOD16_021F4008 + cmp r0, #0 + beq _021F4308 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4308: + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #4 + bl MOD16_021F4008 + cmp r0, #0 + beq _021F4322 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4322: + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F433A + ldr r0, _021F434C ; =0x000021A4 + mov r3, #6 + add r2, r5, r4 + strb r3, [r2, r0] + add sp, #8 + add r0, r1, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F433A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F4340: .word 0x00002DAC +_021F4344: .word 0x00002D8C +_021F4348: .word 0x00003064 +_021F434C: .word 0x000021A4 +_021F4350: .word 0x000003E1 + thumb_func_end MOD16_021F4264 + + thumb_func_start MOD16_021F4354 +MOD16_021F4354: ; 0x021F4354 + push {r3, r4} + mov r4, #0xc0 + mul r4, r2 + mov r3, #0 + ldr r2, _021F4388 ; =0x00002D58 + add r0, r3, #0 + add r4, r1, r4 +_021F4362: + ldrsb r1, [r4, r2] + cmp r1, #6 + ble _021F4370 + sub r1, r1, #6 + add r1, r3, r1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 +_021F4370: + add r0, r0, #1 + add r4, r4, #1 + cmp r0, #8 + blt _021F4362 + cmp r3, #4 + blo _021F4382 + mov r0, #1 + pop {r3, r4} + bx lr +_021F4382: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 +_021F4388: .word 0x00002D58 + thumb_func_end MOD16_021F4354 + + thumb_func_start MOD16_021F438C +MOD16_021F438C: ; 0x021F438C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r2, #0 + mov r2, #0xc0 + add r3, r6, #0 + mul r3, r2 + add r2, r1, #0 + add r5, r2, r3 + ldr r2, _021F4590 ; =0x00002DB0 + ldr r3, _021F4594 ; =0x0400E000 + ldr r4, [r5, r2] + str r0, [sp, #4] + str r1, [sp, #8] + tst r4, r3 + bne _021F440C + add r2, #0x10 + ldr r4, [r5, r2] + lsr r2, r3, #0x10 + tst r2, r4 + bne _021F440C + mov r2, #0x17 + str r2, [sp] + mov r2, #2 + add r3, r6, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F440C + mov r0, #0x47 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + mov r2, #2 + add r3, r6, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F440C + mov r0, #0x2a + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + mov r2, #6 + add r3, r6, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _021F4412 + ldr r0, [sp, #8] + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #8 + beq _021F440C + ldr r0, [sp, #8] + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #8 + bne _021F4412 +_021F440C: + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4412: + mov r0, #0 + str r0, [sp, #0x14] + lsl r0, r6, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp, #4] + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F4432 + ldr r0, [sp, #4] + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F4436 +_021F4432: + add r7, r4, #0 + b _021F4442 +_021F4436: + ldr r0, [sp, #4] + add r1, r6, #0 + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_021F4442: + ldr r0, [sp, #4] + add r1, r6, #0 + bl MOD11_0222FFC8 + mov r5, #0 + str r0, [sp, #0x10] + cmp r0, #0 + ble _021F44C2 + ldr r0, [sp, #8] + add r0, r0, r4 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r7, r0, r7 +_021F445C: + ldr r0, [sp, #4] + add r1, r6, #0 + add r2, r5, #0 + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F44BA + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F44BA + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F4598 ; =0x000001EE + cmp r0, r1 + beq _021F44BA + ldr r1, [sp, #0xc] + ldr r0, _021F459C ; =0x0000219C + ldrb r0, [r1, r0] + cmp r5, r0 + beq _021F44BA + ldr r0, _021F459C ; =0x0000219C + ldrb r0, [r7, r0] + cmp r5, r0 + beq _021F44BA + ldr r0, _021F45A0 ; =0x000021A4 + ldrb r0, [r1, r0] + cmp r5, r0 + beq _021F44BA + ldr r0, _021F45A0 ; =0x000021A4 + ldrb r0, [r7, r0] + cmp r5, r0 + beq _021F44BA + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] +_021F44BA: + ldr r0, [sp, #0x10] + add r5, r5, #1 + cmp r5, r0 + blt _021F445C +_021F44C2: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _021F4588 + ldr r0, [sp, #8] + add r1, r6, #0 + bl MOD16_021F3614 + cmp r0, #0 + beq _021F44DA + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F44DA: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F364C + cmp r0, #0 + beq _021F44EE + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F44EE: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F3810 + cmp r0, #0 + beq _021F4502 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4502: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F3E90 + cmp r0, #0 + beq _021F4516 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4516: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F4264 + cmp r0, #0 + beq _021F452A + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F452A: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + mov r3, #0 + bl MOD16_021F3D3C + cmp r0, #0 + beq _021F4540 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4540: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F4354 + cmp r0, #0 + beq _021F4554 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4554: + mov r0, #2 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + mov r3, #8 + bl MOD16_021F4008 + cmp r0, #0 + beq _021F456E + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F456E: + mov r0, #3 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + mov r3, #4 + bl MOD16_021F4008 + cmp r0, #0 + beq _021F4588 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4588: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F4590: .word 0x00002DB0 +_021F4594: .word 0x0400E000 +_021F4598: .word 0x000001EE +_021F459C: .word 0x0000219C +_021F45A0: .word 0x000021A4 + thumb_func_end MOD16_021F438C + + thumb_func_start MOD16_021F45A4 +MOD16_021F45A4: ; 0x021F45A4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r1, r0, #0 + str r0, [sp] + ldr r5, [r1, #0x30] + bl FUN_0222FF74 + add r6, r0, #0 + mov r0, #1 + tst r0, r6 + bne _021F45C8 + ldr r0, [sp] + add r1, r7, #0 + bl MOD11_02230270 + cmp r0, #0 + bne _021F4688 +_021F45C8: + ldr r0, [sp] + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021F438C + cmp r0, #0 + beq _021F4676 + ldr r0, _021F4690 ; =0x000021A4 + add r0, r5, r0 + str r0, [sp, #0x10] + ldrb r0, [r0, r7] + cmp r0, #6 + bne _021F4670 + ldr r0, [sp] + add r1, r7, #0 + bl MOD16_021F4698 + add r4, r0, #0 + cmp r4, #6 + bne _021F466C + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + mov r0, #0x10 + tst r0, r6 + bne _021F4602 + mov r0, #8 + tst r0, r6 + beq _021F4608 +_021F4602: + ldr r0, [sp, #0xc] + str r0, [sp, #8] + b _021F4616 +_021F4608: + ldr r0, [sp] + add r1, r7, #0 + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] +_021F4616: + ldr r0, [sp] + add r1, r7, #0 + bl MOD11_0222FFC8 + mov r4, #0 + str r0, [sp, #4] + cmp r0, #0 + ble _021F466C + ldr r0, [sp, #0xc] + add r6, r5, r0 + ldr r0, [sp, #8] + add r5, r5, r0 +_021F462E: + ldr r0, [sp] + add r1, r7, #0 + add r2, r4, #0 + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F4664 + ldr r0, _021F4694 ; =0x0000219C + ldrb r0, [r6, r0] + cmp r4, r0 + beq _021F4664 + ldr r0, _021F4694 ; =0x0000219C + ldrb r0, [r5, r0] + cmp r4, r0 + beq _021F4664 + ldr r0, _021F4690 ; =0x000021A4 + ldrb r0, [r6, r0] + cmp r4, r0 + beq _021F4664 + ldr r0, _021F4690 ; =0x000021A4 + ldrb r0, [r5, r0] + cmp r4, r0 + bne _021F466C +_021F4664: + ldr r0, [sp, #4] + add r4, r4, #1 + cmp r4, r0 + blt _021F462E +_021F466C: + ldr r0, [sp, #0x10] + strb r4, [r0, r7] +_021F4670: + add sp, #0x14 + mov r0, #3 + pop {r4, r5, r6, r7, pc} +_021F4676: + ldr r0, [sp] + add r1, r7, #0 + bl MOD16_021F4A40 + cmp r0, #0 + beq _021F4688 + add sp, #0x14 + mov r0, #2 + pop {r4, r5, r6, r7, pc} +_021F4688: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021F4690: .word 0x000021A4 +_021F4694: .word 0x0000219C + thumb_func_end MOD16_021F45A4 + + thumb_func_start MOD16_021F4698 +MOD16_021F4698: ; 0x021F4698 + push {r4, r5, r6, r7, lr} + sub sp, #0x94 + add r7, r0, #0 + str r1, [sp, #0x18] + lsl r1, r1, #0x18 + ldr r5, [r7, #0x30] + lsr r4, r1, #0x18 + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F46BC + add r0, r7, #0 + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F46C0 +_021F46BC: + str r4, [sp, #0x44] + b _021F46CE +_021F46C0: + ldr r1, [sp, #0x18] + add r0, r7, #0 + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x44] +_021F46CE: + ldr r2, [sp, #0x18] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_022482A4 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r1, [sp, #0x18] + add r0, r7, #0 + bl MOD11_0222FFC8 + str r0, [sp, #0x40] + mov r0, #0 + str r0, [sp, #0x50] + add r0, r5, r4 + str r0, [sp, #0x34] + ldr r0, [sp, #0x44] + add r0, r5, r0 + str r0, [sp, #0x30] +_021F46F4: + mov r0, #0 + str r0, [sp, #0x48] + mov r0, #6 + str r0, [sp, #0x38] + ldr r0, [sp, #0x40] + ldr r4, [sp, #0x48] + cmp r0, #0 + ble _021F47F8 +_021F4704: + ldr r1, [sp, #0x18] + add r0, r7, #0 + add r2, r4, #0 + bl FUN_02230014 + mov r1, #0xad + mov r2, #0 + str r0, [sp, #0x68] + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + beq _021F47E0 + ldr r0, _021F4A1C ; =0x000001EE + cmp r1, r0 + beq _021F47E0 + ldr r0, [sp, #0x68] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F47E0 + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x50] + tst r0, r1 + bne _021F47E0 + ldr r1, [sp, #0x34] + ldr r0, _021F4A20 ; =0x0000219C + ldrb r0, [r1, r0] + cmp r4, r0 + beq _021F47E0 + ldr r1, [sp, #0x30] + ldr r0, _021F4A20 ; =0x0000219C + ldrb r0, [r1, r0] + cmp r4, r0 + beq _021F47E0 + ldr r1, [sp, #0x34] + ldr r0, _021F4A24 ; =0x000021A4 + ldrb r0, [r1, r0] + cmp r4, r0 + beq _021F47E0 + ldr r1, [sp, #0x30] + ldr r0, _021F4A24 ; =0x000021A4 + ldrb r0, [r1, r0] + cmp r4, r0 + beq _021F47E0 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x60] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x68] + mov r1, #0xb0 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x58] + ldr r0, [sp, #0x68] + mov r1, #0xb1 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x54] + ldr r0, [sp, #0x58] + ldr r1, [sp, #0x60] + ldr r2, [sp, #0x5c] + bl MOD11_02246B9C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x54] + ldr r1, [sp, #0x60] + ldr r2, [sp, #0x5c] + bl MOD11_02246B9C + ldr r1, [sp, #0x4c] + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + ldr r1, [sp, #0x48] + cmp r1, r0 + bhs _021F47F0 + ldr r0, [sp, #0x4c] + str r0, [sp, #0x48] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x38] + b _021F47F0 +_021F47E0: + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x50] + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x50] +_021F47F0: + ldr r0, [sp, #0x40] + add r4, r4, #1 + cmp r4, r0 + blt _021F4704 +_021F47F8: + ldr r0, [sp, #0x38] + cmp r0, #6 + beq _021F48C0 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x38] + add r0, r7, #0 + bl FUN_02230014 + add r4, r0, #0 + mov r0, #0 + str r0, [sp, #0x20] +_021F480E: + ldr r1, [sp, #0x20] + add r0, r4, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x3c] + ldr r3, [sp, #0x3c] + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021F3454 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x3c] + cmp r0, #0 + beq _021F4898 + mov r0, #0 + str r0, [sp, #0x90] + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x70] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + str r0, [sp, #0x74] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + str r0, [sp, #0x78] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x7c] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x74] + ldr r2, [sp, #0x6c] + str r1, [sp] + ldr r1, [sp, #0x78] + ldr r3, [sp, #0x70] + str r1, [sp, #4] + ldr r1, [sp, #0x7c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0x90 + str r0, [sp, #0x10] + ldr r1, [sp, #0x3c] + add r0, r5, #0 + bl MOD11_022465A0 + ldr r1, [sp, #0x90] + mov r0, #2 + tst r0, r1 + bne _021F48A2 +_021F4898: + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #4 + blt _021F480E +_021F48A2: + ldr r0, [sp, #0x20] + cmp r0, #4 + bne _021F48BA + ldr r0, [sp, #0x38] + bl FUN_0206A92C + ldr r1, [sp, #0x50] + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x50] + b _021F48C4 +_021F48BA: + ldr r0, [sp, #0x38] + add sp, #0x94 + pop {r4, r5, r6, r7, pc} +_021F48C0: + mov r0, #0x3f + str r0, [sp, #0x50] +_021F48C4: + ldr r0, [sp, #0x50] + cmp r0, #0x3f + beq _021F48CC + b _021F46F4 +_021F48CC: + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #6 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x28] + str r0, [sp, #0x24] + ldr r0, [sp, #0x40] + cmp r0, #0 + bgt _021F48E0 + b _021F4A14 +_021F48E0: + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x24] + add r0, r7, #0 + bl FUN_02230014 + mov r1, #0xad + mov r2, #0 + str r0, [sp, #0x1c] + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + beq _021F4900 + ldr r0, _021F4A1C ; =0x000001EE + cmp r1, r0 + bne _021F4902 +_021F4900: + b _021F4A06 +_021F4902: + ldr r0, [sp, #0x1c] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F4A06 + ldr r0, _021F4A20 ; =0x0000219C + ldr r1, [sp, #0x34] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x24] + cmp r1, r2 + beq _021F4A06 + ldr r1, [sp, #0x30] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x24] + cmp r1, r2 + beq _021F4A06 + add r2, r0, #0 + ldr r1, [sp, #0x34] + add r2, #8 + ldrb r2, [r1, r2] + ldr r1, [sp, #0x24] + cmp r1, r2 + beq _021F4A06 + ldr r1, [sp, #0x30] + add r0, #8 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x24] + cmp r0, r1 + beq _021F4A06 + mov r0, #0 + str r0, [sp, #0x64] + ldr r0, [sp, #0x18] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x84] + ldr r0, [sp, #0x24] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x88] +_021F4954: + ldr r1, [sp, #0x64] + ldr r0, [sp, #0x1c] + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x8c] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x8c] + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021F3454 + str r0, [sp, #0x80] + ldr r0, [sp, #0x8c] + cmp r0, #0 + beq _021F49EE + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _021F4A28 ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #1 + beq _021F49EE + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_02230270 + add r3, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + lsl r3, r3, #2 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x84] + add r4, r5, r3 + str r0, [sp, #0xc] + mov r3, #0x6f + str r6, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + lsl r3, r3, #2 + ldr r2, [sp, #0x8c] + ldr r3, [r4, r3] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_0224B310 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0 + str r0, [sp, #0x90] + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x80] + str r0, [sp] + str r6, [sp, #4] + str r1, [sp, #8] + add r0, sp, #0x90 + str r0, [sp, #0xc] + ldr r2, [sp, #0x8c] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_02246274 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + ldr r1, [sp, #0x90] + ldr r0, _021F4A2C ; =0x00140808 + tst r0, r1 + beq _021F49EE + mov r0, #0 + str r0, [sp, #0x4c] +_021F49EE: + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x4c] + cmp r1, r0 + bhs _021F49FC + str r0, [sp, #0x28] + ldr r0, [sp, #0x88] + str r0, [sp, #0x2c] +_021F49FC: + ldr r0, [sp, #0x64] + add r0, r0, #1 + str r0, [sp, #0x64] + cmp r0, #4 + blt _021F4954 +_021F4A06: + ldr r0, [sp, #0x24] + add r1, r0, #1 + ldr r0, [sp, #0x40] + str r1, [sp, #0x24] + cmp r1, r0 + bge _021F4A14 + b _021F48E0 +_021F4A14: + ldr r0, [sp, #0x2c] + add sp, #0x94 + pop {r4, r5, r6, r7, pc} + nop +_021F4A1C: .word 0x000001EE +_021F4A20: .word 0x0000219C +_021F4A24: .word 0x000021A4 +_021F4A28: .word 0x000003E1 +_021F4A2C: .word 0x00140808 + thumb_func_end MOD16_021F4698 + + thumb_func_start MOD16_021F4A30 +MOD16_021F4A30: ; 0x021F4A30 + ldr r0, [r0, #0x30] + add r1, r0, r1 + ldr r0, _021F4A3C ; =0x000021A4 + ldrb r0, [r1, r0] + bx lr + nop +_021F4A3C: .word 0x000021A4 + thumb_func_end MOD16_021F4A30 + + thumb_func_start MOD16_021F4A40 +MOD16_021F4A40: ; 0x021F4A40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r2, #0 + str r2, [sp, #0x14] + add r2, r1, #0 + asr r2, r2, #1 + ldr r4, [r5, #0x30] + str r2, [sp, #0xc] + add r6, r4, r2 + ldr r2, [sp, #0x14] + ldr r3, _021F4D6C ; =0x000003D3 + str r2, [sp, #0x1c] + strb r2, [r6, r3] + ldr r3, [r5, #0x2c] + mov r2, #0x4b + and r2, r3 + str r1, [sp] + cmp r2, #0x4b + bne _021F4A76 + bl FUN_02230260 + cmp r0, #4 + bne _021F4A76 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4A76: + ldr r0, [sp] + mov r1, #0xc0 + mul r1, r0 + mov r0, #0xb7 + str r1, [sp, #8] + add r1, r4, r1 + lsl r0, r0, #6 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0x1a + tst r0, r1 + beq _021F4A94 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4A94: + ldr r1, [sp] + add r0, r5, #0 + bl FUN_0222FF88 + add r7, r0, #0 + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _021F4AF2 +_021F4AA8: + add r0, r7, #0 + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F4AE6 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F4AE6 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F4D70 ; =0x000001EE + cmp r0, r1 + beq _021F4AE6 + ldr r0, [sp, #0x14] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] +_021F4AE6: + add r0, r7, #0 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _021F4AA8 +_021F4AF2: + mov r0, #0 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + mov r1, #1 + lsl r0, r0, #3 + add r0, r4, r0 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + add r5, r4, r0 + ldr r0, [sp, #8] + add r7, r4, r0 + ldr r0, [sp] + bic r0, r1 + str r0, [sp] + add r0, r4, r0 + str r0, [sp, #0x10] +_021F4B12: + ldr r0, [sp, #4] + cmp r0, #0 + beq _021F4B28 + ldr r0, _021F4D74 ; =0x000003CD + ldrb r1, [r5, r0] + ldr r0, [sp, #4] + sub r0, r1, r0 + add r1, r0, #1 + ldr r0, [sp, #0x14] + cmp r0, r1 + bgt _021F4B34 +_021F4B28: + mov r0, #0xe7 + ldr r1, [sp, #0x18] + lsl r0, r0, #2 + ldrh r6, [r1, r0] + cmp r6, #0 + bne _021F4B36 +_021F4B34: + b _021F4E0E +_021F4B36: + cmp r6, #0x17 + bne _021F4B58 + ldr r1, _021F4D78 ; =0x00002D90 + ldr r0, _021F4D7C ; =0x00002D8C + ldr r1, [r7, r1] + ldr r0, [r7, r0] + lsr r1, r1, #2 + cmp r0, r1 + bhs _021F4BB2 + cmp r0, #0 + beq _021F4BB2 + ldr r0, _021F4D80 ; =0x000003D1 + mov r1, #0 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4B58: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x26 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4B9A + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x36 + bl MOD11_0224C12C + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + beq _021F4BB2 + ldr r0, _021F4D7C ; =0x00002D8C + ldr r1, [r7, r0] + cmp r1, #0 + beq _021F4BB2 + add r0, r0, #4 + ldr r3, [r7, r0] + lsr r0, r3, #2 + cmp r1, r0 + blo _021F4B8E + sub r0, r3, r1 + cmp r0, r2 + bls _021F4BB2 +_021F4B8E: + ldr r0, _021F4D80 ; =0x000003D1 + mov r1, #1 + strb r1, [r5, r0] + add r0, r1, #0 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4B9A: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0xf + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4BD0 + ldr r0, _021F4D84 ; =0x00002DAC + ldr r1, [r7, r0] + mov r0, #7 + tst r0, r1 + bne _021F4BB4 +_021F4BB2: + b _021F4DFA +_021F4BB4: + mov r0, #5 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4BD0: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x10 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4C0A + ldr r0, _021F4D84 ; =0x00002DAC + mov r1, #8 + ldr r0, [r7, r0] + tst r1, r0 + bne _021F4BEE + mov r1, #0x80 + tst r0, r1 + beq _021F4CBE +_021F4BEE: + mov r0, #4 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4C0A: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x11 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4C3E + ldr r0, _021F4D84 ; =0x00002DAC + ldr r1, [r7, r0] + mov r0, #0x10 + tst r0, r1 + beq _021F4CBE + mov r0, #3 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4C3E: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x12 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4C72 + ldr r0, _021F4D84 ; =0x00002DAC + ldr r1, [r7, r0] + mov r0, #0x20 + tst r0, r1 + beq _021F4CBE + mov r0, #2 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4C72: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x13 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4CA6 + ldr r0, _021F4D84 ; =0x00002DAC + ldr r1, [r7, r0] + mov r0, #0x40 + tst r0, r1 + beq _021F4CBE + mov r0, #1 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4CA6: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x14 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4CDC + ldr r0, _021F4D88 ; =0x00002DB0 + ldr r1, [r7, r0] + mov r0, #7 + tst r0, r1 + bne _021F4CC0 +_021F4CBE: + b _021F4DFA +_021F4CC0: + mov r0, #0 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4CDC: + ldr r0, _021F4D8C ; =0x00002DD4 + ldr r1, [r7, r0] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + sub r0, r1, r0 + bpl _021F4CEC + b _021F4DF4 +_021F4CEC: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1b + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4D0C + ldr r0, _021F4D6C ; =0x000003D3 + mov r1, #1 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4D0C: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1c + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4D2C + ldr r0, _021F4D6C ; =0x000003D3 + mov r1, #2 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4D2C: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1d + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4D4C + ldr r0, _021F4D6C ; =0x000003D3 + mov r1, #4 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4D4C: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1e + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4D90 + ldr r0, _021F4D6C ; =0x000003D3 + mov r1, #5 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA + .align 2, 0 +_021F4D6C: .word 0x000003D3 +_021F4D70: .word 0x000001EE +_021F4D74: .word 0x000003CD +_021F4D78: .word 0x00002D90 +_021F4D7C: .word 0x00002D8C +_021F4D80: .word 0x000003D1 +_021F4D84: .word 0x00002DAC +_021F4D88: .word 0x00002DB0 +_021F4D8C: .word 0x00002DD4 +_021F4D90: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1f + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4DAE + ldr r0, _021F4E28 ; =0x000003D3 + mov r1, #3 + strb r1, [r5, r0] + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4DAE: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x20 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4DCE + ldr r0, _021F4E28 ; =0x000003D3 + mov r1, #6 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4DCE: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x16 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4DFA + mov r0, #7 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x40 + tst r0, r1 + bne _021F4DFA + ldr r0, _021F4E2C ; =0x000003D1 + mov r1, #4 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4DF4: + ldr r0, _021F4E2C ; =0x000003D1 + mov r1, #5 + strb r1, [r5, r0] +_021F4DFA: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _021F4E0E + ldr r1, [sp, #0x10] + ldr r0, _021F4E30 ; =0x000003D6 + mov r2, #0 + strh r6, [r1, r0] + ldr r1, [sp, #0x18] + sub r0, #0x3a + strh r2, [r1, r0] +_021F4E0E: + ldr r0, [sp, #0x18] + add r0, r0, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + bge _021F4E20 + b _021F4B12 +_021F4E20: + ldr r0, [sp, #0x1c] + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F4E28: .word 0x000003D3 +_021F4E2C: .word 0x000003D1 +_021F4E30: .word 0x000003D6 + thumb_func_end MOD16_021F4A40 + + .section .data + ; 0x021F4E34 + .incbin "baserom.nds", 0x259554, 0xABAC |