summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-12 15:55:46 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-12 15:55:46 -0400
commit9c63afbeb9e5516ff99d86ca03b8ea4c88891861 (patch)
tree1eeec90c132f89f9704b526e8ca0ca6c4d04b040
parent6c8216cd6f18a8365c4787fb7416b8202ca80785 (diff)
Disassemble module 60
-rw-r--r--arm9/arm9.lcf28
-rw-r--r--arm9/asm/unk_02046030.s34
-rw-r--r--arm9/global.inc28
-rw-r--r--arm9/modules/05/asm/module_05.s4
-rw-r--r--arm9/modules/60/asm/module_60.s1491
-rw-r--r--arm9/undefined_syms.txt8
6 files changed, 1554 insertions, 39 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 132e8afa..d6086176 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -2413,12 +2413,23 @@ SECTIONS {
SDK_OVERLAY.MODULE_59.BSS_SIZE = SDK_OVERLAY.MODULE_59.BSS_END - SDK_OVERLAY.MODULE_59.BSS_START;
} >> MODULE_59
- .MODULE_60: {
+ .MODULE_60 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY_MODULE_60_ID = 60;
SDK_OVERLAY.MODULE_60.ID = 60;
SDK_OVERLAY.MODULE_60.START = .;
- FILE_2ACC00.o (.text) /* 0x2A8C00 */
+ module_60.o (.text)
+ module_60.o (.rodata)
+ module_60.o (.init)
+ SDK_OVERLAY.MODULE_60.SINIT_START = .;
+ module_60.o (.ctor)
+ module_60.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_60.SINIT_END = .;
+ . = ALIGN(32);
+ module_60.o (.sdata)
+ module_60.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_60.END = .;
SDK_OVERLAY.MODULE_60.SIZE = SDK_OVERLAY.MODULE_60.END - SDK_OVERLAY.MODULE_60.START;
@@ -2428,7 +2439,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_60.BSS_START = .;
- FILE_2ACC00.o (.bss)
+ module_60.o (.bss)
+ module_60.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_60.BSS_END = .;
SDK_OVERLAY.MODULE_60.BSS_SIZE = SDK_OVERLAY.MODULE_60.BSS_END - SDK_OVERLAY.MODULE_60.BSS_START;
@@ -3645,7 +3657,15 @@ SECTIONS {
WRITEW 59;
WRITEW 0;
- OVERLAY_TABLE(MODULE_60, 60)
+ WRITEW 60;
+ WRITEW ADDR(.MODULE_60);
+ WRITEW SDK_OVERLAY.MODULE_60.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_60.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_60.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_60.SINIT_END;
+ WRITEW 60;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_61, 61)
OVERLAY_TABLE(MODULE_62, 62)
OVERLAY_TABLE(MODULE_63, 63)
diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s
index 4221d249..4b46da9e 100644
--- a/arm9/asm/unk_02046030.s
+++ b/arm9/asm/unk_02046030.s
@@ -128316,7 +128316,7 @@ FUN_02083E4C: ; 0x02083E4C
add r0, r4, #0x0
mov r1, #0x3
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
ldr r1, _02083E8C ; =0x000043D0
mov r2, #0xe1
mov r0, #0x0
@@ -128381,7 +128381,7 @@ _02083ED0:
ldr r1, [r4, r1]
cmp r1, r0
bne _02083EFE
- bl FUN_021D917C
+ bl MOD53_021D917C
mov r1, #0xc6
lsl r1, r1, #0x2
ldr r1, [r4, r1]
@@ -128437,7 +128437,7 @@ _02083F3C:
add r0, r4, #0x0
mov r1, #0x9
add r2, r6, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F5A:
@@ -128447,14 +128447,14 @@ _02083F5A:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x8
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F6E:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x15
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083F78:
add sp, #0x4
pop {r3-r6, pc}
@@ -128474,7 +128474,7 @@ FUN_02083F88: ; 0x02083F88
add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D8B64
+ bl MOD53_021D8B64
bl FUN_02031190
cmp r0, #0x0
bne _02083FB6
@@ -128514,7 +128514,7 @@ FUN_02083FC4: ; 0x02083FC4
add r0, r4, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083FDA:
pop {r4, pc}
@@ -128674,12 +128674,12 @@ FUN_020840CC: ; 0x020840CC
add r0, r4, #0x0
bl FUN_02084270
add r0, r4, #0x0
- bl FUN_021D844C
+ bl MOD54_021D844C
lsl r2, r5, #0x18
add r0, r4, #0x0
mov r1, #0x19
lsr r2, r2, #0x18
- bl FUN_021D88E4
+ bl MOD54_021D88E4
mov r0, #0x1
add r1, r0, #0x0
bl FUN_020334E8
@@ -128693,12 +128693,12 @@ _02084110: .word 0x00000658
thumb_func_start FUN_02084114
FUN_02084114: ; 0x02084114
add r0, r3, #0x0
- ldr r3, _02084120 ; =FUN_021D88E4
+ ldr r3, _02084120 ; =MOD54_021D88E4
mov r1, #0x2
mov r2, #0x0
bx r3
nop
-_02084120: .word FUN_021D88E4 + 1
+_02084120: .word MOD54_021D88E4
thumb_func_start FUN_02084124
FUN_02084124: ; 0x02084124
@@ -128736,7 +128736,7 @@ _0208415E:
ldr r1, [r4, r1]
cmp r1, r0
bne _02084186
- bl FUN_021D8C24
+ bl MOD54_021D8C24
ldr r1, _02084208 ; =0x00004A48
ldr r1, [r4, r1]
cmp r1, r0
@@ -128792,7 +128792,7 @@ _020841C8:
add r0, r4, #0x0
mov r1, #0x8
add r2, r6, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841E6:
@@ -128802,14 +128802,14 @@ _020841E6:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x7
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841FA:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x13
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_02084204:
add sp, #0x4
pop {r3-r6, pc}
@@ -128824,7 +128824,7 @@ FUN_02084210: ; 0x02084210
add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D89CC
+ bl MOD54_021D89CC
bl FUN_02031190
cmp r0, #0x0
bne _0208422E
@@ -128855,7 +128855,7 @@ FUN_02084238: ; 0x02084238
add r0, r4, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_0208424E:
pop {r4, pc}
diff --git a/arm9/global.inc b/arm9/global.inc
index 7708d69f..22c120df 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2727,7 +2727,7 @@
.extern MOD04_021D83A8
.extern MOD04_021D83C0
.extern MOD04_021D83F0
-.extern FUN_021D844C
+.extern MOD54_021D844C
.extern MOD04_021D8494
.extern MOD04_021D8558
.extern MOD04_021D8590
@@ -2744,23 +2744,23 @@
.extern MOD04_021D8818
.extern MOD05_021D8820
.extern MOD04_021D8860
-.extern FUN_021D88E4
+.extern MOD54_021D88E4
.extern MOD04_021D8910
.extern MOD04_021D8944
-.extern FUN_021D89CC
+.extern MOD54_021D89CC
.extern MOD04_021D8A54
.extern MOD04_021D8A7C
-.extern FUN_021D8B64
+.extern MOD53_021D8B64
.extern MOD04_021D8BF0
.extern MOD04_021D8C08
-.extern FUN_021D8C24
+.extern MOD54_021D8C24
.extern MOD04_021D8C58
.extern MOD04_021D8C6C
.extern MOD04_021D8CC8
.extern MOD04_021D8CF0
.extern MOD04_021D8D04
.extern MOD04_021D8F08
-.extern FUN_021D917C
+.extern MOD53_021D917C
.extern MOD05_021D959C
.extern MOD05_021D967C
.extern MOD05_021D96F4
@@ -4329,8 +4329,8 @@
.extern MOD20_022524DC
.extern MOD19_022524F4
.extern MOD19_02252504
-.extern FUN_02254A68
-.extern FUN_02254AB8
+.extern MOD51_02254A68
+.extern MOD51_02254AB8
.extern FX_Atan
.extern G3X_SetEdgeColorTable
.extern G3X_SetFogTable
@@ -5652,6 +5652,18 @@
.extern FUN_020048BC
.extern FUN_02014630
.extern FUN_02024EF4
+.extern FUN_02004D60
+.extern FUN_020181EC
+.extern FUN_02024FD8
+.extern FUN_02024FE0
+.extern FUN_02025010
+.extern FUN_02025018
+.extern FUN_02025034
+.extern FUN_02025048
+.extern FUN_02025050
+.extern FUN_02025064
+.extern FUN_0202506C
+.extern FUN_0202508C
.extern SDK_OVERLAY_MODULE_00_ID
.extern SDK_OVERLAY_MODULE_01_ID
.extern SDK_OVERLAY_MODULE_02_ID
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 9b34c034..cbfe382b 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -9489,7 +9489,7 @@ MOD05_021DBEA0: ; 0x021DBEA0
mov r1, #2
bl HandleLoadOverlay
add r0, r4, #0
- bl FUN_02254A68
+ bl MOD51_02254A68
add r4, #0x80
str r0, [r4]
pop {r4, pc}
@@ -9515,7 +9515,7 @@ MOD05_021DBECC: ; 0x021DBECC
push {r3, lr}
add r0, #0x80
ldr r0, [r0]
- bl FUN_02254AB8
+ bl MOD51_02254AB8
ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID
bl UnloadOverlayByID
pop {r3, pc}
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
new file mode 100644
index 00000000..6318e002
--- /dev/null
+++ b/arm9/modules/60/asm/module_60.s
@@ -0,0 +1,1491 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD60_021D74E0
+MOD60_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_0200628C
+ mov r2, #1
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x26
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r1, #0xad
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #0x26
+ bl FUN_02006268
+ mov r2, #0xad
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl FUN_02024FD8
+ ldrh r1, [r4, #0x18]
+ mov r2, #0xf
+ lsl r0, r0, #0x10
+ bic r1, r2
+ lsr r2, r0, #0x10
+ mov r0, #0xf
+ and r0, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_0202502C
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x40
+ lsr r0, r0, #0x19
+ bic r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025048
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x80
+ lsr r0, r0, #0x18
+ bic r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025010
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1e
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x30
+ lsr r0, r0, #0x1a
+ bic r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025064
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1e
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D75A8 ; =0xFFFFFCFF
+ lsr r0, r0, #0x16
+ and r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025084
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1b
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D75AC ; =0xFFFF83FF
+ lsr r0, r0, #0x11
+ and r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ mov r0, #0x26
+ str r0, [r4]
+ str r5, [r4, #0x1c]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D75A8: .word 0xFFFFFCFF
+_021D75AC: .word 0xFFFF83FF
+ thumb_func_end MOD60_021D74E0
+
+ thumb_func_start MOD60_021D75B0
+MOD60_021D75B0: ; 0x021D75B0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ cmp r0, #1
+ bne _021D7680
+ ldrh r1, [r4, #0x18]
+ mov r0, #0xf
+ bic r1, r0
+ add r0, r4, #0
+ add r0, #0x5e
+ ldrh r2, [r0]
+ mov r0, #0xf
+ and r2, r0
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x40
+ add r0, #0xf7
+ bic r1, r2
+ add r2, r4, #0
+ add r2, #0xb2
+ ldrh r2, [r2]
+ lsl r2, r2, #0x1f
+ lsr r2, r2, #0x19
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r0, [r4, r0]
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x80
+ lsl r0, r0, #0x1f
+ bic r1, r2
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x18]
+ mov r0, #0x30
+ bic r1, r0
+ ldr r0, _021D76AC ; =0x0000015A
+ ldrh r2, [r4, r0]
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x1a
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D76B0 ; =0xFFFFFCFF
+ and r1, r2
+ add r2, r0, #0
+ add r2, #0x54
+ ldrh r2, [r4, r2]
+ add r0, #0xa8
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x16
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r0, [r4, r0]
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D76B4 ; =0xFFFF83FF
+ lsl r0, r0, #0x1b
+ and r1, r2
+ lsr r0, r0, #0x11
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_02024FE0
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1f
+ bl FUN_02025034
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1f
+ bl FUN_02025050
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1e
+ bl FUN_02025018
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x16
+ lsr r1, r1, #0x1e
+ bl FUN_0202506C
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x11
+ lsr r1, r1, #0x1b
+ bl FUN_0202508C
+ b _021D769A
+_021D7680:
+ cmp r0, #2
+ bne _021D769A
+ ldrh r0, [r4, #0x18]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ bl FUN_02004D60
+ ldrh r1, [r4, #0x18]
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsr r1, r1, #0x1e
+ bl FUN_02024F9C
+_021D769A:
+ add r0, r5, #0
+ bl FUN_0200627C
+ ldr r0, [r4]
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021D76AC: .word 0x0000015A
+_021D76B0: .word 0xFFFFFCFF
+_021D76B4: .word 0xFFFF83FF
+ thumb_func_end MOD60_021D75B0
+
+ thumb_func_start MOD60_021D76B8
+MOD60_021D76B8: ; 0x021D76B8
+ push {r3, r4, lr}
+ sub sp, #0xc
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #4
+ bhi _021D77A0
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D76D4: ; jump table
+ .short _021D76DE - _021D76D4 - 2 ; case 0
+ .short _021D7706 - _021D76D4 - 2 ; case 1
+ .short _021D7714 - _021D76D4 - 2 ; case 2
+ .short _021D777E - _021D76D4 - 2 ; case 3
+ .short _021D778C - _021D76D4 - 2 ; case 4
+_021D76DE:
+ bl MOD60_021D7834
+ cmp r0, #0
+ bne _021D76EC
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D76EC:
+ mov r3, #0
+ str r3, [r4, #0xc]
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ bl FUN_0200E1D0
+ b _021D77A0
+_021D7706:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D77A0
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7714:
+ ldr r0, _021D77AC ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _021D773C
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1d
+ cmp r1, #6
+ bne _021D773C
+ ldr r0, _021D77B0 ; =0x0000061B
+ bl FUN_020054C8
+ ldr r1, [r4, #0x10]
+ mov r0, #3
+ bic r1, r0
+ mov r0, #1
+ orr r0, r1
+ str r0, [r4, #0x10]
+ b _021D774E
+_021D773C:
+ mov r1, #2
+ tst r0, r1
+ beq _021D774E
+ ldr r2, [r4, #0x10]
+ mov r0, #3
+ bic r2, r0
+ add r0, r2, #0
+ orr r0, r1
+ str r0, [r4, #0x10]
+_021D774E:
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ beq _021D7772
+ mov r1, #0
+ str r1, [r4, #0xc]
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ b _021D77A0
+_021D7772:
+ add r0, r4, #0
+ bl MOD60_021D801C
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D777E:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D77A0
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D778C:
+ bl MOD60_021D78E8
+ cmp r0, #0
+ beq _021D779A
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_021D779A:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D77A0:
+ 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
+_021D77AC: .word 0x021C48B8
+_021D77B0: .word 0x0000061B
+ thumb_func_end MOD60_021D76B8
+
+ thumb_func_start MOD60_021D77B4
+MOD60_021D77B4: ; 0x021D77B4
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D77D0 ; =0x021D8140
+ add r3, sp, #0
+ mov r2, #5
+_021D77BE:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D77BE
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D77D0: .word 0x021D8140
+ thumb_func_end MOD60_021D77B4
+
+ thumb_func_start MOD60_021D77D4
+MOD60_021D77D4: ; 0x021D77D4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1f
+ beq _021D7804
+ ldr r2, _021D7824 ; =0x00000202
+ mov r1, #1
+ ldrh r0, [r4, r2]
+ add r2, #0x39
+ mov r3, #0xf
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r4]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ bl FUN_0200CD68
+ ldr r1, [r4, #0x10]
+ ldr r0, _021D7828 ; =0xFFDFFFFF
+ and r0, r1
+ str r0, [r4, #0x10]
+_021D7804:
+ bl FUN_0200BC30
+ bl FUN_020AEEB8
+ ldr r0, [r4, #0x14]
+ bl FUN_0201AB60
+ ldr r3, _021D782C ; =0x027E0000
+ ldr r1, _021D7830 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021D7824: .word 0x00000202
+_021D7828: .word 0xFFDFFFFF
+_021D782C: .word 0x027E0000
+_021D7830: .word 0x00003FF8
+ thumb_func_end MOD60_021D77D4
+
+ thumb_func_start MOD60_021D7834
+MOD60_021D7834: ; 0x021D7834
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #0
+ beq _021D7848
+ cmp r1, #1
+ beq _021D7888
+ cmp r1, #2
+ beq _021D78A2
+ b _021D78D0
+_021D7848:
+ 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, _021D78DC ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D78E0 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ bl MOD60_021D77B4
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ add r0, r4, #0
+ bl MOD60_021D7990
+ b _021D78D0
+_021D7888:
+ bl MOD60_021D7A40
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ mov r2, #0xce
+ bl FUN_0200A86C
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ bl MOD60_021D7DF8
+ b _021D78D0
+_021D78A2:
+ bl MOD60_021D7BA4
+ add r0, r4, #0
+ bl MOD60_021D7D18
+ ldr r1, [r4]
+ mov r0, #0x20
+ bl FUN_0201C24C
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ bl FUN_02033F20
+ ldr r0, _021D78E4 ; =MOD60_021D77D4
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_021D78D0:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021D78DC: .word 0xFFFFE0FF
+_021D78E0: .word 0x04001000
+_021D78E4: .word MOD60_021D77D4
+ thumb_func_end MOD60_021D7834
+
+ thumb_func_start MOD60_021D78E8
+MOD60_021D78E8: ; 0x021D78E8
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _021D78F8
+ cmp r0, #1
+ beq _021D7946
+ b _021D7978
+_021D78F8:
+ bl FUN_0201C29C
+ ldr r0, [sp]
+ bl MOD60_021D7CD4
+ ldr r6, [sp]
+ mov r7, #0
+_021D7906:
+ add r0, r6, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _021D7928
+ add r5, r6, #0
+_021D7914:
+ ldr r0, [r5, #0x60]
+ bl FUN_02021A20
+ add r0, r6, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _021D7914
+_021D7928:
+ add r7, r7, #1
+ add r6, #0x54
+ cmp r7, #7
+ blt _021D7906
+ ldr r0, [sp]
+ ldr r0, [r0, #0x20]
+ bl FUN_0200A8B8
+ ldr r0, [sp]
+ bl MOD60_021D7B98
+ ldr r0, [sp]
+ bl MOD60_021D7A14
+ b _021D7978
+_021D7946:
+ 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, _021D7988 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D798C ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ ldr r0, [sp]
+ mov r1, #0
+ str r1, [r0, #8]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D7978:
+ ldr r0, [sp]
+ ldr r0, [r0, #8]
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [r0, #8]
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7988: .word 0xFFFFE0FF
+_021D798C: .word 0x04001000
+ thumb_func_end MOD60_021D78E8
+
+ thumb_func_start MOD60_021D7990
+MOD60_021D7990: ; 0x021D7990
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x80
+ add r6, r0, #0
+ ldr r0, [r6]
+ bl FUN_02016B94
+ add r3, sp, #0
+ ldr r4, _021D7A08 ; =0x021D8114
+ str r0, [r6, #0x14]
+ 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, _021D7A0C ; =0x021D8168
+ add r3, sp, #0x10
+ mov r2, #0xe
+_021D79B8:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D79B8
+ ldr r5, _021D7A10 ; =0x021D8104
+ mov r7, #0
+ add r4, sp, #0x10
+_021D79C6:
+ ldr r1, [r5]
+ ldr r0, [r6, #0x14]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r2, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r1, [r5]
+ ldr r0, [r6, #0x14]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ add r7, r7, #1
+ add r4, #0x1c
+ add r5, r5, #4
+ cmp r7, #4
+ blt _021D79C6
+ mov r0, #0
+ ldr r3, [r6]
+ mov r1, #0x20
+ add r2, r0, #0
+ bl FUN_02017F18
+ ldr r3, [r6]
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ add sp, #0x80
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7A08: .word 0x021D8114
+_021D7A0C: .word 0x021D8168
+_021D7A10: .word 0x021D8104
+ thumb_func_end MOD60_021D7990
+
+ thumb_func_start MOD60_021D7A14
+MOD60_021D7A14: ; 0x021D7A14
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD60_021D7A14
+
+ thumb_func_start MOD60_021D7A40
+MOD60_021D7A40: ; 0x021D7A40
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r0, #0x49
+ bl FUN_02006670
+ add r4, r0, #0
+ mov r0, #0x49
+ mov r1, #1
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_02006774
+ add r0, r6, #0
+ add r1, sp, #0x20
+ bl FUN_020B0088
+ ldr r3, [sp, #0x20]
+ mov r1, #0
+ str r1, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r3, #0x10]
+ bl FUN_02017E14
+ ldr r3, [sp, #0x20]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r3, #0x10]
+ mov r1, #4
+ bl FUN_02017E14
+ add r0, r6, #0
+ bl FUN_02016A18
+ mov r0, #0x49
+ mov r1, #0
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r6, #0
+ bl FUN_02006774
+ add r0, r6, #0
+ add r1, sp, #0x1c
+ bl FUN_020B0138
+ ldr r1, [sp, #0x1c]
+ mov r0, #0
+ ldr r1, [r1, #0xc]
+ mov r2, #0x20
+ add r3, r0, #0
+ bl FUN_02017FB4
+ ldr r1, [sp, #0x1c]
+ mov r0, #4
+ ldr r1, [r1, #0xc]
+ mov r2, #0x20
+ mov r3, #0
+ bl FUN_02017FB4
+ add r0, r6, #0
+ bl FUN_02016A18
+ mov r0, #0x49
+ mov r1, #2
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02016998
+ str r0, [r5, #0x24]
+ ldr r2, [r5, #0x24]
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02006774
+ add r1, r5, #0
+ ldr r0, [r5, #0x24]
+ add r1, #0x28
+ bl FUN_020B0180
+ add r0, r4, #0
+ bl FUN_020066F4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ mov r2, #1
+ bl FUN_02018540
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ mov r2, #1
+ bl FUN_02018540
+ ldr r0, [r5, #0x28]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #2
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ ldrh r2, [r0]
+ add r3, r1, #0
+ lsl r2, r2, #0x15
+ lsr r2, r2, #0x18
+ str r2, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ add r2, r1, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x14]
+ bl FUN_020181EC
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ sub r3, #0x1b
+ bl FUN_020179E0
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ bl FUN_0201AC68
+ add sp, #0x24
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD60_021D7A40
+
+ thumb_func_start MOD60_021D7B98
+MOD60_021D7B98: ; 0x021D7B98
+ ldr r3, _021D7BA0 ; =0x02016A19
+ ldr r0, [r0, #0x24]
+ bx r3
+ nop
+_021D7BA0: .word 0x02016A19
+ thumb_func_end MOD60_021D7B98
+
+ thumb_func_start MOD60_021D7BA4
+MOD60_021D7BA4: ; 0x021D7BA4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0xa
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ mov r2, #1
+ ldr r0, [r4, #0x14]
+ add r1, #0x2c
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0x1e
+ str r0, [sp, #4]
+ mov r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x22
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ mov r2, #1
+ ldr r0, [r4, #0x14]
+ add r1, #0x3c
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _021D7CC8 ; =0x000001C6
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x14]
+ add r1, #0x4c
+ mov r2, #1
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4]
+ ldr r2, _021D7CCC ; =0x00000232
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ mov r3, #0xe
+ bl FUN_0200CB00
+ ldrh r0, [r4, #0x18]
+ ldr r2, _021D7CD0 ; =0x0000023B
+ mov r1, #1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1b
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r3, #0xf
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ bl FUN_0200CD68
+ mov r1, #0x1a
+ ldr r2, [r4]
+ mov r0, #0
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ mov r1, #0x1a
+ ldr r2, [r4]
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ mov r1, #6
+ ldr r2, [r4]
+ mov r0, #0
+ lsl r1, r1, #6
+ bl FUN_02002EEC
+ mov r1, #6
+ ldr r2, [r4]
+ mov r0, #4
+ lsl r1, r1, #6
+ bl FUN_02002EEC
+ add r0, r4, #0
+ add r0, #0x2c
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x3c
+ mov r1, #0xff
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x4c
+ mov r1, #0xff
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x4c
+ bl FUN_020192B8
+ add r0, r4, #0
+ add r0, #0x3c
+ bl FUN_020192B8
+ add r0, r4, #0
+ add r0, #0x2c
+ bl FUN_020192B8
+ add r0, r4, #0
+ ldr r2, _021D7CCC ; =0x00000232
+ add r0, #0x3c
+ mov r1, #1
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ add r4, #0x4c
+ ldr r2, _021D7CD0 ; =0x0000023B
+ add r0, r4, #0
+ mov r1, #1
+ mov r3, #0xf
+ bl FUN_0200D0BC
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_021D7CC8: .word 0x000001C6
+_021D7CCC: .word 0x00000232
+_021D7CD0: .word 0x0000023B
+ thumb_func_end MOD60_021D7BA4
+
+ thumb_func_start MOD60_021D7CD4
+MOD60_021D7CD4: ; 0x021D7CD4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0x3c
+ mov r1, #0
+ bl FUN_0200CCF8
+ add r0, r5, #0
+ add r0, #0x4c
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r6, #0
+ add r5, #0x2c
+ add r7, r6, #0
+_021D7CF0:
+ lsl r4, r6, #4
+ add r0, r5, r4
+ bl FUN_02019570
+ add r0, r5, r4
+ add r1, r7, #0
+ bl FUN_02019620
+ add r0, r5, r4
+ bl FUN_020192B8
+ add r0, r5, r4
+ bl FUN_02019178
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, #3
+ blo _021D7CF0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD60_021D7CD4
+
+ thumb_func_start MOD60_021D7D18
+MOD60_021D7D18: ; 0x021D7D18
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ ldr r1, [r6]
+ mov r0, #0x28
+ bl FUN_020219F4
+ add r5, r0, #0
+ ldr r0, [r6, #0x20]
+ mov r1, #0
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r3, #2
+ str r3, [sp]
+ mov r1, #0
+ ldr r0, _021D7DEC ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x2c
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_02021A4C
+ ldr r1, _021D7DF0 ; =0x020ECAC0
+ ldr r0, [r6, #0x20]
+ ldrb r1, [r1]
+ add r2, r5, #0
+ sub r1, #9
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D7DF4 ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ str r1, [sp, #0xc]
+ add r0, #0x4c
+ mov r1, #1
+ add r2, r5, #0
+ mov r3, #4
+ bl FUN_0201BDE0
+ add r7, r6, #0
+ mov r4, #0
+ add r7, #0x3c
+_021D7D7E:
+ add r0, r5, #0
+ bl FUN_02021A4C
+ ldr r0, [r6, #0x20]
+ add r1, r4, #3
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ lsl r0, r4, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D7DF4 ; =0x0001020F
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r2, r5, #0
+ mov r3, #4
+ bl FUN_0201BDE0
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #7
+ blo _021D7D7E
+ mov r4, #0
+_021D7DB6:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD60_021D7EA4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #7
+ blo _021D7DB6
+ add r0, r6, #0
+ add r0, #0x2c
+ bl FUN_020191D0
+ add r0, r6, #0
+ add r0, #0x3c
+ bl FUN_020191D0
+ add r6, #0x4c
+ add r0, r6, #0
+ bl FUN_020191D0
+ add r0, r5, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7DEC: .word 0x00010200
+_021D7DF0: .word 0x020ECAC0
+_021D7DF4: .word 0x0001020F
+ thumb_func_end MOD60_021D7D18
+
+ thumb_func_start MOD60_021D7DF8
+MOD60_021D7DF8: ; 0x021D7DF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r5, #0
+ add r6, r0, #0
+ str r5, [sp, #4]
+_021D7E02:
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #4]
+ lsl r7, r0, #2
+ ldr r0, _021D7E9C ; =0x021D8124
+ mov r1, #0x54
+ mul r1, r2
+ add r1, r6, r1
+ str r1, [sp]
+ ldr r0, [r0, r7]
+ add r1, #0x5c
+ mov r4, #0
+ strh r0, [r1]
+ cmp r0, #0
+ ble _021D7E44
+_021D7E1E:
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ add r1, r5, #0
+ lsr r5, r0, #0x10
+ ldr r0, [r6, #0x20]
+ add r1, #0xa
+ bl FUN_0200A914
+ ldr r1, [sp]
+ lsl r2, r4, #2
+ add r1, r1, r2
+ str r0, [r1, #0x60]
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, _021D7E9C ; =0x021D8124
+ ldr r0, [r0, r7]
+ cmp r4, r0
+ blt _021D7E1E
+_021D7E44:
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ cmp r0, #7
+ blo _021D7E02
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x1c
+ lsr r1, r0, #0x1c
+ add r0, r6, #0
+ add r0, #0x5e
+ strh r1, [r0]
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x19
+ lsr r1, r0, #0x1f
+ add r0, r6, #0
+ add r0, #0xb2
+ strh r1, [r0]
+ ldrh r0, [r6, #0x18]
+ ldr r1, _021D7EA0 ; =0x00000106
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ strh r0, [r6, r1]
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x1a
+ lsr r2, r0, #0x1e
+ add r0, r1, #0
+ add r0, #0x54
+ strh r2, [r6, r0]
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x16
+ lsr r2, r0, #0x1e
+ add r0, r1, #0
+ add r0, #0xa8
+ strh r2, [r6, r0]
+ ldrh r0, [r6, #0x18]
+ add r1, #0xfc
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1b
+ strh r0, [r6, r1]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7E9C: .word 0x021D8124
+_021D7EA0: .word 0x00000106
+ thumb_func_end MOD60_021D7DF8
+
+ thumb_func_start MOD60_021D7EA4
+MOD60_021D7EA4: ; 0x021D7EA4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x10]
+ lsl r0, r1, #4
+ str r0, [sp, #0x18]
+ mov r0, #6
+ str r1, [sp, #0x14]
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ ldr r3, _021D8010 ; =0x021D80FC
+ ldr r2, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ ldrsb r2, [r3, r2]
+ ldr r3, [sp, #0x18]
+ add r0, #0x3c
+ add r2, #0x64
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r0, [sp, #0x14]
+ cmp r0, #5
+ bne _021D7F26
+ add r2, r0, #0
+ ldr r0, [sp, #0x18]
+ mov r1, #0x54
+ str r0, [sp]
+ mov r0, #0xff
+ mul r2, r1
+ ldr r3, [sp, #0x10]
+ str r0, [sp, #4]
+ ldr r0, _021D8014 ; =0x0003040F
+ add r3, r3, r2
+ str r0, [sp, #8]
+ mov r1, #0
+ add r2, r3, #0
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0xc]
+ add r2, #0x5e
+ ldrh r2, [r2]
+ add r0, #0x3c
+ lsl r2, r2, #2
+ add r2, r3, r2
+ ldr r2, [r2, #0x60]
+ mov r3, #0x94
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ add r0, #0x3c
+ bl FUN_020191D0
+ ldr r0, [sp, #0x10]
+ ldr r1, [r0, #0x10]
+ mov r0, #2
+ lsl r0, r0, #0x14
+ orr r1, r0
+ ldr r0, [sp, #0x10]
+ add sp, #0x24
+ str r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_021D7F26:
+ cmp r0, #3
+ bne _021D7F3C
+ mov r1, #0x54
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ add r0, r0, r1
+ add r0, #0x5e
+ ldrh r0, [r0]
+ bl FUN_02004D60
+ b _021D7F54
+_021D7F3C:
+ cmp r0, #4
+ bne _021D7F54
+ ldr r1, [sp, #0x14]
+ mov r2, #0x54
+ mul r2, r1
+ ldr r1, [sp, #0x10]
+ mov r0, #0
+ add r1, r1, r2
+ add r1, #0x5e
+ ldrh r1, [r1]
+ bl FUN_02024F9C
+_021D7F54:
+ ldr r0, [sp, #0x14]
+ mov r1, #0x54
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ mov r7, #0
+ add r5, r0, r1
+ add r0, r5, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ add r4, r7, #0
+ cmp r0, #0
+ bls _021D8002
+ bls _021D8002
+ ldr r1, _021D8010 ; =0x021D80FC
+ ldr r0, [sp, #0x14]
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0x20]
+ add r0, #0x3c
+ str r0, [sp, #0x20]
+_021D7F7E:
+ add r0, r5, #0
+ add r0, #0x5e
+ ldrh r0, [r0]
+ cmp r4, r0
+ bne _021D7F8C
+ ldr r0, _021D8014 ; =0x0003040F
+ b _021D7F8E
+_021D7F8C:
+ ldr r0, _021D8018 ; =0x0001020F
+_021D7F8E:
+ ldr r1, [sp, #0x14]
+ cmp r1, #4
+ bne _021D7FC8
+ lsl r1, r4, #2
+ add r6, r5, r1
+ ldr r1, [sp, #0x18]
+ add r3, r7, #0
+ str r1, [sp]
+ mov r1, #0xff
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x20]
+ ldr r2, [r6, #0x60]
+ mov r1, #0
+ add r3, #0x64
+ bl FUN_0201BDE0
+ mov r0, #0
+ ldr r1, [r6, #0x60]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r0, #0xc
+ add r0, r7, r0
+ lsl r0, r0, #0x18
+ asr r7, r0, #0x18
+ b _021D7FF2
+_021D7FC8:
+ ldr r1, [sp, #0x18]
+ lsl r2, r4, #2
+ str r1, [sp]
+ mov r1, #0xff
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0
+ str r0, [sp, #0xc]
+ add r2, r5, r2
+ ldr r6, [sp, #0x1c]
+ add r3, r1, #0
+ ldrsb r6, [r6, r3]
+ mov r3, #0x30
+ mul r3, r4
+ add r3, #0x64
+ ldr r0, [sp, #0x20]
+ ldr r2, [r2, #0x60]
+ add r3, r6, r3
+ bl FUN_0201BDE0
+_021D7FF2:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ cmp r4, r0
+ blo _021D7F7E
+_021D8002:
+ ldr r0, [sp, #0x10]
+ add r0, #0x3c
+ str r0, [sp, #0x10]
+ bl FUN_020191D0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8010: .word 0x021D80FC
+_021D8014: .word 0x0003040F
+_021D8018: .word 0x0001020F
+ thumb_func_end MOD60_021D7EA4
+
+ thumb_func_start MOD60_021D801C
+MOD60_021D801C: ; 0x021D801C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ add r1, r5, #0
+ lsl r0, r0, #0x1b
+ lsr r2, r0, #0x1d
+ mov r0, #0x54
+ add r1, #0x5c
+ mul r0, r2
+ add r4, r1, r0
+ cmp r2, #6
+ beq _021D8080
+ ldr r0, _021D80F8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021D805C
+ ldrh r0, [r4, #2]
+ ldrh r1, [r4]
+ add r0, r0, #1
+ bl _s32_div_f
+ strh r1, [r4, #2]
+ ldr r1, [r5, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1d
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl MOD60_021D7EA4
+ b _021D8080
+_021D805C:
+ mov r0, #0x20
+ tst r0, r1
+ beq _021D8080
+ ldrh r1, [r4]
+ ldrh r0, [r4, #2]
+ add r0, r0, r1
+ sub r0, r0, #1
+ bl _s32_div_f
+ strh r1, [r4, #2]
+ ldr r1, [r5, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1d
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl MOD60_021D7EA4
+_021D8080:
+ ldr r0, _021D80F8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021D80BE
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1d
+ add r0, r0, #6
+ bl _u32_div_f
+ ldr r2, [r5, #0x10]
+ mov r0, #0x1c
+ bic r2, r0
+ lsl r0, r1, #0x1d
+ add r3, r2, #0
+ lsr r0, r0, #0x1b
+ orr r3, r0
+ str r3, [r5, #0x10]
+ lsl r3, r3, #0x1b
+ lsr r3, r3, #0x1d
+ lsl r3, r3, #4
+ add r3, #0x18
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ mov r2, #3
+ neg r3, r3
+ bl FUN_0201AEE4
+ pop {r3, r4, r5, pc}
+_021D80BE:
+ mov r0, #0x80
+ tst r0, r1
+ beq _021D80F6
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1d
+ add r0, r0, #1
+ bl _u32_div_f
+ ldr r2, [r5, #0x10]
+ mov r0, #0x1c
+ bic r2, r0
+ lsl r0, r1, #0x1d
+ add r3, r2, #0
+ lsr r0, r0, #0x1b
+ orr r3, r0
+ str r3, [r5, #0x10]
+ lsl r3, r3, #0x1b
+ lsr r3, r3, #0x1d
+ lsl r3, r3, #4
+ add r3, #0x18
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ mov r2, #3
+ neg r3, r3
+ bl FUN_0201AEE4
+_021D80F6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D80F8: .word 0x021C48B8
+ thumb_func_end MOD60_021D801C
+
+ .section .rodata
+ ; 0x021D80FC
+ .incbin "baserom.nds", 0x2AD81C, 0xDC
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt
index 69d8e7c0..080895e8 100644
--- a/arm9/undefined_syms.txt
+++ b/arm9/undefined_syms.txt
@@ -1,11 +1,5 @@
// Overlay
-FUN_021D844C = 0x021D844C;
-FUN_021D88E4 = 0x021D88E4;
-FUN_021D89CC = 0x021D89CC;
-FUN_021D8B64 = 0x021D8B64;
-FUN_021D8C24 = 0x021D8C24;
-FUN_021D917C = 0x021D917C;
MOD63_UNK_021DBE18 = 0x021DBE18;
FUN_0222DAEC = 0x0222DAEC;
FUN_0222DD1C = 0x0222DD1C;
@@ -28,8 +22,6 @@ FUN_02213B08 = 0x02213B08;
FUN_02213D80 = 0x02213D80;
FUN_02213DBC = 0x02213DBC;
FUN_02213E24 = 0x02213E24;
-FUN_02254A68 = 0x02254A68;
-FUN_02254AB8 = 0x02254AB8;
// Overlay