diff options
-rw-r--r-- | arm9/arm9.lcf | 25 | ||||
-rw-r--r-- | arm9/global.inc | 2 | ||||
-rw-r--r-- | arm9/modules/84/asm/module_84.s | 6231 |
3 files changed, 6255 insertions, 3 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index bc65fa88..cc55c3e3 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -3205,7 +3205,17 @@ SECTIONS { SDK_OVERLAY_MODULE_84_ID = 84; SDK_OVERLAY.MODULE_84.ID = 84; SDK_OVERLAY.MODULE_84.START = .; - FILE_2FFA00.o (.text) /* 0x2FBA00 */ + module_84.o (.text) + module_84.o (.rodata) + module_84.o (.init) + SDK_OVERLAY.MODULE_84.SINIT_START = .; + module_84.o (.ctor) + module_84.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_84.SINIT_END = .; + . = ALIGN(32); + module_84.o (.sdata) + module_84.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_84.END = .; SDK_OVERLAY.MODULE_84.SIZE = SDK_OVERLAY.MODULE_84.END - SDK_OVERLAY.MODULE_84.START; @@ -3215,7 +3225,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_84.BSS_START = .; - FILE_2FFA00.o (.bss) + module_84.o (.bss) + module_84.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_84.BSS_END = .; SDK_OVERLAY.MODULE_84.BSS_SIZE = SDK_OVERLAY.MODULE_84.BSS_END - SDK_OVERLAY.MODULE_84.BSS_START; @@ -4144,7 +4155,15 @@ SECTIONS { WRITEW 83; WRITEW 0; - OVERLAY_TABLE(MODULE_84, 84) + WRITEW 84; + WRITEW ADDR(.MODULE_84); + WRITEW SDK_OVERLAY.MODULE_84.SIZE; + WRITEW SDK_OVERLAY.MODULE_84.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_84.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_84.SINIT_END; + WRITEW 84; + WRITEW 0; + OVERLAY_TABLE(MODULE_85, 85) OVERLAY_TABLE(MODULE_86, 86) } > arm9_table diff --git a/arm9/global.inc b/arm9/global.inc index 2bbdde65..dfce1078 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5918,6 +5918,8 @@ .extern FUN_0206E6D8
.extern FUN_02089F24
.extern SetCustomAllocator
+.extern FUN_02008D04
+.extern FUN_02024DAC
.extern FUN_020910EC
.extern FUN_0209521C
.extern FUN_020952AC
diff --git a/arm9/modules/84/asm/module_84.s b/arm9/modules/84/asm/module_84.s new file mode 100644 index 00000000..47a474a3 --- /dev/null +++ b/arm9/modules/84/asm/module_84.s @@ -0,0 +1,6231 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD84_021D74E0 +MOD84_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r1, [r5] + add r6, r0, #0 + cmp r1, #0 + beq _021D74FC + cmp r1, #1 + bne _021D74F4 + b _021D7620 +_021D74F4: + cmp r1, #2 + bne _021D74FA + b _021D765A +_021D74FA: + b _021D7668 +_021D74FC: + mov r0, #3 + mov r1, #0x4b + lsl r2, r0, #0x10 + bl FUN_0201681C + ldr r1, _021D7670 ; =0x00001244 + add r0, r6, #0 + mov r2, #0x4b + bl FUN_02006268 + add r4, r0, #0 + bne _021D7516 + b _021D7618 +_021D7516: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7674 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7678 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + add r0, r6, #0 + bl FUN_0200628C + str r0, [r4, #0x18] + mov r0, #0 + str r0, [r4, #0x1c] + bl 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] + mov r2, #0x4b + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x80 + add r1, #0xe0 + mov r2, #0x4b + bl FUN_02008C9C + add r1, r4, #0 + add r1, #0xdc + str r0, [r1] + add r0, r4, #0 + mov r2, #0xd + add r0, #0xe0 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D04 + add r0, r4, #0 + mov r1, #0 + add r0, #0xe0 + add r2, r1, #0 + bl FUN_02008D24 + add r0, r4, #0 + str r6, [r4] + bl MOD84_021D7968 + add r0, r4, #0 + bl MOD84_021D7AA0 + add r0, r4, #0 + bl MOD84_021D7F94 + add r0, r4, #0 + bl MOD84_021D82B8 + ldr r2, _021D767C ; =0x000001ED + mov r0, #0 + mov r1, #0x1a + mov r3, #0x4b + bl FUN_0200A86C + str r0, [r4, #0x14] + str r0, [sp] + mov r1, #0xef + ldr r0, [r4, #4] + mvn r1, r1 + mov r2, #1 + mov r3, #0 + bl MOD84_021D84F8 + str r0, [r4, #8] + ldr r0, [r4, #0x14] + ldr r1, _021D7680 ; =0xFFFFFE40 + str r0, [sp] + ldr r0, [r4, #4] + mov r2, #5 + mov r3, #0 + bl MOD84_021D84F8 + str r0, [r4, #0xc] + mov r1, #0 + ldr r2, _021D7684 ; =0x021DA6C8 + ldr r0, _021D7688 ; =0x00001224 + str r1, [r4, #0x10] + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r2, #0x2c] + add r0, r4, #0 + blx r2 + ldr r1, _021D768C ; =0x0000122C + mov r2, #1 + str r0, [r4, r1] + ldr r1, _021D7690 ; =0x000004A2 + mov r0, #0xe + bl FUN_0200433C + ldr r0, _021D7694 ; =MOD84_021D7958 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA60 + ldr r1, _021D7698 ; =0x00001230 + str r0, [r4, r1] + ldr r0, _021D769C ; =MOD84_021D7950 + add r1, r4, #0 + bl FUN_02015F10 +_021D7618: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D7668 +_021D7620: + bl FUN_02006278 + ldr r2, _021D7684 ; =0x021DA6C8 + ldr r1, _021D768C ; =0x0000122C + add r4, r0, #0 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r2, [r2, #0x30] + add r1, r4, r1 + blx r2 + cmp r0, #0 + beq _021D7668 + ldr r1, _021D76A0 ; =0x00001228 + mov r0, #0 + str r0, [r4, r1] + mov r1, #0x20 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r2, #0x4b + str r2, [sp, #8] + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D7668 +_021D765A: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7668 + add sp, #0x14 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D7668: + mov r0, #0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021D7670: .word 0x00001244 +_021D7674: .word 0xFFFFE0FF +_021D7678: .word 0x04001000 +_021D767C: .word 0x000001ED +_021D7680: .word 0xFFFFFE40 +_021D7684: .word 0x021DA6C8 +_021D7688: .word 0x00001224 +_021D768C: .word 0x0000122C +_021D7690: .word 0x000004A2 +_021D7694: .word MOD84_021D7958 +_021D7698: .word 0x00001230 +_021D769C: .word MOD84_021D7950 +_021D76A0: .word 0x00001228 + thumb_func_end MOD84_021D74E0 + + thumb_func_start MOD84_021D76A4 +MOD84_021D76A4: ; 0x021D76A4 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + bl FUN_02006278 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021D773E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D76C2: ; jump table + .short _021D76CA - _021D76C2 - 2 ; case 0 + .short _021D76EE - _021D76C2 - 2 ; case 1 + .short _021D771A - _021D76C2 - 2 ; case 2 + .short _021D772E - _021D76C2 - 2 ; case 3 +_021D76CA: + bl OS_DisableInterrupts + add r6, r0, #0 + ldr r0, _021D7744 ; =0x00001230 + ldr r0, [r5, r0] + bl FUN_0200CAB4 + add r0, r6, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D773E +_021D76EE: + ldr r0, [r5, #0xc] + bl MOD84_021D85B8 + ldr r0, [r5, #8] + bl MOD84_021D85B8 + ldr r0, [r5, #0x14] + bl FUN_0200A8B8 + add r0, r5, #0 + bl MOD84_021D8000 + add r0, r5, #0 + bl MOD84_021D7AB8 + add r0, r5, #0 + bl MOD84_021D7A84 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D773E +_021D771A: + add r5, #0xdc + ldr r0, [r5] + bl FUN_0201FD58 + bl FUN_02009FA0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D773E +_021D772E: + add r0, r6, #0 + bl FUN_0200627C + mov r0, #0x4b + bl FUN_020168D0 + mov r0, #1 + pop {r4, r5, r6, pc} +_021D773E: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_021D7744: .word 0x00001230 + thumb_func_end MOD84_021D76A4 + + thumb_func_start MOD84_021D7748 +MOD84_021D7748: ; 0x021D7748 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD84_021D85EC + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD84_021D85EC + str r0, [r4, #0x10] + ldr r0, [r5] + cmp r0, #0xa + bhi _021D7804 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7778: ; jump table + .short _021D778E - _021D7778 - 2 ; case 0 + .short _021D77EC - _021D7778 - 2 ; case 1 + .short _021D7826 - _021D7778 - 2 ; case 2 + .short _021D7846 - _021D7778 - 2 ; case 3 + .short _021D7868 - _021D7778 - 2 ; case 4 + .short _021D7874 - _021D7778 - 2 ; case 5 + .short _021D789C - _021D7778 - 2 ; case 6 + .short _021D78AA - _021D7778 - 2 ; case 7 + .short _021D78BE - _021D7778 - 2 ; case 8 + .short _021D7920 - _021D7778 - 2 ; case 9 + .short _021D7914 - _021D7778 - 2 ; case 10 +_021D778E: + ldr r0, [r4, #0x1c] + cmp r0, #0 + bne _021D77C8 + ldr r0, _021D7928 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #8 + tst r0, r1 + beq _021D77C8 + ldr r0, [r4, #0x18] + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D77C8 + mov r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4, #0x1c] + mov r0, #7 + str r0, [r5] + b _021D7920 +_021D77C8: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7930 ; =0x021DA6FC + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021D7804 + ldr r0, _021D7934 ; =0x00001228 + mov r1, #0 + str r1, [r4, r0] + mov r0, #1 + str r0, [r5] + b _021D7920 +_021D77EC: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7938 ; =0x021DA700 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + bne _021D7806 +_021D7804: + b _021D7920 +_021D7806: + ldr r0, _021D793C ; =0x00001224 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #7 + bhs _021D7820 + mov r1, #0 + add r0, r0, #4 + str r1, [r4, r0] + mov r0, #2 + str r0, [r5] + b _021D7920 +_021D7820: + mov r0, #4 + str r0, [r5] + b _021D7920 +_021D7826: + ldr r2, _021D793C ; =0x00001224 + ldr r1, [r4, #4] + ldr r2, [r4, r2] + add r0, r4, #0 + lsl r3, r2, #4 + ldr r2, _021D7940 ; =0x021DA6F4 + ldr r2, [r2, r3] + blx r2 + ldr r1, _021D792C ; =0x0000122C + mov r2, #0 + str r0, [r4, r1] + sub r0, r1, #4 + str r2, [r4, r0] + mov r0, #3 + str r0, [r5] + b _021D7920 +_021D7846: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7944 ; =0x021DA6F8 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021D7920 + ldr r0, _021D7934 ; =0x00001228 + mov r1, #0 + str r1, [r4, r0] + str r1, [r5] + b _021D7920 +_021D7868: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021D7920 + mov r0, #5 + str r0, [r5] + b _021D7920 +_021D7874: + ldr r0, _021D7928 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #9 + tst r0, r1 + beq _021D7920 + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #6 + str r0, [r5] + b _021D7920 +_021D789C: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7920 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D78AA: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7920 + ldr r0, _021D7934 ; =0x00001228 + mov r1, #0 + str r1, [r4, r0] + mov r0, #8 + str r0, [r5] + b _021D7920 +_021D78BE: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7938 ; =0x021DA700 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021D7920 + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD84_021D87B0 + ldr r0, [r4, #8] + bl MOD84_021D881C + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7948 ; =0xFFFF1FFF + and r1, r0 + str r1, [r2] + ldr r2, _021D794C ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0x20 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0xa + str r0, [r5] + b _021D7920 +_021D7914: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7920 + mov r0, #5 + str r0, [r5] +_021D7920: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021D7928: .word 0x021C48B8 +_021D792C: .word 0x0000122C +_021D7930: .word 0x021DA6FC +_021D7934: .word 0x00001228 +_021D7938: .word 0x021DA700 +_021D793C: .word 0x00001224 +_021D7940: .word 0x021DA6F4 +_021D7944: .word 0x021DA6F8 +_021D7948: .word 0xFFFF1FFF +_021D794C: .word 0x04001000 + thumb_func_end MOD84_021D7748 + + thumb_func_start MOD84_021D7950 +MOD84_021D7950: ; 0x021D7950 + ldr r3, _021D7954 ; =MOD84_021D7CFC + bx r3 + .align 2, 0 +_021D7954: .word MOD84_021D7CFC + thumb_func_end MOD84_021D7950 + + thumb_func_start MOD84_021D7958 +MOD84_021D7958: ; 0x021D7958 + push {r3, lr} + add r1, #0xdc + ldr r0, [r1] + bl FUN_0201FDEC + bl FUN_02009F80 + pop {r3, pc} + thumb_func_end MOD84_021D7958 + + thumb_func_start MOD84_021D7968 +MOD84_021D7968: ; 0x021D7968 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x4b + bl FUN_02016B94 + str r0, [r4, #4] + ldr r0, _021D7A60 ; =0x021DA68C + bl FUN_0201E66C + ldr r2, _021D7A64 ; =0x04000304 + ldr r0, _021D7A68 ; =0xFFFF7FFF + ldrh r1, [r2] + and r0, r1 + strh r0, [r2] + mov r0, #1 + mov r1, #0 + add r2, r0, #0 + bl GX_SetGraphicsMode + ldr r0, _021D7A6C ; =0x021DA650 + bl FUN_02016BBC + ldr r0, [r4, #4] + ldr r2, _021D7A70 ; =0x021DA670 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D7A70 ; =0x021DA670 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x42 + add r3, r2, #0 + bl FUN_02006948 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x42 + mov r2, #4 + bl FUN_02006948 + ldr r2, _021D7A74 ; =0x04000050 + mov r0, #0 + add r3, r2, #0 + add r7, r2, #0 + ldr r1, _021D7A78 ; =0x04001050 + strh r0, [r2] + strh r0, [r1] + mov r0, #0xff + sub r3, #0x10 + strh r0, [r3] + add r3, r2, #0 + ldr r4, _021D7A7C ; =0x00005EC0 + sub r3, #0xc + strh r4, [r3] + sub r7, #8 + ldrh r4, [r7] + mov r5, #0x3f + mov r3, #0x1d + bic r4, r5 + add r6, r4, #0 + orr r6, r3 + mov r4, #0x20 + orr r6, r4 + strh r6, [r7] + sub r7, r2, #6 + ldrh r6, [r7] + mov r2, #0x1f + bic r6, r5 + orr r6, r2 + orr r6, r4 + strh r6, [r7] + add r6, r1, #0 + sub r6, #0x10 + strh r0, [r6] + add r0, r1, #0 + mov r6, #0x18 + sub r0, #0xc + strh r6, [r0] + add r6, r1, #0 + sub r6, #8 + ldrh r0, [r6] + bic r0, r5 + orr r0, r3 + orr r0, r4 + sub r3, r1, #6 + strh r0, [r6] + ldrh r0, [r3] + sub r1, #0x50 + bic r0, r5 + orr r0, r2 + orr r0, r4 + strh r0, [r3] + lsl r3, r4, #0x15 + ldr r0, [r3] + ldr r2, _021D7A80 ; =0xFFFF1FFF + add r5, r0, #0 + and r5, r2 + lsl r0, r4, #8 + orr r0, r5 + str r0, [r3] + ldr r0, [r1] + and r2, r0 + lsl r0, r4, #8 + orr r0, r2 + str r0, [r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7A60: .word 0x021DA68C +_021D7A64: .word 0x04000304 +_021D7A68: .word 0xFFFF7FFF +_021D7A6C: .word 0x021DA650 +_021D7A70: .word 0x021DA670 +_021D7A74: .word 0x04000050 +_021D7A78: .word 0x04001050 +_021D7A7C: .word 0x00005EC0 +_021D7A80: .word 0xFFFF1FFF + thumb_func_end MOD84_021D7968 + + thumb_func_start MOD84_021D7A84 +MOD84_021D7A84: ; 0x021D7A84 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD84_021D7A84 + + thumb_func_start MOD84_021D7AA0 +MOD84_021D7AA0: ; 0x021D7AA0 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D7AC8 + add r0, r4, #0 + bl MOD84_021D7B54 + add r0, r4, #0 + bl MOD84_021D7BC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D7AA0 + + thumb_func_start MOD84_021D7AB8 +MOD84_021D7AB8: ; 0x021D7AB8 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D7CD4 + add r0, r4, #0 + bl MOD84_021D7BBC + pop {r4, pc} + thumb_func_end MOD84_021D7AB8 + + thumb_func_start MOD84_021D7AC8 +MOD84_021D7AC8: ; 0x021D7AC8 + push {r3, lr} + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _021D7B3C ; =0x04000060 + ldr r2, _021D7B40 ; =0xFFFFCFFD + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _021D7B44 ; =0x0000CFFB + and r3, r1 + strh r3, [r0] + ldrh r3, [r0] + sub r1, r1, #4 + and r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021D7B48 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _021D7B4C ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r1, _021D7B50 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r0, r2 + strh r0, [r1] + pop {r3, pc} + nop +_021D7B3C: .word 0x04000060 +_021D7B40: .word 0xFFFFCFFD +_021D7B44: .word 0x0000CFFB +_021D7B48: .word 0x04000540 +_021D7B4C: .word 0xBFFF0000 +_021D7B50: .word 0x04000008 + thumb_func_end MOD84_021D7AC8 + + thumb_func_start MOD84_021D7B54 +MOD84_021D7B54: ; 0x021D7B54 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x4b + bl FUN_0201EB64 + str r0, [r4, #0x20] + mov r0, #0 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + strh r0, [r4, #0x30] + strh r0, [r4, #0x32] + strh r0, [r4, #0x34] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + mov r1, #0x4b + str r0, [sp, #8] + add r0, r4, #0 + add r2, r4, #0 + ldr r3, _021D7BB8 ; =0x00000FA4 + add r0, #0x24 + lsl r1, r1, #0xe + add r2, #0x30 + bl FUN_0201ECA8 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0x10] + str r1, [sp, #0xc] + str r1, [sp, #0x14] + ldr r1, [r4, #0x20] + add r0, sp, #0xc + bl FUN_0201EC58 + ldr r0, [r4, #0x20] + bl FUN_0201EB8C + mov r1, #0xfa + ldr r2, [r4, #0x20] + mov r0, #0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + add sp, #0x18 + pop {r4, pc} + nop +_021D7BB8: .word 0x00000FA4 + thumb_func_end MOD84_021D7B54 + + thumb_func_start MOD84_021D7BBC +MOD84_021D7BBC: ; 0x021D7BBC + ldr r3, _021D7BC4 ; =FUN_0201EB70 + ldr r0, [r0, #0x20] + bx r3 + nop +_021D7BC4: .word FUN_0201EB70 + thumb_func_end MOD84_021D7BBC + + thumb_func_start MOD84_021D7BC8 +MOD84_021D7BC8: ; 0x021D7BC8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #0 + add r5, r0, #0 + add r4, r5, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #1 + mov r3, #0x4b + add r4, #0x38 + bl FUN_02006D18 + str r0, [r5, #0x38] + ldr r1, [sp, #8] + bl DC_FlushRange + ldr r0, [r5, #0x38] + cmp r0, #0 + beq _021D7CCC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + str r1, [r0] + mov r2, #0 + add r0, r4, #0 + ldr r1, _021D7CD0 ; =0xFFF8E000 + str r2, [r4, #0x7c] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + str r2, [r0] + add r0, r4, #0 + add r0, #0x94 + strh r2, [r0] + mov r1, #0xa5 + add r0, r4, #0 + lsl r1, r1, #4 + add r0, #0x96 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x50 + add r0, #0x98 + strh r1, [r0] + ldr r0, [r4] + bl FUN_020BC13C + str r0, [r4, #0x5c] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x60] + ldr r0, [r4] + bl FUN_020BC0FC + str r0, [r4, #0x64] + bl FUN_0201B3C4 + ldr r0, [r4] + ldr r1, [r4, #0x64] + bl FUN_0201B3A8 + add r0, r4, #0 + ldr r1, [r4, #0x60] + add r0, #8 + bl FUN_020B80B4 + mov r2, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #3 + mov r3, #0x4b + bl FUN_02006D18 + str r0, [r4, #4] + cmp r0, #0 + beq _021D7CCC + ldr r1, [sp, #8] + bl DC_FlushRange + add r0, r4, #0 + add r0, #0x6c + mov r1, #0x4b + mov r2, #0x20 + bl FUN_02016B20 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020BC4C8 + add r5, r0, #0 + add r0, r4, #0 + ldr r2, [r4, #0x60] + add r0, #0x6c + add r1, r5, #0 + bl FUN_020BB8D0 + str r0, [r4, #0x68] + ldr r2, [r4, #0x60] + ldr r3, [r4, #0x64] + add r1, r5, #0 + bl FUN_020B8110 + add r0, r4, #0 + ldr r1, [r4, #0x68] + add r0, #8 + bl FUN_020B7EFC + add r0, r4, #0 + mov r1, #0 + add r0, #0x9c + str r1, [r0] + ldr r0, [r4, #0x68] + add r4, #0xa0 + ldr r0, [r0, #8] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + str r0, [r4] +_021D7CCC: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021D7CD0: .word 0xFFF8E000 + thumb_func_end MOD84_021D7BC8 + + thumb_func_start MOD84_021D7CD4 +MOD84_021D7CD4: ; 0x021D7CD4 + push {r4, lr} + add r4, r0, #0 + add r4, #0x38 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D7CF0 + add r0, r4, #0 + ldr r1, [r4, #0x68] + add r0, #0x6c + bl thunk_FUN_020ae84c + ldr r0, [r4, #4] + bl FUN_02016A18 +_021D7CF0: + ldr r0, [r4] + cmp r0, #0 + beq _021D7CFA + bl FUN_02016A18 +_021D7CFA: + pop {r4, pc} + thumb_func_end MOD84_021D7CD4 + + thumb_func_start MOD84_021D7CFC +MOD84_021D7CFC: ; 0x021D7CFC + push {r3, r4, lr} + sub sp, #0x4c + add r4, r0, #0 + bl G3X_ResetMtxStack + mov r1, #0 + mov r0, #0x11 + add r2, r1, #0 + bl FUN_020BB1C0 + bl FUN_0201EBA4 + add r4, #0x38 + add r0, sp, #0x28 + bl MTX_Identity33_ + add r0, r4, #0 + add r0, #0x94 + ldrh r0, [r0] + ldr r3, _021D7DF0 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotX33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x96 + ldrh r0, [r0] + ldr r3, _021D7DF0 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotY33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x98 + ldrh r0, [r0] + ldr r3, _021D7DF0 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotZ33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r1, r4, #0 + add r1, #0x9c + ldr r2, [r1] + mov r1, #2 + lsl r1, r1, #0xa + add r2, r2, r1 + add r1, r4, #0 + add r1, #0x9c + str r2, [r1] + add r1, r4, #0 + add r1, #0xa0 + ldr r2, [r1] + add r1, r4, #0 + add r1, #0x9c + add r0, r4, #0 + ldr r1, [r1] + add r0, #0x9c + cmp r1, r2 + blt _021D7DBA + ldr r1, [r0] + sub r1, r1, r2 + str r1, [r0] +_021D7DBA: + add r0, r4, #0 + add r0, #0x9c + ldr r1, [r0] + ldr r0, [r4, #0x68] + add r2, sp, #0x28 + str r1, [r0] + add r0, r4, #0 + add r1, r4, #0 + add r4, #0x88 + add r0, #8 + add r1, #0x7c + add r3, r4, #0 + bl FUN_0201B26C + mov r2, #1 + mov r0, #0x12 + add r1, sp, #0 + str r2, [sp] + bl FUN_020BB1C0 + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 + add sp, #0x4c + pop {r3, r4, pc} + nop +_021D7DF0: .word 0x020FFA38 + thumb_func_end MOD84_021D7CFC + + thumb_func_start MOD84_021D7DF4 +MOD84_021D7DF4: ; 0x021D7DF4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r0, #0x38] + add r5, r1, #0 + add r4, #0x38 + cmp r0, #0 + beq _021D7E08 + bl FUN_02016A18 +_021D7E08: + ldr r1, _021D7ED4 ; =0x021DA648 + lsl r3, r5, #1 + mov r2, #0 + ldrh r1, [r1, r3] + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x7f + mov r3, #0x4b + bl FUN_02006D18 + str r0, [r4] + cmp r0, #0 + beq _021D7E9A + ldr r1, [sp, #8] + bl DC_FlushRange + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + str r1, [r0] + mov r2, #0 + add r0, r4, #0 + ldr r1, _021D7ED8 ; =0xFFF8E000 + str r2, [r4, #0x7c] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + str r2, [r0] + add r0, r4, #0 + add r0, #0x94 + strh r2, [r0] + mov r1, #0xa5 + add r0, r4, #0 + lsl r1, r1, #4 + add r0, #0x96 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x50 + add r0, #0x98 + strh r1, [r0] + ldr r0, [r4] + bl FUN_020BC13C + str r0, [r4, #0x5c] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x60] + ldr r0, [r4] + bl FUN_020BC0FC + str r0, [r4, #0x64] + bl FUN_0201B3C4 + ldr r0, [r4] + ldr r1, [r4, #0x64] + bl FUN_0201B3A8 + add r0, r4, #0 + ldr r1, [r4, #0x60] + add r0, #8 + bl FUN_020B80B4 +_021D7E9A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D7ED0 + mov r1, #0 + bl FUN_020BC4C8 + add r1, r0, #0 + ldr r0, [r4, #0x68] + ldr r2, [r4, #0x60] + ldr r3, [r4, #0x64] + bl FUN_020B8110 + add r0, r4, #0 + ldr r1, [r4, #0x68] + add r0, #8 + bl FUN_020B7EFC + add r0, r4, #0 + mov r1, #0 + add r0, #0x9c + str r1, [r0] + ldr r0, [r4, #0x68] + add r4, #0xa0 + ldr r0, [r0, #8] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + str r0, [r4] +_021D7ED0: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021D7ED4: .word 0x021DA648 +_021D7ED8: .word 0xFFF8E000 + thumb_func_end MOD84_021D7DF4 + + thumb_func_start MOD84_021D7EDC +MOD84_021D7EDC: ; 0x021D7EDC + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B1A24 + mov r0, #0x8b + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B1A24 + mov r0, #0x25 + lsl r0, r0, #4 + add r0, r5, r0 + bl FUN_020B1A24 + mov r0, #0x9d + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B19DC + mov r0, #0xa2 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B19DC + mov r0, #0xa7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B19DC + ldr r0, [r5, #0x18] + ldr r0, [r0] + cmp r0, #1 + bne _021D7F2A + mov r0, #1 + b _021D7F2C +_021D7F2A: + mov r0, #0 +_021D7F2C: + mov r2, #0 + lsl r4, r0, #3 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + lsl r0, r0, #0xf + str r0, [sp, #8] + mov r0, #0x4b + ldr r1, _021D7F84 ; =0x021DA660 + str r0, [sp, #0xc] + mov r0, #0x82 + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x10] + ldrh r1, [r1, r4] + mov r0, #0x7f + add r3, r2, #0 + bl FUN_02006AE4 + mov r0, #0x4b + ldr r1, _021D7F88 ; =0x021DA662 + str r0, [sp] + mov r0, #0x9d + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #4] + ldrh r1, [r1, r4] + mov r0, #0x7f + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + ldr r1, _021D7F8C ; =0x021DA664 + ldr r2, _021D7F90 ; =0x021DA666 + ldrh r1, [r1, r4] + ldrh r2, [r2, r4] + mov r0, #0x7f + bl MOD84_021D81DC + mov r1, #0xad + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021D7F84: .word 0x021DA660 +_021D7F88: .word 0x021DA662 +_021D7F8C: .word 0x021DA664 +_021D7F90: .word 0x021DA666 + thumb_func_end MOD84_021D7EDC + + thumb_func_start MOD84_021D7F94 +MOD84_021D7F94: ; 0x021D7F94 + push {r4, lr} + sub sp, #0x30 + add r4, r0, #0 + bl MOD84_021D7EDC + mov r3, #0xad + mov r0, #1 + lsl r3, r3, #2 + str r0, [sp] + add r2, r3, #0 + ldr r1, [r4, r3] + sub r2, #0xac + sub r3, #0x40 + add r0, sp, #0xc + add r2, r4, r2 + add r3, r4, r3 + bl MOD84_021D8240 + mov r1, #0 + mov r2, #0xc8 + add r3, r2, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + add r1, sp, #0xc + add r3, #0x98 + bl MOD84_021D8260 + mov r1, #0x2b + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x2b + lsl r0, r0, #4 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020200D8 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x30 + pop {r4, pc} + thumb_func_end MOD84_021D7F94 + + thumb_func_start MOD84_021D8000 +MOD84_021D8000: ; 0x021D8000 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2b + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r0, #0xad + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD84_021D821C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8000 + + thumb_func_start MOD84_021D801C +MOD84_021D801C: ; 0x021D801C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0x4b + mov r1, #0x30 + str r2, [sp] + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _021D8090 + ldr r0, [sp] + ldr r2, _021D8094 ; =0x021DA6B4 + lsl r1, r0, #4 + lsl r0, r5, #5 + add r2, r2, r0 + str r7, [r4] + ldr r2, [r1, r2] + str r6, [r4, #0x24] + str r2, [r4, #0x14] + ldr r2, _021D8098 ; =0x021DA6B8 + add r2, r2, r0 + ldr r2, [r1, r2] + str r2, [r4, #0x18] + ldr r2, _021D809C ; =0x021DA6BC + add r2, r2, r0 + ldr r2, [r1, r2] + str r2, [r4, #0x1c] + ldr r2, _021D80A0 ; =0x021DA6C0 + add r0, r2, r0 + ldr r0, [r1, r0] + cmp r5, #0 + str r0, [r4, #0x20] + bne _021D8068 + ldr r0, _021D80A4 ; =0x021D80B8 + str r0, [r4, #8] + ldr r0, _021D80A8 ; =0x021D80F0 + b _021D806E +_021D8068: + ldr r0, _021D80AC ; =0x021D8104 + str r0, [r4, #8] + ldr r0, _021D80B0 ; =0x021D813C +_021D806E: + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x28] + mov r0, #1 + lsl r0, r0, #0x10 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0x2c] + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, _021D80B4 ; =0x021D8151 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA98 + str r0, [r4, #4] +_021D8090: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8094: .word 0x021DA6B4 +_021D8098: .word 0x021DA6B8 +_021D809C: .word 0x021DA6BC +_021D80A0: .word 0x021DA6C0 +_021D80A4: .word 0x021D80B8 +_021D80A8: .word 0x021D80F0 +_021D80AC: .word 0x021D8104 +_021D80B0: .word 0x021D813C +_021D80B4: .word 0x021D8151 + thumb_func_end MOD84_021D801C + + thumb_func_start MOD84_021D80B8 +MOD84_021D80B8: ; 0x021D80B8 + and r0, r3 + thumb_func_end MOD84_021D80B8 + + non_word_aligned_thumb_func_start MOD84_021D80BA +MOD84_021D80BA: ; 0x021D80BA + thumb_func_end MOD84_021D80BA +_021D80BA: + .byte 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2 + .byte 0x00, 0x40, 0xA0, 0xE1, 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5 + .byte 0x14, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE1, 0x0E, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0xA0, 0xE1 + .byte 0xFD, 0xBC, 0xFB, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x18, 0x80, 0xBD, 0xE8, 0x50, 0x00, 0x00, 0x04 + .byte 0x08, 0x20, 0x9F, 0xE5, 0x01, 0x04, 0x80, 0xE1, 0xB0, 0x00, 0xC2, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1 + .byte 0x52, 0x00, 0x00, 0x04, 0x18, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1 + .byte 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5, 0x14, 0x00, 0x9F, 0xE5 + .byte 0x04, 0x10, 0xA0, 0xE1, 0x0E, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0xA0, 0xE1, 0xEA, 0xBC, 0xFB, 0xEB + .byte 0x04, 0xD0, 0x8D, 0xE2, 0x18, 0x80, 0xBD, 0xE8, 0x50, 0x10, 0x00, 0x04, 0x08, 0x20, 0x9F, 0xE5 + .byte 0x01, 0x04, 0x80, 0xE1, 0xB0, 0x00, 0xC2, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x52, 0x10, 0x00, 0x04 + .byte 0x70, 0xB5, 0x0D, 0x1C, 0x06, 0x1C, 0x28, 0x69, 0x00, 0x28, 0x04, 0xD0, 0x01, 0x28, 0x0C, 0xD0 + .byte 0x02, 0x28, 0x1A, 0xD0, 0x70, 0xBD, 0x28, 0x6A, 0xE9, 0x69, 0xAC, 0x68, 0x00, 0x22, 0x10, 0x23 + .byte 0xA0, 0x47, 0x28, 0x69, 0x40, 0x1C, 0x28, 0x61, 0x70, 0xBD, 0xA8, 0x69, 0x02, 0x21, 0x00, 0x06 + .byte 0x00, 0x0E, 0x3F, 0xF6, 0x9B, 0xFB, 0x68, 0x69, 0x03, 0x21, 0x00, 0x06, 0x00, 0x0E, 0x3F, 0xF6 + .byte 0x95, 0xFB, 0x28, 0x69, 0x40, 0x1C, 0x28, 0x61, 0x70, 0xBD, 0xA9, 0x6A, 0xE8, 0x6A, 0x08, 0x18 + .byte 0x04, 0x13, 0xA8, 0x62, 0x10, 0x2C, 0x00, 0xDB, 0x10, 0x24, 0x10, 0x21, 0xEA, 0x68, 0x20, 0x1C + .byte 0x09, 0x1B, 0x90, 0x47, 0x10, 0x2C, 0x04, 0xDB, 0x00, 0x20, 0x68, 0x60, 0x30, 0x1C, 0x34, 0xF6 + .byte 0x79, 0xFC, 0x70, 0xBD + + thumb_func_start MOD84_021D81C4 +MOD84_021D81C4: ; 0x021D81C4 + ldr r0, [r0, #4] + cmp r0, #0 + bne _021D81CE + mov r0, #1 + bx lr +_021D81CE: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD84_021D81C4 + + thumb_func_start MOD84_021D81D4 +MOD84_021D81D4: ; 0x021D81D4 + ldr r3, _021D81D8 ; =FUN_02016A18 + bx r3 + .align 2, 0 +_021D81D8: .word FUN_02016A18 + thumb_func_end MOD84_021D81D4 + + thumb_func_start MOD84_021D81DC +MOD84_021D81DC: ; 0x021D81DC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x10 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _021D8218 + mov r0, #0x4b + add r3, r4, #0 + str r0, [sp] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + add r3, #8 + bl FUN_02006C30 + str r0, [r4] + mov r0, #0x4b + add r3, r4, #0 + str r0, [sp] + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0 + add r3, #0xc + bl FUN_02006C5C + str r0, [r4, #4] +_021D8218: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD84_021D81DC + + thumb_func_start MOD84_021D821C +MOD84_021D821C: ; 0x021D821C + push {r4, lr} + add r4, r0, #0 + beq _021D823C + ldr r0, [r4] + cmp r0, #0 + beq _021D822C + bl FUN_02016A18 +_021D822C: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D8236 + bl FUN_02016A18 +_021D8236: + add r0, r4, #0 + bl FUN_02016A18 +_021D823C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D821C + + thumb_func_start MOD84_021D8240 +MOD84_021D8240: ; 0x021D8240 + str r2, [r0] + str r3, [r0, #8] + ldr r2, [r1, #8] + str r2, [r0, #0xc] + ldr r1, [r1, #0xc] + ldr r2, [sp] + str r1, [r0, #0x10] + add r1, r0, #0 + add r1, #0x20 + strb r2, [r1] + mov r1, #0 + str r1, [r0, #4] + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + bx lr + thumb_func_end MOD84_021D8240 + + thumb_func_start MOD84_021D8260 +MOD84_021D8260: ; 0x021D8260 + push {r4, lr} + sub sp, #0x20 + add r0, #0xdc + ldr r0, [r0] + str r0, [sp] + lsl r0, r2, #0xc + str r0, [sp, #8] + lsl r0, r3, #0xc + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + str r1, [sp, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x18] + mov r0, #0x4b + str r0, [sp, #0x1c] + add r0, sp, #0 + bl FUN_0201FF84 + add r4, r0, #0 + beq _021D82A6 + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r1, [sp, #0x30] + add r0, r4, #0 + bl FUN_020200A0 +_021D82A6: + add r0, r4, #0 + add sp, #0x20 + pop {r4, pc} + thumb_func_end MOD84_021D8260 + + thumb_func_start MOD84_021D82AC +MOD84_021D82AC: ; 0x021D82AC + mov r1, #0x2b + lsl r1, r1, #4 + ldr r0, [r0, r1] + bx lr + thumb_func_end MOD84_021D82AC + + thumb_func_start MOD84_021D82B4 +MOD84_021D82B4: ; 0x021D82B4 + ldr r0, [r0, #0x10] + bx lr + thumb_func_end MOD84_021D82B4 + + thumb_func_start MOD84_021D82B8 +MOD84_021D82B8: ; 0x021D82B8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _021D8428 ; =0x00001220 + mov r1, #3 + str r1, [r4, r0] + ldr r0, [r4, #0x18] + ldr r7, _021D8428 ; =0x00001220 + ldr r6, [r0, #8] + mov r5, #1 +_021D82CC: + ldr r0, _021D842C ; =0x00000186 + cmp r5, r0 + beq _021D8340 + add r0, r0, #3 + cmp r5, r0 + beq _021D8340 + ldr r0, _021D8430 ; =0x00000183 + cmp r5, r0 + beq _021D8340 + lsl r1, r5, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_02024594 + cmp r0, #0 + beq _021D8340 + lsl r0, r5, #0x10 + lsr r1, r0, #0x10 + ldr r0, _021D8428 ; =0x00001220 + ldr r0, [r4, r0] + lsl r0, r0, #3 + add r2, r4, r0 + mov r0, #0xae + lsl r0, r0, #2 + strh r1, [r2, r0] + add r0, r6, #0 + mov r2, #0 + bl FUN_02024674 + ldr r1, _021D8428 ; =0x00001220 + ldr r1, [r4, r1] + lsl r1, r1, #3 + add r2, r4, r1 + ldr r1, _021D8434 ; =0x000002BA + strb r0, [r2, r1] + bl FUN_0201B9EC + ldr r1, _021D8428 ; =0x00001220 + ldr r1, [r4, r1] + lsl r1, r1, #3 + add r2, r4, r1 + mov r1, #0xaf + lsl r1, r1, #2 + str r0, [r2, r1] + add r0, r6, #0 + add r1, r5, #0 + mov r2, #0 + bl FUN_02024DAC + ldr r1, _021D8428 ; =0x00001220 + ldr r1, [r4, r1] + lsl r1, r1, #3 + add r2, r4, r1 + ldr r1, _021D8438 ; =0x000002BB + strb r0, [r2, r1] + ldr r0, [r4, r7] + add r0, r0, #1 + str r0, [r4, r7] +_021D8340: + ldr r0, _021D843C ; =0x000001ED + add r5, r5, #1 + cmp r5, r0 + blt _021D82CC + ldr r0, _021D8428 ; =0x00001220 + mov r7, #3 + ldr r0, [r4, r0] + sub r0, r0, #1 + cmp r0, #3 + ble _021D83B0 + add r5, r4, #0 + add r5, #0x18 +_021D8358: + bl FUN_0201B9EC + ldr r1, _021D8428 ; =0x00001220 + ldr r1, [r4, r1] + sub r1, r1, r7 + bl _s32_div_f + add r0, r1, #3 + mov r2, #0xaf + lsl r2, r2, #2 + ldr r2, [r5, r2] + lsl r0, r0, #3 + mov r1, #0xae + lsl r1, r1, #2 + ldr r1, [r5, r1] + str r2, [sp] + str r2, [sp, #8] + mov r2, #0xae + add r0, r4, r0 + lsl r2, r2, #2 + ldr r3, [r0, r2] + add r2, r2, #4 + ldr r2, [r0, r2] + str r1, [sp, #4] + mov ip, r2 + mov r2, #0xae + lsl r2, r2, #2 + str r3, [r5, r2] + mov r3, ip + add r2, r2, #4 + str r3, [r5, r2] + mov r2, #0xae + lsl r2, r2, #2 + str r1, [r0, r2] + ldr r1, [sp] + add r2, r2, #4 + str r1, [r0, r2] + ldr r0, _021D8428 ; =0x00001220 + add r7, r7, #1 + ldr r0, [r4, r0] + add r5, #8 + sub r0, r0, #1 + cmp r7, r0 + blt _021D8358 +_021D83B0: + bl FUN_0201B9EC + mov r1, #3 + bl _s32_div_f + add r5, r1, #0 + mov r7, #0 +_021D83BE: + cmp r5, #0 + beq _021D83CC + cmp r5, #1 + beq _021D83D6 + cmp r5, #2 + beq _021D83E0 + b _021D83E8 +_021D83CC: + mov r0, #0xae + ldr r1, _021D842C ; =0x00000186 + lsl r0, r0, #2 + strh r1, [r4, r0] + b _021D83E8 +_021D83D6: + mov r0, #0xae + ldr r1, _021D8440 ; =0x00000189 + lsl r0, r0, #2 + strh r1, [r4, r0] + b _021D83E8 +_021D83E0: + mov r0, #0xae + ldr r1, _021D8430 ; =0x00000183 + lsl r0, r0, #2 + strh r1, [r4, r0] +_021D83E8: + mov r1, #0xae + lsl r1, r1, #2 + ldrh r1, [r4, r1] + add r0, r6, #0 + mov r2, #0 + bl FUN_02024674 + ldr r1, _021D8434 ; =0x000002BA + strb r0, [r4, r1] + bl FUN_0201B9EC + mov r1, #0xaf + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, r1, #4 + ldrh r1, [r4, r1] + add r0, r6, #0 + mov r2, #0 + bl FUN_02024DAC + ldr r1, _021D8438 ; =0x000002BB + add r5, r5, #1 + strb r0, [r4, r1] + cmp r5, #3 + blt _021D841C + mov r5, #0 +_021D841C: + add r7, r7, #1 + add r4, #8 + cmp r7, #3 + blt _021D83BE + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8428: .word 0x00001220 +_021D842C: .word 0x00000186 +_021D8430: .word 0x00000183 +_021D8434: .word 0x000002BA +_021D8438: .word 0x000002BB +_021D843C: .word 0x000001ED +_021D8440: .word 0x00000189 + thumb_func_end MOD84_021D82B8 + + thumb_func_start MOD84_021D8444 +MOD84_021D8444: ; 0x021D8444 + ldr r1, _021D844C ; =0x00001220 + ldr r0, [r0, r1] + bx lr + nop +_021D844C: .word 0x00001220 + thumb_func_end MOD84_021D8444 + + thumb_func_start MOD84_021D8450 +MOD84_021D8450: ; 0x021D8450 + mov r1, #0xae + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + thumb_func_end MOD84_021D8450 + + thumb_func_start MOD84_021D8458 +MOD84_021D8458: ; 0x021D8458 + add r1, r0, #0 + ldr r0, _021D8464 ; =0x00001234 + ldr r3, _021D8468 ; =MOD84_021D847C + add r0, r1, r0 + bx r3 + nop +_021D8464: .word 0x00001234 +_021D8468: .word MOD84_021D847C + thumb_func_end MOD84_021D8458 + + thumb_func_start MOD84_021D846C +MOD84_021D846C: ; 0x021D846C + ldr r1, _021D8474 ; =0x00001234 + ldr r3, _021D8478 ; =MOD84_021D84A0 + add r0, r0, r1 + bx r3 + .align 2, 0 +_021D8474: .word 0x00001234 +_021D8478: .word MOD84_021D84A0 + thumb_func_end MOD84_021D846C + + thumb_func_start MOD84_021D847C +MOD84_021D847C: ; 0x021D847C + push {r3, lr} + mov r3, #0 + str r3, [r0, #4] + str r1, [r0] + mov r1, #1 + str r3, [r0, #8] + lsl r1, r1, #0xa + str r1, [r0, #0xc] + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D849C ; =0x04001050 + mov r1, #2 + mov r2, #0x3f + bl G2x_SetBlendAlpha_ + pop {r3, pc} + .align 2, 0 +_021D849C: .word 0x04001050 + thumb_func_end MOD84_021D847C + + thumb_func_start MOD84_021D84A0 +MOD84_021D84A0: ; 0x021D84A0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r1, [r4] + cmp r0, #0 + beq _021D84B2 + cmp r0, #1 + beq _021D84C2 + b _021D84EC +_021D84B2: + ldr r0, [r1, #0xc] + mov r1, #0 + bl MOD84_021D87B0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _021D84F0 +_021D84C2: + ldr r1, [r4, #8] + ldr r0, [r4, #0xc] + add r0, r1, r0 + asr r2, r0, #0xc + str r0, [r4, #8] + cmp r2, #0x10 + blt _021D84D2 + mov r2, #0x10 +_021D84D2: + mov r0, #0x10 + sub r0, r0, r2 + lsl r0, r0, #8 + add r1, r2, #0 + orr r1, r0 + ldr r0, _021D84F4 ; =0x04001052 + cmp r2, #0x10 + strh r1, [r0] + bne _021D84F0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _021D84F0 +_021D84EC: + mov r0, #1 + pop {r4, pc} +_021D84F0: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D84F4: .word 0x04001052 + thumb_func_end MOD84_021D84A0 + + thumb_func_start MOD84_021D84F8 +MOD84_021D84F8: ; 0x021D84F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + str r1, [sp, #0x14] + mov r0, #0x4b + mov r1, #0x38 + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _021D85AC + ldr r0, [sp, #0x14] + str r6, [r4, #0x20] + str r0, [r4] + add r0, #0xc0 + str r0, [r4, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x30] + str r5, [r4, #8] + str r0, [r4, #0x2c] + mov r0, #0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + mov r0, #1 + lsl r0, r0, #8 + mov r1, #0x4b + bl FUN_020219F4 + str r0, [r4, #0x30] + mov r0, #0x4b + mov r1, #1 + bl FUN_02018FF4 + str r0, [r4, #0x24] + mov r3, #0 + lsl r2, r5, #0x18 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r1, [r4, #0x24] + add r0, r6, #0 + lsr r2, r2, #0x18 + bl FUN_02019064 + ldr r0, [r4, #0x24] + mov r1, #0 + bl FUN_02019620 + ldr r0, [r4, #0x24] + bl FUN_02019270 + ldr r0, [r4, #0x24] + bl FUN_020191D0 + mov r0, #0x4b + mov r1, #1 + bl FUN_02018FF4 + str r0, [r4, #0x28] + mov r3, #0 + lsl r2, r5, #0x18 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r1, [r4, #0x28] + add r0, r6, #0 + lsr r2, r2, #0x18 + bl FUN_02019064 + ldr r0, _021D85B4 ; =MOD84_021D8784 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA98 + str r0, [r4, #0x34] +_021D85AC: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D85B4: .word MOD84_021D8784 + thumb_func_end MOD84_021D84F8 + + thumb_func_start MOD84_021D85B8 +MOD84_021D85B8: ; 0x021D85B8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _021D85C6 + bl FUN_0200CAB4 +_021D85C6: + ldr r0, [r4, #0x30] + bl FUN_02021A20 + ldr r0, [r4, #0x24] + bl FUN_02019178 + ldr r0, [r4, #0x28] + bl FUN_02019178 + ldr r0, [r4, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #0x28] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD84_021D85B8 + + thumb_func_start MOD84_021D85EC +MOD84_021D85EC: ; 0x021D85EC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r2, [r5, #0x1c] + str r1, [sp, #0x18] + cmp r2, #2 + bne _021D8600 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D8600: + ldr r1, [r5, #4] + ldr r0, [sp, #0x18] + add r6, r1, r0 + cmp r2, #0 + bne _021D86E0 + ldr r2, [r5, #0xc] + mov r0, #6 + add r1, r2, #0 + mul r1, r0 + ldr r0, _021D8774 ; =0x021DA766 + ldrh r0, [r0, r1] + cmp r6, r0 + blt _021D86E0 + ldr r2, _021D8778 ; =0x021DA764 + ldr r0, [r5, #0x2c] + ldrh r1, [r2, r1] + ldr r2, [r5, #0x30] + bl FUN_0200A8E0 + ldr r1, [r5, #0xc] + mov r0, #6 + add r2, r1, #0 + mul r2, r0 + ldr r0, _021D877C ; =0x021DA768 + ldrh r0, [r0, r2] + cmp r0, #0 + beq _021D864A + mov r0, #0 + ldr r1, [r5, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #1 + lsl r1, r1, #8 + sub r0, r1, r0 + lsr r7, r0, #1 + b _021D864C +_021D864A: + mov r7, #0x20 +_021D864C: + ldr r1, [r5, #0xc] + mov r0, #6 + add r2, r1, #0 + mul r2, r0 + ldr r0, _021D8774 ; =0x021DA766 + mov r1, #0 + ldrh r0, [r0, r2] + add r3, r7, #0 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8780 ; =0x00010200 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x24] + ldr r2, [r5, #0x30] + bl FUN_0201BDE0 + cmp r4, #0xf0 + ble _021D86D0 + ldr r0, [r5, #0x28] + mov r1, #0 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8780 ; =0x00010200 + add r3, r7, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x28] + ldr r2, [r5, #0x30] + bl FUN_0201BDE0 + ldr r1, [r5, #0x28] + sub r4, #0xf0 + ldrb r2, [r1, #7] + mov r0, #0x10 + sub r3, r0, r4 + add r4, r0, #0 + sub r0, r0, r3 + lsl r2, r2, #0x13 + lsr r2, r2, #0x10 + str r2, [sp] + ldrb r2, [r1, #8] + lsl r0, r0, #0x10 + lsl r3, r3, #0x10 + lsl r2, r2, #0x13 + lsr r2, r2, #0x10 + str r2, [sp, #4] + mov r2, #0 + str r2, [sp, #8] + str r2, [sp, #0xc] + add r4, #0xf0 + str r4, [sp, #0x10] + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + ldr r0, [r5, #0x24] + ldr r1, [r1, #0xc] + lsr r3, r3, #0x10 + bl FUN_02019658 +_021D86D0: + mov r1, #1 + str r1, [r5, #0x18] + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #0xd6 + blo _021D86E0 + str r1, [r5, #0x1c] +_021D86E0: + str r6, [r5, #4] + ldr r0, [r5, #0x10] + mov r1, #6 + add r2, r0, #0 + ldr r0, _021D8774 ; =0x021DA766 + mul r2, r1 + ldrh r3, [r0, r2] + ldr r2, [r5] + add r0, r3, #0 + add r0, #0x10 + cmp r2, r0 + ble _021D8766 + lsl r0, r3, #0x18 + lsr r3, r0, #0x18 + cmp r3, #0xf0 + bgt _021D8718 + add r1, #0xfa + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r1, #0 + lsl r3, r3, #0x10 + ldr r0, [r5, #0x24] + add r2, r1, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + b _021D8754 +_021D8718: + add r1, r3, #0 + sub r1, #0xf0 + mov r0, #0x10 + sub r4, r0, r1 + add r0, #0xf0 + str r0, [sp] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + mov r1, #0 + lsl r3, r3, #0x10 + ldr r0, [r5, #0x24] + add r2, r1, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0x10 + sub r0, r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5, #0x24] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 +_021D8754: + mov r0, #1 + str r0, [r5, #0x18] + ldr r0, [r5, #0x10] + add r0, r0, #1 + str r0, [r5, #0x10] + cmp r0, #0xd7 + blo _021D8766 + mov r0, #2 + str r0, [r5, #0x1c] +_021D8766: + ldr r1, [r5] + ldr r0, [sp, #0x18] + add r0, r1, r0 + str r0, [r5] + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8774: .word 0x021DA766 +_021D8778: .word 0x021DA764 +_021D877C: .word 0x021DA768 +_021D8780: .word 0x00010200 + thumb_func_end MOD84_021D85EC + + thumb_func_start MOD84_021D8784 +MOD84_021D8784: ; 0x021D8784 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021D8798 + ldr r0, [r4, #0x24] + bl FUN_02019548 + mov r0, #0 + str r0, [r4, #0x18] +_021D8798: + ldr r1, [r4, #8] + ldr r3, [r4] + lsl r1, r1, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r4, #0x20] + lsr r1, r1, #0x18 + mov r2, #3 + lsr r3, r3, #0x18 + bl FUN_020179E0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8784 + + thumb_func_start MOD84_021D87B0 +MOD84_021D87B0: ; 0x021D87B0 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #2 + str r0, [r5, #0x1c] + mov r0, #0 + str r0, [r5, #0x18] + cmp r1, #0 + beq _021D87CE + ldr r0, [r5, #0x24] + mov r1, #0xf + bl FUN_02019620 + ldr r4, _021D8814 ; =0x0001020F + b _021D87D0 +_021D87CE: + ldr r4, _021D8818 ; =0x00010200 +_021D87D0: + ldr r0, [r5, #0x2c] + ldr r2, [r5, #0x30] + mov r1, #0xd7 + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #1 + lsl r1, r1, #8 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [r5] + mov r0, #0x50 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r4, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r5, #0x24] + ldr r2, [r5, #0x30] + bl FUN_0201BE3C + ldr r0, [r5, #0x24] + bl FUN_02019548 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8814: .word 0x0001020F +_021D8818: .word 0x00010200 + thumb_func_end MOD84_021D87B0 + + thumb_func_start MOD84_021D881C +MOD84_021D881C: ; 0x021D881C + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #2 + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4] + str r0, [r4, #0x18] + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #0x20] + ldr r3, [r4, #8] + mov r0, #0x7f + mov r1, #0x2a + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #0x20] + ldr r3, [r4, #8] + mov r0, #0x7f + mov r1, #0x2b + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + mov r0, #0x4b + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #0x2c + add r3, r2, #0 + bl FUN_02006930 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D881C + + thumb_func_start MOD84_021D8874 +MOD84_021D8874: ; 0x021D8874 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x1c + bl FUN_02016998 + add r4, r0, #0 + beq _021D88A0 + str r5, [r4] + str r6, [r4, #4] + mov r0, #0 + str r0, [r4, #0x14] + str r0, [r4, #0x18] + add r0, r5, #0 + bl MOD84_021D82AC + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0xc] + sub r0, #0x36 + str r0, [r4, #0x10] +_021D88A0: + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD84_021D8874 + + thumb_func_start MOD84_021D88A4 +MOD84_021D88A4: ; 0x021D88A4 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D8958 + cmp r0, #0 + beq _021D88C4 + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_020200A0 + mov r0, #1 + pop {r4, pc} +_021D88C4: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD84_021D88A4 + + thumb_func_start MOD84_021D88C8 +MOD84_021D88C8: ; 0x021D88C8 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D8A74 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D88C8 + + thumb_func_start MOD84_021D88DC +MOD84_021D88DC: ; 0x021D88DC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x10] + mov r7, #1 + add r0, r1, r0 + str r0, [r5, #0xc] + asr r6, r0, #0xc + lsl r7, r7, #8 + ldr r0, [r5, #4] + mov r1, #2 + mov r2, #0 + add r3, r6, r7 + bl FUN_020179E0 + ldr r0, [r5, #4] + mov r1, #6 + mov r2, #0 + add r3, r6, r7 + bl FUN_020179E0 + ldr r0, [r4] + cmp r0, #0 + beq _021D8914 + cmp r0, #1 + beq _021D893A + b _021D8950 +_021D8914: + ldr r0, [r5, #0x14] + add r1, r0, #1 + ldr r0, _021D8954 ; =0x00000708 + str r1, [r5, #0x14] + cmp r1, r0 + blt _021D8950 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8950 +_021D893A: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8950 + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_020200A0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8950: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8954: .word 0x00000708 + thumb_func_end MOD84_021D88DC + + thumb_func_start MOD84_021D8958 +MOD84_021D8958: ; 0x021D8958 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _021D8A50 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8972: ; jump table + .short _021D897C - _021D8972 - 2 ; case 0 + .short _021D899C - _021D8972 - 2 ; case 1 + .short _021D89D8 - _021D8972 - 2 ; case 2 + .short _021D8A10 - _021D8972 - 2 ; case 3 + .short _021D8A30 - _021D8972 - 2 ; case 4 +_021D897C: + ldr r0, [r5, #4] + ldr r2, _021D8A6C ; =0x021DAC70 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _021D8A6C ; =0x021DAC70 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D899C: + mov r0, #0x80 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #6 + str r0, [sp, #4] + mov r0, #0x4b + mov r2, #0 + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x41 + add r3, r2, #0 + bl FUN_02006948 + mov r0, #0x80 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #6 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x41 + mov r2, #4 + mov r3, #0 + bl FUN_02006948 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D89D8: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #4 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + mov r1, #6 + ldr r2, [r5, #4] + mov r0, #0x7f + add r3, r1, #0 + bl FUN_020068C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D8A10: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #5 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D8A30: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #7 + mov r3, #6 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8A64 +_021D8A50: + ldr r0, _021D8A70 ; =0x04000050 + mov r1, #0 + mov r2, #0xc + mov r3, #0x10 + str r1, [sp] + bl G2x_SetBlendAlpha_ + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8A64: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D8A6C: .word 0x021DAC70 +_021D8A70: .word 0x04000050 + thumb_func_end MOD84_021D8958 + + thumb_func_start MOD84_021D8A74 +MOD84_021D8A74: ; 0x021D8A74 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8A74 + + thumb_func_start MOD84_021D8A8C +MOD84_021D8A8C: ; 0x021D8A8C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x4b + mov r1, #0x10 + bl FUN_02016998 + cmp r0, #0 + beq _021D8AA8 + str r5, [r0] + str r4, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] +_021D8AA8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD84_021D8A8C + + thumb_func_start MOD84_021D8AAC +MOD84_021D8AAC: ; 0x021D8AAC + push {r3, lr} + bl MOD84_021D8B70 + cmp r0, #0 + beq _021D8ABA + mov r0, #1 + pop {r3, pc} +_021D8ABA: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD84_021D8AAC + + thumb_func_start MOD84_021D8AC0 +MOD84_021D8AC0: ; 0x021D8AC0 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D8C3C + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8AC0 + + thumb_func_start MOD84_021D8AD4 +MOD84_021D8AD4: ; 0x021D8AD4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _021D8B66 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8AEC: ; jump table + .short _021D8AF4 - _021D8AEC - 2 ; case 0 + .short _021D8B16 - _021D8AEC - 2 ; case 1 + .short _021D8B28 - _021D8AEC - 2 ; case 2 + .short _021D8B4E - _021D8AEC - 2 ; case 3 +_021D8AF4: + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8B66 +_021D8B16: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8B66 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8B66 +_021D8B28: + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + ldr r0, _021D8B6C ; =0x000002DF + cmp r1, r0 + blt _021D8B66 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8B66 +_021D8B4E: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8B66 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021D8B66: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D8B6C: .word 0x000002DF + thumb_func_end MOD84_021D8AD4 + + thumb_func_start MOD84_021D8B70 +MOD84_021D8B70: ; 0x021D8B70 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021D8C2A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8B8A: ; jump table + .short _021D8B92 - _021D8B8A - 2 ; case 0 + .short _021D8BB2 - _021D8B8A - 2 ; case 1 + .short _021D8BEA - _021D8B8A - 2 ; case 2 + .short _021D8C0A - _021D8B8A - 2 ; case 3 +_021D8B92: + ldr r0, [r5, #4] + ldr r2, _021D8C38 ; =0x021DAC8C + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _021D8C38 ; =0x021DAC8C + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C30 +_021D8BB2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x24 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C30 +_021D8BEA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x25 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C30 +_021D8C0A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #6 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C30 +_021D8C2A: + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8C30: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D8C38: .word 0x021DAC8C + thumb_func_end MOD84_021D8B70 + + thumb_func_start MOD84_021D8C3C +MOD84_021D8C3C: ; 0x021D8C3C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8C3C + + thumb_func_start MOD84_021D8C54 +MOD84_021D8C54: ; 0x021D8C54 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0xe + add r5, r0, #0 + mov r0, #0x4b + lsl r1, r1, #8 + bl FUN_02016998 + add r4, r0, #0 + beq _021D8CC6 + str r5, [r4] + ldr r1, _021D8CCC ; =0x00000DF4 + str r6, [r4, #4] + mov r2, #0 + str r2, [r4, r1] + add r0, r1, #4 + str r2, [r4, r0] + add r1, #0xa + strh r2, [r4, r1] + bl FUN_0201B9EC + ldr r1, _021D8CD0 ; =0x00000DFC + strh r0, [r4, r1] + add r0, r5, #0 + bl MOD84_021D8444 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r5, #0 + bl MOD84_021D8450 + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, _021D8CD4 ; =MOD84_021D9278 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + mov r1, #0x5a + lsl r1, r1, #2 + str r0, [r4, r1] + mov r2, #0 + str r2, [r4, #0xc] + mov r0, #0x15 + str r2, [r4, #8] + add r3, r4, #0 + add r1, r2, #0 + lsl r0, r0, #4 +_021D8CB8: + str r1, [r3, #0x60] + str r1, [r3, #0x48] + str r1, [r3, r0] + add r2, r2, #1 + add r3, r3, #4 + cmp r2, #6 + blt _021D8CB8 +_021D8CC6: + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_021D8CCC: .word 0x00000DF4 +_021D8CD0: .word 0x00000DFC +_021D8CD4: .word MOD84_021D9278 + thumb_func_end MOD84_021D8C54 + + thumb_func_start MOD84_021D8CD8 +MOD84_021D8CD8: ; 0x021D8CD8 + push {r3, lr} + bl MOD84_021D8DF8 + cmp r0, #0 + beq _021D8CE6 + mov r0, #1 + pop {r3, pc} +_021D8CE6: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD84_021D8CD8 + + thumb_func_start MOD84_021D8CEC +MOD84_021D8CEC: ; 0x021D8CEC + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D8D08 ; =0x00000DFC + ldrh r0, [r4, r0] + bl FUN_0201B9E0 + add r0, r4, #0 + bl MOD84_021D9044 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D8D08: .word 0x00000DFC + thumb_func_end MOD84_021D8CEC + + thumb_func_start MOD84_021D8D0C +MOD84_021D8D0C: ; 0x021D8D0C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #3 + bhi _021D8DC8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8D24: ; jump table + .short _021D8D2C - _021D8D24 - 2 ; case 0 + .short _021D8D56 - _021D8D24 - 2 ; case 1 + .short _021D8D6E - _021D8D24 - 2 ; case 2 + .short _021D8D9E - _021D8D24 - 2 ; case 3 +_021D8D2C: + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E74C + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8DE6 +_021D8D56: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8DE6 + ldr r0, _021D8DEC ; =0x00000DF4 + mov r1, #0 + str r1, [r4, r0] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8DE6 +_021D8D6E: + ldr r1, _021D8DEC ; =0x00000DF4 + ldr r2, [r4, r1] + cmp r2, #0 + bne _021D8D98 + mov r2, #0x64 + str r2, [r4, r1] + add r1, #0xa + ldrh r1, [r4, r1] + bl MOD84_021D90C4 + ldr r0, _021D8DF0 ; =0x00000DFE + ldrh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, r0] + ldrh r0, [r4, r0] + cmp r0, #6 + blo _021D8DE6 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8DE6 +_021D8D98: + sub r0, r2, #1 + str r0, [r4, r1] + b _021D8DE6 +_021D8D9E: + ldr r0, _021D8DEC ; =0x00000DF4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + ldr r0, _021D8DF4 ; =0x000002FD + cmp r1, r0 + blt _021D8DE6 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8DE6 +_021D8DC8: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D8DE6 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8DE6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D8DEC: .word 0x00000DF4 +_021D8DF0: .word 0x00000DFE +_021D8DF4: .word 0x000002FD + thumb_func_end MOD84_021D8D0C + + thumb_func_start MOD84_021D8DF8 +MOD84_021D8DF8: ; 0x021D8DF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r4, r0, #0 + ldr r0, [r1] + str r1, [sp, #0x14] + cmp r0, #8 + bls _021D8E08 + b _021D9028 +_021D8E08: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8E14: ; jump table + .short _021D8E26 - _021D8E14 - 2 ; case 0 + .short _021D8E4A - _021D8E14 - 2 ; case 1 + .short _021D8E86 - _021D8E14 - 2 ; case 2 + .short _021D8EAA - _021D8E14 - 2 ; case 3 + .short _021D8ECE - _021D8E14 - 2 ; case 4 + .short _021D8EF2 - _021D8E14 - 2 ; case 5 + .short _021D8F40 - _021D8E14 - 2 ; case 6 + .short _021D8F86 - _021D8E14 - 2 ; case 7 + .short _021D8FD4 - _021D8E14 - 2 ; case 8 +_021D8E26: + ldr r0, [r4, #4] + ldr r2, _021D903C ; =0x021DACB8 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D903C ; =0x021DACB8 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8E4A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #6 + bl FUN_020068C8 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8E86: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #2 + bl FUN_0200687C + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8EAA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #6 + bl FUN_0200687C + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8ECE: + mov r0, #0x7f + mov r1, #0x35 + mov r2, #0x36 + bl MOD84_021D81DC + str r0, [r4, #8] + mov r0, #0x1b + mov r1, #0x29 + mov r2, #0x2a + bl MOD84_021D81DC + str r0, [r4, #0xc] + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8EF2: + add r0, r4, #0 + add r0, #0x10 + bl FUN_020B1A24 + add r0, r4, #0 + add r0, #0x34 + bl FUN_020B19DC + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #0x10] + mov r0, #0x7f + mov r1, #0x37 + add r3, r2, #0 + bl FUN_02006AE4 + mov r0, #0x4b + str r0, [sp] + add r4, #0x34 + mov r0, #0x7f + mov r1, #0x38 + mov r2, #1 + mov r3, #0 + str r4, [sp, #4] + bl FUN_02006A8C + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8F40: + mov r0, #1 + str r0, [sp] + add r2, r4, #0 + add r3, r4, #0 + ldr r1, [r4, #8] + add r0, sp, #0x48 + add r2, #0x10 + add r3, #0x34 + bl MOD84_021D8240 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_021D8F5A: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r7, [sp, #8] + ldr r0, [r4] + add r1, sp, #0x48 + add r2, r7, #0 + add r3, r7, #0 + bl MOD84_021D8260 + str r0, [r5, #0x48] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _021D8F5A + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8F86: + mov r0, #0x4b + str r0, [sp] + mov r0, #0x1b + mov r1, #0x28 + mov r2, #0 + add r3, sp, #0x20 + bl FUN_02006BB0 + str r0, [sp, #0x18] + cmp r0, #0 + beq _021D8FC8 + mov r5, #0x19 + lsl r5, r5, #8 + mov r6, #0 + add r4, #0x78 + lsr r7, r5, #1 +_021D8FA6: + add r0, r4, #0 + bl FUN_020B1A24 + ldr r0, [sp, #0x20] + add r1, r5, #0 + mov r2, #1 + add r3, r4, #0 + bl FUN_020B1768 + add r6, r6, #1 + add r4, #0x24 + add r5, r5, r7 + cmp r6, #6 + blt _021D8FA6 + ldr r0, [sp, #0x18] + bl FUN_02016A18 +_021D8FC8: + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D8FD4: + add r0, r4, #0 + add r6, r4, #0 + str r0, [sp, #0x1c] + add r0, #0x34 + mov r7, #0 + add r6, #0x78 + add r5, r4, #0 + str r0, [sp, #0x1c] +_021D8FE4: + mov r0, #1 + str r0, [sp] + ldr r1, [r4, #0xc] + ldr r3, [sp, #0x1c] + add r0, sp, #0x24 + add r2, r6, #0 + bl MOD84_021D8240 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r2, #0 + ldr r0, [r4] + add r1, sp, #0x24 + add r3, r2, #0 + bl MOD84_021D8260 + mov r1, #0xe + str r0, [r5, #0x60] + bl FUN_020202A8 + add r7, r7, #1 + add r6, #0x24 + add r5, r5, #4 + cmp r7, #6 + blt _021D8FE4 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021D9034 +_021D9028: + ldr r0, _021D9040 ; =0x00003485 + bl FUN_0201B9E0 + add sp, #0x6c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D9034: + mov r0, #0 + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + nop +_021D903C: .word 0x021DACB8 +_021D9040: .word 0x00003485 + thumb_func_end MOD84_021D8DF8 + + thumb_func_start MOD84_021D9044 +MOD84_021D9044: ; 0x021D9044 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl OS_DisableInterrupts + mov r7, #0x15 + str r0, [sp] + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_021D9056: + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021D9060 + bl FUN_0201FFC8 +_021D9060: + ldr r0, [r5, #0x60] + cmp r0, #0 + beq _021D906A + bl FUN_0201FFC8 +_021D906A: + ldr r0, [r5, r7] + cmp r0, #0 + beq _021D9082 + bl FUN_0201B6C8 + bl FUN_02016A18 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0200CAB4 +_021D9082: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D9056 + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _021D9098 + bl FUN_0200CAB4 +_021D9098: + ldr r0, [r6, #8] + cmp r0, #0 + beq _021D90A2 + bl MOD84_021D821C +_021D90A2: + ldr r0, [r6, #0xc] + cmp r0, #0 + beq _021D90AC + bl MOD84_021D821C +_021D90AC: + ldr r0, [r6, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r6, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [sp] + bl OS_RestoreInterrupts + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD84_021D9044 + + thumb_func_start MOD84_021D90C4 +MOD84_021D90C4: ; 0x021D90C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x38 + bl FUN_02016998 + add r4, r0, #0 + bne _021D90DA + b _021D91F6 +_021D90DA: + mov r0, #1 + str r0, [r4] + str r5, [r4, #4] + mov r0, #0x17 + str r6, [r4, #8] + lsl r0, r0, #4 + ldr r1, [r5, r0] + cmp r6, r1 + blt _021D90F4 + add r0, r6, #0 + bl _s32_div_f + b _021D90F6 +_021D90F4: + add r1, r6, #0 +_021D90F6: + lsl r6, r6, #2 + str r1, [r4, #0xc] + add r1, r5, r6 + ldr r0, [r1, #0x48] + str r0, [r4, #0x14] + ldr r0, [r1, #0x60] + str r0, [r4, #0x10] + mov r0, #0x5b + lsl r0, r0, #2 + ldr r3, [r5, r0] + ldr r0, [r4, #0xc] + ldr r7, [r4, #8] + lsl r1, r0, #3 + mov r0, #0 + add r2, r3, r1 + str r0, [sp] + ldrb r0, [r2, #3] + str r0, [sp, #4] + ldr r0, [r2, #4] + str r0, [sp, #8] + ldrh r1, [r3, r1] + ldrb r2, [r2, #2] + add r0, sp, #0xc + mov r3, #2 + bl FUN_02068C00 + mov r0, #0x5d + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp] + add r1, sp, #0xc + ldrh r0, [r1] + ldrh r1, [r1, #2] + ldr r3, _021D91FC ; =0x021DACA8 + mov r2, #0x4b + bl FUN_02012400 + mov r0, #0x5d + lsl r0, r0, #2 + mov r1, #0x32 + add r0, r5, r0 + lsl r1, r1, #6 + bl DC_FlushRange + mov r2, #0x32 + mov r0, #0x5d + lsl r2, r2, #6 + add r1, r7, #0 + lsl r0, r0, #2 + mul r1, r2 + lsl r3, r2, #1 + add r0, r5, r0 + add r1, r1, r3 + bl GX_LoadOBJ + mov r0, #0x4e + lsl r0, r0, #0xe + str r0, [r4, #0x18] + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x19 + sub r1, r1, r2 + mov r0, #0x19 + ror r1, r0 + add r0, r2, r1 + add r0, #0xf0 + lsl r0, r0, #0xc + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x20] + bl FUN_0201B9EC + ldr r1, _021D9200 ; =0x00000667 + bl _s32_div_f + ldr r0, _021D9204 ; =0x00000666 + add r0, r1, r0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x1c] + str r0, [r4, #0x30] + mov r0, #0 + str r0, [r4, #0x28] + 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 + add r0, r0, #2 + lsl r0, r0, #0xc + str r0, [r4, #0x2c] + bl FUN_0201B9EC + mov r1, #0xc + bl _s32_div_f + add r0, r1, #4 + str r0, [r4, #0x34] + add r1, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x18 + bl FUN_02020044 + add r1, r4, #0 + ldr r0, [r4, #0x10] + add r1, #0x18 + bl FUN_02020044 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _021D9208 ; =MOD84_021D920C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA60 + mov r1, #0x15 + add r2, r5, r6 + lsl r1, r1, #4 + str r0, [r2, r1] +_021D91F6: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021D91FC: .word 0x021DACA8 +_021D9200: .word 0x00000667 +_021D9204: .word 0x00000666 +_021D9208: .word MOD84_021D920C + thumb_func_end MOD84_021D90C4 + + thumb_func_start MOD84_021D920C +MOD84_021D920C: ; 0x021D920C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #1 + bne _021D9270 + ldr r2, [r4, #0x28] + ldr r1, [r4, #0x2c] + add r0, r4, #0 + add r2, r2, r1 + mov r1, #0x5a + lsl r1, r1, #0xe + add r0, #0x28 + str r2, [r4, #0x28] + cmp r2, r1 + blt _021D9230 + ldr r2, [r0] + sub r1, r2, r1 + str r1, [r0] +_021D9230: + ldr r2, [r4, #0x28] + ldr r0, [r4, #0x34] + asr r2, r2, #0xc + lsl r3, r2, #2 + ldr r2, _021D9274 ; =0x020EDF50 + ldr r1, [r4, #0x30] + ldr r2, [r2, r3] + mul r2, r0 + add r0, r1, r2 + str r0, [r4, #0x1c] + ldr r2, [r4, #0x18] + ldr r0, [r4, #0x24] + add r1, r4, #0 + sub r0, r2, r0 + str r0, [r4, #0x18] + ldr r0, [r4, #0x14] + add r1, #0x18 + bl FUN_02020044 + add r1, r4, #0 + ldr r0, [r4, #0x10] + add r1, #0x18 + bl FUN_02020044 + ldr r0, [r4, #0x18] + asr r1, r0, #0xc + mov r0, #0x37 + mvn r0, r0 + cmp r1, r0 + bge _021D9270 + mov r0, #0 + str r0, [r4] +_021D9270: + pop {r4, pc} + nop +_021D9274: .word 0x020EDF50 + thumb_func_end MOD84_021D920C + + thumb_func_start MOD84_021D9278 +MOD84_021D9278: ; 0x021D9278 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r1, [sp, #0xc] + mov r7, #0 + add r6, r1, #0 +_021D9282: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r6, r0] + cmp r0, #0 + beq _021D937A + bl FUN_0201B6C8 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _021D937A + mov r1, #0x17 + ldr r0, [r4, #0xc] + ldr r2, [sp, #0xc] + lsl r1, r1, #4 + ldr r1, [r2, r1] + add r0, r0, #6 + cmp r0, r1 + blt _021D92AE + bl _s32_div_f + add r0, r1, #0 +_021D92AE: + str r0, [r4, #0xc] + ldr r1, [r4, #8] + ldr r5, [r4, #4] + str r1, [sp, #0x10] + mov r1, #0x5b + lsl r1, r1, #2 + ldr r3, [r5, r1] + lsl r1, r0, #3 + mov r0, #0 + add r2, r3, r1 + str r0, [sp] + ldrb r0, [r2, #3] + str r0, [sp, #4] + ldr r0, [r2, #4] + str r0, [sp, #8] + ldrh r1, [r3, r1] + ldrb r2, [r2, #2] + add r0, sp, #0x14 + mov r3, #2 + bl FUN_02068C00 + mov r0, #0x5d + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp] + add r0, sp, #0x14 + add r1, sp, #0x14 + ldrh r0, [r0] + ldrh r1, [r1, #2] + ldr r3, _021D9388 ; =0x021DACA8 + mov r2, #0x4b + bl FUN_02012400 + mov r0, #0x5d + lsl r0, r0, #2 + mov r1, #0x32 + add r0, r5, r0 + lsl r1, r1, #6 + bl DC_FlushRange + ldr r2, [sp, #0x10] + mov r1, #0x32 + mov r0, #0x5d + add r3, r2, #0 + lsl r1, r1, #6 + lsl r0, r0, #2 + mul r3, r1 + lsl r1, r1, #1 + mov r2, #0x32 + add r0, r5, r0 + add r1, r3, r1 + lsl r2, r2, #6 + bl GX_LoadOBJ + mov r0, #0x4e + lsl r0, r0, #0xe + str r0, [r4, #0x18] + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x19 + sub r1, r1, r2 + mov r0, #0x19 + ror r1, r0 + add r0, r2, r1 + add r0, #0xf0 + lsl r0, r0, #0xc + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x20] + bl FUN_0201B9EC + ldr r1, _021D938C ; =0x00000667 + bl _s32_div_f + ldr r0, _021D9390 ; =0x00000666 + add r0, r1, r0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x1c] + str r0, [r4, #0x30] + mov r0, #0 + str r0, [r4, #0x28] + 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 + add r0, r0, #2 + lsl r0, r0, #0xc + str r0, [r4, #0x2c] + bl FUN_0201B9EC + mov r1, #0xc + bl _s32_div_f + add r0, r1, #4 + str r0, [r4, #0x34] + mov r0, #1 + str r0, [r4] +_021D937A: + add r7, r7, #1 + add r6, r6, #4 + cmp r7, #6 + bge _021D9384 + b _021D9282 +_021D9384: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9388: .word 0x021DACA8 +_021D938C: .word 0x00000667 +_021D9390: .word 0x00000666 + thumb_func_end MOD84_021D9278 + + thumb_func_start MOD84_021D9394 +MOD84_021D9394: ; 0x021D9394 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x4b + mov r1, #0x10 + bl FUN_02016998 + cmp r0, #0 + beq _021D93B0 + str r5, [r0] + str r4, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] +_021D93B0: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD84_021D9394 + + thumb_func_start MOD84_021D93B4 +MOD84_021D93B4: ; 0x021D93B4 + push {r3, lr} + bl MOD84_021D9478 + cmp r0, #0 + beq _021D93C2 + mov r0, #1 + pop {r3, pc} +_021D93C2: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD84_021D93B4 + + thumb_func_start MOD84_021D93C8 +MOD84_021D93C8: ; 0x021D93C8 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D9544 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D93C8 + + thumb_func_start MOD84_021D93DC +MOD84_021D93DC: ; 0x021D93DC + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _021D946E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D93F4: ; jump table + .short _021D93FC - _021D93F4 - 2 ; case 0 + .short _021D941E - _021D93F4 - 2 ; case 1 + .short _021D9430 - _021D93F4 - 2 ; case 2 + .short _021D9456 - _021D93F4 - 2 ; case 3 +_021D93FC: + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D946E +_021D941E: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D946E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D946E +_021D9430: + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + ldr r0, _021D9474 ; =0x0000032F + cmp r1, r0 + blt _021D946E + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D946E +_021D9456: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D946E + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021D946E: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D9474: .word 0x0000032F + thumb_func_end MOD84_021D93DC + + thumb_func_start MOD84_021D9478 +MOD84_021D9478: ; 0x021D9478 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021D9532 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9492: ; jump table + .short _021D949A - _021D9492 - 2 ; case 0 + .short _021D94BA - _021D9492 - 2 ; case 1 + .short _021D94F2 - _021D9492 - 2 ; case 2 + .short _021D9512 - _021D9492 - 2 ; case 3 +_021D949A: + ldr r0, [r5, #4] + ldr r2, _021D9540 ; =0x021DACD4 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _021D9540 ; =0x021DACD4 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9538 +_021D94BA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x26 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9538 +_021D94F2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x27 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9538 +_021D9512: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #6 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9538 +_021D9532: + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9538: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D9540: .word 0x021DACD4 + thumb_func_end MOD84_021D9478 + + thumb_func_start MOD84_021D9544 +MOD84_021D9544: ; 0x021D9544 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D9544 + + thumb_func_start MOD84_021D955C +MOD84_021D955C: ; 0x021D955C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x6c + bl FUN_02016998 + add r4, r0, #0 + beq _021D958E + str r5, [r4] + str r6, [r4, #4] + mov r0, #0 + str r0, [r4, #0x64] + str r0, [r4, #0x68] + add r0, r5, #0 + bl MOD84_021D82AC + str r0, [r4, #0x4c] + mov r0, #0 + str r0, [r4, #0x50] + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [r4, #0x48] + str r0, [r4, #0x54] + str r0, [r4, #0x5c] +_021D958E: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD84_021D955C + + thumb_func_start MOD84_021D9594 +MOD84_021D9594: ; 0x021D9594 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D9804 + cmp r0, #0 + beq _021D95B4 + ldr r0, [r4, #0x4c] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r4, #0x4c] + mov r1, #1 + bl FUN_020200A0 + mov r0, #1 + pop {r4, pc} +_021D95B4: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD84_021D9594 + + thumb_func_start MOD84_021D95B8 +MOD84_021D95B8: ; 0x021D95B8 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D9A04 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D95B8 + + thumb_func_start MOD84_021D95CC +MOD84_021D95CC: ; 0x021D95CC + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, [r4, #0x54] + add r5, r1, #0 + add r0, #0x80 + asr r6, r0, #0xc + str r0, [r4, #0x54] + ldr r0, [r4, #4] + mov r1, #2 + mov r2, #0 + add r3, r6, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0 + add r3, r6, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + mov r1, #3 + mov r2, #0 + add r3, r6, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + mov r1, #7 + mov r2, #0 + add r3, r6, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _021D9632 + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #0x10 + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r6, #0 + str r0, [r2] + ldr r0, [sp, #0x14] + sub r0, #0x40 + str r0, [sp, #0x14] + ldr r0, [r4, #0x50] + bl FUN_02020044 +_021D9632: + ldr r0, [r5] + cmp r0, #7 + bhi _021D96D2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9644: ; jump table + .short _021D9654 - _021D9644 - 2 ; case 0 + .short _021D966E - _021D9644 - 2 ; case 1 + .short _021D968E - _021D9644 - 2 ; case 2 + .short _021D96BE - _021D9644 - 2 ; case 3 + .short _021D9750 - _021D9644 - 2 ; case 4 + .short _021D9780 - _021D9644 - 2 ; case 5 + .short _021D97B0 - _021D9644 - 2 ; case 6 + .short _021D97D8 - _021D9644 - 2 ; case 7 +_021D9654: + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x10 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D966E: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D96D2 + mov r1, #0 + ldr r0, _021D97F8 ; =0x04000050 + str r1, [sp] + mov r2, #0xc + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D968E: + ldr r0, [r4, #0x64] + add r1, r0, #1 + ldr r0, _021D97FC ; =0x00000172 + str r1, [r4, #0x64] + cmp r1, r0 + blt _021D96D2 + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #8] + ldr r0, [r4] + mov r1, #1 + mov r2, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #0xc] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D96BE: + ldr r0, [r4, #8] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D96D2 + ldr r0, [r4, #0xc] + bl MOD84_021D81C4 + cmp r0, #0 + bne _021D96D4 +_021D96D2: + b _021D97F0 +_021D96D4: + ldr r0, [r4, #8] + bl MOD84_021D81D4 + ldr r0, [r4, #0xc] + bl MOD84_021D81D4 + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x10 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x12 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x11 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x13 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [r4, #0x64] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D9750: + ldr r0, [r4, #0x64] + add r1, r0, #1 + ldr r0, _021D9800 ; =0x0000010E + str r1, [r4, #0x64] + cmp r1, r0 + blt _021D97F0 + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #8] + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #0xc] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D9780: + ldr r0, [r4, #8] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D97F0 + ldr r0, [r4, #0xc] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D97F0 + ldr r0, [r4, #8] + bl MOD84_021D81D4 + ldr r0, [r4, #0xc] + bl MOD84_021D81D4 + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [r4, #0x64] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D97B0: + ldr r0, [r4, #0x64] + add r1, r0, #1 + mov r0, #0x4b + lsl r0, r0, #2 + str r1, [r4, #0x64] + cmp r1, r0 + blt _021D97F0 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D97F0 +_021D97D8: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D97F0 + ldr r0, [r4, #0x4c] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x1c + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D97F0: + mov r0, #0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_021D97F8: .word 0x04000050 +_021D97FC: .word 0x00000172 +_021D9800: .word 0x0000010E + thumb_func_end MOD84_021D95CC + + thumb_func_start MOD84_021D9804 +MOD84_021D9804: ; 0x021D9804 + push {r3, r4, r5, lr} + sub sp, #0x38 + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #8 + bls _021D9814 + b _021D99F0 +_021D9814: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9820: ; jump table + .short _021D9832 - _021D9820 - 2 ; case 0 + .short _021D986A - _021D9820 - 2 ; case 1 + .short _021D98A2 - _021D9820 - 2 ; case 2 + .short _021D98C2 - _021D9820 - 2 ; case 3 + .short _021D98E2 - _021D9820 - 2 ; case 4 + .short _021D991A - _021D9820 - 2 ; case 5 + .short _021D993A - _021D9820 - 2 ; case 6 + .short _021D995A - _021D9820 - 2 ; case 7 + .short _021D99E0 - _021D9820 - 2 ; case 8 +_021D9832: + ldr r0, [r4, #4] + ldr r2, _021D99FC ; =0x021DACF0 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D9A00 ; =0x021DAD0C + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D99FC ; =0x021DACF0 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D9A00 ; =0x021DAD0C + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D986A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #8 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xa + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D98A2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #9 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D98C2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xb + mov r3, #6 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D98E2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xc + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xe + mov r3, #7 + bl FUN_020068C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D991A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xd + mov r3, #3 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D993A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0xf + mov r3, #7 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D995A: + mov r0, #0x7f + mov r1, #0x39 + mov r2, #0x3a + bl MOD84_021D81DC + str r0, [r4, #0x48] + add r0, r4, #0 + add r0, #0x10 + bl FUN_020B1A24 + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #0x10] + mov r0, #0x7f + mov r1, #0x3b + add r3, r2, #0 + bl FUN_02006AE4 + add r0, r4, #0 + add r0, #0x34 + bl FUN_020B19DC + mov r0, #0x4b + str r0, [sp] + add r0, r4, #0 + add r0, #0x34 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #0x3c + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + mov r0, #2 + str r0, [sp] + add r2, r4, #0 + add r3, r4, #0 + ldr r1, [r4, #0x48] + add r0, sp, #0x14 + add r2, #0x10 + add r3, #0x34 + bl MOD84_021D8240 + mov r0, #5 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r3, #0x19 + ldr r0, [r4] + add r1, sp, #0x14 + mov r2, #0 + lsl r3, r3, #4 + bl MOD84_021D8260 + str r0, [r4, #0x50] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D99E0: + ldr r0, [r4] + mov r1, #0 + bl MOD84_021D7DF4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D99F6 +_021D99F0: + add sp, #0x38 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D99F6: + mov r0, #0 + add sp, #0x38 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D99FC: .word 0x021DACF0 +_021D9A00: .word 0x021DAD0C + thumb_func_end MOD84_021D9804 + + thumb_func_start MOD84_021D9A04 +MOD84_021D9A04: ; 0x021D9A04 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _021D9A12 + bl FUN_0201FFC8 +_021D9A12: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021D9A1C + bl MOD84_021D81D4 +_021D9A1C: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021D9A26 + bl MOD84_021D81D4 +_021D9A26: + ldr r0, [r4, #0x48] + cmp r0, #0 + beq _021D9A30 + bl MOD84_021D821C +_021D9A30: + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D9A04 + + thumb_func_start MOD84_021D9A54 +MOD84_021D9A54: ; 0x021D9A54 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x4b + mov r1, #0x10 + bl FUN_02016998 + cmp r0, #0 + beq _021D9A70 + str r5, [r0] + str r4, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] +_021D9A70: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD84_021D9A54 + + thumb_func_start MOD84_021D9A74 +MOD84_021D9A74: ; 0x021D9A74 + push {r3, lr} + bl MOD84_021D9B38 + cmp r0, #0 + beq _021D9A82 + mov r0, #1 + pop {r3, pc} +_021D9A82: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD84_021D9A74 + + thumb_func_start MOD84_021D9A88 +MOD84_021D9A88: ; 0x021D9A88 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D9C04 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D9A88 + + thumb_func_start MOD84_021D9A9C +MOD84_021D9A9C: ; 0x021D9A9C + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _021D9B2E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D9AB4: ; jump table + .short _021D9ABC - _021D9AB4 - 2 ; case 0 + .short _021D9ADE - _021D9AB4 - 2 ; case 1 + .short _021D9AF0 - _021D9AB4 - 2 ; case 2 + .short _021D9B16 - _021D9AB4 - 2 ; case 3 +_021D9ABC: + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9B2E +_021D9ADE: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D9B2E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9B2E +_021D9AF0: + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + ldr r0, _021D9B34 ; =0x00000352 + cmp r1, r0 + blt _021D9B2E + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9B2E +_021D9B16: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D9B2E + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021D9B2E: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D9B34: .word 0x00000352 + thumb_func_end MOD84_021D9A9C + + thumb_func_start MOD84_021D9B38 +MOD84_021D9B38: ; 0x021D9B38 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021D9BF2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9B52: ; jump table + .short _021D9B5A - _021D9B52 - 2 ; case 0 + .short _021D9B7A - _021D9B52 - 2 ; case 1 + .short _021D9BB2 - _021D9B52 - 2 ; case 2 + .short _021D9BD2 - _021D9B52 - 2 ; case 3 +_021D9B5A: + ldr r0, [r5, #4] + ldr r2, _021D9C00 ; =0x021DAD28 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _021D9C00 ; =0x021DAD28 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9BF8 +_021D9B7A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x28 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x22 + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9BF8 +_021D9BB2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x29 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9BF8 +_021D9BD2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0x7f + mov r1, #0x23 + mov r3, #6 + bl FUN_0200687C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D9BF8 +_021D9BF2: + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9BF8: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D9C00: .word 0x021DAD28 + thumb_func_end MOD84_021D9B38 + + thumb_func_start MOD84_021D9C04 +MOD84_021D9C04: ; 0x021D9C04 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D9C04 + + thumb_func_start MOD84_021D9C1C +MOD84_021D9C1C: ; 0x021D9C1C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0xf4 + bl FUN_02016998 + add r4, r0, #0 + beq _021D9C7C + str r5, [r4] + str r6, [r4, #4] + mov r1, #0 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r5, #0 + bl MOD84_021D82AC + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x54] + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [r4, #0x60] + add r2, r4, #0 + str r0, [r4, #0x64] + mov r0, #0x7f + mov r1, #0x41 + add r2, #0x5c + mov r3, #0x4b + bl FUN_02006C08 + str r0, [r4, #0x58] + cmp r0, #0 + beq _021D9C76 + ldr r0, [r4, #0x5c] + mov r1, #6 + ldr r0, [r0, #0xc] + lsl r1, r1, #6 + bl DC_FlushRange +_021D9C76: + add r0, r4, #0 + bl MOD84_021DA388 +_021D9C7C: + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD84_021D9C1C + + thumb_func_start MOD84_021D9C80 +MOD84_021D9C80: ; 0x021D9C80 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021DA078 + cmp r0, #0 + beq _021D9CA0 + ldr r0, [r4, #0x10] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020200A0 + mov r0, #1 + pop {r4, pc} +_021D9CA0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD84_021D9C80 + + thumb_func_start MOD84_021D9CA4 +MOD84_021D9CA4: ; 0x021D9CA4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + add r0, r5, #0 + bl MOD84_021DA390 + add r0, r5, #0 + bl MOD84_021DA31C + ldr r0, [r5, #0x58] + cmp r0, #0 + beq _021D9CC4 + bl FUN_02016A18 +_021D9CC4: + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD84_021D9CA4 + + thumb_func_start MOD84_021D9CD4 +MOD84_021D9CD4: ; 0x021D9CD4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #0xe + bls _021D9CE4 + b _021DA068 +_021D9CE4: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D9CF0: ; jump table + .short _021D9D0E - _021D9CF0 - 2 ; case 0 + .short _021D9D28 - _021D9CF0 - 2 ; case 1 + .short _021D9D48 - _021D9CF0 - 2 ; case 2 + .short _021D9D6A - _021D9CF0 - 2 ; case 3 + .short _021D9E00 - _021D9CF0 - 2 ; case 4 + .short _021D9E3C - _021D9CF0 - 2 ; case 5 + .short _021D9ECE - _021D9CF0 - 2 ; case 6 + .short _021D9F08 - _021D9CF0 - 2 ; case 7 + .short _021D9F3A - _021D9CF0 - 2 ; case 8 + .short _021D9F54 - _021D9CF0 - 2 ; case 9 + .short _021D9F78 - _021D9CF0 - 2 ; case 10 + .short _021D9F90 - _021D9CF0 - 2 ; case 11 + .short _021D9FBE - _021D9CF0 - 2 ; case 12 + .short _021DA02A - _021D9CF0 - 2 ; case 13 + .short _021DA058 - _021D9CF0 - 2 ; case 14 +_021D9D0E: + mov r1, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x20 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9D28: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021D9E16 + mov r1, #0 + ldr r0, _021DA070 ; =0x04000050 + str r1, [sp] + mov r2, #0xc + mov r3, #0xa + bl G2x_SetBlendAlpha_ + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9D48: + add r1, r4, #0 + add r1, #0xec + ldr r1, [r1] + add r2, r1, #1 + add r1, r4, #0 + add r1, #0xec + add r4, #0xec + str r2, [r1] + ldr r1, [r4] + cmp r1, #0xf0 + blt _021D9E16 + bl MOD84_021DA3A0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9D6A: + bl MOD84_021DA3C8 + cmp r0, #0 + beq _021D9E16 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021DA070 ; =0x04000050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldr r0, _021DA074 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1c + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x18 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1d + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x19 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9E00: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0x96 + bgt _021D9E18 +_021D9E16: + b _021DA068 +_021D9E18: + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #8] + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #0xc] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9E3C: + ldr r0, [r4, #8] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D9F44 + ldr r0, [r4, #0xc] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D9F44 + ldr r0, [r4, #8] + bl MOD84_021D81D4 + ldr r0, [r4, #0xc] + bl MOD84_021D81D4 + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x20 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1e + mov r3, #7 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x21 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1f + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9ECE: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0xc8 + blt _021D9F44 + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #8] + ldr r0, [r4] + mov r1, #1 + mov r2, #0 + mov r3, #0x5a + bl MOD84_021D801C + str r0, [r4, #0xc] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F08: + ldr r0, [r4, #8] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D9F44 + ldr r0, [r4, #0xc] + bl MOD84_021D81C4 + cmp r0, #0 + beq _021D9F44 + ldr r0, [r4, #8] + bl MOD84_021D81D4 + ldr r0, [r4, #0xc] + bl MOD84_021D81D4 + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F3A: + ldr r0, [r4] + bl MOD84_021D82B4 + cmp r0, #0 + bne _021D9F46 +_021D9F44: + b _021DA068 +_021D9F46: + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F54: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0x5a + blt _021DA068 + ldr r0, [r4] + bl MOD84_021D8458 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F78: + ldr r0, [r4] + bl MOD84_021D846C + cmp r0, #0 + beq _021DA068 + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9F90: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + add r4, #0xec + str r1, [r0] + ldr r0, [r4] + cmp r0, #0x96 + blt _021DA068 + mov r0, #3 + str r0, [sp] + mov r0, #0x20 + add r1, r0, #0 + sub r1, #0x30 + mov r2, #0 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021D9FBE: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #0 + beq _021DA068 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x2a + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x2b + mov r3, #3 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + mov r0, #0x4b + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #0x2c + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0 + add r4, #0xec + str r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021DA02A: + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xec + add r4, #0xec + str r1, [r0] + ldr r0, [r4] + cmp r0, #0x2d + blt _021DA068 + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + str r0, [sp] + mov r0, #0x10 + sub r2, #0x10 + mov r3, #0x1d + bl FUN_0200A208 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA068 +_021DA058: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021DA068 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA068: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021DA070: .word 0x04000050 +_021DA074: .word 0x04001050 + thumb_func_end MOD84_021D9CD4 + + thumb_func_start MOD84_021DA078 +MOD84_021DA078: ; 0x021DA078 + push {r3, r4, r5, lr} + sub sp, #0x38 + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #0xa + bls _021DA088 + b _021DA2FE +_021DA088: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA094: ; jump table + .short _021DA0AA - _021DA094 - 2 ; case 0 + .short _021DA0E2 - _021DA094 - 2 ; case 1 + .short _021DA11A - _021DA094 - 2 ; case 2 + .short _021DA13A - _021DA094 - 2 ; case 3 + .short _021DA15A - _021DA094 - 2 ; case 4 + .short _021DA192 - _021DA094 - 2 ; case 5 + .short _021DA1B2 - _021DA094 - 2 ; case 6 + .short _021DA1D2 - _021DA094 - 2 ; case 7 + .short _021DA1E2 - _021DA094 - 2 ; case 8 + .short _021DA238 - _021DA094 - 2 ; case 9 + .short _021DA2CE - _021DA094 - 2 ; case 10 +_021DA0AA: + ldr r0, [r4, #4] + ldr r2, _021DA30C ; =0x021DAD68 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021DA310 ; =0x021DAD4C + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021DA30C ; =0x021DAD68 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021DA310 ; =0x021DAD4C + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA0E2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x16 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1a + mov r3, #6 + bl FUN_020068C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA11A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x17 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA13A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x1b + mov r3, #6 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA15A: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x14 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x18 + mov r3, #7 + bl FUN_020068C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA192: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x15 + mov r3, #3 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA1B2: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x7f + mov r1, #0x19 + mov r3, #7 + bl FUN_0200687C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA1D2: + ldr r0, [r4] + mov r1, #2 + bl MOD84_021D7DF4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA1E2: + mov r0, #0x7f + mov r1, #0x3d + mov r2, #0x3e + bl MOD84_021D81DC + str r0, [r4, #0x54] + add r0, r4, #0 + add r0, #0x1c + bl FUN_020B1A24 + add r0, r4, #0 + add r0, #0x40 + bl FUN_020B19DC + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x1c + str r0, [sp, #0x10] + mov r0, #0x7f + mov r1, #0x3f + add r3, r2, #0 + bl FUN_02006AE4 + mov r0, #0x4b + str r0, [sp] + add r4, #0x40 + str r4, [sp, #4] + mov r0, #0x7f + mov r1, #0x40 + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA238: + mov r2, #0 + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x4b + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x1c + str r0, [sp, #0x10] + mov r0, #0x7f + mov r1, #0x3f + add r3, r2, #0 + bl FUN_02006AE4 + mov r0, #0x4b + str r0, [sp] + add r0, r4, #0 + add r0, #0x40 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #0x40 + mov r2, #2 + mov r3, #0 + bl FUN_02006A8C + mov r0, #2 + str r0, [sp] + add r2, r4, #0 + add r3, r4, #0 + ldr r1, [r4, #0x54] + add r0, sp, #0x14 + add r2, #0x1c + add r3, #0x40 + bl MOD84_021D8240 + mov r0, #3 + str r0, [sp] + mov r0, #1 + mov r2, #0 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [r4] + add r1, sp, #0x14 + add r3, r2, #0 + bl MOD84_021D8260 + str r0, [r4, #0x14] + mov r0, #4 + str r0, [sp] + mov r0, #1 + mov r2, #0 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [r4] + add r1, sp, #0x14 + add r3, r2, #0 + bl MOD84_021D8260 + str r0, [r4, #0x18] + mov r1, #3 + bl FUN_02020238 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA2CE: + ldr r0, [r4, #0x5c] + mov r1, #4 + ldr r0, [r0, #0xc] + mov r2, #3 + str r0, [sp] + ldr r0, _021DA314 ; =0x021DAD48 + mov r3, #0 + bl MOD84_021DA58C + str r0, [r4, #0x60] + ldr r0, [r4, #0x5c] + mov r1, #4 + ldr r0, [r0, #0xc] + mov r2, #5 + str r0, [sp] + ldr r0, _021DA318 ; =0x021DAD44 + mov r3, #1 + bl MOD84_021DA58C + str r0, [r4, #0x64] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DA304 +_021DA2FE: + add sp, #0x38 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA304: + mov r0, #0 + add sp, #0x38 + pop {r3, r4, r5, pc} + nop +_021DA30C: .word 0x021DAD68 +_021DA310: .word 0x021DAD4C +_021DA314: .word 0x021DAD48 +_021DA318: .word 0x021DAD44 + thumb_func_end MOD84_021DA078 + + thumb_func_start MOD84_021DA31C +MOD84_021DA31C: ; 0x021DA31C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x60] + cmp r0, #0 + beq _021DA32A + bl MOD84_021DA5D8 +_021DA32A: + ldr r0, [r4, #0x64] + cmp r0, #0 + beq _021DA334 + bl MOD84_021DA5D8 +_021DA334: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DA33E + bl FUN_0201FFC8 +_021DA33E: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021DA348 + bl FUN_0201FFC8 +_021DA348: + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _021DA352 + bl MOD84_021D821C +_021DA352: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DA35C + bl MOD84_021D81D4 +_021DA35C: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021DA366 + bl MOD84_021D81D4 +_021DA366: + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD84_021DA31C + + thumb_func_start MOD84_021DA388 +MOD84_021DA388: ; 0x021DA388 + mov r1, #0 + add r0, #0xe4 + str r1, [r0] + bx lr + thumb_func_end MOD84_021DA388 + + thumb_func_start MOD84_021DA390 +MOD84_021DA390: ; 0x021DA390 + push {r3, lr} + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + beq _021DA39E + bl FUN_0200CAB4 +_021DA39E: + pop {r3, pc} + thumb_func_end MOD84_021DA390 + + thumb_func_start MOD84_021DA3A0 +MOD84_021DA3A0: ; 0x021DA3A0 + push {r4, lr} + add r4, r0, #0 + mov r2, #0 + add r4, #0x68 + str r2, [r0, #0x68] + str r2, [r4, #4] + str r2, [r4, #8] + add r1, r4, #0 + str r2, [r4, #0x74] + add r1, #0x80 + str r0, [r1] + ldr r0, _021DA3C4 ; =MOD84_021DA3D8 + add r1, r4, #0 + bl FUN_0200CA60 + str r0, [r4, #0x7c] + pop {r4, pc} + nop +_021DA3C4: .word MOD84_021DA3D8 + thumb_func_end MOD84_021DA3A0 + + thumb_func_start MOD84_021DA3C8 +MOD84_021DA3C8: ; 0x021DA3C8 + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + bne _021DA3D4 + mov r0, #1 + bx lr +_021DA3D4: + mov r0, #0 + bx lr + thumb_func_end MOD84_021DA3C8 + + thumb_func_start MOD84_021DA3D8 +MOD84_021DA3D8: ; 0x021DA3D8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, #0x80 + ldr r5, [r1] + ldr r1, [r4] + cmp r1, #3 + bls _021DA3EA + b _021DA56C +_021DA3EA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA3F6: ; jump table + .short _021DA3FE - _021DA3F6 - 2 ; case 0 + .short _021DA4B8 - _021DA3F6 - 2 ; case 1 + .short _021DA50A - _021DA3F6 - 2 ; case 2 + .short _021DA544 - _021DA3F6 - 2 ; case 3 +_021DA3FE: + ldr r2, [r4, #4] + mov r0, #0x18 + add r1, r2, #0 + ldr r2, _021DA570 ; =0x021DAD84 + mul r1, r0 + ldr r2, [r2, r1] + ldr r3, _021DA574 ; =0x021DAD88 + lsl r2, r2, #0xc + ldr r1, [r3, r1] + str r2, [r4, #0x14] + lsl r6, r1, #0xc + str r6, [r4, #0x18] + mov r1, #0 + str r1, [r4, #0x1c] + ldr r3, [r4, #4] + add r1, r3, #0 + ldr r3, _021DA578 ; =0x021DAD94 + mul r1, r0 + ldr r1, [r3, r1] + str r1, [r4, #0xc] + ldr r3, [r4, #4] + add r1, r3, #0 + ldr r3, _021DA57C ; =0x021DAD98 + mul r1, r0 + ldr r1, [r3, r1] + str r1, [r4, #0x10] + ldr r1, [r4, #4] + add r3, r1, #0 + mul r3, r0 + ldr r0, _021DA580 ; =0x021DAD8C + ldr r1, [r4, #0xc] + ldr r0, [r0, r3] + lsl r0, r0, #0xc + sub r0, r0, r2 + bl _s32_div_f + str r0, [r4, #0x20] + ldr r1, [r4, #4] + mov r0, #0x18 + add r2, r1, #0 + mul r2, r0 + ldr r0, _021DA584 ; =0x021DAD90 + ldr r1, [r4, #0xc] + ldr r0, [r0, r2] + lsl r0, r0, #0xc + sub r0, r0, r6 + bl _s32_div_f + str r0, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + add r1, r4, #0 + ldr r0, [r5, #0x14] + add r1, #0x14 + bl FUN_02020044 + ldr r0, [r5, #0x14] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r5, #0x14] + mov r1, #1 + bl FUN_02020130 + add r0, r4, #0 + add r0, #0x20 + add r1, sp, #0 + bl VEC_Normalize + add r2, r4, #0 + add r3, r4, #0 + ldr r0, _021DA588 ; =0xFFFD8000 + add r1, sp, #0 + add r2, #0x14 + add r3, #0x2c + bl VEC_MultAdd + add r1, r4, #0 + ldr r0, [r5, #0x18] + add r1, #0x2c + bl FUN_02020044 + ldr r0, [r5, #0x18] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0 + str r0, [r4, #0x74] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021DA4B8: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021DA4F8 + add r0, r4, #0 + add r0, #0x14 + add r1, r4, #0 + add r1, #0x20 + add r2, r0, #0 + bl VEC_Add + add r0, r4, #0 + add r0, #0x2c + add r1, r4, #0 + add r1, #0x20 + add r2, r0, #0 + bl VEC_Add + add r1, r4, #0 + ldr r0, [r5, #0x14] + add r1, #0x14 + bl FUN_02020044 + add r1, r4, #0 + ldr r0, [r5, #0x18] + add r1, #0x2c + bl FUN_02020044 + ldr r0, [r4, #0xc] + add sp, #0xc + sub r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_021DA4F8: + mov r0, #0x14 + str r0, [r4, #0xc] + ldr r0, [r5, #0x14] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021DA50A: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021DA532 + add r0, r4, #0 + add r0, #0x2c + add r1, r4, #0 + add r1, #0x20 + add r2, r0, #0 + bl VEC_Add + add r1, r4, #0 + ldr r0, [r5, #0x18] + add r1, #0x2c + bl FUN_02020044 + ldr r0, [r4, #0xc] + add sp, #0xc + sub r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_021DA532: + ldr r0, [r5, #0x18] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021DA544: + ldr r1, [r4, #0x10] + cmp r1, #0 + beq _021DA552 + sub r0, r1, #1 + add sp, #0xc + str r0, [r4, #0x10] + pop {r3, r4, r5, r6, pc} +_021DA552: + ldr r1, [r4, #4] + add r1, r1, #1 + str r1, [r4, #4] + cmp r1, #4 + bhs _021DA564 + mov r0, #0 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021DA564: + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x7c] +_021DA56C: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DA570: .word 0x021DAD84 +_021DA574: .word 0x021DAD88 +_021DA578: .word 0x021DAD94 +_021DA57C: .word 0x021DAD98 +_021DA580: .word 0x021DAD8C +_021DA584: .word 0x021DAD90 +_021DA588: .word 0xFFFD8000 + thumb_func_end MOD84_021DA3D8 + + thumb_func_start MOD84_021DA58C +MOD84_021DA58C: ; 0x021DA58C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x4b + mov r1, #0x1c + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021DA5CE + mov r0, #0 + str r0, [r4] + str r0, [r4, #8] + ldr r0, [sp, #0x18] + add r1, r4, #0 + str r0, [r4, #0x18] + str r5, [r4, #0x14] + str r6, [r4, #0xc] + ldr r0, [sp] + str r7, [r4, #4] + str r0, [r4, #0x10] + ldr r0, _021DA5D4 ; =MOD84_021DA5F0 + mov r2, #2 + bl FUN_0200CA98 + add r5, r0, #0 + bne _021DA5CA + add r0, r4, #0 + bl FUN_02016A18 +_021DA5CA: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DA5CE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DA5D4: .word MOD84_021DA5F0 + thumb_func_end MOD84_021DA58C + + thumb_func_start MOD84_021DA5D8 +MOD84_021DA5D8: ; 0x021DA5D8 + push {r4, lr} + add r4, r0, #0 + beq _021DA5EC + bl FUN_0201B6C8 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_021DA5EC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021DA5D8 + + thumb_func_start MOD84_021DA5F0 +MOD84_021DA5F0: ; 0x021DA5F0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + add r1, r0, #1 + str r1, [r4] + ldr r0, [r4, #4] + cmp r1, r0 + ble _021DA644 + ldr r1, [r4, #0x14] + ldr r0, [r4, #8] + ldrb r0, [r1, r0] + ldr r1, [r4, #0x18] + sub r0, r0, #4 + lsl r2, r0, #4 + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _021DA622 + lsl r0, r2, #1 + add r0, r1, r0 + mov r1, #5 + lsl r1, r1, #6 + mov r2, #0x20 + bl GX_LoadBGPltt + b _021DA630 +_021DA622: + lsl r0, r2, #1 + add r0, r1, r0 + mov r1, #6 + lsl r1, r1, #6 + mov r2, #0x20 + bl GXS_LoadBGPltt +_021DA630: + ldr r0, [r4, #8] + add r1, r0, #1 + str r1, [r4, #8] + ldr r0, [r4, #0xc] + cmp r1, r0 + blt _021DA640 + mov r0, #0 + str r0, [r4, #8] +_021DA640: + mov r0, #0 + str r0, [r4] +_021DA644: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021DA5F0 + + .section .rodata + ; 0x021DA648 + .incbin "baserom.nds", 0x302B68, 0x79C |