summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-12 19:10:16 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-12 19:10:16 -0400
commitdafa20650043e1223bf14e9596f8181f8f7cb5cf (patch)
tree8521d1abe9b8b652deca54afec3148dd30ea3fb9
parent61a7e3213a21aba6e946a0b6d4bd907bbfb21dde (diff)
Disassemble module 65
-rw-r--r--arm9/arm9.lcf32
-rw-r--r--arm9/global.inc14
-rw-r--r--arm9/modules/65/asm/module_65.s5500
3 files changed, 5540 insertions, 6 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 940f9618..ec499afe 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -260,10 +260,10 @@ SECTIONS {
{
/* ALIGNALL(4); . = ALIGN(32); */
SDK_STATIC_BSS_START = .;
- /* .bss */
+ /* .sbss */
gBacklightTop = 0x02106FA0;
gBacklightTop_2 = 0x02106FA0;
- /* .sbss */
+ /* .bss */
gLoadedOverlays = 0x021C45B0;
gUnknown21C48B8 = 0x021C48B8;
gUnk021C4918 = 0x021C4918;
@@ -2579,12 +2579,23 @@ SECTIONS {
SDK_OVERLAY.MODULE_64.BSS_SIZE = SDK_OVERLAY.MODULE_64.BSS_END - SDK_OVERLAY.MODULE_64.BSS_START;
} >> MODULE_64
- .MODULE_65: {
+ .MODULE_65 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY_MODULE_65_ID = 65;
SDK_OVERLAY.MODULE_65.ID = 65;
SDK_OVERLAY.MODULE_65.START = .;
- FILE_2B9400.o (.text) /* 0x2B5400 */
+ module_65.o (.text)
+ module_65.o (.rodata)
+ module_65.o (.init)
+ SDK_OVERLAY.MODULE_65.SINIT_START = .;
+ module_65.o (.ctor)
+ module_65.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_65.SINIT_END = .;
+ . = ALIGN(32);
+ module_65.o (.sdata)
+ module_65.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_65.END = .;
SDK_OVERLAY.MODULE_65.SIZE = SDK_OVERLAY.MODULE_65.END - SDK_OVERLAY.MODULE_65.START;
@@ -2594,7 +2605,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_65.BSS_START = .;
- FILE_2B9400.o (.bss)
+ module_65.o (.bss)
+ module_65.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_65.BSS_END = .;
SDK_OVERLAY.MODULE_65.BSS_SIZE = SDK_OVERLAY.MODULE_65.BSS_END - SDK_OVERLAY.MODULE_65.BSS_START;
@@ -3751,7 +3763,15 @@ SECTIONS {
WRITEW 64;
WRITEW 0;
- OVERLAY_TABLE(MODULE_65, 65)
+ WRITEW 65;
+ WRITEW ADDR(.MODULE_65);
+ WRITEW SDK_OVERLAY.MODULE_65.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_65.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_65.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_65.SINIT_END;
+ WRITEW 65;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_66, 66)
OVERLAY_TABLE(MODULE_67, 67)
OVERLAY_TABLE(MODULE_68, 68)
diff --git a/arm9/global.inc b/arm9/global.inc
index 5d4f69d7..64f6574f 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2639,6 +2639,20 @@
.extern FUN_020C1FF0
.extern FUN_02013EA8
.extern FUN_02013EC4
+.extern FUN_0200A06C
+.extern FUN_0200BC14
+.extern FUN_02014518
+.extern FUN_02014564
+.extern FUN_02014588
+.extern FUN_02020198
+.extern FUN_02079B60
+.extern FUN_020881D0
+.extern FUN_02088320
+.extern FUN_02088360
+.extern FUN_02088484
+.extern FUN_02088490
+.extern FUN_02088660
+.extern FUN_02088694
.extern FUN_02013ED8
.extern FUN_02013EE0
.extern FUN_0201EC58
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
new file mode 100644
index 00000000..a254fc52
--- /dev/null
+++ b/arm9/modules/65/asm/module_65.s
@@ -0,0 +1,5500 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD65_021D74E0
+MOD65_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_0200628C
+ mov r2, #2
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x2d
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r1, #2
+ add r0, r4, #0
+ lsl r1, r1, #8
+ mov r2, #0x2d
+ bl FUN_02006268
+ mov r2, #2
+ mov r1, #0
+ lsl r2, r2, #8
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x2d
+ str r0, [r4]
+ str r5, [r4, #0x20]
+ ldrb r0, [r5, #3]
+ strb r0, [r4, #0x1b]
+ ldr r0, _021D7520 ; =0x0000FFFF
+ strh r0, [r4, #0x14]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7520: .word 0x0000FFFF
+ thumb_func_end MOD65_021D74E0
+
+ thumb_func_start MOD65_021D7524
+MOD65_021D7524: ; 0x021D7524
+ push {r3, lr}
+ bl FUN_02006278
+ bl MOD65_021D757C
+ cmp r0, #0
+ beq _021D7536
+ mov r0, #1
+ pop {r3, pc}
+_021D7536:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D7524
+
+ thumb_func_start MOD65_021D753C
+MOD65_021D753C: ; 0x021D753C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldrb r1, [r4, #0x1a]
+ ldr r0, [r4, #0x20]
+ strb r1, [r0, #1]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x20]
+ strb r1, [r0, #2]
+ ldrb r1, [r4, #0x1b]
+ ldr r0, [r4, #0x20]
+ strb r1, [r0, #3]
+ add r0, r4, #0
+ add r0, #0x80
+ ldrh r1, [r0]
+ ldr r0, [r4, #0x20]
+ strh r1, [r0, #4]
+ add r0, r4, #0
+ add r0, #0x82
+ ldrh r1, [r0]
+ ldr r0, [r4, #0x20]
+ strh r1, [r0, #6]
+ add r0, r5, #0
+ bl FUN_0200627C
+ ldr r0, [r4]
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD65_021D753C
+
+ thumb_func_start MOD65_021D757C
+MOD65_021D757C: ; 0x021D757C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #6
+ bls _021D758A
+ b _021D76BE
+_021D758A:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7596: ; jump table
+ .short _021D75A4 - _021D7596 - 2 ; case 0
+ .short _021D75F4 - _021D7596 - 2 ; case 1
+ .short _021D761C - _021D7596 - 2 ; case 2
+ .short _021D762E - _021D7596 - 2 ; case 3
+ .short _021D7664 - _021D7596 - 2 ; case 4
+ .short _021D7676 - _021D7596 - 2 ; case 5
+ .short _021D7684 - _021D7596 - 2 ; case 6
+_021D75A4:
+ 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, _021D76D0 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D76D4 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ b _021D76C4
+_021D75F4:
+ bl MOD65_021D798C
+ cmp r0, #0
+ bne _021D7602
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7602:
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r2, [r4]
+ add r3, r0, #0
+ str r2, [sp, #8]
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ b _021D76C4
+_021D761C:
+ bl MOD65_021D8954
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D76C4
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D762E:
+ bl MOD65_021D8954
+ ldrh r1, [r4, #0x18]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _021D76D8 ; =0x021DA07C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ bne _021D7648
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7648:
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r1, [r4]
+ add r2, r0, #0
+ str r1, [sp, #8]
+ add r1, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ b _021D76C4
+_021D7664:
+ bl MOD65_021D8954
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D76C4
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7676:
+ bl MOD65_021D7A00
+ cmp r0, #0
+ bne _021D76C4
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7684:
+ bl FUN_0201CD04
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D76D0 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D76D4 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ b _021D76C4
+_021D76BE:
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_021D76C4:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D76D0: .word 0xFFFFE0FF
+_021D76D4: .word 0x04001000
+_021D76D8: .word 0x021DA07C
+ thumb_func_end MOD65_021D757C
+
+ thumb_func_start MOD65_021D76DC
+MOD65_021D76DC: ; 0x021D76DC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D76EE
+ bl FUN_0200BC30
+_021D76EE:
+ bl FUN_0201C30C
+ ldr r0, [r4, #0x24]
+ bl FUN_0201AB60
+ ldr r3, _021D7708 ; =0x027E0000
+ ldr r1, _021D770C ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ nop
+_021D7708: .word 0x027E0000
+_021D770C: .word 0x00003FF8
+ thumb_func_end MOD65_021D76DC
+
+ thumb_func_start MOD65_021D7710
+MOD65_021D7710: ; 0x021D7710
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D7748 ; =0x021DA094
+ bl FUN_02020988
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021D7744
+ ldr r0, _021D7748 ; =0x021DA094
+ bl FUN_02020968
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021D7740
+ ldrh r0, [r4, #0x14]
+ cmp r0, #1
+ bne _021D7740
+ ldrb r1, [r4, #0x1b]
+ add r0, r4, #0
+ mov r2, #2
+ bl MOD65_021D8280
+_021D7740:
+ mov r0, #0
+ mvn r0, r0
+_021D7744:
+ pop {r4, pc}
+ nop
+_021D7748: .word 0x021DA094
+ thumb_func_end MOD65_021D7710
+
+ thumb_func_start MOD65_021D774C
+MOD65_021D774C: ; 0x021D774C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r1, r5, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ mov r4, #0
+ mvn r4, r4
+ cmp r1, #0
+ bne _021D7762
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7762:
+ bl MOD65_021D7710
+ add r1, r0, #0
+ ldr r0, _021D77F8 ; =0x021C48B8
+ ldr r0, [r0, #0x44]
+ cmp r0, #0
+ beq _021D7784
+ ldrh r0, [r5, #0x14]
+ cmp r0, #0
+ bne _021D7796
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl FUN_02001204
+ add r4, r0, #0
+ b _021D7796
+_021D7784:
+ cmp r1, #0
+ blt _021D7792
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD65_021D83A0
+_021D7792:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7796:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _021D77A2
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D77A2:
+ ldr r0, _021D77F8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #2
+ tst r0, r1
+ beq _021D77BE
+ ldr r0, _021D77FC ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xff
+ strb r0, [r5, #0x1a]
+ mov r0, #0
+ str r0, [r5, #0x10]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D77BE:
+ mov r0, #1
+ tst r0, r1
+ beq _021D77F2
+ ldr r0, _021D77FC ; =0x000005DC
+ bl FUN_020054C8
+ cmp r4, #0xff
+ beq _021D77DC
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D77DC
+ add r0, r0, #1
+ cmp r4, r0
+ bne _021D77E8
+_021D77DC:
+ mov r0, #0xff
+ strb r0, [r5, #0x1a]
+ mov r0, #0
+ str r0, [r5, #0x10]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D77E8:
+ strb r4, [r5, #0x1a]
+ mov r0, #1
+ strh r0, [r5, #0x18]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D77F2:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D77F8: .word 0x021C48B8
+_021D77FC: .word 0x000005DC
+ thumb_func_end MOD65_021D774C
+
+ thumb_func_start MOD65_021D7800
+MOD65_021D7800: ; 0x021D7800
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #1
+ bl MOD65_021D8970
+ add r0, r4, #0
+ bl MOD65_021D8634
+ mov r0, #2
+ strh r0, [r4, #0x18]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD65_021D7800
+
+ thumb_func_start MOD65_021D7818
+MOD65_021D7818: ; 0x021D7818
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_02001204
+ add r4, r0, #0
+ ldr r0, _021D78A4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #2
+ tst r0, r1
+ beq _021D784A
+ ldr r0, _021D78A8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD65_021D86BC
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD65_021D8970
+ mov r0, #0
+ strh r0, [r5, #0x18]
+ pop {r3, r4, r5, pc}
+_021D784A:
+ mov r0, #1
+ tst r0, r1
+ beq _021D789E
+ ldr r0, _021D78A8 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bhi _021D786E
+ bhs _021D788C
+ cmp r4, #1
+ bhi _021D788C
+ cmp r4, #0
+ beq _021D7874
+ cmp r4, #1
+ beq _021D787A
+ b _021D788C
+_021D786E:
+ add r0, r0, #1
+ cmp r4, r0
+ b _021D788C
+_021D7874:
+ mov r0, #1
+ str r0, [r5, #0x10]
+ pop {r3, r4, r5, pc}
+_021D787A:
+ add r0, r5, #0
+ bl MOD65_021D86BC
+ add r0, r5, #0
+ bl MOD65_021D8718
+ mov r0, #3
+ strh r0, [r5, #0x18]
+ b _021D789E
+_021D788C:
+ add r0, r5, #0
+ bl MOD65_021D86BC
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD65_021D8970
+ mov r0, #0
+ strh r0, [r5, #0x18]
+_021D789E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D78A4: .word 0x021C48B8
+_021D78A8: .word 0x000005DC
+ thumb_func_end MOD65_021D7818
+
+ thumb_func_start MOD65_021D78AC
+MOD65_021D78AC: ; 0x021D78AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #0x1f]
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _021D78BE
+ mov r0, #0
+ pop {r4, pc}
+_021D78BE:
+ add r0, r4, #0
+ bl MOD65_021D87B0
+ mov r0, #4
+ strh r0, [r4, #0x18]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD65_021D78AC
+
+ thumb_func_start MOD65_021D78CC
+MOD65_021D78CC: ; 0x021D78CC
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ ldr r1, [r4]
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D78E8
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D78FC
+ b _021D7916
+_021D78E8:
+ ldr r0, _021D791C ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD65_021D8764
+ mov r0, #5
+ strh r0, [r4, #0x18]
+ mov r0, #0
+ pop {r4, pc}
+_021D78FC:
+ ldr r0, _021D791C ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x42
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #1
+ strh r0, [r4, #0x18]
+ mov r0, #0
+ pop {r4, pc}
+_021D7916:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021D791C: .word 0x000005DC
+ thumb_func_end MOD65_021D78CC
+
+ thumb_func_start MOD65_021D7920
+MOD65_021D7920: ; 0x021D7920
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #0x1f]
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _021D7932
+ mov r0, #0
+ pop {r4, pc}
+_021D7932:
+ ldr r0, _021D7988 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _021D7940
+ mov r0, #0
+ pop {r4, pc}
+_021D7940:
+ mov r0, #0x42
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ mov r0, #0x42
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019570
+ ldrb r0, [r4, #0x1a]
+ ldr r3, [r4, #0x20]
+ lsl r2, r0, #3
+ add r3, #0x20
+ ldrb r1, [r3, r2]
+ mov r0, #0x40
+ orr r0, r1
+ strb r0, [r3, r2]
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ strb r1, [r0, #2]
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD65_021D8214
+ add r0, r4, #0
+ bl MOD65_021D80C8
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD65_021D8970
+ mov r0, #0
+ strh r0, [r4, #0x18]
+ pop {r4, pc}
+ .align 2, 0
+_021D7988: .word 0x021C48B8
+ thumb_func_end MOD65_021D7920
+
+ thumb_func_start MOD65_021D798C
+MOD65_021D798C: ; 0x021D798C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #5
+ bhi _021D79F0
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D79A2: ; jump table
+ .short _021D79AE - _021D79A2 - 2 ; case 0
+ .short _021D79B4 - _021D79A2 - 2 ; case 1
+ .short _021D79BA - _021D79A2 - 2 ; case 2
+ .short _021D79C6 - _021D79A2 - 2 ; case 3
+ .short _021D79CC - _021D79A2 - 2 ; case 4
+ .short _021D79D2 - _021D79A2 - 2 ; case 5
+_021D79AE:
+ bl MOD65_021D7A8C
+ b _021D79F0
+_021D79B4:
+ bl MOD65_021D7B24
+ b _021D79F0
+_021D79BA:
+ bl MOD65_021D7CC8
+ add r0, r4, #0
+ bl MOD65_021D7C04
+ b _021D79F0
+_021D79C6:
+ bl MOD65_021D8850
+ b _021D79F0
+_021D79CC:
+ bl MOD65_021D7DD8
+ b _021D79F0
+_021D79D2:
+ bl MOD65_021D80C8
+ ldrb r1, [r4, #0x1b]
+ add r0, r4, #0
+ mov r2, #4
+ bl MOD65_021D8280
+ ldr r0, _021D79FC ; =MOD65_021D76DC
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_021D79F0:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021D79FC: .word MOD65_021D76DC
+ thumb_func_end MOD65_021D798C
+
+ thumb_func_start MOD65_021D7A00
+MOD65_021D7A00: ; 0x021D7A00
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #5
+ bhi _021D7A62
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7A16: ; jump table
+ .short _021D7A22 - _021D7A16 - 2 ; case 0
+ .short _021D7A3A - _021D7A16 - 2 ; case 1
+ .short _021D7A46 - _021D7A16 - 2 ; case 2
+ .short _021D7A52 - _021D7A16 - 2 ; case 3
+ .short _021D7A58 - _021D7A16 - 2 ; case 4
+ .short _021D7A5E - _021D7A16 - 2 ; case 5
+_021D7A22:
+ add r1, r4, #0
+ add r1, #0xd0
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _021D7A30
+ bl MOD65_021D86BC
+_021D7A30:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD65_021D8214
+ b _021D7A62
+_021D7A3A:
+ bl MOD65_021D7F44
+ add r0, r4, #0
+ bl MOD65_021D8928
+ b _021D7A62
+_021D7A46:
+ bl MOD65_021D7CA8
+ add r0, r4, #0
+ bl MOD65_021D7D74
+ b _021D7A62
+_021D7A52:
+ bl MOD65_021D7C00
+ b _021D7A62
+_021D7A58:
+ bl MOD65_021D7B04
+ b _021D7A62
+_021D7A5E:
+ mov r0, #1
+ pop {r4, pc}
+_021D7A62:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD65_021D7A00
+
+ thumb_func_start MOD65_021D7A6C
+MOD65_021D7A6C: ; 0x021D7A6C
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7A88 ; =0x021DA0B0
+ add r3, sp, #0
+ mov r2, #5
+_021D7A76:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7A76
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7A88: .word 0x021DA0B0
+ thumb_func_end MOD65_021D7A6C
+
+ thumb_func_start MOD65_021D7A8C
+MOD65_021D7A8C: ; 0x021D7A8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0xb8
+ add r5, r0, #0
+ bl MOD65_021D7A6C
+ ldr r0, [r5]
+ bl FUN_02016B94
+ add r3, sp, #0
+ ldr r4, _021D7AFC ; =0x021DA040
+ str r0, [r5, #0x24]
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r4, _021D7B00 ; =0x021DA140
+ add r3, sp, #0x10
+ mov r2, #0x15
+_021D7AB8:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7AB8
+ mov r4, #0
+ add r7, r4, #0
+ add r6, sp, #0x10
+_021D7AC6:
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x24]
+ lsr r1, r1, #0x18
+ add r2, r6, #0
+ mov r3, #0
+ bl FUN_02016C18
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x24]
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ lsl r0, r4, #0x18
+ ldr r3, [r5]
+ lsr r0, r0, #0x18
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ add r7, r7, #1
+ add r4, r4, #1
+ add r6, #0x1c
+ cmp r7, #6
+ blt _021D7AC6
+ add sp, #0xb8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7AFC: .word 0x021DA040
+_021D7B00: .word 0x021DA140
+ thumb_func_end MOD65_021D7A8C
+
+ thumb_func_start MOD65_021D7B04
+MOD65_021D7B04: ; 0x021D7B04
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021D7B0A:
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x24]
+ lsr r1, r1, #0x18
+ bl FUN_020178A0
+ add r4, r4, #1
+ cmp r4, #6
+ blt _021D7B0A
+ ldr r0, [r5, #0x24]
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D7B04
+
+ thumb_func_start MOD65_021D7B24
+MOD65_021D7B24: ; 0x021D7B24
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r0, #0x53
+ bl FUN_02006670
+ add r4, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x53
+ bl FUN_02079B60
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x53
+ bl FUN_02079B60
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #6
+ lsl r0, r0, #6
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x53
+ bl FUN_02079B60
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #6
+ lsl r0, r0, #6
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x53
+ bl FUN_02079B60
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x53
+ bl FUN_02079B60
+ mov r0, #0xb
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x53
+ bl FUN_02079B60
+ add r0, r4, #0
+ bl FUN_020066F4
+ ldr r0, [r5, #0x24]
+ mov r1, #3
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x24]
+ mov r1, #5
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D7B24
+
+ thumb_func_start MOD65_021D7C00
+MOD65_021D7C00: ; 0x021D7C00
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD65_021D7C00
+
+ thumb_func_start MOD65_021D7C04
+MOD65_021D7C04: ; 0x021D7C04
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r6]
+ mov r1, #1
+ str r0, [sp, #4]
+ ldr r0, [r6, #0x24]
+ mov r2, #0x1f
+ mov r3, #0xf
+ bl FUN_0200CB00
+ ldr r0, [r6, #0x20]
+ ldr r0, [r0, #0x18]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r6]
+ mov r1, #1
+ str r0, [sp, #4]
+ ldr r0, [r6, #0x24]
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_0200CD68
+ mov r1, #0x1a
+ ldr r2, [r6]
+ mov r0, #0
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ mov r1, #6
+ ldr r2, [r6]
+ mov r0, #0
+ lsl r1, r1, #6
+ bl FUN_02002EEC
+ mov r1, #0x1a
+ ldr r2, [r6]
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ add r5, r6, #0
+ ldr r4, _021D7CA4 ; =0x021DA0D8
+ mov r7, #0
+ add r5, #0xe8
+_021D7C68:
+ ldrb r0, [r4, #2]
+ add r1, r5, #0
+ str r0, [sp]
+ ldrb r0, [r4, #3]
+ str r0, [sp, #4]
+ ldrb r0, [r4, #4]
+ str r0, [sp, #8]
+ ldrb r0, [r4, #5]
+ str r0, [sp, #0xc]
+ ldrh r0, [r4, #6]
+ str r0, [sp, #0x10]
+ ldrb r2, [r4]
+ ldrb r3, [r4, #1]
+ ldr r0, [r6, #0x24]
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r7, r7, #1
+ add r4, #8
+ add r5, #0x10
+ cmp r7, #0xd
+ blt _021D7C68
+ add r0, r6, #0
+ bl MOD65_021D87D4
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7CA4: .word 0x021DA0D8
+ thumb_func_end MOD65_021D7C04
+
+ thumb_func_start MOD65_021D7CA8
+MOD65_021D7CA8: ; 0x021D7CA8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ add r5, #0xe8
+_021D7CB0:
+ add r0, r5, #0
+ bl FUN_02019570
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #0xd
+ blt _021D7CB0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D7CA8
+
+ thumb_func_start MOD65_021D7CC8
+MOD65_021D7CC8: ; 0x021D7CC8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r0, #2
+ bl FUN_02002C50
+ mov r2, #0x67
+ ldr r3, [r5]
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ bl FUN_0200A86C
+ str r0, [r5, #0x2c]
+ ldr r0, [r5]
+ bl FUN_02014518
+ str r0, [r5, #0x28]
+ ldr r2, [r5]
+ mov r0, #2
+ mov r1, #0x40
+ bl FUN_0200AA90
+ str r0, [r5, #0x30]
+ ldr r1, [r5]
+ mov r0, #0x40
+ bl FUN_020219F4
+ str r0, [r5, #0x34]
+ ldr r0, [r5, #0x2c]
+ mov r1, #6
+ bl FUN_0200A914
+ str r0, [r5, #0x38]
+ ldr r0, [r5, #0x2c]
+ mov r1, #0x16
+ bl FUN_0200A914
+ str r0, [r5, #0x3c]
+ ldr r0, [r5, #0x2c]
+ mov r1, #4
+ bl FUN_0200A914
+ str r0, [r5, #0x40]
+ ldr r0, [r5, #0x2c]
+ mov r1, #7
+ bl FUN_0200A914
+ str r0, [r5, #0x44]
+ ldr r0, [r5, #0x2c]
+ mov r1, #8
+ bl FUN_0200A914
+ str r0, [r5, #0x48]
+ ldr r0, [r5, #0x2c]
+ mov r1, #0
+ bl FUN_0200A914
+ str r0, [r5, #0x4c]
+ mov r4, #0
+ add r6, r5, #0
+_021D7D42:
+ add r1, r4, #0
+ ldr r0, [r5, #0x2c]
+ add r1, #0xb
+ bl FUN_0200A914
+ str r0, [r6, #0x50]
+ cmp r4, #5
+ bge _021D7D66
+ add r1, r4, #0
+ ldr r0, [r5, #0x2c]
+ add r1, #0x11
+ bl FUN_0200A914
+ str r0, [r6, #0x68]
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r4, #6
+ blt _021D7D42
+_021D7D66:
+ ldr r0, [r5, #0x20]
+ ldr r0, [r0, #0x18]
+ bl FUN_02024FF4
+ add r5, #0x7c
+ strb r0, [r5]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD65_021D7CC8
+
+ thumb_func_start MOD65_021D7D74
+MOD65_021D7D74: ; 0x021D7D74
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_021D7D7C:
+ ldr r0, [r5, #0x50]
+ bl FUN_02021A20
+ cmp r4, #5
+ bge _021D7D94
+ ldr r0, [r5, #0x68]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _021D7D7C
+_021D7D94:
+ ldr r0, [r6, #0x4c]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x48]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x44]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x40]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x3c]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x38]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x34]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x30]
+ bl FUN_0200AB18
+ ldr r0, [r6, #0x28]
+ bl FUN_02014564
+ ldr r0, [r6, #0x2c]
+ bl FUN_0200A8B8
+ mov r0, #2
+ bl FUN_02002CF8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD65_021D7D74
+
+ thumb_func_start MOD65_021D7DD8
+MOD65_021D7DD8: ; 0x021D7DD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r6, _021D7F30 ; =0x021DA1E8
+ mov r7, #0
+ add r4, r5, #0
+_021D7DE4:
+ mov r0, #0x6e
+ mov r1, #0x6f
+ lsl r0, r0, #2
+ lsl r1, r1, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ add r2, r6, #0
+ bl FUN_0200BE38
+ mov r1, #7
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ add r7, r7, #1
+ add r6, #0x28
+ add r4, r4, #4
+ cmp r7, #3
+ blt _021D7DE4
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x71
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x72
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r6, _021D7F34 ; =0x021DA050
+ mov r7, #0
+ add r4, r5, #0
+_021D7E3A:
+ mov r0, #0x6e
+ mov r1, #0x6f
+ lsl r0, r0, #2
+ lsl r1, r1, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, _021D7F38 ; =0x021DA260
+ bl FUN_0200BE38
+ mov r1, #0x73
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r7, #3
+ bl FUN_02020130
+ mov r0, #0x73
+ mov r1, #0
+ mov r2, #2
+ lsl r0, r0, #2
+ ldrsh r1, [r6, r1]
+ ldrsh r2, [r6, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C6E4
+ add r7, r7, #1
+ add r4, r4, #4
+ add r6, r6, #4
+ cmp r7, #5
+ blt _021D7E3A
+ mov r7, #0
+ ldr r6, _021D7F3C ; =0x021DA064
+ add r4, r5, #0
+ str r7, [sp, #0x10]
+_021D7E8C:
+ mov r0, #0x6e
+ mov r1, #0x6f
+ lsl r0, r0, #2
+ lsl r1, r1, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, _021D7F40 ; =0x021DA288
+ bl FUN_0200BE38
+ mov r1, #0x1e
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x10]
+ bl FUN_02020130
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ mov r1, #2
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, r7, #2
+ bl FUN_02020248
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x1e
+ mov r1, #0
+ mov r2, #2
+ lsl r0, r0, #4
+ ldrsh r1, [r6, r1]
+ ldrsh r2, [r6, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C6E4
+ ldr r0, [sp, #0x10]
+ add r7, r7, #1
+ add r0, r0, #3
+ add r4, r4, #4
+ add r6, r6, #4
+ str r0, [sp, #0x10]
+ cmp r7, #6
+ blt _021D7E8C
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x7e
+ str r1, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r2, #0xe7
+ mov r3, #0x4c
+ bl FUN_02088490
+ mov r1, #0x7f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #0
+ ldr r0, [r0, #4]
+ bl FUN_0200C644
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7F30: .word 0x021DA1E8
+_021D7F34: .word 0x021DA050
+_021D7F38: .word 0x021DA260
+_021D7F3C: .word 0x021DA064
+_021D7F40: .word 0x021DA288
+ thumb_func_end MOD65_021D7DD8
+
+ thumb_func_start MOD65_021D7F44
+MOD65_021D7F44: ; 0x021D7F44
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x7e
+ add r5, r0, #0
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_02088694
+ mov r7, #0x1e
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #4
+_021D7F5E:
+ ldr r0, [r4, r7]
+ bl FUN_0200BC14
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #6
+ blt _021D7F5E
+ mov r7, #0x73
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #2
+_021D7F74:
+ ldr r0, [r4, r7]
+ bl FUN_0200BC14
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #5
+ blt _021D7F74
+ mov r6, #7
+ mov r4, #0
+ lsl r6, r6, #6
+_021D7F88:
+ ldr r0, [r5, r6]
+ bl FUN_0200BC14
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021D7F88
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD65_021D7F44
+
+ thumb_func_start MOD65_021D7F98
+MOD65_021D7F98: ; 0x021D7F98
+ ldrb r2, [r0, #4]
+ mov r1, #0x20
+ bic r2, r1
+ strb r2, [r0, #4]
+ mov r1, #0xff
+ strb r1, [r0, #6]
+ ldrb r1, [r0, #6]
+ strb r1, [r0, #7]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD65_021D7F98
+
+ thumb_func_start MOD65_021D7FAC
+MOD65_021D7FAC: ; 0x021D7FAC
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ cmp r3, #0
+ beq _021D7FCA
+ mov r0, #0x42
+ lsl r0, r0, #2
+ mov r1, #1
+ add r0, r5, r0
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_0200D0BC
+_021D7FCA:
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ add r0, #0xe8
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xff
+ add r3, r2, #0
+ bl FUN_020196F4
+ mov r0, #1
+ bl FUN_02002B60
+ mov r0, #0
+ bl FUN_02002B7C
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D800C ; =0x0001020F
+ str r4, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x42
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ add r2, r6, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ strb r0, [r5, #0x1f]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D800C: .word 0x0001020F
+ thumb_func_end MOD65_021D7FAC
+
+ thumb_func_start MOD65_021D8010
+MOD65_021D8010: ; 0x021D8010
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r5, r1, #0
+ mov r0, #0xff
+ strb r0, [r5, #0x1e]
+ ldrb r0, [r5, #0x1e]
+ strb r0, [r5, #0x1d]
+ ldrb r2, [r5, #0x1b]
+ cmp r2, #5
+ bne _021D802E
+ mov r7, #0x1f
+ b _021D8044
+_021D802E:
+ mov r7, #1
+ ldr r1, [sp, #4]
+ cmp r2, #0
+ ble _021D8044
+_021D8036:
+ lsl r0, r7, #0x19
+ lsr r7, r0, #0x18
+ add r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, r2
+ blt _021D8036
+_021D8044:
+ ldr r0, [sp]
+ mov r6, #0
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _021D80BA
+ ldr r0, [sp]
+ str r0, [sp, #8]
+ add r0, #0x1c
+ str r0, [sp, #8]
+_021D8056:
+ ldr r0, [sp, #8]
+ lsl r1, r6, #3
+ add r4, r0, r1
+ add r0, r4, #0
+ bl MOD65_021D7F98
+ ldrb r0, [r4, #4]
+ lsl r1, r0, #0x18
+ lsr r1, r1, #0x1f
+ beq _021D80AC
+ lsl r1, r0, #0x19
+ lsr r1, r1, #0x1f
+ bne _021D80AC
+ mov r1, #0x1f
+ and r1, r0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ tst r1, r7
+ beq _021D80AC
+ mov r1, #0x20
+ orr r0, r1
+ strb r0, [r4, #4]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #0xff
+ ldrb r0, [r4, #5]
+ bne _021D808E
+ strb r0, [r5, #0x1d]
+ b _021D809A
+_021D808E:
+ ldrb r1, [r5, #0x1e]
+ lsl r2, r1, #3
+ ldr r1, [sp]
+ add r1, r1, r2
+ add r1, #0x23
+ strb r0, [r1]
+_021D809A:
+ ldrb r0, [r5, #0x1e]
+ strb r0, [r4, #6]
+ ldrb r0, [r4, #5]
+ strb r0, [r5, #0x1e]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+_021D80AC:
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ ldr r0, [sp]
+ ldrb r0, [r0]
+ cmp r6, r0
+ blt _021D8056
+_021D80BA:
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8010
+
+ thumb_func_start MOD65_021D80C8
+MOD65_021D80C8: ; 0x021D80C8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #0x20]
+ add r1, r5, #0
+ bl MOD65_021D8010
+ strb r0, [r5, #0x1c]
+ ldrb r0, [r5, #0x1c]
+ ldr r1, [r5]
+ bl FUN_02012838
+ add r1, r5, #0
+ add r1, #0xcc
+ str r0, [r1]
+ ldrb r4, [r5, #0x1e]
+ cmp r4, #0xff
+ beq _021D8142
+ mov r7, #0
+_021D80EE:
+ ldr r1, [r5, #0x20]
+ lsl r0, r4, #3
+ add r1, #0x1c
+ add r6, r1, r0
+ ldrb r4, [r6, #6]
+ ldrb r1, [r6, #2]
+ ldr r0, [r5, #0x28]
+ bl FUN_02014588
+ add r2, r0, #0
+ str r7, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x30]
+ add r1, r7, #0
+ add r3, r7, #0
+ bl FUN_0200ABB4
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldrb r2, [r6, #1]
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ mov r3, #2
+ bl FUN_0200AD38
+ ldr r0, [r5, #0x30]
+ ldr r1, [r5, #0x34]
+ ldr r2, [r5, #0x3c]
+ bl FUN_0200B7B8
+ add r0, r5, #0
+ add r0, #0xcc
+ ldrb r2, [r6, #5]
+ ldr r0, [r0]
+ ldr r1, [r5, #0x34]
+ bl FUN_020128A0
+ cmp r4, #0xff
+ bne _021D80EE
+_021D8142:
+ add r0, r5, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ ldr r1, [r5, #0x38]
+ mov r2, #0xff
+ bl FUN_020128A0
+ add r1, r5, #0
+ ldr r0, _021D8210 ; =0x021DA2E0
+ add r1, #0x84
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ ldr r0, [r5, #0x20]
+ ldrh r1, [r0, #6]
+ add r0, r5, #0
+ add r0, #0x82
+ strh r1, [r0]
+ ldr r0, [r5, #0x20]
+ ldrh r1, [r0, #4]
+ add r0, r5, #0
+ add r0, #0x80
+ strh r1, [r0]
+ ldr r0, [r5, #0x20]
+ ldrb r0, [r0, #2]
+ cmp r0, #0
+ beq _021D81C0
+ add r0, r5, #0
+ add r0, #0x80
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _021D81A4
+ add r0, r5, #0
+ add r0, #0x82
+ ldrh r1, [r0]
+ cmp r1, #0
+ beq _021D81BA
+ ldrb r0, [r5, #0x1c]
+ sub r0, r0, #1
+ cmp r1, r0
+ blt _021D81BA
+ add r0, r5, #0
+ add r0, #0x82
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x82
+ strh r1, [r0]
+ b _021D81BA
+_021D81A4:
+ add r1, r0, #6
+ ldrb r0, [r5, #0x1c]
+ cmp r1, r0
+ blt _021D81BA
+ add r0, r5, #0
+ add r0, #0x80
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x80
+ strh r1, [r0]
+_021D81BA:
+ ldr r0, [r5, #0x20]
+ mov r1, #0
+ strb r1, [r0, #2]
+_021D81C0:
+ add r1, r5, #0
+ add r0, r5, #0
+ add r1, #0xe8
+ add r0, #0x90
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xcc
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa0
+ str r5, [r0]
+ add r0, r5, #0
+ add r2, r5, #0
+ ldrb r1, [r5, #0x1c]
+ add r0, #0x94
+ add r2, #0x82
+ strh r1, [r0]
+ mov r0, #0
+ strh r0, [r5, #0x16]
+ add r1, r5, #0
+ add r1, #0x80
+ ldr r3, [r5]
+ add r0, r5, #0
+ lsl r3, r3, #0x18
+ ldrh r1, [r1]
+ ldrh r2, [r2]
+ add r0, #0x84
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ add r1, r5, #0
+ add r1, #0xc4
+ str r0, [r1]
+ mov r0, #1
+ strh r0, [r5, #0x16]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8210: .word 0x021DA2E0
+ thumb_func_end MOD65_021D80C8
+
+ thumb_func_start MOD65_021D8214
+MOD65_021D8214: ; 0x021D8214
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0xb0
+ str r0, [sp]
+ mov r0, #0x60
+ add r4, r1, #0
+ mov r1, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xe8
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ cmp r4, #0
+ beq _021D823E
+ add r0, r5, #0
+ add r0, #0xe8
+ bl FUN_02019570
+_021D823E:
+ add r0, r5, #0
+ add r0, #0xc4
+ add r1, r5, #0
+ add r2, r5, #0
+ ldr r0, [r0]
+ add r1, #0x80
+ add r2, #0x82
+ bl FUN_02001300
+ add r0, r5, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ bl FUN_02012870
+ add r0, r5, #0
+ add r0, #0x80
+ ldrh r1, [r0]
+ ldr r0, [r5, #0x20]
+ strh r1, [r0, #4]
+ add r0, r5, #0
+ add r0, #0x82
+ ldrh r1, [r0]
+ ldr r0, [r5, #0x20]
+ strh r1, [r0, #6]
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r5, #0xcc
+ str r1, [r5]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8214
+
+ thumb_func_start MOD65_021D8280
+MOD65_021D8280: ; 0x021D8280
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ cmp r2, #4
+ bls _021D828C
+ b _021D8392
+_021D828C:
+ add r0, r2, r2
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8298: ; jump table
+ .short _021D82A2 - _021D8298 - 2 ; case 0
+ .short _021D82D2 - _021D8298 - 2 ; case 1
+ .short _021D8302 - _021D8298 - 2 ; case 2
+ .short _021D8330 - _021D8298 - 2 ; case 3
+ .short _021D835E - _021D8298 - 2 ; case 4
+_021D82A2:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ add r6, r4, r0
+ lsl r7, r5, #2
+ lsl r1, r5, #1
+ ldr r0, [r6, r7]
+ add r1, r5, r1
+ bl FUN_02020130
+ ldr r0, [r6, r7]
+ mov r1, #0
+ bl FUN_020200BC
+ add r1, r4, #0
+ add r0, r5, #7
+ add r1, #0xe8
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #1
+ mov r2, #2
+ mov r3, #0
+ bl FUN_0201A8C8
+ b _021D8392
+_021D82D2:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ add r6, r4, r0
+ lsl r7, r5, #2
+ ldr r0, [r6, r7]
+ bl FUN_02020198
+ ldr r0, [r6, r7]
+ mov r1, #1
+ bl FUN_020200BC
+ add r1, r4, #0
+ add r0, r5, #7
+ add r1, #0xe8
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ mov r2, #4
+ add r3, r1, #0
+ bl FUN_0201A8C8
+ mov r0, #1
+ strh r0, [r4, #0x14]
+ b _021D8392
+_021D8302:
+ lsl r0, r5, #2
+ add r1, r4, r0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ lsl r1, r5, #1
+ add r1, r5, r1
+ add r1, r1, #1
+ bl FUN_02020130
+ add r1, r4, #0
+ add r0, r5, #7
+ add r1, #0xe8
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #1
+ mov r2, #2
+ mov r3, #0
+ bl FUN_0201A8C8
+ mov r0, #0
+ strh r0, [r4, #0x14]
+ b _021D8392
+_021D8330:
+ lsl r0, r5, #2
+ add r1, r4, r0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ lsl r1, r5, #1
+ add r1, r5, r1
+ add r1, r1, #2
+ bl FUN_02020130
+ add r1, r4, #0
+ add r0, r5, #7
+ add r1, #0xe8
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ mov r2, #2
+ add r3, r1, #0
+ bl FUN_0201A8C8
+ mov r0, #1
+ strh r0, [r4, #0x14]
+ b _021D8392
+_021D835E:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ lsl r1, r5, #1
+ add r1, r5, r1
+ add r6, r4, r0
+ lsl r7, r5, #2
+ ldr r0, [r6, r7]
+ add r1, r1, #1
+ bl FUN_02020130
+ ldr r0, [r6, r7]
+ mov r1, #1
+ bl FUN_020200BC
+ add r1, r4, #0
+ add r0, r5, #7
+ add r1, #0xe8
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #0
+ mov r2, #2
+ add r3, r1, #0
+ bl FUN_0201A8C8
+ mov r0, #0
+ strh r0, [r4, #0x14]
+_021D8392:
+ add r0, r5, #7
+ add r4, #0xe8
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl FUN_020191D0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD65_021D8280
+
+ thumb_func_start MOD65_021D83A0
+MOD65_021D83A0: ; 0x021D83A0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, _021D8470 ; =0x000005E4
+ add r5, r1, #0
+ bl FUN_020054C8
+ ldrh r1, [r4, #0x14]
+ ldr r0, _021D8474 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D83D2
+ ldrb r1, [r4, #0x1b]
+ cmp r5, r1
+ bne _021D83CA
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #3
+ bl MOD65_021D8280
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_021D83CA:
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD65_021D8280
+_021D83D2:
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD65_021D8280
+ add r0, r4, #0
+ mov r1, #0
+ strb r5, [r4, #0x1b]
+ bl MOD65_021D8214
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x82
+ strh r2, [r0]
+ add r0, r4, #0
+ add r0, #0x82
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ strh r1, [r0]
+ ldr r0, [r4, #0x20]
+ strh r2, [r0, #6]
+ ldr r1, [r4, #0x20]
+ ldrh r0, [r1, #6]
+ strh r0, [r1, #4]
+ add r0, r4, #0
+ bl MOD65_021D80C8
+ mov r1, #0xa0
+ str r1, [sp]
+ mov r0, #0x18
+ add r1, #0xa8
+ str r0, [sp, #4]
+ add r0, r4, r1
+ mov r1, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ ldrb r1, [r4, #0x1b]
+ cmp r1, #5
+ bne _021D8434
+ mov r0, #0x52
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_021D8434:
+ lsl r1, r1, #2
+ add r1, r4, r1
+ mov r0, #0
+ ldr r1, [r1, #0x68]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r2, #0xa0
+ sub r3, r2, r0
+ mov r0, #3
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021D8478 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r2, #0xa8
+ str r1, [sp, #0xc]
+ add r0, r4, r2
+ ldrb r2, [r4, #0x1b]
+ lsl r2, r2, #2
+ add r2, r4, r2
+ lsr r4, r3, #0x1f
+ add r4, r3, r4
+ ldr r2, [r2, #0x68]
+ asr r3, r4, #1
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D8470: .word 0x000005E4
+_021D8474: .word 0x0000FFFF
+_021D8478: .word 0x00010200
+ thumb_func_end MOD65_021D83A0
+
+ thumb_func_start MOD65_021D847C
+MOD65_021D847C: ; 0x021D847C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ ldr r6, _021D84E0 ; =0x00000001
+ bne _021D84A6
+ mov r4, #0
+ mov r6, #0x73
+ add r7, r4, #0
+ lsl r6, r6, #2
+_021D848E:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ add r1, r7, #0
+ bl FUN_020200A0
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #5
+ blo _021D848E
+ pop {r3, r4, r5, r6, r7, pc}
+_021D84A6:
+ mov r4, #0
+_021D84A8:
+ ldrb r0, [r7, #4]
+ tst r0, r6
+ beq _021D84C0
+ lsl r0, r4, #2
+ add r1, r5, r0
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ b _021D84D0
+_021D84C0:
+ lsl r0, r4, #2
+ add r1, r5, r0
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_021D84D0:
+ lsl r0, r6, #0x19
+ lsr r6, r0, #0x18
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #5
+ blo _021D84A8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D84E0: .word 0x00000001
+ thumb_func_end MOD65_021D847C
+
+ thumb_func_start MOD65_021D84E4
+MOD65_021D84E4: ; 0x021D84E4
+ ldr r3, _021D84EC ; =0x02001471
+ mov r1, #0x13
+ bx r3
+ nop
+_021D84EC: .word 0x02001471
+ thumb_func_end MOD65_021D84E4
+
+ thumb_func_start MOD65_021D84F0
+MOD65_021D84F0: ; 0x021D84F0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ mov r1, #0x13
+ add r7, r0, #0
+ add r6, r2, #0
+ bl FUN_02001470
+ add r4, r0, #0
+ cmp r6, #0
+ bne _021D850C
+ ldr r0, _021D862C ; =0x000005DC
+ bl FUN_020054C8
+_021D850C:
+ add r1, sp, #0x10
+ add r0, r7, #0
+ add r1, #2
+ add r2, sp, #0x10
+ bl FUN_02001448
+ add r2, sp, #0x10
+ ldrh r2, [r2]
+ mov r0, #7
+ lsl r0, r0, #6
+ lsl r2, r2, #4
+ add r2, #0x28
+ lsl r2, r2, #0x10
+ ldr r0, [r4, r0]
+ mov r1, #0x69
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ add r0, sp, #0x10
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ bne _021D8546
+ mov r0, #0x71
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ b _021D8552
+_021D8546:
+ mov r0, #0x71
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D8552:
+ add r0, sp, #0x10
+ ldrh r1, [r0, #2]
+ ldrb r0, [r4, #0x1c]
+ sub r0, r0, #6
+ cmp r1, r0
+ bge _021D856C
+ mov r0, #0x72
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ b _021D8578
+_021D856C:
+ mov r0, #0x72
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_021D8578:
+ mov r0, #0x50
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xf8
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ cmp r5, #0xff
+ bne _021D85B4
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD65_021D847C
+ add r0, r4, #0
+ add r0, #0xf8
+ bl FUN_020191D0
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ ldr r0, [r0, #4]
+ bl FUN_0200C644
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021D85B4:
+ ldr r1, [r4, #0x20]
+ lsl r5, r5, #3
+ add r1, #0x1c
+ add r0, r4, #0
+ add r1, r1, r5
+ bl MOD65_021D847C
+ ldr r0, [r4, #0x34]
+ bl FUN_02021A4C
+ ldr r0, [r4, #0x20]
+ add r0, r0, r5
+ ldrb r2, [r0, #0x1f]
+ cmp r2, #0x63
+ bls _021D85D4
+ mov r2, #0x63
+_021D85D4:
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x30]
+ mov r3, #2
+ bl FUN_0200AD38
+ ldr r0, [r4, #0x30]
+ ldr r1, [r4, #0x34]
+ ldr r2, [r4, #0x40]
+ bl FUN_0200B7B8
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8630 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x34]
+ add r0, #0xf8
+ mov r3, #8
+ bl FUN_0201BDE0
+ ldr r2, [r4, #0x20]
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ add r2, r2, r5
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldrb r2, [r2, #0x1e]
+ ldr r1, [r4, r1]
+ bl FUN_02088660
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ ldr r0, [r0, #4]
+ bl FUN_0200C644
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D862C: .word 0x000005DC
+_021D8630: .word 0x00010200
+ thumb_func_end MOD65_021D84F0
+
+ thumb_func_start MOD65_021D8634
+MOD65_021D8634: ; 0x021D8634
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r0, #3
+ bl FUN_02012838
+ add r1, r5, #0
+ add r1, #0xd0
+ str r0, [r1]
+ mov r4, #0
+_021D8648:
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ ldr r1, [r5, #0x2c]
+ add r2, r4, #1
+ add r3, r4, #0
+ bl FUN_02012880
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #3
+ blo _021D8648
+ add r1, r5, #0
+ ldr r0, _021D86B8 ; =0x021DA2C0
+ add r1, #0xa4
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ mov r0, #0x46
+ lsl r0, r0, #2
+ add r1, r5, #0
+ add r0, r5, r0
+ add r1, #0xb0
+ str r0, [r1]
+ add r1, r5, #0
+ add r1, #0xd0
+ ldr r2, [r1]
+ add r1, r5, #0
+ add r1, #0xa4
+ str r2, [r1]
+ add r1, r5, #0
+ add r1, #0xc0
+ str r5, [r1]
+ add r1, r5, #0
+ mov r2, #3
+ add r1, #0xb4
+ strh r2, [r1]
+ mov r1, #1
+ mov r2, #0x1f
+ mov r3, #0xf
+ bl FUN_0200CCA4
+ ldr r3, [r5]
+ add r0, r5, #0
+ mov r1, #0
+ lsl r3, r3, #0x18
+ add r0, #0xa4
+ add r2, r1, #0
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ add r5, #0xc8
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+ nop
+_021D86B8: .word 0x021DA2C0
+ thumb_func_end MOD65_021D8634
+
+ thumb_func_start MOD65_021D86BC
+MOD65_021D86BC: ; 0x021D86BC
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #0x46
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0x46
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019570
+ add r0, r4, #0
+ add r0, #0xc8
+ add r2, sp, #0
+ ldr r0, [r0]
+ add r1, sp, #0
+ add r2, #2
+ bl FUN_02001300
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_02012870
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xc8
+ str r1, [r0]
+ add r4, #0xd0
+ str r1, [r4]
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D86BC
+
+ thumb_func_start MOD65_021D8704
+MOD65_021D8704: ; 0x021D8704
+ push {r3, lr}
+ cmp r2, #0
+ bne _021D8710
+ ldr r0, _021D8714 ; =0x000005DC
+ bl FUN_020054C8
+_021D8710:
+ pop {r3, pc}
+ nop
+_021D8714: .word 0x000005DC
+ thumb_func_end MOD65_021D8704
+
+ thumb_func_start MOD65_021D8718
+MOD65_021D8718: ; 0x021D8718
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ bl FUN_02021A4C
+ ldrb r1, [r4, #0x1a]
+ ldr r2, [r4, #0x20]
+ ldr r0, [r4, #0x28]
+ lsl r1, r1, #3
+ add r1, r2, r1
+ ldrb r1, [r1, #0x1e]
+ bl FUN_02014588
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r3, #2
+ str r3, [sp, #4]
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_0200ABB4
+ ldr r0, [r4, #0x30]
+ ldr r1, [r4, #0x34]
+ ldr r2, [r4, #0x44]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ ldr r1, [r4, #0x34]
+ add r4, #0x7c
+ ldrb r2, [r4]
+ mov r3, #1
+ bl MOD65_021D7FAC
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8718
+
+ thumb_func_start MOD65_021D8764
+MOD65_021D8764: ; 0x021D8764
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ bl FUN_02021A4C
+ ldrb r1, [r4, #0x1a]
+ ldr r2, [r4, #0x20]
+ ldr r0, [r4, #0x28]
+ lsl r1, r1, #3
+ add r1, r2, r1
+ ldrb r1, [r1, #0x1e]
+ bl FUN_02014588
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r3, #2
+ str r3, [sp, #4]
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_0200ABB4
+ ldr r0, [r4, #0x30]
+ ldr r1, [r4, #0x34]
+ ldr r2, [r4, #0x48]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ ldr r1, [r4, #0x34]
+ add r4, #0x7c
+ ldrb r2, [r4]
+ mov r3, #0
+ bl MOD65_021D7FAC
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8764
+
+ thumb_func_start MOD65_021D87B0
+MOD65_021D87B0: ; 0x021D87B0
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r1, _021D87D0 ; =0x021DA2B8
+ str r0, [sp]
+ ldr r0, [r4, #0x24]
+ mov r2, #0x1f
+ mov r3, #0xf
+ bl FUN_02002198
+ add r4, #0xd4
+ str r0, [r4]
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D87D0: .word 0x021DA2B8
+ thumb_func_end MOD65_021D87B0
+
+ thumb_func_start MOD65_021D87D4
+MOD65_021D87D4: ; 0x021D87D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r1, #0
+ add r5, r0, #0
+ str r1, [sp]
+ ldr r0, _021D8844 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x4c]
+ add r0, r5, r0
+ mov r3, #4
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0xe8
+ ldr r4, _021D8848 ; =0x021DA2B0
+ mov r6, #0
+ str r0, [sp, #0x10]
+_021D8800:
+ ldr r1, [r5, #0x50]
+ mov r0, #2
+ mov r2, #0
+ bl FUN_02002E14
+ mov r1, #0x40
+ sub r3, r1, r0
+ ldrb r0, [r4]
+ lsr r7, r3, #0x1f
+ add r7, r3, r7
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021D884C ; =0x00020301
+ asr r3, r7, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r6, #7
+ lsl r1, r0, #4
+ ldr r0, [sp, #0x10]
+ ldr r2, [r5, #0x50]
+ add r0, r0, r1
+ mov r1, #2
+ bl FUN_0201BDE0
+ add r6, r6, #1
+ add r5, r5, #4
+ add r4, r4, #1
+ cmp r6, #6
+ blt _021D8800
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8844: .word 0x00010200
+_021D8848: .word 0x021DA2B0
+_021D884C: .word 0x00020301
+ thumb_func_end MOD65_021D87D4
+
+ thumb_func_start MOD65_021D8850
+MOD65_021D8850: ; 0x021D8850
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ add r4, r0, #0
+ ldr r1, [r4]
+ mov r0, #0x20
+ bl FUN_0201C24C
+ ldr r0, [r4]
+ bl FUN_0200BB14
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ bl FUN_0200BB34
+ mov r7, #0x6f
+ lsl r7, r7, #2
+ add r2, sp, #0x34
+ ldr r3, _021D891C ; =0x021DA330
+ str r0, [r4, r7]
+ ldmia r3!, {r0, r1}
+ add r6, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ ldr r5, _021D8920 ; =0x021DA300
+ stmia r2!, {r0, r1}
+ add r3, sp, #0x20
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ add r1, r6, #0
+ str r0, [r3]
+ sub r0, r7, #4
+ ldr r0, [r4, r0]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ sub r1, r7, #4
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ mov r2, #0xe
+ bl FUN_0200BBF0
+ ldr r0, [r4]
+ bl FUN_0200A064
+ ldr r0, [r4]
+ bl FUN_0200A06C
+ ldr r5, _021D8924 ; =0x021DA314
+ add r3, sp, #4
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ sub r1, r7, #4
+ str r0, [r3]
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl FUN_0200BD20
+ mov r1, #1
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4]
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02088320
+ add r1, r7, #0
+ add r1, #0x3c
+ str r0, [r4, r1]
+ bl FUN_02030F40
+ cmp r0, #0
+ beq _021D8908
+ bl FUN_02033E74
+_021D8908:
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D891C: .word 0x021DA330
+_021D8920: .word 0x021DA300
+_021D8924: .word 0x021DA314
+ thumb_func_end MOD65_021D8850
+
+ thumb_func_start MOD65_021D8928
+MOD65_021D8928: ; 0x021D8928
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02088360
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl FUN_0200BCE0
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+ pop {r4, pc}
+ thumb_func_end MOD65_021D8928
+
+ thumb_func_start MOD65_021D8954
+MOD65_021D8954: ; 0x021D8954
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200BC1C
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02088484
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8954
+
+ thumb_func_start MOD65_021D8970
+MOD65_021D8970: ; 0x021D8970
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #0
+ bne _021D899E
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020248
+ mov r0, #0x71
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x72
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ pop {r4, pc}
+_021D899E:
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #9
+ bl FUN_02020248
+ mov r0, #0x71
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x72
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ pop {r4, pc}
+ thumb_func_end MOD65_021D8970
+
+ thumb_func_start MOD65_021D89C4
+MOD65_021D89C4: ; 0x021D89C4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ add r5, r1, #0
+ add r1, sp, #0
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ add r4, r2, #0
+ str r0, [r1, #8]
+ add r7, r3, #0
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl FX_Div
+ str r0, [r5]
+ ldr r0, [r4, #4]
+ add r1, r7, #0
+ bl FX_Div
+ str r0, [r5, #4]
+ ldr r0, [r4, #8]
+ add r1, r7, #0
+ bl FX_Div
+ add r2, sp, #0
+ str r0, [r5, #8]
+ ldmia r2!, {r0, r1}
+ stmia r6!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r6]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D89C4
+
+ thumb_func_start MOD65_021D8A08
+MOD65_021D8A08: ; 0x021D8A08
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_0200628C
+ mov r2, #1
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x2e
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r1, #0x6f
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #0x2e
+ bl FUN_02006268
+ mov r2, #0x6f
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x2e
+ str r0, [r4]
+ str r5, [r4, #0x10]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD65_021D8A08
+
+ thumb_func_start MOD65_021D8A40
+MOD65_021D8A40: ; 0x021D8A40
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #2
+ blt _021D8A64
+ cmp r0, #5
+ bgt _021D8A64
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD65_021D9F50
+ ldr r0, [r4, #0x5c]
+ bl FUN_02088484
+_021D8A64:
+ ldr r0, [r5]
+ cmp r0, #7
+ bls _021D8A6C
+ b _021D8B9E
+_021D8A6C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8A78: ; jump table
+ .short _021D8A88 - _021D8A78 - 2 ; case 0
+ .short _021D8ACE - _021D8A78 - 2 ; case 1
+ .short _021D8AE8 - _021D8A78 - 2 ; case 2
+ .short _021D8B12 - _021D8A78 - 2 ; case 3
+ .short _021D8B20 - _021D8A78 - 2 ; case 4
+ .short _021D8B4A - _021D8A78 - 2 ; case 5
+ .short _021D8B58 - _021D8A78 - 2 ; case 6
+ .short _021D8B68 - _021D8A78 - 2 ; case 7
+_021D8A88:
+ 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, _021D8BB0 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D8BB4 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ b _021D8BA4
+_021D8ACE:
+ add r0, r4, #0
+ bl MOD65_021D8BD8
+ cmp r0, #0
+ bne _021D8ADE
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, pc}
+_021D8ADE:
+ ldr r0, _021D8BB8 ; =MOD65_021D8C88
+ add r1, r4, #0
+ bl FUN_02015F10
+ b _021D8BA4
+_021D8AE8:
+ ldr r1, [r4, #4]
+ add r0, r1, #1
+ str r0, [r4, #4]
+ cmp r1, #4
+ bge _021D8AF8
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, pc}
+_021D8AF8:
+ mov r0, #0
+ str r0, [r4, #4]
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r2, [r4]
+ add r3, r0, #0
+ str r2, [sp, #8]
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ b _021D8BA4
+_021D8B12:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D8BA4
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, pc}
+_021D8B20:
+ add r0, r4, #0
+ bl MOD65_021D9074
+ cmp r0, #0
+ bne _021D8B30
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, pc}
+_021D8B30:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ b _021D8BA4
+_021D8B4A:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D8BA4
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, pc}
+_021D8B58:
+ add r0, r4, #0
+ bl MOD65_021D8C30
+ cmp r0, #0
+ bne _021D8BA4
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, pc}
+_021D8B68:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D8BB0 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D8BB4 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ b _021D8BA4
+_021D8B9E:
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021D8BA4:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D8BB0: .word 0xFFFFE0FF
+_021D8BB4: .word 0x04001000
+_021D8BB8: .word MOD65_021D8C88
+ thumb_func_end MOD65_021D8A40
+
+ thumb_func_start MOD65_021D8BBC
+MOD65_021D8BBC: ; 0x021D8BBC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200627C
+ ldr r0, [r4]
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8BBC
+
+ thumb_func_start MOD65_021D8BD8
+MOD65_021D8BD8: ; 0x021D8BD8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _021D8BEC
+ cmp r1, #1
+ beq _021D8BF8
+ cmp r1, #2
+ beq _021D8C04
+ b _021D8C24
+_021D8BEC:
+ bl MOD65_021D8CD8
+ add r0, r4, #0
+ bl MOD65_021D8D90
+ b _021D8C24
+_021D8BF8:
+ bl MOD65_021D8EC4
+ add r0, r4, #0
+ bl MOD65_021D8E68
+ b _021D8C24
+_021D8C04:
+ bl MOD65_021D8F34
+ add r0, r4, #0
+ add r1, r4, #0
+ ldr r2, [r4]
+ add r0, #0x40
+ add r1, #0x30
+ bl MOD65_021D9E98
+ add r0, r4, #0
+ bl MOD65_021D8FB0
+ mov r0, #0
+ str r0, [r4, #4]
+ mov r0, #1
+ pop {r4, pc}
+_021D8C24:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8BD8
+
+ thumb_func_start MOD65_021D8C30
+MOD65_021D8C30: ; 0x021D8C30
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #3
+ bhi _021D8C7C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8C46: ; jump table
+ .short _021D8C4E - _021D8C46 - 2 ; case 0
+ .short _021D8C62 - _021D8C46 - 2 ; case 1
+ .short _021D8C6E - _021D8C46 - 2 ; case 2
+ .short _021D8C74 - _021D8C46 - 2 ; case 3
+_021D8C4E:
+ bl MOD65_021D9054
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD65_021D9F8C
+ add r0, r4, #0
+ bl MOD65_021D8FA4
+ b _021D8C7C
+_021D8C62:
+ bl MOD65_021D8EB0
+ add r0, r4, #0
+ bl MOD65_021D8F08
+ b _021D8C7C
+_021D8C6E:
+ bl MOD65_021D8D68
+ b _021D8C7C
+_021D8C74:
+ mov r0, #0
+ str r0, [r4, #4]
+ mov r0, #1
+ pop {r4, pc}
+_021D8C7C:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8C30
+
+ thumb_func_start MOD65_021D8C88
+MOD65_021D8C88: ; 0x021D8C88
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x68]
+ bl FUN_0201AB60
+ ldr r0, [r4, #0x44]
+ bl FUN_020081C4
+ bl FUN_0200BC30
+ bl FUN_0201C30C
+ ldr r3, _021D8CB0 ; =0x027E0000
+ ldr r1, _021D8CB4 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ nop
+_021D8CB0: .word 0x027E0000
+_021D8CB4: .word 0x00003FF8
+ thumb_func_end MOD65_021D8C88
+
+ thumb_func_start MOD65_021D8CB8
+MOD65_021D8CB8: ; 0x021D8CB8
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D8CD4 ; =0x021DA3A0
+ add r3, sp, #0
+ mov r2, #5
+_021D8CC2:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D8CC2
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D8CD4: .word 0x021DA3A0
+ thumb_func_end MOD65_021D8CB8
+
+ thumb_func_start MOD65_021D8CD8
+MOD65_021D8CD8: ; 0x021D8CD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x6c
+ add r5, r0, #0
+ bl MOD65_021D8CB8
+ ldr r0, [r5]
+ bl FUN_02016B94
+ add r3, sp, #8
+ ldr r4, _021D8D5C ; =0x021DA35C
+ str r0, [r5, #0x68]
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r4, _021D8D60 ; =0x021DA3C8
+ add r3, sp, #0x18
+ mov r2, #0xa
+_021D8D04:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D8D04
+ ldr r1, _021D8D64 ; =0x021DA350
+ ldr r0, [r4]
+ ldrb r2, [r1]
+ str r0, [r3]
+ add r0, sp, #4
+ strb r2, [r0]
+ ldrb r2, [r1, #1]
+ ldrb r1, [r1, #2]
+ add r4, sp, #4
+ strb r2, [r0, #1]
+ strb r1, [r0, #2]
+ mov r0, #0
+ str r0, [sp]
+ add r6, sp, #0x18
+_021D8D28:
+ ldrb r7, [r4]
+ ldr r0, [r5, #0x68]
+ add r2, r6, #0
+ add r1, r7, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r5, #0x68]
+ add r1, r7, #0
+ bl FUN_02018744
+ ldr r3, [r5]
+ add r0, r7, #0
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r0, [sp]
+ add r4, r4, #1
+ add r0, r0, #1
+ add r6, #0x1c
+ str r0, [sp]
+ cmp r0, #3
+ blt _021D8D28
+ add sp, #0x6c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8D5C: .word 0x021DA35C
+_021D8D60: .word 0x021DA3C8
+_021D8D64: .word 0x021DA350
+ thumb_func_end MOD65_021D8CD8
+
+ thumb_func_start MOD65_021D8D68
+MOD65_021D8D68: ; 0x021D8D68
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #1
+_021D8D6E:
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x68]
+ lsr r1, r1, #0x18
+ bl FUN_020178A0
+ add r4, r4, #1
+ cmp r4, #3
+ blt _021D8D6E
+ ldr r0, [r5, #0x68]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r5, #0x68]
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8D68
+
+ thumb_func_start MOD65_021D8D90
+MOD65_021D8D90: ; 0x021D8D90
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r0, #0x57
+ bl FUN_02006670
+ add r4, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x68]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x57
+ bl FUN_02079B60
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x68]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x57
+ bl FUN_02079B60
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x20
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ ldr r0, [r5, #0x68]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x57
+ bl FUN_02079B60
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xa0
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x68]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x57
+ bl FUN_02079B60
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x68]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x57
+ bl FUN_02079B60
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x68]
+ ldr r1, [r5]
+ add r2, r4, #0
+ mov r3, #0x57
+ bl FUN_02079B60
+ add r0, r4, #0
+ bl FUN_020066F4
+ ldr r0, [r5, #0x68]
+ mov r1, #2
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x68]
+ mov r1, #4
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ thumb_func_end MOD65_021D8D90
+
+ thumb_func_start MOD65_021D8E68
+MOD65_021D8E68: ; 0x021D8E68
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #0x68]
+ ldr r2, _021D8EAC ; =0x021DA354
+ add r1, #0x6c
+ bl FUN_02019150
+ add r0, r4, #0
+ add r0, #0x6c
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ ldrb r0, [r0, #0xb]
+ add r2, r1, #0
+ mov r3, #0xe
+ str r0, [sp]
+ ldr r0, [r4]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x68]
+ bl FUN_0200CD68
+ mov r1, #0x1e
+ ldr r2, [r4]
+ mov r0, #0
+ lsl r1, r1, #4
+ bl FUN_02002EEC
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021D8EAC: .word 0x021DA354
+ thumb_func_end MOD65_021D8E68
+
+ thumb_func_start MOD65_021D8EB0
+MOD65_021D8EB0: ; 0x021D8EB0
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x6c
+ bl FUN_02019570
+ add r4, #0x6c
+ add r0, r4, #0
+ bl FUN_02019178
+ pop {r4, pc}
+ thumb_func_end MOD65_021D8EB0
+
+ thumb_func_start MOD65_021D8EC4
+MOD65_021D8EC4: ; 0x021D8EC4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r2, _021D8F04 ; =0x0000019B
+ ldr r3, [r6]
+ mov r0, #0
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r6, #0x18]
+ ldr r2, [r6]
+ mov r0, #1
+ mov r1, #0x40
+ bl FUN_0200AA90
+ str r0, [r6, #0x1c]
+ ldr r1, [r6]
+ mov r0, #0x40
+ bl FUN_020219F4
+ str r0, [r6, #0x20]
+ mov r4, #0
+ add r5, r6, #0
+_021D8EF0:
+ ldr r0, [r6, #0x18]
+ add r1, r4, #0
+ bl FUN_0200A914
+ str r0, [r5, #0x24]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021D8EF0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8F04: .word 0x0000019B
+ thumb_func_end MOD65_021D8EC4
+
+ thumb_func_start MOD65_021D8F08
+MOD65_021D8F08: ; 0x021D8F08
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_021D8F10:
+ ldr r0, [r5, #0x24]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021D8F10
+ ldr r0, [r6, #0x20]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x1c]
+ bl FUN_0200AB18
+ ldr r0, [r6, #0x18]
+ bl FUN_0200A8B8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D8F08
+
+ thumb_func_start MOD65_021D8F34
+MOD65_021D8F34: ; 0x021D8F34
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ mov r1, #5
+ ldr r0, [r0]
+ mov r2, #0
+ str r0, [r4, #0x30]
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0]
+ bl FUN_020671BC
+ strh r0, [r4, #0x34]
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0]
+ bl FUN_020689E0
+ add r1, r4, #0
+ add r1, #0x37
+ strb r0, [r1]
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0]
+ bl FUN_02068854
+ add r1, r4, #0
+ add r1, #0x36
+ strb r0, [r1]
+ ldrh r0, [r4, #0x34]
+ mov r1, #0x1c
+ bl FUN_02068678
+ mov r1, #1
+ eor r1, r0
+ add r0, r4, #0
+ add r0, #0x38
+ strb r1, [r0]
+ ldr r1, [r4]
+ mov r0, #0xc
+ bl FUN_020219F4
+ str r0, [r4, #0x3c]
+ ldr r0, [r4, #0x10]
+ ldr r2, [r4, #0x3c]
+ ldr r0, [r0]
+ mov r1, #0x76
+ bl FUN_020671BC
+ add r1, r4, #0
+ ldr r0, [r4, #0x10]
+ add r1, #0x36
+ ldrb r1, [r1]
+ ldr r0, [r0, #4]
+ bl FUN_020881D0
+ add r4, #0x39
+ strb r0, [r4]
+ pop {r4, pc}
+ thumb_func_end MOD65_021D8F34
+
+ thumb_func_start MOD65_021D8FA4
+MOD65_021D8FA4: ; 0x021D8FA4
+ ldr r3, _021D8FAC ; =0x02021A21
+ ldr r0, [r0, #0x3c]
+ bx r3
+ nop
+_021D8FAC: .word 0x02021A21
+ thumb_func_end MOD65_021D8FA4
+
+ thumb_func_start MOD65_021D8FB0
+MOD65_021D8FB0: ; 0x021D8FB0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x44
+ add r4, r0, #0
+ ldr r1, [r4]
+ mov r0, #0x20
+ bl FUN_0201C24C
+ ldr r0, [r4]
+ bl FUN_0200BB14
+ add r2, sp, #0x24
+ ldr r5, _021D904C ; =0x021DA380
+ str r0, [r4, #0x7c]
+ ldmia r5!, {r0, r1}
+ add r3, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ ldr r6, _021D9050 ; =0x021DA36C
+ stmia r2!, {r0, r1}
+ add r5, sp, #0x10
+ ldmia r6!, {r0, r1}
+ add r2, r5, #0
+ stmia r5!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r3, #0
+ str r0, [r5]
+ ldr r0, [r4, #0x7c]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ ldr r0, [r4]
+ bl FUN_0200A064
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #2
+ ldr r0, [r4]
+ add r2, r1, #0
+ mov r3, #1
+ bl FUN_02088320
+ str r0, [r4, #0x5c]
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x5c]
+ ldrh r1, [r1, #8]
+ mov r2, #0x64
+ mov r3, #0x5a
+ bl FUN_02088490
+ str r0, [r4, #0x60]
+ ldr r0, [r0, #4]
+ mov r1, #0
+ bl FUN_0200C644
+ bl FUN_02030F40
+ cmp r0, #0
+ beq _021D9040
+ bl FUN_02033E74
+_021D9040:
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x44
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D904C: .word 0x021DA380
+_021D9050: .word 0x021DA36C
+ thumb_func_end MOD65_021D8FB0
+
+ thumb_func_start MOD65_021D9054
+MOD65_021D9054: ; 0x021D9054
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ ldr r1, [r4, #0x60]
+ bl FUN_02088694
+ ldr r0, [r4, #0x5c]
+ bl FUN_02088360
+ ldr r0, [r4, #0x7c]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D9054
+
+ thumb_func_start MOD65_021D9074
+MOD65_021D9074: ; 0x021D9074
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #8
+ bhi _021D90F4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D908A: ; jump table
+ .short _021D909C - _021D908A - 2 ; case 0
+ .short _021D90A8 - _021D908A - 2 ; case 1
+ .short _021D90B4 - _021D908A - 2 ; case 2
+ .short _021D90C0 - _021D908A - 2 ; case 3
+ .short _021D90CC - _021D908A - 2 ; case 4
+ .short _021D90D8 - _021D908A - 2 ; case 5
+ .short _021D90E4 - _021D908A - 2 ; case 6
+ .short _021D90EC - _021D908A - 2 ; case 7
+ .short _021D90F4 - _021D908A - 2 ; case 8
+_021D909C:
+ add r1, r4, #0
+ add r1, #0x80
+ bl MOD65_021D9150
+ str r0, [r4, #4]
+ b _021D90FC
+_021D90A8:
+ add r1, r4, #0
+ add r1, #0x80
+ bl MOD65_021D922C
+ str r0, [r4, #4]
+ b _021D90FC
+_021D90B4:
+ add r1, r4, #0
+ add r1, #0x80
+ bl MOD65_021D923C
+ str r0, [r4, #4]
+ b _021D90FC
+_021D90C0:
+ add r1, r4, #0
+ add r1, #0x80
+ bl MOD65_021D926C
+ str r0, [r4, #4]
+ b _021D90FC
+_021D90CC:
+ add r1, r4, #0
+ add r1, #0x80
+ bl MOD65_021D9284
+ str r0, [r4, #4]
+ b _021D90FC
+_021D90D8:
+ add r1, r4, #0
+ add r1, #0x80
+ bl MOD65_021D92B4
+ str r0, [r4, #4]
+ b _021D90FC
+_021D90E4:
+ bl MOD65_021D92C4
+ str r0, [r4, #4]
+ b _021D90FC
+_021D90EC:
+ bl MOD65_021D9338
+ str r0, [r4, #4]
+ b _021D90FC
+_021D90F4:
+ mov r0, #0
+ str r0, [r4, #4]
+ mov r0, #1
+ pop {r4, pc}
+_021D90FC:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD65_021D9074
+
+ thumb_func_start MOD65_021D9100
+MOD65_021D9100: ; 0x021D9100
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r2, #0
+ add r3, r5, #0
+ add r0, r1, #0
+ mov r2, #0x1c
+ add r3, #0xcc
+ mul r0, r2
+ add r4, r3, r0
+ add r0, r4, #0
+ mov r1, #0
+ bl MI_CpuFill8
+ str r5, [r4, #0x14]
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x18]
+ ldr r0, [r5, #4]
+ add r0, r0, #1
+ str r0, [r5, #4]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD65_021D9100
+
+ thumb_func_start MOD65_021D9130
+MOD65_021D9130: ; 0x021D9130
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ bl FUN_0200CAB4
+ ldr r1, [r4, #0x14]
+ mov r2, #0x1c
+ ldr r0, [r1, #4]
+ sub r0, r0, #1
+ str r0, [r1, #4]
+ add r0, r4, #0
+ mov r1, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD65_021D9130
+
+ thumb_func_start MOD65_021D9150
+MOD65_021D9150: ; 0x021D9150
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r4, r1, #0
+ mov r2, #0x4f
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ ldr r0, [r5, #0x60]
+ mov r2, #0x18
+ ldr r0, [r0, #4]
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ ldr r1, [r5, #0x58]
+ add r0, r4, #0
+ add r0, #0xc8
+ str r1, [r0]
+ add r5, #0x39
+ ldrb r0, [r5]
+ mov r1, #2
+ lsl r1, r1, #0x12
+ str r0, [r4, #8]
+ str r2, [r4]
+ mov r0, #0xe
+ str r1, [r4, #0xc]
+ lsl r0, r0, #0x10
+ str r0, [r4, #0x10]
+ str r1, [r4, #0x18]
+ lsl r0, r2, #0xe
+ str r0, [r4, #0x1c]
+ lsr r0, r1, #7
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ lsr r0, r1, #8
+ str r0, [r4, #0x3c]
+ str r0, [r4, #0x40]
+ add r1, r4, #0
+ str r2, [r4, #0x64]
+ mov r0, #0
+ str r0, [r4, #0x60]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, #0xc
+ bl FUN_02020044
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xc
+ add r1, #0x18
+ add r2, sp, #0xc
+ bl VEC_Subtract
+ add r1, r4, #0
+ mov r3, #6
+ add r0, sp, #0
+ add r1, #0x48
+ add r2, sp, #0xc
+ lsl r3, r3, #0xe
+ bl MOD65_021D89C4
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020200EC
+ add r0, r4, #0
+ add r0, #0xc4
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r1, #0x30
+ bl FUN_02020064
+ ldr r2, _021D921C ; =MOD65_021D9380
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD65_021D9100
+ ldr r2, _021D9220 ; =MOD65_021D94AC
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD65_021D9100
+ ldr r2, _021D9224 ; =MOD65_021D967C
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD65_021D9100
+ ldr r2, _021D9228 ; =MOD65_021D97C4
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD65_021D9100
+ mov r0, #1
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_021D921C: .word MOD65_021D9380
+_021D9220: .word MOD65_021D94AC
+_021D9224: .word MOD65_021D967C
+_021D9228: .word MOD65_021D97C4
+ thumb_func_end MOD65_021D9150
+
+ thumb_func_start MOD65_021D922C
+MOD65_021D922C: ; 0x021D922C
+ ldr r0, [r1, #4]
+ cmp r0, #0
+ beq _021D9236
+ mov r0, #1
+ bx lr
+_021D9236:
+ mov r0, #2
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD65_021D922C
+
+ thumb_func_start MOD65_021D923C
+MOD65_021D923C: ; 0x021D923C
+ push {r3, lr}
+ add r1, r0, #0
+ add r0, #0x39
+ ldrb r0, [r0]
+ cmp r0, #1
+ ldr r0, [r1]
+ bne _021D925A
+ str r0, [sp]
+ ldrh r1, [r1, #0x34]
+ mov r0, #0xb
+ mov r2, #0
+ mov r3, #0x7f
+ bl FUN_020056AC
+ b _021D9268
+_021D925A:
+ str r0, [sp]
+ ldrh r1, [r1, #0x34]
+ mov r0, #0
+ add r2, r0, #0
+ mov r3, #0x7f
+ bl FUN_020056AC
+_021D9268:
+ mov r0, #3
+ pop {r3, pc}
+ thumb_func_end MOD65_021D923C
+
+ thumb_func_start MOD65_021D926C
+MOD65_021D926C: ; 0x021D926C
+ push {r3, lr}
+ bl FUN_02005670
+ cmp r0, #0
+ beq _021D927A
+ mov r0, #3
+ pop {r3, pc}
+_021D927A:
+ mov r0, #0
+ bl FUN_02005614
+ mov r0, #4
+ pop {r3, pc}
+ thumb_func_end MOD65_021D926C
+
+ thumb_func_start MOD65_021D9284
+MOD65_021D9284: ; 0x021D9284
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ add r0, #0x68
+ mov r1, #0
+ mov r2, #0x5c
+ bl MI_CpuFill8
+ ldr r2, _021D92AC ; =MOD65_021D99C0
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD65_021D9100
+ ldr r2, _021D92B0 ; =MOD65_021D9B0C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD65_021D9100
+ mov r0, #5
+ pop {r4, pc}
+ .align 2, 0
+_021D92AC: .word MOD65_021D99C0
+_021D92B0: .word MOD65_021D9B0C
+ thumb_func_end MOD65_021D9284
+
+ thumb_func_start MOD65_021D92B4
+MOD65_021D92B4: ; 0x021D92B4
+ ldr r0, [r1, #4]
+ cmp r0, #0
+ beq _021D92BE
+ mov r0, #5
+ bx lr
+_021D92BE:
+ mov r0, #6
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD65_021D92B4
+
+ thumb_func_start MOD65_021D92C4
+MOD65_021D92C4: ; 0x021D92C4
+ push {r4, lr}
+ sub sp, #0x10
+ mov r1, #1
+ add r4, r0, #0
+ add r0, #0x6c
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_0200D0BC
+ add r0, r4, #0
+ add r0, #0x6c
+ mov r1, #0xff
+ bl FUN_02019620
+ ldr r0, [r4, #0x20]
+ bl FUN_02021A4C
+ mov r0, #1
+ str r0, [sp]
+ mov r3, #2
+ str r3, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r2, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_0200ABB4
+ add r2, r4, #0
+ add r2, #0x39
+ ldrb r2, [r2]
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ lsl r2, r2, #2
+ add r2, r4, r2
+ ldr r2, [r2, #0x24]
+ bl FUN_0200B7B8
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ ldrb r0, [r0, #0xa]
+ str r0, [sp, #4]
+ ldr r0, _021D9334 ; =0x0001020F
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x20]
+ add r0, #0x6c
+ bl FUN_0201BDE0
+ strh r0, [r4, #0xc]
+ mov r0, #0
+ strh r0, [r4, #0xe]
+ mov r0, #7
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D9334: .word 0x0001020F
+ thumb_func_end MOD65_021D92C4
+
+ thumb_func_start MOD65_021D9338
+MOD65_021D9338: ; 0x021D9338
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r0, [r4, #0xc]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _021D934E
+ mov r0, #7
+ pop {r4, pc}
+_021D934E:
+ ldr r0, _021D937C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _021D9366
+ ldrh r1, [r4, #0xe]
+ add r0, r1, #1
+ strh r0, [r4, #0xe]
+ cmp r1, #0x5a
+ bhs _021D9366
+ mov r0, #7
+ pop {r4, pc}
+_021D9366:
+ add r0, r4, #0
+ add r0, #0x6c
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r4, #0x6c
+ add r0, r4, #0
+ bl FUN_02019570
+ mov r0, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D937C: .word 0x021C48B8
+ thumb_func_end MOD65_021D9338
+
+ thumb_func_start MOD65_021D9380
+MOD65_021D9380: ; 0x021D9380
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r1, #0
+ ldr r4, [r6, #0x14]
+ add r7, r0, #0
+ mov r0, #0x18
+ add r5, r4, #0
+ str r0, [r6, #4]
+ mov r0, #1
+ add r5, #0xc
+ lsl r0, r0, #0xc
+ str r0, [r5, #0x24]
+ str r0, [r5, #0x28]
+ lsr r0, r0, #1
+ str r0, [r5, #0x30]
+ str r0, [r5, #0x34]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0x24
+ add r1, #0x30
+ add r2, sp, #0xc
+ bl VEC_Subtract
+ ldr r0, [r6, #4]
+ cmp r0, #0
+ ble _021D93C6
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D93D4
+_021D93C6:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D93D4:
+ bl _ffix
+ add r1, r5, #0
+ add r3, r0, #0
+ add r0, sp, #0
+ add r1, #0x3c
+ add r2, sp, #0xc
+ bl MOD65_021D89C4
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020200A0
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020200EC
+ add r4, #0xc4
+ add r5, #0x24
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl FUN_02020064
+ ldr r1, _021D9418 ; =MOD65_021D941C
+ add r0, r7, #0
+ bl FUN_0201B6C4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9418: .word MOD65_021D941C
+ thumb_func_end MOD65_021D9380
+
+ thumb_func_start MOD65_021D941C
+MOD65_021D941C: ; 0x021D941C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ add r1, sp, #0
+ mov r0, #0
+ str r0, [r1]
+ add r4, r6, #0
+ str r0, [r1, #4]
+ str r0, [r1, #8]
+ add r4, #0xc
+ ldr r0, [r4, #0x3c]
+ ldr r2, [r5, #0xc]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ add r2, r0, #0
+ mov r0, #2
+ add r3, r1, #0
+ mov r7, #0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r3, r7
+ ldr r1, [r4, #0x24]
+ lsl r2, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r2
+ sub r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r4, #0x40]
+ ldr r2, [r5, #0xc]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r3, #2
+ ldr r2, [r4, #0x28]
+ add r4, r7, #0
+ lsl r3, r3, #0xa
+ add r3, r0, r3
+ adc r1, r4
+ lsl r0, r1, #0x14
+ lsr r1, r3, #0xc
+ orr r1, r0
+ sub r0, r2, r1
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, sp, #0
+ bl FUN_02020064
+ mov r0, #1
+ ldr r1, [r5, #0xc]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [r5, #0xc]
+ ldr r0, [r5, #4]
+ sub r0, r0, #1
+ str r0, [r5, #4]
+ bne _021D94A8
+ add r6, #0xc4
+ ldr r0, [r6]
+ add r1, r7, #0
+ bl FUN_020200A0
+ add r0, r5, #0
+ bl MOD65_021D9130
+_021D94A8:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD65_021D941C
+
+ thumb_func_start MOD65_021D94AC
+MOD65_021D94AC: ; 0x021D94AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ add r7, r0, #0
+ add r3, sp, #0xc
+ mov r0, #0
+ str r0, [r3]
+ str r0, [r3, #4]
+ str r0, [r3, #8]
+ mov r2, #0x18
+ mov r1, #2
+ add r4, r6, #0
+ mov r0, #0xe
+ str r2, [r5, #4]
+ lsl r1, r1, #0x12
+ add r4, #0xc
+ str r1, [r6, #0xc]
+ lsl r0, r0, #0x10
+ str r0, [r4, #4]
+ str r1, [r4, #0xc]
+ lsl r0, r2, #0xe
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ add r0, #0xc
+ add r1, r4, #0
+ add r2, r3, #0
+ bl VEC_Subtract
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ ble _021D94FE
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D950C
+_021D94FE:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D950C:
+ bl _ffix
+ add r1, r4, #0
+ add r3, r0, #0
+ add r0, sp, #0
+ add r1, #0x18
+ add r2, sp, #0xc
+ bl MOD65_021D89C4
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ ble _021D9536
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D9544
+_021D9536:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D9544:
+ bl _ffix
+ add r1, r0, #0
+ mov r0, #0x2d
+ lsl r0, r0, #0xe
+ bl FX_Div
+ str r0, [r4, #0x48]
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ ble _021D956C
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D957A
+_021D956C:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D957A:
+ bl _ffix
+ add r1, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ bl FX_Div
+ add r6, #0xc4
+ str r0, [r4, #0x4c]
+ ldr r0, [r6]
+ add r1, r4, #0
+ bl FUN_02020044
+ ldr r1, _021D95A0 ; =MOD65_021D95A4
+ add r0, r7, #0
+ bl FUN_0201B6C4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D95A0: .word MOD65_021D95A4
+ thumb_func_end MOD65_021D94AC
+
+ thumb_func_start MOD65_021D95A4
+MOD65_021D95A4: ; 0x021D95A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ ldr r2, [r5, #0xc]
+ add r4, r6, #0
+ add r4, #0xc
+ ldr r0, [r4, #0x18]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ add r2, r0, #0
+ mov r0, #2
+ add r3, r1, #0
+ mov r7, #0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r3, r7
+ ldr r1, [r6, #0xc]
+ lsl r2, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r2
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r4, #0x1c]
+ ldr r2, [r5, #0xc]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ add r2, r0, #0
+ mov r0, #2
+ add r3, r1, #0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r3, r7
+ ldr r1, [r4, #4]
+ lsl r2, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r2
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x48]
+ ldr r2, [r5, #0xc]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ add r3, r7, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ lsl r0, r1, #4
+ lsr r0, r0, #0x10
+ bl FUN_0201B970
+ ldr r2, _021D9678 ; =0xFFFC0000
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x12
+ bl _ll_mul
+ add r3, r7, #0
+ mov r7, #2
+ add r2, r1, #0
+ lsl r7, r7, #0xa
+ add r0, r0, r7
+ adc r2, r3
+ lsl r2, r2, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r2
+ asr r4, r0, #0x1f
+ lsr r2, r0, #0x14
+ lsl r4, r4, #0xc
+ orr r4, r2
+ lsl r0, r0, #0xc
+ add r2, r0, r7
+ adc r4, r3
+ ldr r1, [sp, #4]
+ lsl r0, r4, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r0
+ add r0, r1, r2
+ add r6, #0xc4
+ str r0, [sp, #4]
+ ldr r0, [r6]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r1, [r5, #0xc]
+ lsl r0, r7, #1
+ add r0, r1, r0
+ str r0, [r5, #0xc]
+ ldr r0, [r5, #4]
+ sub r0, r0, #1
+ str r0, [r5, #4]
+ bne _021D9674
+ add r0, r5, #0
+ bl MOD65_021D9130
+_021D9674:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9678: .word 0xFFFC0000
+ thumb_func_end MOD65_021D95A4
+
+ thumb_func_start MOD65_021D967C
+MOD65_021D967C: ; 0x021D967C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ add r7, r0, #0
+ add r4, r6, #0
+ mov r1, #0x18
+ mov r0, #1
+ add r4, #0x68
+ str r1, [r5, #4]
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x28]
+ lsl r0, r1, #8
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x30
+ add r1, #0x24
+ add r2, sp, #0xc
+ bl VEC_Subtract
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ ble _021D96C2
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D96D0
+_021D96C2:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D96D0:
+ bl _ffix
+ add r4, #0x3c
+ add r3, r0, #0
+ add r0, sp, #0
+ add r1, r4, #0
+ add r2, sp, #0xc
+ bl MOD65_021D89C4
+ add r0, r6, #0
+ add r0, #0xc8
+ mov r1, #0xc
+ add r2, r1, #0
+ ldr r0, [r0]
+ add r2, #0xf4
+ bl FUN_02007558
+ add r6, #0xc8
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r6]
+ add r2, #0xf3
+ bl FUN_02007558
+ ldr r1, _021D970C ; =MOD65_021D9710
+ add r0, r7, #0
+ bl FUN_0201B6C4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D970C: .word MOD65_021D9710
+ thumb_func_end MOD65_021D967C
+
+ thumb_func_start MOD65_021D9710
+MOD65_021D9710: ; 0x021D9710
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ add r4, r6, #0
+ add r4, #0x68
+ str r0, [sp, #4]
+ asr r7, r0, #0x1f
+ ldr r0, [r4, #0x40]
+ ldr r2, [sp, #4]
+ asr r1, r0, #0x1f
+ add r3, r7, #0
+ bl _ll_mul
+ mov r3, #2
+ add r2, r0, #0
+ lsl r3, r3, #0xa
+ add r3, r2, r3
+ ldr r2, _021D97C0 ; =0x00000000
+ ldr r0, [r4, #0x28]
+ adc r1, r2
+ lsr r2, r3, #0xc
+ lsl r1, r1, #0x14
+ orr r2, r1
+ add r0, r0, r2
+ str r0, [sp]
+ ldr r0, [r4, #0x3c]
+ ldr r2, [sp, #4]
+ asr r1, r0, #0x1f
+ add r3, r7, #0
+ bl _ll_mul
+ mov r2, #2
+ add r3, r0, #0
+ add r0, r6, #0
+ add r7, r1, #0
+ add r0, #0xc8
+ lsl r2, r2, #0xa
+ mov r1, #0xc
+ add r3, r3, r2
+ ldr r2, _021D97C0 ; =0x00000000
+ ldr r4, [r4, #0x24]
+ adc r7, r2
+ lsl r2, r7, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r2
+ add r2, r4, r3
+ ldr r0, [r0]
+ asr r2, r2, #4
+ bl FUN_02007558
+ add r0, r6, #0
+ add r0, #0xc8
+ ldr r2, [sp]
+ ldr r0, [r0]
+ mov r1, #0xd
+ asr r2, r2, #4
+ bl FUN_02007558
+ mov r0, #1
+ ldr r1, [r5, #0xc]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [r5, #0xc]
+ ldr r0, [r5, #4]
+ sub r0, r0, #1
+ str r0, [r5, #4]
+ bne _021D97BA
+ add r0, r6, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #0
+ mov r2, #0x80
+ bl FUN_02007558
+ add r6, #0xc8
+ ldr r0, [r6]
+ mov r1, #1
+ mov r2, #0x60
+ bl FUN_02007558
+ add r0, r5, #0
+ bl MOD65_021D9130
+_021D97BA:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D97C0: .word 0x00000000
+ thumb_func_end MOD65_021D9710
+
+ thumb_func_start MOD65_021D97C4
+MOD65_021D97C4: ; 0x021D97C4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r1, #0
+ ldr r4, [r6, #0x14]
+ add r7, r0, #0
+ mov r0, #0x18
+ mov r1, #2
+ add r5, r4, #0
+ str r0, [r6, #4]
+ lsl r1, r1, #0x12
+ add r5, #0x68
+ str r1, [r4, #0x68]
+ lsl r0, r0, #0xe
+ str r0, [r5, #4]
+ mov r0, #7
+ str r1, [r5, #0xc]
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x10]
+ add r0, r5, #0
+ add r0, #0xc
+ add r1, r5, #0
+ add r2, sp, #0xc
+ bl VEC_Subtract
+ ldr r0, [r6, #4]
+ cmp r0, #0
+ ble _021D980C
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D981A
+_021D980C:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D981A:
+ bl _ffix
+ add r1, r5, #0
+ add r3, r0, #0
+ add r0, sp, #0
+ add r1, #0x18
+ add r2, sp, #0xc
+ bl MOD65_021D89C4
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r2, [r5]
+ ldr r0, [r0]
+ mov r1, #0
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ add r4, #0xc8
+ ldr r2, [r5, #4]
+ ldr r0, [r4]
+ mov r1, #1
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ ldr r1, _021D9858 ; =MOD65_021D985C
+ add r0, r7, #0
+ bl FUN_0201B6C4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9858: .word MOD65_021D985C
+ thumb_func_end MOD65_021D97C4
+
+ thumb_func_start MOD65_021D985C
+MOD65_021D985C: ; 0x021D985C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ ldr r7, [r5, #0xc]
+ add r4, r6, #0
+ str r0, [sp]
+ asr r0, r7, #0x1f
+ str r0, [sp, #8]
+ add r4, #0x68
+ ldr r0, [r4, #0x1c]
+ ldr r3, [sp, #8]
+ asr r1, r0, #0x1f
+ add r2, r7, #0
+ bl _ll_mul
+ mov r3, #2
+ add r2, r0, #0
+ lsl r3, r3, #0xa
+ add r3, r2, r3
+ ldr r2, _021D9990 ; =0x00000000
+ ldr r0, [r4, #4]
+ adc r1, r2
+ lsr r2, r3, #0xc
+ lsl r1, r1, #0x14
+ orr r2, r1
+ add r0, r0, r2
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x18]
+ ldr r3, [sp, #8]
+ asr r1, r0, #0x1f
+ add r2, r7, #0
+ bl _ll_mul
+ mov ip, r0
+ ldr r2, [r6, #0x68]
+ add r7, r1, #0
+ str r2, [sp, #0xc]
+ mov r2, #2
+ add r0, r6, #0
+ add r0, #0xc8
+ mov r1, #0
+ mov r3, ip
+ lsl r2, r2, #0xa
+ add r2, r3, r2
+ adc r7, r1
+ lsl r3, r7, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r3
+ ldr r3, [sp, #0xc]
+ ldr r0, [r0]
+ add r2, r3, r2
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ add r0, r6, #0
+ add r0, #0xc8
+ ldr r2, [sp, #4]
+ ldr r0, [r0]
+ mov r1, #1
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ add r0, r4, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ sub r0, r0, #4
+ add r1, r0, #0
+ mul r1, r0
+ mov r0, #0x10
+ sub r0, r0, r1
+ neg r0, r0
+ cmp r0, #0
+ ble _021D9902
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D9910
+_021D9902:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D9910:
+ bl _ffix
+ ldr r2, _021D9994 ; =0x00001666
+ asr r1, r0, #0x1f
+ mov r3, #0
+ bl _ll_mul
+ add r3, r1, #0
+ mov r1, #4
+ add r7, r0, #0
+ add r0, r6, #0
+ add r0, #0xc8
+ lsl r2, r1, #9
+ add r7, r7, r2
+ ldr r2, _021D9990 ; =0x00000000
+ ldr r0, [r0]
+ adc r3, r2
+ lsl r2, r3, #0x14
+ lsr r3, r7, #0xc
+ orr r3, r2
+ asr r2, r3, #0xc
+ bl FUN_02007558
+ add r0, r4, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x50
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ cmp r0, #8
+ bls _021D995E
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+_021D995E:
+ mov r0, #1
+ ldr r1, [r5, #0xc]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [r5, #0xc]
+ ldr r1, [r5, #4]
+ sub r0, r1, #1
+ str r0, [r5, #4]
+ cmp r1, #0
+ bne _021D998C
+ add r6, #0xc8
+ ldr r0, [r6]
+ mov r1, #4
+ mov r2, #0
+ bl FUN_02007558
+ mov r0, #0
+ add r4, #0x50
+ strh r0, [r4]
+ ldr r0, [sp]
+ ldr r1, _021D9998 ; =MOD65_021D999C
+ bl FUN_0201B6C4
+_021D998C:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9990: .word 0x00000000
+_021D9994: .word 0x00001666
+_021D9998: .word MOD65_021D999C
+ thumb_func_end MOD65_021D985C
+
+ thumb_func_start MOD65_021D999C
+MOD65_021D999C: ; 0x021D999C
+ push {r3, lr}
+ ldr r3, [r1, #0x14]
+ add r3, #0x68
+ add r0, r3, #0
+ add r0, #0x50
+ ldrh r2, [r0]
+ add r0, r3, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ add r3, #0x50
+ add r0, r0, #1
+ strh r0, [r3]
+ cmp r2, #4
+ blo _021D99BE
+ add r0, r1, #0
+ bl MOD65_021D9130
+_021D99BE:
+ pop {r3, pc}
+ thumb_func_end MOD65_021D999C
+
+ thumb_func_start MOD65_021D99C0
+MOD65_021D99C0: ; 0x021D99C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ add r7, r0, #0
+ add r4, r6, #0
+ mov r1, #8
+ mov r0, #6
+ add r4, #0x68
+ str r1, [r5, #4]
+ lsl r0, r0, #0xa
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x28]
+ lsl r0, r1, #9
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x30
+ add r1, #0x24
+ add r2, sp, #0xc
+ bl VEC_Subtract
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ ble _021D9A06
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D9A14
+_021D9A06:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D9A14:
+ bl _ffix
+ add r4, #0x3c
+ add r3, r0, #0
+ add r0, sp, #0
+ add r1, r4, #0
+ add r2, sp, #0xc
+ bl MOD65_021D89C4
+ add r0, r6, #0
+ add r0, #0xc8
+ mov r1, #0xc
+ ldr r0, [r0]
+ lsl r2, r1, #5
+ bl FUN_02007558
+ add r6, #0xc8
+ mov r2, #6
+ ldr r0, [r6]
+ mov r1, #0xd
+ lsl r2, r2, #6
+ bl FUN_02007558
+ ldr r1, _021D9A50 ; =MOD65_021D9A54
+ add r0, r7, #0
+ bl FUN_0201B6C4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9A50: .word MOD65_021D9A54
+ thumb_func_end MOD65_021D99C0
+
+ thumb_func_start MOD65_021D9A54
+MOD65_021D9A54: ; 0x021D9A54
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ ldr r0, [r5, #0xc]
+ add r4, r6, #0
+ add r4, #0x68
+ str r0, [sp, #4]
+ asr r7, r0, #0x1f
+ ldr r0, [r4, #0x40]
+ ldr r2, [sp, #4]
+ asr r1, r0, #0x1f
+ add r3, r7, #0
+ bl _ll_mul
+ mov r3, #2
+ add r2, r0, #0
+ lsl r3, r3, #0xa
+ add r3, r2, r3
+ ldr r2, _021D9B08 ; =0x00000000
+ ldr r0, [r4, #0x28]
+ adc r1, r2
+ lsr r2, r3, #0xc
+ lsl r1, r1, #0x14
+ orr r2, r1
+ add r0, r0, r2
+ str r0, [sp]
+ ldr r0, [r4, #0x3c]
+ ldr r2, [sp, #4]
+ asr r1, r0, #0x1f
+ add r3, r7, #0
+ bl _ll_mul
+ mov r2, #2
+ add r3, r0, #0
+ add r0, r6, #0
+ add r7, r1, #0
+ add r0, #0xc8
+ lsl r2, r2, #0xa
+ mov r1, #0xc
+ add r3, r3, r2
+ ldr r2, _021D9B08 ; =0x00000000
+ ldr r4, [r4, #0x24]
+ adc r7, r2
+ lsl r2, r7, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r2
+ add r2, r4, r3
+ ldr r0, [r0]
+ asr r2, r2, #4
+ bl FUN_02007558
+ add r0, r6, #0
+ add r0, #0xc8
+ ldr r2, [sp]
+ ldr r0, [r0]
+ mov r1, #0xd
+ asr r2, r2, #4
+ bl FUN_02007558
+ mov r0, #1
+ ldr r1, [r5, #0xc]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [r5, #0xc]
+ ldr r0, [r5, #4]
+ sub r0, r0, #1
+ str r0, [r5, #4]
+ bne _021D9B02
+ add r0, r6, #0
+ add r0, #0xc8
+ mov r1, #0xc
+ add r2, r1, #0
+ ldr r0, [r0]
+ add r2, #0xf4
+ bl FUN_02007558
+ add r6, #0xc8
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r6]
+ add r2, #0xf3
+ bl FUN_02007558
+ add r0, r5, #0
+ bl MOD65_021D9130
+_021D9B02:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9B08: .word 0x00000000
+ thumb_func_end MOD65_021D9A54
+
+ thumb_func_start MOD65_021D9B0C
+MOD65_021D9B0C: ; 0x021D9B0C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ add r7, r0, #0
+ mov r0, #8
+ add r4, r6, #0
+ str r0, [r5, #4]
+ lsl r1, r0, #0x10
+ mov r0, #7
+ add r4, #0x68
+ str r1, [r6, #0x68]
+ lsl r0, r0, #0x10
+ str r0, [r4, #4]
+ mov r0, #6
+ str r1, [r4, #0xc]
+ lsl r0, r0, #0x10
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ add r0, #0xc
+ add r1, r4, #0
+ add r2, sp, #0xc
+ bl VEC_Subtract
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ ble _021D9B54
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D9B62
+_021D9B54:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D9B62:
+ bl _ffix
+ add r1, r4, #0
+ add r3, r0, #0
+ add r0, sp, #0
+ add r1, #0x18
+ add r2, sp, #0xc
+ bl MOD65_021D89C4
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ ble _021D9B8C
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D9B9A
+_021D9B8C:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D9B9A:
+ bl _ffix
+ add r1, r0, #0
+ mov r0, #0x2d
+ lsl r0, r0, #0xe
+ bl FX_Div
+ str r0, [r4, #0x48]
+ add r0, r6, #0
+ add r0, #0xc8
+ ldr r2, [r4]
+ ldr r0, [r0]
+ mov r1, #0
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ add r6, #0xc8
+ ldr r2, [r4, #4]
+ ldr r0, [r6]
+ mov r1, #1
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ ldr r1, _021D9BD4 ; =MOD65_021D9BD8
+ add r0, r7, #0
+ bl FUN_0201B6C4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9BD4: .word MOD65_021D9BD8
+ thumb_func_end MOD65_021D9B0C
+
+ thumb_func_start MOD65_021D9BD8
+MOD65_021D9BD8: ; 0x021D9BD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ ldr r6, [r4, #0x14]
+ ldr r7, [r4, #0xc]
+ add r5, r6, #0
+ str r0, [sp]
+ asr r0, r7, #0x1f
+ str r0, [sp, #8]
+ add r5, #0x68
+ ldr r0, [r5, #0x1c]
+ ldr r3, [sp, #8]
+ asr r1, r0, #0x1f
+ add r2, r7, #0
+ bl _ll_mul
+ mov r3, #2
+ add r2, r0, #0
+ lsl r3, r3, #0xa
+ add r3, r2, r3
+ ldr r2, _021D9CD4 ; =0x00000000
+ ldr r0, [r5, #4]
+ adc r1, r2
+ lsr r2, r3, #0xc
+ lsl r1, r1, #0x14
+ orr r2, r1
+ add r0, r0, r2
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ ldr r3, [sp, #8]
+ asr r1, r0, #0x1f
+ add r2, r7, #0
+ bl _ll_mul
+ mov ip, r0
+ ldr r2, [r6, #0x68]
+ add r7, r1, #0
+ str r2, [sp, #0xc]
+ mov r2, #2
+ add r0, r6, #0
+ add r0, #0xc8
+ mov r1, #0
+ mov r3, ip
+ lsl r2, r2, #0xa
+ add r2, r3, r2
+ adc r7, r1
+ lsl r3, r7, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r3
+ ldr r3, [sp, #0xc]
+ ldr r0, [r0]
+ add r2, r3, r2
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ add r0, r6, #0
+ add r0, #0xc8
+ ldr r2, [sp, #4]
+ ldr r0, [r0]
+ mov r1, #1
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ ldr r0, [r5, #0x48]
+ ldr r2, [r4, #0xc]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ lsl r0, r1, #4
+ lsr r0, r0, #0x10
+ bl FUN_0201B970
+ ldr r2, _021D9CD8 ; =0xFFFFA000
+ asr r1, r0, #0x1f
+ asr r3, r2, #0xf
+ bl _ll_mul
+ add r5, r1, #0
+ mov r1, #4
+ add r3, r0, #0
+ add r0, r6, #0
+ add r0, #0xc8
+ mov r7, #0
+ lsl r2, r1, #9
+ add r2, r3, r2
+ adc r5, r7
+ lsl r3, r5, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r3
+ ldr r0, [r0]
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ add r2, r4, #0
+ add r2, #0xc
+ mov r0, #1
+ ldr r1, [r2]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [r2]
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ bne _021D9CCE
+ add r6, #0xc8
+ ldr r0, [r6]
+ mov r1, #4
+ add r2, r7, #0
+ bl FUN_02007558
+ ldr r0, [sp]
+ ldr r1, _021D9CDC ; =MOD65_021D9CE0
+ bl FUN_0201B6C4
+_021D9CCE:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9CD4: .word 0x00000000
+_021D9CD8: .word 0xFFFFA000
+_021D9CDC: .word MOD65_021D9CE0
+ thumb_func_end MOD65_021D9BD8
+
+ thumb_func_start MOD65_021D9CE0
+MOD65_021D9CE0: ; 0x021D9CE0
+ push {r3, lr}
+ ldr r3, [r1, #4]
+ add r2, r3, #1
+ str r2, [r1, #4]
+ cmp r3, #4
+ blt _021D9D10
+ ldr r2, [r1, #0x14]
+ ldr r2, [r2, #8]
+ cmp r2, #0
+ beq _021D9CFA
+ cmp r2, #1
+ beq _021D9D02
+ b _021D9D0A
+_021D9CFA:
+ ldr r1, _021D9D14 ; =MOD65_021D9D1C
+ bl FUN_0201B6C4
+ pop {r3, pc}
+_021D9D02:
+ ldr r1, _021D9D18 ; =MOD65_021D9DFC
+ bl FUN_0201B6C4
+ pop {r3, pc}
+_021D9D0A:
+ add r0, r1, #0
+ bl MOD65_021D9130
+_021D9D10:
+ pop {r3, pc}
+ nop
+_021D9D14: .word MOD65_021D9D1C
+_021D9D18: .word MOD65_021D9DFC
+ thumb_func_end MOD65_021D9CE0
+
+ thumb_func_start MOD65_021D9D1C
+MOD65_021D9D1C: ; 0x021D9D1C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ add r0, #0x68
+ mov r2, #0x5c
+ bl MI_CpuFill8
+ mov r0, #3
+ str r0, [r4, #4]
+ ldr r1, _021D9D3C ; =MOD65_021D9D40
+ add r0, r5, #0
+ bl FUN_0201B6C4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D9D3C: .word MOD65_021D9D40
+ thumb_func_end MOD65_021D9D1C
+
+ thumb_func_start MOD65_021D9D40
+MOD65_021D9D40: ; 0x021D9D40
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ ldr r7, [r5, #0x14]
+ add r4, r7, #0
+ add r4, #0x68
+ add r0, r4, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ sub r0, r0, #4
+ add r1, r0, #0
+ mul r1, r0
+ mov r0, #0x10
+ sub r0, r0, r1
+ neg r0, r0
+ cmp r0, #0
+ ble _021D9D72
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D9D80
+_021D9D72:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D9D80:
+ bl _ffix
+ ldr r2, _021D9DF4 ; =0x00001666
+ asr r1, r0, #0x1f
+ mov r3, #0
+ bl _ll_mul
+ add r6, r1, #0
+ mov r1, #4
+ add r3, r0, #0
+ add r0, r7, #0
+ add r0, #0xc8
+ lsl r2, r1, #9
+ add r3, r3, r2
+ ldr r2, _021D9DF8 ; =0x00000000
+ ldr r0, [r0]
+ adc r6, r2
+ lsl r2, r6, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r2
+ asr r2, r3, #0xc
+ bl FUN_02007558
+ add r1, r4, #0
+ mov r0, #0
+ add r1, #0x52
+ strh r0, [r1]
+ add r1, r4, #0
+ add r1, #0x50
+ ldrh r1, [r1]
+ add r2, r1, #1
+ add r1, r4, #0
+ add r1, #0x50
+ strh r2, [r1]
+ add r1, r4, #0
+ add r1, #0x50
+ ldrh r1, [r1]
+ cmp r1, #8
+ bls _021D9DD8
+ add r4, #0x50
+ strh r0, [r4]
+ ldr r0, [r5, #4]
+ sub r0, r0, #1
+ str r0, [r5, #4]
+_021D9DD8:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ bne _021D9DF0
+ add r7, #0xc8
+ ldr r0, [r7]
+ mov r1, #4
+ mov r2, #0
+ bl FUN_02007558
+ add r0, r5, #0
+ bl MOD65_021D9130
+_021D9DF0:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9DF4: .word 0x00001666
+_021D9DF8: .word 0x00000000
+ thumb_func_end MOD65_021D9D40
+
+ thumb_func_start MOD65_021D9DFC
+MOD65_021D9DFC: ; 0x021D9DFC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ add r0, #0x68
+ mov r2, #0x5c
+ bl MI_CpuFill8
+ mov r0, #0x20
+ str r0, [r4, #4]
+ ldr r1, _021D9E1C ; =MOD65_021D9E20
+ add r0, r5, #0
+ bl FUN_0201B6C4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D9E1C: .word MOD65_021D9E20
+ thumb_func_end MOD65_021D9DFC
+
+ thumb_func_start MOD65_021D9E20
+MOD65_021D9E20: ; 0x021D9E20
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r6, [r5, #0x14]
+ add r4, r6, #0
+ add r4, #0x68
+ add r0, r4, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ bl FUN_0201B970
+ asr r1, r0, #0x1f
+ lsr r2, r0, #0x13
+ lsl r1, r1, #0xd
+ orr r1, r2
+ mov r2, #2
+ lsl r3, r0, #0xd
+ mov r0, #0
+ lsl r2, r2, #0xa
+ add r2, r3, r2
+ adc r1, r0
+ lsl r1, r1, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r1
+ add r1, r4, #0
+ add r1, #0x50
+ ldrh r3, [r1]
+ ldr r1, _021D9E94 ; =0x00000167
+ cmp r3, r1
+ bls _021D9E5C
+ b _021D9E64
+_021D9E5C:
+ add r0, r4, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ add r0, #0x5a
+_021D9E64:
+ add r4, #0x50
+ strh r0, [r4]
+ add r0, r6, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #3
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ ldr r0, [r5, #4]
+ sub r0, r0, #1
+ str r0, [r5, #4]
+ bne _021D9E90
+ add r6, #0xc8
+ ldr r0, [r6]
+ mov r1, #3
+ mov r2, #0
+ bl FUN_02007558
+ add r0, r5, #0
+ bl MOD65_021D9130
+_021D9E90:
+ pop {r4, r5, r6, pc}
+ nop
+_021D9E94: .word 0x00000167
+ thumb_func_end MOD65_021D9E20
+
+ thumb_func_start MOD65_021D9E98
+MOD65_021D9E98: ; 0x021D9E98
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r4, r2, #0
+ mov r1, #0
+ mov r2, #0x1c
+ add r5, r0, #0
+ bl MI_CpuFill8
+ bl FUN_020BB7F4
+ bl G3X_Init
+ bl G3X_InitMtxStack
+ ldr r0, _021D9F34 ; =0x04000060
+ ldr r1, _021D9F38 ; =0xFFFFCFFD
+ ldrh r2, [r0]
+ ldr r3, _021D9F3C ; =0x0000CFFB
+ and r2, r1
+ strh r2, [r0]
+ ldrh r2, [r0]
+ and r2, r3
+ strh r2, [r0]
+ add r2, r1, #2
+ ldrh r6, [r0]
+ add r1, r1, #2
+ sub r3, #0x1c
+ and r6, r2
+ mov r2, #8
+ orr r2, r6
+ strh r2, [r0]
+ ldrh r2, [r0]
+ and r2, r1
+ mov r1, #0x10
+ orr r1, r2
+ strh r1, [r0]
+ ldrh r1, [r0]
+ and r1, r3
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl G3X_SetFog
+ mov r0, #0
+ ldr r2, _021D9F40 ; =0x00007FFF
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _021D9F44 ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _021D9F48 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD65_021D9FA0
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD65_021DA000
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r1, _021D9F4C ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #1
+ orr r0, r2
+ strh r0, [r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9F34: .word 0x04000060
+_021D9F38: .word 0xFFFFCFFD
+_021D9F3C: .word 0x0000CFFB
+_021D9F40: .word 0x00007FFF
+_021D9F44: .word 0x04000540
+_021D9F48: .word 0xBFFF0000
+_021D9F4C: .word 0x04000008
+ thumb_func_end MOD65_021D9E98
+
+ thumb_func_start MOD65_021D9F50
+MOD65_021D9F50: ; 0x021D9F50
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ ldr r2, _021D9F84 ; =0x04000440
+ mov r3, #0
+ add r1, r2, #0
+ str r3, [r2]
+ add r1, #0x14
+ str r3, [r1]
+ mov r0, #2
+ str r0, [r2]
+ str r3, [r1]
+ bl FUN_020B849C
+ bl FUN_020B02C8
+ ldr r0, [r4, #4]
+ bl FUN_02006ED4
+ ldr r0, _021D9F88 ; =0x04000540
+ mov r1, #1
+ str r1, [r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D9F84: .word 0x04000440
+_021D9F88: .word 0x04000540
+ thumb_func_end MOD65_021D9F50
+
+ thumb_func_start MOD65_021D9F8C
+MOD65_021D9F8C: ; 0x021D9F8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0201EB70
+ ldr r0, [r4, #4]
+ bl FUN_020072E8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD65_021D9F8C
+
+ thumb_func_start MOD65_021D9FA0
+MOD65_021D9FA0: ; 0x021D9FA0
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ ldr r5, _021D9FF8 ; =0x021DA41C
+ add r4, r0, #0
+ add r2, r1, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x10
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ add r1, sp, #8
+ str r0, [r3]
+ mov r0, #0
+ strh r0, [r1]
+ strh r0, [r1, #2]
+ strh r0, [r1, #4]
+ strh r0, [r1, #6]
+ add r0, r2, #0
+ bl FUN_0201EB64
+ str r0, [r4]
+ mov r1, #1
+ str r1, [sp]
+ ldr r0, [r4]
+ ldr r3, _021D9FFC ; =0x000005C1
+ str r0, [sp, #4]
+ add r0, sp, #0x10
+ lsl r1, r1, #0x10
+ add r2, sp, #8
+ bl FUN_0201ED10
+ mov r1, #0x19
+ ldr r2, [r4]
+ mov r0, #0
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ ldr r0, [r4]
+ bl FUN_0201EC88
+ ldr r0, [r4]
+ bl FUN_0201EB8C
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D9FF8: .word 0x021DA41C
+_021D9FFC: .word 0x000005C1
+ thumb_func_end MOD65_021D9FA0
+
+ thumb_func_start MOD65_021DA000
+MOD65_021DA000: ; 0x021DA000
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ add r0, r2, #0
+ add r4, r1, #0
+ bl FUN_02006D98
+ str r0, [r5, #4]
+ ldr r1, [r4]
+ add r0, sp, #0x10
+ mov r2, #2
+ bl FUN_02068B68
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #4]
+ add r1, sp, #0x10
+ mov r2, #0x80
+ mov r3, #0x60
+ bl FUN_020073A0
+ ldrb r2, [r4, #8]
+ mov r1, #0x23
+ add r6, r0, #0
+ bl FUN_02007558
+ str r6, [r5, #0x18]
+ add sp, #0x20
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD65_021DA000
+
+ .section .rodata
+ ; 0x021DA040
+ .incbin "baserom.nds", 0x2BBF60, 0x3E8
+
+ .section .data
+ ; 0x021DA440
+ .incbin "baserom.nds", 0x2BC360, 0xA0