summaryrefslogtreecommitdiff
path: root/arm9/modules/05/asm
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules/05/asm')
-rw-r--r--arm9/modules/05/asm/mod05_021D74E0.s1248
-rw-r--r--arm9/modules/05/asm/mod05_021D7F4C.s224
-rw-r--r--arm9/modules/05/asm/module_05.s1462
3 files changed, 1472 insertions, 1462 deletions
diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s
new file mode 100644
index 00000000..047e643f
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021D74E0.s
@@ -0,0 +1,1248 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021D74E0
+MOD05_021D74E0: ; 0x021D74E0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_0201AB60
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ ldr r0, [r4, #0x34]
+ bl FUN_020583A0
+ bl MOD05_021F2D48
+ bl FUN_0201F2D8
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021D7504
+MOD05_021D7504: ; 0x021D7504
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r6, #0
+ bl FUN_0200628C
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #3
+ bls _021D7518
+ b _021D7666
+_021D7518:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7524: ; jump table
+ .short _021D752C - _021D7524 - 2 ; case 0
+ .short _021D75DE - _021D7524 - 2 ; case 1
+ .short _021D7654 - _021D7524 - 2 ; case 2
+ .short _021D765A - _021D7524 - 2 ; case 3
+_021D752C:
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ ldr r1, _021D7670 ; =0x04000050
+ add r0, r6, #0
+ strh r0, [r1]
+ ldr r1, _021D7674 ; =0x04001050
+ strh r0, [r1]
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ add r0, r4, #0
+ bl FUN_020489DC
+ ldr r0, [r4, #0x70]
+ ldr r0, [r0]
+ lsl r0, r0, #8
+ lsr r0, r0, #0x1c
+ beq _021D7564
+ ldr r0, _021D7678 ; =SDK_OVERLAY_MODULE_06_ID
+ mov r1, #2
+ bl HandleLoadOverlay
+_021D7564:
+ ldr r2, [r4, #0x70]
+ mov r0, #3
+ ldr r2, [r2, #4]
+ mov r1, #4
+ bl FUN_0201681C
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021D757A
+ bl ErrorHandling
+_021D757A:
+ mov r0, #4
+ mov r1, #0x28
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0x28
+ str r0, [r4, #4]
+ bl MI_CpuFill8
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #8
+ bl MOD05_021D7F4C
+ ldr r1, [r4, #4]
+ str r0, [r1, #4]
+ bl MOD05_021D7A00
+ mov r0, #0x80
+ mov r1, #4
+ bl FUN_0201C24C
+ mov r0, #4
+ add r1, r0, #0
+ bl FUN_0201F100
+ mov r0, #4
+ bl FUN_0201B2EC
+ bl MOD05_021D7BA0
+ bl MOD05_021D7B38
+ bl FUN_0201E7A0
+ mov r0, #4
+ bl FUN_02016B94
+ str r0, [r4, #8]
+ bl MOD05_021D7A30
+ mov r0, #0
+ mov r1, #1
+ bl FUN_02054590
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_0203989C
+ b _021D7666
+_021D75DE:
+ bl MOD05_021D7CF0
+ ldr r0, [r4, #0x2c]
+ bl MOD05_021F49AC
+ mov r0, #4
+ bl MOD05_021E7C00
+ add r1, r4, #0
+ add r1, #0xa0
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD05_021F5B9C
+ add r0, r4, #0
+ bl MOD05_021D7D4C
+ add r0, r4, #0
+ bl MOD05_021D7D98
+ add r0, r4, #0
+ bl MOD05_021D7E4C
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DEC
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #0xc]
+ bl MOD05_021DC124
+ ldr r1, [r4, #0x1c]
+ add r0, r4, #0
+ ldr r1, [r1]
+ bl FUN_0204ADBC
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_0203989C
+ mov r0, #4
+ bl MOD05_021F45B4
+ ldr r1, [r4, #4]
+ str r0, [r1, #0x1c]
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ ldr r1, [r4, #4]
+ mov r0, #4
+ ldr r1, [r1, #0x1c]
+ bl MOD05_021F46C8
+ ldr r1, [r4, #4]
+ str r0, [r1, #0x20]
+ b _021D7666
+_021D7654:
+ bl MOD05_021DBE1C
+ b _021D7666
+_021D765A:
+ bl MOD05_021DBE38
+ cmp r0, #0
+ beq _021D7666
+ mov r6, #1
+ str r6, [r4, #0x64]
+_021D7666:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021D7670: .word 0x04000050
+_021D7674: .word 0x04001050
+_021D7678: .word SDK_OVERLAY_MODULE_06_ID
+
+ thumb_func_start MOD05_021D767C
+MOD05_021D767C: ; 0x021D767C
+ push {r4, lr}
+ bl FUN_0200628C
+ add r4, r0, #0
+ bl MOD05_021D7864
+ cmp r0, #0
+ beq _021D76A8
+ add r0, r4, #0
+ bl FUN_0204B490
+ add r0, r4, #0
+ bl MOD05_021D79B4
+ mov r1, #1
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD05_021EFA9C
+ add r0, r4, #0
+ bl MOD05_021D7894
+_021D76A8:
+ add r0, r4, #0
+ mov r1, #0xf
+ bl MOD05_021D795C
+ ldr r0, [r4, #0x64]
+ cmp r0, #0
+ beq _021D76BA
+ mov r0, #0
+ pop {r4, pc}
+_021D76BA:
+ mov r0, #1
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021D76C0
+MOD05_021D76C0: ; 0x021D76C0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_0200628C
+ add r4, r0, #0
+ ldr r1, [r4, #0x24]
+ bl MOD05_021EE52C
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021D76E2
+ cmp r0, #1
+ beq _021D7782
+ cmp r0, #2
+ bne _021D76E0
+ b _021D7806
+_021D76E0:
+ b _021D785A
+_021D76E2:
+ add r0, r4, #0
+ bl FUN_0205CDD8
+ ldr r0, [r4, #0x24]
+ bl MOD05_021EF5FC
+ ldr r0, [r4, #0x38]
+ bl FUN_02055320
+ ldr r1, [r4, #0x1c]
+ str r0, [r1, #8]
+ ldr r0, [r4, #0x38]
+ bl FUN_0205532C
+ ldr r1, [r4, #0x1c]
+ str r0, [r1, #0xc]
+ ldr r0, [r4, #0x38]
+ bl FUN_020552F8
+ ldr r1, [r4, #0x1c]
+ str r0, [r1, #0x10]
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl MOD05_021F450C
+ ldr r0, [r4, #0x4c]
+ cmp r0, #0
+ bne _021D7720
+ bl ErrorHandling
+_021D7720:
+ ldr r0, [r4, #0x24]
+ bl MOD05_021EF514
+ ldr r0, [r4, #0x4c]
+ bl MOD05_021D9F48
+ ldr r0, [r4, #0x4c]
+ bl MOD05_021DA018
+ add r0, r4, #0
+ add r0, #0x50
+ bl MOD05_021DA450
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #0x10]
+ bl MOD05_021DC094
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #0x10]
+ bl MOD05_021DC0AC
+ ldr r0, [r4, #4]
+ mov r1, #0
+ str r1, [r0, #0x10]
+ ldr r0, [r4, #0x34]
+ bl FUN_02057750
+ ldr r0, [r4, #0x34]
+ bl MOD05_021F1D2C
+ ldr r0, [r4, #0x34]
+ bl FUN_02058768
+ ldr r0, [r4, #0x3c]
+ bl MOD05_021E4BA8
+ ldr r0, [r4, #0x30]
+ bl MOD05_021D7F44
+ mov r0, #0
+ str r0, [r4, #0x30]
+ add r4, #0xa0
+ ldr r0, [r4]
+ bl MOD05_021E7C14
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D785A
+_021D7782:
+ ldr r0, [r4, #0x24]
+ bl MOD05_021EF5C4
+ cmp r0, #1
+ bne _021D785A
+ add r0, r4, #0
+ add r0, #0x2c
+ bl MOD05_021F4BF8
+ ldr r0, [r4, #0x24]
+ bl MOD05_021EF5A8
+ add r0, r4, #0
+ add r0, #0xa4
+ bl MOD05_021F4D1C
+ add r0, r4, #0
+ bl MOD05_021DBDEC
+ add r0, r4, #0
+ add r0, #0x48
+ bl MOD05_021DB4B0
+ ldr r0, [r4, #0x60]
+ bl MOD05_021E8110
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #8]
+ bl MOD05_021E3248
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #0xc]
+ bl MOD05_021DC0F8
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #0x20]
+ bl MOD05_021F4704
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45C8
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #0x18]
+ bl FUN_0204B3B8
+ add r0, r4, #0
+ add r0, #0x44
+ bl MOD05_021DBA1C
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD05_021DBAD8
+ bl MOD05_021D7B5C
+ ldr r0, [r4, #8]
+ bl MOD05_021D7B10
+ add r0, r4, #0
+ bl MOD05_021DBE58
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D785A
+_021D7806:
+ add r0, r4, #0
+ bl MOD05_021DBE74
+ cmp r0, #0
+ beq _021D785A
+ bl MOD05_021D7BD4
+ bl FUN_0201F140
+ bl FUN_0201C29C
+ bl FUN_0201B398
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #4]
+ bl MOD05_021D7F9C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ ldr r0, [r4, #8]
+ bl FreeToHeap
+ ldr r0, [r4, #4]
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [r4, #4]
+ mov r0, #4
+ bl FUN_020168D0
+ ldr r0, [r4, #0x70]
+ ldr r0, [r0]
+ lsl r0, r0, #8
+ lsr r0, r0, #0x1c
+ beq _021D7856
+ ldr r0, _021D7860 ; =SDK_OVERLAY_MODULE_06_ID
+ bl UnloadOverlayByID
+_021D7856:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D785A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D7860: .word SDK_OVERLAY_MODULE_06_ID
+
+ thumb_func_start MOD05_021D7864
+MOD05_021D7864: ; 0x021D7864
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ add r4, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_0205532C
+ ldr r2, [r5, #0x1c]
+ ldr r1, [r2, #8]
+ cmp r4, r1
+ bne _021D7884
+ ldr r1, [r2, #0xc]
+ cmp r0, r1
+ beq _021D788E
+_021D7884:
+ str r4, [r2, #8]
+ ldr r1, [r5, #0x1c]
+ str r0, [r1, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D788E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021D7894
+MOD05_021D7894: ; 0x021D7894
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ asr r1, r0, #4
+ lsr r1, r1, #0x1b
+ add r1, r0, r1
+ ldr r0, [r5, #0x38]
+ asr r4, r1, #5
+ bl FUN_0205532C
+ asr r1, r0, #4
+ lsr r1, r1, #0x1b
+ add r1, r0, r1
+ asr r2, r1, #5
+ ldr r0, [r5, #0x28]
+ add r1, r4, #0
+ bl FUN_0203451C
+ add r4, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r6, [r0]
+ cmp r4, r6
+ bne _021D78CE
+ add sp, #8
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021D78CE:
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ add r7, r0, #0
+ ldr r0, [r5, #0x1c]
+ add r1, r4, #0
+ str r4, [r0]
+ add r0, r5, #0
+ bl FUN_02034A60
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_020489FC
+ add r0, r5, #0
+ bl FUN_02034B64
+ str r0, [sp, #4]
+ add r0, r5, #0
+ bl FUN_02034B6C
+ str r0, [sp]
+ ldr r0, [r5, #0x34]
+ ldr r3, [sp, #4]
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_020573C8
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl FUN_0205DD40
+ ldr r1, [r5, #0x1c]
+ add r0, r5, #0
+ ldr r1, [r1]
+ bl FUN_0204AB58
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #1
+ bl FUN_0204ABDC
+ add r0, r5, #0
+ bl FUN_02034AC8
+ add r0, r7, #0
+ bl FUN_02034DEC
+ add r1, r0, #0
+ ldr r0, [r5, #4]
+ ldr r0, [r0, #0xc]
+ bl MOD05_021DC174
+ add r0, r6, #0
+ bl FUN_02034824
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_02034824
+ add r1, r0, #0
+ cmp r6, r1
+ beq _021D7956
+ ldr r0, [r5, #4]
+ ldr r0, [r0, #8]
+ bl MOD05_021E3270
+_021D7956:
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021D795C
+MOD05_021D795C: ; 0x021D795C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0204646C
+ cmp r0, #0
+ bne _021D7970
+ add r0, r5, #0
+ bl FUN_0204B0F8
+_021D7970:
+ ldr r0, [r5, #0x48]
+ bl MOD05_021DB4D0
+ add r0, r5, #0
+ bl MOD05_021E8158
+ mov r0, #1
+ tst r0, r4
+ beq _021D798A
+ ldr r0, [r5, #4]
+ ldr r0, [r0, #0x10]
+ bl MOD05_021DBFF8
+_021D798A:
+ mov r0, #8
+ tst r0, r4
+ beq _021D7996
+ ldr r0, [r5, #0x4c]
+ bl MOD05_021DA1AC
+_021D7996:
+ mov r0, #2
+ tst r0, r4
+ beq _021D79A4
+ ldr r1, [r5, #0x24]
+ add r0, r5, #0
+ bl MOD05_021EE52C
+_021D79A4:
+ mov r0, #4
+ tst r0, r4
+ beq _021D79B0
+ add r0, r5, #0
+ bl MOD05_021D7BE0
+_021D79B0:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021D79B4
+MOD05_021D79B4: ; 0x021D79B4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034908
+ cmp r0, #0
+ beq _021D79FE
+ ldr r0, [r5, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E0C
+ add r7, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_02055320
+ asr r1, r0, #4
+ lsr r1, r1, #0x1b
+ add r1, r0, r1
+ ldr r0, [r5, #0x38]
+ asr r6, r1, #5
+ bl FUN_0205532C
+ asr r1, r0, #4
+ lsr r1, r1, #0x1b
+ add r1, r0, r1
+ ldr r0, [r5, #0x38]
+ asr r4, r1, #5
+ bl FUN_020552F8
+ add r3, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_0204AE5C
+_021D79FE:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021D7A00
+MOD05_021D7A00: ; 0x021D7A00
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7A1C ; =UNK05_021F64A0
+ add r3, sp, #0
+ mov r2, #5
+_021D7A0A:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7A0A
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .balign 4, 0
+_021D7A1C: .word UNK05_021F64A0
+
+ thumb_func_start MOD05_021D7A20
+MOD05_021D7A20: ; 0x021D7A20
+ ldr r3, _021D7A24 ; =MOD05_021D7A30
+ bx r3
+ .balign 4, 0
+_021D7A24: .word MOD05_021D7A30
+
+ thumb_func_start MOD05_021D7A28
+MOD05_021D7A28: ; 0x021D7A28
+ ldr r3, _021D7A2C ; =MOD05_021D7B10
+ bx r3
+ .balign 4, 0
+_021D7A2C: .word MOD05_021D7B10
+
+ thumb_func_start MOD05_021D7A30
+MOD05_021D7A30: ; 0x021D7A30
+ push {r3, r4, r5, lr}
+ sub sp, #0x68
+ ldr r5, _021D7B00 ; =UNK05_021F643C
+ add r3, sp, #0x58
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D7B04 ; =UNK05_021F6468
+ add r3, sp, #0x3c
+ 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]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #4
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _021D7B08 ; =UNK05_021F644C
+ add r3, sp, #0x20
+ 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]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #4
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D7B0C ; =UNK05_021F6484
+ 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]
+ mov r1, #3
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #4
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ mov r0, #0
+ add r1, sp, #0
+ strh r0, [r1]
+ mov r1, #2
+ bl DC_FlushRange
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #2
+ bl GX_LoadBGPltt
+ add sp, #0x68
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021D7B00: .word UNK05_021F643C
+_021D7B04: .word UNK05_021F6468
+_021D7B08: .word UNK05_021F644C
+_021D7B0C: .word UNK05_021F6484
+
+ thumb_func_start MOD05_021D7B10
+MOD05_021D7B10: ; 0x021D7B10
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xf
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021D7B38
+MOD05_021D7B38: ; 0x021D7B38
+ push {lr}
+ sub sp, #0x14
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7c
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x1f
+ str r3, [sp, #0xc]
+ mov r2, #4
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add sp, #0x14
+ pop {pc}
+
+ thumb_func_start MOD05_021D7B5C
+MOD05_021D7B5C: ; 0x021D7B5C
+ ldr r3, _021D7B60 ; =FUN_02009FA0
+ bx r3
+ .balign 4, 0
+_021D7B60: .word FUN_02009FA0
+
+ thumb_func_start MOD05_021D7B64
+MOD05_021D7B64: ; 0x021D7B64
+ push {r4, lr}
+ mov r1, #0
+ add r4, r0, #0
+ add r2, r1, #0
+ bl MOD05_021DBD20
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #0
+ bl MOD05_021DBD34
+ add r0, r4, #0
+ mov r1, #0x1f
+ mov r2, #0
+ bl MOD05_021DBD48
+ mov r1, #2
+ add r0, r4, #0
+ lsl r1, r1, #0xe
+ mov r2, #1
+ mov r3, #0
+ bl MOD05_021DBD5C
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0x16
+ bl MOD05_021DBAEC
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021D7BA0
+MOD05_021D7BA0: ; 0x021D7BA0
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D7BD0 ; =UNK05_021F642C
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r1, #0x10
+ add r0, r2, #0
+ add r2, r1, #0
+ bl FUN_0201D060
+ mov r0, #0x14
+ mov r1, #4
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4, 0
+_021D7BD0: .word UNK05_021F642C
+
+ thumb_func_start MOD05_021D7BD4
+MOD05_021D7BD4: ; 0x021D7BD4
+ push {r3, lr}
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021D7BE0
+MOD05_021D7BE0: ; 0x021D7BE0
+ push {r3, r4, r5, lr}
+ sub sp, #0x80
+ add r4, r0, #0
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ add r0, r4, #0
+ bl FUN_0205E0A8
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x40]
+ bl MOD05_021EF4C4
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r4, #0x2c]
+ bl MOD05_021E805C
+ ldr r5, _021D7C98 ; =UNK_021CED20
+ add r3, sp, #0x40
+ mov r2, #8
+_021D7C0E:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7C0E
+ add r5, sp, #0x40
+ add r3, sp, #0
+ mov r2, #8
+_021D7C1C:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7C1C
+ ldr r3, [sp, #0x28]
+ ldr r1, [sp, #0x38]
+ asr r0, r3, #0x1f
+ lsr r2, r3, #0x12
+ lsl r0, r0, #0xe
+ orr r0, r2
+ mov r2, #2
+ lsl r5, r3, #0xe
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r5, r2
+ adc r0, r3
+ lsl r0, r0, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r0
+ add r0, r1, r2
+ str r0, [sp, #0x38]
+ ldr r1, _021D7C98 ; =UNK_021CED20
+ add r0, sp, #0
+ mov r2, #0x40
+ bl MIi_CpuCopyFast
+ ldr r1, _021D7C9C ; =UNK_021CED98
+ mov r0, #0x50
+ ldr r2, [r1, #0x7c]
+ bic r2, r0
+ str r2, [r1, #0x7c]
+ bl FUN_020B849C
+ ldr r0, [r4, #0x3c]
+ bl MOD05_021E4BA0
+ bl FUN_0201F178
+ ldr r1, _021D7C98 ; =UNK_021CED20
+ add r0, sp, #0x40
+ mov r2, #0x40
+ bl MIi_CpuCopyFast
+ ldr r1, _021D7C9C ; =UNK_021CED98
+ mov r0, #0x50
+ ldr r2, [r1, #0x7c]
+ bic r2, r0
+ str r2, [r1, #0x7c]
+ bl FUN_020B849C
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #4]
+ bl MOD05_021D7FD0
+ ldr r1, _021D7CA0 ; =UNK_02105BB8
+ mov r0, #0
+ ldr r1, [r1]
+ bl FUN_020222B4
+ add sp, #0x80
+ pop {r3, r4, r5, pc}
+ nop
+_021D7C98: .word UNK_021CED20
+_021D7C9C: .word UNK_021CED98
+_021D7CA0: .word UNK_02105BB8
+
+ thumb_func_start MOD05_021D7CA4
+MOD05_021D7CA4: ; 0x021D7CA4
+ push {lr}
+ sub sp, #0xc
+ cmp r0, #1
+ bne _021D7CC6
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+_021D7CC6:
+ cmp r0, #0
+ bne _021D7CE6
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+_021D7CE6:
+ bl ErrorHandling
+ add sp, #0xc
+ pop {pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021D7CF0
+MOD05_021D7CF0: ; 0x021D7CF0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r0, _021D7D44 ; =UNK_02105BB8
+ ldr r0, [r0]
+ lsl r1, r0, #1
+ ldr r0, _021D7D48 ; =0x04000540
+ str r1, [r0]
+ bl MOD05_021D9B54
+ str r0, [r5, #0x4c]
+ bl MOD05_021DA430
+ str r0, [r5, #0x50]
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034724
+ ldr r1, [r5, #0x4c]
+ bl MOD05_021F4978
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034738
+ add r4, r0, #0
+ ldr r0, [r5, #0x30]
+ cmp r0, #0
+ beq _021D7D36
+ bl ErrorHandling
+_021D7D36:
+ mov r0, #4
+ add r1, r4, #0
+ bl MOD05_021D7EE8
+ str r0, [r5, #0x30]
+ pop {r3, r4, r5, pc}
+ nop
+_021D7D44: .word UNK_02105BB8
+_021D7D48: .word 0x04000540
+
+ thumb_func_start MOD05_021D7D4C
+MOD05_021D7D4C: ; 0x021D7D4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ ldr r2, [r4, #0x4c]
+ ldr r3, [r4, #0x5c]
+ bl MOD05_021EF368
+ str r0, [r4, #0x24]
+ mov r0, #8
+ mov r1, #4
+ bl MOD05_021F4498
+ add r1, r4, #0
+ add r1, #0x9c
+ str r0, [r1]
+ bl MOD05_021F4CF8
+ add r1, r4, #0
+ add r1, #0xa4
+ str r0, [r1]
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ bne _021D7D86
+ ldr r0, [r4, #0x24]
+ ldr r1, _021D7D94 ; =MOD05_021F521C
+ add r2, r4, #0
+ bl MOD05_021EF8E8
+_021D7D86:
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0x24]
+ ldr r1, [r2, #8]
+ ldr r2, [r2, #0xc]
+ bl MOD05_021EF434
+ pop {r4, pc}
+ .balign 4, 0
+_021D7D94: .word MOD05_021F521C
+
+ thumb_func_start MOD05_021D7D98
+MOD05_021D7D98: ; 0x021D7D98
+ push {r4, r5, lr}
+ sub sp, #0x14
+ mov r3, #6
+ mov r1, #0x20
+ mov r2, #4
+ lsl r3, r3, #0xe
+ add r4, r0, #0
+ bl MOD05_021E4AE4
+ mov r1, #0x50
+ str r0, [r4, #0x3c]
+ bl MOD05_021E4B38
+ mov r2, #0x20
+ str r2, [sp]
+ mov r0, #5
+ str r2, [sp, #4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ lsl r0, r2, #6
+ str r0, [sp, #0xc]
+ lsl r0, r2, #0xb
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x3c]
+ mov r1, #4
+ add r3, r2, #0
+ bl MOD05_021E4B44
+ ldr r0, [r4, #0x6c]
+ sub r0, r0, #1
+ cmp r0, #1
+ bhi _021D7DE0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl FUN_02058804
+_021D7DE0:
+ ldr r0, [r4, #0x6c]
+ cmp r0, #1
+ ldr r0, [r4, #0x3c]
+ bne _021D7DF0
+ ldr r1, _021D7E44 ; =UNK05_021FC79C
+ bl MOD05_021E4B84
+ b _021D7DF6
+_021D7DF0:
+ ldr r1, _021D7E48 ; =UNK05_021FC718
+ bl MOD05_021E4B84
+_021D7DF6:
+ ldr r0, [r4, #0x30]
+ bl MOD05_021D7F40
+ add r5, r0, #0
+ ldr r0, [r4, #0x30]
+ bl MOD05_021D7F3C
+ add r3, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0x20
+ add r2, r5, #3
+ bl MOD05_021F1CB8
+ ldr r0, [r4, #0x38]
+ bl FUN_02055108
+ ldr r0, [r4, #0x34]
+ bl FUN_020577A8
+ bl FUN_0204F88C
+ ldr r0, [r4, #0x34]
+ bl FUN_02058774
+ ldr r0, [r4, #0x38]
+ bl FUN_02055360
+ ldr r1, [r4, #0x24]
+ bl MOD05_021EF5E0
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_0204B388
+ ldr r1, [r4, #4]
+ str r0, [r1, #0x18]
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_021D7E44: .word UNK05_021FC79C
+_021D7E48: .word UNK05_021FC718
+
+ thumb_func_start MOD05_021D7E4C
+MOD05_021D7E4C: ; 0x021D7E4C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ bl FUN_0201E788
+ bl MOD05_021DBABC
+ str r0, [r4, #0x40]
+ bl MOD05_021D7B64
+ bl MOD05_021DBA00
+ str r0, [r4, #0x44]
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034E10
+ add r5, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_02055360
+ add r1, r4, #0
+ add r2, r5, #0
+ mov r3, #1
+ bl MOD05_021DBD84
+ ldr r0, [r4, #0x2c]
+ bl MOD05_021F4CBC
+ add r1, r0, #0
+ ldr r0, [r4, #0x40]
+ bl MOD05_021DB44C
+ str r0, [r4, #0x48]
+ add r0, r4, #0
+ bl MOD05_021DC0B8
+ ldr r1, [r4, #4]
+ str r0, [r1, #0xc]
+ ldr r0, [r4, #8]
+ bl MOD05_021E320C
+ ldr r1, [r4, #4]
+ str r0, [r1, #8]
+ mov r0, #4
+ bl MOD05_021E80F8
+ str r0, [r4, #0x60]
+ bl MOD05_021DBEF4
+ ldr r1, [r4, #4]
+ str r0, [r1, #0x10]
+ ldr r0, [r4, #0x2c]
+ bl MOD05_021F4C74
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #0x10]
+ bl MOD05_021DBF20
+ add r0, r4, #0
+ bl FUN_0205CDB4
+ add r0, r4, #0
+ bl MOD05_021F38B8
+ ldr r0, _021D7EE4 ; =MOD05_021D74E0
+ add r1, r4, #0
+ bl FUN_02015F10
+ pop {r3, r4, r5, pc}
+ nop
+_021D7EE4: .word MOD05_021D74E0
+
+ thumb_func_start MOD05_021D7EE8
+MOD05_021D7EE8: ; 0x021D7EE8
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ mov r1, #0x64
+ bl AllocFromHeap
+ add r4, r0, #0
+ mov r0, #0x60
+ add r1, r6, #0
+ add r2, r5, #0
+ bl AllocAtEndAndReadWholeNarcMemberByIdPair
+ ldr r1, _021D7F38 ; =0x0000FFFF
+ mov r2, #0
+ add r3, r4, #0
+_021D7F06:
+ add r2, r2, #1
+ str r1, [r3, #4]
+ add r3, r3, #4
+ cmp r2, #0x18
+ blt _021D7F06
+ ldr r5, _021D7F38 ; =0x0000FFFF
+ mov r3, #0
+ add r1, r0, #0
+ add r2, r4, #0
+_021D7F18:
+ ldrh r6, [r1]
+ str r6, [r2, #4]
+ ldrh r6, [r1]
+ cmp r6, r5
+ beq _021D7F2C
+ add r3, r3, #1
+ add r1, r1, #2
+ add r2, r2, #4
+ cmp r3, #0x18
+ blt _021D7F18
+_021D7F2C:
+ strh r3, [r4]
+ bl FreeToHeap
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021D7F38: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021D7F3C
+MOD05_021D7F3C: ; 0x021D7F3C
+ add r0, r0, #4
+ bx lr
+
+ thumb_func_start MOD05_021D7F40
+MOD05_021D7F40: ; 0x021D7F40
+ ldrh r0, [r0]
+ bx lr
+
+ thumb_func_start MOD05_021D7F44
+MOD05_021D7F44: ; 0x021D7F44
+ ldr r3, _021D7F48 ; =FreeToHeap
+ bx r3
+ .balign 4, 0
+_021D7F48: .word FreeToHeap
+
+ .section .rodata
+
+ .global UNK05_021F642C
+UNK05_021F642C: ; 0x021F642C
+ .word 0x00000014, 0x00004000, 0x00004000, 0x00000004
+
+ .global UNK05_021F643C
+UNK05_021F643C: ; 0x021F643C
+ .word 0x00000001, 0x00000000, 0x00000000, 0x00000001
+
+ .global UNK05_021F644C
+UNK05_021F644C: ; 0x021F644C
+ .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
+ .word 0x05010001, 0x00000301, 0x00000000
+
+ .global UNK05_021F6468
+UNK05_021F6468: ; 0x021F6468
+ .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
+ .word 0x04000001, 0x00000300, 0x00000000
+
+ .global UNK05_021F6484
+UNK05_021F6484: ; 0x021F6484
+ .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
+ .word 0x02020001, 0x00000001, 0x00000000
+
+ .global UNK05_021F64A0
+UNK05_021F64A0: ; 0x021F64A0
+ .word 0x00000004, 0x00000000, 0x00000080, 0x00000000
+ .word 0x00000020, 0x00000000, 0x00000100, 0x00000000
+ .word 0x00000003, 0x00000010
+
+ .global UNK05_021F64C8
+UNK05_021F64C8: ; 0x021F64C8
+ .word MOD05_021D7504, MOD05_021D767C, MOD05_021D76C0, 0xFFFFFFFF
diff --git a/arm9/modules/05/asm/mod05_021D7F4C.s b/arm9/modules/05/asm/mod05_021D7F4C.s
new file mode 100644
index 00000000..2ba8b668
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021D7F4C.s
@@ -0,0 +1,224 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021D7F4C
+MOD05_021D7F4C: ; 0x021D7F4C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #0x14
+ add r6, r2, #0
+ bl AllocFromHeap
+ add r4, r0, #0
+ str r7, [r4]
+ str r5, [r4, #4]
+ mov r0, #0x14
+ add r7, r6, #0
+ mul r7, r0
+ str r6, [r4, #8]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ ldr r1, [r4, #0xc]
+ mov r0, #0
+ add r2, r7, #0
+ bl MIi_CpuClear32
+ add r0, r6, #0
+ bl FUN_0201B578
+ add r1, r0, #0
+ add r0, r5, #0
+ bl AllocFromHeap
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #0x10]
+ add r0, r6, #0
+ bl FUN_0201B580
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021D7F9C
+MOD05_021D7F9C: ; 0x021D7F9C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ mov r6, #0
+ cmp r0, #0
+ ble _021D7FBC
+ add r4, r6, #0
+_021D7FAA:
+ ldr r0, [r5, #0xc]
+ add r0, r0, r4
+ bl MOD05_021D80A4
+ ldr r0, [r5, #8]
+ add r6, r6, #1
+ add r4, #0x14
+ cmp r6, r0
+ blt _021D7FAA
+_021D7FBC:
+ ldr r0, [r5, #0xc]
+ bl FreeToHeap
+ ldr r0, [r5, #0x10]
+ bl FreeToHeap
+ add r0, r5, #0
+ bl FreeToHeap
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021D7FD0
+MOD05_021D7FD0: ; 0x021D7FD0
+ ldr r3, _021D7FD8 ; =FUN_0201B5CC
+ ldr r0, [r0, #0x10]
+ bx r3
+ nop
+_021D7FD8: .word FUN_0201B5CC
+
+ thumb_func_start MOD05_021D7FDC
+MOD05_021D7FDC: ; 0x021D7FDC
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020373AC
+ cmp r0, #0
+ beq _021D7FFE
+ ldr r0, [r4, #0xc]
+ ldr r3, [r0, #0x10]
+ cmp r3, #0
+ beq _021D7FFE
+ ldr r1, [r4]
+ ldr r2, [r4, #0x10]
+ ldr r1, [r1]
+ add r0, r4, #0
+ blx r3
+_021D7FFE:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021D8000
+MOD05_021D8000: ; 0x021D8000
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020373AC
+ cmp r0, #0
+ beq _021D8022
+ ldr r0, [r4, #0xc]
+ ldr r3, [r0, #0x14]
+ cmp r3, #0
+ beq _021D8022
+ ldr r1, [r4]
+ ldr r2, [r4, #0x10]
+ ldr r1, [r1]
+ add r0, r4, #0
+ blx r3
+_021D8022:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021D8024
+MOD05_021D8024: ; 0x021D8024
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r2, [r5, #8]
+ add r6, r1, #0
+ mov r1, #0
+ ldr r4, [r5, #0xc]
+ cmp r2, #0
+ ble _021D8094
+_021D8034:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021D808C
+ ldr r0, _021D809C ; =MOD05_021D7FDC
+ ldr r2, [r6]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ ldr r0, [r5, #0x10]
+ ldr r1, _021D80A0 ; =MOD05_021D8000
+ ldr r3, [r6]
+ add r2, r4, #0
+ bl FUN_0201B60C
+ str r0, [r4, #8]
+ str r5, [r4]
+ str r6, [r4, #0xc]
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021D8062
+ bl ErrorHandling
+_021D8062:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _021D806C
+ bl ErrorHandling
+_021D806C:
+ ldrh r1, [r6, #4]
+ cmp r1, #0
+ beq _021D807A
+ ldr r0, [r5, #4]
+ bl AllocFromHeap
+ str r0, [r4, #0x10]
+_021D807A:
+ ldr r3, [r6, #8]
+ cmp r3, #0
+ beq _021D8088
+ ldr r1, [r5]
+ ldr r2, [r4, #0x10]
+ add r0, r4, #0
+ blx r3
+_021D8088:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_021D808C:
+ add r1, r1, #1
+ add r4, #0x14
+ cmp r1, r2
+ blt _021D8034
+_021D8094:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021D809C: .word MOD05_021D7FDC
+_021D80A0: .word MOD05_021D8000
+
+ thumb_func_start MOD05_021D80A4
+MOD05_021D80A4: ; 0x021D80A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _021D80E2
+ ldr r1, [r4, #0xc]
+ ldr r3, [r1, #0xc]
+ cmp r3, #0
+ beq _021D80BE
+ ldr r1, [r4]
+ ldr r2, [r4, #0x10]
+ ldr r1, [r1]
+ blx r3
+_021D80BE:
+ ldr r0, [r4, #0xc]
+ ldrh r0, [r0, #4]
+ cmp r0, #0
+ beq _021D80CC
+ ldr r0, [r4, #0x10]
+ bl FreeToHeap
+_021D80CC:
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #8]
+ bl FUN_0200CAB4
+ mov r0, #0
+ add r1, r4, #0
+ mov r2, #0x14
+ bl MIi_CpuClear32
+_021D80E2:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021D80E4
+MOD05_021D80E4: ; 0x021D80E4
+ ldr r0, [r0, #0x10]
+ bx lr
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 72a2c0e5..75ed8405 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -3,1435 +3,6 @@
.section .text
.balign 4, 0
- thumb_func_start MOD05_021D74E0
-MOD05_021D74E0: ; 0x021D74E0
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #8]
- bl FUN_0201AB60
- bl FUN_0201C30C
- bl FUN_02009F80
- ldr r0, [r4, #0x34]
- bl FUN_020583A0
- bl MOD05_021F2D48
- bl FUN_0201F2D8
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021D7504
-MOD05_021D7504: ; 0x021D7504
- push {r4, r5, r6, lr}
- add r5, r1, #0
- mov r6, #0
- bl FUN_0200628C
- ldr r1, [r5]
- add r4, r0, #0
- cmp r1, #3
- bls _021D7518
- b _021D7666
-_021D7518:
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021D7524: ; jump table
- .short _021D752C - _021D7524 - 2 ; case 0
- .short _021D75DE - _021D7524 - 2 ; case 1
- .short _021D7654 - _021D7524 - 2 ; case 2
- .short _021D765A - _021D7524 - 2 ; case 3
-_021D752C:
- add r0, r6, #0
- add r1, r0, #0
- bl FUN_02015F10
- bl FUN_02015F1C
- ldr r1, _021D7670 ; =0x04000050
- add r0, r6, #0
- strh r0, [r1]
- ldr r1, _021D7674 ; =0x04001050
- strh r0, [r1]
- bl FUN_0200E388
- mov r0, #1
- bl FUN_0200E388
- add r0, r4, #0
- bl FUN_020489DC
- ldr r0, [r4, #0x70]
- ldr r0, [r0]
- lsl r0, r0, #8
- lsr r0, r0, #0x1c
- beq _021D7564
- ldr r0, _021D7678 ; =SDK_OVERLAY_MODULE_06_ID
- mov r1, #2
- bl HandleLoadOverlay
-_021D7564:
- ldr r2, [r4, #0x70]
- mov r0, #3
- ldr r2, [r2, #4]
- mov r1, #4
- bl FUN_0201681C
- ldr r0, [r4, #4]
- cmp r0, #0
- beq _021D757A
- bl ErrorHandling
-_021D757A:
- mov r0, #4
- mov r1, #0x28
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0x28
- str r0, [r4, #4]
- bl MI_CpuFill8
- add r0, r4, #0
- mov r1, #4
- mov r2, #8
- bl MOD05_021D7F4C
- ldr r1, [r4, #4]
- str r0, [r1, #4]
- bl MOD05_021D7A00
- mov r0, #0x80
- mov r1, #4
- bl FUN_0201C24C
- mov r0, #4
- add r1, r0, #0
- bl FUN_0201F100
- mov r0, #4
- bl FUN_0201B2EC
- bl MOD05_021D7BA0
- bl MOD05_021D7B38
- bl FUN_0201E7A0
- mov r0, #4
- bl FUN_02016B94
- str r0, [r4, #8]
- bl MOD05_021D7A30
- mov r0, #0
- mov r1, #1
- bl FUN_02054590
- add r0, r4, #0
- mov r1, #4
- bl FUN_0203989C
- b _021D7666
-_021D75DE:
- bl MOD05_021D7CF0
- ldr r0, [r4, #0x2c]
- bl MOD05_021F49AC
- mov r0, #4
- bl MOD05_021E7C00
- add r1, r4, #0
- add r1, #0xa0
- str r0, [r1]
- add r0, r4, #0
- bl MOD05_021F5B9C
- add r0, r4, #0
- bl MOD05_021D7D4C
- add r0, r4, #0
- bl MOD05_021D7D98
- add r0, r4, #0
- bl MOD05_021D7E4C
- ldr r0, [r4, #0xc]
- bl FUN_02034E30
- bl FUN_02034DEC
- add r1, r0, #0
- ldr r0, [r4, #4]
- ldr r0, [r0, #0xc]
- bl MOD05_021DC124
- ldr r1, [r4, #0x1c]
- add r0, r4, #0
- ldr r1, [r1]
- bl FUN_0204ADBC
- add r0, r4, #0
- mov r1, #3
- bl FUN_0203989C
- mov r0, #4
- bl MOD05_021F45B4
- ldr r1, [r4, #4]
- str r0, [r1, #0x1c]
- ldr r0, [r4, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45E8
- ldr r1, [r4, #4]
- mov r0, #4
- ldr r1, [r1, #0x1c]
- bl MOD05_021F46C8
- ldr r1, [r4, #4]
- str r0, [r1, #0x20]
- b _021D7666
-_021D7654:
- bl MOD05_021DBE1C
- b _021D7666
-_021D765A:
- bl MOD05_021DBE38
- cmp r0, #0
- beq _021D7666
- mov r6, #1
- str r6, [r4, #0x64]
-_021D7666:
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- add r0, r6, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021D7670: .word 0x04000050
-_021D7674: .word 0x04001050
-_021D7678: .word SDK_OVERLAY_MODULE_06_ID
-
- thumb_func_start MOD05_021D767C
-MOD05_021D767C: ; 0x021D767C
- push {r4, lr}
- bl FUN_0200628C
- add r4, r0, #0
- bl MOD05_021D7864
- cmp r0, #0
- beq _021D76A8
- add r0, r4, #0
- bl FUN_0204B490
- add r0, r4, #0
- bl MOD05_021D79B4
- mov r1, #1
- add r0, r4, #0
- add r2, r1, #0
- bl MOD05_021EFA9C
- add r0, r4, #0
- bl MOD05_021D7894
-_021D76A8:
- add r0, r4, #0
- mov r1, #0xf
- bl MOD05_021D795C
- ldr r0, [r4, #0x64]
- cmp r0, #0
- beq _021D76BA
- mov r0, #0
- pop {r4, pc}
-_021D76BA:
- mov r0, #1
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021D76C0
-MOD05_021D76C0: ; 0x021D76C0
- push {r3, r4, r5, lr}
- add r5, r1, #0
- bl FUN_0200628C
- add r4, r0, #0
- ldr r1, [r4, #0x24]
- bl MOD05_021EE52C
- ldr r0, [r5]
- cmp r0, #0
- beq _021D76E2
- cmp r0, #1
- beq _021D7782
- cmp r0, #2
- bne _021D76E0
- b _021D7806
-_021D76E0:
- b _021D785A
-_021D76E2:
- add r0, r4, #0
- bl FUN_0205CDD8
- ldr r0, [r4, #0x24]
- bl MOD05_021EF5FC
- ldr r0, [r4, #0x38]
- bl FUN_02055320
- ldr r1, [r4, #0x1c]
- str r0, [r1, #8]
- ldr r0, [r4, #0x38]
- bl FUN_0205532C
- ldr r1, [r4, #0x1c]
- str r0, [r1, #0xc]
- ldr r0, [r4, #0x38]
- bl FUN_020552F8
- ldr r1, [r4, #0x1c]
- str r0, [r1, #0x10]
- add r0, r4, #0
- add r0, #0x9c
- ldr r0, [r0]
- bl MOD05_021F450C
- ldr r0, [r4, #0x4c]
- cmp r0, #0
- bne _021D7720
- bl ErrorHandling
-_021D7720:
- ldr r0, [r4, #0x24]
- bl MOD05_021EF514
- ldr r0, [r4, #0x4c]
- bl MOD05_021D9F48
- ldr r0, [r4, #0x4c]
- bl MOD05_021DA018
- add r0, r4, #0
- add r0, #0x50
- bl MOD05_021DA450
- ldr r0, [r4, #4]
- ldr r0, [r0, #0x10]
- bl MOD05_021DC094
- ldr r0, [r4, #4]
- ldr r0, [r0, #0x10]
- bl MOD05_021DC0AC
- ldr r0, [r4, #4]
- mov r1, #0
- str r1, [r0, #0x10]
- ldr r0, [r4, #0x34]
- bl FUN_02057750
- ldr r0, [r4, #0x34]
- bl MOD05_021F1D2C
- ldr r0, [r4, #0x34]
- bl FUN_02058768
- ldr r0, [r4, #0x3c]
- bl MOD05_021E4BA8
- ldr r0, [r4, #0x30]
- bl MOD05_021D7F44
- mov r0, #0
- str r0, [r4, #0x30]
- add r4, #0xa0
- ldr r0, [r4]
- bl MOD05_021E7C14
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021D785A
-_021D7782:
- ldr r0, [r4, #0x24]
- bl MOD05_021EF5C4
- cmp r0, #1
- bne _021D785A
- add r0, r4, #0
- add r0, #0x2c
- bl MOD05_021F4BF8
- ldr r0, [r4, #0x24]
- bl MOD05_021EF5A8
- add r0, r4, #0
- add r0, #0xa4
- bl MOD05_021F4D1C
- add r0, r4, #0
- bl MOD05_021DBDEC
- add r0, r4, #0
- add r0, #0x48
- bl MOD05_021DB4B0
- ldr r0, [r4, #0x60]
- bl MOD05_021E8110
- ldr r0, [r4, #4]
- ldr r0, [r0, #8]
- bl MOD05_021E3248
- ldr r0, [r4, #4]
- ldr r0, [r0, #0xc]
- bl MOD05_021DC0F8
- ldr r0, [r4, #4]
- ldr r0, [r0, #0x20]
- bl MOD05_021F4704
- ldr r0, [r4, #4]
- ldr r0, [r0, #0x1c]
- bl MOD05_021F45C8
- ldr r0, [r4, #4]
- ldr r0, [r0, #0x18]
- bl FUN_0204B3B8
- add r0, r4, #0
- add r0, #0x44
- bl MOD05_021DBA1C
- add r0, r4, #0
- add r0, #0x40
- bl MOD05_021DBAD8
- bl MOD05_021D7B5C
- ldr r0, [r4, #8]
- bl MOD05_021D7B10
- add r0, r4, #0
- bl MOD05_021DBE58
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- b _021D785A
-_021D7806:
- add r0, r4, #0
- bl MOD05_021DBE74
- cmp r0, #0
- beq _021D785A
- bl MOD05_021D7BD4
- bl FUN_0201F140
- bl FUN_0201C29C
- bl FUN_0201B398
- ldr r0, [r4, #4]
- ldr r0, [r0, #4]
- bl MOD05_021D7F9C
- mov r0, #0
- add r1, r0, #0
- bl FUN_02015F10
- ldr r0, [r4, #8]
- bl FreeToHeap
- ldr r0, [r4, #4]
- bl FreeToHeap
- mov r0, #0
- str r0, [r4, #4]
- mov r0, #4
- bl FUN_020168D0
- ldr r0, [r4, #0x70]
- ldr r0, [r0]
- lsl r0, r0, #8
- lsr r0, r0, #0x1c
- beq _021D7856
- ldr r0, _021D7860 ; =SDK_OVERLAY_MODULE_06_ID
- bl UnloadOverlayByID
-_021D7856:
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021D785A:
- mov r0, #0
- pop {r3, r4, r5, pc}
- nop
-_021D7860: .word SDK_OVERLAY_MODULE_06_ID
-
- thumb_func_start MOD05_021D7864
-MOD05_021D7864: ; 0x021D7864
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x38]
- bl FUN_02055320
- add r4, r0, #0
- ldr r0, [r5, #0x38]
- bl FUN_0205532C
- ldr r2, [r5, #0x1c]
- ldr r1, [r2, #8]
- cmp r4, r1
- bne _021D7884
- ldr r1, [r2, #0xc]
- cmp r0, r1
- beq _021D788E
-_021D7884:
- str r4, [r2, #8]
- ldr r1, [r5, #0x1c]
- str r0, [r1, #0xc]
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021D788E:
- mov r0, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021D7894
-MOD05_021D7894: ; 0x021D7894
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r5, r0, #0
- ldr r0, [r5, #0x38]
- bl FUN_02055320
- asr r1, r0, #4
- lsr r1, r1, #0x1b
- add r1, r0, r1
- ldr r0, [r5, #0x38]
- asr r4, r1, #5
- bl FUN_0205532C
- asr r1, r0, #4
- lsr r1, r1, #0x1b
- add r1, r0, r1
- asr r2, r1, #5
- ldr r0, [r5, #0x28]
- add r1, r4, #0
- bl FUN_0203451C
- add r4, r0, #0
- ldr r0, [r5, #0x1c]
- ldr r6, [r0]
- cmp r4, r6
- bne _021D78CE
- add sp, #8
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021D78CE:
- ldr r0, [r5, #0xc]
- bl FUN_02034E30
- add r7, r0, #0
- ldr r0, [r5, #0x1c]
- add r1, r4, #0
- str r4, [r0]
- add r0, r5, #0
- bl FUN_02034A60
- add r0, r5, #0
- mov r1, #1
- bl FUN_020489FC
- add r0, r5, #0
- bl FUN_02034B64
- str r0, [sp, #4]
- add r0, r5, #0
- bl FUN_02034B6C
- str r0, [sp]
- ldr r0, [r5, #0x34]
- ldr r3, [sp, #4]
- add r1, r6, #0
- add r2, r4, #0
- bl FUN_020573C8
- add r0, r5, #0
- add r0, #0x90
- ldr r0, [r0]
- bl FUN_0205DD40
- ldr r1, [r5, #0x1c]
- add r0, r5, #0
- ldr r1, [r1]
- bl FUN_0204AB58
- add r1, r0, #0
- add r0, r5, #0
- mov r2, #1
- bl FUN_0204ABDC
- add r0, r5, #0
- bl FUN_02034AC8
- add r0, r7, #0
- bl FUN_02034DEC
- add r1, r0, #0
- ldr r0, [r5, #4]
- ldr r0, [r0, #0xc]
- bl MOD05_021DC174
- add r0, r6, #0
- bl FUN_02034824
- add r6, r0, #0
- add r0, r4, #0
- bl FUN_02034824
- add r1, r0, #0
- cmp r6, r1
- beq _021D7956
- ldr r0, [r5, #4]
- ldr r0, [r0, #8]
- bl MOD05_021E3270
-_021D7956:
- mov r0, #1
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021D795C
-MOD05_021D795C: ; 0x021D795C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl FUN_0204646C
- cmp r0, #0
- bne _021D7970
- add r0, r5, #0
- bl FUN_0204B0F8
-_021D7970:
- ldr r0, [r5, #0x48]
- bl MOD05_021DB4D0
- add r0, r5, #0
- bl MOD05_021E8158
- mov r0, #1
- tst r0, r4
- beq _021D798A
- ldr r0, [r5, #4]
- ldr r0, [r0, #0x10]
- bl MOD05_021DBFF8
-_021D798A:
- mov r0, #8
- tst r0, r4
- beq _021D7996
- ldr r0, [r5, #0x4c]
- bl MOD05_021DA1AC
-_021D7996:
- mov r0, #2
- tst r0, r4
- beq _021D79A4
- ldr r1, [r5, #0x24]
- add r0, r5, #0
- bl MOD05_021EE52C
-_021D79A4:
- mov r0, #4
- tst r0, r4
- beq _021D79B0
- add r0, r5, #0
- bl MOD05_021D7BE0
-_021D79B0:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021D79B4
-MOD05_021D79B4: ; 0x021D79B4
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x1c]
- ldr r0, [r0]
- bl FUN_02034908
- cmp r0, #0
- beq _021D79FE
- ldr r0, [r5, #0xc]
- bl FUN_02034E30
- bl FUN_02034E0C
- add r7, r0, #0
- ldr r0, [r5, #0x38]
- bl FUN_02055320
- asr r1, r0, #4
- lsr r1, r1, #0x1b
- add r1, r0, r1
- ldr r0, [r5, #0x38]
- asr r6, r1, #5
- bl FUN_0205532C
- asr r1, r0, #4
- lsr r1, r1, #0x1b
- add r1, r0, r1
- ldr r0, [r5, #0x38]
- asr r4, r1, #5
- bl FUN_020552F8
- add r3, r0, #0
- add r0, r7, #0
- add r1, r6, #0
- add r2, r4, #0
- bl FUN_0204AE5C
-_021D79FE:
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021D7A00
-MOD05_021D7A00: ; 0x021D7A00
- push {r4, lr}
- sub sp, #0x28
- ldr r4, _021D7A1C ; =UNK05_021F64A0
- add r3, sp, #0
- mov r2, #5
-_021D7A0A:
- ldmia r4!, {r0, r1}
- stmia r3!, {r0, r1}
- sub r2, r2, #1
- bne _021D7A0A
- add r0, sp, #0
- bl FUN_0201E66C
- add sp, #0x28
- pop {r4, pc}
- .balign 4, 0
-_021D7A1C: .word UNK05_021F64A0
-
- thumb_func_start MOD05_021D7A20
-MOD05_021D7A20: ; 0x021D7A20
- ldr r3, _021D7A24 ; =MOD05_021D7A30
- bx r3
- .balign 4, 0
-_021D7A24: .word MOD05_021D7A30
-
- thumb_func_start MOD05_021D7A28
-MOD05_021D7A28: ; 0x021D7A28
- ldr r3, _021D7A2C ; =MOD05_021D7B10
- bx r3
- .balign 4, 0
-_021D7A2C: .word MOD05_021D7B10
-
- thumb_func_start MOD05_021D7A30
-MOD05_021D7A30: ; 0x021D7A30
- push {r3, r4, r5, lr}
- sub sp, #0x68
- ldr r5, _021D7B00 ; =UNK05_021F643C
- add r3, sp, #0x58
- add r4, r0, #0
- add r2, r3, #0
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- add r0, r2, #0
- bl FUN_02016BBC
- ldr r5, _021D7B04 ; =UNK05_021F6468
- add r3, sp, #0x3c
- 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]
- mov r1, #1
- str r0, [r3]
- add r0, r4, #0
- mov r3, #0
- bl FUN_02016C18
- mov r0, #1
- mov r1, #0x20
- mov r2, #0
- mov r3, #4
- bl FUN_02017F18
- add r0, r4, #0
- mov r1, #1
- bl FUN_02018744
- ldr r5, _021D7B08 ; =UNK05_021F644C
- add r3, sp, #0x20
- 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]
- mov r1, #2
- str r0, [r3]
- add r0, r4, #0
- mov r3, #0
- bl FUN_02016C18
- mov r0, #2
- mov r1, #0x20
- mov r2, #0
- mov r3, #4
- bl FUN_02017F18
- add r0, r4, #0
- mov r1, #2
- bl FUN_02018744
- ldr r5, _021D7B0C ; =UNK05_021F6484
- 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]
- mov r1, #3
- str r0, [r3]
- add r0, r4, #0
- mov r3, #0
- bl FUN_02016C18
- mov r0, #3
- mov r1, #0x20
- mov r2, #0
- mov r3, #4
- bl FUN_02017F18
- add r0, r4, #0
- mov r1, #3
- bl FUN_02018744
- mov r0, #0
- add r1, sp, #0
- strh r0, [r1]
- mov r1, #2
- bl DC_FlushRange
- add r0, sp, #0
- mov r1, #0
- mov r2, #2
- bl GX_LoadBGPltt
- add sp, #0x68
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021D7B00: .word UNK05_021F643C
-_021D7B04: .word UNK05_021F6468
-_021D7B08: .word UNK05_021F644C
-_021D7B0C: .word UNK05_021F6484
-
- thumb_func_start MOD05_021D7B10
-MOD05_021D7B10: ; 0x021D7B10
- push {r4, lr}
- add r4, r0, #0
- mov r0, #0xf
- mov r1, #0
- bl FUN_0201E6E4
- add r0, r4, #0
- mov r1, #1
- bl FUN_020178A0
- add r0, r4, #0
- mov r1, #2
- bl FUN_020178A0
- add r0, r4, #0
- mov r1, #3
- bl FUN_020178A0
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021D7B38
-MOD05_021D7B38: ; 0x021D7B38
- push {lr}
- sub sp, #0x14
- bl FUN_020B0FC0
- mov r0, #0
- str r0, [sp]
- mov r1, #0x7c
- str r1, [sp, #4]
- str r0, [sp, #8]
- mov r3, #0x1f
- str r3, [sp, #0xc]
- mov r2, #4
- str r2, [sp, #0x10]
- add r2, r0, #0
- bl FUN_02009EAC
- add sp, #0x14
- pop {pc}
-
- thumb_func_start MOD05_021D7B5C
-MOD05_021D7B5C: ; 0x021D7B5C
- ldr r3, _021D7B60 ; =FUN_02009FA0
- bx r3
- .balign 4, 0
-_021D7B60: .word FUN_02009FA0
-
- thumb_func_start MOD05_021D7B64
-MOD05_021D7B64: ; 0x021D7B64
- push {r4, lr}
- mov r1, #0
- add r4, r0, #0
- add r2, r1, #0
- bl MOD05_021DBD20
- add r0, r4, #0
- mov r1, #2
- mov r2, #0
- bl MOD05_021DBD34
- add r0, r4, #0
- mov r1, #0x1f
- mov r2, #0
- bl MOD05_021DBD48
- mov r1, #2
- add r0, r4, #0
- lsl r1, r1, #0xe
- mov r2, #1
- mov r3, #0
- bl MOD05_021DBD5C
- mov r1, #1
- add r0, r4, #0
- lsl r1, r1, #0x16
- bl MOD05_021DBAEC
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021D7BA0
-MOD05_021D7BA0: ; 0x021D7BA0
- push {r4, lr}
- sub sp, #0x10
- ldr r4, _021D7BD0 ; =UNK05_021F642C
- add r3, sp, #0
- add r2, r3, #0
- ldmia r4!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r4!, {r0, r1}
- stmia r3!, {r0, r1}
- mov r1, #0x10
- add r0, r2, #0
- add r2, r1, #0
- bl FUN_0201D060
- mov r0, #0x14
- mov r1, #4
- bl FUN_0201E00C
- bl FUN_0201D168
- bl FUN_0201E0BC
- add sp, #0x10
- pop {r4, pc}
- .balign 4, 0
-_021D7BD0: .word UNK05_021F642C
-
- thumb_func_start MOD05_021D7BD4
-MOD05_021D7BD4: ; 0x021D7BD4
- push {r3, lr}
- bl FUN_0201D12C
- bl FUN_0201E08C
- pop {r3, pc}
-
- thumb_func_start MOD05_021D7BE0
-MOD05_021D7BE0: ; 0x021D7BE0
- push {r3, r4, r5, lr}
- sub sp, #0x80
- add r4, r0, #0
- bl FUN_020222AC
- bl FUN_0201EBA4
- add r0, r4, #0
- bl FUN_0205E0A8
- ldr r0, [r4, #0x24]
- ldr r1, [r4, #0x40]
- bl MOD05_021EF4C4
- add r0, r4, #0
- add r0, #0xa0
- ldr r0, [r0]
- ldr r1, [r4, #0x2c]
- bl MOD05_021E805C
- ldr r5, _021D7C98 ; =UNK_021CED20
- add r3, sp, #0x40
- mov r2, #8
-_021D7C0E:
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- sub r2, r2, #1
- bne _021D7C0E
- add r5, sp, #0x40
- add r3, sp, #0
- mov r2, #8
-_021D7C1C:
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- sub r2, r2, #1
- bne _021D7C1C
- ldr r3, [sp, #0x28]
- ldr r1, [sp, #0x38]
- asr r0, r3, #0x1f
- lsr r2, r3, #0x12
- lsl r0, r0, #0xe
- orr r0, r2
- mov r2, #2
- lsl r5, r3, #0xe
- mov r3, #0
- lsl r2, r2, #0xa
- add r2, r5, r2
- adc r0, r3
- lsl r0, r0, #0x14
- lsr r2, r2, #0xc
- orr r2, r0
- add r0, r1, r2
- str r0, [sp, #0x38]
- ldr r1, _021D7C98 ; =UNK_021CED20
- add r0, sp, #0
- mov r2, #0x40
- bl MIi_CpuCopyFast
- ldr r1, _021D7C9C ; =UNK_021CED98
- mov r0, #0x50
- ldr r2, [r1, #0x7c]
- bic r2, r0
- str r2, [r1, #0x7c]
- bl FUN_020B849C
- ldr r0, [r4, #0x3c]
- bl MOD05_021E4BA0
- bl FUN_0201F178
- ldr r1, _021D7C98 ; =UNK_021CED20
- add r0, sp, #0x40
- mov r2, #0x40
- bl MIi_CpuCopyFast
- ldr r1, _021D7C9C ; =UNK_021CED98
- mov r0, #0x50
- ldr r2, [r1, #0x7c]
- bic r2, r0
- str r2, [r1, #0x7c]
- bl FUN_020B849C
- ldr r0, [r4, #4]
- ldr r0, [r0, #4]
- bl MOD05_021D7FD0
- ldr r1, _021D7CA0 ; =UNK_02105BB8
- mov r0, #0
- ldr r1, [r1]
- bl FUN_020222B4
- add sp, #0x80
- pop {r3, r4, r5, pc}
- nop
-_021D7C98: .word UNK_021CED20
-_021D7C9C: .word UNK_021CED98
-_021D7CA0: .word UNK_02105BB8
-
- thumb_func_start MOD05_021D7CA4
-MOD05_021D7CA4: ; 0x021D7CA4
- push {lr}
- sub sp, #0xc
- cmp r0, #1
- bne _021D7CC6
- mov r0, #6
- str r0, [sp]
- mov r1, #1
- str r1, [sp, #4]
- mov r0, #4
- str r0, [sp, #8]
- mov r0, #0
- add r2, r1, #0
- add r3, r0, #0
- bl FUN_0200E1D0
- add sp, #0xc
- pop {pc}
-_021D7CC6:
- cmp r0, #0
- bne _021D7CE6
- mov r0, #6
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- str r0, [sp, #8]
- mov r0, #0
- add r1, r0, #0
- add r2, r0, #0
- add r3, r0, #0
- bl FUN_0200E1D0
- add sp, #0xc
- pop {pc}
-_021D7CE6:
- bl ErrorHandling
- add sp, #0xc
- pop {pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021D7CF0
-MOD05_021D7CF0: ; 0x021D7CF0
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #1
- mov r1, #0
- bl FUN_0201E6E4
- ldr r0, _021D7D44 ; =UNK_02105BB8
- ldr r0, [r0]
- lsl r1, r0, #1
- ldr r0, _021D7D48 ; =0x04000540
- str r1, [r0]
- bl MOD05_021D9B54
- str r0, [r5, #0x4c]
- bl MOD05_021DA430
- str r0, [r5, #0x50]
- ldr r0, [r5, #0x1c]
- ldr r0, [r0]
- bl FUN_02034724
- ldr r1, [r5, #0x4c]
- bl MOD05_021F4978
- str r0, [r5, #0x2c]
- ldr r0, [r5, #0x1c]
- ldr r0, [r0]
- bl FUN_02034738
- add r4, r0, #0
- ldr r0, [r5, #0x30]
- cmp r0, #0
- beq _021D7D36
- bl ErrorHandling
-_021D7D36:
- mov r0, #4
- add r1, r4, #0
- bl MOD05_021D7EE8
- str r0, [r5, #0x30]
- pop {r3, r4, r5, pc}
- nop
-_021D7D44: .word UNK_02105BB8
-_021D7D48: .word 0x04000540
-
- thumb_func_start MOD05_021D7D4C
-MOD05_021D7D4C: ; 0x021D7D4C
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x28]
- ldr r1, [r4, #0x2c]
- ldr r2, [r4, #0x4c]
- ldr r3, [r4, #0x5c]
- bl MOD05_021EF368
- str r0, [r4, #0x24]
- mov r0, #8
- mov r1, #4
- bl MOD05_021F4498
- add r1, r4, #0
- add r1, #0x9c
- str r0, [r1]
- bl MOD05_021F4CF8
- add r1, r4, #0
- add r1, #0xa4
- str r0, [r1]
- ldr r0, [r4, #0x6c]
- cmp r0, #0
- bne _021D7D86
- ldr r0, [r4, #0x24]
- ldr r1, _021D7D94 ; =MOD05_021F521C
- add r2, r4, #0
- bl MOD05_021EF8E8
-_021D7D86:
- ldr r2, [r4, #0x1c]
- ldr r0, [r4, #0x24]
- ldr r1, [r2, #8]
- ldr r2, [r2, #0xc]
- bl MOD05_021EF434
- pop {r4, pc}
- .balign 4, 0
-_021D7D94: .word MOD05_021F521C
-
- thumb_func_start MOD05_021D7D98
-MOD05_021D7D98: ; 0x021D7D98
- push {r4, r5, lr}
- sub sp, #0x14
- mov r3, #6
- mov r1, #0x20
- mov r2, #4
- lsl r3, r3, #0xe
- add r4, r0, #0
- bl MOD05_021E4AE4
- mov r1, #0x50
- str r0, [r4, #0x3c]
- bl MOD05_021E4B38
- mov r2, #0x20
- str r2, [sp]
- mov r0, #5
- str r2, [sp, #4]
- lsl r0, r0, #0xc
- str r0, [sp, #8]
- lsl r0, r2, #6
- str r0, [sp, #0xc]
- lsl r0, r2, #0xb
- str r0, [sp, #0x10]
- ldr r0, [r4, #0x3c]
- mov r1, #4
- add r3, r2, #0
- bl MOD05_021E4B44
- ldr r0, [r4, #0x6c]
- sub r0, r0, #1
- cmp r0, #1
- bhi _021D7DE0
- ldr r0, [r4, #0x34]
- mov r1, #0
- bl FUN_02058804
-_021D7DE0:
- ldr r0, [r4, #0x6c]
- cmp r0, #1
- ldr r0, [r4, #0x3c]
- bne _021D7DF0
- ldr r1, _021D7E44 ; =UNK05_021FC79C
- bl MOD05_021E4B84
- b _021D7DF6
-_021D7DF0:
- ldr r1, _021D7E48 ; =UNK05_021FC718
- bl MOD05_021E4B84
-_021D7DF6:
- ldr r0, [r4, #0x30]
- bl MOD05_021D7F40
- add r5, r0, #0
- ldr r0, [r4, #0x30]
- bl MOD05_021D7F3C
- add r3, r0, #0
- ldr r0, [r4, #0x34]
- mov r1, #0x20
- add r2, r5, #3
- bl MOD05_021F1CB8
- ldr r0, [r4, #0x38]
- bl FUN_02055108
- ldr r0, [r4, #0x34]
- bl FUN_020577A8
- bl FUN_0204F88C
- ldr r0, [r4, #0x34]
- bl FUN_02058774
- ldr r0, [r4, #0x38]
- bl FUN_02055360
- ldr r1, [r4, #0x24]
- bl MOD05_021EF5E0
- add r0, r4, #0
- mov r1, #4
- bl FUN_0204B388
- ldr r1, [r4, #4]
- str r0, [r1, #0x18]
- add sp, #0x14
- pop {r4, r5, pc}
- nop
-_021D7E44: .word UNK05_021FC79C
-_021D7E48: .word UNK05_021FC718
-
- thumb_func_start MOD05_021D7E4C
-MOD05_021D7E4C: ; 0x021D7E4C
- push {r3, r4, r5, lr}
- add r4, r0, #0
- mov r0, #1
- add r1, r0, #0
- bl FUN_0201E6E4
- bl FUN_0201E788
- bl MOD05_021DBABC
- str r0, [r4, #0x40]
- bl MOD05_021D7B64
- bl MOD05_021DBA00
- str r0, [r4, #0x44]
- ldr r0, [r4, #0xc]
- bl FUN_02034E30
- bl FUN_02034E10
- add r5, r0, #0
- ldr r0, [r4, #0x38]
- bl FUN_02055360
- add r1, r4, #0
- add r2, r5, #0
- mov r3, #1
- bl MOD05_021DBD84
- ldr r0, [r4, #0x2c]
- bl MOD05_021F4CBC
- add r1, r0, #0
- ldr r0, [r4, #0x40]
- bl MOD05_021DB44C
- str r0, [r4, #0x48]
- add r0, r4, #0
- bl MOD05_021DC0B8
- ldr r1, [r4, #4]
- str r0, [r1, #0xc]
- ldr r0, [r4, #8]
- bl MOD05_021E320C
- ldr r1, [r4, #4]
- str r0, [r1, #8]
- mov r0, #4
- bl MOD05_021E80F8
- str r0, [r4, #0x60]
- bl MOD05_021DBEF4
- ldr r1, [r4, #4]
- str r0, [r1, #0x10]
- ldr r0, [r4, #0x2c]
- bl MOD05_021F4C74
- add r1, r0, #0
- ldr r0, [r4, #4]
- ldr r0, [r0, #0x10]
- bl MOD05_021DBF20
- add r0, r4, #0
- bl FUN_0205CDB4
- add r0, r4, #0
- bl MOD05_021F38B8
- ldr r0, _021D7EE4 ; =MOD05_021D74E0
- add r1, r4, #0
- bl FUN_02015F10
- pop {r3, r4, r5, pc}
- nop
-_021D7EE4: .word MOD05_021D74E0
-
- thumb_func_start MOD05_021D7EE8
-MOD05_021D7EE8: ; 0x021D7EE8
- push {r4, r5, r6, lr}
- add r6, r1, #0
- add r5, r0, #0
- mov r1, #0x64
- bl AllocFromHeap
- add r4, r0, #0
- mov r0, #0x60
- add r1, r6, #0
- add r2, r5, #0
- bl AllocAtEndAndReadWholeNarcMemberByIdPair
- ldr r1, _021D7F38 ; =0x0000FFFF
- mov r2, #0
- add r3, r4, #0
-_021D7F06:
- add r2, r2, #1
- str r1, [r3, #4]
- add r3, r3, #4
- cmp r2, #0x18
- blt _021D7F06
- ldr r5, _021D7F38 ; =0x0000FFFF
- mov r3, #0
- add r1, r0, #0
- add r2, r4, #0
-_021D7F18:
- ldrh r6, [r1]
- str r6, [r2, #4]
- ldrh r6, [r1]
- cmp r6, r5
- beq _021D7F2C
- add r3, r3, #1
- add r1, r1, #2
- add r2, r2, #4
- cmp r3, #0x18
- blt _021D7F18
-_021D7F2C:
- strh r3, [r4]
- bl FreeToHeap
- add r0, r4, #0
- pop {r4, r5, r6, pc}
- nop
-_021D7F38: .word 0x0000FFFF
-
- thumb_func_start MOD05_021D7F3C
-MOD05_021D7F3C: ; 0x021D7F3C
- add r0, r0, #4
- bx lr
-
- thumb_func_start MOD05_021D7F40
-MOD05_021D7F40: ; 0x021D7F40
- ldrh r0, [r0]
- bx lr
-
- thumb_func_start MOD05_021D7F44
-MOD05_021D7F44: ; 0x021D7F44
- ldr r3, _021D7F48 ; =FreeToHeap
- bx r3
- .balign 4, 0
-_021D7F48: .word FreeToHeap
-
- thumb_func_start MOD05_021D7F4C
-MOD05_021D7F4C: ; 0x021D7F4C
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- add r7, r0, #0
- add r0, r5, #0
- mov r1, #0x14
- add r6, r2, #0
- bl AllocFromHeap
- add r4, r0, #0
- str r7, [r4]
- str r5, [r4, #4]
- mov r0, #0x14
- add r7, r6, #0
- mul r7, r0
- str r6, [r4, #8]
- add r0, r5, #0
- add r1, r7, #0
- bl AllocFromHeap
- str r0, [r4, #0xc]
- ldr r1, [r4, #0xc]
- mov r0, #0
- add r2, r7, #0
- bl MIi_CpuClear32
- add r0, r6, #0
- bl FUN_0201B578
- add r1, r0, #0
- add r0, r5, #0
- bl AllocFromHeap
- str r0, [r4, #0x10]
- ldr r1, [r4, #0x10]
- add r0, r6, #0
- bl FUN_0201B580
- str r0, [r4, #0x10]
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021D7F9C
-MOD05_021D7F9C: ; 0x021D7F9C
- push {r4, r5, r6, lr}
- add r5, r0, #0
- ldr r0, [r5, #8]
- mov r6, #0
- cmp r0, #0
- ble _021D7FBC
- add r4, r6, #0
-_021D7FAA:
- ldr r0, [r5, #0xc]
- add r0, r0, r4
- bl MOD05_021D80A4
- ldr r0, [r5, #8]
- add r6, r6, #1
- add r4, #0x14
- cmp r6, r0
- blt _021D7FAA
-_021D7FBC:
- ldr r0, [r5, #0xc]
- bl FreeToHeap
- ldr r0, [r5, #0x10]
- bl FreeToHeap
- add r0, r5, #0
- bl FreeToHeap
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021D7FD0
-MOD05_021D7FD0: ; 0x021D7FD0
- ldr r3, _021D7FD8 ; =FUN_0201B5CC
- ldr r0, [r0, #0x10]
- bx r3
- nop
-_021D7FD8: .word FUN_0201B5CC
-
- thumb_func_start MOD05_021D7FDC
-MOD05_021D7FDC: ; 0x021D7FDC
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4]
- ldr r0, [r0]
- bl FUN_020373AC
- cmp r0, #0
- beq _021D7FFE
- ldr r0, [r4, #0xc]
- ldr r3, [r0, #0x10]
- cmp r3, #0
- beq _021D7FFE
- ldr r1, [r4]
- ldr r2, [r4, #0x10]
- ldr r1, [r1]
- add r0, r4, #0
- blx r3
-_021D7FFE:
- pop {r4, pc}
-
- thumb_func_start MOD05_021D8000
-MOD05_021D8000: ; 0x021D8000
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4]
- ldr r0, [r0]
- bl FUN_020373AC
- cmp r0, #0
- beq _021D8022
- ldr r0, [r4, #0xc]
- ldr r3, [r0, #0x14]
- cmp r3, #0
- beq _021D8022
- ldr r1, [r4]
- ldr r2, [r4, #0x10]
- ldr r1, [r1]
- add r0, r4, #0
- blx r3
-_021D8022:
- pop {r4, pc}
-
- thumb_func_start MOD05_021D8024
-MOD05_021D8024: ; 0x021D8024
- push {r4, r5, r6, lr}
- add r5, r0, #0
- ldr r2, [r5, #8]
- add r6, r1, #0
- mov r1, #0
- ldr r4, [r5, #0xc]
- cmp r2, #0
- ble _021D8094
-_021D8034:
- ldr r0, [r4, #4]
- cmp r0, #0
- bne _021D808C
- ldr r0, _021D809C ; =MOD05_021D7FDC
- ldr r2, [r6]
- add r1, r4, #0
- bl FUN_0200CA44
- str r0, [r4, #4]
- ldr r0, [r5, #0x10]
- ldr r1, _021D80A0 ; =MOD05_021D8000
- ldr r3, [r6]
- add r2, r4, #0
- bl FUN_0201B60C
- str r0, [r4, #8]
- str r5, [r4]
- str r6, [r4, #0xc]
- ldr r0, [r4, #4]
- cmp r0, #0
- bne _021D8062
- bl ErrorHandling
-_021D8062:
- ldr r0, [r4, #8]
- cmp r0, #0
- bne _021D806C
- bl ErrorHandling
-_021D806C:
- ldrh r1, [r6, #4]
- cmp r1, #0
- beq _021D807A
- ldr r0, [r5, #4]
- bl AllocFromHeap
- str r0, [r4, #0x10]
-_021D807A:
- ldr r3, [r6, #8]
- cmp r3, #0
- beq _021D8088
- ldr r1, [r5]
- ldr r2, [r4, #0x10]
- add r0, r4, #0
- blx r3
-_021D8088:
- add r0, r4, #0
- pop {r4, r5, r6, pc}
-_021D808C:
- add r1, r1, #1
- add r4, #0x14
- cmp r1, r2
- blt _021D8034
-_021D8094:
- bl ErrorHandling
- mov r0, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021D809C: .word MOD05_021D7FDC
-_021D80A0: .word MOD05_021D8000
-
- thumb_func_start MOD05_021D80A4
-MOD05_021D80A4: ; 0x021D80A4
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4, #4]
- cmp r1, #0
- beq _021D80E2
- ldr r1, [r4, #0xc]
- ldr r3, [r1, #0xc]
- cmp r3, #0
- beq _021D80BE
- ldr r1, [r4]
- ldr r2, [r4, #0x10]
- ldr r1, [r1]
- blx r3
-_021D80BE:
- ldr r0, [r4, #0xc]
- ldrh r0, [r0, #4]
- cmp r0, #0
- beq _021D80CC
- ldr r0, [r4, #0x10]
- bl FreeToHeap
-_021D80CC:
- ldr r0, [r4, #4]
- bl FUN_0200CAB4
- ldr r0, [r4, #8]
- bl FUN_0200CAB4
- mov r0, #0
- add r1, r4, #0
- mov r2, #0x14
- bl MIi_CpuClear32
-_021D80E2:
- pop {r4, pc}
-
- thumb_func_start MOD05_021D80E4
-MOD05_021D80E4: ; 0x021D80E4
- ldr r0, [r0, #0x10]
- bx lr
-
thumb_func_start MOD05_021D80E8
MOD05_021D80E8: ; 0x021D80E8
ldrh r2, [r0]
@@ -63950,39 +62521,6 @@ _021F6428: .word MOD05_021F57F0
.section .rodata
- .global UNK05_021F642C
-UNK05_021F642C: ; 0x021F642C
- .word 0x00000014, 0x00004000, 0x00004000, 0x00000004
-
- .global UNK05_021F643C
-UNK05_021F643C: ; 0x021F643C
- .word 0x00000001, 0x00000000, 0x00000000, 0x00000001
-
- .global UNK05_021F644C
-UNK05_021F644C: ; 0x021F644C
- .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
- .word 0x05010001, 0x00000301, 0x00000000
-
- .global UNK05_021F6468
-UNK05_021F6468: ; 0x021F6468
- .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
- .word 0x04000001, 0x00000300, 0x00000000
-
- .global UNK05_021F6484
-UNK05_021F6484: ; 0x021F6484
- .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
- .word 0x02020001, 0x00000001, 0x00000000
-
- .global UNK05_021F64A0
-UNK05_021F64A0: ; 0x021F64A0
- .word 0x00000004, 0x00000000, 0x00000080, 0x00000000
- .word 0x00000020, 0x00000000, 0x00000100, 0x00000000
- .word 0x00000003, 0x00000010
-
- .global UNK05_021F64C8
-UNK05_021F64C8: ; 0x021F64C8
- .word MOD05_021D7504, MOD05_021D767C, MOD05_021D76C0, 0xFFFFFFFF
-
.global UNK05_021F64D8
UNK05_021F64D8: ; 0x021F64D8
.word 0x00001000, 0x00001000, 0x00001000