summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCleverking2003 <30466983+Cleverking2003@users.noreply.github.com>2020-08-19 21:00:20 +0300
committerGitHub <noreply@github.com>2020-08-19 21:00:20 +0300
commit512d22cff9098f9c3636ca018355a851d011effc (patch)
tree74ab9309d14c747df02c2d90278b905fd015a30f
parentf7e8e085ed15564fe03315b898707e7a762d6ce1 (diff)
parent45bf349cdc21dec32d915daa22ed9ddbe1d03f71 (diff)
Merge pull request #264 from red031000/master
split mod05_021E2B80, mod05_021E2E88, mod05_021E3340, mod05_021E3444 and mod05_021E4AE4
-rw-r--r--arm9/arm9.lsf5
-rw-r--r--arm9/global.inc84
-rw-r--r--arm9/modules/05/asm/mod05_021E2B80.s392
-rw-r--r--arm9/modules/05/asm/mod05_021E2E88.s627
-rw-r--r--arm9/modules/05/asm/mod05_021E3340.s128
-rw-r--r--arm9/modules/05/asm/mod05_021E3444.s3021
-rw-r--r--arm9/modules/05/asm/mod05_021E4AE4.s1103
-rw-r--r--arm9/modules/05/asm/module_05.s5246
8 files changed, 5360 insertions, 5246 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index a90100e4..8d496a27 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -532,6 +532,11 @@ Overlay MODULE_05
Object mod05_021DC0B8.o
Object mod05_021E1374.o
Object mod05_021E1AD8.o
+ Object mod05_021E2B80.o
+ Object mod05_021E2E88.o
+ Object mod05_021E3340.o
+ Object mod05_021E3444.o
+ Object mod05_021E4AE4.o
Object module_05.o
}
diff --git a/arm9/global.inc b/arm9/global.inc
index a58567af..19ea45d3 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -6392,7 +6392,51 @@
.extern MOD05_021E331C
.extern MOD05_021E3424
.extern MOD05_021E3444
+.extern MOD05_021E3474
+.extern MOD05_021E35AC
+.extern MOD05_021E35B0
+.extern MOD05_021E35C0
+.extern MOD05_021E35EC
+.extern MOD05_021E35FC
+.extern MOD05_021E3644
+.extern MOD05_021E36A4
+.extern MOD05_021E3768
+.extern MOD05_021E37A4
+.extern MOD05_021E37CC
+.extern MOD05_021E3888
+.extern MOD05_021E39FC
+.extern MOD05_021E3A48
+.extern MOD05_021E3A70
+.extern MOD05_021E3C00
+.extern MOD05_021E3D20
+.extern MOD05_021E3DA0
+.extern MOD05_021E3E14
+.extern MOD05_021E3E44
+.extern MOD05_021E3E64
+.extern MOD05_021E3F3C
+.extern MOD05_021E3F68
+.extern MOD05_021E3FC4
+.extern MOD05_021E3FF8
+.extern MOD05_021E4014
+.extern MOD05_021E4140
+.extern MOD05_021E4158
+.extern MOD05_021E4160
+.extern MOD05_021E41B8
+.extern MOD05_021E4394
+.extern MOD05_021E43C4
+.extern MOD05_021E43E4
+.extern MOD05_021E4424
+.extern MOD05_021E4688
+.extern MOD05_021E46B4
+.extern MOD05_021E46D4
+.extern MOD05_021E4754
+.extern MOD05_021E4788
+.extern MOD05_021E47A0
+.extern MOD05_021E47BC
.extern MOD05_021E495C
+.extern MOD05_021E49F0
+.extern MOD05_021E4A3C
+.extern MOD05_021E4AD0
.extern MOD05_021E4AE4
.extern MOD05_021E4B38
.extern MOD05_021E4B44
@@ -6482,6 +6526,37 @@
.extern MOD05_021E85FC
.extern MOD05_021E8648
.extern MOD05_021E8698
+.extern MOD05_021E88E8
+.extern MOD05_021E8A68
+.extern MOD05_021E8BEC
+.extern MOD05_021E8D20
+.extern MOD05_021E8F20
+.extern MOD05_021E9030
+.extern MOD05_021E9140
+.extern MOD05_021E94A8
+.extern MOD05_021E97A8
+.extern MOD05_021E9B68
+.extern MOD05_021EA0E4
+.extern MOD05_021EA3A4
+.extern MOD05_021EA884
+.extern MOD05_021EAAE8
+.extern MOD05_021EAD60
+.extern MOD05_021EB160
+.extern MOD05_021EB448
+.extern MOD05_021EB5B4
+.extern MOD05_021EBBC8
+.extern MOD05_021EBBE8
+.extern MOD05_021EBC08
+.extern MOD05_021EBC28
+.extern MOD05_021EBC48
+.extern MOD05_021EBC68
+.extern MOD05_021EBC88
+.extern MOD05_021EBCA8
+.extern MOD05_021EC3B8
+.extern MOD05_021EC3D8
+.extern MOD05_021EC3F8
+.extern MOD05_021EC418
+.extern MOD05_021EC438
.extern MOD05_021EC464
.extern MOD05_021EC57C
.extern MOD05_021EC71C
@@ -6609,6 +6684,14 @@
.extern MOD05_021F54E0
.extern MOD05_021F57EC
.extern MOD05_021F57F0
+.extern MOD05_021F5990
+.extern MOD05_021F59EC
+.extern MOD05_021F5A20
+.extern MOD05_021F5A5C
+.extern MOD05_021F5A74
+.extern MOD05_021F5A90
+.extern MOD05_021F5AB8
+.extern MOD05_021F5AE4
.extern MOD05_021F5B9C
.extern MOD05_021F5C44
.extern MOD05_021F5C70
@@ -8063,6 +8146,7 @@
.extern UNK05_021F9494
.extern UNK05_021FC718
.extern UNK05_021FC79C
+.extern UNK05_021FC820
.extern MOD63_021DBAB8
.extern UNK_020F2B7C
.extern UNK_020F2B8C
diff --git a/arm9/modules/05/asm/mod05_021E2B80.s b/arm9/modules/05/asm/mod05_021E2B80.s
new file mode 100644
index 00000000..86414448
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E2B80.s
@@ -0,0 +1,392 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2B80
+MOD05_021E2B80: ; 0x021E2B80
+ add r2, r0, #0
+ add r2, #0x97
+ ldrb r3, [r2]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0x40
+ lsl r1, r1, #0x1f
+ bic r3, r2
+ lsr r1, r1, #0x19
+ orr r1, r3
+ add r0, #0x97
+ strb r1, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2B9C
+MOD05_021E2B9C: ; 0x021E2B9C
+ add r2, r0, #0
+ add r2, #0x97
+ ldrb r3, [r2]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0x80
+ lsl r1, r1, #0x1f
+ bic r3, r2
+ lsr r1, r1, #0x18
+ orr r1, r3
+ add r0, #0x97
+ strb r1, [r0]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2BB8
+MOD05_021E2BB8: ; 0x021E2BB8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ bl MOD05_021E2D00
+ strb r0, [r4]
+ mov r0, #0
+ strb r0, [r4, #1]
+ mov r0, #1
+ strb r0, [r4, #2]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2BD0
+MOD05_021E2BD0: ; 0x021E2BD0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ str r3, [sp, #4]
+ add r0, #0x80
+ add r6, r1, #0
+ ldr r0, [r0]
+ add r1, sp, #8
+ add r7, r2, #0
+ ldr r4, [sp, #0x38]
+ bl MOD05_021E2D14
+ add r0, r5, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, sp, #8
+ bl MOD05_021E2D9C
+ add r0, sp, #8
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD05_021E2DD4
+ cmp r4, #0
+ bne _021E2C10
+ add r0, r5, #0
+ bl MOD05_021E2D00
+ add r2, r0, #0
+ mov r0, #0
+ mov r1, #1
+ b _021E2C16
+_021E2C10:
+ ldrb r2, [r4]
+ ldrb r0, [r4, #1]
+ ldrb r1, [r4, #2]
+_021E2C16:
+ str r0, [sp]
+ ldr r3, [sp, #4]
+ add r0, sp, #8
+ bl MOD05_021E2E40
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_ShowMessageInField
+MOD05_ShowMessageInField: ; 0x021E2C24
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r0, #0x80
+ add r4, r1, #0
+ ldr r0, [r0]
+ add r1, sp, #0
+ add r6, r2, #0
+ bl MOD05_021E2D14
+ add r5, #0x80
+ ldr r0, [r5]
+ add r1, sp, #0
+ bl MOD05_021E2D9C
+ add r0, sp, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021E2DD4
+ add r0, sp, #0
+ mov r1, #1
+ bl MOD05_021E2E68
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E2C58
+MOD05_021E2C58: ; 0x021E2C58
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ add r0, #0x80
+ add r4, r1, #0
+ ldr r0, [r0]
+ add r1, sp, #4
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD05_021E2D14
+ add r0, r5, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, sp, #4
+ bl MOD05_021E2D9C
+ add r0, sp, #0x20
+ ldrh r0, [r0, #0x10]
+ add r1, r4, #0
+ add r2, r6, #0
+ str r0, [sp]
+ add r0, sp, #4
+ add r3, r7, #0
+ bl MOD05_021E2DF0
+ add r0, sp, #0x20
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0xff
+ beq _021E2CB0
+ add r0, r5, #0
+ bl MOD05_021E2D00
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r3, sp, #0x20
+ ldrb r3, [r3, #0x14]
+ add r0, sp, #4
+ mov r1, #1
+ bl MOD05_021E2E40
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+_021E2CB0:
+ add r0, sp, #4
+ mov r1, #1
+ bl MOD05_021E2E68
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E2CBC
+MOD05_021E2CBC: ; 0x021E2CBC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ add r0, #0x80
+ add r4, r2, #0
+ ldr r0, [r0]
+ add r2, sp, #4
+ add r6, r3, #0
+ bl MOD05_021E2D5C
+ add r0, r5, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, sp, #4
+ bl MOD05_021E2D9C
+ ldr r1, [r5, #0x78]
+ add r0, sp, #4
+ add r2, r4, #0
+ bl MOD05_021E2DD4
+ add r0, r5, #0
+ bl MOD05_021E2D00
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r0, sp, #4
+ mov r1, #1
+ add r3, r6, #0
+ bl MOD05_021E2E40
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E2D00
+MOD05_021E2D00: ; 0x021E2D00
+ push {r3, lr}
+ add r0, #0x80
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl Sav2_PlayerData_GetOptionsAddr
+ bl FUN_02024FF4
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2D14
+MOD05_021E2D14: ; 0x021E2D14
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0x10
+ add r5, r0, #0
+ bl FUN_02039438
+ ldr r0, [r0]
+ mov r1, #0x11
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_02039438
+ ldr r0, [r0]
+ mov r1, #0xf
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl FUN_02039438
+ ldr r0, [r0]
+ mov r1, #1
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl FUN_02039438
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #6
+ bl FUN_02039438
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ mov r1, #3
+ bl FUN_02039438
+ str r0, [r4, #0x14]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E2D5C
+MOD05_021E2D5C: ; 0x021E2D5C
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r1, #0x10
+ add r5, r0, #0
+ add r4, r2, #0
+ bl FUN_02039438
+ ldr r0, [r0]
+ mov r1, #0x11
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_02039438
+ ldr r0, [r0]
+ mov r1, #1
+ str r0, [r4, #4]
+ str r6, [r4, #8]
+ add r0, r5, #0
+ bl FUN_02039438
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #6
+ bl FUN_02039438
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ mov r1, #3
+ bl FUN_02039438
+ str r0, [r4, #0x14]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E2D9C
+MOD05_021E2D9C: ; 0x021E2D9C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x10]
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021E2DC8
+ ldr r0, [r5, #8]
+ ldr r1, [r4, #0xc]
+ mov r2, #3
+ bl FUN_020545B8
+ ldr r0, [r5, #0xc]
+ bl Sav2_PlayerData_GetOptionsAddr
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02054608
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ strb r1, [r0]
+_021E2DC8:
+ ldr r0, [r4, #0xc]
+ mov r1, #0xf
+ bl FUN_02019620
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2DD4
+MOD05_021E2DD4: ; 0x021E2DD4
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ ldr r2, [r4, #4]
+ bl ReadMsgDataIntoString
+ ldr r0, [r4, #8]
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ bl StringExpandPlaceholders
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2DF0
+MOD05_021E2DF0: ; 0x021E2DF0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r0, sp, #0
+ add r7, r3, #0
+ bl FUN_02013724
+ add r0, sp, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_02013980
+ add r0, sp, #0
+ mov r1, #0
+ add r2, r7, #0
+ bl FUN_02013998
+ add r2, sp, #0x10
+ ldrh r2, [r2, #0x10]
+ add r0, sp, #0
+ mov r1, #1
+ bl FUN_02013998
+ add r0, sp, #0
+ mov r1, #0x20
+ bl FUN_020137D4
+ add r4, r0, #0
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl StringCopy
+ add r0, r4, #0
+ bl String_dtor
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2E40
+MOD05_021E2E40: ; 0x021E2E40
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r0, #0
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ add r5, r2, #0
+ str r0, [sp, #4]
+ add r6, r1, #0
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4]
+ add r2, r6, #0
+ add r3, r5, #0
+ bl FUN_02054690
+ ldr r1, [r4, #0x14]
+ strb r0, [r1]
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E2E68
+MOD05_021E2E68: ; 0x021E2E68
+ push {r3, r4, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r4, r0, #0
+ str r3, [sp, #8]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r4]
+ bl AddTextPrinterParameterized
+ ldr r1, [r4, #0x14]
+ strb r0, [r1]
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021E2E88.s b/arm9/modules/05/asm/mod05_021E2E88.s
new file mode 100644
index 00000000..f49a1f99
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E2E88.s
@@ -0,0 +1,627 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2E88
+MOD05_021E2E88: ; 0x021E2E88
+ push {r4, r5, r6, lr}
+ lsl r6, r1, #5
+ add r5, r0, #0
+ add r4, r2, #0
+ add r1, r6, #0
+ bl DC_FlushRange
+ add r0, r5, #0
+ lsl r1, r4, #5
+ add r2, r6, #0
+ bl GX_LoadBGPltt
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E2EA4
+MOD05_021E2EA4: ; 0x021E2EA4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ mov r3, #0
+ add r4, r0, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r2, #3
+ add r1, r4, #0
+ str r2, [sp, #8]
+ mov r0, #7
+ str r0, [sp, #0xc]
+ ldr r0, _021E2EDC ; =0x000002CD
+ add r1, #0x20
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x1c]
+ bl FUN_02019064
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, _021E2EE0 ; =0x000003CF
+ add r0, r4, #0
+ mov r1, #3
+ mov r3, #7
+ bl MOD05_021E2EE4
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .balign 4, 0
+_021E2EDC: .word 0x000002CD
+_021E2EE0: .word 0x000003CF
+
+ thumb_func_start MOD05_021E2EE4
+MOD05_021E2EE4: ; 0x021E2EE4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r2, _021E2F2C ; =UNK05_021FD610
+ add r0, #0x38
+ mov r1, #4
+ add r7, r3, #0
+ bl FUN_0201AB28
+ str r0, [r5, #0x34]
+ add r3, r0, #0
+ str r4, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x1c]
+ ldr r3, [r3, #0x10]
+ add r1, r6, #0
+ bl FUN_02017E14
+ ldr r2, _021E2F30 ; =UNK05_021FD62C
+ add r0, sp, #4
+ mov r1, #4
+ bl FUN_0201AB44
+ ldr r0, [r0, #0xc]
+ mov r1, #1
+ add r2, r7, #0
+ bl MOD05_021E2E88
+ ldr r0, [sp, #4]
+ bl FreeToHeap
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E2F2C: .word UNK05_021FD610
+_021E2F30: .word UNK05_021FD62C
+
+ thumb_func_start MOD05_021E2F34
+MOD05_021E2F34: ; 0x021E2F34
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r2, r1, #0
+ add r2, #8
+ add r5, r0, #0
+ asr r0, r2, #2
+ lsr r0, r0, #0x1d
+ add r0, r2, r0
+ asr r0, r0, #3
+ lsl r0, r0, #3
+ sub r2, r0, r1
+ lsr r0, r2, #0x1f
+ add r0, r2, r0
+ asr r0, r0, #1
+ add r2, r0, #4
+ cmp r2, #8
+ blt _021E2F5A
+ mov r3, #0
+ b _021E2F6C
+_021E2F5A:
+ mov r0, #8
+ sub r0, r0, r2
+ lsl r0, r0, #1
+ add r2, r0, #7
+ asr r0, r2, #2
+ lsr r0, r0, #0x1d
+ add r0, r2, r0
+ lsl r0, r0, #0x15
+ lsr r3, r0, #0x18
+_021E2F6C:
+ cmp r1, #0
+ bgt _021E2F76
+ mov r0, #0
+ str r0, [sp, #0x18]
+ b _021E2F92
+_021E2F76:
+ add r2, r1, #0
+ add r2, #8
+ asr r0, r2, #2
+ lsr r0, r0, #0x1d
+ add r0, r2, r0
+ asr r0, r0, #3
+ add r0, r0, r3
+ str r0, [sp, #0x18]
+ lsl r0, r0, #3
+ add r0, #8
+ sub r1, r0, r1
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+_021E2F92:
+ add r1, r0, #4
+ add r0, r5, #0
+ add r0, #0x30
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x20
+ mov r1, #0
+ bl FUN_02019620
+ mov r2, #8
+ str r2, [sp]
+ add r0, r5, #0
+ str r2, [sp, #4]
+ mov r3, #0
+ str r3, [sp, #8]
+ str r3, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r2, [sp, #0x14]
+ ldr r1, [r5, #0x34]
+ add r0, #0x20
+ ldr r1, [r1, #0x14]
+ bl FUN_02019658
+ ldr r0, [sp, #0x18]
+ mov r1, #8
+ add r0, r0, #1
+ lsl r4, r0, #3
+ str r1, [sp]
+ lsl r0, r4, #0x10
+ str r1, [sp, #4]
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r3, #0
+ str r3, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldr r1, [r5, #0x34]
+ add r0, r5, #0
+ ldr r1, [r1, #0x14]
+ add r0, #0x20
+ mov r2, #0x18
+ bl FUN_02019658
+ mov r0, #8
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r3, #0
+ str r3, [sp, #8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [r5, #0x34]
+ add r0, r5, #0
+ ldr r1, [r1, #0x14]
+ add r0, #0x20
+ mov r2, #0x38
+ bl FUN_02019658
+ mov r1, #8
+ str r1, [sp]
+ lsl r0, r4, #0x10
+ str r1, [sp, #4]
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldr r1, [r5, #0x34]
+ add r0, r5, #0
+ ldr r1, [r1, #0x14]
+ add r0, #0x20
+ mov r2, #0x40
+ mov r3, #0
+ bl FUN_02019658
+ mov r1, #8
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r3, #0
+ str r3, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldr r1, [r5, #0x34]
+ add r0, r5, #0
+ ldr r1, [r1, #0x14]
+ add r0, #0x20
+ mov r2, #0x20
+ bl FUN_02019658
+ mov r1, #8
+ str r1, [sp]
+ lsl r0, r4, #0x10
+ str r1, [sp, #4]
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldr r1, [r5, #0x34]
+ add r0, r5, #0
+ ldr r1, [r1, #0x14]
+ add r0, #0x20
+ mov r2, #0x30
+ mov r3, #0
+ bl FUN_02019658
+ ldr r0, [sp, #0x18]
+ mov r7, #0
+ cmp r0, #0
+ ble _021E30F2
+ add r6, r5, #0
+ add r6, #0x20
+_021E3078:
+ add r0, r7, #1
+ lsl r4, r0, #3
+ mov r0, #8
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #8
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [r5, #0x34]
+ add r0, r6, #0
+ ldr r1, [r1, #0x14]
+ mov r2, #0x10
+ mov r3, #0
+ bl FUN_02019658
+ mov r0, #8
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [r5, #0x34]
+ add r0, r6, #0
+ ldr r1, [r1, #0x14]
+ mov r2, #0x48
+ mov r3, #0
+ bl FUN_02019658
+ mov r0, #8
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ mov r0, #8
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r1, [r5, #0x34]
+ add r0, r6, #0
+ ldr r1, [r1, #0x14]
+ mov r2, #0x28
+ mov r3, #0
+ bl FUN_02019658
+ add r0, r7, #1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, [sp, #0x18]
+ cmp r7, r0
+ blt _021E3078
+_021E30F2:
+ add r5, #0x20
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3100
+MOD05_021E3100: ; 0x021E3100
+ mov r1, #0
+ str r1, [r0]
+ strb r1, [r0, #4]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ strh r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start MOD05_021E3114
+MOD05_021E3114: ; 0x021E3114
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021E3100
+ str r4, [r5, #0x1c]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3124
+MOD05_021E3124: ; 0x021E3124
+ push {r4, lr}
+ add r4, r1, #0
+ ldrb r0, [r4, #4]
+ cmp r0, #3
+ bhi _021E31D0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E313A: ; jump table
+ .short _021E31D0 - _021E313A - 2 ; case 0
+ .short _021E3142 - _021E313A - 2 ; case 1
+ .short _021E3180 - _021E313A - 2 ; case 2
+ .short _021E316A - _021E313A - 2 ; case 3
+_021E3142:
+ ldr r0, [r4, #0xc]
+ sub r0, r0, #4
+ str r0, [r4, #0xc]
+ bpl _021E314E
+ mov r0, #0
+ str r0, [r4, #0xc]
+_021E314E:
+ mov r1, #3
+ ldr r0, [r4, #0x1c]
+ ldr r3, [r4, #0xc]
+ add r2, r1, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ bne _021E31D0
+ mov r0, #0
+ strh r0, [r4, #0x10]
+ mov r0, #3
+ strb r0, [r4, #4]
+ pop {r4, pc}
+_021E316A:
+ ldrh r0, [r4, #0x10]
+ add r0, r0, #1
+ strh r0, [r4, #0x10]
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0x3c
+ blo _021E31D0
+ mov r0, #0
+ strh r0, [r4, #0x10]
+ mov r0, #2
+ strb r0, [r4, #4]
+ pop {r4, pc}
+_021E3180:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #4
+ str r0, [r4, #0xc]
+ cmp r0, #0x26
+ ble _021E318E
+ mov r0, #0x26
+ str r0, [r4, #0xc]
+_021E318E:
+ mov r1, #3
+ ldr r0, [r4, #0x1c]
+ ldr r3, [r4, #0xc]
+ add r2, r1, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x26
+ bne _021E31D0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021E31CA
+ mov r0, #0
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x40]
+ bl FUN_02064E4C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E2F34
+ ldr r1, [r4, #0x40]
+ add r0, r4, #0
+ bl MOD05_021E31D4
+ mov r0, #1
+ strb r0, [r4, #4]
+ pop {r4, pc}
+_021E31CA:
+ add r0, r4, #0
+ bl MOD05_021E32F0
+_021E31D0:
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E31D4
+MOD05_021E31D4: ; 0x021E31D4
+ push {r3, lr}
+ sub sp, #0x10
+ add r3, r0, #0
+ mov r0, #3
+ add r2, r1, #0
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021E31FC ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r3, #0
+ str r1, [sp, #0xc]
+ add r3, #0x30
+ ldrb r3, [r3]
+ add r0, #0x20
+ bl AddTextPrinterParameterized2
+ add sp, #0x10
+ pop {r3, pc}
+ nop
+_021E31FC: .word 0x00010200
+
+ thumb_func_start MOD05_021E3200
+MOD05_021E3200: ; 0x021E3200
+ mov r1, #2
+ strb r1, [r0, #4]
+ mov r1, #0
+ strh r1, [r0, #0x10]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E320C
+MOD05_021E320C: ; 0x021E320C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #4
+ mov r1, #0x44
+ bl AllocFromHeap
+ add r4, r0, #0
+ mov r0, #0x16
+ mov r1, #4
+ bl String_ctor
+ str r0, [r4, #0x40]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021E3114
+ add r0, r4, #0
+ bl MOD05_021E2EA4
+ ldr r2, _021E3244 ; =0x0000017E
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #4
+ bl NewMsgDataFromNarc
+ str r0, [r4, #0x3c]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E3244: .word 0x0000017E
+
+ thumb_func_start MOD05_021E3248
+MOD05_021E3248: ; 0x021E3248
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ bl DestroyMsgData
+ add r0, r4, #0
+ add r0, #0x20
+ bl FUN_02019178
+ ldr r0, [r4, #0x40]
+ bl String_dtor
+ ldr r0, [r4, #0x38]
+ bl FreeToHeap
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3270
+MOD05_021E3270: ; 0x021E3270
+ push {r4, lr}
+ add r4, r0, #0
+ str r1, [r4, #0x18]
+ ldr r1, [r4]
+ cmp r1, #0
+ bne _021E32BC
+ mov r0, #1
+ str r0, [r4]
+ mov r1, #3
+ ldr r0, [r4, #0x1c]
+ add r2, r1, #0
+ mov r3, #0x26
+ bl FUN_020179E0
+ mov r0, #0x26
+ str r0, [r4, #0xc]
+ ldr r0, _021E32EC ; =MOD05_021E3124
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ mov r0, #1
+ strb r0, [r4, #4]
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x40]
+ bl FUN_02064E4C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E2F34
+ ldr r1, [r4, #0x40]
+ add r0, r4, #0
+ bl MOD05_021E31D4
+ pop {r4, pc}
+_021E32BC:
+ ldrb r1, [r4, #4]
+ cmp r1, #3
+ bhi _021E32E6
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E32CE: ; jump table
+ .short _021E32E6 - _021E32CE - 2 ; case 0
+ .short _021E32D6 - _021E32CE - 2 ; case 1
+ .short _021E32E0 - _021E32CE - 2 ; case 2
+ .short _021E32D6 - _021E32CE - 2 ; case 3
+_021E32D6:
+ bl MOD05_021E3200
+ mov r0, #1
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+_021E32E0:
+ mov r0, #1
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+_021E32E6:
+ bl ErrorHandling
+ pop {r4, pc}
+ .balign 4, 0
+_021E32EC: .word MOD05_021E3124
+
+ thumb_func_start MOD05_021E32F0
+MOD05_021E32F0: ; 0x021E32F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021E32FE
+ bl FUN_0200CAB4
+_021E32FE:
+ add r0, r4, #0
+ add r0, #0x20
+ bl FUN_02019570
+ mov r1, #3
+ ldr r0, [r4, #0x1c]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r1, [r4, #0x1c]
+ add r0, r4, #0
+ bl MOD05_021E3114
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E331C
+MOD05_021E331C: ; 0x021E331C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034944
+ cmp r0, #0
+ bne _021E333E
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034824
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #8]
+ bl MOD05_021E3270
+_021E333E:
+ pop {r4, pc}
+
+ .section .data
+
+ .balign 4
+ .global UNK05_021FD610
+UNK05_021FD610: ; 0x021FD610
+ .asciz "/data/dp_areawindow.NCGR"
+
+ .balign 4
+ .global UNK05_021FD62C
+UNK05_021FD62C: ; 0x021FD62C
+ .asciz "/data/dp_areawindow.NCLR"
diff --git a/arm9/modules/05/asm/mod05_021E3340.s b/arm9/modules/05/asm/mod05_021E3340.s
new file mode 100644
index 00000000..264edb7b
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E3340.s
@@ -0,0 +1,128 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3340
+MOD05_021E3340: ; 0x021E3340
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl FUN_02046528
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #4
+ bhi _021E3414
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E3366: ; jump table
+ .short _021E3370 - _021E3366 - 2 ; case 0
+ .short _021E3388 - _021E3366 - 2 ; case 1
+ .short _021E33A0 - _021E3366 - 2 ; case 2
+ .short _021E33E4 - _021E3366 - 2 ; case 3
+ .short _021E33FE - _021E3366 - 2 ; case 4
+_021E3370:
+ mov r0, #2
+ add r1, r0, #0
+ str r0, [sp]
+ sub r1, #0x12
+ mov r2, #0
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E3414
+_021E3388:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021E3414
+ ldr r0, [r5, #8]
+ bl MOD19_022524F4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E3414
+_021E33A0:
+ ldr r0, [r5, #8]
+ bl MOD19_02252504
+ cmp r0, #0
+ beq _021E3414
+ ldr r0, [r5, #0xc]
+ bl FUN_0204C1A8
+ add r6, r0, #0
+ ldr r0, _021E341C ; =SDK_OVERLAY_MODULE_19_ID
+ bl UnloadOverlayByID
+ ldr r0, _021E3420 ; =SDK_OVERLAY_MODULE_20_ID
+ mov r1, #2
+ bl HandleLoadOverlay
+ add r0, r6, #0
+ bl FUN_0204BEB8
+ mov r0, #1
+ bl FUN_0200A03C
+ str r0, [sp]
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #0xc]
+ ldr r3, [r5, #8]
+ add r0, r5, #0
+ add r1, #0x14
+ bl MOD20_02252448
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E3414
+_021E33E4:
+ mov r1, #0
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #4
+ sub r2, #0x10
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E3414
+_021E33FE:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021E3414
+ add r0, r4, #0
+ bl FreeToHeap
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021E3414:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E341C: .word SDK_OVERLAY_MODULE_19_ID
+_021E3420: .word SDK_OVERLAY_MODULE_20_ID
+
+ thumb_func_start MOD05_021E3424
+MOD05_021E3424: ; 0x021E3424
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xb
+ mov r1, #4
+ bl AllocFromHeapAtEnd
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [r2]
+ ldr r1, _021E3440 ; =MOD05_021E3340
+ add r0, r4, #0
+ bl FUN_0204640C
+ pop {r4, pc}
+ .balign 4, 0
+_021E3440: .word MOD05_021E3340
diff --git a/arm9/modules/05/asm/mod05_021E3444.s b/arm9/modules/05/asm/mod05_021E3444.s
new file mode 100644
index 00000000..fa3acfc5
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E3444.s
@@ -0,0 +1,3021 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3444
+MOD05_021E3444: ; 0x021E3444
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ lsl r1, r0, #2
+ ldr r0, _021E3470 ; =UNK05_021F74E8
+ add r4, r2, #0
+ ldr r0, [r0, r1]
+ mov r1, #0x20
+ mov r2, #5
+ mov r3, #4
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ str r5, [r0, #0x10]
+ str r4, [r0, #0x14]
+ cmp r4, #0
+ beq _021E346A
+ mov r1, #0
+ str r1, [r4]
+_021E346A:
+ mov r1, #0
+ str r1, [r0, #0x18]
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E3470: .word UNK05_021F74E8
+
+ thumb_func_start MOD05_021E3474
+MOD05_021E3474: ; 0x021E3474
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #4
+ mov r1, #0x4c
+ str r2, [sp]
+ add r5, r3, #0
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0x4c
+ add r4, r0, #0
+ bl memset
+ ldr r0, _021E34B4 ; =MOD05_021E34B8
+ add r1, r4, #0
+ mov r2, #5
+ bl FUN_0200CA44
+ str r5, [r4, #0x48]
+ cmp r5, #0
+ beq _021E34A4
+ mov r0, #0
+ str r0, [r5]
+_021E34A4:
+ str r6, [r4, #0xc]
+ ldr r0, [sp]
+ str r7, [r4, #0x10]
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x18]
+ str r0, [r4, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E34B4: .word MOD05_021E34B8
+
+ thumb_func_start MOD05_021E34B8
+MOD05_021E34B8: ; 0x021E34B8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4]
+ cmp r1, #5
+ bhi _021E359E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E34D0: ; jump table
+ .short _021E34DC - _021E34D0 - 2 ; case 0
+ .short _021E3514 - _021E34D0 - 2 ; case 1
+ .short _021E352E - _021E34D0 - 2 ; case 2
+ .short _021E3542 - _021E34D0 - 2 ; case 3
+ .short _021E355C - _021E34D0 - 2 ; case 4
+ .short _021E3580 - _021E34D0 - 2 ; case 5
+_021E34DC:
+ ldr r0, [r4, #0xc]
+ cmp r0, #1
+ bne _021E34F6
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r2, [r4, #0x14]
+ add r0, #0x30
+ mov r1, #0
+ mov r3, #2
+ bl MOD05_021E372C
+ b _021E350C
+_021E34F6:
+ cmp r0, #2
+ bne _021E350C
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r2, [r4, #0x14]
+ add r0, #0x30
+ mov r1, #0
+ mov r3, #1
+ bl MOD05_021E372C
+_021E350C:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E359E
+_021E3514:
+ mov r0, #3
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0xc]
+ add r0, #0x18
+ mov r1, #0
+ bl MOD05_021E372C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E359E
+_021E352E:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E3738
+ cmp r0, #0
+ beq _021E359E
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E359E
+_021E3542:
+ mov r0, #3
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r1, [r4, #0x10]
+ ldr r3, [r4, #0xc]
+ add r0, #0x18
+ mov r2, #0
+ bl MOD05_021E372C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E359E
+_021E355C:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E3738
+ cmp r0, #0
+ beq _021E359E
+ ldr r0, [r4, #8]
+ add r1, r0, #1
+ str r1, [r4, #8]
+ ldr r0, [r4, #4]
+ cmp r1, r0
+ bne _021E357A
+ mov r0, #5
+ str r0, [r4]
+ b _021E359E
+_021E357A:
+ mov r0, #1
+ str r0, [r4]
+ b _021E359E
+_021E3580:
+ mov r1, #0
+ str r1, [r4]
+ str r1, [r4, #8]
+ ldr r2, [r4, #0x48]
+ cmp r2, #0
+ beq _021E3590
+ mov r1, #1
+ str r1, [r2]
+_021E3590:
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FreeToHeap
+ add sp, #4
+ pop {r3, r4, pc}
+_021E359E:
+ add r4, #0x30
+ add r0, r4, #0
+ bl MOD05_021E3738
+ add sp, #4
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E35AC
+MOD05_021E35AC: ; 0x021E35AC
+ ldr r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start MOD05_021E35B0
+MOD05_021E35B0: ; 0x021E35B0
+ str r1, [r0]
+ str r1, [r0, #4]
+ sub r1, r2, r1
+ str r1, [r0, #8]
+ str r3, [r0, #0x10]
+ mov r1, #0
+ str r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start MOD05_021E35C0
+MOD05_021E35C0: ; 0x021E35C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mul r0, r1
+ ldr r1, [r4, #0x10]
+ bl _s32_div_f
+ ldr r1, [r4, #4]
+ add r0, r0, r1
+ str r0, [r4]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021E35E6
+ str r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+_021E35E6:
+ str r1, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E35EC
+MOD05_021E35EC: ; 0x021E35EC
+ str r1, [r0]
+ str r1, [r0, #4]
+ sub r1, r2, r1
+ str r1, [r0, #8]
+ str r3, [r0, #0x10]
+ mov r1, #0
+ str r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start MOD05_021E35FC
+MOD05_021E35FC: ; 0x021E35FC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4, #8]
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #0xc
+ bl FX_Div
+ ldr r1, [r4, #4]
+ add r0, r0, r1
+ str r0, [r4]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021E363C
+ str r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+_021E363C:
+ str r1, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3644
+MOD05_021E3644: ; 0x021E3644
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [sp, #0x18]
+ add r5, r0, #0
+ add r7, r2, #0
+ add r0, r3, #0
+ add r6, r1, #0
+ lsl r2, r4, #0xc
+ str r3, [sp]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ add r2, r0, #0
+ sub r0, r7, r6
+ mov r7, #2
+ mov r3, #0
+ lsl r7, r7, #0xa
+ add r2, r2, r7
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r1
+ sub r2, r0, r2
+ asr r1, r2, #0x1f
+ lsr r0, r2, #0x13
+ lsl r1, r1, #0xd
+ orr r1, r0
+ lsl r0, r2, #0xd
+ add r0, r0, r7
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ add r1, r4, #0
+ mul r1, r4
+ lsl r1, r1, #0xc
+ bl FX_Div
+ str r6, [r5]
+ ldr r1, [sp]
+ str r6, [r5, #4]
+ str r1, [r5, #8]
+ str r0, [r5, #0xc]
+ mov r0, #0
+ str r0, [r5, #0x10]
+ str r4, [r5, #0x14]
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E36A4
+MOD05_021E36A4: ; 0x021E36A4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r6, [r5, #0x10]
+ ldr r0, [r5, #8]
+ lsl r2, r6, #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
+ lsr r4, r2, #0xc
+ lsl r0, r1, #0x14
+ add r2, r6, #0
+ orr r4, r0
+ ldr r0, [r5, #0xc]
+ mul r2, r6
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ lsl r1, r2, #2
+ bl FX_Div
+ ldr r1, [r5, #4]
+ add r0, r4, r0
+ add r0, r1, r0
+ str r0, [r5]
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0x14]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021E3704
+ str r0, [r5, #0x10]
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E3704:
+ str r1, [r5, #0x10]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E370C
+MOD05_021E370C: ; 0x021E370C
+ push {r3, lr}
+ cmp r0, #1
+ bne _021E371A
+ ldr r0, _021E3724 ; =0x0400006C
+ bl GXx_SetMasterBrightness_
+ pop {r3, pc}
+_021E371A:
+ ldr r0, _021E3728 ; =0x0400106C
+ bl GXx_SetMasterBrightness_
+ pop {r3, pc}
+ nop
+_021E3724: .word 0x0400006C
+_021E3728: .word 0x0400106C
+
+ thumb_func_start MOD05_021E372C
+MOD05_021E372C: ; 0x021E372C
+ push {r3, lr}
+ str r3, [r0, #0x14]
+ ldr r3, [sp, #8]
+ bl MOD05_021E35B0
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E3738
+MOD05_021E3738: ; 0x021E3738
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD05_021E35C0
+ add r4, r0, #0
+ ldr r0, _021E3750 ; =MOD05_021E3754
+ add r1, r5, #0
+ mov r2, #0xa
+ bl FUN_0200CA98
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E3750: .word MOD05_021E3754
+
+ thumb_func_start MOD05_021E3754
+MOD05_021E3754: ; 0x021E3754
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0x14]
+ ldr r1, [r1]
+ bl MOD05_021E370C
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E3768
+MOD05_021E3768: ; 0x021E3768
+ push {r4, lr}
+ mov r0, #4
+ mov r1, #0x30
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0x30
+ add r4, r0, #0
+ bl memset
+ ldr r0, _021E379C ; =0x04000048
+ mov r1, #0x3f
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #0x1f
+ orr r2, r1
+ mov r1, #0x20
+ orr r1, r2
+ strh r1, [r0]
+ ldrh r2, [r0]
+ ldr r1, _021E37A0 ; =0xFFFFC0FF
+ and r1, r2
+ strh r1, [r0]
+ add r0, r4, #0
+ pop {r4, pc}
+ nop
+_021E379C: .word 0x04000048
+_021E37A0: .word 0xFFFFC0FF
+
+ thumb_func_start MOD05_021E37A4
+MOD05_021E37A4: ; 0x021E37A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x24]
+ cmp r1, #0
+ beq _021E37B2
+ bl MOD05_021E3920
+_021E37B2:
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021E37C8 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ nop
+_021E37C8: .word 0xFFFF1FFF
+
+ thumb_func_start MOD05_021E37CC
+MOD05_021E37CC: ; 0x021E37CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x24]
+ add r7, r2, #0
+ str r3, [sp, #4]
+ ldr r4, [sp, #0x20]
+ cmp r0, #0
+ beq _021E37E4
+ bl ErrorHandling
+_021E37E4:
+ mov r0, #0
+ str r0, [r6, #0x18]
+ ldr r1, [r6, #0x10]
+ add r6, #0x18
+ ldr r1, [r1, #4]
+ ldr r2, [sp, #0x24]
+ ldr r1, [r1, #0x1c]
+ ldr r3, [sp, #0x28]
+ str r1, [r5, #0x20]
+ str r7, [r5, #0x18]
+ str r0, [r5, #0x1c]
+ ldr r0, [sp, #4]
+ str r6, [r5, #0x2c]
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021E3644
+ cmp r4, #0
+ blt _021E3824
+ mov r0, #0xff
+ ldr r2, _021E3850 ; =0x04000040
+ sub r0, r0, r4
+ strh r0, [r2]
+ add r0, r4, #1
+ mov r1, #0xc0
+ lsl r0, r0, #0x18
+ strh r1, [r2, #4]
+ lsr r0, r0, #0x18
+ strh r0, [r2, #2]
+ strh r1, [r2, #6]
+ b _021E3840
+_021E3824:
+ add r0, r4, #0
+ add r0, #0xff
+ lsl r0, r0, #0x18
+ mov r2, #1
+ sub r2, r2, r4
+ lsl r2, r2, #0x18
+ ldr r1, _021E3850 ; =0x04000040
+ lsr r0, r0, #0x18
+ strh r0, [r1]
+ mov r0, #0xc0
+ strh r0, [r1, #4]
+ lsr r2, r2, #0x18
+ strh r2, [r1, #2]
+ strh r0, [r1, #6]
+_021E3840:
+ mov r2, #1
+ ldr r0, _021E3854 ; =MOD05_021E3858
+ add r1, r5, #0
+ lsl r2, r2, #0xa
+ bl FUN_0200CA98
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E3850: .word 0x04000040
+_021E3854: .word MOD05_021E3858
+
+ thumb_func_start MOD05_021E3858
+MOD05_021E3858: ; 0x021E3858
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r2, #1
+ ldr r0, _021E3880 ; =MOD05_021E38B8
+ add r4, r1, #0
+ lsl r2, r2, #0xa
+ bl FUN_0200CA98
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x20]
+ ldr r1, _021E3884 ; =MOD05_021E397C
+ add r2, r4, #0
+ bl MOD05_021F4624
+ str r0, [r4, #0x24]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_021E3880: .word MOD05_021E38B8
+_021E3884: .word MOD05_021E397C
+
+ thumb_func_start MOD05_021E3888
+MOD05_021E3888: ; 0x021E3888
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD05_021E35AC
+ cmp r0, #0
+ beq _021E389E
+ bl ErrorHandling
+_021E389E:
+ str r4, [r5, #0x18]
+ mov r0, #0
+ str r0, [r5, #0x1c]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ add r0, r5, #0
+ str r6, [sp]
+ bl MOD05_021E3644
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E38B8
+MOD05_021E38B8: ; 0x021E38B8
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _021E38C8
+ cmp r0, #1
+ beq _021E3914
+ pop {r4, pc}
+_021E38C8:
+ add r0, r4, #0
+ bl MOD05_021E36A4
+ cmp r0, #0
+ beq _021E38D8
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+_021E38D8:
+ ldr r0, [r4]
+ asr r0, r0, #0xc
+ bmi _021E38F6
+ mov r1, #0xff
+ sub r1, r1, r0
+ ldr r2, _021E391C ; =0x04000040
+ add r0, r0, #1
+ strh r1, [r2]
+ mov r1, #0xc0
+ lsl r0, r0, #0x18
+ strh r1, [r2, #4]
+ lsr r0, r0, #0x18
+ strh r0, [r2, #2]
+ strh r1, [r2, #6]
+ pop {r4, pc}
+_021E38F6:
+ add r1, r0, #0
+ add r1, #0xff
+ lsl r1, r1, #0x18
+ ldr r3, _021E391C ; =0x04000040
+ lsr r1, r1, #0x18
+ strh r1, [r3]
+ mov r1, #1
+ sub r0, r1, r0
+ mov r2, #0xc0
+ lsl r0, r0, #0x18
+ strh r2, [r3, #4]
+ lsr r0, r0, #0x18
+ strh r0, [r3, #2]
+ strh r2, [r3, #6]
+ pop {r4, pc}
+_021E3914:
+ add r0, r4, #0
+ bl MOD05_021E3920
+ pop {r4, pc}
+ .balign 4, 0
+_021E391C: .word 0x04000040
+
+ thumb_func_start MOD05_021E3920
+MOD05_021E3920: ; 0x021E3920
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E3974 ; =0x04000048
+ mov r2, #0x3f
+ ldrh r3, [r0]
+ mov r1, #0x1f
+ bic r3, r2
+ orr r3, r1
+ mov r1, #0x20
+ orr r3, r1
+ strh r3, [r0]
+ ldrh r3, [r0, #2]
+ bic r3, r2
+ add r2, r0, #0
+ strh r3, [r0, #2]
+ mov r3, #0
+ sub r2, #8
+ strh r3, [r2]
+ sub r0, r0, #4
+ strh r3, [r0]
+ lsl r3, r1, #0x15
+ ldr r2, [r3]
+ ldr r0, _021E3978 ; =0xFFFF1FFF
+ and r2, r0
+ lsl r0, r1, #8
+ orr r0, r2
+ str r0, [r3]
+ ldr r0, [r4, #0x2c]
+ mov r1, #1
+ str r1, [r0]
+ ldr r0, [r4, #0x24]
+ bl MOD05_021F4648
+ mov r0, #0
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x28]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x28]
+ pop {r4, pc}
+ nop
+_021E3974: .word 0x04000048
+_021E3978: .word 0xFFFF1FFF
+
+ thumb_func_start MOD05_021E397C
+MOD05_021E397C: ; 0x021E397C
+ push {r4, lr}
+ ldr r0, _021E39EC ; =0x04000006
+ add r4, r1, #0
+ ldrh r0, [r0]
+ ldr r1, [r4, #0x18]
+ bl _u32_div_f
+ mov r1, #1
+ tst r0, r1
+ ldr r0, [r4]
+ bne _021E3994
+ b _021E3996
+_021E3994:
+ neg r0, r0
+_021E3996:
+ asr r2, r0, #0xc
+ ldr r0, _021E39F0 ; =0x000001FF
+ add r1, r2, #0
+ and r1, r0
+ ldr r0, _021E39F4 ; =0x04000010
+ cmp r2, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ ldr r1, _021E39F8 ; =0xFFFF1FFF
+ blt _021E39C8
+ add r3, r0, #0
+ sub r3, #0x10
+ ldr r2, [r3]
+ and r2, r1
+ lsl r1, r0, #9
+ orr r1, r2
+ str r1, [r3]
+ add r0, #0x3a
+ ldrh r2, [r0]
+ mov r1, #0x3f
+ bic r2, r1
+ strh r2, [r0]
+ pop {r4, pc}
+_021E39C8:
+ add r3, r0, #0
+ sub r3, #0x10
+ ldr r2, [r3]
+ and r2, r1
+ lsl r1, r0, #0xa
+ orr r1, r2
+ str r1, [r3]
+ add r0, #0x3a
+ ldrh r2, [r0]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x1f
+ orr r2, r1
+ mov r1, #0x20
+ orr r1, r2
+ strh r1, [r0]
+ pop {r4, pc}
+ nop
+_021E39EC: .word 0x04000006
+_021E39F0: .word 0x000001FF
+_021E39F4: .word 0x04000010
+_021E39F8: .word 0xFFFF1FFF
+
+ thumb_func_start MOD05_021E39FC
+MOD05_021E39FC: ; 0x021E39FC
+ push {r4, r5, r6, lr}
+ mov r0, #4
+ mov r1, #0x48
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0x48
+ add r4, r0, #0
+ bl memset
+ ldr r0, _021E3A40 ; =0x04000048
+ mov r5, #0x3f
+ ldrh r2, [r0]
+ mov r1, #0x1f
+ bic r2, r5
+ add r3, r2, #0
+ orr r3, r1
+ mov r2, #0x20
+ orr r3, r2
+ strh r3, [r0]
+ ldrh r6, [r0]
+ ldr r3, _021E3A44 ; =0xFFFFC0FF
+ lsl r1, r1, #8
+ and r3, r6
+ orr r3, r1
+ lsl r1, r2, #8
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r1, [r0, #2]
+ bic r1, r5
+ strh r1, [r0, #2]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021E3A40: .word 0x04000048
+_021E3A44: .word 0xFFFFC0FF
+
+ thumb_func_start MOD05_021E3A48
+MOD05_021E3A48: ; 0x021E3A48
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x3c]
+ cmp r1, #0
+ beq _021E3A56
+ bl MOD05_021E3BA4
+_021E3A56:
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021E3A6C ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ nop
+_021E3A6C: .word 0xFFFF1FFF
+
+ thumb_func_start MOD05_021E3A70
+MOD05_021E3A70: ; 0x021E3A70
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x3c]
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r0, #0
+ beq _021E3A84
+ bl ErrorHandling
+_021E3A84:
+ mov r1, #0
+ str r1, [r5, #0x18]
+ ldr r0, [r5, #0x10]
+ mov r2, #0xff
+ ldr r0, [r0, #4]
+ add r5, #0x18
+ ldr r0, [r0, #0x1c]
+ lsl r2, r2, #0xc
+ str r0, [r4, #0x38]
+ mov r0, #0x60
+ str r0, [r4, #0x30]
+ str r1, [r4, #0x34]
+ str r5, [r4, #0x44]
+ add r0, r4, #0
+ add r3, r7, #0
+ str r6, [sp]
+ bl MOD05_021E3644
+ add r0, r4, #0
+ mov r2, #6
+ ldr r3, [sp, #0x18]
+ add r0, #0x18
+ mov r1, #0
+ lsl r2, r2, #0x10
+ str r6, [sp]
+ bl MOD05_021E3644
+ ldr r2, _021E3AD4 ; =0x04000040
+ mov r1, #0xff
+ strh r1, [r2]
+ mov r0, #0xc0
+ strh r0, [r2, #4]
+ strh r1, [r2, #2]
+ strh r0, [r2, #6]
+ ldr r0, _021E3AD8 ; =MOD05_021E3ADC
+ add r1, r4, #0
+ lsr r2, r2, #0x10
+ bl FUN_0200CA98
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E3AD4: .word 0x04000040
+_021E3AD8: .word MOD05_021E3ADC
+
+ thumb_func_start MOD05_021E3ADC
+MOD05_021E3ADC: ; 0x021E3ADC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r2, #1
+ ldr r0, _021E3B04 ; =MOD05_021E3B0C
+ add r4, r1, #0
+ lsl r2, r2, #0xa
+ bl FUN_0200CA98
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0x38]
+ ldr r1, _021E3B08 ; =MOD05_021E3B74
+ add r2, r4, #0
+ bl MOD05_021F4624
+ str r0, [r4, #0x3c]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_021E3B04: .word MOD05_021E3B0C
+_021E3B08: .word MOD05_021E3B74
+
+ thumb_func_start MOD05_021E3B0C
+MOD05_021E3B0C: ; 0x021E3B0C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ beq _021E3B1C
+ cmp r0, #1
+ beq _021E3B68
+ pop {r4, pc}
+_021E3B1C:
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD05_021E36A4
+ add r0, r4, #0
+ bl MOD05_021E36A4
+ cmp r0, #0
+ beq _021E3B34
+ ldr r0, [r4, #0x34]
+ add r0, r0, #1
+ str r0, [r4, #0x34]
+_021E3B34:
+ ldr r0, [r4]
+ asr r2, r0, #0xc
+ ldr r0, [r4, #0x18]
+ mov r4, #0xff
+ asr r1, r0, #0xc
+ ldr r0, _021E3B70 ; =0x04000040
+ sub r3, r4, r2
+ strh r3, [r0]
+ mov r3, #0x60
+ sub r3, r3, r1
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ strh r3, [r0, #4]
+ lsl r3, r2, #8
+ lsl r2, r4, #8
+ and r2, r3
+ orr r2, r4
+ add r1, #0x60
+ strh r2, [r0, #2]
+ lsl r2, r1, #8
+ lsl r1, r4, #8
+ and r2, r1
+ mov r1, #0xc0
+ orr r1, r2
+ strh r1, [r0, #6]
+ pop {r4, pc}
+_021E3B68:
+ add r0, r4, #0
+ bl MOD05_021E3BA4
+ pop {r4, pc}
+ .balign 4, 0
+_021E3B70: .word 0x04000040
+
+ thumb_func_start MOD05_021E3B74
+MOD05_021E3B74: ; 0x021E3B74
+ ldr r0, _021E3B9C ; =0x04000006
+ ldr r1, [r1, #0x30]
+ ldrh r2, [r0]
+ cmp r2, r1
+ ldr r1, _021E3BA0 ; =0xFFFF1FFF
+ bhi _021E3B8E
+ sub r3, r0, #6
+ ldr r2, [r3]
+ lsr r0, r0, #0xd
+ and r1, r2
+ orr r0, r1
+ str r0, [r3]
+ bx lr
+_021E3B8E:
+ sub r3, r0, #6
+ ldr r2, [r3]
+ lsr r0, r0, #0xc
+ and r1, r2
+ orr r0, r1
+ str r0, [r3]
+ bx lr
+ .balign 4, 0
+_021E3B9C: .word 0x04000006
+_021E3BA0: .word 0xFFFF1FFF
+
+ thumb_func_start MOD05_021E3BA4
+MOD05_021E3BA4: ; 0x021E3BA4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E3BF8 ; =0x04000048
+ mov r2, #0x3f
+ ldrh r3, [r0]
+ mov r1, #0x1f
+ bic r3, r2
+ orr r3, r1
+ mov r1, #0x20
+ orr r3, r1
+ strh r3, [r0]
+ ldrh r3, [r0, #2]
+ bic r3, r2
+ add r2, r0, #0
+ strh r3, [r0, #2]
+ mov r3, #0
+ sub r2, #8
+ strh r3, [r2]
+ sub r0, r0, #4
+ strh r3, [r0]
+ lsl r3, r1, #0x15
+ ldr r2, [r3]
+ ldr r0, _021E3BFC ; =0xFFFF1FFF
+ and r2, r0
+ lsl r0, r1, #8
+ orr r0, r2
+ str r0, [r3]
+ ldr r0, [r4, #0x44]
+ mov r1, #1
+ str r1, [r0]
+ ldr r0, [r4, #0x3c]
+ bl MOD05_021F4648
+ mov r0, #0
+ str r0, [r4, #0x3c]
+ ldr r0, [r4, #0x40]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ nop
+_021E3BF8: .word 0x04000048
+_021E3BFC: .word 0xFFFF1FFF
+
+ thumb_func_start MOD05_021E3C00
+MOD05_021E3C00: ; 0x021E3C00
+ ldr r3, _021E3C0C ; =FUN_0200CA98
+ mov r2, #1
+ add r1, r0, #0
+ ldr r0, _021E3C10 ; =MOD05_021E3C14
+ lsl r2, r2, #0xa
+ bx r3
+ .balign 4, 0
+_021E3C0C: .word FUN_0200CA98
+_021E3C10: .word MOD05_021E3C14
+
+ thumb_func_start MOD05_021E3C14
+MOD05_021E3C14: ; 0x021E3C14
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x64
+ ldr r6, _021E3D10 ; =UNK05_021F7464
+ add r3, sp, #0x54
+ add r5, r0, #0
+ add r4, r1, #0
+ add r2, r3, #0
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r3, _021E3D14 ; =UNK05_021F74AC
+ add r2, sp, #0x38
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #1
+ str r0, [r2]
+ add r0, r4, #0
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ add r2, sp, #0x38
+ 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
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r3, _021E3D18 ; =UNK05_021F7490
+ add r2, sp, #0x1c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #2
+ str r0, [r2]
+ add r0, r4, #0
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ add r2, sp, #0x1c
+ 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
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r3, _021E3D1C ; =UNK05_021F7474
+ add r2, sp, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ add r2, sp, #0
+ mov r3, #1
+ 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, #8
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add sp, #0x64
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E3D10: .word UNK05_021F7464
+_021E3D14: .word UNK05_021F74AC
+_021E3D18: .word UNK05_021F7490
+_021E3D1C: .word UNK05_021F7474
+
+ thumb_func_start MOD05_021E3D20
+MOD05_021E3D20: ; 0x021E3D20
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r3, #0
+ mov r3, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r1, r2, #0
+ str r3, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0x70
+ add r2, r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #0x70
+ add r1, r6, #0
+ add r2, r4, #0
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #0x70
+ add r1, r5, #0
+ add r2, r4, #0
+ mov r3, #3
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E3D70
+MOD05_021E3D70: ; 0x021E3D70
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r3, r1, #0
+ add r4, r0, #0
+ add r0, r3, #4
+ str r0, [sp]
+ ldr r0, [r3, #0x18]
+ mov r2, #0
+ str r0, [sp, #4]
+ ldr r0, [r3, #0x1c]
+ str r0, [sp, #8]
+ ldr r1, [r3, #0x14]
+ ldr r0, [r3]
+ lsl r1, r1, #0x18
+ ldr r3, [r3, #0x20]
+ lsr r1, r1, #0x18
+ bl FUN_02017B60
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3DA0
+MOD05_021E3DA0: ; 0x021E3DA0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, r5, #4
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MTX_Identity22_
+ add r0, sp, #8
+ ldrh r0, [r0, #0x14]
+ ldr r3, _021E3E0C ; =UNK_020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, r5, #4
+ bl MTX_Rot22_
+ mov r0, #1
+ lsl r0, r0, #0xc
+ add r1, r7, #0
+ bl FX_Div
+ add r7, r0, #0
+ mov r0, #1
+ ldr r1, [sp, #0x18]
+ lsl r0, r0, #0xc
+ bl FX_Div
+ add r3, r0, #0
+ add r0, r5, #4
+ add r1, r0, #0
+ add r2, r7, #0
+ bl MTX_ScaleApply22
+ str r4, [r5]
+ mov r2, #1
+ ldr r0, [sp, #0x20]
+ str r6, [r5, #0x14]
+ str r0, [r5, #0x18]
+ ldr r0, [sp, #0x24]
+ add r1, r5, #0
+ str r0, [r5, #0x1c]
+ ldr r0, [sp, #0x28]
+ lsl r2, r2, #0xa
+ str r0, [r5, #0x20]
+ ldr r0, _021E3E10 ; =MOD05_021E3D70
+ bl FUN_0200CA98
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E3E0C: .word UNK_020FFA38
+_021E3E10: .word MOD05_021E3D70
+
+ thumb_func_start MOD05_021E3E14
+MOD05_021E3E14: ; 0x021E3E14
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r2, #0
+ add r0, r1, #0
+ add r1, r5, #4
+ mov r2, #4
+ bl FUN_02008C9C
+ mov r7, #0x4b
+ str r0, [r5]
+ mov r4, #0
+ lsl r7, r7, #2
+_021E3E2C:
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_02008DEC
+ str r0, [r5, r7]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021E3E2C
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3E44
+MOD05_021E3E44: ; 0x021E3E44
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl FUN_0201FD58
+ mov r6, #0x4b
+ mov r4, #0
+ lsl r6, r6, #2
+_021E3E54:
+ ldr r0, [r5, r6]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021E3E54
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E3E64
+MOD05_021E3E64: ; 0x021E3E64
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ ldr r6, [sp, #0x54]
+ add r4, r1, #0
+ str r6, [sp]
+ mov r1, #1
+ add r5, r0, #0
+ str r1, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0x4b
+ str r1, [sp, #0xc]
+ lsl r0, r0, #2
+ str r2, [sp, #0x2c]
+ add r7, r3, #0
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x48]
+ mov r1, #0x70
+ mov r3, #0
+ bl FUN_02008F90
+ str r0, [r4]
+ str r6, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r7, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x2c]
+ mov r1, #0x70
+ mov r3, #0
+ bl FUN_02008FEC
+ str r0, [r4, #4]
+ str r6, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x4c]
+ mov r1, #0x70
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r4, #8]
+ str r6, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x50]
+ mov r1, #0x70
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ bl FUN_02009B04
+ ldr r0, [r4]
+ bl FUN_02009474
+ ldr r0, [r4, #4]
+ bl FUN_02009D68
+ mov r0, #0
+ mov r2, #0x4b
+ str r6, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r2, r2, #2
+ ldr r1, [r5, r2]
+ add r4, #0x10
+ str r1, [sp, #0x14]
+ add r1, r2, #4
+ ldr r1, [r5, r1]
+ add r3, r6, #0
+ str r1, [sp, #0x18]
+ add r1, r2, #0
+ add r1, #8
+ ldr r1, [r5, r1]
+ add r2, #0xc
+ str r1, [sp, #0x1c]
+ ldr r1, [r5, r2]
+ add r2, r6, #0
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_02008AA4
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3F3C
+MOD05_021E3F3C: ; 0x021E3F3C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl FUN_02009C0C
+ ldr r0, [r4, #4]
+ bl FUN_02009E04
+ mov r7, #0x4b
+ mov r6, #0
+ lsl r7, r7, #2
+_021E3F54:
+ ldr r0, [r5, r7]
+ ldr r1, [r4]
+ bl FUN_02009490
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #4
+ blt _021E3F54
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E3F68
+MOD05_021E3F68: ; 0x021E3F68
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r1, #0
+ lsl r1, r2, #0x10
+ add r6, r0, #0
+ add r0, sp, #8
+ lsr r1, r1, #0x10
+ add r7, r3, #0
+ bl FUN_020690AC
+ add r0, r4, #0
+ mov r1, #0x20
+ bl AllocFromHeap
+ add r1, sp, #4
+ add r5, r0, #0
+ ldrh r0, [r1, #4]
+ ldrh r1, [r1, #8]
+ add r2, sp, #4
+ add r3, r4, #0
+ bl FUN_02006C08
+ add r4, r0, #0
+ add r0, sp, #0x20
+ ldrh r0, [r0, #0x10]
+ add r1, r5, #0
+ mov r2, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r3, r7, #0
+ ldr r0, [r0, #0xc]
+ bl FUN_02003974
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r2, #0x20
+ bl MOD05_021E40F0
+ add r0, r5, #0
+ bl FreeToHeap
+ add r0, r4, #0
+ bl FreeToHeap
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E3FC4
+MOD05_021E3FC4: ; 0x021E3FC4
+ push {r4, lr}
+ sub sp, #0x20
+ ldr r0, [r0]
+ add r1, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #4]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x2c]
+ str r2, [sp, #8]
+ str r0, [sp, #0x14]
+ mov r0, #1
+ str r0, [sp, #0x18]
+ mov r0, #4
+ str r0, [sp, #0x1c]
+ add r0, sp, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201FF84
+ add r4, r0, #0
+ bne _021E3FF2
+ bl ErrorHandling
+_021E3FF2:
+ add r0, r4, #0
+ add sp, #0x20
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E3FF8
+MOD05_021E3FF8: ; 0x021E3FF8
+ push {r4}
+ sub sp, #0xc
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ add r2, sp, #0
+ add r4, r0, #0
+ str r1, [sp]
+ ldmia r2!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r4]
+ add sp, #0xc
+ pop {r4}
+ bx lr
+
+ thumb_func_start MOD05_021E4014
+MOD05_021E4014: ; 0x021E4014
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r4, r2, #0
+ add r5, r1, #0
+ lsl r1, r4, #0x10
+ add r6, r0, #0
+ add r0, sp, #0x10
+ lsr r1, r1, #0x10
+ add r7, r3, #0
+ bl FUN_020690AC
+ str r5, [sp]
+ add r1, sp, #8
+ ldrh r0, [r1, #8]
+ ldrh r1, [r1, #0xa]
+ mov r2, #0
+ add r3, sp, #0xc
+ bl FUN_02006BB0
+ str r0, [sp, #4]
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #0x14]
+ bl FUN_02008A74
+ add r0, sp, #0x28
+ ldrh r0, [r0, #0x10]
+ add r1, r5, #0
+ add r2, r4, #0
+ str r0, [sp]
+ add r0, r6, #0
+ add r3, r7, #0
+ bl MOD05_021E3F68
+ ldr r0, [sp, #0xc]
+ ldr r3, [sp, #0x3c]
+ add r1, r5, #0
+ add r2, sp, #8
+ bl MOD05_021E4080
+ add r4, r0, #0
+ ldr r2, [sp, #8]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD05_021E4118
+ add r0, r4, #0
+ bl FreeToHeap
+ ldr r0, [sp, #4]
+ bl FreeToHeap
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4080
+MOD05_021E4080: ; 0x021E4080
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ ldr r4, [r0, #0x14]
+ add r0, r1, #0
+ mov r1, #2
+ lsl r1, r1, #0xa
+ str r2, [sp, #4]
+ add r5, r3, #0
+ bl AllocFromHeap
+ mov ip, r0
+ lsl r0, r5, #2
+ mov r7, #0
+ add r6, r4, r0
+_021E409E:
+ ldr r0, [sp]
+ mov r2, #0
+ ldrh r0, [r0, #2]
+ add r3, r7, #0
+ lsr r1, r7, #0x1f
+ lsl r5, r7, #0x1d
+ mul r3, r0
+ sub r5, r5, r1
+ mov r0, #0x1d
+ ror r5, r0
+ asr r0, r7, #2
+ lsr r0, r0, #0x1d
+ add r0, r7, r0
+ asr r0, r0, #3
+ add r1, r1, r5
+ lsl r0, r0, #6
+ add r0, r1, r0
+ lsl r1, r0, #2
+ mov r0, ip
+ add r4, r2, #0
+ add r5, r0, r1
+_021E40C8:
+ add r0, r3, r2
+ lsl r0, r0, #2
+ ldr r1, [r6, r0]
+ lsl r0, r4, #2
+ add r2, r2, #1
+ add r4, #8
+ str r1, [r5, r0]
+ cmp r2, #8
+ blt _021E40C8
+ add r7, r7, #1
+ cmp r7, #0x40
+ blt _021E409E
+ mov r1, #2
+ ldr r0, [sp, #4]
+ lsl r1, r1, #0xa
+ str r1, [r0]
+ mov r0, ip
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E40F0
+MOD05_021E40F0: ; 0x021E40F0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ bl FUN_02020354
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl DC_FlushRange
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_020B19C4
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, r4, #0
+ bl GX_LoadOBJPltt
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E4118
+MOD05_021E4118: ; 0x021E4118
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ bl FUN_02020350
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl DC_FlushRange
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_020B1A14
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, r4, #0
+ bl GX_LoadOBJ
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E4140
+MOD05_021E4140: ; 0x021E4140
+ push {r4, lr}
+ mov r1, #0x30
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0x30
+ add r4, r0, #0
+ bl memset
+ add r0, r4, #0
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4158
+MOD05_021E4158: ; 0x021E4158
+ ldr r3, _021E415C ; =FreeToHeap
+ bx r3
+ .balign 4, 0
+_021E415C: .word FreeToHeap
+
+ thumb_func_start MOD05_021E4160
+MOD05_021E4160: ; 0x021E4160
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r0, #0
+ beq _021E4176
+ bl ErrorHandling
+_021E4176:
+ ldr r3, [sp, #0x1c]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021E35B0
+ add r0, r5, #0
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, #0x14
+ add r1, r7, #0
+ bl MOD05_021E35B0
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x24]
+ str r0, [r5, #0x28]
+ add r0, r5, #0
+ add r0, #0x2c
+ strb r1, [r0]
+ add r0, r5, #0
+ ldr r1, [sp, #0x28]
+ add r0, #0x2d
+ strb r1, [r0]
+ add r0, sp, #0x2c
+ ldrb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x2f
+ strb r1, [r0]
+ mov r0, #1
+ add r5, #0x2e
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E41B8
+MOD05_021E41B8: ; 0x021E41B8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r1, r5, #0
+ add r1, #0x2e
+ ldrb r1, [r1]
+ cmp r1, #0
+ bne _021E41CE
+ add sp, #8
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E41CE:
+ bl MOD05_021E35C0
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD05_021E35C0
+ add r0, r5, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ ldr r2, [r5]
+ ldr r6, [r5, #0x14]
+ lsr r1, r0, #1
+ sub r1, r2, r1
+ lsl r1, r1, #0x10
+ asr r3, r1, #0x10
+ add r1, r5, #0
+ add r1, #0x2d
+ ldrb r2, [r1]
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ lsr r1, r2, #1
+ str r0, [sp]
+ add r0, r5, #0
+ sub r1, r6, r1
+ add r0, #0x2f
+ lsl r1, r1, #0x10
+ ldrb r0, [r0]
+ asr r1, r1, #0x10
+ add r2, r1, r2
+ str r0, [sp, #4]
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #0x28]
+ asr r2, r2, #0x10
+ bl MOD05_021E4338
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4220
+MOD05_021E4220: ; 0x021E4220
+ push {r4, lr}
+ mov r1, #0x30
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0x30
+ add r4, r0, #0
+ bl memset
+ add r0, r4, #0
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4238
+MOD05_021E4238: ; 0x021E4238
+ ldr r3, _021E423C ; =FreeToHeap
+ bx r3
+ .balign 4, 0
+_021E423C: .word FreeToHeap
+
+ thumb_func_start MOD05_021E4240
+MOD05_021E4240: ; 0x021E4240
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r0, #0
+ beq _021E4256
+ bl ErrorHandling
+_021E4256:
+ ldr r3, [sp, #0x1c]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021E35B0
+ add r0, r5, #0
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, #0x14
+ add r1, r7, #0
+ bl MOD05_021E35B0
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x24]
+ str r0, [r5, #0x28]
+ add r0, r5, #0
+ add r0, #0x2c
+ strb r1, [r0]
+ add r0, r5, #0
+ ldr r1, [sp, #0x28]
+ add r0, #0x2d
+ strb r1, [r0]
+ add r0, sp, #0x2c
+ ldrb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x2f
+ strb r1, [r0]
+ mov r0, #1
+ add r5, #0x2e
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4298
+MOD05_021E4298: ; 0x021E4298
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021E42AC
+ add sp, #8
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E42AC:
+ add r0, r5, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ ldr r2, [r5]
+ ldr r4, [r5, #0x14]
+ lsr r1, r0, #1
+ sub r1, r2, r1
+ lsl r1, r1, #0x10
+ asr r3, r1, #0x10
+ add r1, r5, #0
+ add r1, #0x2d
+ ldrb r2, [r1]
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ lsr r1, r2, #1
+ sub r1, r4, r1
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ add r2, r1, r2
+ str r0, [sp, #4]
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #0x28]
+ asr r2, r2, #0x10
+ bl MOD05_021E4338
+ add r0, r5, #0
+ bl MOD05_021E35C0
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD05_021E35C0
+ add r0, r5, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ ldr r2, [r5]
+ ldr r6, [r5, #0x14]
+ lsr r1, r0, #1
+ sub r1, r2, r1
+ lsl r1, r1, #0x10
+ asr r3, r1, #0x10
+ add r1, r5, #0
+ add r1, #0x2d
+ ldrb r2, [r1]
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ lsr r1, r2, #1
+ str r0, [sp]
+ add r0, r5, #0
+ sub r1, r6, r1
+ add r0, #0x2f
+ lsl r1, r1, #0x10
+ ldrb r0, [r0]
+ asr r1, r1, #0x10
+ add r2, r1, r2
+ str r0, [sp, #4]
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #0x28]
+ asr r2, r2, #0x10
+ bl MOD05_021E4338
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4338
+MOD05_021E4338: ; 0x021E4338
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r5, [sp, #0x18]
+ add r4, r1, #0
+ cmp r5, #0
+ ble _021E4390
+ cmp r2, #0
+ ble _021E4390
+ cmp r3, r5
+ beq _021E4390
+ cmp r4, r2
+ beq _021E4390
+ cmp r3, #0
+ bge _021E4356
+ mov r3, #0
+_021E4356:
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r5, r1
+ ble _021E4360
+ add r5, r1, #0
+_021E4360:
+ cmp r4, #0
+ bge _021E4366
+ mov r4, #0
+_021E4366:
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r2, r1
+ ble _021E4370
+ add r2, r1, #0
+_021E4370:
+ sub r1, r5, r3
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp]
+ sub r1, r2, r4
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #4]
+ lsl r2, r3, #0x10
+ add r1, sp, #8
+ lsl r3, r4, #0x10
+ ldrb r1, [r1, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+_021E4390:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E4394
+MOD05_021E4394: ; 0x021E4394
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #4
+ mov r1, #0xcc
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0xcc
+ add r7, r0, #0
+ bl memset
+ mov r4, #0
+ add r5, r7, #0
+_021E43AE:
+ add r0, r6, #0
+ bl MOD05_021E4220
+ str r0, [r5, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x30
+ blt _021E43AE
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E43C4
+MOD05_021E43C4: ; 0x021E43C4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_021E43CC:
+ ldr r0, [r5, #4]
+ bl MOD05_021E4238
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x30
+ blt _021E43CC
+ add r0, r6, #0
+ bl FreeToHeap
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E43E4
+MOD05_021E43E4: ; 0x021E43E4
+ push {r3, r4}
+ str r3, [r0]
+ ldr r3, _021E4420 ; =0xFFFFFFF8
+ add r3, sp
+ ldrb r4, [r3, #0x10]
+ add r3, r0, #0
+ add r3, #0xc9
+ strb r4, [r3]
+ add r3, r0, #0
+ add r3, #0xc6
+ strb r1, [r3]
+ add r1, r0, #0
+ add r1, #0xc7
+ strb r2, [r1]
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0xc4
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0xc5
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0xc8
+ strb r2, [r1]
+ mov r1, #1
+ add r0, #0xca
+ strb r1, [r0]
+ pop {r3, r4}
+ bx lr
+ nop
+_021E4420: .word 0xFFFFFFF8
+
+ thumb_func_start MOD05_021E4424
+MOD05_021E4424: ; 0x021E4424
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r0, #0
+ add r0, #0xca
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021E4438
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021E4438:
+ add r0, r6, #0
+ add r0, #0xc4
+ ldrb r0, [r0]
+ cmp r0, #0x30
+ bhs _021E44BC
+ mov r1, #0xc8
+ ldrsb r0, [r6, r1]
+ sub r2, r0, #1
+ add r0, r6, #0
+ add r0, #0xc8
+ strb r2, [r0]
+ ldrsb r0, [r6, r1]
+ cmp r0, #0
+ bgt _021E44BC
+ add r0, r6, #0
+ add r0, #0xc7
+ ldrb r1, [r0]
+ add r0, r6, #0
+ add r0, #0xc8
+ strb r1, [r0]
+ add r0, r6, #0
+ add r0, #0xc4
+ ldrb r0, [r0]
+ mov r1, #0x1d
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1d
+ sub r2, r2, r3
+ ror r2, r1
+ add r2, r3, r2
+ ldr r1, _021E4518 ; =UNK05_021F745C
+ mov r3, #0x20
+ ldrb r1, [r1, r2]
+ lsr r2, r0, #3
+ lsl r4, r2, #5
+ mov r2, #0xb0
+ sub r2, r2, r4
+ str r2, [sp]
+ add r2, r6, #0
+ add r2, #0xc6
+ ldrb r2, [r2]
+ lsl r0, r0, #2
+ lsl r1, r1, #5
+ str r2, [sp, #4]
+ ldr r2, [r6]
+ add r0, r6, r0
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ add r2, r6, #0
+ str r3, [sp, #0x10]
+ add r2, #0xc9
+ ldrb r2, [r2]
+ sub r3, #0x30
+ add r1, #0x10
+ str r2, [sp, #0x14]
+ ldr r0, [r0, #4]
+ add r2, r1, #0
+ sub r3, r3, r4
+ bl MOD05_021E4240
+ add r0, r6, #0
+ add r0, #0xc4
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r6, #0
+ add r0, #0xc4
+ strb r1, [r0]
+_021E44BC:
+ add r0, r6, #0
+ add r0, #0xc5
+ ldrb r4, [r0]
+ add r0, r6, #0
+ add r0, #0xc4
+ ldrb r0, [r0]
+ cmp r4, r0
+ bge _021E44F4
+ lsl r0, r4, #2
+ add r7, r6, #0
+ add r5, r6, r0
+ add r7, #0xc5
+_021E44D4:
+ ldr r0, [r5, #4]
+ bl MOD05_021E4298
+ str r0, [sp, #0x18]
+ cmp r0, #1
+ bne _021E44E6
+ ldrb r0, [r7]
+ add r0, r0, #1
+ strb r0, [r7]
+_021E44E6:
+ add r0, r6, #0
+ add r0, #0xc4
+ ldrb r0, [r0]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _021E44D4
+_021E44F4:
+ add r0, r6, #0
+ add r0, #0xc5
+ ldrb r0, [r0]
+ cmp r0, #0x30
+ blo _021E4510
+ ldr r0, [sp, #0x18]
+ cmp r0, #1
+ bne _021E4510
+ mov r0, #0
+ add r6, #0xca
+ strb r0, [r6]
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021E4510:
+ mov r0, #0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E4518: .word UNK05_021F745C
+
+ thumb_func_start MOD05_021E451C
+MOD05_021E451C: ; 0x021E451C
+ push {r3, lr}
+ mov r1, #0x1c
+ bl AllocFromHeap
+ add r3, r0, #0
+ mov r2, #0x1c
+ mov r1, #0
+_021E452A:
+ strb r1, [r3]
+ add r3, r3, #1
+ sub r2, r2, #1
+ bne _021E452A
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E4534
+MOD05_021E4534: ; 0x021E4534
+ ldr r3, _021E4538 ; =FreeToHeap
+ bx r3
+ .balign 4, 0
+_021E4538: .word FreeToHeap
+
+ thumb_func_start MOD05_021E453C
+MOD05_021E453C: ; 0x021E453C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [sp, #8]
+ str r1, [r0]
+ ldr r1, _021E4560 ; =0xFFFFFFF8
+ add r1, sp
+ ldrb r1, [r1, #0x14]
+ strb r1, [r0, #0x19]
+ mov r1, #1
+ strb r1, [r0, #0x18]
+ add r1, r2, #0
+ add r2, r3, #0
+ add r0, r0, #4
+ add r3, r4, #0
+ bl MOD05_021E35B0
+ pop {r4, pc}
+ nop
+_021E4560: .word 0xFFFFFFF8
+
+ thumb_func_start MOD05_021E4564
+MOD05_021E4564: ; 0x021E4564
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldrb r0, [r5, #0x18]
+ cmp r0, #0
+ bne _021E4572
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E4572:
+ ldr r0, [r5, #4]
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #4
+ bl MOD05_021E35C0
+ ldr r2, [r5, #4]
+ add r6, r0, #0
+ lsl r2, r2, #0x10
+ ldrb r3, [r5, #0x19]
+ ldr r0, [r5]
+ add r1, r4, #0
+ lsr r2, r2, #0x10
+ bl MOD05_021E45A0
+ cmp r6, #1
+ bne _021E459C
+ mov r0, #0
+ strb r0, [r5, #0x18]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E459C:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E45A0
+MOD05_021E45A0: ; 0x021E45A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #8]
+ asr r0, r2, #4
+ add r4, r1, #0
+ lsl r1, r0, #1
+ lsl r0, r1, #1
+ ldr r2, _021E4680 ; =UNK_020FFA38
+ add r1, r1, #1
+ lsl r1, r1, #1
+ ldrsh r0, [r2, r0]
+ ldrsh r1, [r2, r1]
+ str r3, [sp, #0xc]
+ bl FX_Div
+ str r0, [sp, #0x18]
+ asr r0, r4, #4
+ lsl r1, r0, #1
+ lsl r0, r1, #1
+ ldr r2, _021E4680 ; =UNK_020FFA38
+ add r1, r1, #1
+ lsl r1, r1, #1
+ ldrsh r0, [r2, r0]
+ ldrsh r1, [r2, r1]
+ bl FX_Div
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ mov r5, #0
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x10]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x14]
+_021E45E4:
+ mov r0, #0x5f
+ sub r0, r0, r5
+ lsl r6, r0, #0xc
+ asr r4, r6, #0x1f
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r2, r6, #0
+ add r3, r4, #0
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ ldr r0, _021E4684 ; =0x00000000
+ adc r1, r0
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ asr r7, r1, #0xc
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, r6, #0
+ add r3, r4, #0
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ ldr r0, _021E4684 ; =0x00000000
+ adc r1, r0
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ asr r0, r1, #0xc
+ mov r1, #0x80
+ add r4, r7, #0
+ add r6, r0, #0
+ mov r2, #0x80
+ sub r0, r2, r0
+ sub r1, r1, r7
+ add r4, #0x80
+ add r6, #0x80
+ add r3, r0, #0
+ cmp r0, r1
+ ble _021E4642
+ add r3, r1, #0
+ add r1, r0, #0
+_021E4642:
+ cmp r6, r4
+ ble _021E464C
+ add r0, r6, #0
+ add r6, r4, #0
+ add r4, r0, #0
+_021E464C:
+ add r0, r1, #1
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ add r1, r5, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ add r2, r5, #1
+ bl MOD05_021E4338
+ add r0, r4, #1
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ mov r1, #0xbf
+ str r0, [sp, #4]
+ mov r2, #0xc0
+ ldr r0, [sp, #8]
+ sub r1, r1, r5
+ sub r2, r2, r5
+ add r3, r6, #0
+ bl MOD05_021E4338
+ add r5, r5, #1
+ cmp r5, #0x60
+ blt _021E45E4
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E4680: .word UNK_020FFA38
+_021E4684: .word 0x00000000
+
+ thumb_func_start MOD05_021E4688
+MOD05_021E4688: ; 0x021E4688
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x24
+ add r6, r0, #0
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0x24
+ add r7, r0, #0
+ bl memset
+ mov r4, #0
+ add r5, r7, #0
+_021E46A0:
+ add r0, r6, #0
+ bl MOD05_021E451C
+ add r4, r4, #1
+ stmia r5!, {r0}
+ cmp r4, #8
+ blt _021E46A0
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E46B4
+MOD05_021E46B4: ; 0x021E46B4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_021E46BC:
+ ldr r0, [r5]
+ bl MOD05_021E4534
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E46BC
+ add r0, r6, #0
+ bl FreeToHeap
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E46D4
+MOD05_021E46D4: ; 0x021E46D4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0xc]
+ ldr r4, _021E474C ; =UNK05_021F74C8
+ str r0, [sp, #8]
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ mov r6, #0
+ add r5, r0, #0
+_021E46E6:
+ ldrh r1, [r4]
+ ldr r0, _021E4750 ; =0x0000FFFF
+ mul r0, r1
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ bl _s32_div_f
+ add r7, r0, #0
+ ldrh r1, [r4, #2]
+ ldr r0, _021E4750 ; =0x0000FFFF
+ mul r0, r1
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ bl _s32_div_f
+ add r3, r0, #0
+ ldr r0, [sp, #0x10]
+ lsl r2, r7, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x14]
+ lsl r3, r3, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, [sp, #0xc]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl MOD05_021E453C
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #8
+ blt _021E46E6
+ ldr r0, [sp, #8]
+ mov r1, #1
+ add r0, #0x20
+ strb r1, [r0]
+ add r1, #0xff
+ str r1, [sp]
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x14]
+ mov r1, #0x5d
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ mov r2, #0x63
+ mov r3, #0
+ bl MOD05_021E4338
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E474C: .word UNK05_021F74C8
+_021E4750: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021E4754
+MOD05_021E4754: ; 0x021E4754
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021E4764
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E4764:
+ mov r4, #0
+ add r5, r6, #0
+_021E4768:
+ ldr r0, [r5]
+ bl MOD05_021E4564
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E4768
+ cmp r0, #1
+ bne _021E4784
+ mov r0, #0
+ add r6, #0x20
+ strb r0, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E4784:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E4788
+MOD05_021E4788: ; 0x021E4788
+ push {r4, lr}
+ mov r0, #4
+ mov r1, #0xe8
+ bl AllocFromHeap
+ mov r1, #0
+ mov r2, #0xe8
+ add r4, r0, #0
+ bl memset
+ add r0, r4, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E47A0
+MOD05_021E47A0: ; 0x021E47A0
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r1, #0xe0
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _021E47B2
+ bl MOD05_021E4918
+_021E47B2:
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E47BC
+MOD05_021E47BC: ; 0x021E47BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, [sp, #0x18]
+ add r6, r1, #0
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ add r7, r2, #0
+ add r5, r3, #0
+ cmp r0, #0
+ beq _021E47D8
+ bl ErrorHandling
+_021E47D8:
+ mov r1, #0
+ str r1, [r4, #0x18]
+ ldr r0, [r4, #0x10]
+ add r4, #0x18
+ ldr r0, [r0, #4]
+ add r3, r7, #0
+ ldr r2, [r0, #0x1c]
+ add r0, r6, #0
+ add r0, #0xd8
+ str r2, [r0]
+ add r0, r6, #0
+ str r1, [r6, #0x14]
+ add r0, #0xe4
+ str r4, [r0]
+ add r0, r6, #0
+ mov r2, #0xff
+ bl MOD05_021E35B0
+ mov r4, #0
+_021E47FE:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl _u32_div_f
+ ldr r0, [sp, #0x18]
+ mul r0, r1
+ add r1, r5, #0
+ bl _u32_div_f
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl _u32_div_f
+ mov r1, #1
+ tst r0, r1
+ bne _021E4826
+ add r0, r6, r4
+ strb r7, [r0, #0x18]
+ b _021E482E
+_021E4826:
+ ldr r0, [sp, #0x18]
+ sub r1, r0, r7
+ add r0, r6, r4
+ strb r1, [r0, #0x18]
+_021E482E:
+ add r4, r4, #1
+ cmp r4, #0xc0
+ blt _021E47FE
+ ldr r0, _021E4878 ; =0x04000048
+ mov r1, #0x3f
+ ldrh r3, [r0]
+ ldr r2, [sp, #0x1c]
+ bic r3, r1
+ orr r3, r2
+ mov r2, #0x20
+ orr r3, r2
+ strh r3, [r0]
+ ldrh r3, [r0, #2]
+ bic r3, r1
+ ldr r1, [sp, #0x20]
+ orr r1, r3
+ strh r1, [r0, #2]
+ add r1, r0, #0
+ mov r3, #0
+ sub r1, #8
+ strh r3, [r1]
+ mov r1, #0xc0
+ sub r0, r0, #4
+ strh r1, [r0]
+ lsl r3, r2, #0x15
+ ldr r1, [r3]
+ ldr r0, _021E487C ; =0xFFFF1FFF
+ and r1, r0
+ lsl r0, r2, #8
+ orr r0, r1
+ str r0, [r3]
+ ldr r0, _021E4880 ; =MOD05_021E4884
+ add r1, r6, #0
+ lsl r2, r2, #5
+ bl FUN_0200CA98
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E4878: .word 0x04000048
+_021E487C: .word 0xFFFF1FFF
+_021E4880: .word MOD05_021E4884
+
+ thumb_func_start MOD05_021E4884
+MOD05_021E4884: ; 0x021E4884
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ ldr r1, _021E48B8 ; =MOD05_021E48EC
+ add r2, r4, #0
+ bl MOD05_021F4624
+ add r1, r4, #0
+ add r1, #0xdc
+ str r0, [r1]
+ mov r2, #1
+ ldr r0, _021E48BC ; =MOD05_021E48C0
+ add r1, r4, #0
+ lsl r2, r2, #0xa
+ bl FUN_0200CA98
+ add r4, #0xe0
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_021E48B8: .word MOD05_021E48EC
+_021E48BC: .word MOD05_021E48C0
+
+ thumb_func_start MOD05_021E48C0
+MOD05_021E48C0: ; 0x021E48C0
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021E48D0
+ cmp r0, #1
+ beq _021E48E2
+ pop {r4, pc}
+_021E48D0:
+ add r0, r4, #0
+ bl MOD05_021E35C0
+ cmp r0, #1
+ bne _021E48E8
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+_021E48E2:
+ add r0, r4, #0
+ bl MOD05_021E4918
+_021E48E8:
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E48EC
+MOD05_021E48EC: ; 0x021E48EC
+ ldr r0, _021E4910 ; =0x04000006
+ ldrh r0, [r0]
+ cmp r0, #0xc0
+ bge _021E490E
+ add r0, r1, r0
+ ldrb r0, [r0, #0x18]
+ ldr r2, [r1]
+ add r0, r2, r0
+ cmp r0, #0xff
+ ble _021E4902
+ mov r0, #0xff
+_021E4902:
+ lsl r0, r0, #0x18
+ ldr r1, _021E4914 ; =0x04000040
+ lsr r0, r0, #0x18
+ strh r0, [r1]
+ mov r0, #0xc0
+ strh r0, [r1, #4]
+_021E490E:
+ bx lr
+ .balign 4, 0
+_021E4910: .word 0x04000006
+_021E4914: .word 0x04000040
+
+ thumb_func_start MOD05_021E4918
+MOD05_021E4918: ; 0x021E4918
+ push {r4, lr}
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ add r4, r0, #0
+ ldr r1, [r2]
+ ldr r0, _021E4958 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ mov r1, #1
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ bl MOD05_021F4648
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xdc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ mov r0, #0
+ add r4, #0xe0
+ str r0, [r4]
+ pop {r4, pc}
+ nop
+_021E4958: .word 0xFFFF1FFF
+
+ thumb_func_start MOD05_021E495C
+MOD05_021E495C: ; 0x021E495C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r6, #1
+ add r1, r0, #0
+ tst r1, r6
+ bne _021E4980
+ mov r1, #0x72
+ lsl r1, r1, #4
+ tst r1, r0
+ bne _021E4976
+ cmp r0, #0
+ bne _021E497A
+_021E4976:
+ mov r6, #0
+ b _021E4980
+_021E497A:
+ bl ErrorHandling
+ mov r6, #0
+_021E4980:
+ ldr r0, [r5, #4]
+ bl GetFirstAliveMonInParty_CrashIfNone
+ add r7, r0, #0
+ ldr r0, [r5, #8]
+ bl GetFirstAliveMonInParty_CrashIfNone
+ str r0, [sp]
+ add r0, r7, #0
+ mov r1, #0xa0
+ mov r2, #0
+ bl GetMonData
+ add r7, r0, #0
+ ldr r0, [sp]
+ mov r1, #0xa0
+ mov r2, #0
+ bl GetMonData
+ mov r1, #0x55
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ sub r0, r0, r7
+ cmp r1, #0xc
+ bhi _021E49E2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E49BE: ; jump table
+ .short _021E49D8 - _021E49BE - 2 ; case 0
+ .short _021E49D8 - _021E49BE - 2 ; case 1
+ .short _021E49D8 - _021E49BE - 2 ; case 2
+ .short _021E49D8 - _021E49BE - 2 ; case 3
+ .short _021E49D8 - _021E49BE - 2 ; case 4
+ .short _021E49E0 - _021E49BE - 2 ; case 5
+ .short _021E49D8 - _021E49BE - 2 ; case 6
+ .short _021E49DC - _021E49BE - 2 ; case 7
+ .short _021E49D8 - _021E49BE - 2 ; case 8
+ .short _021E49D8 - _021E49BE - 2 ; case 9
+ .short _021E49D8 - _021E49BE - 2 ; case 10
+ .short _021E49D8 - _021E49BE - 2 ; case 11
+ .short _021E49D8 - _021E49BE - 2 ; case 12
+_021E49D8:
+ mov r4, #0
+ b _021E49E2
+_021E49DC:
+ mov r4, #2
+ b _021E49E2
+_021E49E0:
+ mov r4, #4
+_021E49E2:
+ cmp r0, #0
+ ble _021E49E8
+ add r4, r4, #1
+_021E49E8:
+ mov r0, #6
+ mul r0, r6
+ add r0, r4, r0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E49F0
+MOD05_021E49F0: ; 0x021E49F0
+ push {r4, r5, r6, lr}
+ ldr r4, [sp, #0x14]
+ add r5, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ mov r0, #0xff
+ strb r0, [r4, #1]
+ lsl r0, r3, #0xc
+ add r6, r1, #0
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ add r3, r0, #0
+ asr r0, r5, #0xc
+ mov r5, #0
+ lsl r2, r2, #0xa
+ add r3, r3, r2
+ adc r1, r5
+ lsl r1, r1, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r1
+ asr r3, r3, #0xc
+ lsr r1, r3, #0x1f
+ add r1, r3, r1
+ asr r1, r1, #1
+ sub r0, r0, r1
+ strb r0, [r4, #2]
+ ldr r0, _021E4A38 ; =MOD05_021E4A64
+ add r1, r4, #0
+ lsr r2, r2, #1
+ strb r6, [r4, #3]
+ bl FUN_0200CA98
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E4A38: .word MOD05_021E4A64
+
+ thumb_func_start MOD05_021E4A3C
+MOD05_021E4A3C: ; 0x021E4A3C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r2, #0xc
+ add r4, r1, #0
+ asr r1, r0, #0x1f
+ asr r3, r5, #0x1f
+ add r2, r5, #0
+ 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
+ asr r0, r1, #0xc
+ add r0, r4, r0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E4A64
+MOD05_021E4A64: ; 0x021E4A64
+ push {r3, r4, r5, lr}
+ ldrb r2, [r1, #4]
+ ldrb r3, [r1, #3]
+ cmp r2, #0
+ bne _021E4A8C
+ ldrb r4, [r1]
+ ldrb r2, [r1, #2]
+ ldrb r1, [r1, #1]
+ lsl r5, r4, #8
+ mov r4, #0xff
+ lsl r4, r4, #8
+ and r5, r4
+ orr r5, r1
+ ldr r1, _021E4AB0 ; =0x04000040
+ lsl r2, r2, #8
+ and r2, r4
+ strh r5, [r1]
+ orr r2, r3
+ strh r2, [r1, #4]
+ b _021E4AA8
+_021E4A8C:
+ ldrb r4, [r1]
+ ldrb r2, [r1, #2]
+ ldrb r1, [r1, #1]
+ lsl r5, r4, #8
+ mov r4, #0xff
+ lsl r4, r4, #8
+ and r5, r4
+ orr r5, r1
+ ldr r1, _021E4AB4 ; =0x04000042
+ lsl r2, r2, #8
+ and r2, r4
+ strh r5, [r1]
+ orr r2, r3
+ strh r2, [r1, #4]
+_021E4AA8:
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_021E4AB0: .word 0x04000040
+_021E4AB4: .word 0x04000042
+
+ thumb_func_start MOD05_021E4AB8
+MOD05_021E4AB8: ; 0x021E4AB8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E4ACC ; =0x0400006C
+ ldr r1, [r1]
+ bl GXx_SetMasterBrightness_
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .balign 4, 0
+_021E4ACC: .word 0x0400006C
+
+ thumb_func_start MOD05_021E4AD0
+MOD05_021E4AD0: ; 0x021E4AD0
+ ldr r3, _021E4ADC ; =FUN_0200CA98
+ mov r2, #1
+ add r1, r0, #0
+ ldr r0, _021E4AE0 ; =MOD05_021E4AB8
+ lsl r2, r2, #0xa
+ bx r3
+ .balign 4, 0
+_021E4ADC: .word FUN_0200CA98
+_021E4AE0: .word MOD05_021E4AB8
+
+ .section .rodata
+
+ .global UNK05_021F745C
+UNK05_021F745C: ; 0x021F745C
+ .byte 0x00, 0x02, 0x05, 0x07, 0x01, 0x06, 0x03, 0x04
+
+ .global UNK05_021F7464
+UNK05_021F7464: ; 0x021F7464
+ .word 0x00000001, 0x00000001, 0x00000000, 0x00000001
+
+ .global UNK05_021F7474
+UNK05_021F7474: ; 0x021F7474
+ .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
+ .word 0x001F0101, 0x00010001, 0x00000000
+
+ .global UNK05_021F7490
+UNK05_021F7490: ; 0x021F7490
+ .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
+ .word MOD05_021E0000, 0x00000001, 0x00000000
+
+ .global UNK05_021F74AC
+UNK05_021F74AC: ; 0x021F74AC
+ .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
+ .word 0x011D0001, 0x00000300, 0x00000000
+
+ .global UNK05_021F74C8
+UNK05_021F74C8: ; 0x021F74C8
+ .short 0x0000, 0x0017, 0x002D, 0x0016, 0x002D, 0x0044, 0x005A, 0x0043
+ .short 0x005B, 0x0071, 0x0087, 0x0070, 0x0087, 0x009E, 0x00B4, 0x009D
+
+ .global UNK05_021F74E8
+UNK05_021F74E8: ; 0x021F74E8
+ .word MOD05_021E8A68, MOD05_021E88E8, MOD05_021E8BEC, MOD05_021E8D20
+ .word MOD05_021E8F20, MOD05_021E9030, MOD05_021E9140, MOD05_021E94A8
+ .word MOD05_021E97A8, MOD05_021E9B68, MOD05_021EA0E4, MOD05_021EA3A4
+ .word MOD05_021EBBC8, MOD05_021EBBE8, MOD05_021EBC08, MOD05_021EBC28
+ .word MOD05_021EBC48, MOD05_021EBC68, MOD05_021EBC88, MOD05_021EBCA8
+ .word MOD05_021EC3B8, MOD05_021EC3D8, MOD05_021EC3F8, MOD05_021EC418
+ .word MOD05_021EC438, MOD05_021EB448, MOD05_021EB5B4, MOD05_021EAD60
+ .word MOD05_021EB160, MOD05_021EA884, MOD05_021EAAE8
diff --git a/arm9/modules/05/asm/mod05_021E4AE4.s b/arm9/modules/05/asm/mod05_021E4AE4.s
new file mode 100644
index 00000000..b05969ea
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E4AE4.s
@@ -0,0 +1,1103 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4AE4
+MOD05_021E4AE4: ; 0x021E4AE4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r1, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r2, r3, #0
+ mov r1, #0x42
+ mov r3, #0
+ bl MOD05_021F5990
+ mov r1, #0x2c
+ mov r2, #0
+ add r6, r0, #0
+ bl MOD05_021F5A20
+ mov r1, #0
+ mov r2, #0x2c
+ add r4, r0, #0
+ bl memset
+ ldr r0, [sp]
+ lsl r1, r5, #3
+ str r0, [r4]
+ mov r0, #0x42
+ str r0, [r4, #4]
+ str r5, [r4, #8]
+ str r6, [r4, #0x14]
+ str r7, [r4, #0x18]
+ add r0, r6, #0
+ mov r2, #0
+ bl MOD05_021F5A20
+ str r0, [r4, #0x1c]
+ add r0, r4, #0
+ bl MOD05_021E4C80
+ add r0, r4, #0
+ bl MOD05_021E4C34
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4B38
+MOD05_021E4B38: ; 0x021E4B38
+ ldr r3, _021E4B40 ; =MOD05_021E4D90
+ str r1, [r0, #0xc]
+ bx r3
+ nop
+_021E4B40: .word MOD05_021E4D90
+
+ thumb_func_start MOD05_021E4B44
+MOD05_021E4B44: ; 0x021E4B44
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x20]
+ str r4, [sp]
+ ldr r4, [sp, #0x24]
+ str r4, [sp, #4]
+ ldr r4, [sp, #0x28]
+ str r4, [sp, #8]
+ ldr r4, [sp, #0x2c]
+ str r4, [sp, #0xc]
+ ldr r4, [sp, #0x30]
+ str r4, [sp, #0x10]
+ bl MOD05_021E4DEC
+ add sp, #0x14
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD05_021E4B64
+MOD05_021E4B64: ; 0x021E4B64
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021E4D2C
+ cmp r0, #0
+ beq _021E4B78
+ bl ErrorHandling
+ pop {r3, r4, r5, pc}
+_021E4B78:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021E4C98
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4B84
+MOD05_021E4B84: ; 0x021E4B84
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0x20
+ beq _021E4B9E
+_021E4B90:
+ add r0, r5, #0
+ bl MOD05_021E4B64
+ add r4, r4, #4
+ ldr r1, [r4]
+ cmp r1, #0x20
+ bne _021E4B90
+_021E4B9E:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E4BA0
+MOD05_021E4BA0: ; 0x021E4BA0
+ ldr r3, _021E4BA4 ; =MOD05_021E4DB4
+ bx r3
+ .balign 4, 0
+_021E4BA4: .word MOD05_021E4DB4
+
+ thumb_func_start MOD05_021E4BA8
+MOD05_021E4BA8: ; 0x021E4BA8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #0x14]
+ bl MOD05_021E4DA0
+ add r0, r5, #0
+ bl MOD05_021E4CDC
+ add r0, r5, #0
+ bl MOD05_021E4E5C
+ add r0, r5, #0
+ bl MOD05_021E4C48
+ ldr r1, [r5, #0x1c]
+ add r0, r4, #0
+ bl MOD05_021F5A5C
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021F5A5C
+ add r0, r4, #0
+ bl MOD05_021F59EC
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E4BDC
+MOD05_021E4BDC: ; 0x021E4BDC
+ ldr r3, _021E4BE4 ; =MOD05_021F5A20
+ ldr r0, [r0, #0x14]
+ bx r3
+ nop
+_021E4BE4: .word MOD05_021F5A20
+
+ thumb_func_start MOD05_021E4BE8
+MOD05_021E4BE8: ; 0x021E4BE8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r3, #0
+ bl MOD05_021E4BDC
+ add r1, r4, #0
+ add r2, r5, #0
+ add r6, r0, #0
+ bl memset
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E4C00
+MOD05_021E4C00: ; 0x021E4C00
+ ldr r3, _021E4C04 ; =FreeToHeap
+ bx r3
+ .balign 4, 0
+_021E4C04: .word FreeToHeap
+
+ thumb_func_start MOD05_021E4C08
+MOD05_021E4C08: ; 0x021E4C08
+ push {r3, lr}
+ bl MOD05_021E4D2C
+ cmp r0, #0
+ bne _021E4C1A
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+_021E4C1A:
+ ldr r0, [r0, #4]
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4C20
+MOD05_021E4C20: ; 0x021E4C20
+ ldr r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start MOD05_021E4C24
+MOD05_021E4C24: ; 0x021E4C24
+ push {r3, lr}
+ bl FUN_02058738
+ ldr r0, [r0, #0x3c]
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4C30
+MOD05_021E4C30: ; 0x021E4C30
+ ldr r0, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD05_021E4C34
+MOD05_021E4C34: ; 0x021E4C34
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E4C30
+ add r1, r0, #0
+ mov r0, #0x6b
+ bl NARC_ctor
+ str r0, [r4, #0x20]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E4C48
+MOD05_021E4C48: ; 0x021E4C48
+ ldr r3, _021E4C50 ; =NARC_dtor
+ ldr r0, [r0, #0x20]
+ bx r3
+ nop
+_021E4C50: .word NARC_dtor
+
+ thumb_func_start MOD05_021E4C54
+MOD05_021E4C54: ; 0x021E4C54
+ ldr r3, _021E4C5C ; =NARC_GetMemberSize
+ ldr r0, [r0, #0x20]
+ bx r3
+ nop
+_021E4C5C: .word NARC_GetMemberSize
+
+ thumb_func_start MOD05_021E4C60
+MOD05_021E4C60: ; 0x021E4C60
+ ldr r3, _021E4C68 ; =NARC_ReadWholeMember
+ ldr r0, [r0, #0x20]
+ bx r3
+ nop
+_021E4C68: .word NARC_ReadWholeMember
+
+ thumb_func_start MOD05_021E4C6C
+MOD05_021E4C6C: ; 0x021E4C6C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r3, r2, #0
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x20]
+ add r2, r4, #0
+ bl MOD05_021F5AB8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E4C80
+MOD05_021E4C80: ; 0x021E4C80
+ push {r3, r4, r5, lr}
+ ldr r4, [r0, #8]
+ ldr r5, [r0, #0x1c]
+ cmp r4, #0
+ beq _021E4C96
+_021E4C8A:
+ add r0, r5, #0
+ bl MOD05_021E4D44
+ add r5, #8
+ sub r4, r4, #1
+ bne _021E4C8A
+_021E4C96:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E4C98
+MOD05_021E4C98: ; 0x021E4C98
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD05_021E4D68
+ add r1, r0, #0
+ ldr r1, [r1, #4]
+ add r0, r5, #0
+ blx r1
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD05_021E4D04
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD05_021E4D50
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4CC0
+MOD05_021E4CC0: ; 0x021E4CC0
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4]
+ bl MOD05_021E4D68
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ ldr r1, [r1, #8]
+ blx r1
+ add r0, r4, #0
+ bl MOD05_021E4D44
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4CDC
+MOD05_021E4CDC: ; 0x021E4CDC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r4, [r6, #8]
+ ldr r5, [r6, #0x1c]
+ cmp r4, #0
+ beq _021E4D00
+_021E4CE8:
+ add r0, r5, #0
+ bl MOD05_021E4D58
+ cmp r0, #0
+ bne _021E4CFA
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD05_021E4CC0
+_021E4CFA:
+ add r5, #8
+ sub r4, r4, #1
+ bne _021E4CE8
+_021E4D00:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4D04
+MOD05_021E4D04: ; 0x021E4D04
+ push {r3, r4, r5, lr}
+ ldr r4, [r0, #8]
+ ldr r5, [r0, #0x1c]
+ cmp r4, #0
+ beq _021E4D22
+_021E4D0E:
+ add r0, r5, #0
+ bl MOD05_021E4D58
+ cmp r0, #1
+ bne _021E4D1C
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+_021E4D1C:
+ add r5, #8
+ sub r4, r4, #1
+ bne _021E4D0E
+_021E4D22:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4D2C
+MOD05_021E4D2C: ; 0x021E4D2C
+ ldr r3, [r0, #8]
+ ldr r0, [r0, #0x1c]
+ cmp r3, #0
+ beq _021E4D40
+_021E4D34:
+ ldr r2, [r0]
+ cmp r2, r1
+ beq _021E4D42
+ add r0, #8
+ sub r3, r3, #1
+ bne _021E4D34
+_021E4D40:
+ mov r0, #0
+_021E4D42:
+ bx lr
+
+ thumb_func_start MOD05_021E4D44
+MOD05_021E4D44: ; 0x021E4D44
+ mov r1, #0x20
+ str r1, [r0]
+ mov r1, #0
+ str r1, [r0, #4]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4D50
+MOD05_021E4D50: ; 0x021E4D50
+ str r1, [r0]
+ str r2, [r0, #4]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4D58
+MOD05_021E4D58: ; 0x021E4D58
+ ldr r0, [r0]
+ cmp r0, #0x20
+ bne _021E4D62
+ mov r0, #1
+ bx lr
+_021E4D62:
+ mov r0, #0
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4D68
+MOD05_021E4D68: ; 0x021E4D68
+ push {r3, lr}
+ ldr r1, _021E4D8C ; =UNK05_021FC820
+ ldr r2, [r1]
+ cmp r2, #0x20
+ beq _021E4D82
+_021E4D72:
+ cmp r2, r0
+ bne _021E4D7A
+ add r0, r1, #0
+ pop {r3, pc}
+_021E4D7A:
+ add r1, #0xc
+ ldr r2, [r1]
+ cmp r2, #0x20
+ bne _021E4D72
+_021E4D82:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021E4D8C: .word UNK05_021FC820
+
+ thumb_func_start MOD05_021E4D90
+MOD05_021E4D90: ; 0x021E4D90
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0xc]
+ bl FUN_020643C0
+ str r0, [r4, #0x24]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E4DA0
+MOD05_021E4DA0: ; 0x021E4DA0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021E4DB2
+ bl FUN_020643F0
+ mov r0, #0
+ str r0, [r4, #0x24]
+_021E4DB2:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E4DB4
+MOD05_021E4DB4: ; 0x021E4DB4
+ push {r3, lr}
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ beq _021E4DC0
+ bl FUN_02064584
+_021E4DC0:
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4DC4
+MOD05_021E4DC4: ; 0x021E4DC4
+ push {r4, lr}
+ sub sp, #8
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ ldr r4, [sp, #0x14]
+ str r4, [sp, #4]
+ ldr r0, [r0, #0x24]
+ bl FUN_020644E4
+ add r4, r0, #0
+ bne _021E4DDE
+ bl ErrorHandling
+_021E4DDE:
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E4DE4
+MOD05_021E4DE4: ; 0x021E4DE4
+ ldr r3, _021E4DE8 ; =FUN_02064520
+ bx r3
+ .balign 4, 0
+_021E4DE8: .word FUN_02064520
+
+ thumb_func_start MOD05_021E4DEC
+MOD05_021E4DEC: ; 0x021E4DEC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r2, #0
+ add r5, r1, #0
+ mov r2, #0
+ str r3, [sp]
+ mov r1, #0x24
+ add r3, r2, #0
+ add r7, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r4, [r7, #0x28]
+ str r5, [r4]
+ ldr r0, [sp]
+ strh r6, [r4, #4]
+ strh r0, [r4, #6]
+ ldr r0, [sp, #0x20]
+ ldr r2, [sp, #0x28]
+ strh r0, [r4, #8]
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp]
+ strh r0, [r4, #0xa]
+ add r0, r5, #0
+ mov r1, #0x45
+ bl MOD05_021F5990
+ str r0, [r4, #0x10]
+ ldr r2, [sp, #0x2c]
+ ldr r3, [sp, #0x20]
+ add r0, r5, #0
+ mov r1, #0x46
+ bl MOD05_021F5990
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x24]
+ add r1, r5, #0
+ bl FUN_02020E90
+ str r0, [r4, #0x18]
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021E4F60
+ add r0, r7, #0
+ str r6, [sp, #4]
+ bl MOD05_021E4C30
+ str r0, [sp, #8]
+ add r0, sp, #4
+ bl FUN_0201F1B4
+ str r0, [r4, #0xc]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E4E5C
+MOD05_021E4E5C: ; 0x021E4E5C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r5, [r4, #0x28]
+ cmp r5, #0
+ beq _021E4E8E
+ ldr r0, [r5, #0xc]
+ bl FUN_0201F23C
+ add r0, r5, #0
+ bl MOD05_021E4F94
+ ldr r0, [r5, #0x10]
+ bl MOD05_021F59EC
+ ldr r0, [r5, #0x14]
+ bl MOD05_021F59EC
+ ldr r0, [r5, #0x18]
+ bl FUN_02020ED4
+ add r0, r5, #0
+ bl MOD05_021E4C00
+ mov r0, #0
+ str r0, [r4, #0x28]
+_021E4E8E:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E4E90
+MOD05_021E4E90: ; 0x021E4E90
+ push {r4, lr}
+ sub sp, #0x20
+ ldr r0, [r0, #0x28]
+ add r3, sp, #8
+ ldr r0, [r0, #0xc]
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldmia r2!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r2]
+ add r2, sp, #0x14
+ str r0, [r3]
+ ldr r3, _021E4EE0 ; =UNK05_021F7564
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ add r0, sp, #0
+ bl FUN_0201F6E8
+ add r4, r0, #0
+ bne _021E4EC0
+ bl ErrorHandling
+_021E4EC0:
+ cmp r4, #0
+ beq _021E4EDA
+ add r0, r4, #0
+ bl FUN_0201F8E0
+ mov r1, #1
+ bl FUN_020BB9F4
+ add r0, r4, #0
+ bl FUN_0201F8E0
+ bl MOD05_021DB5EC
+_021E4EDA:
+ add r0, r4, #0
+ add sp, #0x20
+ pop {r4, pc}
+ .balign 4, 0
+_021E4EE0: .word UNK05_021F7564
+
+ thumb_func_start MOD05_021E4EE4
+MOD05_021E4EE4: ; 0x021E4EE4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x28]
+ add r4, r2, #0
+ bl MOD05_021E504C
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD05_021E4E90
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E4EFC
+MOD05_021E4EFC: ; 0x021E4EFC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ ldr r5, [r0, #0x28]
+ add r6, r1, #0
+ ldr r0, [r5, #0x10]
+ add r1, r2, #0
+ add r4, r3, #0
+ bl MOD05_021F5A90
+ add r7, r0, #0
+ ldr r0, [r5, #0x14]
+ add r1, r4, #0
+ bl MOD05_021F5A90
+ add r1, sp, #0xc
+ bl FUN_0202227C
+ ldr r0, [r5, #0x18]
+ ldr r1, [sp, #0x30]
+ bl FUN_02021050
+ add r4, r0, #0
+ bne _021E4F2E
+ bl ErrorHandling
+_021E4F2E:
+ add r0, r4, #0
+ bl FUN_020210AC
+ ldr r1, [sp, #0x34]
+ cmp r1, #1
+ bne _021E4F3C
+ mov r4, #0
+_021E4F3C:
+ str r0, [sp]
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ add r3, sp, #0xc
+ bl MOD05_021E4FC8
+ add r4, r0, #0
+ bne _021E4F58
+ bl ErrorHandling
+_021E4F58:
+ add r0, r4, #0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4F60
+MOD05_021E4F60: ; 0x021E4F60
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r2, #0
+ mov r1, #0x28
+ add r7, r0, #0
+ mul r1, r5
+ mov r2, #0
+ bl MOD05_021E4BDC
+ add r4, r0, #0
+ add r0, r7, #0
+ lsl r1, r5, #3
+ mov r2, #0
+ str r4, [r6, #0x20]
+ bl MOD05_021E4BDC
+ str r0, [r6, #0x1c]
+ mov r1, #0xe
+_021E4F84:
+ str r1, [r0]
+ str r4, [r0, #4]
+ add r0, #8
+ add r4, #0x28
+ sub r5, r5, #1
+ bne _021E4F84
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4F94
+MOD05_021E4F94: ; 0x021E4F94
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl MOD05_021E4C00
+ ldr r0, [r4, #0x20]
+ bl MOD05_021E4C00
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4FA8
+MOD05_021E4FA8: ; 0x021E4FA8
+ push {r3, lr}
+ ldrh r2, [r0, #4]
+ ldr r3, [r0, #0x1c]
+_021E4FAE:
+ ldr r0, [r3]
+ cmp r0, r1
+ bne _021E4FBA
+ mov r0, #0xe
+ str r0, [r3]
+ pop {r3, pc}
+_021E4FBA:
+ add r3, #8
+ sub r2, r2, #1
+ bne _021E4FAE
+ bl ErrorHandling
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E4FC8
+MOD05_021E4FC8: ; 0x021E4FC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldrh r5, [r6, #4]
+ add r0, r1, #0
+ ldr r1, [sp, #0x1c]
+ str r2, [sp]
+ ldr r6, [r6, #0x1c]
+ add r7, r3, #0
+ str r1, [sp, #0x1c]
+ mov r4, #0
+ add r2, r5, #0
+ add r3, r6, #0
+_021E4FE0:
+ ldr r1, [r3]
+ cmp r1, r0
+ bne _021E4FEA
+ ldr r0, [r3, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E4FEA:
+ add r3, #8
+ sub r2, r2, #1
+ bne _021E4FE0
+_021E4FF0:
+ ldr r1, [r6]
+ cmp r1, #0xe
+ bne _021E4FFC
+ str r0, [r6]
+ ldr r4, [r6, #4]
+ b _021E5002
+_021E4FFC:
+ add r6, #8
+ sub r5, r5, #1
+ bne _021E4FF0
+_021E5002:
+ cmp r4, #0
+ bne _021E500A
+ bl ErrorHandling
+_021E500A:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x28
+ bl memset
+ ldr r0, [sp]
+ add r2, r4, #0
+ str r0, [r4]
+ add r2, #0xc
+ ldmia r7!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r7!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [sp, #0x18]
+ str r0, [r4, #4]
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _021E5044
+ bl FUN_020211AC
+ str r0, [r4, #0x1c]
+ ldr r0, [sp, #0x1c]
+ bl FUN_020211BC
+ str r0, [r4, #0x20]
+ ldr r0, [sp, #0x1c]
+ bl FUN_020211CC
+ str r0, [r4, #0x24]
+_021E5044:
+ ldr r0, [sp, #0x20]
+ str r0, [r4, #8]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E504C
+MOD05_021E504C: ; 0x021E504C
+ push {r3, lr}
+ ldrh r2, [r0, #4]
+ ldr r3, [r0, #0x1c]
+_021E5052:
+ ldr r0, [r3]
+ cmp r0, r1
+ bne _021E505C
+ ldr r0, [r3, #4]
+ pop {r3, pc}
+_021E505C:
+ add r3, #8
+ sub r2, r2, #1
+ bne _021E5052
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E506C
+MOD05_021E506C: ; 0x021E506C
+ ldr r3, _021E5074 ; =MOD05_021E4FA8
+ ldr r0, [r0, #0x28]
+ bx r3
+ nop
+_021E5074: .word MOD05_021E4FA8
+
+ thumb_func_start MOD05_021E5078
+MOD05_021E5078: ; 0x021E5078
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x28]
+ add r3, r2, #0
+ ldr r0, [r0, #0x10]
+ ldr r2, [r4, #0x20]
+ bl MOD05_021F5AE4
+ add sp, #4
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5094
+MOD05_021E5094: ; 0x021E5094
+ ldr r0, [r0, #0x28]
+ ldr r3, _021E509C ; =MOD05_021F5A90
+ ldr r0, [r0, #0x10]
+ bx r3
+ .balign 4, 0
+_021E509C: .word MOD05_021F5A90
+
+ thumb_func_start MOD05_021E50A0
+MOD05_021E50A0: ; 0x021E50A0
+ ldr r0, [r0, #0x28]
+ ldr r3, _021E50A8 ; =MOD05_021F5A74
+ ldr r0, [r0, #0x10]
+ bx r3
+ .balign 4, 0
+_021E50A8: .word MOD05_021F5A74
+
+ thumb_func_start MOD05_021E50AC
+MOD05_021E50AC: ; 0x021E50AC
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x28]
+ add r3, r2, #0
+ ldr r0, [r0, #0x14]
+ ldr r2, [r4, #0x20]
+ bl MOD05_021F5AE4
+ add sp, #4
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E50C8
+MOD05_021E50C8: ; 0x021E50C8
+ ldr r0, [r0, #0x28]
+ ldr r3, _021E50D0 ; =MOD05_021F5A74
+ ldr r0, [r0, #0x14]
+ bx r3
+ .balign 4, 0
+_021E50D0: .word MOD05_021F5A74
+
+ thumb_func_start MOD05_021E50D4
+MOD05_021E50D4: ; 0x021E50D4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r6, r1, #0
+ add r1, r2, #0
+ ldr r4, [r5, #0x28]
+ mov r2, #1
+ add r7, r3, #0
+ bl MOD05_021E4C6C
+ str r0, [sp, #4]
+ add r0, r5, #0
+ bl MOD05_021E4C30
+ str r0, [sp]
+ ldr r0, [r4, #0x18]
+ ldr r1, [sp, #4]
+ add r2, r6, #0
+ add r3, r7, #0
+ bl FUN_02020F54
+ cmp r0, #0
+ bne _021E5106
+ bl ErrorHandling
+_021E5106:
+ ldr r2, [r4, #0x18]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD05_021E5120
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E5114
+MOD05_021E5114: ; 0x021E5114
+ ldr r0, [r0, #0x28]
+ ldr r3, _021E511C ; =FUN_02020FF0
+ ldr r0, [r0, #0x18]
+ bx r3
+ .balign 4, 0
+_021E511C: .word FUN_02020FF0
+
+ thumb_func_start MOD05_021E5120
+MOD05_021E5120: ; 0x021E5120
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ mov r1, #0xc
+ mov r2, #1
+ bl MOD05_021E4BDC
+ add r4, r0, #0
+ mov r0, #1
+ str r0, [r4]
+ str r5, [r4, #4]
+ ldr r0, _021E5150 ; =MOD05_021E5158
+ add r1, r4, #0
+ mov r2, #0xff
+ str r6, [r4, #8]
+ bl FUN_0200CA60
+ ldr r0, _021E5154 ; =MOD05_021E5174
+ add r1, r4, #0
+ mov r2, #0xff
+ bl FUN_0200CA98
+ pop {r4, r5, r6, pc}
+ nop
+_021E5150: .word MOD05_021E5158
+_021E5154: .word MOD05_021E5174
+
+ thumb_func_start MOD05_021E5158
+MOD05_021E5158: ; 0x021E5158
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #4]
+ bl FUN_020210F0
+ mov r0, #1
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5174
+MOD05_021E5174: ; 0x021E5174
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #1
+ bne _021E5194
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #4]
+ bl FUN_02021158
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021E5194:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5198
+MOD05_021E5198: ; 0x021E5198
+ push {r4, r5, r6, lr}
+ add r4, r3, #0
+ ldr r0, [r4]
+ add r6, r1, #0
+ add r5, r2, #0
+ bl FUN_020BC0FC
+ cmp r0, #0
+ beq _021E51C8
+ bl FUN_0201B254
+ cmp r0, #0
+ bne _021E51C8
+ ldr r0, [r4]
+ ldr r1, [r0, #8]
+ bl DC_FlushRange
+ ldr r0, [r4]
+ bl FUN_020BB59C
+ cmp r0, #0
+ bne _021E51C8
+ bl ErrorHandling
+_021E51C8:
+ ldr r0, [r4]
+ bl FUN_020BC13C
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [r5]
+ cmp r5, #0
+ bne _021E51E0
+ bl ErrorHandling
+_021E51E0:
+ ldr r1, [r5]
+ add r0, r6, #0
+ bl FUN_020B80B4
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E51EC
+MOD05_021E51EC: ; 0x021E51EC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r3, #0
+ bl MOD05_021E4C6C
+ ldr r3, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ str r0, [r3]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021E5198
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5208
+MOD05_021E5208: ; 0x021E5208
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_0201B3C4
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ bl FUN_0201B3A8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E5224
+MOD05_021E5224: ; 0x021E5224
+ push {r4, lr}
+ add r4, r1, #0
+ add r1, r2, #0
+ add r2, r3, #0
+ bl MOD05_021E4C6C
+ str r0, [r4]
+ bl FUN_020BC13C
+ str r0, [r4, #4]
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ bl FUN_020BC0FC
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021E525A
+ mov r2, #1
+ ldr r0, _021E525C ; =MOD05_021E5208
+ add r1, r4, #0
+ lsl r2, r2, #0xa
+ bl FUN_0200CA60
+_021E525A:
+ pop {r4, pc}
+ .balign 4, 0
+_021E525C: .word MOD05_021E5208
+
+ thumb_func_start MOD05_021E5260
+MOD05_021E5260: ; 0x021E5260
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ add r6, r3, #0
+ bl MOD05_021E4C6C
+ str r0, [r5]
+ mov r1, #0
+ bl FUN_020BC4C8
+ str r0, [r5, #4]
+ ldr r1, [r5, #4]
+ ldr r2, [r4, #8]
+ add r0, r6, #0
+ bl FUN_020BB8D0
+ str r0, [r5, #8]
+ ldr r1, [r5, #4]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0xc]
+ bl FUN_020B8110
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5294
+MOD05_021E5294: ; 0x021E5294
+ push {r4, lr}
+ add r4, r1, #0
+ bl MOD05_021E4C30
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #0x20
+ bl FUN_02016B20
+ pop {r4, pc}
+
+ .section .rodata
+
+ .global UNK05_021F7564
+UNK05_021F7564: ; 0x021F7564
+ .word 0x00001000, 0x00001000, 0x00001000 \ No newline at end of file
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 62d2e73a..7f97e561 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -3,5198 +3,6 @@
.section .text
.balign 4, 0
- thumb_func_start MOD05_021E2B80
-MOD05_021E2B80: ; 0x021E2B80
- add r2, r0, #0
- add r2, #0x97
- ldrb r3, [r2]
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- mov r2, #0x40
- lsl r1, r1, #0x1f
- bic r3, r2
- lsr r1, r1, #0x19
- orr r1, r3
- add r0, #0x97
- strb r1, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E2B9C
-MOD05_021E2B9C: ; 0x021E2B9C
- add r2, r0, #0
- add r2, #0x97
- ldrb r3, [r2]
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- mov r2, #0x80
- lsl r1, r1, #0x1f
- bic r3, r2
- lsr r1, r1, #0x18
- orr r1, r3
- add r0, #0x97
- strb r1, [r0]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E2BB8
-MOD05_021E2BB8: ; 0x021E2BB8
- push {r4, lr}
- add r4, r0, #0
- add r0, r1, #0
- bl MOD05_021E2D00
- strb r0, [r4]
- mov r0, #0
- strb r0, [r4, #1]
- mov r0, #1
- strb r0, [r4, #2]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E2BD0
-MOD05_021E2BD0: ; 0x021E2BD0
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x20
- add r5, r0, #0
- str r3, [sp, #4]
- add r0, #0x80
- add r6, r1, #0
- ldr r0, [r0]
- add r1, sp, #8
- add r7, r2, #0
- ldr r4, [sp, #0x38]
- bl MOD05_021E2D14
- add r0, r5, #0
- add r0, #0x80
- ldr r0, [r0]
- add r1, sp, #8
- bl MOD05_021E2D9C
- add r0, sp, #8
- add r1, r6, #0
- add r2, r7, #0
- bl MOD05_021E2DD4
- cmp r4, #0
- bne _021E2C10
- add r0, r5, #0
- bl MOD05_021E2D00
- add r2, r0, #0
- mov r0, #0
- mov r1, #1
- b _021E2C16
-_021E2C10:
- ldrb r2, [r4]
- ldrb r0, [r4, #1]
- ldrb r1, [r4, #2]
-_021E2C16:
- str r0, [sp]
- ldr r3, [sp, #4]
- add r0, sp, #8
- bl MOD05_021E2E40
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_ShowMessageInField
-MOD05_ShowMessageInField: ; 0x021E2C24
- push {r4, r5, r6, lr}
- sub sp, #0x18
- add r5, r0, #0
- add r0, #0x80
- add r4, r1, #0
- ldr r0, [r0]
- add r1, sp, #0
- add r6, r2, #0
- bl MOD05_021E2D14
- add r5, #0x80
- ldr r0, [r5]
- add r1, sp, #0
- bl MOD05_021E2D9C
- add r0, sp, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021E2DD4
- add r0, sp, #0
- mov r1, #1
- bl MOD05_021E2E68
- add sp, #0x18
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E2C58
-MOD05_021E2C58: ; 0x021E2C58
- push {r4, r5, r6, r7, lr}
- sub sp, #0x1c
- add r5, r0, #0
- add r0, #0x80
- add r4, r1, #0
- ldr r0, [r0]
- add r1, sp, #4
- add r6, r2, #0
- add r7, r3, #0
- bl MOD05_021E2D14
- add r0, r5, #0
- add r0, #0x80
- ldr r0, [r0]
- add r1, sp, #4
- bl MOD05_021E2D9C
- add r0, sp, #0x20
- ldrh r0, [r0, #0x10]
- add r1, r4, #0
- add r2, r6, #0
- str r0, [sp]
- add r0, sp, #4
- add r3, r7, #0
- bl MOD05_021E2DF0
- add r0, sp, #0x20
- ldrb r0, [r0, #0x14]
- cmp r0, #0xff
- beq _021E2CB0
- add r0, r5, #0
- bl MOD05_021E2D00
- add r2, r0, #0
- mov r0, #0
- str r0, [sp]
- add r3, sp, #0x20
- ldrb r3, [r3, #0x14]
- add r0, sp, #4
- mov r1, #1
- bl MOD05_021E2E40
- add sp, #0x1c
- pop {r4, r5, r6, r7, pc}
-_021E2CB0:
- add r0, sp, #4
- mov r1, #1
- bl MOD05_021E2E68
- add sp, #0x1c
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E2CBC
-MOD05_021E2CBC: ; 0x021E2CBC
- push {r3, r4, r5, r6, lr}
- sub sp, #0x1c
- add r5, r0, #0
- add r0, #0x80
- add r4, r2, #0
- ldr r0, [r0]
- add r2, sp, #4
- add r6, r3, #0
- bl MOD05_021E2D5C
- add r0, r5, #0
- add r0, #0x80
- ldr r0, [r0]
- add r1, sp, #4
- bl MOD05_021E2D9C
- ldr r1, [r5, #0x78]
- add r0, sp, #4
- add r2, r4, #0
- bl MOD05_021E2DD4
- add r0, r5, #0
- bl MOD05_021E2D00
- add r2, r0, #0
- mov r0, #0
- str r0, [sp]
- add r0, sp, #4
- mov r1, #1
- add r3, r6, #0
- bl MOD05_021E2E40
- add sp, #0x1c
- pop {r3, r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E2D00
-MOD05_021E2D00: ; 0x021E2D00
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetOptionsAddr
- bl FUN_02024FF4
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E2D14
-MOD05_021E2D14: ; 0x021E2D14
- push {r3, r4, r5, lr}
- add r4, r1, #0
- mov r1, #0x10
- add r5, r0, #0
- bl FUN_02039438
- ldr r0, [r0]
- mov r1, #0x11
- str r0, [r4]
- add r0, r5, #0
- bl FUN_02039438
- ldr r0, [r0]
- mov r1, #0xf
- str r0, [r4, #4]
- add r0, r5, #0
- bl FUN_02039438
- ldr r0, [r0]
- mov r1, #1
- str r0, [r4, #8]
- add r0, r5, #0
- bl FUN_02039438
- str r0, [r4, #0xc]
- add r0, r5, #0
- mov r1, #6
- bl FUN_02039438
- str r0, [r4, #0x10]
- add r0, r5, #0
- mov r1, #3
- bl FUN_02039438
- str r0, [r4, #0x14]
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E2D5C
-MOD05_021E2D5C: ; 0x021E2D5C
- push {r4, r5, r6, lr}
- add r6, r1, #0
- mov r1, #0x10
- add r5, r0, #0
- add r4, r2, #0
- bl FUN_02039438
- ldr r0, [r0]
- mov r1, #0x11
- str r0, [r4]
- add r0, r5, #0
- bl FUN_02039438
- ldr r0, [r0]
- mov r1, #1
- str r0, [r4, #4]
- str r6, [r4, #8]
- add r0, r5, #0
- bl FUN_02039438
- str r0, [r4, #0xc]
- add r0, r5, #0
- mov r1, #6
- bl FUN_02039438
- str r0, [r4, #0x10]
- add r0, r5, #0
- mov r1, #3
- bl FUN_02039438
- str r0, [r4, #0x14]
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E2D9C
-MOD05_021E2D9C: ; 0x021E2D9C
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4, #0x10]
- ldrb r0, [r0]
- cmp r0, #0
- bne _021E2DC8
- ldr r0, [r5, #8]
- ldr r1, [r4, #0xc]
- mov r2, #3
- bl FUN_020545B8
- ldr r0, [r5, #0xc]
- bl Sav2_PlayerData_GetOptionsAddr
- add r1, r0, #0
- ldr r0, [r4, #0xc]
- bl FUN_02054608
- ldr r0, [r4, #0x10]
- mov r1, #1
- strb r1, [r0]
-_021E2DC8:
- ldr r0, [r4, #0xc]
- mov r1, #0xf
- bl FUN_02019620
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E2DD4
-MOD05_021E2DD4: ; 0x021E2DD4
- push {r4, lr}
- add r4, r0, #0
- add r0, r1, #0
- add r1, r2, #0
- ldr r2, [r4, #4]
- bl ReadMsgDataIntoString
- ldr r0, [r4, #8]
- ldr r1, [r4]
- ldr r2, [r4, #4]
- bl StringExpandPlaceholders
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E2DF0
-MOD05_021E2DF0: ; 0x021E2DF0
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r5, r0, #0
- add r4, r1, #0
- add r6, r2, #0
- add r0, sp, #0
- add r7, r3, #0
- bl FUN_02013724
- add r0, sp, #0
- add r1, r4, #0
- add r2, r6, #0
- bl FUN_02013980
- add r0, sp, #0
- mov r1, #0
- add r2, r7, #0
- bl FUN_02013998
- add r2, sp, #0x10
- ldrh r2, [r2, #0x10]
- add r0, sp, #0
- mov r1, #1
- bl FUN_02013998
- add r0, sp, #0
- mov r1, #0x20
- bl FUN_020137D4
- add r4, r0, #0
- ldr r0, [r5]
- add r1, r4, #0
- bl StringCopy
- add r0, r4, #0
- bl String_dtor
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E2E40
-MOD05_021E2E40: ; 0x021E2E40
- push {r4, r5, r6, lr}
- sub sp, #8
- add r4, r0, #0
- lsl r0, r3, #0x18
- lsr r0, r0, #0x18
- str r0, [sp]
- ldr r0, [sp, #0x18]
- add r5, r2, #0
- str r0, [sp, #4]
- add r6, r1, #0
- ldr r0, [r4, #0xc]
- ldr r1, [r4]
- add r2, r6, #0
- add r3, r5, #0
- bl FUN_02054690
- ldr r1, [r4, #0x14]
- strb r0, [r1]
- add sp, #8
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E2E68
-MOD05_021E2E68: ; 0x021E2E68
- push {r3, r4, lr}
- sub sp, #0xc
- mov r3, #0
- str r3, [sp]
- str r3, [sp, #4]
- add r4, r0, #0
- str r3, [sp, #8]
- ldr r0, [r4, #0xc]
- ldr r2, [r4]
- bl AddTextPrinterParameterized
- ldr r1, [r4, #0x14]
- strb r0, [r1]
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E2E88
-MOD05_021E2E88: ; 0x021E2E88
- push {r4, r5, r6, lr}
- lsl r6, r1, #5
- add r5, r0, #0
- add r4, r2, #0
- add r1, r6, #0
- bl DC_FlushRange
- add r0, r5, #0
- lsl r1, r4, #5
- add r2, r6, #0
- bl GX_LoadBGPltt
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E2EA4
-MOD05_021E2EA4: ; 0x021E2EA4
- push {r3, r4, lr}
- sub sp, #0x14
- mov r3, #0
- add r4, r0, #0
- str r3, [sp]
- mov r0, #0x20
- str r0, [sp, #4]
- mov r2, #3
- add r1, r4, #0
- str r2, [sp, #8]
- mov r0, #7
- str r0, [sp, #0xc]
- ldr r0, _021E2EDC ; =0x000002CD
- add r1, #0x20
- str r0, [sp, #0x10]
- ldr r0, [r4, #0x1c]
- bl FUN_02019064
- mov r0, #0
- str r0, [sp]
- ldr r2, _021E2EE0 ; =0x000003CF
- add r0, r4, #0
- mov r1, #3
- mov r3, #7
- bl MOD05_021E2EE4
- add sp, #0x14
- pop {r3, r4, pc}
- .balign 4, 0
-_021E2EDC: .word 0x000002CD
-_021E2EE0: .word 0x000003CF
-
- thumb_func_start MOD05_021E2EE4
-MOD05_021E2EE4: ; 0x021E2EE4
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r4, r2, #0
- add r5, r0, #0
- add r6, r1, #0
- ldr r2, _021E2F2C ; =UNK05_021FD610
- add r0, #0x38
- mov r1, #4
- add r7, r3, #0
- bl FUN_0201AB28
- str r0, [r5, #0x34]
- add r3, r0, #0
- str r4, [sp]
- ldr r2, [r3, #0x14]
- ldr r0, [r5, #0x1c]
- ldr r3, [r3, #0x10]
- add r1, r6, #0
- bl FUN_02017E14
- ldr r2, _021E2F30 ; =UNK05_021FD62C
- add r0, sp, #4
- mov r1, #4
- bl FUN_0201AB44
- ldr r0, [r0, #0xc]
- mov r1, #1
- add r2, r7, #0
- bl MOD05_021E2E88
- ldr r0, [sp, #4]
- bl FreeToHeap
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E2F2C: .word UNK05_021FD610
-_021E2F30: .word UNK05_021FD62C
-
- thumb_func_start MOD05_021E2F34
-MOD05_021E2F34: ; 0x021E2F34
- push {r4, r5, r6, r7, lr}
- sub sp, #0x1c
- add r2, r1, #0
- add r2, #8
- add r5, r0, #0
- asr r0, r2, #2
- lsr r0, r0, #0x1d
- add r0, r2, r0
- asr r0, r0, #3
- lsl r0, r0, #3
- sub r2, r0, r1
- lsr r0, r2, #0x1f
- add r0, r2, r0
- asr r0, r0, #1
- add r2, r0, #4
- cmp r2, #8
- blt _021E2F5A
- mov r3, #0
- b _021E2F6C
-_021E2F5A:
- mov r0, #8
- sub r0, r0, r2
- lsl r0, r0, #1
- add r2, r0, #7
- asr r0, r2, #2
- lsr r0, r0, #0x1d
- add r0, r2, r0
- lsl r0, r0, #0x15
- lsr r3, r0, #0x18
-_021E2F6C:
- cmp r1, #0
- bgt _021E2F76
- mov r0, #0
- str r0, [sp, #0x18]
- b _021E2F92
-_021E2F76:
- add r2, r1, #0
- add r2, #8
- asr r0, r2, #2
- lsr r0, r0, #0x1d
- add r0, r2, r0
- asr r0, r0, #3
- add r0, r0, r3
- str r0, [sp, #0x18]
- lsl r0, r0, #3
- add r0, #8
- sub r1, r0, r1
- lsr r0, r1, #0x1f
- add r0, r1, r0
- asr r0, r0, #1
-_021E2F92:
- add r1, r0, #4
- add r0, r5, #0
- add r0, #0x30
- strb r1, [r0]
- add r0, r5, #0
- add r0, #0x20
- mov r1, #0
- bl FUN_02019620
- mov r2, #8
- str r2, [sp]
- add r0, r5, #0
- str r2, [sp, #4]
- mov r3, #0
- str r3, [sp, #8]
- str r3, [sp, #0xc]
- str r2, [sp, #0x10]
- str r2, [sp, #0x14]
- ldr r1, [r5, #0x34]
- add r0, #0x20
- ldr r1, [r1, #0x14]
- bl FUN_02019658
- ldr r0, [sp, #0x18]
- mov r1, #8
- add r0, r0, #1
- lsl r4, r0, #3
- str r1, [sp]
- lsl r0, r4, #0x10
- str r1, [sp, #4]
- lsr r0, r0, #0x10
- str r0, [sp, #8]
- mov r3, #0
- str r3, [sp, #0xc]
- str r1, [sp, #0x10]
- str r1, [sp, #0x14]
- ldr r1, [r5, #0x34]
- add r0, r5, #0
- ldr r1, [r1, #0x14]
- add r0, #0x20
- mov r2, #0x18
- bl FUN_02019658
- mov r0, #8
- str r0, [sp]
- str r0, [sp, #4]
- mov r3, #0
- str r3, [sp, #8]
- str r0, [sp, #0xc]
- str r0, [sp, #0x10]
- str r0, [sp, #0x14]
- ldr r1, [r5, #0x34]
- add r0, r5, #0
- ldr r1, [r1, #0x14]
- add r0, #0x20
- mov r2, #0x38
- bl FUN_02019658
- mov r1, #8
- str r1, [sp]
- lsl r0, r4, #0x10
- str r1, [sp, #4]
- lsr r0, r0, #0x10
- str r0, [sp, #8]
- str r1, [sp, #0xc]
- str r1, [sp, #0x10]
- str r1, [sp, #0x14]
- ldr r1, [r5, #0x34]
- add r0, r5, #0
- ldr r1, [r1, #0x14]
- add r0, #0x20
- mov r2, #0x40
- mov r3, #0
- bl FUN_02019658
- mov r1, #8
- str r1, [sp]
- str r1, [sp, #4]
- mov r3, #0
- str r3, [sp, #8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- str r1, [sp, #0x10]
- str r1, [sp, #0x14]
- ldr r1, [r5, #0x34]
- add r0, r5, #0
- ldr r1, [r1, #0x14]
- add r0, #0x20
- mov r2, #0x20
- bl FUN_02019658
- mov r1, #8
- str r1, [sp]
- lsl r0, r4, #0x10
- str r1, [sp, #4]
- lsr r0, r0, #0x10
- str r0, [sp, #8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- str r1, [sp, #0x10]
- str r1, [sp, #0x14]
- ldr r1, [r5, #0x34]
- add r0, r5, #0
- ldr r1, [r1, #0x14]
- add r0, #0x20
- mov r2, #0x30
- mov r3, #0
- bl FUN_02019658
- ldr r0, [sp, #0x18]
- mov r7, #0
- cmp r0, #0
- ble _021E30F2
- add r6, r5, #0
- add r6, #0x20
-_021E3078:
- add r0, r7, #1
- lsl r4, r0, #3
- mov r0, #8
- str r0, [sp]
- str r0, [sp, #4]
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #8]
- mov r0, #0
- str r0, [sp, #0xc]
- mov r0, #8
- str r0, [sp, #0x10]
- str r0, [sp, #0x14]
- ldr r1, [r5, #0x34]
- add r0, r6, #0
- ldr r1, [r1, #0x14]
- mov r2, #0x10
- mov r3, #0
- bl FUN_02019658
- mov r0, #8
- str r0, [sp]
- str r0, [sp, #4]
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #8]
- mov r0, #8
- str r0, [sp, #0xc]
- str r0, [sp, #0x10]
- str r0, [sp, #0x14]
- ldr r1, [r5, #0x34]
- add r0, r6, #0
- ldr r1, [r1, #0x14]
- mov r2, #0x48
- mov r3, #0
- bl FUN_02019658
- mov r0, #8
- str r0, [sp]
- str r0, [sp, #4]
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- mov r0, #8
- str r0, [sp, #0x10]
- str r0, [sp, #0x14]
- ldr r1, [r5, #0x34]
- add r0, r6, #0
- ldr r1, [r1, #0x14]
- mov r2, #0x28
- mov r3, #0
- bl FUN_02019658
- add r0, r7, #1
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
- ldr r0, [sp, #0x18]
- cmp r7, r0
- blt _021E3078
-_021E30F2:
- add r5, #0x20
- add r0, r5, #0
- bl FUN_020191D0
- add sp, #0x1c
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E3100
-MOD05_021E3100: ; 0x021E3100
- mov r1, #0
- str r1, [r0]
- strb r1, [r0, #4]
- str r1, [r0, #8]
- str r1, [r0, #0xc]
- strh r1, [r0, #0x10]
- str r1, [r0, #0x14]
- str r1, [r0, #0x18]
- str r1, [r0, #0x1c]
- bx lr
-
- thumb_func_start MOD05_021E3114
-MOD05_021E3114: ; 0x021E3114
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021E3100
- str r4, [r5, #0x1c]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E3124
-MOD05_021E3124: ; 0x021E3124
- push {r4, lr}
- add r4, r1, #0
- ldrb r0, [r4, #4]
- cmp r0, #3
- bhi _021E31D0
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E313A: ; jump table
- .short _021E31D0 - _021E313A - 2 ; case 0
- .short _021E3142 - _021E313A - 2 ; case 1
- .short _021E3180 - _021E313A - 2 ; case 2
- .short _021E316A - _021E313A - 2 ; case 3
-_021E3142:
- ldr r0, [r4, #0xc]
- sub r0, r0, #4
- str r0, [r4, #0xc]
- bpl _021E314E
- mov r0, #0
- str r0, [r4, #0xc]
-_021E314E:
- mov r1, #3
- ldr r0, [r4, #0x1c]
- ldr r3, [r4, #0xc]
- add r2, r1, #0
- bl FUN_020179E0
- ldr r0, [r4, #0xc]
- cmp r0, #0
- bne _021E31D0
- mov r0, #0
- strh r0, [r4, #0x10]
- mov r0, #3
- strb r0, [r4, #4]
- pop {r4, pc}
-_021E316A:
- ldrh r0, [r4, #0x10]
- add r0, r0, #1
- strh r0, [r4, #0x10]
- ldrh r0, [r4, #0x10]
- cmp r0, #0x3c
- blo _021E31D0
- mov r0, #0
- strh r0, [r4, #0x10]
- mov r0, #2
- strb r0, [r4, #4]
- pop {r4, pc}
-_021E3180:
- ldr r0, [r4, #0xc]
- add r0, r0, #4
- str r0, [r4, #0xc]
- cmp r0, #0x26
- ble _021E318E
- mov r0, #0x26
- str r0, [r4, #0xc]
-_021E318E:
- mov r1, #3
- ldr r0, [r4, #0x1c]
- ldr r3, [r4, #0xc]
- add r2, r1, #0
- bl FUN_020179E0
- ldr r0, [r4, #0xc]
- cmp r0, #0x26
- bne _021E31D0
- ldr r0, [r4, #0x14]
- cmp r0, #0
- beq _021E31CA
- mov r0, #0
- str r0, [r4, #0x14]
- ldr r0, [r4, #0x3c]
- ldr r1, [r4, #0x18]
- ldr r2, [r4, #0x40]
- bl FUN_02064E4C
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E2F34
- ldr r1, [r4, #0x40]
- add r0, r4, #0
- bl MOD05_021E31D4
- mov r0, #1
- strb r0, [r4, #4]
- pop {r4, pc}
-_021E31CA:
- add r0, r4, #0
- bl MOD05_021E32F0
-_021E31D0:
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E31D4
-MOD05_021E31D4: ; 0x021E31D4
- push {r3, lr}
- sub sp, #0x10
- add r3, r0, #0
- mov r0, #3
- add r2, r1, #0
- str r0, [sp]
- mov r1, #0
- ldr r0, _021E31FC ; =0x00010200
- str r1, [sp, #4]
- str r0, [sp, #8]
- add r0, r3, #0
- str r1, [sp, #0xc]
- add r3, #0x30
- ldrb r3, [r3]
- add r0, #0x20
- bl AddTextPrinterParameterized2
- add sp, #0x10
- pop {r3, pc}
- nop
-_021E31FC: .word 0x00010200
-
- thumb_func_start MOD05_021E3200
-MOD05_021E3200: ; 0x021E3200
- mov r1, #2
- strb r1, [r0, #4]
- mov r1, #0
- strh r1, [r0, #0x10]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E320C
-MOD05_021E320C: ; 0x021E320C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #4
- mov r1, #0x44
- bl AllocFromHeap
- add r4, r0, #0
- mov r0, #0x16
- mov r1, #4
- bl String_ctor
- str r0, [r4, #0x40]
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021E3114
- add r0, r4, #0
- bl MOD05_021E2EA4
- ldr r2, _021E3244 ; =0x0000017E
- mov r0, #1
- mov r1, #0x1a
- mov r3, #4
- bl NewMsgDataFromNarc
- str r0, [r4, #0x3c]
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021E3244: .word 0x0000017E
-
- thumb_func_start MOD05_021E3248
-MOD05_021E3248: ; 0x021E3248
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x3c]
- bl DestroyMsgData
- add r0, r4, #0
- add r0, #0x20
- bl FUN_02019178
- ldr r0, [r4, #0x40]
- bl String_dtor
- ldr r0, [r4, #0x38]
- bl FreeToHeap
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E3270
-MOD05_021E3270: ; 0x021E3270
- push {r4, lr}
- add r4, r0, #0
- str r1, [r4, #0x18]
- ldr r1, [r4]
- cmp r1, #0
- bne _021E32BC
- mov r0, #1
- str r0, [r4]
- mov r1, #3
- ldr r0, [r4, #0x1c]
- add r2, r1, #0
- mov r3, #0x26
- bl FUN_020179E0
- mov r0, #0x26
- str r0, [r4, #0xc]
- ldr r0, _021E32EC ; =MOD05_021E3124
- add r1, r4, #0
- mov r2, #0
- bl FUN_0200CA44
- str r0, [r4, #8]
- mov r0, #1
- strb r0, [r4, #4]
- ldr r0, [r4, #0x3c]
- ldr r1, [r4, #0x18]
- ldr r2, [r4, #0x40]
- bl FUN_02064E4C
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E2F34
- ldr r1, [r4, #0x40]
- add r0, r4, #0
- bl MOD05_021E31D4
- pop {r4, pc}
-_021E32BC:
- ldrb r1, [r4, #4]
- cmp r1, #3
- bhi _021E32E6
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021E32CE: ; jump table
- .short _021E32E6 - _021E32CE - 2 ; case 0
- .short _021E32D6 - _021E32CE - 2 ; case 1
- .short _021E32E0 - _021E32CE - 2 ; case 2
- .short _021E32D6 - _021E32CE - 2 ; case 3
-_021E32D6:
- bl MOD05_021E3200
- mov r0, #1
- str r0, [r4, #0x14]
- pop {r4, pc}
-_021E32E0:
- mov r0, #1
- str r0, [r4, #0x14]
- pop {r4, pc}
-_021E32E6:
- bl ErrorHandling
- pop {r4, pc}
- .balign 4, 0
-_021E32EC: .word MOD05_021E3124
-
- thumb_func_start MOD05_021E32F0
-MOD05_021E32F0: ; 0x021E32F0
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #8]
- cmp r0, #0
- beq _021E32FE
- bl FUN_0200CAB4
-_021E32FE:
- add r0, r4, #0
- add r0, #0x20
- bl FUN_02019570
- mov r1, #3
- ldr r0, [r4, #0x1c]
- add r2, r1, #0
- mov r3, #0
- bl FUN_020179E0
- ldr r1, [r4, #0x1c]
- add r0, r4, #0
- bl MOD05_021E3114
- pop {r4, pc}
-
- thumb_func_start MOD05_021E331C
-MOD05_021E331C: ; 0x021E331C
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x1c]
- ldr r0, [r0]
- bl FUN_02034944
- cmp r0, #0
- bne _021E333E
- ldr r0, [r4, #0x1c]
- ldr r0, [r0]
- bl FUN_02034824
- add r1, r0, #0
- ldr r0, [r4, #4]
- ldr r0, [r0, #8]
- bl MOD05_021E3270
-_021E333E:
- pop {r4, pc}
-
- thumb_func_start MOD05_021E3340
-MOD05_021E3340: ; 0x021E3340
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- add r4, r0, #0
- bl FUN_02046528
- add r5, r0, #0
- add r0, r4, #0
- bl FUN_0204652C
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #4
- bhi _021E3414
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E3366: ; jump table
- .short _021E3370 - _021E3366 - 2 ; case 0
- .short _021E3388 - _021E3366 - 2 ; case 1
- .short _021E33A0 - _021E3366 - 2 ; case 2
- .short _021E33E4 - _021E3366 - 2 ; case 3
- .short _021E33FE - _021E3366 - 2 ; case 4
-_021E3370:
- mov r0, #2
- add r1, r0, #0
- str r0, [sp]
- sub r1, #0x12
- mov r2, #0
- mov r3, #0x3f
- bl FUN_0200A208
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E3414
-_021E3388:
- mov r0, #2
- bl FUN_0200A344
- cmp r0, #0
- beq _021E3414
- ldr r0, [r5, #8]
- bl MOD19_022524F4
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E3414
-_021E33A0:
- ldr r0, [r5, #8]
- bl MOD19_02252504
- cmp r0, #0
- beq _021E3414
- ldr r0, [r5, #0xc]
- bl FUN_0204C1A8
- add r6, r0, #0
- ldr r0, _021E341C ; =SDK_OVERLAY_MODULE_19_ID
- bl UnloadOverlayByID
- ldr r0, _021E3420 ; =SDK_OVERLAY_MODULE_20_ID
- mov r1, #2
- bl HandleLoadOverlay
- add r0, r6, #0
- bl FUN_0204BEB8
- mov r0, #1
- bl FUN_0200A03C
- str r0, [sp]
- ldr r1, [r5, #4]
- ldr r2, [r5, #0xc]
- ldr r3, [r5, #8]
- add r0, r5, #0
- add r1, #0x14
- bl MOD20_02252448
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E3414
-_021E33E4:
- mov r1, #0
- mov r0, #2
- add r2, r1, #0
- str r0, [sp]
- mov r0, #4
- sub r2, #0x10
- mov r3, #0x3f
- bl FUN_0200A208
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E3414
-_021E33FE:
- mov r0, #2
- bl FUN_0200A344
- cmp r0, #0
- beq _021E3414
- add r0, r4, #0
- bl FreeToHeap
- add sp, #4
- mov r0, #1
- pop {r3, r4, r5, r6, pc}
-_021E3414:
- mov r0, #0
- add sp, #4
- pop {r3, r4, r5, r6, pc}
- nop
-_021E341C: .word SDK_OVERLAY_MODULE_19_ID
-_021E3420: .word SDK_OVERLAY_MODULE_20_ID
-
- thumb_func_start MOD05_021E3424
-MOD05_021E3424: ; 0x021E3424
- push {r4, lr}
- add r4, r0, #0
- mov r0, #0xb
- mov r1, #4
- bl AllocFromHeapAtEnd
- add r2, r0, #0
- mov r0, #0
- str r0, [r2]
- ldr r1, _021E3440 ; =MOD05_021E3340
- add r0, r4, #0
- bl FUN_0204640C
- pop {r4, pc}
- .balign 4, 0
-_021E3440: .word MOD05_021E3340
-
- thumb_func_start MOD05_021E3444
-MOD05_021E3444: ; 0x021E3444
- push {r3, r4, r5, lr}
- add r5, r1, #0
- lsl r1, r0, #2
- ldr r0, _021E3470 ; =UNK05_021F74E8
- add r4, r2, #0
- ldr r0, [r0, r1]
- mov r1, #0x20
- mov r2, #5
- mov r3, #4
- bl FUN_020061E8
- bl FUN_0201B6C8
- str r5, [r0, #0x10]
- str r4, [r0, #0x14]
- cmp r4, #0
- beq _021E346A
- mov r1, #0
- str r1, [r4]
-_021E346A:
- mov r1, #0
- str r1, [r0, #0x18]
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021E3470: .word UNK05_021F74E8
-
- thumb_func_start MOD05_021E3474
-MOD05_021E3474: ; 0x021E3474
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- add r7, r1, #0
- mov r0, #4
- mov r1, #0x4c
- str r2, [sp]
- add r5, r3, #0
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0x4c
- add r4, r0, #0
- bl memset
- ldr r0, _021E34B4 ; =MOD05_021E34B8
- add r1, r4, #0
- mov r2, #5
- bl FUN_0200CA44
- str r5, [r4, #0x48]
- cmp r5, #0
- beq _021E34A4
- mov r0, #0
- str r0, [r5]
-_021E34A4:
- str r6, [r4, #0xc]
- ldr r0, [sp]
- str r7, [r4, #0x10]
- str r0, [r4, #0x14]
- ldr r0, [sp, #0x18]
- str r0, [r4, #4]
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E34B4: .word MOD05_021E34B8
-
- thumb_func_start MOD05_021E34B8
-MOD05_021E34B8: ; 0x021E34B8
- push {r3, r4, lr}
- sub sp, #4
- add r4, r1, #0
- ldr r1, [r4]
- cmp r1, #5
- bhi _021E359E
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021E34D0: ; jump table
- .short _021E34DC - _021E34D0 - 2 ; case 0
- .short _021E3514 - _021E34D0 - 2 ; case 1
- .short _021E352E - _021E34D0 - 2 ; case 2
- .short _021E3542 - _021E34D0 - 2 ; case 3
- .short _021E355C - _021E34D0 - 2 ; case 4
- .short _021E3580 - _021E34D0 - 2 ; case 5
-_021E34DC:
- ldr r0, [r4, #0xc]
- cmp r0, #1
- bne _021E34F6
- mov r0, #8
- str r0, [sp]
- add r0, r4, #0
- ldr r2, [r4, #0x14]
- add r0, #0x30
- mov r1, #0
- mov r3, #2
- bl MOD05_021E372C
- b _021E350C
-_021E34F6:
- cmp r0, #2
- bne _021E350C
- mov r0, #8
- str r0, [sp]
- add r0, r4, #0
- ldr r2, [r4, #0x14]
- add r0, #0x30
- mov r1, #0
- mov r3, #1
- bl MOD05_021E372C
-_021E350C:
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E359E
-_021E3514:
- mov r0, #3
- str r0, [sp]
- add r0, r4, #0
- ldr r2, [r4, #0x10]
- ldr r3, [r4, #0xc]
- add r0, #0x18
- mov r1, #0
- bl MOD05_021E372C
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E359E
-_021E352E:
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E3738
- cmp r0, #0
- beq _021E359E
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E359E
-_021E3542:
- mov r0, #3
- str r0, [sp]
- add r0, r4, #0
- ldr r1, [r4, #0x10]
- ldr r3, [r4, #0xc]
- add r0, #0x18
- mov r2, #0
- bl MOD05_021E372C
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E359E
-_021E355C:
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E3738
- cmp r0, #0
- beq _021E359E
- ldr r0, [r4, #8]
- add r1, r0, #1
- str r1, [r4, #8]
- ldr r0, [r4, #4]
- cmp r1, r0
- bne _021E357A
- mov r0, #5
- str r0, [r4]
- b _021E359E
-_021E357A:
- mov r0, #1
- str r0, [r4]
- b _021E359E
-_021E3580:
- mov r1, #0
- str r1, [r4]
- str r1, [r4, #8]
- ldr r2, [r4, #0x48]
- cmp r2, #0
- beq _021E3590
- mov r1, #1
- str r1, [r2]
-_021E3590:
- bl FUN_0200CAB4
- add r0, r4, #0
- bl FreeToHeap
- add sp, #4
- pop {r3, r4, pc}
-_021E359E:
- add r4, #0x30
- add r0, r4, #0
- bl MOD05_021E3738
- add sp, #4
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E35AC
-MOD05_021E35AC: ; 0x021E35AC
- ldr r0, [r0, #0x18]
- bx lr
-
- thumb_func_start MOD05_021E35B0
-MOD05_021E35B0: ; 0x021E35B0
- str r1, [r0]
- str r1, [r0, #4]
- sub r1, r2, r1
- str r1, [r0, #8]
- str r3, [r0, #0x10]
- mov r1, #0
- str r1, [r0, #0xc]
- bx lr
-
- thumb_func_start MOD05_021E35C0
-MOD05_021E35C0: ; 0x021E35C0
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4, #8]
- ldr r0, [r4, #0xc]
- mul r0, r1
- ldr r1, [r4, #0x10]
- bl _s32_div_f
- ldr r1, [r4, #4]
- add r0, r0, r1
- str r0, [r4]
- ldr r0, [r4, #0xc]
- ldr r1, [r4, #0x10]
- add r0, r0, #1
- cmp r0, r1
- bgt _021E35E6
- str r0, [r4, #0xc]
- mov r0, #0
- pop {r4, pc}
-_021E35E6:
- str r1, [r4, #0xc]
- mov r0, #1
- pop {r4, pc}
-
- thumb_func_start MOD05_021E35EC
-MOD05_021E35EC: ; 0x021E35EC
- str r1, [r0]
- str r1, [r0, #4]
- sub r1, r2, r1
- str r1, [r0, #8]
- str r3, [r0, #0x10]
- mov r1, #0
- str r1, [r0, #0xc]
- bx lr
-
- thumb_func_start MOD05_021E35FC
-MOD05_021E35FC: ; 0x021E35FC
- push {r4, lr}
- add r4, r0, #0
- ldr r2, [r4, #0xc]
- ldr r0, [r4, #8]
- lsl r2, r2, #0xc
- asr r1, r0, #0x1f
- asr r3, r2, #0x1f
- bl _ll_mul
- mov r2, #2
- mov r3, #0
- lsl r2, r2, #0xa
- add r0, r0, r2
- adc r1, r3
- lsl r1, r1, #0x14
- lsr r0, r0, #0xc
- orr r0, r1
- ldr r1, [r4, #0x10]
- lsl r1, r1, #0xc
- bl FX_Div
- ldr r1, [r4, #4]
- add r0, r0, r1
- str r0, [r4]
- ldr r0, [r4, #0xc]
- ldr r1, [r4, #0x10]
- add r0, r0, #1
- cmp r0, r1
- bgt _021E363C
- str r0, [r4, #0xc]
- mov r0, #0
- pop {r4, pc}
-_021E363C:
- str r1, [r4, #0xc]
- mov r0, #1
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E3644
-MOD05_021E3644: ; 0x021E3644
- push {r3, r4, r5, r6, r7, lr}
- ldr r4, [sp, #0x18]
- add r5, r0, #0
- add r7, r2, #0
- add r0, r3, #0
- add r6, r1, #0
- lsl r2, r4, #0xc
- str r3, [sp]
- asr r1, r0, #0x1f
- asr r3, r2, #0x1f
- bl _ll_mul
- add r2, r0, #0
- sub r0, r7, r6
- mov r7, #2
- mov r3, #0
- lsl r7, r7, #0xa
- add r2, r2, r7
- adc r1, r3
- lsl r1, r1, #0x14
- lsr r2, r2, #0xc
- orr r2, r1
- sub r2, r0, r2
- asr r1, r2, #0x1f
- lsr r0, r2, #0x13
- lsl r1, r1, #0xd
- orr r1, r0
- lsl r0, r2, #0xd
- add r0, r0, r7
- adc r1, r3
- lsl r1, r1, #0x14
- lsr r0, r0, #0xc
- orr r0, r1
- add r1, r4, #0
- mul r1, r4
- lsl r1, r1, #0xc
- bl FX_Div
- str r6, [r5]
- ldr r1, [sp]
- str r6, [r5, #4]
- str r1, [r5, #8]
- str r0, [r5, #0xc]
- mov r0, #0
- str r0, [r5, #0x10]
- str r4, [r5, #0x14]
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E36A4
-MOD05_021E36A4: ; 0x021E36A4
- push {r4, r5, r6, lr}
- add r5, r0, #0
- ldr r6, [r5, #0x10]
- ldr r0, [r5, #8]
- lsl r2, r6, #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
- lsr r4, r2, #0xc
- lsl r0, r1, #0x14
- add r2, r6, #0
- orr r4, r0
- ldr r0, [r5, #0xc]
- mul r2, r6
- lsl r2, r2, #0xc
- asr r1, r0, #0x1f
- asr r3, r2, #0x1f
- bl _ll_mul
- mov r2, #2
- mov r3, #0
- lsl r2, r2, #0xa
- add r0, r0, r2
- adc r1, r3
- lsl r1, r1, #0x14
- lsr r0, r0, #0xc
- orr r0, r1
- lsl r1, r2, #2
- bl FX_Div
- ldr r1, [r5, #4]
- add r0, r4, r0
- add r0, r1, r0
- str r0, [r5]
- ldr r0, [r5, #0x10]
- ldr r1, [r5, #0x14]
- add r0, r0, #1
- cmp r0, r1
- bgt _021E3704
- str r0, [r5, #0x10]
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E3704:
- str r1, [r5, #0x10]
- mov r0, #1
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E370C
-MOD05_021E370C: ; 0x021E370C
- push {r3, lr}
- cmp r0, #1
- bne _021E371A
- ldr r0, _021E3724 ; =0x0400006C
- bl GXx_SetMasterBrightness_
- pop {r3, pc}
-_021E371A:
- ldr r0, _021E3728 ; =0x0400106C
- bl GXx_SetMasterBrightness_
- pop {r3, pc}
- nop
-_021E3724: .word 0x0400006C
-_021E3728: .word 0x0400106C
-
- thumb_func_start MOD05_021E372C
-MOD05_021E372C: ; 0x021E372C
- push {r3, lr}
- str r3, [r0, #0x14]
- ldr r3, [sp, #8]
- bl MOD05_021E35B0
- pop {r3, pc}
-
- thumb_func_start MOD05_021E3738
-MOD05_021E3738: ; 0x021E3738
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl MOD05_021E35C0
- add r4, r0, #0
- ldr r0, _021E3750 ; =MOD05_021E3754
- add r1, r5, #0
- mov r2, #0xa
- bl FUN_0200CA98
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021E3750: .word MOD05_021E3754
-
- thumb_func_start MOD05_021E3754
-MOD05_021E3754: ; 0x021E3754
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r1, #0x14]
- ldr r1, [r1]
- bl MOD05_021E370C
- add r0, r4, #0
- bl FUN_0200CAB4
- pop {r4, pc}
-
- thumb_func_start MOD05_021E3768
-MOD05_021E3768: ; 0x021E3768
- push {r4, lr}
- mov r0, #4
- mov r1, #0x30
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0x30
- add r4, r0, #0
- bl memset
- ldr r0, _021E379C ; =0x04000048
- mov r1, #0x3f
- ldrh r2, [r0]
- bic r2, r1
- mov r1, #0x1f
- orr r2, r1
- mov r1, #0x20
- orr r1, r2
- strh r1, [r0]
- ldrh r2, [r0]
- ldr r1, _021E37A0 ; =0xFFFFC0FF
- and r1, r2
- strh r1, [r0]
- add r0, r4, #0
- pop {r4, pc}
- nop
-_021E379C: .word 0x04000048
-_021E37A0: .word 0xFFFFC0FF
-
- thumb_func_start MOD05_021E37A4
-MOD05_021E37A4: ; 0x021E37A4
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4, #0x24]
- cmp r1, #0
- beq _021E37B2
- bl MOD05_021E3920
-_021E37B2:
- mov r2, #1
- lsl r2, r2, #0x1a
- ldr r1, [r2]
- ldr r0, _021E37C8 ; =0xFFFF1FFF
- and r0, r1
- str r0, [r2]
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- nop
-_021E37C8: .word 0xFFFF1FFF
-
- thumb_func_start MOD05_021E37CC
-MOD05_021E37CC: ; 0x021E37CC
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r5, r1, #0
- add r6, r0, #0
- ldr r0, [r5, #0x24]
- add r7, r2, #0
- str r3, [sp, #4]
- ldr r4, [sp, #0x20]
- cmp r0, #0
- beq _021E37E4
- bl ErrorHandling
-_021E37E4:
- mov r0, #0
- str r0, [r6, #0x18]
- ldr r1, [r6, #0x10]
- add r6, #0x18
- ldr r1, [r1, #4]
- ldr r2, [sp, #0x24]
- ldr r1, [r1, #0x1c]
- ldr r3, [sp, #0x28]
- str r1, [r5, #0x20]
- str r7, [r5, #0x18]
- str r0, [r5, #0x1c]
- ldr r0, [sp, #4]
- str r6, [r5, #0x2c]
- str r0, [sp]
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021E3644
- cmp r4, #0
- blt _021E3824
- mov r0, #0xff
- ldr r2, _021E3850 ; =0x04000040
- sub r0, r0, r4
- strh r0, [r2]
- add r0, r4, #1
- mov r1, #0xc0
- lsl r0, r0, #0x18
- strh r1, [r2, #4]
- lsr r0, r0, #0x18
- strh r0, [r2, #2]
- strh r1, [r2, #6]
- b _021E3840
-_021E3824:
- add r0, r4, #0
- add r0, #0xff
- lsl r0, r0, #0x18
- mov r2, #1
- sub r2, r2, r4
- lsl r2, r2, #0x18
- ldr r1, _021E3850 ; =0x04000040
- lsr r0, r0, #0x18
- strh r0, [r1]
- mov r0, #0xc0
- strh r0, [r1, #4]
- lsr r2, r2, #0x18
- strh r2, [r1, #2]
- strh r0, [r1, #6]
-_021E3840:
- mov r2, #1
- ldr r0, _021E3854 ; =MOD05_021E3858
- add r1, r5, #0
- lsl r2, r2, #0xa
- bl FUN_0200CA98
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E3850: .word 0x04000040
-_021E3854: .word MOD05_021E3858
-
- thumb_func_start MOD05_021E3858
-MOD05_021E3858: ; 0x021E3858
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r2, #1
- ldr r0, _021E3880 ; =MOD05_021E38B8
- add r4, r1, #0
- lsl r2, r2, #0xa
- bl FUN_0200CA98
- str r0, [r4, #0x28]
- ldr r0, [r4, #0x20]
- ldr r1, _021E3884 ; =MOD05_021E397C
- add r2, r4, #0
- bl MOD05_021F4624
- str r0, [r4, #0x24]
- add r0, r5, #0
- bl FUN_0200CAB4
- pop {r3, r4, r5, pc}
- nop
-_021E3880: .word MOD05_021E38B8
-_021E3884: .word MOD05_021E397C
-
- thumb_func_start MOD05_021E3888
-MOD05_021E3888: ; 0x021E3888
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- add r5, r1, #0
- add r4, r2, #0
- add r6, r3, #0
- bl MOD05_021E35AC
- cmp r0, #0
- beq _021E389E
- bl ErrorHandling
-_021E389E:
- str r4, [r5, #0x18]
- mov r0, #0
- str r0, [r5, #0x1c]
- ldr r1, [sp, #0x18]
- ldr r2, [sp, #0x1c]
- ldr r3, [sp, #0x20]
- add r0, r5, #0
- str r6, [sp]
- bl MOD05_021E3644
- add sp, #4
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E38B8
-MOD05_021E38B8: ; 0x021E38B8
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4, #0x1c]
- cmp r0, #0
- beq _021E38C8
- cmp r0, #1
- beq _021E3914
- pop {r4, pc}
-_021E38C8:
- add r0, r4, #0
- bl MOD05_021E36A4
- cmp r0, #0
- beq _021E38D8
- ldr r0, [r4, #0x1c]
- add r0, r0, #1
- str r0, [r4, #0x1c]
-_021E38D8:
- ldr r0, [r4]
- asr r0, r0, #0xc
- bmi _021E38F6
- mov r1, #0xff
- sub r1, r1, r0
- ldr r2, _021E391C ; =0x04000040
- add r0, r0, #1
- strh r1, [r2]
- mov r1, #0xc0
- lsl r0, r0, #0x18
- strh r1, [r2, #4]
- lsr r0, r0, #0x18
- strh r0, [r2, #2]
- strh r1, [r2, #6]
- pop {r4, pc}
-_021E38F6:
- add r1, r0, #0
- add r1, #0xff
- lsl r1, r1, #0x18
- ldr r3, _021E391C ; =0x04000040
- lsr r1, r1, #0x18
- strh r1, [r3]
- mov r1, #1
- sub r0, r1, r0
- mov r2, #0xc0
- lsl r0, r0, #0x18
- strh r2, [r3, #4]
- lsr r0, r0, #0x18
- strh r0, [r3, #2]
- strh r2, [r3, #6]
- pop {r4, pc}
-_021E3914:
- add r0, r4, #0
- bl MOD05_021E3920
- pop {r4, pc}
- .balign 4, 0
-_021E391C: .word 0x04000040
-
- thumb_func_start MOD05_021E3920
-MOD05_021E3920: ; 0x021E3920
- push {r4, lr}
- add r4, r0, #0
- ldr r0, _021E3974 ; =0x04000048
- mov r2, #0x3f
- ldrh r3, [r0]
- mov r1, #0x1f
- bic r3, r2
- orr r3, r1
- mov r1, #0x20
- orr r3, r1
- strh r3, [r0]
- ldrh r3, [r0, #2]
- bic r3, r2
- add r2, r0, #0
- strh r3, [r0, #2]
- mov r3, #0
- sub r2, #8
- strh r3, [r2]
- sub r0, r0, #4
- strh r3, [r0]
- lsl r3, r1, #0x15
- ldr r2, [r3]
- ldr r0, _021E3978 ; =0xFFFF1FFF
- and r2, r0
- lsl r0, r1, #8
- orr r0, r2
- str r0, [r3]
- ldr r0, [r4, #0x2c]
- mov r1, #1
- str r1, [r0]
- ldr r0, [r4, #0x24]
- bl MOD05_021F4648
- mov r0, #0
- str r0, [r4, #0x24]
- ldr r0, [r4, #0x28]
- bl FUN_0200CAB4
- mov r0, #0
- str r0, [r4, #0x28]
- pop {r4, pc}
- nop
-_021E3974: .word 0x04000048
-_021E3978: .word 0xFFFF1FFF
-
- thumb_func_start MOD05_021E397C
-MOD05_021E397C: ; 0x021E397C
- push {r4, lr}
- ldr r0, _021E39EC ; =0x04000006
- add r4, r1, #0
- ldrh r0, [r0]
- ldr r1, [r4, #0x18]
- bl _u32_div_f
- mov r1, #1
- tst r0, r1
- ldr r0, [r4]
- bne _021E3994
- b _021E3996
-_021E3994:
- neg r0, r0
-_021E3996:
- asr r2, r0, #0xc
- ldr r0, _021E39F0 ; =0x000001FF
- add r1, r2, #0
- and r1, r0
- ldr r0, _021E39F4 ; =0x04000010
- cmp r2, #0
- str r1, [r0]
- str r1, [r0, #4]
- str r1, [r0, #8]
- str r1, [r0, #0xc]
- ldr r1, _021E39F8 ; =0xFFFF1FFF
- blt _021E39C8
- add r3, r0, #0
- sub r3, #0x10
- ldr r2, [r3]
- and r2, r1
- lsl r1, r0, #9
- orr r1, r2
- str r1, [r3]
- add r0, #0x3a
- ldrh r2, [r0]
- mov r1, #0x3f
- bic r2, r1
- strh r2, [r0]
- pop {r4, pc}
-_021E39C8:
- add r3, r0, #0
- sub r3, #0x10
- ldr r2, [r3]
- and r2, r1
- lsl r1, r0, #0xa
- orr r1, r2
- str r1, [r3]
- add r0, #0x3a
- ldrh r2, [r0]
- mov r1, #0x3f
- bic r2, r1
- mov r1, #0x1f
- orr r2, r1
- mov r1, #0x20
- orr r1, r2
- strh r1, [r0]
- pop {r4, pc}
- nop
-_021E39EC: .word 0x04000006
-_021E39F0: .word 0x000001FF
-_021E39F4: .word 0x04000010
-_021E39F8: .word 0xFFFF1FFF
-
- thumb_func_start MOD05_021E39FC
-MOD05_021E39FC: ; 0x021E39FC
- push {r4, r5, r6, lr}
- mov r0, #4
- mov r1, #0x48
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0x48
- add r4, r0, #0
- bl memset
- ldr r0, _021E3A40 ; =0x04000048
- mov r5, #0x3f
- ldrh r2, [r0]
- mov r1, #0x1f
- bic r2, r5
- add r3, r2, #0
- orr r3, r1
- mov r2, #0x20
- orr r3, r2
- strh r3, [r0]
- ldrh r6, [r0]
- ldr r3, _021E3A44 ; =0xFFFFC0FF
- lsl r1, r1, #8
- and r3, r6
- orr r3, r1
- lsl r1, r2, #8
- orr r1, r3
- strh r1, [r0]
- ldrh r1, [r0, #2]
- bic r1, r5
- strh r1, [r0, #2]
- add r0, r4, #0
- pop {r4, r5, r6, pc}
- nop
-_021E3A40: .word 0x04000048
-_021E3A44: .word 0xFFFFC0FF
-
- thumb_func_start MOD05_021E3A48
-MOD05_021E3A48: ; 0x021E3A48
- push {r4, lr}
- add r4, r0, #0
- ldr r1, [r4, #0x3c]
- cmp r1, #0
- beq _021E3A56
- bl MOD05_021E3BA4
-_021E3A56:
- mov r2, #1
- lsl r2, r2, #0x1a
- ldr r1, [r2]
- ldr r0, _021E3A6C ; =0xFFFF1FFF
- and r0, r1
- str r0, [r2]
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- nop
-_021E3A6C: .word 0xFFFF1FFF
-
- thumb_func_start MOD05_021E3A70
-MOD05_021E3A70: ; 0x021E3A70
- push {r3, r4, r5, r6, r7, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4, #0x3c]
- add r6, r2, #0
- add r7, r3, #0
- cmp r0, #0
- beq _021E3A84
- bl ErrorHandling
-_021E3A84:
- mov r1, #0
- str r1, [r5, #0x18]
- ldr r0, [r5, #0x10]
- mov r2, #0xff
- ldr r0, [r0, #4]
- add r5, #0x18
- ldr r0, [r0, #0x1c]
- lsl r2, r2, #0xc
- str r0, [r4, #0x38]
- mov r0, #0x60
- str r0, [r4, #0x30]
- str r1, [r4, #0x34]
- str r5, [r4, #0x44]
- add r0, r4, #0
- add r3, r7, #0
- str r6, [sp]
- bl MOD05_021E3644
- add r0, r4, #0
- mov r2, #6
- ldr r3, [sp, #0x18]
- add r0, #0x18
- mov r1, #0
- lsl r2, r2, #0x10
- str r6, [sp]
- bl MOD05_021E3644
- ldr r2, _021E3AD4 ; =0x04000040
- mov r1, #0xff
- strh r1, [r2]
- mov r0, #0xc0
- strh r0, [r2, #4]
- strh r1, [r2, #2]
- strh r0, [r2, #6]
- ldr r0, _021E3AD8 ; =MOD05_021E3ADC
- add r1, r4, #0
- lsr r2, r2, #0x10
- bl FUN_0200CA98
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E3AD4: .word 0x04000040
-_021E3AD8: .word MOD05_021E3ADC
-
- thumb_func_start MOD05_021E3ADC
-MOD05_021E3ADC: ; 0x021E3ADC
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r2, #1
- ldr r0, _021E3B04 ; =MOD05_021E3B0C
- add r4, r1, #0
- lsl r2, r2, #0xa
- bl FUN_0200CA98
- str r0, [r4, #0x40]
- ldr r0, [r4, #0x38]
- ldr r1, _021E3B08 ; =MOD05_021E3B74
- add r2, r4, #0
- bl MOD05_021F4624
- str r0, [r4, #0x3c]
- add r0, r5, #0
- bl FUN_0200CAB4
- pop {r3, r4, r5, pc}
- nop
-_021E3B04: .word MOD05_021E3B0C
-_021E3B08: .word MOD05_021E3B74
-
- thumb_func_start MOD05_021E3B0C
-MOD05_021E3B0C: ; 0x021E3B0C
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4, #0x34]
- cmp r0, #0
- beq _021E3B1C
- cmp r0, #1
- beq _021E3B68
- pop {r4, pc}
-_021E3B1C:
- add r0, r4, #0
- add r0, #0x18
- bl MOD05_021E36A4
- add r0, r4, #0
- bl MOD05_021E36A4
- cmp r0, #0
- beq _021E3B34
- ldr r0, [r4, #0x34]
- add r0, r0, #1
- str r0, [r4, #0x34]
-_021E3B34:
- ldr r0, [r4]
- asr r2, r0, #0xc
- ldr r0, [r4, #0x18]
- mov r4, #0xff
- asr r1, r0, #0xc
- ldr r0, _021E3B70 ; =0x04000040
- sub r3, r4, r2
- strh r3, [r0]
- mov r3, #0x60
- sub r3, r3, r1
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- strh r3, [r0, #4]
- lsl r3, r2, #8
- lsl r2, r4, #8
- and r2, r3
- orr r2, r4
- add r1, #0x60
- strh r2, [r0, #2]
- lsl r2, r1, #8
- lsl r1, r4, #8
- and r2, r1
- mov r1, #0xc0
- orr r1, r2
- strh r1, [r0, #6]
- pop {r4, pc}
-_021E3B68:
- add r0, r4, #0
- bl MOD05_021E3BA4
- pop {r4, pc}
- .balign 4, 0
-_021E3B70: .word 0x04000040
-
- thumb_func_start MOD05_021E3B74
-MOD05_021E3B74: ; 0x021E3B74
- ldr r0, _021E3B9C ; =0x04000006
- ldr r1, [r1, #0x30]
- ldrh r2, [r0]
- cmp r2, r1
- ldr r1, _021E3BA0 ; =0xFFFF1FFF
- bhi _021E3B8E
- sub r3, r0, #6
- ldr r2, [r3]
- lsr r0, r0, #0xd
- and r1, r2
- orr r0, r1
- str r0, [r3]
- bx lr
-_021E3B8E:
- sub r3, r0, #6
- ldr r2, [r3]
- lsr r0, r0, #0xc
- and r1, r2
- orr r0, r1
- str r0, [r3]
- bx lr
- .balign 4, 0
-_021E3B9C: .word 0x04000006
-_021E3BA0: .word 0xFFFF1FFF
-
- thumb_func_start MOD05_021E3BA4
-MOD05_021E3BA4: ; 0x021E3BA4
- push {r4, lr}
- add r4, r0, #0
- ldr r0, _021E3BF8 ; =0x04000048
- mov r2, #0x3f
- ldrh r3, [r0]
- mov r1, #0x1f
- bic r3, r2
- orr r3, r1
- mov r1, #0x20
- orr r3, r1
- strh r3, [r0]
- ldrh r3, [r0, #2]
- bic r3, r2
- add r2, r0, #0
- strh r3, [r0, #2]
- mov r3, #0
- sub r2, #8
- strh r3, [r2]
- sub r0, r0, #4
- strh r3, [r0]
- lsl r3, r1, #0x15
- ldr r2, [r3]
- ldr r0, _021E3BFC ; =0xFFFF1FFF
- and r2, r0
- lsl r0, r1, #8
- orr r0, r2
- str r0, [r3]
- ldr r0, [r4, #0x44]
- mov r1, #1
- str r1, [r0]
- ldr r0, [r4, #0x3c]
- bl MOD05_021F4648
- mov r0, #0
- str r0, [r4, #0x3c]
- ldr r0, [r4, #0x40]
- bl FUN_0200CAB4
- mov r0, #0
- str r0, [r4, #0x40]
- pop {r4, pc}
- nop
-_021E3BF8: .word 0x04000048
-_021E3BFC: .word 0xFFFF1FFF
-
- thumb_func_start MOD05_021E3C00
-MOD05_021E3C00: ; 0x021E3C00
- ldr r3, _021E3C0C ; =FUN_0200CA98
- mov r2, #1
- add r1, r0, #0
- ldr r0, _021E3C10 ; =MOD05_021E3C14
- lsl r2, r2, #0xa
- bx r3
- .balign 4, 0
-_021E3C0C: .word FUN_0200CA98
-_021E3C10: .word MOD05_021E3C14
-
- thumb_func_start MOD05_021E3C14
-MOD05_021E3C14: ; 0x021E3C14
- push {r3, r4, r5, r6, lr}
- sub sp, #0x64
- ldr r6, _021E3D10 ; =UNK05_021F7464
- add r3, sp, #0x54
- add r5, r0, #0
- add r4, r1, #0
- add r2, r3, #0
- ldmia r6!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r6!, {r0, r1}
- stmia r3!, {r0, r1}
- add r0, r2, #0
- bl FUN_02016BBC
- mov r0, #1
- add r1, r0, #0
- bl FUN_0201E6E4
- ldr r3, _021E3D14 ; =UNK05_021F74AC
- add r2, sp, #0x38
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- mov r1, #1
- str r0, [r2]
- add r0, r4, #0
- bl FUN_020178A0
- add r0, r4, #0
- mov r1, #1
- add r2, sp, #0x38
- 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
- mov r0, #2
- mov r1, #0
- bl FUN_0201E6E4
- ldr r3, _021E3D18 ; =UNK05_021F7490
- add r2, sp, #0x1c
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- mov r1, #2
- str r0, [r2]
- add r0, r4, #0
- bl FUN_020178A0
- add r0, r4, #0
- mov r1, #2
- add r2, sp, #0x1c
- 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
- mov r0, #4
- mov r1, #1
- bl FUN_0201E6E4
- ldr r3, _021E3D1C ; =UNK05_021F7474
- add r2, sp, #0
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- add r0, r4, #0
- mov r1, #3
- bl FUN_020178A0
- add r0, r4, #0
- mov r1, #3
- add r2, sp, #0
- mov r3, #1
- 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, #8
- mov r1, #0
- bl FUN_0201E6E4
- add r0, r5, #0
- bl FUN_0200CAB4
- add sp, #0x64
- pop {r3, r4, r5, r6, pc}
- nop
-_021E3D10: .word UNK05_021F7464
-_021E3D14: .word UNK05_021F74AC
-_021E3D18: .word UNK05_021F7490
-_021E3D1C: .word UNK05_021F7474
-
- thumb_func_start MOD05_021E3D20
-MOD05_021E3D20: ; 0x021E3D20
- push {r4, r5, r6, lr}
- sub sp, #0x10
- add r4, r3, #0
- mov r3, #0
- add r5, r0, #0
- add r6, r1, #0
- add r1, r2, #0
- str r3, [sp]
- mov r0, #4
- str r0, [sp, #4]
- mov r0, #0x70
- add r2, r3, #0
- bl FUN_02006930
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- str r0, [sp, #8]
- mov r0, #4
- str r0, [sp, #0xc]
- mov r0, #0x70
- add r1, r6, #0
- add r2, r4, #0
- mov r3, #3
- bl FUN_0200687C
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- str r0, [sp, #8]
- mov r0, #4
- str r0, [sp, #0xc]
- mov r0, #0x70
- add r1, r5, #0
- add r2, r4, #0
- mov r3, #3
- bl FUN_020068C8
- add sp, #0x10
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E3D70
-MOD05_021E3D70: ; 0x021E3D70
- push {r3, r4, lr}
- sub sp, #0xc
- add r3, r1, #0
- add r4, r0, #0
- add r0, r3, #4
- str r0, [sp]
- ldr r0, [r3, #0x18]
- mov r2, #0
- str r0, [sp, #4]
- ldr r0, [r3, #0x1c]
- str r0, [sp, #8]
- ldr r1, [r3, #0x14]
- ldr r0, [r3]
- lsl r1, r1, #0x18
- ldr r3, [r3, #0x20]
- lsr r1, r1, #0x18
- bl FUN_02017B60
- add r0, r4, #0
- bl FUN_0200CAB4
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E3DA0
-MOD05_021E3DA0: ; 0x021E3DA0
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r0, r5, #4
- add r4, r1, #0
- add r6, r2, #0
- add r7, r3, #0
- bl MTX_Identity22_
- add r0, sp, #8
- ldrh r0, [r0, #0x14]
- ldr r3, _021E3E0C ; =UNK_020FFA38
- asr r0, r0, #4
- lsl r2, r0, #1
- lsl r1, r2, #1
- add r2, r2, #1
- lsl r2, r2, #1
- ldrsh r1, [r3, r1]
- ldrsh r2, [r3, r2]
- add r0, r5, #4
- bl MTX_Rot22_
- mov r0, #1
- lsl r0, r0, #0xc
- add r1, r7, #0
- bl FX_Div
- add r7, r0, #0
- mov r0, #1
- ldr r1, [sp, #0x18]
- lsl r0, r0, #0xc
- bl FX_Div
- add r3, r0, #0
- add r0, r5, #4
- add r1, r0, #0
- add r2, r7, #0
- bl MTX_ScaleApply22
- str r4, [r5]
- mov r2, #1
- ldr r0, [sp, #0x20]
- str r6, [r5, #0x14]
- str r0, [r5, #0x18]
- ldr r0, [sp, #0x24]
- add r1, r5, #0
- str r0, [r5, #0x1c]
- ldr r0, [sp, #0x28]
- lsl r2, r2, #0xa
- str r0, [r5, #0x20]
- ldr r0, _021E3E10 ; =MOD05_021E3D70
- bl FUN_0200CA98
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E3E0C: .word UNK_020FFA38
-_021E3E10: .word MOD05_021E3D70
-
- thumb_func_start MOD05_021E3E14
-MOD05_021E3E14: ; 0x021E3E14
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r6, r2, #0
- add r0, r1, #0
- add r1, r5, #4
- mov r2, #4
- bl FUN_02008C9C
- mov r7, #0x4b
- str r0, [r5]
- mov r4, #0
- lsl r7, r7, #2
-_021E3E2C:
- add r0, r6, #0
- add r1, r4, #0
- mov r2, #4
- bl FUN_02008DEC
- str r0, [r5, r7]
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, #4
- blt _021E3E2C
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E3E44
-MOD05_021E3E44: ; 0x021E3E44
- push {r4, r5, r6, lr}
- add r5, r0, #0
- ldr r0, [r5]
- bl FUN_0201FD58
- mov r6, #0x4b
- mov r4, #0
- lsl r6, r6, #2
-_021E3E54:
- ldr r0, [r5, r6]
- bl FUN_02008E2C
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, #4
- blt _021E3E54
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E3E64
-MOD05_021E3E64: ; 0x021E3E64
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x30
- ldr r6, [sp, #0x54]
- add r4, r1, #0
- str r6, [sp]
- mov r1, #1
- add r5, r0, #0
- str r1, [sp, #4]
- mov r0, #4
- str r0, [sp, #8]
- mov r0, #0x4b
- str r1, [sp, #0xc]
- lsl r0, r0, #2
- str r2, [sp, #0x2c]
- add r7, r3, #0
- ldr r0, [r5, r0]
- ldr r2, [sp, #0x48]
- mov r1, #0x70
- mov r3, #0
- bl FUN_02008F90
- str r0, [r4]
- str r6, [sp]
- mov r0, #1
- str r0, [sp, #4]
- str r7, [sp, #8]
- mov r0, #4
- str r0, [sp, #0xc]
- mov r0, #0x13
- lsl r0, r0, #4
- ldr r0, [r5, r0]
- ldr r2, [sp, #0x2c]
- mov r1, #0x70
- mov r3, #0
- bl FUN_02008FEC
- str r0, [r4, #4]
- str r6, [sp]
- mov r0, #2
- str r0, [sp, #4]
- mov r0, #4
- str r0, [sp, #8]
- mov r0, #0x4d
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- ldr r2, [sp, #0x4c]
- mov r1, #0x70
- mov r3, #0
- bl FUN_020090AC
- str r0, [r4, #8]
- str r6, [sp]
- mov r0, #3
- str r0, [sp, #4]
- mov r0, #4
- str r0, [sp, #8]
- mov r0, #0x4e
- lsl r0, r0, #2
- ldr r0, [r5, r0]
- ldr r2, [sp, #0x50]
- mov r1, #0x70
- mov r3, #0
- bl FUN_020090AC
- str r0, [r4, #0xc]
- ldr r0, [r4]
- bl FUN_02009B04
- ldr r0, [r4]
- bl FUN_02009474
- ldr r0, [r4, #4]
- bl FUN_02009D68
- mov r0, #0
- mov r2, #0x4b
- str r6, [sp]
- mvn r0, r0
- str r0, [sp, #4]
- str r0, [sp, #8]
- mov r0, #0
- str r0, [sp, #0xc]
- str r0, [sp, #0x10]
- lsl r2, r2, #2
- ldr r1, [r5, r2]
- add r4, #0x10
- str r1, [sp, #0x14]
- add r1, r2, #4
- ldr r1, [r5, r1]
- add r3, r6, #0
- str r1, [sp, #0x18]
- add r1, r2, #0
- add r1, #8
- ldr r1, [r5, r1]
- add r2, #0xc
- str r1, [sp, #0x1c]
- ldr r1, [r5, r2]
- add r2, r6, #0
- str r1, [sp, #0x20]
- str r0, [sp, #0x24]
- str r0, [sp, #0x28]
- add r0, r4, #0
- add r1, r6, #0
- bl FUN_02008AA4
- add sp, #0x30
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E3F3C
-MOD05_021E3F3C: ; 0x021E3F3C
- push {r3, r4, r5, r6, r7, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4]
- bl FUN_02009C0C
- ldr r0, [r4, #4]
- bl FUN_02009E04
- mov r7, #0x4b
- mov r6, #0
- lsl r7, r7, #2
-_021E3F54:
- ldr r0, [r5, r7]
- ldr r1, [r4]
- bl FUN_02009490
- add r6, r6, #1
- add r4, r4, #4
- add r5, r5, #4
- cmp r6, #4
- blt _021E3F54
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E3F68
-MOD05_021E3F68: ; 0x021E3F68
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x18
- add r4, r1, #0
- lsl r1, r2, #0x10
- add r6, r0, #0
- add r0, sp, #8
- lsr r1, r1, #0x10
- add r7, r3, #0
- bl FUN_020690AC
- add r0, r4, #0
- mov r1, #0x20
- bl AllocFromHeap
- add r1, sp, #4
- add r5, r0, #0
- ldrh r0, [r1, #4]
- ldrh r1, [r1, #8]
- add r2, sp, #4
- add r3, r4, #0
- bl FUN_02006C08
- add r4, r0, #0
- add r0, sp, #0x20
- ldrh r0, [r0, #0x10]
- add r1, r5, #0
- mov r2, #0x10
- str r0, [sp]
- ldr r0, [sp, #4]
- add r3, r7, #0
- ldr r0, [r0, #0xc]
- bl FUN_02003974
- add r0, r6, #0
- add r1, r5, #0
- mov r2, #0x20
- bl MOD05_021E40F0
- add r0, r5, #0
- bl FreeToHeap
- add r0, r4, #0
- bl FreeToHeap
- add sp, #0x18
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E3FC4
-MOD05_021E3FC4: ; 0x021E3FC4
- push {r4, lr}
- sub sp, #0x20
- ldr r0, [r0]
- add r1, #0x10
- str r0, [sp]
- ldr r0, [sp, #0x28]
- str r1, [sp, #4]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x2c]
- str r2, [sp, #8]
- str r0, [sp, #0x14]
- mov r0, #1
- str r0, [sp, #0x18]
- mov r0, #4
- str r0, [sp, #0x1c]
- add r0, sp, #0
- str r3, [sp, #0xc]
- bl FUN_0201FF84
- add r4, r0, #0
- bne _021E3FF2
- bl ErrorHandling
-_021E3FF2:
- add r0, r4, #0
- add sp, #0x20
- pop {r4, pc}
-
- thumb_func_start MOD05_021E3FF8
-MOD05_021E3FF8: ; 0x021E3FF8
- push {r4}
- sub sp, #0xc
- str r2, [sp, #4]
- str r3, [sp, #8]
- add r2, sp, #0
- add r4, r0, #0
- str r1, [sp]
- ldmia r2!, {r0, r1}
- stmia r4!, {r0, r1}
- ldr r0, [r2]
- str r0, [r4]
- add sp, #0xc
- pop {r4}
- bx lr
-
- thumb_func_start MOD05_021E4014
-MOD05_021E4014: ; 0x021E4014
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x20
- add r4, r2, #0
- add r5, r1, #0
- lsl r1, r4, #0x10
- add r6, r0, #0
- add r0, sp, #0x10
- lsr r1, r1, #0x10
- add r7, r3, #0
- bl FUN_020690AC
- str r5, [sp]
- add r1, sp, #8
- ldrh r0, [r1, #8]
- ldrh r1, [r1, #0xa]
- mov r2, #0
- add r3, sp, #0xc
- bl FUN_02006BB0
- str r0, [sp, #4]
- ldr r0, [sp, #0xc]
- ldr r0, [r0, #0x14]
- bl FUN_02008A74
- add r0, sp, #0x28
- ldrh r0, [r0, #0x10]
- add r1, r5, #0
- add r2, r4, #0
- str r0, [sp]
- add r0, r6, #0
- add r3, r7, #0
- bl MOD05_021E3F68
- ldr r0, [sp, #0xc]
- ldr r3, [sp, #0x3c]
- add r1, r5, #0
- add r2, sp, #8
- bl MOD05_021E4080
- add r4, r0, #0
- ldr r2, [sp, #8]
- add r0, r6, #0
- add r1, r4, #0
- bl MOD05_021E4118
- add r0, r4, #0
- bl FreeToHeap
- ldr r0, [sp, #4]
- bl FreeToHeap
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4080
-MOD05_021E4080: ; 0x021E4080
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- str r0, [sp]
- ldr r4, [r0, #0x14]
- add r0, r1, #0
- mov r1, #2
- lsl r1, r1, #0xa
- str r2, [sp, #4]
- add r5, r3, #0
- bl AllocFromHeap
- mov ip, r0
- lsl r0, r5, #2
- mov r7, #0
- add r6, r4, r0
-_021E409E:
- ldr r0, [sp]
- mov r2, #0
- ldrh r0, [r0, #2]
- add r3, r7, #0
- lsr r1, r7, #0x1f
- lsl r5, r7, #0x1d
- mul r3, r0
- sub r5, r5, r1
- mov r0, #0x1d
- ror r5, r0
- asr r0, r7, #2
- lsr r0, r0, #0x1d
- add r0, r7, r0
- asr r0, r0, #3
- add r1, r1, r5
- lsl r0, r0, #6
- add r0, r1, r0
- lsl r1, r0, #2
- mov r0, ip
- add r4, r2, #0
- add r5, r0, r1
-_021E40C8:
- add r0, r3, r2
- lsl r0, r0, #2
- ldr r1, [r6, r0]
- lsl r0, r4, #2
- add r2, r2, #1
- add r4, #8
- str r1, [r5, r0]
- cmp r2, #8
- blt _021E40C8
- add r7, r7, #1
- cmp r7, #0x40
- blt _021E409E
- mov r1, #2
- ldr r0, [sp, #4]
- lsl r1, r1, #0xa
- str r1, [r0]
- mov r0, ip
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E40F0
-MOD05_021E40F0: ; 0x021E40F0
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r4, r2, #0
- bl FUN_02020354
- add r6, r0, #0
- add r0, r5, #0
- add r1, r4, #0
- bl DC_FlushRange
- add r0, r6, #0
- mov r1, #1
- bl FUN_020B19C4
- add r1, r0, #0
- add r0, r5, #0
- add r2, r4, #0
- bl GX_LoadOBJPltt
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E4118
-MOD05_021E4118: ; 0x021E4118
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r4, r2, #0
- bl FUN_02020350
- add r6, r0, #0
- add r0, r5, #0
- add r1, r4, #0
- bl DC_FlushRange
- add r0, r6, #0
- mov r1, #1
- bl FUN_020B1A14
- add r1, r0, #0
- add r0, r5, #0
- add r2, r4, #0
- bl GX_LoadOBJ
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E4140
-MOD05_021E4140: ; 0x021E4140
- push {r4, lr}
- mov r1, #0x30
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0x30
- add r4, r0, #0
- bl memset
- add r0, r4, #0
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4158
-MOD05_021E4158: ; 0x021E4158
- ldr r3, _021E415C ; =FreeToHeap
- bx r3
- .balign 4, 0
-_021E415C: .word FreeToHeap
-
- thumb_func_start MOD05_021E4160
-MOD05_021E4160: ; 0x021E4160
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r0, #0x2e
- ldrb r0, [r0]
- add r4, r1, #0
- add r6, r2, #0
- add r7, r3, #0
- cmp r0, #0
- beq _021E4176
- bl ErrorHandling
-_021E4176:
- ldr r3, [sp, #0x1c]
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021E35B0
- add r0, r5, #0
- ldr r2, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- add r0, #0x14
- add r1, r7, #0
- bl MOD05_021E35B0
- ldr r0, [sp, #0x20]
- ldr r1, [sp, #0x24]
- str r0, [r5, #0x28]
- add r0, r5, #0
- add r0, #0x2c
- strb r1, [r0]
- add r0, r5, #0
- ldr r1, [sp, #0x28]
- add r0, #0x2d
- strb r1, [r0]
- add r0, sp, #0x2c
- ldrb r1, [r0]
- add r0, r5, #0
- add r0, #0x2f
- strb r1, [r0]
- mov r0, #1
- add r5, #0x2e
- strb r0, [r5]
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E41B8
-MOD05_021E41B8: ; 0x021E41B8
- push {r4, r5, r6, lr}
- sub sp, #8
- add r5, r0, #0
- add r1, r5, #0
- add r1, #0x2e
- ldrb r1, [r1]
- cmp r1, #0
- bne _021E41CE
- add sp, #8
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E41CE:
- bl MOD05_021E35C0
- add r4, r0, #0
- add r0, r5, #0
- add r0, #0x14
- bl MOD05_021E35C0
- add r0, r5, #0
- add r0, #0x2c
- ldrb r0, [r0]
- ldr r2, [r5]
- ldr r6, [r5, #0x14]
- lsr r1, r0, #1
- sub r1, r2, r1
- lsl r1, r1, #0x10
- asr r3, r1, #0x10
- add r1, r5, #0
- add r1, #0x2d
- ldrb r2, [r1]
- add r0, r3, r0
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- lsr r1, r2, #1
- str r0, [sp]
- add r0, r5, #0
- sub r1, r6, r1
- add r0, #0x2f
- lsl r1, r1, #0x10
- ldrb r0, [r0]
- asr r1, r1, #0x10
- add r2, r1, r2
- str r0, [sp, #4]
- lsl r2, r2, #0x10
- ldr r0, [r5, #0x28]
- asr r2, r2, #0x10
- bl MOD05_021E4338
- add r0, r4, #0
- add sp, #8
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4220
-MOD05_021E4220: ; 0x021E4220
- push {r4, lr}
- mov r1, #0x30
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0x30
- add r4, r0, #0
- bl memset
- add r0, r4, #0
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4238
-MOD05_021E4238: ; 0x021E4238
- ldr r3, _021E423C ; =FreeToHeap
- bx r3
- .balign 4, 0
-_021E423C: .word FreeToHeap
-
- thumb_func_start MOD05_021E4240
-MOD05_021E4240: ; 0x021E4240
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r0, #0x2e
- ldrb r0, [r0]
- add r4, r1, #0
- add r6, r2, #0
- add r7, r3, #0
- cmp r0, #0
- beq _021E4256
- bl ErrorHandling
-_021E4256:
- ldr r3, [sp, #0x1c]
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021E35B0
- add r0, r5, #0
- ldr r2, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- add r0, #0x14
- add r1, r7, #0
- bl MOD05_021E35B0
- ldr r0, [sp, #0x20]
- ldr r1, [sp, #0x24]
- str r0, [r5, #0x28]
- add r0, r5, #0
- add r0, #0x2c
- strb r1, [r0]
- add r0, r5, #0
- ldr r1, [sp, #0x28]
- add r0, #0x2d
- strb r1, [r0]
- add r0, sp, #0x2c
- ldrb r1, [r0]
- add r0, r5, #0
- add r0, #0x2f
- strb r1, [r0]
- mov r0, #1
- add r5, #0x2e
- strb r0, [r5]
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4298
-MOD05_021E4298: ; 0x021E4298
- push {r4, r5, r6, lr}
- sub sp, #8
- add r5, r0, #0
- add r0, #0x2e
- ldrb r0, [r0]
- cmp r0, #0
- bne _021E42AC
- add sp, #8
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E42AC:
- add r0, r5, #0
- add r0, #0x2c
- ldrb r0, [r0]
- ldr r2, [r5]
- ldr r4, [r5, #0x14]
- lsr r1, r0, #1
- sub r1, r2, r1
- lsl r1, r1, #0x10
- asr r3, r1, #0x10
- add r1, r5, #0
- add r1, #0x2d
- ldrb r2, [r1]
- add r0, r3, r0
- lsl r0, r0, #0x10
- lsr r1, r2, #1
- sub r1, r4, r1
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- asr r0, r0, #0x10
- str r0, [sp]
- mov r0, #0
- add r2, r1, r2
- str r0, [sp, #4]
- lsl r2, r2, #0x10
- ldr r0, [r5, #0x28]
- asr r2, r2, #0x10
- bl MOD05_021E4338
- add r0, r5, #0
- bl MOD05_021E35C0
- add r4, r0, #0
- add r0, r5, #0
- add r0, #0x14
- bl MOD05_021E35C0
- add r0, r5, #0
- add r0, #0x2c
- ldrb r0, [r0]
- ldr r2, [r5]
- ldr r6, [r5, #0x14]
- lsr r1, r0, #1
- sub r1, r2, r1
- lsl r1, r1, #0x10
- asr r3, r1, #0x10
- add r1, r5, #0
- add r1, #0x2d
- ldrb r2, [r1]
- add r0, r3, r0
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- lsr r1, r2, #1
- str r0, [sp]
- add r0, r5, #0
- sub r1, r6, r1
- add r0, #0x2f
- lsl r1, r1, #0x10
- ldrb r0, [r0]
- asr r1, r1, #0x10
- add r2, r1, r2
- str r0, [sp, #4]
- lsl r2, r2, #0x10
- ldr r0, [r5, #0x28]
- asr r2, r2, #0x10
- bl MOD05_021E4338
- add r0, r4, #0
- add sp, #8
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4338
-MOD05_021E4338: ; 0x021E4338
- push {r3, r4, r5, lr}
- sub sp, #8
- ldr r5, [sp, #0x18]
- add r4, r1, #0
- cmp r5, #0
- ble _021E4390
- cmp r2, #0
- ble _021E4390
- cmp r3, r5
- beq _021E4390
- cmp r4, r2
- beq _021E4390
- cmp r3, #0
- bge _021E4356
- mov r3, #0
-_021E4356:
- mov r1, #1
- lsl r1, r1, #8
- cmp r5, r1
- ble _021E4360
- add r5, r1, #0
-_021E4360:
- cmp r4, #0
- bge _021E4366
- mov r4, #0
-_021E4366:
- mov r1, #1
- lsl r1, r1, #8
- cmp r2, r1
- ble _021E4370
- add r2, r1, #0
-_021E4370:
- sub r1, r5, r3
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- str r1, [sp]
- sub r1, r2, r4
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- str r1, [sp, #4]
- lsl r2, r3, #0x10
- add r1, sp, #8
- lsl r3, r4, #0x10
- ldrb r1, [r1, #0x14]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x10
- bl FUN_020196F4
-_021E4390:
- add sp, #8
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E4394
-MOD05_021E4394: ; 0x021E4394
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- mov r0, #4
- mov r1, #0xcc
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0xcc
- add r7, r0, #0
- bl memset
- mov r4, #0
- add r5, r7, #0
-_021E43AE:
- add r0, r6, #0
- bl MOD05_021E4220
- str r0, [r5, #4]
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, #0x30
- blt _021E43AE
- add r0, r7, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E43C4
-MOD05_021E43C4: ; 0x021E43C4
- push {r4, r5, r6, lr}
- add r6, r0, #0
- mov r4, #0
- add r5, r6, #0
-_021E43CC:
- ldr r0, [r5, #4]
- bl MOD05_021E4238
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, #0x30
- blt _021E43CC
- add r0, r6, #0
- bl FreeToHeap
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E43E4
-MOD05_021E43E4: ; 0x021E43E4
- push {r3, r4}
- str r3, [r0]
- ldr r3, _021E4420 ; =0xFFFFFFF8
- add r3, sp
- ldrb r4, [r3, #0x10]
- add r3, r0, #0
- add r3, #0xc9
- strb r4, [r3]
- add r3, r0, #0
- add r3, #0xc6
- strb r1, [r3]
- add r1, r0, #0
- add r1, #0xc7
- strb r2, [r1]
- add r1, r0, #0
- mov r2, #0
- add r1, #0xc4
- strb r2, [r1]
- add r1, r0, #0
- add r1, #0xc5
- strb r2, [r1]
- add r1, r0, #0
- add r1, #0xc8
- strb r2, [r1]
- mov r1, #1
- add r0, #0xca
- strb r1, [r0]
- pop {r3, r4}
- bx lr
- nop
-_021E4420: .word 0xFFFFFFF8
-
- thumb_func_start MOD05_021E4424
-MOD05_021E4424: ; 0x021E4424
- push {r4, r5, r6, r7, lr}
- sub sp, #0x1c
- add r6, r0, #0
- add r0, #0xca
- ldrb r0, [r0]
- cmp r0, #0
- bne _021E4438
- add sp, #0x1c
- mov r0, #1
- pop {r4, r5, r6, r7, pc}
-_021E4438:
- add r0, r6, #0
- add r0, #0xc4
- ldrb r0, [r0]
- cmp r0, #0x30
- bhs _021E44BC
- mov r1, #0xc8
- ldrsb r0, [r6, r1]
- sub r2, r0, #1
- add r0, r6, #0
- add r0, #0xc8
- strb r2, [r0]
- ldrsb r0, [r6, r1]
- cmp r0, #0
- bgt _021E44BC
- add r0, r6, #0
- add r0, #0xc7
- ldrb r1, [r0]
- add r0, r6, #0
- add r0, #0xc8
- strb r1, [r0]
- add r0, r6, #0
- add r0, #0xc4
- ldrb r0, [r0]
- mov r1, #0x1d
- lsr r3, r0, #0x1f
- lsl r2, r0, #0x1d
- sub r2, r2, r3
- ror r2, r1
- add r2, r3, r2
- ldr r1, _021E4518 ; =UNK05_021F745C
- mov r3, #0x20
- ldrb r1, [r1, r2]
- lsr r2, r0, #3
- lsl r4, r2, #5
- mov r2, #0xb0
- sub r2, r2, r4
- str r2, [sp]
- add r2, r6, #0
- add r2, #0xc6
- ldrb r2, [r2]
- lsl r0, r0, #2
- lsl r1, r1, #5
- str r2, [sp, #4]
- ldr r2, [r6]
- add r0, r6, r0
- str r2, [sp, #8]
- str r3, [sp, #0xc]
- add r2, r6, #0
- str r3, [sp, #0x10]
- add r2, #0xc9
- ldrb r2, [r2]
- sub r3, #0x30
- add r1, #0x10
- str r2, [sp, #0x14]
- ldr r0, [r0, #4]
- add r2, r1, #0
- sub r3, r3, r4
- bl MOD05_021E4240
- add r0, r6, #0
- add r0, #0xc4
- ldrb r0, [r0]
- add r1, r0, #1
- add r0, r6, #0
- add r0, #0xc4
- strb r1, [r0]
-_021E44BC:
- add r0, r6, #0
- add r0, #0xc5
- ldrb r4, [r0]
- add r0, r6, #0
- add r0, #0xc4
- ldrb r0, [r0]
- cmp r4, r0
- bge _021E44F4
- lsl r0, r4, #2
- add r7, r6, #0
- add r5, r6, r0
- add r7, #0xc5
-_021E44D4:
- ldr r0, [r5, #4]
- bl MOD05_021E4298
- str r0, [sp, #0x18]
- cmp r0, #1
- bne _021E44E6
- ldrb r0, [r7]
- add r0, r0, #1
- strb r0, [r7]
-_021E44E6:
- add r0, r6, #0
- add r0, #0xc4
- ldrb r0, [r0]
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, r0
- blt _021E44D4
-_021E44F4:
- add r0, r6, #0
- add r0, #0xc5
- ldrb r0, [r0]
- cmp r0, #0x30
- blo _021E4510
- ldr r0, [sp, #0x18]
- cmp r0, #1
- bne _021E4510
- mov r0, #0
- add r6, #0xca
- strb r0, [r6]
- add sp, #0x1c
- mov r0, #1
- pop {r4, r5, r6, r7, pc}
-_021E4510:
- mov r0, #0
- add sp, #0x1c
- pop {r4, r5, r6, r7, pc}
- nop
-_021E4518: .word UNK05_021F745C
-
- thumb_func_start MOD05_021E451C
-MOD05_021E451C: ; 0x021E451C
- push {r3, lr}
- mov r1, #0x1c
- bl AllocFromHeap
- add r3, r0, #0
- mov r2, #0x1c
- mov r1, #0
-_021E452A:
- strb r1, [r3]
- add r3, r3, #1
- sub r2, r2, #1
- bne _021E452A
- pop {r3, pc}
-
- thumb_func_start MOD05_021E4534
-MOD05_021E4534: ; 0x021E4534
- ldr r3, _021E4538 ; =FreeToHeap
- bx r3
- .balign 4, 0
-_021E4538: .word FreeToHeap
-
- thumb_func_start MOD05_021E453C
-MOD05_021E453C: ; 0x021E453C
- push {r4, lr}
- add r4, r1, #0
- ldr r1, [sp, #8]
- str r1, [r0]
- ldr r1, _021E4560 ; =0xFFFFFFF8
- add r1, sp
- ldrb r1, [r1, #0x14]
- strb r1, [r0, #0x19]
- mov r1, #1
- strb r1, [r0, #0x18]
- add r1, r2, #0
- add r2, r3, #0
- add r0, r0, #4
- add r3, r4, #0
- bl MOD05_021E35B0
- pop {r4, pc}
- nop
-_021E4560: .word 0xFFFFFFF8
-
- thumb_func_start MOD05_021E4564
-MOD05_021E4564: ; 0x021E4564
- push {r4, r5, r6, lr}
- add r5, r0, #0
- ldrb r0, [r5, #0x18]
- cmp r0, #0
- bne _021E4572
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E4572:
- ldr r0, [r5, #4]
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- add r0, r5, #4
- bl MOD05_021E35C0
- ldr r2, [r5, #4]
- add r6, r0, #0
- lsl r2, r2, #0x10
- ldrb r3, [r5, #0x19]
- ldr r0, [r5]
- add r1, r4, #0
- lsr r2, r2, #0x10
- bl MOD05_021E45A0
- cmp r6, #1
- bne _021E459C
- mov r0, #0
- strb r0, [r5, #0x18]
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E459C:
- mov r0, #0
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E45A0
-MOD05_021E45A0: ; 0x021E45A0
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x20
- str r0, [sp, #8]
- asr r0, r2, #4
- add r4, r1, #0
- lsl r1, r0, #1
- lsl r0, r1, #1
- ldr r2, _021E4680 ; =UNK_020FFA38
- add r1, r1, #1
- lsl r1, r1, #1
- ldrsh r0, [r2, r0]
- ldrsh r1, [r2, r1]
- str r3, [sp, #0xc]
- bl FX_Div
- str r0, [sp, #0x18]
- asr r0, r4, #4
- lsl r1, r0, #1
- lsl r0, r1, #1
- ldr r2, _021E4680 ; =UNK_020FFA38
- add r1, r1, #1
- lsl r1, r1, #1
- ldrsh r0, [r2, r0]
- ldrsh r1, [r2, r1]
- bl FX_Div
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x18]
- mov r5, #0
- asr r0, r0, #0x1f
- str r0, [sp, #0x1c]
- ldr r0, [sp, #0x10]
- asr r0, r0, #0x1f
- str r0, [sp, #0x14]
-_021E45E4:
- mov r0, #0x5f
- sub r0, r0, r5
- lsl r6, r0, #0xc
- asr r4, r6, #0x1f
- ldr r0, [sp, #0x18]
- ldr r1, [sp, #0x1c]
- add r2, r6, #0
- add r3, r4, #0
- bl _ll_mul
- mov r2, #2
- lsl r2, r2, #0xa
- add r2, r0, r2
- ldr r0, _021E4684 ; =0x00000000
- adc r1, r0
- lsl r0, r1, #0x14
- lsr r1, r2, #0xc
- orr r1, r0
- asr r7, r1, #0xc
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- add r2, r6, #0
- add r3, r4, #0
- bl _ll_mul
- mov r2, #2
- lsl r2, r2, #0xa
- add r2, r0, r2
- ldr r0, _021E4684 ; =0x00000000
- adc r1, r0
- lsl r0, r1, #0x14
- lsr r1, r2, #0xc
- orr r1, r0
- asr r0, r1, #0xc
- mov r1, #0x80
- add r4, r7, #0
- add r6, r0, #0
- mov r2, #0x80
- sub r0, r2, r0
- sub r1, r1, r7
- add r4, #0x80
- add r6, #0x80
- add r3, r0, #0
- cmp r0, r1
- ble _021E4642
- add r3, r1, #0
- add r1, r0, #0
-_021E4642:
- cmp r6, r4
- ble _021E464C
- add r0, r6, #0
- add r6, r4, #0
- add r4, r0, #0
-_021E464C:
- add r0, r1, #1
- str r0, [sp]
- ldr r0, [sp, #0xc]
- add r1, r5, #0
- str r0, [sp, #4]
- ldr r0, [sp, #8]
- add r2, r5, #1
- bl MOD05_021E4338
- add r0, r4, #1
- str r0, [sp]
- ldr r0, [sp, #0xc]
- mov r1, #0xbf
- str r0, [sp, #4]
- mov r2, #0xc0
- ldr r0, [sp, #8]
- sub r1, r1, r5
- sub r2, r2, r5
- add r3, r6, #0
- bl MOD05_021E4338
- add r5, r5, #1
- cmp r5, #0x60
- blt _021E45E4
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E4680: .word UNK_020FFA38
-_021E4684: .word 0x00000000
-
- thumb_func_start MOD05_021E4688
-MOD05_021E4688: ; 0x021E4688
- push {r3, r4, r5, r6, r7, lr}
- mov r1, #0x24
- add r6, r0, #0
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0x24
- add r7, r0, #0
- bl memset
- mov r4, #0
- add r5, r7, #0
-_021E46A0:
- add r0, r6, #0
- bl MOD05_021E451C
- add r4, r4, #1
- stmia r5!, {r0}
- cmp r4, #8
- blt _021E46A0
- add r0, r7, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E46B4
-MOD05_021E46B4: ; 0x021E46B4
- push {r4, r5, r6, lr}
- add r6, r0, #0
- mov r4, #0
- add r5, r6, #0
-_021E46BC:
- ldr r0, [r5]
- bl MOD05_021E4534
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, #8
- blt _021E46BC
- add r0, r6, #0
- bl FreeToHeap
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E46D4
-MOD05_021E46D4: ; 0x021E46D4
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x18
- str r1, [sp, #0xc]
- ldr r4, _021E474C ; =UNK05_021F74C8
- str r0, [sp, #8]
- str r2, [sp, #0x10]
- str r3, [sp, #0x14]
- mov r6, #0
- add r5, r0, #0
-_021E46E6:
- ldrh r1, [r4]
- ldr r0, _021E4750 ; =0x0000FFFF
- mul r0, r1
- mov r1, #0x5a
- lsl r1, r1, #2
- bl _s32_div_f
- add r7, r0, #0
- ldrh r1, [r4, #2]
- ldr r0, _021E4750 ; =0x0000FFFF
- mul r0, r1
- mov r1, #0x5a
- lsl r1, r1, #2
- bl _s32_div_f
- add r3, r0, #0
- ldr r0, [sp, #0x10]
- lsl r2, r7, #0x10
- str r0, [sp]
- ldr r0, [sp, #0x14]
- lsl r3, r3, #0x10
- str r0, [sp, #4]
- ldr r0, [r5]
- ldr r1, [sp, #0xc]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x10
- bl MOD05_021E453C
- add r6, r6, #1
- add r4, r4, #4
- add r5, r5, #4
- cmp r6, #8
- blt _021E46E6
- ldr r0, [sp, #8]
- mov r1, #1
- add r0, #0x20
- strb r1, [r0]
- add r1, #0xff
- str r1, [sp]
- str r0, [sp, #8]
- ldr r0, [sp, #0x14]
- mov r1, #0x5d
- str r0, [sp, #4]
- ldr r0, [sp, #0x10]
- mov r2, #0x63
- mov r3, #0
- bl MOD05_021E4338
- add sp, #0x18
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E474C: .word UNK05_021F74C8
-_021E4750: .word 0x0000FFFF
-
- thumb_func_start MOD05_021E4754
-MOD05_021E4754: ; 0x021E4754
- push {r4, r5, r6, lr}
- add r6, r0, #0
- add r0, #0x20
- ldrb r0, [r0]
- cmp r0, #0
- bne _021E4764
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E4764:
- mov r4, #0
- add r5, r6, #0
-_021E4768:
- ldr r0, [r5]
- bl MOD05_021E4564
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, #8
- blt _021E4768
- cmp r0, #1
- bne _021E4784
- mov r0, #0
- add r6, #0x20
- strb r0, [r6]
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E4784:
- mov r0, #0
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E4788
-MOD05_021E4788: ; 0x021E4788
- push {r4, lr}
- mov r0, #4
- mov r1, #0xe8
- bl AllocFromHeap
- mov r1, #0
- mov r2, #0xe8
- add r4, r0, #0
- bl memset
- add r0, r4, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021E47A0
-MOD05_021E47A0: ; 0x021E47A0
- push {r4, lr}
- add r4, r0, #0
- add r1, r4, #0
- add r1, #0xe0
- ldr r1, [r1]
- cmp r1, #0
- beq _021E47B2
- bl MOD05_021E4918
-_021E47B2:
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E47BC
-MOD05_021E47BC: ; 0x021E47BC
- push {r3, r4, r5, r6, r7, lr}
- add r4, r0, #0
- ldr r0, [sp, #0x18]
- add r6, r1, #0
- str r0, [sp, #0x18]
- add r0, r6, #0
- add r0, #0xe0
- ldr r0, [r0]
- add r7, r2, #0
- add r5, r3, #0
- cmp r0, #0
- beq _021E47D8
- bl ErrorHandling
-_021E47D8:
- mov r1, #0
- str r1, [r4, #0x18]
- ldr r0, [r4, #0x10]
- add r4, #0x18
- ldr r0, [r0, #4]
- add r3, r7, #0
- ldr r2, [r0, #0x1c]
- add r0, r6, #0
- add r0, #0xd8
- str r2, [r0]
- add r0, r6, #0
- str r1, [r6, #0x14]
- add r0, #0xe4
- str r4, [r0]
- add r0, r6, #0
- mov r2, #0xff
- bl MOD05_021E35B0
- mov r4, #0
-_021E47FE:
- add r0, r4, #0
- add r1, r5, #0
- bl _u32_div_f
- ldr r0, [sp, #0x18]
- mul r0, r1
- add r1, r5, #0
- bl _u32_div_f
- add r7, r0, #0
- add r0, r4, #0
- add r1, r5, #0
- bl _u32_div_f
- mov r1, #1
- tst r0, r1
- bne _021E4826
- add r0, r6, r4
- strb r7, [r0, #0x18]
- b _021E482E
-_021E4826:
- ldr r0, [sp, #0x18]
- sub r1, r0, r7
- add r0, r6, r4
- strb r1, [r0, #0x18]
-_021E482E:
- add r4, r4, #1
- cmp r4, #0xc0
- blt _021E47FE
- ldr r0, _021E4878 ; =0x04000048
- mov r1, #0x3f
- ldrh r3, [r0]
- ldr r2, [sp, #0x1c]
- bic r3, r1
- orr r3, r2
- mov r2, #0x20
- orr r3, r2
- strh r3, [r0]
- ldrh r3, [r0, #2]
- bic r3, r1
- ldr r1, [sp, #0x20]
- orr r1, r3
- strh r1, [r0, #2]
- add r1, r0, #0
- mov r3, #0
- sub r1, #8
- strh r3, [r1]
- mov r1, #0xc0
- sub r0, r0, #4
- strh r1, [r0]
- lsl r3, r2, #0x15
- ldr r1, [r3]
- ldr r0, _021E487C ; =0xFFFF1FFF
- and r1, r0
- lsl r0, r2, #8
- orr r0, r1
- str r0, [r3]
- ldr r0, _021E4880 ; =MOD05_021E4884
- add r1, r6, #0
- lsl r2, r2, #5
- bl FUN_0200CA98
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E4878: .word 0x04000048
-_021E487C: .word 0xFFFF1FFF
-_021E4880: .word MOD05_021E4884
-
- thumb_func_start MOD05_021E4884
-MOD05_021E4884: ; 0x021E4884
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- add r0, r4, #0
- add r0, #0xd8
- ldr r0, [r0]
- ldr r1, _021E48B8 ; =MOD05_021E48EC
- add r2, r4, #0
- bl MOD05_021F4624
- add r1, r4, #0
- add r1, #0xdc
- str r0, [r1]
- mov r2, #1
- ldr r0, _021E48BC ; =MOD05_021E48C0
- add r1, r4, #0
- lsl r2, r2, #0xa
- bl FUN_0200CA98
- add r4, #0xe0
- str r0, [r4]
- add r0, r5, #0
- bl FUN_0200CAB4
- pop {r3, r4, r5, pc}
- nop
-_021E48B8: .word MOD05_021E48EC
-_021E48BC: .word MOD05_021E48C0
-
- thumb_func_start MOD05_021E48C0
-MOD05_021E48C0: ; 0x021E48C0
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4, #0x14]
- cmp r0, #0
- beq _021E48D0
- cmp r0, #1
- beq _021E48E2
- pop {r4, pc}
-_021E48D0:
- add r0, r4, #0
- bl MOD05_021E35C0
- cmp r0, #1
- bne _021E48E8
- ldr r0, [r4, #0x14]
- add r0, r0, #1
- str r0, [r4, #0x14]
- pop {r4, pc}
-_021E48E2:
- add r0, r4, #0
- bl MOD05_021E4918
-_021E48E8:
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E48EC
-MOD05_021E48EC: ; 0x021E48EC
- ldr r0, _021E4910 ; =0x04000006
- ldrh r0, [r0]
- cmp r0, #0xc0
- bge _021E490E
- add r0, r1, r0
- ldrb r0, [r0, #0x18]
- ldr r2, [r1]
- add r0, r2, r0
- cmp r0, #0xff
- ble _021E4902
- mov r0, #0xff
-_021E4902:
- lsl r0, r0, #0x18
- ldr r1, _021E4914 ; =0x04000040
- lsr r0, r0, #0x18
- strh r0, [r1]
- mov r0, #0xc0
- strh r0, [r1, #4]
-_021E490E:
- bx lr
- .balign 4, 0
-_021E4910: .word 0x04000006
-_021E4914: .word 0x04000040
-
- thumb_func_start MOD05_021E4918
-MOD05_021E4918: ; 0x021E4918
- push {r4, lr}
- mov r2, #1
- lsl r2, r2, #0x1a
- add r4, r0, #0
- ldr r1, [r2]
- ldr r0, _021E4958 ; =0xFFFF1FFF
- and r0, r1
- str r0, [r2]
- add r0, r4, #0
- add r0, #0xe4
- ldr r0, [r0]
- mov r1, #1
- str r1, [r0]
- add r0, r4, #0
- add r0, #0xdc
- ldr r0, [r0]
- bl MOD05_021F4648
- add r0, r4, #0
- mov r1, #0
- add r0, #0xdc
- str r1, [r0]
- add r0, r4, #0
- add r0, #0xe0
- ldr r0, [r0]
- bl FUN_0200CAB4
- mov r0, #0
- add r4, #0xe0
- str r0, [r4]
- pop {r4, pc}
- nop
-_021E4958: .word 0xFFFF1FFF
-
- thumb_func_start MOD05_021E495C
-MOD05_021E495C: ; 0x021E495C
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- ldr r0, [r5]
- mov r6, #1
- add r1, r0, #0
- tst r1, r6
- bne _021E4980
- mov r1, #0x72
- lsl r1, r1, #4
- tst r1, r0
- bne _021E4976
- cmp r0, #0
- bne _021E497A
-_021E4976:
- mov r6, #0
- b _021E4980
-_021E497A:
- bl ErrorHandling
- mov r6, #0
-_021E4980:
- ldr r0, [r5, #4]
- bl GetFirstAliveMonInParty_CrashIfNone
- add r7, r0, #0
- ldr r0, [r5, #8]
- bl GetFirstAliveMonInParty_CrashIfNone
- str r0, [sp]
- add r0, r7, #0
- mov r1, #0xa0
- mov r2, #0
- bl GetMonData
- add r7, r0, #0
- ldr r0, [sp]
- mov r1, #0xa0
- mov r2, #0
- bl GetMonData
- mov r1, #0x55
- lsl r1, r1, #2
- ldr r1, [r5, r1]
- sub r0, r0, r7
- cmp r1, #0xc
- bhi _021E49E2
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021E49BE: ; jump table
- .short _021E49D8 - _021E49BE - 2 ; case 0
- .short _021E49D8 - _021E49BE - 2 ; case 1
- .short _021E49D8 - _021E49BE - 2 ; case 2
- .short _021E49D8 - _021E49BE - 2 ; case 3
- .short _021E49D8 - _021E49BE - 2 ; case 4
- .short _021E49E0 - _021E49BE - 2 ; case 5
- .short _021E49D8 - _021E49BE - 2 ; case 6
- .short _021E49DC - _021E49BE - 2 ; case 7
- .short _021E49D8 - _021E49BE - 2 ; case 8
- .short _021E49D8 - _021E49BE - 2 ; case 9
- .short _021E49D8 - _021E49BE - 2 ; case 10
- .short _021E49D8 - _021E49BE - 2 ; case 11
- .short _021E49D8 - _021E49BE - 2 ; case 12
-_021E49D8:
- mov r4, #0
- b _021E49E2
-_021E49DC:
- mov r4, #2
- b _021E49E2
-_021E49E0:
- mov r4, #4
-_021E49E2:
- cmp r0, #0
- ble _021E49E8
- add r4, r4, #1
-_021E49E8:
- mov r0, #6
- mul r0, r6
- add r0, r4, r0
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E49F0
-MOD05_021E49F0: ; 0x021E49F0
- push {r4, r5, r6, lr}
- ldr r4, [sp, #0x14]
- add r5, r0, #0
- mov r0, #0
- strb r0, [r4]
- mov r0, #0xff
- strb r0, [r4, #1]
- lsl r0, r3, #0xc
- add r6, r1, #0
- asr r1, r0, #0x1f
- asr r3, r2, #0x1f
- bl _ll_mul
- mov r2, #2
- add r3, r0, #0
- asr r0, r5, #0xc
- mov r5, #0
- lsl r2, r2, #0xa
- add r3, r3, r2
- adc r1, r5
- lsl r1, r1, #0x14
- lsr r3, r3, #0xc
- orr r3, r1
- asr r3, r3, #0xc
- lsr r1, r3, #0x1f
- add r1, r3, r1
- asr r1, r1, #1
- sub r0, r0, r1
- strb r0, [r4, #2]
- ldr r0, _021E4A38 ; =MOD05_021E4A64
- add r1, r4, #0
- lsr r2, r2, #1
- strb r6, [r4, #3]
- bl FUN_0200CA98
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021E4A38: .word MOD05_021E4A64
-
- thumb_func_start MOD05_021E4A3C
-MOD05_021E4A3C: ; 0x021E4A3C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- lsl r0, r2, #0xc
- add r4, r1, #0
- asr r1, r0, #0x1f
- asr r3, r5, #0x1f
- add r2, r5, #0
- 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
- asr r0, r1, #0xc
- add r0, r4, r0
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E4A64
-MOD05_021E4A64: ; 0x021E4A64
- push {r3, r4, r5, lr}
- ldrb r2, [r1, #4]
- ldrb r3, [r1, #3]
- cmp r2, #0
- bne _021E4A8C
- ldrb r4, [r1]
- ldrb r2, [r1, #2]
- ldrb r1, [r1, #1]
- lsl r5, r4, #8
- mov r4, #0xff
- lsl r4, r4, #8
- and r5, r4
- orr r5, r1
- ldr r1, _021E4AB0 ; =0x04000040
- lsl r2, r2, #8
- and r2, r4
- strh r5, [r1]
- orr r2, r3
- strh r2, [r1, #4]
- b _021E4AA8
-_021E4A8C:
- ldrb r4, [r1]
- ldrb r2, [r1, #2]
- ldrb r1, [r1, #1]
- lsl r5, r4, #8
- mov r4, #0xff
- lsl r4, r4, #8
- and r5, r4
- orr r5, r1
- ldr r1, _021E4AB4 ; =0x04000042
- lsl r2, r2, #8
- and r2, r4
- strh r5, [r1]
- orr r2, r3
- strh r2, [r1, #4]
-_021E4AA8:
- bl FUN_0200CAB4
- pop {r3, r4, r5, pc}
- nop
-_021E4AB0: .word 0x04000040
-_021E4AB4: .word 0x04000042
-
- thumb_func_start MOD05_021E4AB8
-MOD05_021E4AB8: ; 0x021E4AB8
- push {r4, lr}
- add r4, r0, #0
- ldr r0, _021E4ACC ; =0x0400006C
- ldr r1, [r1]
- bl GXx_SetMasterBrightness_
- add r0, r4, #0
- bl FUN_0200CAB4
- pop {r4, pc}
- .balign 4, 0
-_021E4ACC: .word 0x0400006C
-
- thumb_func_start MOD05_021E4AD0
-MOD05_021E4AD0: ; 0x021E4AD0
- ldr r3, _021E4ADC ; =FUN_0200CA98
- mov r2, #1
- add r1, r0, #0
- ldr r0, _021E4AE0 ; =MOD05_021E4AB8
- lsl r2, r2, #0xa
- bx r3
- .balign 4, 0
-_021E4ADC: .word FUN_0200CA98
-_021E4AE0: .word MOD05_021E4AB8
-
- thumb_func_start MOD05_021E4AE4
-MOD05_021E4AE4: ; 0x021E4AE4
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- add r5, r1, #0
- str r2, [sp]
- add r0, r2, #0
- add r2, r3, #0
- mov r1, #0x42
- mov r3, #0
- bl MOD05_021F5990
- mov r1, #0x2c
- mov r2, #0
- add r6, r0, #0
- bl MOD05_021F5A20
- mov r1, #0
- mov r2, #0x2c
- add r4, r0, #0
- bl memset
- ldr r0, [sp]
- lsl r1, r5, #3
- str r0, [r4]
- mov r0, #0x42
- str r0, [r4, #4]
- str r5, [r4, #8]
- str r6, [r4, #0x14]
- str r7, [r4, #0x18]
- add r0, r6, #0
- mov r2, #0
- bl MOD05_021F5A20
- str r0, [r4, #0x1c]
- add r0, r4, #0
- bl MOD05_021E4C80
- add r0, r4, #0
- bl MOD05_021E4C34
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4B38
-MOD05_021E4B38: ; 0x021E4B38
- ldr r3, _021E4B40 ; =MOD05_021E4D90
- str r1, [r0, #0xc]
- bx r3
- nop
-_021E4B40: .word MOD05_021E4D90
-
- thumb_func_start MOD05_021E4B44
-MOD05_021E4B44: ; 0x021E4B44
- push {r3, r4, lr}
- sub sp, #0x14
- ldr r4, [sp, #0x20]
- str r4, [sp]
- ldr r4, [sp, #0x24]
- str r4, [sp, #4]
- ldr r4, [sp, #0x28]
- str r4, [sp, #8]
- ldr r4, [sp, #0x2c]
- str r4, [sp, #0xc]
- ldr r4, [sp, #0x30]
- str r4, [sp, #0x10]
- bl MOD05_021E4DEC
- add sp, #0x14
- pop {r3, r4, pc}
-
- thumb_func_start MOD05_021E4B64
-MOD05_021E4B64: ; 0x021E4B64
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- bl MOD05_021E4D2C
- cmp r0, #0
- beq _021E4B78
- bl ErrorHandling
- pop {r3, r4, r5, pc}
-_021E4B78:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021E4C98
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4B84
-MOD05_021E4B84: ; 0x021E4B84
- push {r3, r4, r5, lr}
- add r4, r1, #0
- ldr r1, [r4]
- add r5, r0, #0
- cmp r1, #0x20
- beq _021E4B9E
-_021E4B90:
- add r0, r5, #0
- bl MOD05_021E4B64
- add r4, r4, #4
- ldr r1, [r4]
- cmp r1, #0x20
- bne _021E4B90
-_021E4B9E:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E4BA0
-MOD05_021E4BA0: ; 0x021E4BA0
- ldr r3, _021E4BA4 ; =MOD05_021E4DB4
- bx r3
- .balign 4, 0
-_021E4BA4: .word MOD05_021E4DB4
-
- thumb_func_start MOD05_021E4BA8
-MOD05_021E4BA8: ; 0x021E4BA8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r4, [r5, #0x14]
- bl MOD05_021E4DA0
- add r0, r5, #0
- bl MOD05_021E4CDC
- add r0, r5, #0
- bl MOD05_021E4E5C
- add r0, r5, #0
- bl MOD05_021E4C48
- ldr r1, [r5, #0x1c]
- add r0, r4, #0
- bl MOD05_021F5A5C
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021F5A5C
- add r0, r4, #0
- bl MOD05_021F59EC
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E4BDC
-MOD05_021E4BDC: ; 0x021E4BDC
- ldr r3, _021E4BE4 ; =MOD05_021F5A20
- ldr r0, [r0, #0x14]
- bx r3
- nop
-_021E4BE4: .word MOD05_021F5A20
-
- thumb_func_start MOD05_021E4BE8
-MOD05_021E4BE8: ; 0x021E4BE8
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r4, r3, #0
- bl MOD05_021E4BDC
- add r1, r4, #0
- add r2, r5, #0
- add r6, r0, #0
- bl memset
- add r0, r6, #0
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E4C00
-MOD05_021E4C00: ; 0x021E4C00
- ldr r3, _021E4C04 ; =FreeToHeap
- bx r3
- .balign 4, 0
-_021E4C04: .word FreeToHeap
-
- thumb_func_start MOD05_021E4C08
-MOD05_021E4C08: ; 0x021E4C08
- push {r3, lr}
- bl MOD05_021E4D2C
- cmp r0, #0
- bne _021E4C1A
- bl ErrorHandling
- mov r0, #0
- pop {r3, pc}
-_021E4C1A:
- ldr r0, [r0, #4]
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4C20
-MOD05_021E4C20: ; 0x021E4C20
- ldr r0, [r0, #0x18]
- bx lr
-
- thumb_func_start MOD05_021E4C24
-MOD05_021E4C24: ; 0x021E4C24
- push {r3, lr}
- bl FUN_02058738
- ldr r0, [r0, #0x3c]
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4C30
-MOD05_021E4C30: ; 0x021E4C30
- ldr r0, [r0, #4]
- bx lr
-
- thumb_func_start MOD05_021E4C34
-MOD05_021E4C34: ; 0x021E4C34
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E4C30
- add r1, r0, #0
- mov r0, #0x6b
- bl NARC_ctor
- str r0, [r4, #0x20]
- pop {r4, pc}
-
- thumb_func_start MOD05_021E4C48
-MOD05_021E4C48: ; 0x021E4C48
- ldr r3, _021E4C50 ; =NARC_dtor
- ldr r0, [r0, #0x20]
- bx r3
- nop
-_021E4C50: .word NARC_dtor
-
- thumb_func_start MOD05_021E4C54
-MOD05_021E4C54: ; 0x021E4C54
- ldr r3, _021E4C5C ; =NARC_GetMemberSize
- ldr r0, [r0, #0x20]
- bx r3
- nop
-_021E4C5C: .word NARC_GetMemberSize
-
- thumb_func_start MOD05_021E4C60
-MOD05_021E4C60: ; 0x021E4C60
- ldr r3, _021E4C68 ; =NARC_ReadWholeMember
- ldr r0, [r0, #0x20]
- bx r3
- nop
-_021E4C68: .word NARC_ReadWholeMember
-
- thumb_func_start MOD05_021E4C6C
-MOD05_021E4C6C: ; 0x021E4C6C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- add r3, r2, #0
- ldr r0, [r5, #0x14]
- ldr r1, [r5, #0x20]
- add r2, r4, #0
- bl MOD05_021F5AB8
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E4C80
-MOD05_021E4C80: ; 0x021E4C80
- push {r3, r4, r5, lr}
- ldr r4, [r0, #8]
- ldr r5, [r0, #0x1c]
- cmp r4, #0
- beq _021E4C96
-_021E4C8A:
- add r0, r5, #0
- bl MOD05_021E4D44
- add r5, #8
- sub r4, r4, #1
- bne _021E4C8A
-_021E4C96:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E4C98
-MOD05_021E4C98: ; 0x021E4C98
- push {r4, r5, r6, lr}
- add r6, r1, #0
- add r5, r0, #0
- add r0, r6, #0
- bl MOD05_021E4D68
- add r1, r0, #0
- ldr r1, [r1, #4]
- add r0, r5, #0
- blx r1
- add r4, r0, #0
- add r0, r5, #0
- bl MOD05_021E4D04
- add r1, r6, #0
- add r2, r4, #0
- bl MOD05_021E4D50
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4CC0
-MOD05_021E4CC0: ; 0x021E4CC0
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4]
- bl MOD05_021E4D68
- add r1, r0, #0
- ldr r0, [r4, #4]
- ldr r1, [r1, #8]
- blx r1
- add r0, r4, #0
- bl MOD05_021E4D44
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4CDC
-MOD05_021E4CDC: ; 0x021E4CDC
- push {r4, r5, r6, lr}
- add r6, r0, #0
- ldr r4, [r6, #8]
- ldr r5, [r6, #0x1c]
- cmp r4, #0
- beq _021E4D00
-_021E4CE8:
- add r0, r5, #0
- bl MOD05_021E4D58
- cmp r0, #0
- bne _021E4CFA
- add r0, r6, #0
- add r1, r5, #0
- bl MOD05_021E4CC0
-_021E4CFA:
- add r5, #8
- sub r4, r4, #1
- bne _021E4CE8
-_021E4D00:
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4D04
-MOD05_021E4D04: ; 0x021E4D04
- push {r3, r4, r5, lr}
- ldr r4, [r0, #8]
- ldr r5, [r0, #0x1c]
- cmp r4, #0
- beq _021E4D22
-_021E4D0E:
- add r0, r5, #0
- bl MOD05_021E4D58
- cmp r0, #1
- bne _021E4D1C
- add r0, r5, #0
- pop {r3, r4, r5, pc}
-_021E4D1C:
- add r5, #8
- sub r4, r4, #1
- bne _021E4D0E
-_021E4D22:
- bl ErrorHandling
- mov r0, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4D2C
-MOD05_021E4D2C: ; 0x021E4D2C
- ldr r3, [r0, #8]
- ldr r0, [r0, #0x1c]
- cmp r3, #0
- beq _021E4D40
-_021E4D34:
- ldr r2, [r0]
- cmp r2, r1
- beq _021E4D42
- add r0, #8
- sub r3, r3, #1
- bne _021E4D34
-_021E4D40:
- mov r0, #0
-_021E4D42:
- bx lr
-
- thumb_func_start MOD05_021E4D44
-MOD05_021E4D44: ; 0x021E4D44
- mov r1, #0x20
- str r1, [r0]
- mov r1, #0
- str r1, [r0, #4]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E4D50
-MOD05_021E4D50: ; 0x021E4D50
- str r1, [r0]
- str r2, [r0, #4]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E4D58
-MOD05_021E4D58: ; 0x021E4D58
- ldr r0, [r0]
- cmp r0, #0x20
- bne _021E4D62
- mov r0, #1
- bx lr
-_021E4D62:
- mov r0, #0
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E4D68
-MOD05_021E4D68: ; 0x021E4D68
- push {r3, lr}
- ldr r1, _021E4D8C ; =UNK05_021FC820
- ldr r2, [r1]
- cmp r2, #0x20
- beq _021E4D82
-_021E4D72:
- cmp r2, r0
- bne _021E4D7A
- add r0, r1, #0
- pop {r3, pc}
-_021E4D7A:
- add r1, #0xc
- ldr r2, [r1]
- cmp r2, #0x20
- bne _021E4D72
-_021E4D82:
- bl ErrorHandling
- mov r0, #0
- pop {r3, pc}
- nop
-_021E4D8C: .word UNK05_021FC820
-
- thumb_func_start MOD05_021E4D90
-MOD05_021E4D90: ; 0x021E4D90
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #4]
- ldr r1, [r4, #0xc]
- bl FUN_020643C0
- str r0, [r4, #0x24]
- pop {r4, pc}
-
- thumb_func_start MOD05_021E4DA0
-MOD05_021E4DA0: ; 0x021E4DA0
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x24]
- cmp r0, #0
- beq _021E4DB2
- bl FUN_020643F0
- mov r0, #0
- str r0, [r4, #0x24]
-_021E4DB2:
- pop {r4, pc}
-
- thumb_func_start MOD05_021E4DB4
-MOD05_021E4DB4: ; 0x021E4DB4
- push {r3, lr}
- ldr r0, [r0, #0x24]
- cmp r0, #0
- beq _021E4DC0
- bl FUN_02064584
-_021E4DC0:
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4DC4
-MOD05_021E4DC4: ; 0x021E4DC4
- push {r4, lr}
- sub sp, #8
- ldr r4, [sp, #0x10]
- str r4, [sp]
- ldr r4, [sp, #0x14]
- str r4, [sp, #4]
- ldr r0, [r0, #0x24]
- bl FUN_020644E4
- add r4, r0, #0
- bne _021E4DDE
- bl ErrorHandling
-_021E4DDE:
- add r0, r4, #0
- add sp, #8
- pop {r4, pc}
-
- thumb_func_start MOD05_021E4DE4
-MOD05_021E4DE4: ; 0x021E4DE4
- ldr r3, _021E4DE8 ; =FUN_02064520
- bx r3
- .balign 4, 0
-_021E4DE8: .word FUN_02064520
-
- thumb_func_start MOD05_021E4DEC
-MOD05_021E4DEC: ; 0x021E4DEC
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r6, r2, #0
- add r5, r1, #0
- mov r2, #0
- str r3, [sp]
- mov r1, #0x24
- add r3, r2, #0
- add r7, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r4, [r7, #0x28]
- str r5, [r4]
- ldr r0, [sp]
- strh r6, [r4, #4]
- strh r0, [r4, #6]
- ldr r0, [sp, #0x20]
- ldr r2, [sp, #0x28]
- strh r0, [r4, #8]
- ldr r0, [sp, #0x24]
- ldr r3, [sp]
- strh r0, [r4, #0xa]
- add r0, r5, #0
- mov r1, #0x45
- bl MOD05_021F5990
- str r0, [r4, #0x10]
- ldr r2, [sp, #0x2c]
- ldr r3, [sp, #0x20]
- add r0, r5, #0
- mov r1, #0x46
- bl MOD05_021F5990
- str r0, [r4, #0x14]
- ldr r0, [sp, #0x24]
- add r1, r5, #0
- bl FUN_02020E90
- str r0, [r4, #0x18]
- add r0, r7, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021E4F60
- add r0, r7, #0
- str r6, [sp, #4]
- bl MOD05_021E4C30
- str r0, [sp, #8]
- add r0, sp, #4
- bl FUN_0201F1B4
- str r0, [r4, #0xc]
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E4E5C
-MOD05_021E4E5C: ; 0x021E4E5C
- push {r3, r4, r5, lr}
- add r4, r0, #0
- ldr r5, [r4, #0x28]
- cmp r5, #0
- beq _021E4E8E
- ldr r0, [r5, #0xc]
- bl FUN_0201F23C
- add r0, r5, #0
- bl MOD05_021E4F94
- ldr r0, [r5, #0x10]
- bl MOD05_021F59EC
- ldr r0, [r5, #0x14]
- bl MOD05_021F59EC
- ldr r0, [r5, #0x18]
- bl FUN_02020ED4
- add r0, r5, #0
- bl MOD05_021E4C00
- mov r0, #0
- str r0, [r4, #0x28]
-_021E4E8E:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E4E90
-MOD05_021E4E90: ; 0x021E4E90
- push {r4, lr}
- sub sp, #0x20
- ldr r0, [r0, #0x28]
- add r3, sp, #8
- ldr r0, [r0, #0xc]
- str r0, [sp]
- str r1, [sp, #4]
- ldmia r2!, {r0, r1}
- stmia r3!, {r0, r1}
- ldr r0, [r2]
- add r2, sp, #0x14
- str r0, [r3]
- ldr r3, _021E4EE0 ; =UNK05_021F7564
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- add r0, sp, #0
- bl FUN_0201F6E8
- add r4, r0, #0
- bne _021E4EC0
- bl ErrorHandling
-_021E4EC0:
- cmp r4, #0
- beq _021E4EDA
- add r0, r4, #0
- bl FUN_0201F8E0
- mov r1, #1
- bl FUN_020BB9F4
- add r0, r4, #0
- bl FUN_0201F8E0
- bl MOD05_021DB5EC
-_021E4EDA:
- add r0, r4, #0
- add sp, #0x20
- pop {r4, pc}
- .balign 4, 0
-_021E4EE0: .word UNK05_021F7564
-
- thumb_func_start MOD05_021E4EE4
-MOD05_021E4EE4: ; 0x021E4EE4
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x28]
- add r4, r2, #0
- bl MOD05_021E504C
- add r1, r0, #0
- add r0, r5, #0
- add r2, r4, #0
- bl MOD05_021E4E90
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E4EFC
-MOD05_021E4EFC: ; 0x021E4EFC
- push {r4, r5, r6, r7, lr}
- sub sp, #0x1c
- ldr r5, [r0, #0x28]
- add r6, r1, #0
- ldr r0, [r5, #0x10]
- add r1, r2, #0
- add r4, r3, #0
- bl MOD05_021F5A90
- add r7, r0, #0
- ldr r0, [r5, #0x14]
- add r1, r4, #0
- bl MOD05_021F5A90
- add r1, sp, #0xc
- bl FUN_0202227C
- ldr r0, [r5, #0x18]
- ldr r1, [sp, #0x30]
- bl FUN_02021050
- add r4, r0, #0
- bne _021E4F2E
- bl ErrorHandling
-_021E4F2E:
- add r0, r4, #0
- bl FUN_020210AC
- ldr r1, [sp, #0x34]
- cmp r1, #1
- bne _021E4F3C
- mov r4, #0
-_021E4F3C:
- str r0, [sp]
- ldr r0, [sp, #0x38]
- str r4, [sp, #4]
- str r0, [sp, #8]
- add r0, r5, #0
- add r1, r6, #0
- add r2, r7, #0
- add r3, sp, #0xc
- bl MOD05_021E4FC8
- add r4, r0, #0
- bne _021E4F58
- bl ErrorHandling
-_021E4F58:
- add r0, r4, #0
- add sp, #0x1c
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4F60
-MOD05_021E4F60: ; 0x021E4F60
- push {r3, r4, r5, r6, r7, lr}
- add r6, r1, #0
- add r5, r2, #0
- mov r1, #0x28
- add r7, r0, #0
- mul r1, r5
- mov r2, #0
- bl MOD05_021E4BDC
- add r4, r0, #0
- add r0, r7, #0
- lsl r1, r5, #3
- mov r2, #0
- str r4, [r6, #0x20]
- bl MOD05_021E4BDC
- str r0, [r6, #0x1c]
- mov r1, #0xe
-_021E4F84:
- str r1, [r0]
- str r4, [r0, #4]
- add r0, #8
- add r4, #0x28
- sub r5, r5, #1
- bne _021E4F84
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4F94
-MOD05_021E4F94: ; 0x021E4F94
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x1c]
- bl MOD05_021E4C00
- ldr r0, [r4, #0x20]
- bl MOD05_021E4C00
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4FA8
-MOD05_021E4FA8: ; 0x021E4FA8
- push {r3, lr}
- ldrh r2, [r0, #4]
- ldr r3, [r0, #0x1c]
-_021E4FAE:
- ldr r0, [r3]
- cmp r0, r1
- bne _021E4FBA
- mov r0, #0xe
- str r0, [r3]
- pop {r3, pc}
-_021E4FBA:
- add r3, #8
- sub r2, r2, #1
- bne _021E4FAE
- bl ErrorHandling
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E4FC8
-MOD05_021E4FC8: ; 0x021E4FC8
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- ldrh r5, [r6, #4]
- add r0, r1, #0
- ldr r1, [sp, #0x1c]
- str r2, [sp]
- ldr r6, [r6, #0x1c]
- add r7, r3, #0
- str r1, [sp, #0x1c]
- mov r4, #0
- add r2, r5, #0
- add r3, r6, #0
-_021E4FE0:
- ldr r1, [r3]
- cmp r1, r0
- bne _021E4FEA
- ldr r0, [r3, #4]
- pop {r3, r4, r5, r6, r7, pc}
-_021E4FEA:
- add r3, #8
- sub r2, r2, #1
- bne _021E4FE0
-_021E4FF0:
- ldr r1, [r6]
- cmp r1, #0xe
- bne _021E4FFC
- str r0, [r6]
- ldr r4, [r6, #4]
- b _021E5002
-_021E4FFC:
- add r6, #8
- sub r5, r5, #1
- bne _021E4FF0
-_021E5002:
- cmp r4, #0
- bne _021E500A
- bl ErrorHandling
-_021E500A:
- add r0, r4, #0
- mov r1, #0
- mov r2, #0x28
- bl memset
- ldr r0, [sp]
- add r2, r4, #0
- str r0, [r4]
- add r2, #0xc
- ldmia r7!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r7!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [sp, #0x18]
- str r0, [r4, #4]
- ldr r0, [sp, #0x1c]
- cmp r0, #0
- beq _021E5044
- bl FUN_020211AC
- str r0, [r4, #0x1c]
- ldr r0, [sp, #0x1c]
- bl FUN_020211BC
- str r0, [r4, #0x20]
- ldr r0, [sp, #0x1c]
- bl FUN_020211CC
- str r0, [r4, #0x24]
-_021E5044:
- ldr r0, [sp, #0x20]
- str r0, [r4, #8]
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E504C
-MOD05_021E504C: ; 0x021E504C
- push {r3, lr}
- ldrh r2, [r0, #4]
- ldr r3, [r0, #0x1c]
-_021E5052:
- ldr r0, [r3]
- cmp r0, r1
- bne _021E505C
- ldr r0, [r3, #4]
- pop {r3, pc}
-_021E505C:
- add r3, #8
- sub r2, r2, #1
- bne _021E5052
- bl ErrorHandling
- mov r0, #0
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E506C
-MOD05_021E506C: ; 0x021E506C
- ldr r3, _021E5074 ; =MOD05_021E4FA8
- ldr r0, [r0, #0x28]
- bx r3
- nop
-_021E5074: .word MOD05_021E4FA8
-
- thumb_func_start MOD05_021E5078
-MOD05_021E5078: ; 0x021E5078
- push {r3, r4, lr}
- sub sp, #4
- add r4, r0, #0
- mov r0, #0
- str r0, [sp]
- ldr r0, [r4, #0x28]
- add r3, r2, #0
- ldr r0, [r0, #0x10]
- ldr r2, [r4, #0x20]
- bl MOD05_021F5AE4
- add sp, #4
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5094
-MOD05_021E5094: ; 0x021E5094
- ldr r0, [r0, #0x28]
- ldr r3, _021E509C ; =MOD05_021F5A90
- ldr r0, [r0, #0x10]
- bx r3
- .balign 4, 0
-_021E509C: .word MOD05_021F5A90
-
- thumb_func_start MOD05_021E50A0
-MOD05_021E50A0: ; 0x021E50A0
- ldr r0, [r0, #0x28]
- ldr r3, _021E50A8 ; =MOD05_021F5A74
- ldr r0, [r0, #0x10]
- bx r3
- .balign 4, 0
-_021E50A8: .word MOD05_021F5A74
-
- thumb_func_start MOD05_021E50AC
-MOD05_021E50AC: ; 0x021E50AC
- push {r3, r4, lr}
- sub sp, #4
- add r4, r0, #0
- mov r0, #0
- str r0, [sp]
- ldr r0, [r4, #0x28]
- add r3, r2, #0
- ldr r0, [r0, #0x14]
- ldr r2, [r4, #0x20]
- bl MOD05_021F5AE4
- add sp, #4
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E50C8
-MOD05_021E50C8: ; 0x021E50C8
- ldr r0, [r0, #0x28]
- ldr r3, _021E50D0 ; =MOD05_021F5A74
- ldr r0, [r0, #0x14]
- bx r3
- .balign 4, 0
-_021E50D0: .word MOD05_021F5A74
-
- thumb_func_start MOD05_021E50D4
-MOD05_021E50D4: ; 0x021E50D4
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #8
- add r5, r0, #0
- add r6, r1, #0
- add r1, r2, #0
- ldr r4, [r5, #0x28]
- mov r2, #1
- add r7, r3, #0
- bl MOD05_021E4C6C
- str r0, [sp, #4]
- add r0, r5, #0
- bl MOD05_021E4C30
- str r0, [sp]
- ldr r0, [r4, #0x18]
- ldr r1, [sp, #4]
- add r2, r6, #0
- add r3, r7, #0
- bl FUN_02020F54
- cmp r0, #0
- bne _021E5106
- bl ErrorHandling
-_021E5106:
- ldr r2, [r4, #0x18]
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021E5120
- add sp, #8
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E5114
-MOD05_021E5114: ; 0x021E5114
- ldr r0, [r0, #0x28]
- ldr r3, _021E511C ; =FUN_02020FF0
- ldr r0, [r0, #0x18]
- bx r3
- .balign 4, 0
-_021E511C: .word FUN_02020FF0
-
- thumb_func_start MOD05_021E5120
-MOD05_021E5120: ; 0x021E5120
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r6, r2, #0
- mov r1, #0xc
- mov r2, #1
- bl MOD05_021E4BDC
- add r4, r0, #0
- mov r0, #1
- str r0, [r4]
- str r5, [r4, #4]
- ldr r0, _021E5150 ; =MOD05_021E5158
- add r1, r4, #0
- mov r2, #0xff
- str r6, [r4, #8]
- bl FUN_0200CA60
- ldr r0, _021E5154 ; =MOD05_021E5174
- add r1, r4, #0
- mov r2, #0xff
- bl FUN_0200CA98
- pop {r4, r5, r6, pc}
- nop
-_021E5150: .word MOD05_021E5158
-_021E5154: .word MOD05_021E5174
-
- thumb_func_start MOD05_021E5158
-MOD05_021E5158: ; 0x021E5158
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4, #8]
- ldr r1, [r4, #4]
- bl FUN_020210F0
- mov r0, #1
- str r0, [r4]
- add r0, r5, #0
- bl FUN_0200CAB4
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5174
-MOD05_021E5174: ; 0x021E5174
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4]
- cmp r0, #1
- bne _021E5194
- ldr r0, [r4, #8]
- ldr r1, [r4, #4]
- bl FUN_02021158
- add r0, r4, #0
- bl MOD05_021E4C00
- add r0, r5, #0
- bl FUN_0200CAB4
-_021E5194:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5198
-MOD05_021E5198: ; 0x021E5198
- push {r4, r5, r6, lr}
- add r4, r3, #0
- ldr r0, [r4]
- add r6, r1, #0
- add r5, r2, #0
- bl FUN_020BC0FC
- cmp r0, #0
- beq _021E51C8
- bl FUN_0201B254
- cmp r0, #0
- bne _021E51C8
- ldr r0, [r4]
- ldr r1, [r0, #8]
- bl DC_FlushRange
- ldr r0, [r4]
- bl FUN_020BB59C
- cmp r0, #0
- bne _021E51C8
- bl ErrorHandling
-_021E51C8:
- ldr r0, [r4]
- bl FUN_020BC13C
- ldrh r1, [r0, #0xe]
- add r1, r0, r1
- ldr r1, [r1, #0xc]
- add r0, r0, r1
- str r0, [r5]
- cmp r5, #0
- bne _021E51E0
- bl ErrorHandling
-_021E51E0:
- ldr r1, [r5]
- add r0, r6, #0
- bl FUN_020B80B4
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E51EC
-MOD05_021E51EC: ; 0x021E51EC
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r3, #0
- bl MOD05_021E4C6C
- ldr r3, [sp, #0x14]
- ldr r2, [sp, #0x10]
- str r0, [r3]
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021E5198
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5208
-MOD05_021E5208: ; 0x021E5208
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldr r0, [r4, #0xc]
- bl FUN_0201B3C4
- ldr r0, [r4]
- ldr r1, [r4, #0xc]
- bl FUN_0201B3A8
- add r0, r5, #0
- bl FUN_0200CAB4
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E5224
-MOD05_021E5224: ; 0x021E5224
- push {r4, lr}
- add r4, r1, #0
- add r1, r2, #0
- add r2, r3, #0
- bl MOD05_021E4C6C
- str r0, [r4]
- bl FUN_020BC13C
- str r0, [r4, #4]
- ldrh r1, [r0, #0xe]
- add r1, r0, r1
- ldr r1, [r1, #0xc]
- add r0, r0, r1
- str r0, [r4, #8]
- ldr r0, [r4]
- bl FUN_020BC0FC
- str r0, [r4, #0xc]
- cmp r0, #0
- beq _021E525A
- mov r2, #1
- ldr r0, _021E525C ; =MOD05_021E5208
- add r1, r4, #0
- lsl r2, r2, #0xa
- bl FUN_0200CA60
-_021E525A:
- pop {r4, pc}
- .balign 4, 0
-_021E525C: .word MOD05_021E5208
-
- thumb_func_start MOD05_021E5260
-MOD05_021E5260: ; 0x021E5260
- push {r4, r5, r6, lr}
- add r5, r1, #0
- add r4, r2, #0
- ldr r1, [sp, #0x10]
- ldr r2, [sp, #0x14]
- add r6, r3, #0
- bl MOD05_021E4C6C
- str r0, [r5]
- mov r1, #0
- bl FUN_020BC4C8
- str r0, [r5, #4]
- ldr r1, [r5, #4]
- ldr r2, [r4, #8]
- add r0, r6, #0
- bl FUN_020BB8D0
- str r0, [r5, #8]
- ldr r1, [r5, #4]
- ldr r2, [r4, #8]
- ldr r3, [r4, #0xc]
- bl FUN_020B8110
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5294
-MOD05_021E5294: ; 0x021E5294
- push {r4, lr}
- add r4, r1, #0
- bl MOD05_021E4C30
- add r1, r0, #0
- add r0, r4, #0
- mov r2, #0x20
- bl FUN_02016B20
- pop {r4, pc}
-
thumb_func_start MOD05_021E52A8
MOD05_021E52A8: ; 0x021E52A8
push {r3, r4, r5, lr}
@@ -40432,49 +35240,6 @@ _021F6428: .word MOD05_021F57F0
.section .rodata
- .global UNK05_021F745C
-UNK05_021F745C: ; 0x021F745C
- .byte 0x00, 0x02, 0x05, 0x07, 0x01, 0x06, 0x03, 0x04
-
- .global UNK05_021F7464
-UNK05_021F7464: ; 0x021F7464
- .word 0x00000001, 0x00000001, 0x00000000, 0x00000001
-
- .global UNK05_021F7474
-UNK05_021F7474: ; 0x021F7474
- .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
- .word 0x001F0101, 0x00010001, 0x00000000
-
- .global UNK05_021F7490
-UNK05_021F7490: ; 0x021F7490
- .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
- .word MOD05_021E0000, 0x00000001, 0x00000000
-
- .global UNK05_021F74AC
-UNK05_021F74AC: ; 0x021F74AC
- .word 0x00000000, 0x00000000, 0x00000800, 0x00000000
- .word 0x011D0001, 0x00000300, 0x00000000
-
- .global UNK05_021F74C8
-UNK05_021F74C8: ; 0x021F74C8
- .short 0x0000, 0x0017, 0x002D, 0x0016, 0x002D, 0x0044, 0x005A, 0x0043
- .short 0x005B, 0x0071, 0x0087, 0x0070, 0x0087, 0x009E, 0x00B4, 0x009D
-
- .global UNK05_021F74E8
-UNK05_021F74E8: ; 0x021F74E8
- .word MOD05_021E8A68, MOD05_021E88E8, MOD05_021E8BEC, MOD05_021E8D20
- .word MOD05_021E8F20, MOD05_021E9030, MOD05_021E9140, MOD05_021E94A8
- .word MOD05_021E97A8, MOD05_021E9B68, MOD05_021EA0E4, MOD05_021EA3A4
- .word MOD05_021EBBC8, MOD05_021EBBE8, MOD05_021EBC08, MOD05_021EBC28
- .word MOD05_021EBC48, MOD05_021EBC68, MOD05_021EBC88, MOD05_021EBCA8
- .word MOD05_021EC3B8, MOD05_021EC3D8, MOD05_021EC3F8, MOD05_021EC418
- .word MOD05_021EC438, MOD05_021EB448, MOD05_021EB5B4, MOD05_021EAD60
- .word MOD05_021EB160, MOD05_021EA884, MOD05_021EAAE8
-
- .global UNK05_021F7564
-UNK05_021F7564: ; 0x021F7564
- .word 0x00001000, 0x00001000, 0x00001000
-
.global UNK05_021F7570
UNK05_021F7570: ; 0x021F7570
.word 0x00001000, 0x00001000, 0x00001000
@@ -43170,17 +37935,6 @@ UNK05_021FD1B8: ; 0x021FD1B8
.section .data
.balign 4
-
- .global UNK05_021FD610
-UNK05_021FD610: ; 0x021FD610
- .asciz "/data/dp_areawindow.NCGR"
-
- .balign 4
- .global UNK05_021FD62C
-UNK05_021FD62C: ; 0x021FD62C
- .asciz "/data/dp_areawindow.NCLR"
-
- .balign 4
.global UNK05_021FD648
UNK05_021FD648: ; 0x021FD648
.asciz "fielddata/build_model/build_model_matshp.dat"