summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf25
-rw-r--r--arm9/global.inc2
-rw-r--r--arm9/modules/84/asm/module_84.s6231
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