summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRevo <projectrevotpp@hotmail.com>2020-10-15 10:44:30 -0400
committerGitHub <noreply@github.com>2020-10-15 10:44:30 -0400
commite7fa21a56d7a8e12b31afdf7f1247700c56226c9 (patch)
treebb3f189674fa45677a591d5d706bd263b9b07c6c
parent5d7b49bfda5d50c9f80bf2780a8614fe210fbc38 (diff)
parent8845a46444d29d5c4ac491fa040c35af61a3428d (diff)
Merge pull request #291 from red031000/master
split a lot more of module 5 and arm9 CARD_pullOut
-rw-r--r--arm9/arm9.lsf10
-rw-r--r--arm9/asm/CARD_pullOut.s179
-rw-r--r--arm9/global.inc20
-rw-r--r--arm9/lib/include/CARD_backup.h2
-rw-r--r--arm9/lib/include/CARD_common.h4
-rw-r--r--arm9/lib/include/CARD_pullOut.h11
-rw-r--r--arm9/lib/include/PAD_pad.h1
-rw-r--r--arm9/lib/include/PXI_fifo.h10
-rw-r--r--arm9/lib/include/SPI_pm.h2
-rw-r--r--arm9/lib/include/consts.h2
-rw-r--r--arm9/lib/include/mmap.h2
-rw-r--r--arm9/lib/src/CARD_pullOut.c107
-rw-r--r--arm9/modules/05/asm/mod05_021E52A8.s54
-rw-r--r--arm9/modules/05/asm/mod05_021E5300.s326
-rw-r--r--arm9/modules/05/asm/mod05_021E5564.s54
-rw-r--r--arm9/modules/05/asm/mod05_021E55BC.s251
-rw-r--r--arm9/modules/05/asm/mod05_021E577C.s230
-rw-r--r--arm9/modules/05/asm/mod05_021E5918.s232
-rw-r--r--arm9/modules/05/asm/mod05_021E5AB4.s250
-rw-r--r--arm9/modules/05/asm/mod05_021E5C8C.s209
-rw-r--r--arm9/modules/05/asm/mod05_021E5E10.s245
-rw-r--r--arm9/modules/05/asm/mod05_021E5FD8.s2471
-rw-r--r--arm9/modules/05/asm/module_05.s4266
-rw-r--r--arm9/src/save.c8
24 files changed, 4492 insertions, 4454 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 274f2ccd..57fbde66 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -544,6 +544,16 @@ Overlay MODULE_05
Object mod05_021E3340.o
Object mod05_021E3444.o
Object mod05_021E4AE4.o
+ Object mod05_021E52A8.o
+ Object mod05_021E5300.o
+ Object mod05_021E5564.o
+ Object mod05_021E55BC.o
+ Object mod05_021E577C.o
+ Object mod05_021E5918.o
+ Object mod05_021E5AB4.o
+ Object mod05_021E5C8C.o
+ Object mod05_021E5E10.o
+ Object mod05_021E5FD8.o
Object module_05.o
}
diff --git a/arm9/asm/CARD_pullOut.s b/arm9/asm/CARD_pullOut.s
deleted file mode 100644
index a3237d3c..00000000
--- a/arm9/asm/CARD_pullOut.s
+++ /dev/null
@@ -1,179 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .bss
-
- .global UNK_021D5E20
-UNK_021D5E20: ; 0x021D5E20
- .space 0x4
-
- .global UNK_021D5E24
-UNK_021D5E24: ; 0x021D5E24
- .space 0x4
-
- .text
-
- arm_func_start CARDi_SendtoPxi
-CARDi_SendtoPxi: ; 0x020D7BCC
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- mov r1, r7
- mov r0, #0xe
- mov r2, #0x0
- bl PXI_SendWordByFifo
-_020D7BEC: ; 0x020D7BEC
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- mov r5, #0xe
- mov r4, #0x0
-_020D7C04:
- mov r0, r6
- bl SVC_WaitByLoop
- mov r0, r5
- mov r1, r7
- mov r2, r4
- bl PXI_SendWordByFifo
-_020D7C1C: ; 0x020D7C1C
- cmp r0, #0x0
- bne _020D7C04
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
-
- arm_func_start CARDi_CheckPulledOutCore
-CARDi_CheckPulledOutCore:
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x8
- ldr r1, _020D7C94 ; =0x027FFC10
- ldrh r1, [r1, #0x0]
- cmp r1, #0x0
- ldreq r1, _020D7C98 ; =0x027FF800
- ldrne r1, _020D7C9C ; =0x027FFC00
- ldr r1, [r1, #0x0]
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x0]
- cmp r0, r1
- addeq sp, sp, #0x8
- ldmeqia sp!, {r4,lr}
- bxeq lr
- bl OS_DisableInterrupts
- mov r4, r0
- mov r0, #0xe
- mov r1, #0x11
- mov r2, #0x0
- bl CARDi_PulledOutCallback
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x8
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020D7C94: .word 0x027FFC10
-_020D7C98: .word 0x027FF800
-_020D7C9C: .word 0x027FFC00
-
- arm_func_start CARD_TerminateForPulledOut
-CARD_TerminateForPulledOut: ; 0x020D7CA0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r0, _020D7D10 ; =0x027FFFA8
- mov r5, #0x1
- ldrh r0, [r0, #0x0]
- and r0, r0, #0x8000
- movs r0, r0, asr #0xf
- beq _020D7CEC
- bl PM_ForceToPowerOff
- cmp r0, #0x4
- bne _020D7CE4
- ldr r4, _020D7D14 ; =0x000A3A47
-_020D7CD0:
- mov r0, r4
- bl OS_SpinWait
- bl PM_ForceToPowerOff
- cmp r0, #0x4
- beq _020D7CD0
-_020D7CE4:
- cmp r0, #0x0
- moveq r5, #0x0
-_020D7CEC:
- cmp r5, #0x0
- beq _020D7D00
- mov r0, #0x1
- mov r1, r0
- bl CARDi_SendtoPxi
-_020D7D00:
- bl OS_Terminate
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020D7D10: .word 0x027FFFA8
-_020D7D14: .word 0x000A3A47
-
- arm_func_start CARD_IsPulledOut
-CARD_IsPulledOut: ; 0x020D7D18
- ldr r0, _020D7D24 ; =UNK_021D5E20
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-_020D7D24: .word UNK_021D5E20
-
- arm_func_start CARDi_PulledOutCallback
-CARDi_PulledOutCallback: ; 0x020D7D28
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- and r0, r1, #0x3f
- cmp r0, #0x11
- bne _020D7D90
- ldr r2, _020D7DA0 ; =UNK_021D5E20
- ldr r0, [r2, #0x0]
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {lr}
- bxne lr
- ldr r1, _020D7DA4 ; =UNK_021D5E24
- mov r0, #0x1
- ldr r1, [r1, #0x0]
- str r0, [r2, #0x0]
- cmp r1, #0x0
- beq _020D7D70
- blx r1
-_020D7D70:
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {lr}
- bxeq lr
- bl CARD_TerminateForPulledOut
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-_020D7D90:
- bl OS_Terminate
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020D7DA0: .word UNK_021D5E20
-_020D7DA4: .word UNK_021D5E24
-
- arm_func_start CARD_InitPulledOutCallback
-CARD_InitPulledOutCallback: ; 0x020D7DA8
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl PXI_Init
- ldr r1, _020D7DD8 ; =CARDi_PulledOutCallback
- mov r0, #0xe
- bl PXI_SetFifoRecvCallback
- ldr r0, _020D7DDC ; =UNK_021D5E24
- mov r1, #0x0
- str r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020D7DD8: .word CARDi_PulledOutCallback
-_020D7DDC: .word UNK_021D5E24
diff --git a/arm9/global.inc b/arm9/global.inc
index 8f1f4448..0af44f98 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -6469,13 +6469,31 @@
.extern MOD05_021E5224
.extern MOD05_021E5260
.extern MOD05_021E5294
+.extern MOD05_021E52A8
+.extern MOD05_021E52C4
+.extern MOD05_021E5300
+.extern MOD05_021E531C
.extern MOD05_021E53B4
.extern MOD05_021E5420
+.extern MOD05_021E5564
+.extern MOD05_021E5580
+.extern MOD05_021E55BC
+.extern MOD05_021E55D8
.extern MOD05_021E5614
+.extern MOD05_021E577C
+.extern MOD05_021E5798
.extern MOD05_021E57D4
+.extern MOD05_021E5918
+.extern MOD05_021E5934
.extern MOD05_021E5970
+.extern MOD05_021E5AB4
+.extern MOD05_021E5AD0
.extern MOD05_021E5B30
+.extern MOD05_021E5C8C
+.extern MOD05_021E5CA8
.extern MOD05_021E5D0C
+.extern MOD05_021E5E10
+.extern MOD05_021E5E2C
.extern MOD05_021E5E8C
.extern MOD05_021E5FD8
.extern MOD05_021E5FE0
@@ -6609,6 +6627,7 @@
.extern MOD05_021F043C
.extern MOD05_021F04F8
.extern MOD05_021F0514
+.extern MOD05_021F1AF8
.extern MOD05_021F1C1C
.extern MOD05_021F1C30
.extern MOD05_021F1CB8
@@ -6629,6 +6648,7 @@
.extern MOD05_021F2E28
.extern MOD05_021F2F48
.extern MOD05_021F2F6C
+.extern MOD05_021F3490
.extern MOD05_021F38B8
.extern MOD05_021F3A18
.extern MOD05_021F3AB4
diff --git a/arm9/lib/include/CARD_backup.h b/arm9/lib/include/CARD_backup.h
index 465d6d2e..e5c0c0cd 100644
--- a/arm9/lib/include/CARD_backup.h
+++ b/arm9/lib/include/CARD_backup.h
@@ -7,7 +7,7 @@
BOOL CARDi_RequestStreamCommand(u32 src, u32 dst, u32 len, MIDmaCallback callback, void *arg, BOOL is_async,
CARDRequest req_type, int req_retry, CARDRequestMode req_mode);
-u32 CARD_GetBackupSectorSize(void);;
+u32 CARD_GetBackupSectorSize(void);
BOOL CARD_IdentifyBackup(CARDBackupType type);
BOOL CARD_WaitBackupAsync(void);
BOOL CARD_TryWaitBackupAsync(void);
diff --git a/arm9/lib/include/CARD_common.h b/arm9/lib/include/CARD_common.h
index 292b9066..d3bc5fea 100644
--- a/arm9/lib/include/CARD_common.h
+++ b/arm9/lib/include/CARD_common.h
@@ -6,6 +6,10 @@
#include "OS_system.h"
#include "MI_dma.h"
+#define CARD_PXI_COMMAND_MASK 0x3f
+#define CARD_PXI_COMMAND_PULLED_OUT 0x0011
+#define CARD_PXI_COMMAND_TERMINATE 0x0001
+
#define CARD_THREAD_PRIORITY_DEFAULT 4
#define CARD_BACKUP_TYPE_DEVICE_SHIFT 0
diff --git a/arm9/lib/include/CARD_pullOut.h b/arm9/lib/include/CARD_pullOut.h
index be49b95d..bfc0e6d2 100644
--- a/arm9/lib/include/CARD_pullOut.h
+++ b/arm9/lib/include/CARD_pullOut.h
@@ -1,8 +1,13 @@
-#ifndef NITRO_CARD_PULLOUT_H_
-#define NITRO_CARD_PULLOUT_H_
+#ifndef POKEDIAMOND_CARD_PULLOUT_H
+#define POKEDIAMOND_CARD_PULLOUT_H
#include "nitro/types.h"
+typedef BOOL (*CARDPulledOutCallback) (void);
+
+void CARD_InitPulledOutCallback(void);
BOOL CARD_IsPulledOut(void);
+void CARD_TerminateForPulledOut(void);
+void CARDi_CheckPulledOutCore(u32 id);
-#endif //NITRO_CARD_PULLOUT_H_
+#endif //POKEDIAMOND_CARD_PULLOUT_H
diff --git a/arm9/lib/include/PAD_pad.h b/arm9/lib/include/PAD_pad.h
index 327d306d..a4b5d570 100644
--- a/arm9/lib/include/PAD_pad.h
+++ b/arm9/lib/include/PAD_pad.h
@@ -1,6 +1,7 @@
#ifndef NITRO_PAD_PAD_H_
#define NITRO_PAD_PAD_H_
+#include "consts.h"
//================================================================================
// BUTTONS
diff --git a/arm9/lib/include/PXI_fifo.h b/arm9/lib/include/PXI_fifo.h
index 45caa906..becba32e 100644
--- a/arm9/lib/include/PXI_fifo.h
+++ b/arm9/lib/include/PXI_fifo.h
@@ -3,4 +3,14 @@
#include "nitro/PXI_fifo_shared.h"
+typedef enum
+{
+ PXI_FIFO_SUCCESS = 0,
+ PXI_FIFO_FAIL_SEND_ERR = -1,
+ PXI_FIFO_FAIL_SEND_FULL = -2,
+ PXI_FIFO_FAIL_RECV_ERR = -3,
+ PXI_FIFO_FAIL_RECV_EMPTY = -4,
+ PXI_FIFO_NO_CALLBACK_ENTRY = -5
+} PXIFifoStatus;
+
#endif //POKEDIAMOND_ARM9_PXI_FIFO_H
diff --git a/arm9/lib/include/SPI_pm.h b/arm9/lib/include/SPI_pm.h
index a5957f74..95f94f24 100644
--- a/arm9/lib/include/SPI_pm.h
+++ b/arm9/lib/include/SPI_pm.h
@@ -31,7 +31,7 @@ PMLCDTarget;
void PM_GetBackLight(PMBackLightSwitch * top, PMBackLightSwitch * bottom);
void PM_GoSleepMode(PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern);
u32 PM_SetBackLight(PMLCDTarget target, PMBackLightSwitch status);
-void PM_ForceToPowerOff(void);
+u32 PM_ForceToPowerOff(void);
void PM_SetAmp(int gain);
void PM_SetAmpGain(int gain);
diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h
index afe1b726..7c56a9a3 100644
--- a/arm9/lib/include/consts.h
+++ b/arm9/lib/include/consts.h
@@ -48,4 +48,6 @@
#define OS_IE_V_BLANK (1UL << 0)
+#define HW_CPU_CLOCK_ARM9 67027964
+
#endif //POKEDIAMOND_ARM9_CONSTS_H
diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h
index 027259ad..de5a8057 100644
--- a/arm9/lib/include/mmap.h
+++ b/arm9/lib/include/mmap.h
@@ -29,7 +29,9 @@ extern u32 SDK_AUTOLOAD_DTCM_START[];
#define HW_CARD_ROM_HEADER_SIZE 0x00000160
#define HW_DOWNLOAD_PARAMETER_SIZE 0x00000020
+#define HW_CHECK_DEBUGGER_SW 0x027ffc10
#define HW_CARD_ROM_HEADER (HW_MAIN_MEM + 0x007ffa80)
+#define HW_BOOT_CHECK_INFO_BUF (HW_MAIN_MEM + 0x007ffc00)
#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20)
#define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM + 0x007ffc2c)
#define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer
diff --git a/arm9/lib/src/CARD_pullOut.c b/arm9/lib/src/CARD_pullOut.c
new file mode 100644
index 00000000..40f58f2f
--- /dev/null
+++ b/arm9/lib/src/CARD_pullOut.c
@@ -0,0 +1,107 @@
+#include "function_target.h"
+#include "CARD_common.h"
+#include "CARD_pullOut.h"
+#include "PXI_init.h"
+#include "PXI_fifo.h"
+#include "OS_terminate_proc.h"
+#include "OS_system.h"
+#include "PAD_pad.h"
+#include "SPI_pm.h"
+#include "syscall.h"
+
+static CARDPulledOutCallback CARD_UserCallback;
+static BOOL CARDi_IsPulledOutFlag = FALSE;
+
+extern void PXI_SetFifoRecvCallback(u32 param1, void* callback);
+extern u32 PXI_SendWordByFifo(u32 param1, u32 data, u32 param2);
+
+static void CARDi_PulledOutCallback(PXIFifoTag tag, u32 data, BOOL err);
+static void CARDi_SendtoPxi(u32 data, u32 wait);
+
+ARM_FUNC void CARD_InitPulledOutCallback(void)
+{
+ PXI_Init();
+
+ PXI_SetFifoRecvCallback(PXI_FIFO_TAG_CARD, CARDi_PulledOutCallback);
+
+ CARD_UserCallback = NULL;
+}
+
+ARM_FUNC static void CARDi_PulledOutCallback(PXIFifoTag tag, u32 data, BOOL err)
+{
+#pragma unused(tag, err)
+ u32 command = data & CARD_PXI_COMMAND_MASK;
+
+ if (command == CARD_PXI_COMMAND_PULLED_OUT)
+ {
+ if (!CARDi_IsPulledOutFlag)
+ {
+ BOOL isTerminateImm = TRUE;
+ CARDi_IsPulledOutFlag = TRUE;
+
+ if (CARD_UserCallback)
+ {
+ isTerminateImm = CARD_UserCallback();
+ }
+
+ if (isTerminateImm)
+ {
+ CARD_TerminateForPulledOut();
+ }
+ }
+ }
+ else
+ {
+ OS_Terminate();
+ }
+}
+
+ARM_FUNC BOOL CARD_IsPulledOut(void)
+{
+ return CARDi_IsPulledOutFlag;
+}
+
+ARM_FUNC void CARD_TerminateForPulledOut(void)
+{
+ BOOL should_be_halt = TRUE;
+
+ if (PAD_DetectFold())
+ {
+ u32 res;
+ while ((res = PM_ForceToPowerOff()) == 0x04)
+ {
+ OS_SpinWait(HW_CPU_CLOCK_ARM9 / 100);
+ }
+ if (res == 0)
+ {
+ should_be_halt = FALSE;
+ }
+ }
+
+ if (should_be_halt)
+ {
+ CARDi_SendtoPxi(CARD_PXI_COMMAND_TERMINATE, 1);
+ }
+
+ OS_Terminate();
+}
+
+ARM_FUNC void CARDi_CheckPulledOutCore(u32 id)
+{
+ vu32 iplCardID = *(vu32 *)((*(u16 *)HW_CHECK_DEBUGGER_SW == 0) ? HW_RED_RESERVED : HW_BOOT_CHECK_INFO_BUF);
+
+ if (id != (u32)iplCardID)
+ {
+ OSIntrMode bak_cpsr = OS_DisableInterrupts();
+ CARDi_PulledOutCallback(PXI_FIFO_TAG_CARD, CARD_PXI_COMMAND_PULLED_OUT, FALSE);
+ (void)OS_RestoreInterrupts(bak_cpsr);
+ }
+}
+
+ARM_FUNC static void CARDi_SendtoPxi(u32 data, u32 wait)
+{
+ while (PXI_SendWordByFifo(PXI_FIFO_TAG_CARD, data, FALSE) != PXI_FIFO_SUCCESS)
+ {
+ SVC_WaitByLoop((u32)wait);
+ }
+}
diff --git a/arm9/modules/05/asm/mod05_021E52A8.s b/arm9/modules/05/asm/mod05_021E52A8.s
new file mode 100644
index 00000000..904f963e
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E52A8.s
@@ -0,0 +1,54 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E52A8
+MOD05_021E52A8: ; 0x021E52A8
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #0x60
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4]
+ bl MOD05_021E52D4
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E52C4
+MOD05_021E52C4: ; 0x021E52C4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E52F4
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E52D4
+MOD05_021E52D4: ; 0x021E52D4
+ push {r3, lr}
+ sub sp, #8
+ add r3, r0, #0
+ add r0, #0x58
+ str r0, [sp]
+ add r0, r3, #0
+ add r0, #0x5c
+ str r0, [sp, #4]
+ ldr r0, [r3]
+ mov r1, #0x11
+ mov r2, #0
+ add r3, r3, #4
+ bl MOD05_021E51EC
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E52F4
+MOD05_021E52F4: ; 0x021E52F4
+ ldr r3, _021E52FC ; =MOD05_021E4C00
+ ldr r0, [r0, #0x5c]
+ bx r3
+ nop
+_021E52FC: .word MOD05_021E4C00
diff --git a/arm9/modules/05/asm/mod05_021E5300.s b/arm9/modules/05/asm/mod05_021E5300.s
new file mode 100644
index 00000000..fb21c616
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E5300.s
@@ -0,0 +1,326 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5300
+MOD05_021E5300: ; 0x021E5300
+ push {r3, r4, r5, lr}
+ mov r1, #0xbe
+ mov r2, #0
+ lsl r1, r1, #4
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4]
+ bl MOD05_021E532C
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E531C
+MOD05_021E531C: ; 0x021E531C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E5398
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E532C
+MOD05_021E532C: ; 0x021E532C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r1, _021E5390 ; =0x00000B5C
+ str r0, [sp, #8]
+ add r6, r0, r1
+ sub r1, #0x84
+ mov r4, #0
+ add r5, r0, r1
+ add r7, r0, #4
+_021E533E:
+ str r5, [sp]
+ ldr r0, [sp, #8]
+ str r6, [sp, #4]
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r1, #0x1a
+ mov r2, #0
+ add r3, r7, #0
+ bl MOD05_021E51EC
+ add r4, r4, #1
+ add r6, r6, #4
+ add r5, r5, #4
+ add r7, #0x54
+ cmp r4, #0x20
+ blt _021E533E
+ ldr r2, _021E5394 ; =0x00000AD8
+ ldr r1, [sp, #8]
+ lsl r0, r4, #2
+ add r1, r1, r2
+ add r1, r1, r0
+ str r1, [sp]
+ ldr r1, [sp, #8]
+ add r2, #0x84
+ add r1, r1, r2
+ add r0, r1, r0
+ ldr r3, [sp, #8]
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ add r5, r3, #4
+ mov r3, #0x54
+ mul r3, r4
+ ldr r0, [r0]
+ mov r1, #0x19
+ mov r2, #0
+ add r3, r5, r3
+ bl MOD05_021E51EC
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E5390: .word 0x00000B5C
+_021E5394: .word 0x00000AD8
+
+ thumb_func_start MOD05_021E5398
+MOD05_021E5398: ; 0x021E5398
+ push {r4, r5, r6, lr}
+ ldr r6, _021E53B0 ; =0x00000B5C
+ add r5, r0, #0
+ mov r4, #0
+_021E53A0:
+ ldr r0, [r5, r6]
+ bl MOD05_021E4C00
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x21
+ blt _021E53A0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E53B0: .word 0x00000B5C
+
+ thumb_func_start MOD05_021E53B4
+MOD05_021E53B4: ; 0x021E53B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r0, [r5, #0x3c]
+ add r4, r1, #0
+ mov r1, #3
+ add r6, r2, #0
+ add r7, r3, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0x24]
+ bl MOD05_021E4C08
+ str r0, [sp, #0x28]
+ mov r0, #9
+ mov r3, #0
+ lsl r1, r4, #0x10
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ str r0, [sp, #0x14]
+ str r4, [sp, #0x18]
+ str r6, [sp, #0x1c]
+ str r5, [sp, #0x20]
+ str r3, [sp, #0x10]
+ add r0, sp, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ ldr r1, _021E541C ; =UNK05_021F757C
+ add r2, sp, #0xc
+ bl MOD05_021E4DC4
+ add r5, r0, #0
+ beq _021E5416
+ bl FUN_02064738
+ add r4, r0, #0
+ ldr r0, [sp, #0x40]
+ str r0, [r4, #0x54]
+ add r0, r7, #0
+ bl _fflt
+ str r0, [r4, #0x58]
+ add r0, r7, #0
+ bl _fflt
+ str r0, [r4, #0x5c]
+_021E5416:
+ add r0, r5, #0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E541C: .word UNK05_021F757C
+
+ thumb_func_start MOD05_021E5420
+MOD05_021E5420: ; 0x021E5420
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x18]
+ add r5, r3, #0
+ str r4, [sp]
+ bl MOD05_021E53B4
+ add r6, r0, #0
+ beq _021E5444
+ bl FUN_02064738
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [r4, #0x58]
+ add r0, r5, #0
+ bl _fflt
+ str r0, [r4, #0x5c]
+_021E5444:
+ add r0, r6, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E544C
+MOD05_021E544C: ; 0x021E544C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0206475C
+ add r3, r0, #0
+ add r2, r4, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x6c
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r0, #0x10
+ mov r0, #9
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r4, #0x70]
+ add r1, sp, #0
+ lsl r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ bl FUN_0206476C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5490
+MOD05_021E5490: ; 0x021E5490
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5494
+MOD05_021E5494: ; 0x021E5494
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x58]
+ ldr r1, [r4, #0x5c]
+ bl _fls
+ bhs _021E54B6
+ ldr r0, [r4, #0x58]
+ bl _f2d
+ ldr r2, _021E54B8 ; =0x9999999A
+ ldr r3, _021E54BC ; =0x3FC99999
+ bl _dadd
+ bl _d2f
+ str r0, [r4, #0x58]
+_021E54B6:
+ pop {r4, pc}
+ .balign 4, 0
+_021E54B8: .word 0x9999999A
+_021E54BC: .word 0x3FC99999
+
+ thumb_func_start MOD05_021E54C0
+MOD05_021E54C0: ; 0x021E54C0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x3c
+ ldr r5, _021E555C ; =UNK05_021F7570
+ add r2, r0, #0
+ add r4, r1, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x24
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ ldr r6, _021E5560 ; =UNK05_021F7590
+ str r0, [r3]
+ add r5, sp, #0
+ mov r3, #4
+_021E54DA:
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ sub r3, r3, #1
+ bne _021E54DA
+ ldr r0, [r6]
+ add r1, sp, #0x30
+ str r0, [r5]
+ add r0, r2, #0
+ bl FUN_0206477C
+ ldr r0, [sp, #0x24]
+ bl _fflt
+ ldr r1, [r4, #0x58]
+ bl _fmul
+ bl _ffix
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x28]
+ bl _fflt
+ ldr r1, [r4, #0x58]
+ bl _fmul
+ bl _ffix
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x2c]
+ bl _fflt
+ ldr r1, [r4, #0x58]
+ bl _fmul
+ bl _ffix
+ str r0, [sp, #0x2c]
+ mov r0, #2
+ ldr r1, [sp, #0x30]
+ lsl r0, r0, #0xa
+ sub r1, r1, r0
+ str r1, [sp, #0x30]
+ ldr r1, [sp, #0x34]
+ lsl r0, r0, #1
+ sub r0, r1, r0
+ str r0, [sp, #0x34]
+ mov r0, #5
+ ldr r1, [sp, #0x38]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ ldr r0, [r4, #0x7c]
+ ldr r1, [r4, #0x54]
+ add r2, r0, #4
+ mov r0, #0x54
+ mul r0, r1
+ add r0, r2, r0
+ add r1, sp, #0x30
+ add r2, sp, #0
+ add r3, sp, #0x24
+ bl FUN_0201B26C
+ add sp, #0x3c
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E555C: .word UNK05_021F7570
+_021E5560: .word UNK05_021F7590
+
+ .section .rodata
+
+ .global UNK05_021F7570
+UNK05_021F7570: ; 0x021F7570
+ .word 0x00001000, 0x00001000, 0x00001000
+
+ .global UNK05_021F757C
+UNK05_021F757C: ; 0x021F757C
+ .word 0x00000080, MOD05_021E544C, MOD05_021E5490, MOD05_021E5494
+ .word MOD05_021E54C0
+
+ .global UNK05_021F7590
+UNK05_021F7590: ; 0x021F7590
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000
diff --git a/arm9/modules/05/asm/mod05_021E5564.s b/arm9/modules/05/asm/mod05_021E5564.s
new file mode 100644
index 00000000..070b5184
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E5564.s
@@ -0,0 +1,54 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5564
+MOD05_021E5564: ; 0x021E5564
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #0x60
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4]
+ bl MOD05_021E5590
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5580
+MOD05_021E5580: ; 0x021E5580
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E55B0
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5590
+MOD05_021E5590: ; 0x021E5590
+ push {r3, lr}
+ sub sp, #8
+ add r3, r0, #0
+ add r0, #0x58
+ str r0, [sp]
+ add r0, r3, #0
+ add r0, #0x5c
+ str r0, [sp, #4]
+ ldr r0, [r3]
+ mov r1, #0x15
+ mov r2, #0
+ add r3, r3, #4
+ bl MOD05_021E51EC
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E55B0
+MOD05_021E55B0: ; 0x021E55B0
+ ldr r3, _021E55B8 ; =MOD05_021E4C00
+ ldr r0, [r0, #0x5c]
+ bx r3
+ nop
+_021E55B8: .word MOD05_021E4C00
diff --git a/arm9/modules/05/asm/mod05_021E55BC.s b/arm9/modules/05/asm/mod05_021E55BC.s
new file mode 100644
index 00000000..43186ebe
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E55BC.s
@@ -0,0 +1,251 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E55BC
+MOD05_021E55BC: ; 0x021E55BC
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #0x6c
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4, #8]
+ bl MOD05_021E55E8
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E55D8
+MOD05_021E55D8: ; 0x021E55D8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E5608
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E55E8
+MOD05_021E55E8: ; 0x021E55E8
+ push {r3, lr}
+ sub sp, #8
+ add r3, r0, #0
+ add r0, #0x60
+ str r0, [sp]
+ add r0, r3, #0
+ add r0, #0x64
+ str r0, [sp, #4]
+ ldr r0, [r3, #8]
+ mov r1, #0x16
+ mov r2, #0
+ add r3, #0xc
+ bl MOD05_021E51EC
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E5608
+MOD05_021E5608: ; 0x021E5608
+ ldr r3, _021E5610 ; =MOD05_021E4C00
+ ldr r0, [r0, #0x64]
+ bx r3
+ nop
+_021E5610: .word MOD05_021E4C00
+
+ thumb_func_start MOD05_021E5614
+MOD05_021E5614: ; 0x021E5614
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ bl MOD05_021E4C24
+ add r4, r0, #0
+ mov r1, #5
+ str r4, [sp, #0x14]
+ bl MOD05_021E4C08
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ add r1, sp, #8
+ str r5, [sp, #0x1c]
+ bl FUN_02058B5C
+ add r0, sp, #0x14
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r1, _021E564C ; =UNK05_021F75C0
+ add r0, r4, #0
+ add r2, sp, #8
+ mov r3, #0
+ bl MOD05_021E4DC4
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E564C: .word UNK05_021F75C0
+
+ thumb_func_start MOD05_021E5650
+MOD05_021E5650: ; 0x021E5650
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0206475C
+ add r3, r0, #0
+ add r2, r4, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x30
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #0x38]
+ bl FUN_02058448
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x38]
+ bl FUN_02058450
+ str r0, [r4, #0xc]
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x38]
+ add r1, sp, #0
+ bl FUN_02058B5C
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0206476C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5698
+MOD05_021E5698: ; 0x021E5698
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E569C
+MOD05_021E569C: ; 0x021E569C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldr r6, [r4, #0x38]
+ ldr r1, [r4, #8]
+ add r5, r0, #0
+ ldr r2, [r4, #0xc]
+ add r0, r6, #0
+ bl FUN_020582A8
+ cmp r0, #0
+ bne _021E56B8
+ bl ErrorHandling
+_021E56B8:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E56C8
+ cmp r0, #1
+ beq _021E56E6
+ add sp, #0xc
+ cmp r0, #2
+ pop {r3, r4, r5, r6, pc}
+_021E56C8:
+ add r0, r6, #0
+ add r1, sp, #0
+ bl FUN_02058B5C
+ mov r0, #0xa
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0206476C
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_021E56E6:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ cmp r0, #0x1e
+ blt _021E56F6
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E56F6:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E56FC
+MOD05_021E56FC: ; 0x021E56FC
+ push {r4, r5, r6, lr}
+ sub sp, #0x60
+ ldr r5, _021E5774 ; =UNK05_021F75B4
+ add r2, r0, #0
+ add r4, r1, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x48
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ ldr r6, _021E5778 ; =UNK05_021F75D4
+ str r0, [r3]
+ add r5, sp, #0x24
+ mov r3, #4
+_021E5716:
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ sub r3, r3, #1
+ bne _021E5716
+ ldr r0, [r6]
+ add r1, sp, #0x54
+ str r0, [r5]
+ add r0, r2, #0
+ bl FUN_0206477C
+ mov r0, #0x19
+ ldr r1, [sp, #0x58]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x58]
+ mov r0, #5
+ ldr r1, [sp, #0x5c]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #0x5c]
+ bl FUN_020B8344
+ mov r2, #0
+ add r5, r0, #0
+ add r0, sp, #0x24
+ mov r1, #0x5a
+ add r3, r2, #0
+ bl FUN_0201CB20
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MI_Copy36B
+ add r0, sp, #0x24
+ add r1, sp, #0
+ add r2, r0, #0
+ bl MTX_Concat33
+ ldr r0, [r4, #0x34]
+ add r1, sp, #0x54
+ add r0, #0xc
+ add r2, sp, #0x24
+ add r3, sp, #0x48
+ bl FUN_0201B2A8
+ add sp, #0x60
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E5774: .word UNK05_021F75B4
+_021E5778: .word UNK05_021F75D4
+
+ .section .rodata
+
+ .global UNK05_021F75B4
+UNK05_021F75B4: ; 0x021F75B4
+ .word 0x00001000, 0x00001000, 0x00001000
+
+ .global UNK05_021F75C0
+UNK05_021F75C0: ; 0x021F75C0
+ .word 0x0000003C, MOD05_021E5650, MOD05_021E5698, MOD05_021E569C
+ .word MOD05_021E56FC
+
+ .global UNK05_021F75D4
+UNK05_021F75D4: ; 0x021F75D4
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000
diff --git a/arm9/modules/05/asm/mod05_021E577C.s b/arm9/modules/05/asm/mod05_021E577C.s
new file mode 100644
index 00000000..bf86c095
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E577C.s
@@ -0,0 +1,230 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E577C
+MOD05_021E577C: ; 0x021E577C
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #0x6c
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4, #8]
+ bl MOD05_021E57A8
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5798
+MOD05_021E5798: ; 0x021E5798
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E57C8
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E57A8
+MOD05_021E57A8: ; 0x021E57A8
+ push {r3, lr}
+ sub sp, #8
+ add r3, r0, #0
+ add r0, #0x60
+ str r0, [sp]
+ add r0, r3, #0
+ add r0, #0x64
+ str r0, [sp, #4]
+ ldr r0, [r3, #8]
+ mov r1, #0x17
+ mov r2, #0
+ add r3, #0xc
+ bl MOD05_021E51EC
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E57C8
+MOD05_021E57C8: ; 0x021E57C8
+ ldr r3, _021E57D0 ; =MOD05_021E4C00
+ ldr r0, [r0, #0x64]
+ bx r3
+ nop
+_021E57D0: .word MOD05_021E4C00
+
+ thumb_func_start MOD05_021E57D4
+MOD05_021E57D4: ; 0x021E57D4
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ bl MOD05_021E4C24
+ add r4, r0, #0
+ mov r1, #6
+ str r4, [sp, #0x14]
+ bl MOD05_021E4C08
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ add r1, sp, #8
+ str r5, [sp, #0x1c]
+ bl FUN_02058B5C
+ add r0, sp, #0x14
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r1, _021E580C ; =UNK05_021F7604
+ add r0, r4, #0
+ add r2, sp, #8
+ mov r3, #0
+ bl MOD05_021E4DC4
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E580C: .word UNK05_021F7604
+
+ thumb_func_start MOD05_021E5810
+MOD05_021E5810: ; 0x021E5810
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0206475C
+ add r3, r0, #0
+ add r2, r4, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x30
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #0x38]
+ bl FUN_02058448
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x38]
+ bl FUN_02058450
+ str r0, [r4, #0xc]
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x38]
+ add r1, sp, #0
+ bl FUN_02058B5C
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0206476C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5858
+MOD05_021E5858: ; 0x021E5858
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E585C
+MOD05_021E585C: ; 0x021E585C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r2, r1, #0
+ ldr r5, [r2, #0x38]
+ ldr r1, [r2, #8]
+ add r4, r0, #0
+ ldr r2, [r2, #0xc]
+ add r0, r5, #0
+ bl FUN_020582A8
+ cmp r0, #0
+ bne _021E5878
+ bl ErrorHandling
+_021E5878:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_02058B5C
+ mov r0, #0xa
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_0206476C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5898
+MOD05_021E5898: ; 0x021E5898
+ push {r4, r5, r6, lr}
+ sub sp, #0x60
+ ldr r5, _021E5910 ; =UNK05_021F75F8
+ add r2, r0, #0
+ add r4, r1, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x48
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ ldr r6, _021E5914 ; =UNK05_021F7618
+ str r0, [r3]
+ add r5, sp, #0x24
+ mov r3, #4
+_021E58B2:
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ sub r3, r3, #1
+ bne _021E58B2
+ ldr r0, [r6]
+ add r1, sp, #0x54
+ str r0, [r5]
+ add r0, r2, #0
+ bl FUN_0206477C
+ mov r0, #0x19
+ ldr r1, [sp, #0x58]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x58]
+ mov r0, #5
+ ldr r1, [sp, #0x5c]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #0x5c]
+ bl FUN_020B8344
+ mov r2, #0
+ add r5, r0, #0
+ add r0, sp, #0x24
+ mov r1, #0x5a
+ add r3, r2, #0
+ bl FUN_0201CB20
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MI_Copy36B
+ add r0, sp, #0x24
+ add r1, sp, #0
+ add r2, r0, #0
+ bl MTX_Concat33
+ ldr r0, [r4, #0x34]
+ add r1, sp, #0x54
+ add r0, #0xc
+ add r2, sp, #0x24
+ add r3, sp, #0x48
+ bl FUN_0201B2A8
+ add sp, #0x60
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E5910: .word UNK05_021F75F8
+_021E5914: .word UNK05_021F7618
+
+ .section .rodata
+
+ .global UNK05_021F75F8
+UNK05_021F75F8: ; 0x021F75F8
+ .word 0x00001000, 0x00001000, 0x00001000
+
+ .global UNK05_021F7604
+UNK05_021F7604: ; 0x021F7604
+ .word 0x0000003C, MOD05_021E5810, MOD05_021E5858, MOD05_021E585C
+ .word MOD05_021E5898
+
+ .global UNK05_021F7618
+UNK05_021F7618: ; 0x021F7618
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000
diff --git a/arm9/modules/05/asm/mod05_021E5918.s b/arm9/modules/05/asm/mod05_021E5918.s
new file mode 100644
index 00000000..0322f00e
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E5918.s
@@ -0,0 +1,232 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5918
+MOD05_021E5918: ; 0x021E5918
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #0x6c
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4, #8]
+ bl MOD05_021E5944
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5934
+MOD05_021E5934: ; 0x021E5934
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E5964
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5944
+MOD05_021E5944: ; 0x021E5944
+ push {r3, lr}
+ sub sp, #8
+ add r3, r0, #0
+ add r0, #0x60
+ str r0, [sp]
+ add r0, r3, #0
+ add r0, #0x64
+ str r0, [sp, #4]
+ ldr r0, [r3, #8]
+ mov r1, #0x18
+ mov r2, #0
+ add r3, #0xc
+ bl MOD05_021E51EC
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E5964
+MOD05_021E5964: ; 0x021E5964
+ ldr r3, _021E596C ; =MOD05_021E4C00
+ ldr r0, [r0, #0x64]
+ bx r3
+ nop
+_021E596C: .word MOD05_021E4C00
+
+ thumb_func_start MOD05_021E5970
+MOD05_021E5970: ; 0x021E5970
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ bl MOD05_021E4C24
+ add r4, r0, #0
+ mov r1, #7
+ str r4, [sp, #0x14]
+ bl MOD05_021E4C08
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ add r1, sp, #8
+ str r5, [sp, #0x1c]
+ bl FUN_02058B5C
+ add r0, sp, #0x14
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r1, _021E59A8 ; =UNK05_021F7648
+ add r0, r4, #0
+ add r2, sp, #8
+ mov r3, #0
+ bl MOD05_021E4DC4
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E59A8: .word UNK05_021F7648
+
+ thumb_func_start MOD05_021E59AC
+MOD05_021E59AC: ; 0x021E59AC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0206475C
+ add r3, r0, #0
+ add r2, r4, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x34
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #0x3c]
+ bl FUN_02058448
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x3c]
+ bl FUN_02058450
+ str r0, [r4, #0xc]
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B5C
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0206476C
+ mov r0, #0x3c
+ str r0, [r4, #0x30]
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E59F8
+MOD05_021E59F8: ; 0x021E59F8
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E59FC
+MOD05_021E59FC: ; 0x021E59FC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r2, [r1, #0x30]
+ add r4, r0, #0
+ cmp r2, #0
+ beq _021E5A0E
+ sub r0, r2, #1
+ str r0, [r1, #0x30]
+ b _021E5A16
+_021E5A0E:
+ bl MOD05_021E4DE4
+ add sp, #0xc
+ pop {r3, r4, pc}
+_021E5A16:
+ ldr r0, [r1, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B5C
+ mov r0, #0xa
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_0206476C
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD05_021E5A34
+MOD05_021E5A34: ; 0x021E5A34
+ push {r4, r5, r6, lr}
+ sub sp, #0x60
+ ldr r5, _021E5AAC ; =UNK05_021F763C
+ add r2, r0, #0
+ add r4, r1, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x48
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ ldr r6, _021E5AB0 ; =UNK05_021F765C
+ str r0, [r3]
+ add r5, sp, #0x24
+ mov r3, #4
+_021E5A4E:
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ sub r3, r3, #1
+ bne _021E5A4E
+ ldr r0, [r6]
+ add r1, sp, #0x54
+ str r0, [r5]
+ add r0, r2, #0
+ bl FUN_0206477C
+ mov r0, #0x19
+ ldr r1, [sp, #0x58]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x58]
+ mov r0, #5
+ ldr r1, [sp, #0x5c]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #0x5c]
+ bl FUN_020B8344
+ mov r2, #0
+ add r5, r0, #0
+ add r0, sp, #0x24
+ mov r1, #0x5a
+ add r3, r2, #0
+ bl FUN_0201CB20
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MI_Copy36B
+ add r0, sp, #0x24
+ add r1, sp, #0
+ add r2, r0, #0
+ bl MTX_Concat33
+ ldr r0, [r4, #0x38]
+ add r1, sp, #0x54
+ add r0, #0xc
+ add r2, sp, #0x24
+ add r3, sp, #0x48
+ bl FUN_0201B2A8
+ add sp, #0x60
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E5AAC: .word UNK05_021F763C
+_021E5AB0: .word UNK05_021F765C
+
+ .section .rodata
+
+ .global UNK05_021F763C
+UNK05_021F763C: ; 0x021F763C
+ .word 0x00001000, 0x00001000, 0x00001000
+
+ .global UNK05_021F7648
+UNK05_021F7648: ; 0x021F7648
+ .word 0x00000040, MOD05_021E59AC, MOD05_021E59F8, MOD05_021E59FC
+ .word MOD05_021E5A34
+
+ .global UNK05_021F765C
+UNK05_021F765C: ; 0x021F765C
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000, 0x00001000, 0x00001000, 0x00001000
diff --git a/arm9/modules/05/asm/mod05_021E5AB4.s b/arm9/modules/05/asm/mod05_021E5AB4.s
new file mode 100644
index 00000000..ff3779f5
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E5AB4.s
@@ -0,0 +1,250 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5AB4
+MOD05_021E5AB4: ; 0x021E5AB4
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #0x38
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4]
+ bl MOD05_021E5AE0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5AD0
+MOD05_021E5AD0: ; 0x021E5AD0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E5B18
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5AE0
+MOD05_021E5AE0: ; 0x021E5AE0
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x28
+ bl MOD05_021E5294
+ ldr r0, [r4]
+ add r1, r4, #4
+ mov r2, #0x3a
+ mov r3, #0
+ bl MOD05_021E5224
+ mov r0, #0x71
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r2, r4, #4
+ add r4, #0x28
+ add r1, #0x14
+ add r3, r4, #0
+ bl MOD05_021E5260
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5B18
+MOD05_021E5B18: ; 0x021E5B18
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r4, #4
+ bl MOD05_021F52C8
+ add r0, r4, #0
+ add r4, #0x28
+ add r0, #0x14
+ add r1, r4, #0
+ bl MOD05_021F5358
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5B30
+MOD05_021E5B30: ; 0x021E5B30
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ ldr r0, [r0, #0x3c]
+ add r5, r1, #0
+ mov r1, #8
+ add r4, r3, #0
+ str r0, [sp, #8]
+ bl MOD05_021E4C08
+ str r0, [sp, #0xc]
+ mov r0, #2
+ lsl r1, r5, #0x10
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ mov r0, #0xa
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ lsl r0, r4, #0x10
+ str r0, [sp, #0x18]
+ add r0, sp, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ ldr r1, _021E5B78 ; =UNK05_021F768C
+ add r2, sp, #0x10
+ mov r3, #0
+ bl MOD05_021E4DC4
+ ldr r0, _021E5B7C ; =0x00000609
+ bl FUN_020054C8
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ nop
+_021E5B78: .word UNK05_021F768C
+_021E5B7C: .word 0x00000609
+
+ thumb_func_start MOD05_021E5B80
+MOD05_021E5B80: ; 0x021E5B80
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ add r5, r1, #0
+ bl FUN_0206475C
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ mov r2, #1
+ str r1, [r5, #4]
+ str r0, [r5, #8]
+ ldr r0, [r5, #4]
+ mov r1, #0x90
+ mov r3, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r4, [r5]
+ ldr r0, [r5, #4]
+ add r1, r4, #4
+ bl MOD05_021E5294
+ ldr r2, [r5, #8]
+ add r0, r4, #4
+ ldr r1, [r2, #0x18]
+ ldr r2, [r2, #0xc]
+ bl FUN_020BB8D0
+ str r0, [r4]
+ ldr r3, [r5, #8]
+ ldr r1, [r3, #0x18]
+ ldr r2, [r3, #0xc]
+ ldr r3, [r3, #0x10]
+ bl FUN_020B8110
+ ldr r1, [r5, #8]
+ add r0, r4, #0
+ add r0, #0x18
+ add r1, r1, #4
+ bl MOD05_021F5400
+ add r0, r4, #0
+ ldr r1, [r4]
+ add r0, #0x18
+ bl FUN_020B7EFC
+ add r0, r6, #0
+ add r1, sp, #0
+ bl FUN_0206477C
+ add r4, #0x18
+ ldr r1, [sp]
+ ldr r2, [sp, #4]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD05_021F54D0
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E5BF8
+MOD05_021E5BF8: ; 0x021E5BF8
+ push {r4, lr}
+ ldr r4, [r1]
+ ldr r1, [r4]
+ add r0, r4, #4
+ bl thunk_FUN_020ae84c
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5C0C
+MOD05_021E5C0C: ; 0x021E5C0C
+ push {r4, lr}
+ ldr r1, [r1]
+ ldr r2, [r1]
+ ldr r3, [r1, #0x14]
+ ldr r2, [r2, #8]
+ ldrh r2, [r2, #4]
+ lsl r4, r2, #0xc
+ mov r2, #1
+ lsl r2, r2, #0xc
+ add r2, r3, r2
+ str r2, [r1, #0x14]
+ cmp r2, r4
+ ble _021E5C2C
+ bl MOD05_021E4DE4
+ pop {r4, pc}
+_021E5C2C:
+ ldr r0, [r1]
+ str r2, [r0]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5C34
+MOD05_021E5C34: ; 0x021E5C34
+ push {r3, r4, r5, lr}
+ sub sp, #0x48
+ ldr r4, [r1]
+ ldr r5, _021E5C88 ; =UNK05_021F76A0
+ add r3, sp, #0x24
+ mov r2, #4
+_021E5C40:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021E5C40
+ ldr r0, [r5]
+ str r0, [r3]
+ bl FUN_020B8344
+ mov r2, #0
+ add r5, r0, #0
+ add r0, sp, #0x24
+ mov r1, #0x5a
+ add r3, r2, #0
+ bl FUN_0201CB20
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MI_Copy36B
+ add r0, sp, #0x24
+ add r1, sp, #0
+ add r2, r0, #0
+ bl MTX_Concat33
+ add r0, r4, #0
+ add r1, r4, #0
+ add r4, #0x78
+ add r0, #0x18
+ add r1, #0x6c
+ add r2, sp, #0x24
+ add r3, r4, #0
+ bl FUN_0201B26C
+ add sp, #0x48
+ pop {r3, r4, r5, pc}
+ nop
+_021E5C88: .word UNK05_021F76A0
+
+ .section .rodata
+
+ .global UNK05_021F768C
+UNK05_021F768C: ; 0x021F768C
+ .word 0x0000000C, MOD05_021E5B80, MOD05_021E5BF8, MOD05_021E5C0C
+ .word MOD05_021E5C34
+
+ .global UNK05_021F76A0
+UNK05_021F76A0: ; 0x021F76A0
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
+ .word 0x00001000
diff --git a/arm9/modules/05/asm/mod05_021E5C8C.s b/arm9/modules/05/asm/mod05_021E5C8C.s
new file mode 100644
index 00000000..ab321b6f
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E5C8C.s
@@ -0,0 +1,209 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5C8C
+MOD05_021E5C8C: ; 0x021E5C8C
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #0x3c
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4, #4]
+ bl MOD05_021E5CB8
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5CA8
+MOD05_021E5CA8: ; 0x021E5CA8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E5CF4
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5CB8
+MOD05_021E5CB8: ; 0x021E5CB8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x2c
+ bl MOD05_021E5294
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #8
+ mov r2, #0x5c
+ mov r3, #0
+ bl MOD05_021E5224
+ mov r0, #0x73
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4, #4]
+ add r4, #0x2c
+ add r1, #0x18
+ add r2, #8
+ add r3, r4, #0
+ bl MOD05_021E5260
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5CF4
+MOD05_021E5CF4: ; 0x021E5CF4
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #8
+ bl MOD05_021F52C8
+ add r0, r4, #0
+ add r4, #0x2c
+ add r0, #0x18
+ add r1, r4, #0
+ bl MOD05_021F5358
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5D0C
+MOD05_021E5D0C: ; 0x021E5D0C
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ ldr r0, [r0, #0x3c]
+ add r5, r1, #0
+ mov r1, #9
+ add r4, r2, #0
+ str r0, [sp, #8]
+ bl MOD05_021E4C08
+ str r0, [sp, #0xc]
+ mov r0, #2
+ mov r3, #0
+ lsl r1, r5, #0x10
+ lsl r0, r0, #0xe
+ add r1, r1, r0
+ str r1, [sp, #0x10]
+ lsl r1, r4, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x18]
+ str r3, [sp, #0x14]
+ add r0, sp, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ ldr r1, _021E5D4C ; =UNK05_021F76C4
+ add r2, sp, #0x10
+ bl MOD05_021E4DC4
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ nop
+_021E5D4C: .word UNK05_021F76C4
+
+ thumb_func_start MOD05_021E5D50
+MOD05_021E5D50: ; 0x021E5D50
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ add r5, r1, #0
+ bl FUN_0206475C
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ mov r2, #1
+ str r1, [r5, #4]
+ str r0, [r5, #8]
+ ldr r0, [r5, #4]
+ mov r1, #0x90
+ mov r3, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r4, [r5]
+ ldr r0, [r5, #4]
+ add r1, r4, #4
+ bl MOD05_021E5294
+ ldr r2, [r5, #8]
+ add r0, r4, #4
+ ldr r1, [r2, #0x1c]
+ ldr r2, [r2, #0x10]
+ bl FUN_020BB8D0
+ str r0, [r4]
+ ldr r3, [r5, #8]
+ ldr r1, [r3, #0x1c]
+ ldr r2, [r3, #0x10]
+ ldr r3, [r3, #0x14]
+ bl FUN_020B8110
+ ldr r1, [r5, #8]
+ add r0, r4, #0
+ add r0, #0x18
+ add r1, #8
+ bl MOD05_021F5400
+ add r0, r4, #0
+ ldr r1, [r4]
+ add r0, #0x18
+ bl FUN_020B7EFC
+ add r0, r6, #0
+ add r1, sp, #0
+ bl FUN_0206477C
+ add r4, #0x18
+ ldr r1, [sp]
+ ldr r2, [sp, #4]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD05_021F54D0
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E5DC8
+MOD05_021E5DC8: ; 0x021E5DC8
+ push {r4, lr}
+ ldr r4, [r1]
+ ldr r1, [r4]
+ add r0, r4, #4
+ bl thunk_FUN_020ae84c
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5DDC
+MOD05_021E5DDC: ; 0x021E5DDC
+ push {r4, lr}
+ ldr r1, [r1]
+ ldr r2, [r1]
+ ldr r3, [r1, #0x14]
+ ldr r2, [r2, #8]
+ ldrh r2, [r2, #4]
+ lsl r4, r2, #0xc
+ mov r2, #1
+ lsl r2, r2, #0xc
+ add r2, r3, r2
+ str r2, [r1, #0x14]
+ cmp r2, r4
+ ble _021E5DFC
+ bl MOD05_021E4DE4
+ pop {r4, pc}
+_021E5DFC:
+ ldr r0, [r1]
+ str r2, [r0]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5E04
+MOD05_021E5E04: ; 0x021E5E04
+ ldr r0, [r1]
+ ldr r3, _021E5E0C ; =MOD05_021F5430
+ add r0, #0x18
+ bx r3
+ .balign 4, 0
+_021E5E0C: .word MOD05_021F5430
+
+ .section .rodata
+
+ .global UNK05_021F76C4
+UNK05_021F76C4: ; 0x021F76C4
+ .word 0x0000000C, MOD05_021E5D50, MOD05_021E5DC8, MOD05_021E5DDC
+ .word MOD05_021E5E04
diff --git a/arm9/modules/05/asm/mod05_021E5E10.s b/arm9/modules/05/asm/mod05_021E5E10.s
new file mode 100644
index 00000000..e2e6814e
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E5E10.s
@@ -0,0 +1,245 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5E10
+MOD05_021E5E10: ; 0x021E5E10
+ push {r3, r4, r5, lr}
+ mov r2, #0
+ mov r1, #0x38
+ add r3, r2, #0
+ add r5, r0, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r5, [r4]
+ bl MOD05_021E5E3C
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5E2C
+MOD05_021E5E2C: ; 0x021E5E2C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E5E74
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5E3C
+MOD05_021E5E3C: ; 0x021E5E3C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x28
+ bl MOD05_021E5294
+ ldr r0, [r4]
+ add r1, r4, #4
+ mov r2, #0x5b
+ mov r3, #0
+ bl MOD05_021E5224
+ mov r0, #0x72
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r2, r4, #4
+ add r4, #0x28
+ add r1, #0x14
+ add r3, r4, #0
+ bl MOD05_021E5260
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5E74
+MOD05_021E5E74: ; 0x021E5E74
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r4, #4
+ bl MOD05_021F52C8
+ add r0, r4, #0
+ add r4, #0x28
+ add r0, #0x14
+ add r1, r4, #0
+ bl MOD05_021F5358
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5E8C
+MOD05_021E5E8C: ; 0x021E5E8C
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ bl MOD05_021E4C24
+ mov r1, #0xa
+ str r0, [sp, #8]
+ bl MOD05_021E4C08
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, sp, #0x10
+ bl FUN_02058B5C
+ add r0, r4, #0
+ bl FUN_020584C4
+ cmp r0, #3
+ bhi _021E5EF4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E5EBE: ; jump table
+ .short _021E5EC6 - _021E5EBE - 2 ; case 0
+ .short _021E5ED2 - _021E5EBE - 2 ; case 1
+ .short _021E5EEA - _021E5EBE - 2 ; case 2
+ .short _021E5EDE - _021E5EBE - 2 ; case 3
+_021E5EC6:
+ mov r0, #1
+ ldr r1, [sp, #0x18]
+ lsl r0, r0, #0x10
+ sub r0, r1, r0
+ str r0, [sp, #0x18]
+ b _021E5EF4
+_021E5ED2:
+ mov r0, #1
+ ldr r1, [sp, #0x18]
+ lsl r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x18]
+ b _021E5EF4
+_021E5EDE:
+ mov r0, #1
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ b _021E5EF4
+_021E5EEA:
+ mov r0, #1
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0x10
+ sub r0, r1, r0
+ str r0, [sp, #0x10]
+_021E5EF4:
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_0205829C
+ add r1, sp, #8
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ ldr r1, _021E5F14 ; =UNK05_021F76D8
+ add r2, sp, #0x10
+ mov r3, #0
+ bl MOD05_021E4DC4
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ nop
+_021E5F14: .word UNK05_021F76D8
+
+ thumb_func_start MOD05_021E5F18
+MOD05_021E5F18: ; 0x021E5F18
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ add r5, r1, #0
+ bl FUN_0206475C
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ mov r2, #1
+ str r1, [r5, #4]
+ str r0, [r5, #8]
+ ldr r0, [r5, #4]
+ mov r1, #0x90
+ mov r3, #0
+ bl MOD05_021E4BE8
+ add r4, r0, #0
+ str r4, [r5]
+ ldr r0, [r5, #4]
+ add r1, r4, #4
+ bl MOD05_021E5294
+ ldr r2, [r5, #8]
+ add r0, r4, #4
+ ldr r1, [r2, #0x18]
+ ldr r2, [r2, #0xc]
+ bl FUN_020BB8D0
+ str r0, [r4]
+ ldr r3, [r5, #8]
+ ldr r1, [r3, #0x18]
+ ldr r2, [r3, #0xc]
+ ldr r3, [r3, #0x10]
+ bl FUN_020B8110
+ ldr r1, [r5, #8]
+ add r0, r4, #0
+ add r0, #0x18
+ add r1, r1, #4
+ bl MOD05_021F5400
+ add r0, r4, #0
+ ldr r1, [r4]
+ add r0, #0x18
+ bl FUN_020B7EFC
+ add r0, r6, #0
+ add r1, sp, #0
+ bl FUN_0206477C
+ add r4, #0x18
+ ldr r1, [sp]
+ ldr r2, [sp, #4]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD05_021F54D0
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E5F90
+MOD05_021E5F90: ; 0x021E5F90
+ push {r4, lr}
+ ldr r4, [r1]
+ ldr r1, [r4]
+ add r0, r4, #4
+ bl thunk_FUN_020ae84c
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E5FA4
+MOD05_021E5FA4: ; 0x021E5FA4
+ push {r4, lr}
+ ldr r1, [r1]
+ ldr r2, [r1]
+ ldr r3, [r1, #0x14]
+ ldr r2, [r2, #8]
+ ldrh r2, [r2, #4]
+ lsl r4, r2, #0xc
+ mov r2, #1
+ lsl r2, r2, #0xc
+ add r2, r3, r2
+ str r2, [r1, #0x14]
+ cmp r2, r4
+ ble _021E5FC4
+ bl MOD05_021E4DE4
+ pop {r4, pc}
+_021E5FC4:
+ ldr r0, [r1]
+ str r2, [r0]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5FCC
+MOD05_021E5FCC: ; 0x021E5FCC
+ ldr r0, [r1]
+ ldr r3, _021E5FD4 ; =MOD05_021F5430
+ add r0, #0x18
+ bx r3
+ .balign 4, 0
+_021E5FD4: .word MOD05_021F5430
+
+ .section .rodata
+
+ .global UNK05_021F76D8
+UNK05_021F76D8: ; 0x021F76D8
+ .word 0x0000000C, MOD05_021E5F18, MOD05_021E5F90, MOD05_021E5FA4
+ .word MOD05_021E5FCC
diff --git a/arm9/modules/05/asm/mod05_021E5FD8.s b/arm9/modules/05/asm/mod05_021E5FD8.s
new file mode 100644
index 00000000..8ce2cd0f
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E5FD8.s
@@ -0,0 +1,2471 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E5FD8
+MOD05_021E5FD8: ; 0x021E5FD8
+ ldr r3, _021E5FDC ; =FUN_020553D4
+ bx r3
+ .balign 4, 0
+_021E5FDC: .word FUN_020553D4
+
+ thumb_func_start MOD05_021E5FE0
+MOD05_021E5FE0: ; 0x021E5FE0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0
+ bl FUN_020553E0
+ ldr r5, _021E6010 ; =UNK05_021F7734
+ add r4, r0, #0
+_021E5FEE:
+ mov r0, #1
+ tst r0, r4
+ beq _021E5FFA
+ ldr r1, [r5]
+ add r0, r7, #0
+ blx r1
+_021E5FFA:
+ add r6, r6, #1
+ lsr r4, r4, #1
+ add r5, r5, #4
+ cmp r6, #9
+ blo _021E5FEE
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_020553DC
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E6010: .word UNK05_021F7734
+
+ thumb_func_start MOD05_021E6014
+MOD05_021E6014: ; 0x021E6014
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #0
+ bl FUN_020555A0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E726C
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020553A8
+ add r0, r4, #0
+ bl FUN_02055410
+ add r0, r4, #0
+ bl FUN_02055454
+ cmp r0, #0
+ beq _021E6048
+ bl MOD05_021E4DE4
+_021E6048:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02055450
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6054
+MOD05_021E6054: ; 0x021E6054
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #1
+ bl FUN_020555A0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E726C
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020553A8
+ add r0, r4, #0
+ bl FUN_02055410
+ add r0, r4, #0
+ bl FUN_02055454
+ cmp r0, #0
+ beq _021E6088
+ bl MOD05_021E4DE4
+_021E6088:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02055450
+ ldr r0, _021E6098 ; =0x00000618
+ bl FUN_020054C8
+ pop {r4, pc}
+ .balign 4, 0
+_021E6098: .word 0x00000618
+
+ thumb_func_start MOD05_021E609C
+MOD05_021E609C: ; 0x021E609C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #2
+ bl FUN_020555A0
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD05_021E726C
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_020553A8
+ add r0, r5, #0
+ bl FUN_02055410
+ add r0, r5, #0
+ bl FUN_02055454
+ cmp r0, #0
+ beq _021E60D2
+ bl MOD05_021E4DE4
+_021E60D2:
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02055450
+ add r0, r5, #0
+ bl FUN_020552F8
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_020553A0
+ add r6, r0, #0
+ bl FUN_02058738
+ mov r0, #1
+ mov r1, #0
+ str r0, [sp]
+ add r0, r6, #0
+ add r2, r1, #0
+ add r3, r4, #0
+ bl MOD06_0224ABAC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_02055450
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E610C
+MOD05_021E610C: ; 0x021E610C
+ ldr r3, _021E6114 ; =FUN_020556C8
+ mov r1, #1
+ bx r3
+ nop
+_021E6114: .word FUN_020556C8
+
+ thumb_func_start MOD05_021E6118
+MOD05_021E6118: ; 0x021E6118
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #4
+ bl FUN_020555A0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E726C
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6134
+MOD05_021E6134: ; 0x021E6134
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #6
+ bl FUN_020555A0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E726C
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6150
+MOD05_021E6150: ; 0x021E6150
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #7
+ bl FUN_020555A0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E726C
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E616C
+MOD05_021E616C: ; 0x021E616C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #8
+ bl FUN_020555A0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E726C
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6188
+MOD05_021E6188: ; 0x021E6188
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #9
+ bl FUN_020555A0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E726C
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E61A4
+MOD05_021E61A4: ; 0x021E61A4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r4, r2, #0
+ add r7, r3, #0
+ bl FUN_020556B4
+ cmp r0, #1
+ bne _021E61CE
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD05_021E68D8
+ cmp r0, #1
+ bne _021E61CA
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E61CA:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E61CE:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02055898
+ cmp r0, #0
+ bne _021E61DE
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E61DE:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _021E61FE
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r7, #0
+ bl MOD05_021E628C
+ cmp r0, #1
+ bne _021E61FA
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E61FA:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E61FE:
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r7, #0
+ bl MOD05_021E6218
+ cmp r0, #1
+ bne _021E6212
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E6212:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6218
+MOD05_021E6218: ; 0x021E6218
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r7, r3, #0
+ bl FUN_0205714C
+ str r0, [sp]
+ mov r0, #1
+ tst r0, r7
+ beq _021E6246
+ ldr r3, [sp]
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD05_021E62B4
+ cmp r0, #1
+ bne _021E6246
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E6246:
+ mov r0, #2
+ tst r0, r7
+ beq _021E6260
+ ldr r3, [sp]
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD05_021E6714
+ cmp r0, #1
+ bne _021E6260
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E6260:
+ ldr r3, [sp]
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD05_021E65EC
+ cmp r0, #1
+ bne _021E6274
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E6274:
+ ldr r3, [sp]
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD05_021E6758
+ cmp r0, #1
+ bne _021E6288
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E6288:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E628C
+MOD05_021E628C: ; 0x021E628C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_0205714C
+ add r3, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021E6758
+ cmp r0, #1
+ bne _021E62B0
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E62B0:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E62B4
+MOD05_021E62B4: ; 0x021E62B4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ cmp r3, #1
+ beq _021E62C4
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E62C4:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021E727C
+ add r6, r0, #0
+ bne _021E62D4
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E62D4:
+ bl FUN_02058458
+ cmp r0, #0x54
+ beq _021E62E0
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E62E0:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02059918
+ mov r1, #1
+ bic r0, r1
+ beq _021E62F2
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E62F2:
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ add r3, r6, #0
+ bl MOD05_021E6304
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6304
+MOD05_021E6304: ; 0x021E6304
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0x14
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD05_021E72B8
+ add r2, r0, #0
+ str r5, [r2, #4]
+ str r4, [r2, #8]
+ str r7, [r2, #0x10]
+ ldr r1, _021E6328 ; =MOD05_021E632C
+ add r0, r4, #0
+ str r6, [r2, #0xc]
+ bl FUN_020463CC
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E6328: .word MOD05_021E632C
+
+ thumb_func_start MOD05_021E632C
+MOD05_021E632C: ; 0x021E632C
+ push {r4, r5, r6, lr}
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_020553A0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0x10]
+ cmp r0, #0
+ beq _021E634E
+ cmp r0, #1
+ beq _021E639A
+ cmp r0, #2
+ beq _021E63C0
+ b _021E63CA
+_021E634E:
+ add r0, r5, #0
+ bl FUN_0205AD98
+ cmp r0, #0
+ beq _021E63CA
+ add r0, r6, #0
+ bl FUN_0205AD98
+ cmp r0, #0
+ bne _021E636C
+ ldr r0, [r4, #0xc]
+ bl FUN_020570C4
+ cmp r0, #0
+ beq _021E63CA
+_021E636C:
+ ldr r0, [r4, #4]
+ mov r1, #8
+ bl FUN_0205AFDC
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0205ADDC
+ ldr r0, [r4, #4]
+ mov r1, #0x20
+ bl FUN_0205AFDC
+ add r1, r0, #0
+ add r0, r6, #0
+ bl FUN_0205ADDC
+ ldr r0, _021E63D0 ; =0x00000627
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E63CA
+_021E639A:
+ add r0, r5, #0
+ bl FUN_0205AE28
+ cmp r0, #0
+ beq _021E63CA
+ add r0, r6, #0
+ bl FUN_0205AE28
+ cmp r0, #0
+ beq _021E63CA
+ add r0, r5, #0
+ bl FUN_0205AE50
+ add r0, r6, #0
+ bl FUN_0205AE50
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E63C0:
+ add r0, r4, #0
+ bl MOD05_021E72DC
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E63CA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021E63D0: .word 0x00000627
+
+ thumb_func_start MOD05_021E63D4
+MOD05_021E63D4: ; 0x021E63D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x2c
+ add r7, r1, #0
+ add r5, r2, #0
+ bl MOD05_021E72B8
+ add r4, r0, #0
+ str r7, [r4, #4]
+ str r6, [r4, #0x1c]
+ ldr r0, [r6, #0x38]
+ str r0, [r4, #0x20]
+ bl FUN_020553A0
+ add r2, r4, #0
+ str r0, [r4, #0x24]
+ add r2, #0xc
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r6, #0x10]
+ ldr r1, _021E640C ; =MOD05_021E6484
+ add r2, r4, #0
+ bl FUN_0204640C
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E640C: .word MOD05_021E6484
+
+ thumb_func_start MOD05_021E6410
+MOD05_021E6410: ; 0x021E6410
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r2, #0
+ add r5, r1, #0
+ bl FUN_02046528
+ add r4, r0, #0
+ add r1, r6, #0
+ bl MOD05_021E72E8
+ add r1, r0, #0
+ add r0, r4, #0
+ add r2, sp, #0
+ bl MOD05_021E7228
+ add r0, r4, #0
+ add r1, r5, #0
+ add r2, sp, #0
+ bl MOD05_021E63D4
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E643C
+MOD05_021E643C: ; 0x021E643C
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ add r5, r1, #0
+ bl FUN_020553A0
+ add r6, r0, #0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0205481C
+ cmp r0, #1
+ bne _021E647E
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054B78
+ cmp r0, #1
+ beq _021E646C
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054B6C
+ cmp r0, #1
+ bne _021E647A
+_021E646C:
+ add r0, r6, #0
+ bl FUN_02058A68
+ cmp r0, #1
+ bne _021E647A
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E647A:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E647E:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6484
+MOD05_021E6484: ; 0x021E6484
+ push {r3, r4, r5, r6, r7, lr}
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #7
+ bhi _021E64D4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E649E: ; jump table
+ .short _021E64AE - _021E649E - 2 ; case 0
+ .short _021E64CA - _021E649E - 2 ; case 1
+ .short _021E64E2 - _021E649E - 2 ; case 2
+ .short _021E6500 - _021E649E - 2 ; case 3
+ .short _021E6514 - _021E649E - 2 ; case 4
+ .short _021E655E - _021E649E - 2 ; case 5
+ .short _021E658A - _021E649E - 2 ; case 6
+ .short _021E65AC - _021E649E - 2 ; case 7
+_021E64AE:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_0204AB20
+ ldr r0, [r4, #0x1c]
+ ldr r1, _021E65E8 ; =0x0000047F
+ mov r2, #1
+ bl FUN_0204ABDC
+ ldr r0, [r4]
+ add r0, r0, #1
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E65E4
+_021E64CA:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0xa
+ bgt _021E64D6
+_021E64D4:
+ b _021E65E4
+_021E64D6:
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E65E4
+_021E64E2:
+ ldr r0, [r4, #0xc]
+ cmp r0, #1
+ bne _021E64FA
+ add r1, r4, #0
+ ldr r0, [r4, #0x1c]
+ add r1, #0xc
+ bl MOD05_021E723C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E65E4
+_021E64FA:
+ mov r0, #4
+ str r0, [r4]
+ b _021E65E4
+_021E6500:
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD05_021E7250
+ cmp r0, #1
+ bne _021E65E4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E65E4
+_021E6514:
+ ldr r0, [r4, #0x20]
+ bl FUN_02055320
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02059BF4
+ add r6, r0, #0
+ ldr r0, [r4, #0x20]
+ bl FUN_0205532C
+ add r7, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02059C00
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x24]
+ ldr r3, [r4, #4]
+ add r1, r5, r6
+ add r2, r7, r2
+ bl MOD06_0224ABAC
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x28]
+ bl FUN_02055450
+ ldr r0, [r4, #0x20]
+ mov r1, #2
+ bl FUN_020553A8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E65E4
+_021E655E:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0xa
+ ble _021E65E4
+ ldr r0, [r4, #0x20]
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #0
+ bl FUN_020555A0
+ add r1, r0, #0
+ ldr r0, [r4, #0x20]
+ bl MOD05_021E726C
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E65E4
+_021E658A:
+ ldr r0, [r4, #0x24]
+ bl FUN_0205AD98
+ cmp r0, #1
+ bne _021E65E4
+ ldr r0, [r4, #4]
+ mov r1, #0x34
+ bl FUN_0205AFDC
+ add r1, r0, #0
+ ldr r0, [r4, #0x24]
+ bl FUN_0205ADDC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E65E4
+_021E65AC:
+ ldr r0, [r4, #0x24]
+ bl FUN_0205AE28
+ cmp r0, #0
+ beq _021E65E4
+ ldr r0, [r4, #0x24]
+ bl FUN_0205AE50
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ bl MOD06_0224ADF8
+ ldr r0, [r4, #0x20]
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #2
+ bl FUN_020555A0
+ add r1, r0, #0
+ ldr r0, [r4, #0x20]
+ bl MOD05_021E726C
+ add r0, r4, #0
+ bl MOD05_021E72DC
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E65E4:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E65E8: .word 0x0000047F
+
+ thumb_func_start MOD05_021E65EC
+MOD05_021E65EC: ; 0x021E65EC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ cmp r3, #1
+ bne _021E6602
+ add r0, r5, #0
+ bl FUN_020553C4
+ cmp r0, #2
+ beq _021E6606
+_021E6602:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E6606:
+ add r0, r5, #0
+ bl FUN_020553A0
+ add r1, r0, #0
+ add r0, r5, #0
+ add r2, r4, #0
+ bl FUN_02056B74
+ cmp r0, #0x20
+ bne _021E661E
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E661E:
+ mov r1, #0x20
+ bic r0, r1
+ beq _021E6628
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E6628:
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD05_021E6638
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6638
+MOD05_021E6638: ; 0x021E6638
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x18
+ add r5, r1, #0
+ add r7, r2, #0
+ bl MOD05_021E72B8
+ add r4, r0, #0
+ str r6, [r4, #4]
+ str r5, [r4, #8]
+ str r7, [r4, #0xc]
+ add r0, r7, #0
+ bl FUN_020553A0
+ str r0, [r4, #0x10]
+ add r0, r7, #0
+ bl FUN_02055454
+ str r0, [r4, #0x14]
+ cmp r0, #0
+ bne _021E6666
+ bl ErrorHandling
+_021E6666:
+ ldr r1, _021E6674 ; =MOD05_021E6678
+ add r0, r5, #0
+ add r2, r4, #0
+ bl FUN_020463CC
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E6674: .word MOD05_021E6678
+
+ thumb_func_start MOD05_021E6678
+MOD05_021E6678: ; 0x021E6678
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E668C
+ cmp r0, #1
+ beq _021E66CC
+ b _021E6710
+_021E668C:
+ ldr r0, [r4, #0x10]
+ bl FUN_0205AD98
+ cmp r0, #1
+ bne _021E6710
+ ldr r0, [r4, #0xc]
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #0
+ bl FUN_020555A0
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD05_021E726C
+ ldr r0, [r4, #4]
+ mov r1, #0x34
+ bl FUN_0205AFDC
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ bl FUN_0205ADDC
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD06_0224ADF8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E6710
+_021E66CC:
+ ldr r0, [r4, #0x10]
+ bl FUN_0205AE28
+ cmp r0, #0
+ beq _021E6710
+ ldr r0, [r4, #0x10]
+ bl FUN_0205AE50
+ ldr r0, [r4, #0x14]
+ bl MOD05_021E4DE4
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_02055450
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_020553A8
+ ldr r0, [r4, #8]
+ ldr r1, [r0, #0x1c]
+ ldr r1, [r1]
+ bl FUN_0204ABA8
+ add r1, r0, #0
+ ldr r0, [r4, #8]
+ mov r2, #1
+ bl FUN_0204ABDC
+ add r0, r4, #0
+ bl MOD05_021E72DC
+ mov r0, #1
+ pop {r4, pc}
+_021E6710:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E6714
+MOD05_021E6714: ; 0x021E6714
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ add r6, r0, #0
+ add r5, r1, #0
+ cmp r4, #1
+ bne _021E672E
+ cmp r3, #1
+ bne _021E672E
+ add r0, r5, #0
+ bl FUN_020553C4
+ cmp r0, #2
+ beq _021E6732
+_021E672E:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E6732:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02057278
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054A48
+ cmp r0, #0
+ bne _021E674A
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E674A:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD05_021E6BD8
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6758
+MOD05_021E6758: ; 0x021E6758
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_02055764
+ cmp r0, #1
+ bne _021E676C
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E676C:
+ add r0, r4, #0
+ bl FUN_020553A0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r0, r6, #0
+ bl FUN_02054984
+ cmp r0, #1
+ beq _021E6792
+ add r0, r6, #0
+ bl FUN_020549A0
+ cmp r0, #1
+ beq _021E6792
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E6792:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021E67A0
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E67A0
+MOD05_021E67A0: ; 0x021E67A0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x10
+ add r4, r1, #0
+ bl MOD05_021E72B8
+ add r2, r0, #0
+ str r5, [r2, #8]
+ ldr r1, _021E67BC ; =MOD05_021E67C0
+ add r0, r5, #0
+ str r4, [r2, #0xc]
+ bl FUN_020463CC
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E67BC: .word MOD05_021E67C0
+
+ thumb_func_start MOD05_021E67C0
+MOD05_021E67C0: ; 0x021E67C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_020553A0
+ add r7, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E67E4
+ cmp r0, #1
+ beq _021E67F0
+ cmp r0, #2
+ beq _021E682A
+ b _021E68C6
+_021E67E4:
+ ldr r0, _021E68CC ; =0x00000651
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E67F0:
+ add r0, r7, #0
+ bl FUN_0205AD98
+ cmp r0, #0
+ bne _021E6804
+ ldr r0, [r4, #0xc]
+ bl FUN_020570C4
+ cmp r0, #0
+ beq _021E68C6
+_021E6804:
+ ldr r0, [r4, #4]
+ cmp r0, #5
+ blt _021E6824
+ ldr r0, _021E68D0 ; =0x00000652
+ bl FUN_020054C8
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0205574C
+ add r0, r4, #0
+ bl MOD05_021E72DC
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021E6824:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E682A:
+ ldr r0, [r4, #0xc]
+ bl FUN_020552F8
+ ldr r2, _021E68D4 ; =gMain
+ str r0, [sp]
+ ldr r1, [r2, #0x48]
+ ldr r2, [r2, #0x44]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0xc]
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_02057020
+ add r5, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ beq _021E68C6
+ ldr r0, [sp]
+ cmp r5, r0
+ beq _021E68C6
+ mov r0, #1
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ add r0, r7, #0
+ bl FUN_02058720
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020549A0
+ cmp r0, #1
+ bne _021E68A2
+ add r0, r6, #0
+ bl FUN_02046528
+ add r1, sp, #8
+ str r0, [sp, #4]
+ bl MOD06_0223C08C
+ cmp r0, #1
+ bne _021E68A2
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0205574C
+ add r0, r4, #0
+ bl MOD05_021E72DC
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #8]
+ add r1, r6, #0
+ bl FUN_02046A20
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021E68A2:
+ ldr r0, [r4, #4]
+ cmp r0, #5
+ bge _021E68AC
+ mov r6, #0x28
+ b _021E68B6
+_021E68AC:
+ add r0, r7, #0
+ mov r1, #1
+ mov r6, #0x30
+ bl FUN_02058A18
+_021E68B6:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0205AFDC
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02057260
+_021E68C6:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E68CC: .word 0x00000651
+_021E68D0: .word 0x00000652
+_021E68D4: .word gMain
+
+ thumb_func_start MOD05_021E68D8
+MOD05_021E68D8: ; 0x021E68D8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_020553A0
+ bl FUN_0205AD98
+ cmp r0, #0
+ bne _021E68F0
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E68F0:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021E6904
+ cmp r0, #1
+ bne _021E6900
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E6900:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E6904
+MOD05_021E6904: ; 0x021E6904
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl FUN_02055408
+ cmp r0, #1
+ bge _021E6916
+ mov r0, #0
+ pop {r4, pc}
+_021E6916:
+ add r0, r4, #0
+ bl FUN_02055314
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD05_021E727C
+ add r4, r0, #0
+ bne _021E692C
+ mov r0, #0
+ pop {r4, pc}
+_021E692C:
+ bl FUN_02058458
+ cmp r0, #0x76
+ beq _021E6938
+ mov r0, #0
+ pop {r4, pc}
+_021E6938:
+ add r0, r4, #0
+ bl MOD05_021F1AF8
+ add r0, r4, #0
+ bl FUN_02057654
+ ldr r0, _021E6950 ; =0x0000065B
+ bl FUN_020054C8
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021E6950: .word 0x0000065B
+
+ thumb_func_start MOD05_021E6954
+MOD05_021E6954: ; 0x021E6954
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x30
+ add r7, r1, #0
+ add r5, r2, #0
+ bl MOD05_021E72B8
+ add r4, r0, #0
+ str r7, [r4, #4]
+ str r6, [r4, #0xc]
+ ldr r0, [r6, #0x38]
+ str r0, [r4, #0x10]
+ bl FUN_020553A0
+ add r2, r4, #0
+ str r0, [r4, #0x14]
+ add r2, #0x1c
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r6, #0x10]
+ ldr r1, _021E698C ; =MOD05_021E69FC
+ add r2, r4, #0
+ bl FUN_0204640C
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E698C: .word MOD05_021E69FC
+
+ thumb_func_start MOD05_021E6990
+MOD05_021E6990: ; 0x021E6990
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r2, #0
+ add r5, r1, #0
+ bl FUN_02046528
+ add r4, r0, #0
+ add r1, r6, #0
+ bl MOD05_021E72E8
+ add r1, r0, #0
+ add r0, r4, #0
+ add r2, sp, #0
+ bl MOD05_021E7228
+ add r0, r4, #0
+ add r1, r5, #0
+ add r2, sp, #0
+ bl MOD05_021E6954
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E69BC
+MOD05_021E69BC: ; 0x021E69BC
+ push {r3, lr}
+ cmp r1, #3
+ bhi _021E69F6
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E69CE: ; jump table
+ .short _021E69D6 - _021E69CE - 2 ; case 0
+ .short _021E69D6 - _021E69CE - 2 ; case 1
+ .short _021E69E6 - _021E69CE - 2 ; case 2
+ .short _021E69E6 - _021E69CE - 2 ; case 3
+_021E69D6:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020548FC
+ cmp r0, #1
+ bne _021E69F6
+ mov r0, #1
+ pop {r3, pc}
+_021E69E6:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02054908
+ cmp r0, #1
+ bne _021E69F6
+ mov r0, #1
+ pop {r3, pc}
+_021E69F6:
+ mov r0, #0
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E69FC
+MOD05_021E69FC: ; 0x021E69FC
+ push {r4, r5, r6, lr}
+ bl FUN_0204652C
+ ldr r6, _021E6A24 ; =UNK05_021F7714
+ add r5, r0, #0
+_021E6A06:
+ ldr r1, [r5]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ ldr r1, [r6, r1]
+ blx r1
+ add r4, r0, #0
+ cmp r4, #2
+ beq _021E6A06
+ cmp r4, #1
+ bne _021E6A20
+ add r0, r5, #0
+ bl MOD05_021E72DC
+_021E6A20:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E6A24: .word UNK05_021F7714
+
+ thumb_func_start MOD05_021E6A28
+MOD05_021E6A28: ; 0x021E6A28
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x1c
+ bl MOD05_021E723C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E6A40
+MOD05_021E6A40: ; 0x021E6A40
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x1c
+ bl MOD05_021E7250
+ cmp r0, #1
+ bne _021E6A54
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E6A54:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E6A58
+MOD05_021E6A58: ; 0x021E6A58
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ bl FUN_02055320
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ bl FUN_02059BF4
+ add r6, r0, #0
+ ldr r0, [r5, #0x10]
+ bl FUN_0205532C
+ add r7, r0, #0
+ ldr r0, [r5, #4]
+ bl FUN_02059C00
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r5, #4]
+ add r1, r4, r6
+ add r2, r7, r2
+ bl MOD06_0224AEE8
+ str r0, [r5, #0x18]
+ ldr r0, [r5, #0xc]
+ bl MOD06_0224F0BC
+ str r0, [r5, #0x2c]
+ ldr r0, _021E6AA8 ; =0x00000627
+ bl FUN_020054C8
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E6AA8: .word 0x00000627
+
+ thumb_func_start MOD05_021E6AAC
+MOD05_021E6AAC: ; 0x021E6AAC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_0205AD98
+ cmp r0, #1
+ bne _021E6AD0
+ ldr r0, [r4, #4]
+ mov r1, #0x34
+ bl FUN_0205AFDC
+ add r1, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_0205ADDC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E6AD0:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E6AD4
+MOD05_021E6AD4: ; 0x021E6AD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_0205AE28
+ cmp r0, #1
+ bne _021E6AF0
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, r0, #1
+ str r0, [r4]
+ ldr r0, [r4, #0x18]
+ bl MOD06_0224AF68
+_021E6AF0:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E6AF4
+MOD05_021E6AF4: ; 0x021E6AF4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_0205AD98
+ cmp r0, #1
+ bne _021E6B18
+ ldr r0, [r4, #4]
+ mov r1, #0x10
+ bl FUN_0205AFDC
+ add r1, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_0205ADDC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E6B18:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E6B1C
+MOD05_021E6B1C: ; 0x021E6B1C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x14]
+ bl FUN_0205AE28
+ cmp r0, #0
+ bne _021E6B2E
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E6B2E:
+ ldr r0, [r5, #0x14]
+ bl FUN_020584D4
+ add r4, r0, #0
+ ldr r0, [r5, #0x14]
+ add r1, r4, #0
+ bl FUN_02059C90
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r4, #0
+ bl MOD05_021E69BC
+ cmp r0, #1
+ bne _021E6B54
+ mov r0, #5
+ str r0, [r5]
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021E6B54:
+ ldr r0, [r5, #4]
+ mov r1, #0x34
+ bl FUN_0205AFDC
+ add r1, r0, #0
+ ldr r0, [r5, #0x14]
+ bl FUN_0205ADDC
+ mov r1, #0
+ str r1, [r5, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r5, #0x18]
+ bl MOD06_0224AF68
+ ldr r0, [r5, #0x2c]
+ bl MOD06_0224F0D0
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E6B80
+MOD05_021E6B80: ; 0x021E6B80
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_0205AE28
+ cmp r0, #0
+ bne _021E6B92
+ mov r0, #0
+ pop {r4, pc}
+_021E6B92:
+ ldr r0, [r4, #0x14]
+ bl FUN_0205AE50
+ ldr r0, [r4, #0x18]
+ bl MOD05_021E4DE4
+ mov r0, #1
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6BA4
+MOD05_021E6BA4: ; 0x021E6BA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x54
+ add r7, r1, #0
+ add r5, r2, #0
+ bl MOD05_021E72B8
+ add r4, r0, #0
+ str r7, [r4, #4]
+ str r6, [r4, #0x34]
+ .balign 4, 0
+_021E6BB8: .word 0x63A06BB0
+
+ thumb_func_start MOD05_021E6BBC
+MOD05_021E6BBC: ; 0x021E6BBC
+ ldr r0, [r6, #0x38]
+ bl FUN_020553A0
+ str r0, [r4, #0x3c]
+ cmp r5, #0
+ beq _021E6BD4
+ add r2, r4, #0
+ add r2, #0x40
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+_021E6BD4:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E6BD8
+MOD05_021E6BD8: ; 0x021E6BD8
+ push {r4, lr}
+ mov r2, #0
+ add r4, r0, #0
+ bl MOD05_021E6BA4
+ add r2, r0, #0
+ ldr r1, _021E6BF0 ; =MOD05_021E6C30
+ add r0, r4, #0
+ bl FUN_020463CC
+ pop {r4, pc}
+ nop
+_021E6BF0: .word MOD05_021E6C30
+
+ thumb_func_start MOD05_021E6BF4
+MOD05_021E6BF4: ; 0x021E6BF4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ bl FUN_02046528
+ add r4, r0, #0
+ add r1, r7, #0
+ bl MOD05_021E72E8
+ add r1, r0, #0
+ add r0, r4, #0
+ add r2, sp, #0
+ bl MOD05_021E7228
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, sp, #0
+ bl MOD05_021E6BA4
+ add r2, r0, #0
+ ldr r1, _021E6C2C ; =MOD05_021E6C30
+ add r0, r5, #0
+ bl FUN_0204640C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E6C2C: .word MOD05_021E6C30
+
+ thumb_func_start MOD05_021E6C30
+MOD05_021E6C30: ; 0x021E6C30
+ push {r4, r5, r6, lr}
+ bl FUN_0204652C
+ ldr r6, _021E6C70 ; =UNK05_021F7700
+ ldr r4, _021E6C74 ; =UNK05_021F76EC
+ add r5, r0, #0
+_021E6C3C:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ bne _021E6C4E
+ ldr r1, [r5]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ blx r1
+ b _021E6C58
+_021E6C4E:
+ ldr r1, [r5]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ ldr r1, [r6, r1]
+ blx r1
+_021E6C58:
+ cmp r0, #2
+ beq _021E6C3C
+ cmp r0, #1
+ bne _021E6C6A
+ add r0, r5, #0
+ bl MOD05_021E72DC
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E6C6A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021E6C70: .word UNK05_021F7700
+_021E6C74: .word UNK05_021F76EC
+
+ thumb_func_start MOD05_021E6C78
+MOD05_021E6C78: ; 0x021E6C78
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ cmp r0, #1
+ bne _021E6C96
+ add r1, r4, #0
+ ldr r0, [r4, #0x34]
+ add r1, #0x40
+ bl MOD05_021E723C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ pop {r4, pc}
+_021E6C96:
+ mov r0, #2
+ str r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6CA0
+MOD05_021E6CA0: ; 0x021E6CA0
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x40
+ bl MOD05_021E7250
+ cmp r0, #1
+ bne _021E6CBA
+ ldr r0, _021E6CC0 ; =0x0000064D
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E6CBA:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021E6CC0: .word 0x0000064D
+
+ thumb_func_start MOD05_021E6CC4
+MOD05_021E6CC4: ; 0x021E6CC4
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5, #0x3c]
+ bl FUN_02058B2C
+ add r4, r0, #0
+ mov r0, #0
+ bl FUN_02059BF4
+ lsl r0, r0, #1
+ add r4, r4, r0
+ ldr r0, [r5, #0x3c]
+ bl FUN_02058B4C
+ add r6, r0, #0
+ mov r0, #0
+ bl FUN_02059C00
+ lsl r0, r0, #1
+ add r6, r6, r0
+ add r2, r5, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, #0x28
+ bl FUN_02059E60
+ add r1, r5, #0
+ ldr r0, [r5, #0x34]
+ add r1, #0x28
+ bl FUN_02059E9C
+ str r4, [r5, #0xc]
+ ldr r0, [r5, #0x2c]
+ asr r1, r0, #3
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ str r0, [r5, #0x10]
+ str r6, [r5, #0x14]
+ ldr r0, [r5, #0x3c]
+ add r1, sp, #0xc
+ bl FUN_02058B5C
+ ldr r1, [sp, #0x14]
+ ldr r0, [r5, #0x30]
+ cmp r1, r0
+ bgt _021E6D2A
+ bl ErrorHandling
+_021E6D2A:
+ ldr r1, [sp, #0x10]
+ ldr r0, [r5, #0x2c]
+ cmp r1, r0
+ blt _021E6D36
+ bl ErrorHandling
+_021E6D36:
+ mov r0, #0
+ str r0, [sp]
+ ldr r1, [r5, #0x2c]
+ ldr r0, [sp, #0x10]
+ add r3, sp, #0
+ sub r2, r1, r0
+ ldr r1, [r5, #0x30]
+ ldr r0, [sp, #0x14]
+ str r2, [sp, #4]
+ sub r1, r1, r0
+ asr r0, r2, #5
+ lsr r0, r0, #0x1a
+ add r0, r2, r0
+ asr r0, r0, #6
+ str r0, [sp, #4]
+ asr r0, r1, #5
+ lsr r0, r0, #0x1a
+ add r0, r1, r0
+ add r2, r5, #0
+ str r1, [sp, #8]
+ asr r0, r0, #6
+ str r0, [sp, #8]
+ ldmia r3!, {r0, r1}
+ add r2, #0x1c
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r5, #0x34]
+ bl MOD06_0224ED94
+ str r0, [r5, #0x50]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E6D80
+MOD05_021E6D80: ; 0x021E6D80
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B5C
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #0x20]
+ add r1, r1, r0
+ str r1, [sp, #4]
+ ldr r0, [r4, #0x2c]
+ cmp r1, r0
+ ble _021E6D9E
+ str r0, [sp, #4]
+_021E6D9E:
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B6C
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x20
+ blt _021E6DBA
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E6DBA:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD05_021E6DC0
+MOD05_021E6DC0: ; 0x021E6DC0
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B5C
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #0x20]
+ add r1, r1, r0
+ str r1, [sp, #4]
+ ldr r0, [r4, #0x2c]
+ cmp r1, r0
+ ble _021E6DDE
+ str r0, [sp, #4]
+_021E6DDE:
+ ldr r1, [sp, #8]
+ ldr r0, [r4, #0x24]
+ add r1, r1, r0
+ str r1, [sp, #8]
+ ldr r0, [r4, #0x30]
+ cmp r1, r0
+ bge _021E6DEE
+ str r0, [sp, #8]
+_021E6DEE:
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B6C
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x40
+ bge _021E6E06
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021E6E06:
+ ldr r1, [sp, #8]
+ ldr r0, [r4, #0x30]
+ cmp r1, r0
+ beq _021E6E12
+ bl ErrorHandling
+_021E6E12:
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #0x2c]
+ cmp r1, r0
+ beq _021E6E1E
+ bl ErrorHandling
+_021E6E1E:
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0xc]
+ bl FUN_02058B30
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x10]
+ bl FUN_02058B40
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x14]
+ bl FUN_02058B50
+ ldr r0, [r4, #0x3c]
+ bl FUN_02059C60
+ ldr r0, [r4, #0x50]
+ bl MOD06_0224EDA8
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD05_021E6E48
+MOD05_021E6E48: ; 0x021E6E48
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ cmp r0, #1
+ bne _021E6E66
+ add r1, r4, #0
+ ldr r0, [r4, #0x34]
+ add r1, #0x40
+ bl MOD05_021E723C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ pop {r4, pc}
+_021E6E66:
+ mov r0, #2
+ str r0, [r4]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E6E6C
+MOD05_021E6E6C: ; 0x021E6E6C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x40
+ bl MOD05_021E7250
+ cmp r0, #1
+ bne _021E6E86
+ ldr r0, _021E6E8C ; =0x0000064D
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E6E86:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021E6E8C: .word 0x0000064D
+
+ thumb_func_start MOD05_021E6E90
+MOD05_021E6E90: ; 0x021E6E90
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5, #0x3c]
+ bl FUN_02058B2C
+ add r4, r0, #0
+ mov r0, #1
+ bl FUN_02059BF4
+ lsl r0, r0, #1
+ add r4, r4, r0
+ ldr r0, [r5, #0x3c]
+ bl FUN_02058B4C
+ add r6, r0, #0
+ mov r0, #1
+ bl FUN_02059C00
+ lsl r0, r0, #1
+ add r6, r6, r0
+ add r2, r5, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, #0x28
+ bl FUN_02059E60
+ add r1, r5, #0
+ ldr r0, [r5, #0x34]
+ add r1, #0x28
+ bl FUN_02059E9C
+ mov r0, #0
+ str r0, [r5, #0x18]
+ str r4, [r5, #0xc]
+ ldr r0, [r5, #0x2c]
+ asr r1, r0, #3
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ str r0, [r5, #0x10]
+ str r6, [r5, #0x14]
+ ldr r0, [r5, #0x3c]
+ add r1, sp, #0xc
+ bl FUN_02058B5C
+ ldr r1, [sp, #0x14]
+ ldr r0, [r5, #0x30]
+ cmp r1, r0
+ blt _021E6EFA
+ bl ErrorHandling
+_021E6EFA:
+ ldr r1, [sp, #0x10]
+ ldr r0, [r5, #0x2c]
+ cmp r1, r0
+ bgt _021E6F06
+ bl ErrorHandling
+_021E6F06:
+ mov r0, #0
+ str r0, [sp]
+ ldr r1, [r5, #0x2c]
+ ldr r0, [sp, #0x10]
+ add r3, sp, #0
+ sub r2, r1, r0
+ ldr r1, [r5, #0x30]
+ ldr r0, [sp, #0x14]
+ str r2, [sp, #4]
+ sub r1, r1, r0
+ asr r0, r2, #5
+ lsr r0, r0, #0x1a
+ add r0, r2, r0
+ asr r0, r0, #6
+ str r0, [sp, #4]
+ asr r0, r1, #5
+ lsr r0, r0, #0x1a
+ add r0, r1, r0
+ add r2, r5, #0
+ str r1, [sp, #8]
+ asr r0, r0, #6
+ str r0, [sp, #8]
+ ldmia r3!, {r0, r1}
+ add r2, #0x1c
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r5, #0x34]
+ bl MOD06_0224ED94
+ str r0, [r5, #0x50]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E6F50
+MOD05_021E6F50: ; 0x021E6F50
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B5C
+ ldr r1, [sp, #8]
+ ldr r0, [r4, #0x24]
+ add r1, r1, r0
+ str r1, [sp, #8]
+ ldr r0, [r4, #0x30]
+ cmp r1, r0
+ ble _021E6F70
+ str r0, [sp, #8]
+ b _021E6F78
+_021E6F70:
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x24]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+_021E6F78:
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B6C
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x20
+ blt _021E6F94
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E6F94:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E6F9C
+MOD05_021E6F9C: ; 0x021E6F9C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B5C
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #0x20]
+ add r1, r1, r0
+ str r1, [sp, #4]
+ ldr r0, [r4, #0x2c]
+ cmp r1, r0
+ bge _021E6FBA
+ str r0, [sp, #4]
+_021E6FBA:
+ ldr r1, [sp, #8]
+ ldr r0, [r4, #0x24]
+ add r1, r1, r0
+ str r1, [sp, #8]
+ ldr r0, [r4, #0x30]
+ cmp r1, r0
+ ble _021E6FCC
+ str r0, [sp, #8]
+ b _021E6FD4
+_021E6FCC:
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x24]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+_021E6FD4:
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #0
+ bl FUN_02058B6C
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x40
+ bge _021E6FEC
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021E6FEC:
+ ldr r1, [sp, #8]
+ ldr r0, [r4, #0x30]
+ cmp r1, r0
+ beq _021E6FF8
+ bl ErrorHandling
+_021E6FF8:
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #0x2c]
+ cmp r1, r0
+ beq _021E7004
+ bl ErrorHandling
+_021E7004:
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0xc]
+ bl FUN_02058B30
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x10]
+ bl FUN_02058B40
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x14]
+ bl FUN_02058B50
+ ldr r0, [r4, #0x3c]
+ bl FUN_02059C60
+ ldr r0, [r4, #0x50]
+ bl MOD06_0224EDA8
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7030
+MOD05_021E7030: ; 0x021E7030
+ push {r3, lr}
+ bl FUN_02046528
+ bl MOD05_021E703C
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E703C
+MOD05_021E703C: ; 0x021E703C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x18
+ bl MOD05_021E72B8
+ add r4, r0, #0
+ str r5, [r4]
+ ldr r0, [r5, #0x38]
+ str r0, [r4, #4]
+ bl FUN_020553A0
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ bl FUN_020553E8
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x10]
+ ldr r1, _021E7068 ; =MOD05_021E706C
+ add r2, r4, #0
+ bl FUN_0204640C
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E7068: .word MOD05_021E706C
+
+ thumb_func_start MOD05_021E706C
+MOD05_021E706C: ; 0x021E706C
+ push {r4, lr}
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021E7084
+ cmp r0, #1
+ beq _021E7096
+ cmp r0, #2
+ beq _021E70C8
+ b _021E70E2
+_021E7084:
+ ldr r0, [r4, #8]
+ ldr r1, _021E70E8 ; =UNK05_021F7758
+ bl FUN_0205AEA4
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _021E70E2
+_021E7096:
+ ldr r0, [r4, #0x14]
+ bl FUN_0205AEF0
+ cmp r0, #1
+ bne _021E70E2
+ ldr r1, [r4, #0x10]
+ mov r0, #5
+ bl FUN_020555A0
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD05_021E726C
+ ldr r0, [r4, #0x14]
+ bl FUN_0205AEFC
+ ldr r0, [r4, #8]
+ ldr r1, _021E70EC ; =UNK05_021F77BC
+ bl FUN_0205AEA4
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _021E70E2
+_021E70C8:
+ ldr r0, [r4, #0x14]
+ bl FUN_0205AEF0
+ cmp r0, #1
+ bne _021E70E2
+ ldr r0, [r4, #0x14]
+ bl FUN_0205AEFC
+ add r0, r4, #0
+ bl MOD05_021E72DC
+ mov r0, #1
+ pop {r4, pc}
+_021E70E2:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021E70E8: .word UNK05_021F7758
+_021E70EC: .word UNK05_021F77BC
+
+ thumb_func_start MOD05_021E70F0
+MOD05_021E70F0: ; 0x021E70F0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_020553A0
+ add r5, r0, #0
+ bl FUN_02058934
+ cmp r0, #0
+ beq _021E7136
+ add r0, r4, #0
+ bl FUN_020553C4
+ cmp r0, #0
+ bne _021E7136
+ add r0, r5, #0
+ bl FUN_02058458
+ sub r0, #0xc4
+ cmp r0, #1
+ bls _021E7136
+ add r0, r4, #0
+ bl FUN_020553E0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0x40
+ bl MOD05_021E5FD8
+ add r0, r4, #0
+ bl MOD05_021E5FE0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021E5FD8
+_021E7136:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E7138
+MOD05_021E7138: ; 0x021E7138
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_020553A0
+ add r5, r0, #0
+ bl FUN_02058934
+ cmp r0, #0
+ beq _021E7180
+ add r0, r4, #0
+ bl FUN_020553C4
+ cmp r0, #0
+ bne _021E7180
+ add r0, r5, #0
+ bl FUN_02058458
+ cmp r0, #0xc4
+ beq _021E7162
+ cmp r0, #0xc5
+ bne _021E7180
+_021E7162:
+ add r0, r4, #0
+ bl FUN_020553E0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD05_021E5FD8
+ add r0, r4, #0
+ bl MOD05_021E5FE0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021E5FD8
+_021E7180:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7184
+MOD05_021E7184: ; 0x021E7184
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r5, [r6, #0x38]
+ add r0, r5, #0
+ bl FUN_020553C4
+ add r7, r0, #0
+ beq _021E7198
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E7198:
+ add r0, r5, #0
+ bl FUN_020553A0
+ str r0, [sp]
+ mov r0, #4
+ mov r1, #0x10
+ bl AllocFromHeapAtEnd
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [r4]
+ str r6, [r4, #8]
+ str r5, [r4, #0xc]
+ ldr r0, [sp]
+ str r7, [r4, #4]
+ bl FUN_02058914
+ add r0, r5, #0
+ mov r1, #0x80
+ bl MOD05_021E5FD8
+ add r0, r5, #0
+ bl MOD05_021E5FE0
+ ldr r0, _021E71E0 ; =MOD05_021E7218
+ ldr r2, _021E71E4 ; =0x0000FFFF
+ add r1, r4, #0
+ bl FUN_0200CA44
+ add r4, r0, #0
+ bne _021E71DA
+ bl ErrorHandling
+_021E71DA:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E71E0: .word MOD05_021E7218
+_021E71E4: .word 0x0000FFFF
+
+ thumb_func_start MOD05_021E71E8
+MOD05_021E71E8: ; 0x021E71E8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ beq _021E7216
+ bl FUN_0201B6C8
+ add r6, r0, #0
+ ldr r4, [r6, #0xc]
+ add r0, r4, #0
+ bl FUN_020553E8
+ add r1, r0, #0
+ mov r0, #0
+ bl FUN_020555A0
+ add r0, r4, #0
+ bl MOD05_021E6014
+ add r0, r6, #0
+ bl FreeToHeap
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021E7216:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021E7218
+MOD05_021E7218: ; 0x021E7218
+ push {r3, lr}
+ ldr r0, [r1, #0xc]
+ bl FUN_020553A0
+ bl FUN_020586A0
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7228
+MOD05_021E7228: ; 0x021E7228
+ push {r4, lr}
+ add r4, r2, #0
+ mov r2, #1
+ str r2, [r4]
+ str r1, [r4, #8]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553E8
+ str r0, [r4, #4]
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E723C
+MOD05_021E723C: ; 0x021E723C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #4]
+ mov r1, #0
+ bl MOD06_0224666C
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7250
+MOD05_021E7250: ; 0x021E7250
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD06_022466A0
+ cmp r0, #1
+ bne _021E7268
+ ldr r0, [r4, #0xc]
+ bl MOD06_022466AC
+ mov r0, #1
+ pop {r4, pc}
+_021E7268:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E726C
+MOD05_021E726C: ; 0x021E726C
+ push {r4, lr}
+ add r4, r1, #0
+ bl FUN_020553A0
+ add r1, r4, #0
+ bl MOD05_021F3490
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E727C
+MOD05_021E727C: ; 0x021E727C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ bl FUN_02055320
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_02059BF4
+ add r7, r0, #0
+ add r0, r4, #0
+ bl FUN_0205532C
+ str r0, [sp]
+ add r0, r5, #0
+ bl FUN_02059C00
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_020553A0
+ bl FUN_02058578
+ ldr r2, [sp]
+ add r1, r6, r7
+ add r2, r2, r5
+ bl FUN_02058D74
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E72B8
+MOD05_021E72B8: ; 0x021E72B8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #4
+ add r1, r5, #0
+ bl AllocFromHeapAtEnd
+ add r4, r0, #0
+ bne _021E72CC
+ bl ErrorHandling
+_021E72CC:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r5, #0
+ bl memset
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E72DC
+MOD05_021E72DC: ; 0x021E72DC
+ ldr r3, _021E72E4 ; =FUN_02016A8C
+ add r1, r0, #0
+ mov r0, #4
+ bx r3
+ .balign 4, 0
+_021E72E4: .word FUN_02016A8C
+
+ thumb_func_start MOD05_021E72E8
+MOD05_021E72E8: ; 0x021E72E8
+ push {r4, lr}
+ ldr r0, [r0, #0xc]
+ add r4, r1, #0
+ bl SavArray_PlayerParty_get
+ add r1, r4, #0
+ bl GetPartyMonByIndex
+ pop {r4, pc}
+ .balign 4, 0
+
+ .section .rodata
+
+ .global UNK05_021F76EC
+UNK05_021F76EC: ; 0x021F76EC
+ .word MOD05_021E6C78, MOD05_021E6CA0, MOD05_021E6CC4, MOD05_021E6D80
+ .word MOD05_021E6DC0
+
+ .global UNK05_021F7700
+UNK05_021F7700: ; 0x021F7700
+ .word MOD05_021E6E48, MOD05_021E6E6C, MOD05_021E6E90, MOD05_021E6F50
+ .word MOD05_021E6F9C
+
+ .global UNK05_021F7714
+UNK05_021F7714: ; 0x021F7714
+ .word MOD05_021E6A28, MOD05_021E6A40, MOD05_021E6A58, MOD05_021E6AAC
+ .word MOD05_021E6AD4, MOD05_021E6AF4, MOD05_021E6B1C, MOD05_021E6B80
+
+ .global UNK05_021F7734
+UNK05_021F7734: ; 0x021F7734
+ .word MOD05_021E6014, MOD05_021E6054, MOD05_021E609C, MOD05_021E610C
+ .word MOD05_021E6118, MOD05_021E6134, MOD05_021E6150, MOD05_021E616C
+ .word MOD05_021E6188
+
+ .global UNK05_021F7758
+UNK05_021F7758: ; 0x021F7758
+ .byte 0x01, 0x00, 0x01, 0x00 ;short?
+ .byte 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00
+ .byte 0x3C, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00
+ .byte 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00
+ .byte 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
+ .byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
+ .byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00
+
+ .global UNK05_021F77BC
+UNK05_021F77BC: ; 0x021F77BC
+ .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00 ;short?
+ .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00
+ .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00
+ .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00
+ .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x03, 0x00
+ .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x05, 0x00
+ .byte 0x01, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index b665a9b3..d8ed3656 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -3,4150 +3,6 @@
.section .text
.balign 4, 0
- thumb_func_start MOD05_021E52A8
-MOD05_021E52A8: ; 0x021E52A8
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #0x60
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4]
- bl MOD05_021E52D4
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E52C4
-MOD05_021E52C4: ; 0x021E52C4
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E52F4
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E52D4
-MOD05_021E52D4: ; 0x021E52D4
- push {r3, lr}
- sub sp, #8
- add r3, r0, #0
- add r0, #0x58
- str r0, [sp]
- add r0, r3, #0
- add r0, #0x5c
- str r0, [sp, #4]
- ldr r0, [r3]
- mov r1, #0x11
- mov r2, #0
- add r3, r3, #4
- bl MOD05_021E51EC
- add sp, #8
- pop {r3, pc}
-
- thumb_func_start MOD05_021E52F4
-MOD05_021E52F4: ; 0x021E52F4
- ldr r3, _021E52FC ; =MOD05_021E4C00
- ldr r0, [r0, #0x5c]
- bx r3
- nop
-_021E52FC: .word MOD05_021E4C00
-
- thumb_func_start MOD05_021E5300
-MOD05_021E5300: ; 0x021E5300
- push {r3, r4, r5, lr}
- mov r1, #0xbe
- mov r2, #0
- lsl r1, r1, #4
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4]
- bl MOD05_021E532C
- add r0, r4, #0
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E531C
-MOD05_021E531C: ; 0x021E531C
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E5398
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E532C
-MOD05_021E532C: ; 0x021E532C
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- ldr r1, _021E5390 ; =0x00000B5C
- str r0, [sp, #8]
- add r6, r0, r1
- sub r1, #0x84
- mov r4, #0
- add r5, r0, r1
- add r7, r0, #4
-_021E533E:
- str r5, [sp]
- ldr r0, [sp, #8]
- str r6, [sp, #4]
- add r1, r4, #0
- ldr r0, [r0]
- add r1, #0x1a
- mov r2, #0
- add r3, r7, #0
- bl MOD05_021E51EC
- add r4, r4, #1
- add r6, r6, #4
- add r5, r5, #4
- add r7, #0x54
- cmp r4, #0x20
- blt _021E533E
- ldr r2, _021E5394 ; =0x00000AD8
- ldr r1, [sp, #8]
- lsl r0, r4, #2
- add r1, r1, r2
- add r1, r1, r0
- str r1, [sp]
- ldr r1, [sp, #8]
- add r2, #0x84
- add r1, r1, r2
- add r0, r1, r0
- ldr r3, [sp, #8]
- str r0, [sp, #4]
- ldr r0, [sp, #8]
- add r5, r3, #4
- mov r3, #0x54
- mul r3, r4
- ldr r0, [r0]
- mov r1, #0x19
- mov r2, #0
- add r3, r5, r3
- bl MOD05_021E51EC
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
- nop
-_021E5390: .word 0x00000B5C
-_021E5394: .word 0x00000AD8
-
- thumb_func_start MOD05_021E5398
-MOD05_021E5398: ; 0x021E5398
- push {r4, r5, r6, lr}
- ldr r6, _021E53B0 ; =0x00000B5C
- add r5, r0, #0
- mov r4, #0
-_021E53A0:
- ldr r0, [r5, r6]
- bl MOD05_021E4C00
- add r4, r4, #1
- add r5, r5, #4
- cmp r4, #0x21
- blt _021E53A0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021E53B0: .word 0x00000B5C
-
- thumb_func_start MOD05_021E53B4
-MOD05_021E53B4: ; 0x021E53B4
- push {r4, r5, r6, r7, lr}
- sub sp, #0x2c
- add r5, r0, #0
- ldr r0, [r5, #0x3c]
- add r4, r1, #0
- mov r1, #3
- add r6, r2, #0
- add r7, r3, #0
- str r0, [sp, #8]
- str r0, [sp, #0x24]
- bl MOD05_021E4C08
- str r0, [sp, #0x28]
- mov r0, #9
- mov r3, #0
- lsl r1, r4, #0x10
- lsl r0, r0, #0xc
- add r0, r1, r0
- str r0, [sp, #0xc]
- lsl r0, r6, #0x10
- str r0, [sp, #0x14]
- str r4, [sp, #0x18]
- str r6, [sp, #0x1c]
- str r5, [sp, #0x20]
- str r3, [sp, #0x10]
- add r0, sp, #0x18
- str r0, [sp]
- mov r0, #0xff
- str r0, [sp, #4]
- ldr r0, [sp, #8]
- ldr r1, _021E541C ; =UNK05_021F757C
- add r2, sp, #0xc
- bl MOD05_021E4DC4
- add r5, r0, #0
- beq _021E5416
- bl FUN_02064738
- add r4, r0, #0
- ldr r0, [sp, #0x40]
- str r0, [r4, #0x54]
- add r0, r7, #0
- bl _fflt
- str r0, [r4, #0x58]
- add r0, r7, #0
- bl _fflt
- str r0, [r4, #0x5c]
-_021E5416:
- add r0, r5, #0
- add sp, #0x2c
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E541C: .word UNK05_021F757C
-
- thumb_func_start MOD05_021E5420
-MOD05_021E5420: ; 0x021E5420
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- ldr r4, [sp, #0x18]
- add r5, r3, #0
- str r4, [sp]
- bl MOD05_021E53B4
- add r6, r0, #0
- beq _021E5444
- bl FUN_02064738
- add r4, r0, #0
- mov r0, #0
- str r0, [r4, #0x58]
- add r0, r5, #0
- bl _fflt
- str r0, [r4, #0x5c]
-_021E5444:
- add r0, r6, #0
- add sp, #4
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E544C
-MOD05_021E544C: ; 0x021E544C
- push {r4, r5, lr}
- sub sp, #0xc
- add r5, r0, #0
- add r4, r1, #0
- bl FUN_0206475C
- add r3, r0, #0
- add r2, r4, #0
- ldmia r3!, {r0, r1}
- add r2, #0x6c
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- ldr r0, [r4, #0x6c]
- lsl r1, r0, #0x10
- mov r0, #9
- lsl r0, r0, #0xc
- add r0, r1, r0
- str r0, [sp]
- ldr r0, [r4, #0x70]
- add r1, sp, #0
- lsl r0, r0, #0x10
- str r0, [sp, #8]
- mov r0, #0
- str r0, [sp, #4]
- add r0, r5, #0
- bl FUN_0206476C
- mov r0, #1
- add sp, #0xc
- pop {r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5490
-MOD05_021E5490: ; 0x021E5490
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E5494
-MOD05_021E5494: ; 0x021E5494
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4, #0x58]
- ldr r1, [r4, #0x5c]
- bl _fls
- bhs _021E54B6
- ldr r0, [r4, #0x58]
- bl _f2d
- ldr r2, _021E54B8 ; =0x9999999A
- ldr r3, _021E54BC ; =0x3FC99999
- bl _dadd
- bl _d2f
- str r0, [r4, #0x58]
-_021E54B6:
- pop {r4, pc}
- .balign 4, 0
-_021E54B8: .word 0x9999999A
-_021E54BC: .word 0x3FC99999
-
- thumb_func_start MOD05_021E54C0
-MOD05_021E54C0: ; 0x021E54C0
- push {r3, r4, r5, r6, lr}
- sub sp, #0x3c
- ldr r5, _021E555C ; =UNK05_021F7570
- add r2, r0, #0
- add r4, r1, #0
- ldmia r5!, {r0, r1}
- add r3, sp, #0x24
- stmia r3!, {r0, r1}
- ldr r0, [r5]
- ldr r6, _021E5560 ; =UNK05_021F7590
- str r0, [r3]
- add r5, sp, #0
- mov r3, #4
-_021E54DA:
- ldmia r6!, {r0, r1}
- stmia r5!, {r0, r1}
- sub r3, r3, #1
- bne _021E54DA
- ldr r0, [r6]
- add r1, sp, #0x30
- str r0, [r5]
- add r0, r2, #0
- bl FUN_0206477C
- ldr r0, [sp, #0x24]
- bl _fflt
- ldr r1, [r4, #0x58]
- bl _fmul
- bl _ffix
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x28]
- bl _fflt
- ldr r1, [r4, #0x58]
- bl _fmul
- bl _ffix
- str r0, [sp, #0x28]
- ldr r0, [sp, #0x2c]
- bl _fflt
- ldr r1, [r4, #0x58]
- bl _fmul
- bl _ffix
- str r0, [sp, #0x2c]
- mov r0, #2
- ldr r1, [sp, #0x30]
- lsl r0, r0, #0xa
- sub r1, r1, r0
- str r1, [sp, #0x30]
- ldr r1, [sp, #0x34]
- lsl r0, r0, #1
- sub r0, r1, r0
- str r0, [sp, #0x34]
- mov r0, #5
- ldr r1, [sp, #0x38]
- lsl r0, r0, #0xc
- add r0, r1, r0
- str r0, [sp, #0x38]
- ldr r0, [r4, #0x7c]
- ldr r1, [r4, #0x54]
- add r2, r0, #4
- mov r0, #0x54
- mul r0, r1
- add r0, r2, r0
- add r1, sp, #0x30
- add r2, sp, #0
- add r3, sp, #0x24
- bl FUN_0201B26C
- add sp, #0x3c
- pop {r3, r4, r5, r6, pc}
- nop
-_021E555C: .word UNK05_021F7570
-_021E5560: .word UNK05_021F7590
-
- thumb_func_start MOD05_021E5564
-MOD05_021E5564: ; 0x021E5564
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #0x60
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4]
- bl MOD05_021E5590
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5580
-MOD05_021E5580: ; 0x021E5580
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E55B0
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5590
-MOD05_021E5590: ; 0x021E5590
- push {r3, lr}
- sub sp, #8
- add r3, r0, #0
- add r0, #0x58
- str r0, [sp]
- add r0, r3, #0
- add r0, #0x5c
- str r0, [sp, #4]
- ldr r0, [r3]
- mov r1, #0x15
- mov r2, #0
- add r3, r3, #4
- bl MOD05_021E51EC
- add sp, #8
- pop {r3, pc}
-
- thumb_func_start MOD05_021E55B0
-MOD05_021E55B0: ; 0x021E55B0
- ldr r3, _021E55B8 ; =MOD05_021E4C00
- ldr r0, [r0, #0x5c]
- bx r3
- nop
-_021E55B8: .word MOD05_021E4C00
-
- thumb_func_start MOD05_021E55BC
-MOD05_021E55BC: ; 0x021E55BC
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #0x6c
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4, #8]
- bl MOD05_021E55E8
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E55D8
-MOD05_021E55D8: ; 0x021E55D8
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E5608
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E55E8
-MOD05_021E55E8: ; 0x021E55E8
- push {r3, lr}
- sub sp, #8
- add r3, r0, #0
- add r0, #0x60
- str r0, [sp]
- add r0, r3, #0
- add r0, #0x64
- str r0, [sp, #4]
- ldr r0, [r3, #8]
- mov r1, #0x16
- mov r2, #0
- add r3, #0xc
- bl MOD05_021E51EC
- add sp, #8
- pop {r3, pc}
-
- thumb_func_start MOD05_021E5608
-MOD05_021E5608: ; 0x021E5608
- ldr r3, _021E5610 ; =MOD05_021E4C00
- ldr r0, [r0, #0x64]
- bx r3
- nop
-_021E5610: .word MOD05_021E4C00
-
- thumb_func_start MOD05_021E5614
-MOD05_021E5614: ; 0x021E5614
- push {r3, r4, r5, lr}
- sub sp, #0x20
- add r5, r0, #0
- bl MOD05_021E4C24
- add r4, r0, #0
- mov r1, #5
- str r4, [sp, #0x14]
- bl MOD05_021E4C08
- str r0, [sp, #0x18]
- add r0, r5, #0
- add r1, sp, #8
- str r5, [sp, #0x1c]
- bl FUN_02058B5C
- add r0, sp, #0x14
- str r0, [sp]
- mov r0, #0xff
- str r0, [sp, #4]
- ldr r1, _021E564C ; =UNK05_021F75C0
- add r0, r4, #0
- add r2, sp, #8
- mov r3, #0
- bl MOD05_021E4DC4
- add sp, #0x20
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021E564C: .word UNK05_021F75C0
-
- thumb_func_start MOD05_021E5650
-MOD05_021E5650: ; 0x021E5650
- push {r4, r5, lr}
- sub sp, #0xc
- add r5, r0, #0
- add r4, r1, #0
- bl FUN_0206475C
- add r3, r0, #0
- add r2, r4, #0
- ldmia r3!, {r0, r1}
- add r2, #0x30
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- ldr r0, [r4, #0x38]
- bl FUN_02058448
- str r0, [r4, #8]
- ldr r0, [r4, #0x38]
- bl FUN_02058450
- str r0, [r4, #0xc]
- mov r0, #6
- lsl r0, r0, #0xc
- str r0, [r4, #0x28]
- ldr r0, [r4, #0x38]
- add r1, sp, #0
- bl FUN_02058B5C
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_0206476C
- mov r0, #1
- add sp, #0xc
- pop {r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5698
-MOD05_021E5698: ; 0x021E5698
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E569C
-MOD05_021E569C: ; 0x021E569C
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r4, r1, #0
- ldr r6, [r4, #0x38]
- ldr r1, [r4, #8]
- add r5, r0, #0
- ldr r2, [r4, #0xc]
- add r0, r6, #0
- bl FUN_020582A8
- cmp r0, #0
- bne _021E56B8
- bl ErrorHandling
-_021E56B8:
- ldr r0, [r4]
- cmp r0, #0
- beq _021E56C8
- cmp r0, #1
- beq _021E56E6
- add sp, #0xc
- cmp r0, #2
- pop {r3, r4, r5, r6, pc}
-_021E56C8:
- add r0, r6, #0
- add r1, sp, #0
- bl FUN_02058B5C
- mov r0, #0xa
- ldr r1, [sp, #8]
- lsl r0, r0, #0xc
- sub r0, r1, r0
- str r0, [sp, #8]
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_0206476C
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
-_021E56E6:
- ldr r0, [r4, #4]
- add r0, r0, #1
- str r0, [r4, #4]
- cmp r0, #0x1e
- blt _021E56F6
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E56F6:
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E56FC
-MOD05_021E56FC: ; 0x021E56FC
- push {r4, r5, r6, lr}
- sub sp, #0x60
- ldr r5, _021E5774 ; =UNK05_021F75B4
- add r2, r0, #0
- add r4, r1, #0
- ldmia r5!, {r0, r1}
- add r3, sp, #0x48
- stmia r3!, {r0, r1}
- ldr r0, [r5]
- ldr r6, _021E5778 ; =UNK05_021F75D4
- str r0, [r3]
- add r5, sp, #0x24
- mov r3, #4
-_021E5716:
- ldmia r6!, {r0, r1}
- stmia r5!, {r0, r1}
- sub r3, r3, #1
- bne _021E5716
- ldr r0, [r6]
- add r1, sp, #0x54
- str r0, [r5]
- add r0, r2, #0
- bl FUN_0206477C
- mov r0, #0x19
- ldr r1, [sp, #0x58]
- lsl r0, r0, #0xc
- add r0, r1, r0
- str r0, [sp, #0x58]
- mov r0, #5
- ldr r1, [sp, #0x5c]
- lsl r0, r0, #0xc
- sub r0, r1, r0
- str r0, [sp, #0x5c]
- bl FUN_020B8344
- mov r2, #0
- add r5, r0, #0
- add r0, sp, #0x24
- mov r1, #0x5a
- add r3, r2, #0
- bl FUN_0201CB20
- add r0, r5, #0
- add r1, sp, #0
- bl MI_Copy36B
- add r0, sp, #0x24
- add r1, sp, #0
- add r2, r0, #0
- bl MTX_Concat33
- ldr r0, [r4, #0x34]
- add r1, sp, #0x54
- add r0, #0xc
- add r2, sp, #0x24
- add r3, sp, #0x48
- bl FUN_0201B2A8
- add sp, #0x60
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021E5774: .word UNK05_021F75B4
-_021E5778: .word UNK05_021F75D4
-
- thumb_func_start MOD05_021E577C
-MOD05_021E577C: ; 0x021E577C
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #0x6c
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4, #8]
- bl MOD05_021E57A8
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5798
-MOD05_021E5798: ; 0x021E5798
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E57C8
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E57A8
-MOD05_021E57A8: ; 0x021E57A8
- push {r3, lr}
- sub sp, #8
- add r3, r0, #0
- add r0, #0x60
- str r0, [sp]
- add r0, r3, #0
- add r0, #0x64
- str r0, [sp, #4]
- ldr r0, [r3, #8]
- mov r1, #0x17
- mov r2, #0
- add r3, #0xc
- bl MOD05_021E51EC
- add sp, #8
- pop {r3, pc}
-
- thumb_func_start MOD05_021E57C8
-MOD05_021E57C8: ; 0x021E57C8
- ldr r3, _021E57D0 ; =MOD05_021E4C00
- ldr r0, [r0, #0x64]
- bx r3
- nop
-_021E57D0: .word MOD05_021E4C00
-
- thumb_func_start MOD05_021E57D4
-MOD05_021E57D4: ; 0x021E57D4
- push {r3, r4, r5, lr}
- sub sp, #0x20
- add r5, r0, #0
- bl MOD05_021E4C24
- add r4, r0, #0
- mov r1, #6
- str r4, [sp, #0x14]
- bl MOD05_021E4C08
- str r0, [sp, #0x18]
- add r0, r5, #0
- add r1, sp, #8
- str r5, [sp, #0x1c]
- bl FUN_02058B5C
- add r0, sp, #0x14
- str r0, [sp]
- mov r0, #0xff
- str r0, [sp, #4]
- ldr r1, _021E580C ; =UNK05_021F7604
- add r0, r4, #0
- add r2, sp, #8
- mov r3, #0
- bl MOD05_021E4DC4
- add sp, #0x20
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021E580C: .word UNK05_021F7604
-
- thumb_func_start MOD05_021E5810
-MOD05_021E5810: ; 0x021E5810
- push {r4, r5, lr}
- sub sp, #0xc
- add r5, r0, #0
- add r4, r1, #0
- bl FUN_0206475C
- add r3, r0, #0
- add r2, r4, #0
- ldmia r3!, {r0, r1}
- add r2, #0x30
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- ldr r0, [r4, #0x38]
- bl FUN_02058448
- str r0, [r4, #8]
- ldr r0, [r4, #0x38]
- bl FUN_02058450
- str r0, [r4, #0xc]
- mov r0, #6
- lsl r0, r0, #0xc
- str r0, [r4, #0x28]
- ldr r0, [r4, #0x38]
- add r1, sp, #0
- bl FUN_02058B5C
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_0206476C
- mov r0, #1
- add sp, #0xc
- pop {r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5858
-MOD05_021E5858: ; 0x021E5858
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E585C
-MOD05_021E585C: ; 0x021E585C
- push {r4, r5, lr}
- sub sp, #0xc
- add r2, r1, #0
- ldr r5, [r2, #0x38]
- ldr r1, [r2, #8]
- add r4, r0, #0
- ldr r2, [r2, #0xc]
- add r0, r5, #0
- bl FUN_020582A8
- cmp r0, #0
- bne _021E5878
- bl ErrorHandling
-_021E5878:
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_02058B5C
- mov r0, #0xa
- ldr r1, [sp, #8]
- lsl r0, r0, #0xc
- sub r0, r1, r0
- str r0, [sp, #8]
- add r0, r4, #0
- add r1, sp, #0
- bl FUN_0206476C
- add sp, #0xc
- pop {r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5898
-MOD05_021E5898: ; 0x021E5898
- push {r4, r5, r6, lr}
- sub sp, #0x60
- ldr r5, _021E5910 ; =UNK05_021F75F8
- add r2, r0, #0
- add r4, r1, #0
- ldmia r5!, {r0, r1}
- add r3, sp, #0x48
- stmia r3!, {r0, r1}
- ldr r0, [r5]
- ldr r6, _021E5914 ; =UNK05_021F7618
- str r0, [r3]
- add r5, sp, #0x24
- mov r3, #4
-_021E58B2:
- ldmia r6!, {r0, r1}
- stmia r5!, {r0, r1}
- sub r3, r3, #1
- bne _021E58B2
- ldr r0, [r6]
- add r1, sp, #0x54
- str r0, [r5]
- add r0, r2, #0
- bl FUN_0206477C
- mov r0, #0x19
- ldr r1, [sp, #0x58]
- lsl r0, r0, #0xc
- add r0, r1, r0
- str r0, [sp, #0x58]
- mov r0, #5
- ldr r1, [sp, #0x5c]
- lsl r0, r0, #0xc
- sub r0, r1, r0
- str r0, [sp, #0x5c]
- bl FUN_020B8344
- mov r2, #0
- add r5, r0, #0
- add r0, sp, #0x24
- mov r1, #0x5a
- add r3, r2, #0
- bl FUN_0201CB20
- add r0, r5, #0
- add r1, sp, #0
- bl MI_Copy36B
- add r0, sp, #0x24
- add r1, sp, #0
- add r2, r0, #0
- bl MTX_Concat33
- ldr r0, [r4, #0x34]
- add r1, sp, #0x54
- add r0, #0xc
- add r2, sp, #0x24
- add r3, sp, #0x48
- bl FUN_0201B2A8
- add sp, #0x60
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021E5910: .word UNK05_021F75F8
-_021E5914: .word UNK05_021F7618
-
- thumb_func_start MOD05_021E5918
-MOD05_021E5918: ; 0x021E5918
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #0x6c
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4, #8]
- bl MOD05_021E5944
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5934
-MOD05_021E5934: ; 0x021E5934
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E5964
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5944
-MOD05_021E5944: ; 0x021E5944
- push {r3, lr}
- sub sp, #8
- add r3, r0, #0
- add r0, #0x60
- str r0, [sp]
- add r0, r3, #0
- add r0, #0x64
- str r0, [sp, #4]
- ldr r0, [r3, #8]
- mov r1, #0x18
- mov r2, #0
- add r3, #0xc
- bl MOD05_021E51EC
- add sp, #8
- pop {r3, pc}
-
- thumb_func_start MOD05_021E5964
-MOD05_021E5964: ; 0x021E5964
- ldr r3, _021E596C ; =MOD05_021E4C00
- ldr r0, [r0, #0x64]
- bx r3
- nop
-_021E596C: .word MOD05_021E4C00
-
- thumb_func_start MOD05_021E5970
-MOD05_021E5970: ; 0x021E5970
- push {r3, r4, r5, lr}
- sub sp, #0x20
- add r5, r0, #0
- bl MOD05_021E4C24
- add r4, r0, #0
- mov r1, #7
- str r4, [sp, #0x14]
- bl MOD05_021E4C08
- str r0, [sp, #0x18]
- add r0, r5, #0
- add r1, sp, #8
- str r5, [sp, #0x1c]
- bl FUN_02058B5C
- add r0, sp, #0x14
- str r0, [sp]
- mov r0, #0xff
- str r0, [sp, #4]
- ldr r1, _021E59A8 ; =UNK05_021F7648
- add r0, r4, #0
- add r2, sp, #8
- mov r3, #0
- bl MOD05_021E4DC4
- add sp, #0x20
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021E59A8: .word UNK05_021F7648
-
- thumb_func_start MOD05_021E59AC
-MOD05_021E59AC: ; 0x021E59AC
- push {r4, r5, lr}
- sub sp, #0xc
- add r5, r0, #0
- add r4, r1, #0
- bl FUN_0206475C
- add r3, r0, #0
- add r2, r4, #0
- ldmia r3!, {r0, r1}
- add r2, #0x34
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- ldr r0, [r4, #0x3c]
- bl FUN_02058448
- str r0, [r4, #8]
- ldr r0, [r4, #0x3c]
- bl FUN_02058450
- str r0, [r4, #0xc]
- mov r0, #6
- lsl r0, r0, #0xc
- str r0, [r4, #0x28]
- ldr r0, [r4, #0x3c]
- add r1, sp, #0
- bl FUN_02058B5C
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_0206476C
- mov r0, #0x3c
- str r0, [r4, #0x30]
- mov r0, #1
- add sp, #0xc
- pop {r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E59F8
-MOD05_021E59F8: ; 0x021E59F8
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E59FC
-MOD05_021E59FC: ; 0x021E59FC
- push {r3, r4, lr}
- sub sp, #0xc
- ldr r2, [r1, #0x30]
- add r4, r0, #0
- cmp r2, #0
- beq _021E5A0E
- sub r0, r2, #1
- str r0, [r1, #0x30]
- b _021E5A16
-_021E5A0E:
- bl MOD05_021E4DE4
- add sp, #0xc
- pop {r3, r4, pc}
-_021E5A16:
- ldr r0, [r1, #0x3c]
- add r1, sp, #0
- bl FUN_02058B5C
- mov r0, #0xa
- ldr r1, [sp, #8]
- lsl r0, r0, #0xc
- sub r0, r1, r0
- str r0, [sp, #8]
- add r0, r4, #0
- add r1, sp, #0
- bl FUN_0206476C
- add sp, #0xc
- pop {r3, r4, pc}
-
- thumb_func_start MOD05_021E5A34
-MOD05_021E5A34: ; 0x021E5A34
- push {r4, r5, r6, lr}
- sub sp, #0x60
- ldr r5, _021E5AAC ; =UNK05_021F763C
- add r2, r0, #0
- add r4, r1, #0
- ldmia r5!, {r0, r1}
- add r3, sp, #0x48
- stmia r3!, {r0, r1}
- ldr r0, [r5]
- ldr r6, _021E5AB0 ; =UNK05_021F765C
- str r0, [r3]
- add r5, sp, #0x24
- mov r3, #4
-_021E5A4E:
- ldmia r6!, {r0, r1}
- stmia r5!, {r0, r1}
- sub r3, r3, #1
- bne _021E5A4E
- ldr r0, [r6]
- add r1, sp, #0x54
- str r0, [r5]
- add r0, r2, #0
- bl FUN_0206477C
- mov r0, #0x19
- ldr r1, [sp, #0x58]
- lsl r0, r0, #0xc
- add r0, r1, r0
- str r0, [sp, #0x58]
- mov r0, #5
- ldr r1, [sp, #0x5c]
- lsl r0, r0, #0xc
- sub r0, r1, r0
- str r0, [sp, #0x5c]
- bl FUN_020B8344
- mov r2, #0
- add r5, r0, #0
- add r0, sp, #0x24
- mov r1, #0x5a
- add r3, r2, #0
- bl FUN_0201CB20
- add r0, r5, #0
- add r1, sp, #0
- bl MI_Copy36B
- add r0, sp, #0x24
- add r1, sp, #0
- add r2, r0, #0
- bl MTX_Concat33
- ldr r0, [r4, #0x38]
- add r1, sp, #0x54
- add r0, #0xc
- add r2, sp, #0x24
- add r3, sp, #0x48
- bl FUN_0201B2A8
- add sp, #0x60
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021E5AAC: .word UNK05_021F763C
-_021E5AB0: .word UNK05_021F765C
-
- thumb_func_start MOD05_021E5AB4
-MOD05_021E5AB4: ; 0x021E5AB4
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #0x38
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4]
- bl MOD05_021E5AE0
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5AD0
-MOD05_021E5AD0: ; 0x021E5AD0
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E5B18
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5AE0
-MOD05_021E5AE0: ; 0x021E5AE0
- push {r4, lr}
- sub sp, #8
- add r4, r0, #0
- add r1, r4, #0
- ldr r0, [r4]
- add r1, #0x28
- bl MOD05_021E5294
- ldr r0, [r4]
- add r1, r4, #4
- mov r2, #0x3a
- mov r3, #0
- bl MOD05_021E5224
- mov r0, #0x71
- str r0, [sp]
- mov r0, #0
- str r0, [sp, #4]
- add r1, r4, #0
- ldr r0, [r4]
- add r2, r4, #4
- add r4, #0x28
- add r1, #0x14
- add r3, r4, #0
- bl MOD05_021E5260
- add sp, #8
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5B18
-MOD05_021E5B18: ; 0x021E5B18
- push {r4, lr}
- add r4, r0, #0
- add r0, r4, #4
- bl MOD05_021F52C8
- add r0, r4, #0
- add r4, #0x28
- add r0, #0x14
- add r1, r4, #0
- bl MOD05_021F5358
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5B30
-MOD05_021E5B30: ; 0x021E5B30
- push {r4, r5, lr}
- sub sp, #0x1c
- ldr r0, [r0, #0x3c]
- add r5, r1, #0
- mov r1, #8
- add r4, r3, #0
- str r0, [sp, #8]
- bl MOD05_021E4C08
- str r0, [sp, #0xc]
- mov r0, #2
- lsl r1, r5, #0x10
- lsl r0, r0, #0xe
- add r0, r1, r0
- str r0, [sp, #0x10]
- mov r0, #0xa
- lsl r0, r0, #0xc
- str r0, [sp, #0x14]
- lsl r0, r4, #0x10
- str r0, [sp, #0x18]
- add r0, sp, #8
- str r0, [sp]
- mov r0, #0xff
- str r0, [sp, #4]
- ldr r0, [sp, #8]
- ldr r1, _021E5B78 ; =UNK05_021F768C
- add r2, sp, #0x10
- mov r3, #0
- bl MOD05_021E4DC4
- ldr r0, _021E5B7C ; =0x00000609
- bl FUN_020054C8
- add sp, #0x1c
- pop {r4, r5, pc}
- nop
-_021E5B78: .word UNK05_021F768C
-_021E5B7C: .word 0x00000609
-
- thumb_func_start MOD05_021E5B80
-MOD05_021E5B80: ; 0x021E5B80
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r6, r0, #0
- add r5, r1, #0
- bl FUN_0206475C
- ldr r1, [r0]
- ldr r0, [r0, #4]
- mov r2, #1
- str r1, [r5, #4]
- str r0, [r5, #8]
- ldr r0, [r5, #4]
- mov r1, #0x90
- mov r3, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r4, [r5]
- ldr r0, [r5, #4]
- add r1, r4, #4
- bl MOD05_021E5294
- ldr r2, [r5, #8]
- add r0, r4, #4
- ldr r1, [r2, #0x18]
- ldr r2, [r2, #0xc]
- bl FUN_020BB8D0
- str r0, [r4]
- ldr r3, [r5, #8]
- ldr r1, [r3, #0x18]
- ldr r2, [r3, #0xc]
- ldr r3, [r3, #0x10]
- bl FUN_020B8110
- ldr r1, [r5, #8]
- add r0, r4, #0
- add r0, #0x18
- add r1, r1, #4
- bl MOD05_021F5400
- add r0, r4, #0
- ldr r1, [r4]
- add r0, #0x18
- bl FUN_020B7EFC
- add r0, r6, #0
- add r1, sp, #0
- bl FUN_0206477C
- add r4, #0x18
- ldr r1, [sp]
- ldr r2, [sp, #4]
- ldr r3, [sp, #8]
- add r0, r4, #0
- bl MOD05_021F54D0
- mov r0, #1
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E5BF8
-MOD05_021E5BF8: ; 0x021E5BF8
- push {r4, lr}
- ldr r4, [r1]
- ldr r1, [r4]
- add r0, r4, #4
- bl thunk_FUN_020ae84c
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5C0C
-MOD05_021E5C0C: ; 0x021E5C0C
- push {r4, lr}
- ldr r1, [r1]
- ldr r2, [r1]
- ldr r3, [r1, #0x14]
- ldr r2, [r2, #8]
- ldrh r2, [r2, #4]
- lsl r4, r2, #0xc
- mov r2, #1
- lsl r2, r2, #0xc
- add r2, r3, r2
- str r2, [r1, #0x14]
- cmp r2, r4
- ble _021E5C2C
- bl MOD05_021E4DE4
- pop {r4, pc}
-_021E5C2C:
- ldr r0, [r1]
- str r2, [r0]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5C34
-MOD05_021E5C34: ; 0x021E5C34
- push {r3, r4, r5, lr}
- sub sp, #0x48
- ldr r4, [r1]
- ldr r5, _021E5C88 ; =UNK05_021F76A0
- add r3, sp, #0x24
- mov r2, #4
-_021E5C40:
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- sub r2, r2, #1
- bne _021E5C40
- ldr r0, [r5]
- str r0, [r3]
- bl FUN_020B8344
- mov r2, #0
- add r5, r0, #0
- add r0, sp, #0x24
- mov r1, #0x5a
- add r3, r2, #0
- bl FUN_0201CB20
- add r0, r5, #0
- add r1, sp, #0
- bl MI_Copy36B
- add r0, sp, #0x24
- add r1, sp, #0
- add r2, r0, #0
- bl MTX_Concat33
- add r0, r4, #0
- add r1, r4, #0
- add r4, #0x78
- add r0, #0x18
- add r1, #0x6c
- add r2, sp, #0x24
- add r3, r4, #0
- bl FUN_0201B26C
- add sp, #0x48
- pop {r3, r4, r5, pc}
- nop
-_021E5C88: .word UNK05_021F76A0
-
- thumb_func_start MOD05_021E5C8C
-MOD05_021E5C8C: ; 0x021E5C8C
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #0x3c
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4, #4]
- bl MOD05_021E5CB8
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5CA8
-MOD05_021E5CA8: ; 0x021E5CA8
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E5CF4
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5CB8
-MOD05_021E5CB8: ; 0x021E5CB8
- push {r4, lr}
- sub sp, #8
- add r4, r0, #0
- add r1, r4, #0
- ldr r0, [r4, #4]
- add r1, #0x2c
- bl MOD05_021E5294
- add r1, r4, #0
- ldr r0, [r4, #4]
- add r1, #8
- mov r2, #0x5c
- mov r3, #0
- bl MOD05_021E5224
- mov r0, #0x73
- str r0, [sp]
- mov r0, #0
- str r0, [sp, #4]
- add r1, r4, #0
- add r2, r4, #0
- ldr r0, [r4, #4]
- add r4, #0x2c
- add r1, #0x18
- add r2, #8
- add r3, r4, #0
- bl MOD05_021E5260
- add sp, #8
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5CF4
-MOD05_021E5CF4: ; 0x021E5CF4
- push {r4, lr}
- add r4, r0, #0
- add r0, #8
- bl MOD05_021F52C8
- add r0, r4, #0
- add r4, #0x2c
- add r0, #0x18
- add r1, r4, #0
- bl MOD05_021F5358
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5D0C
-MOD05_021E5D0C: ; 0x021E5D0C
- push {r4, r5, lr}
- sub sp, #0x1c
- ldr r0, [r0, #0x3c]
- add r5, r1, #0
- mov r1, #9
- add r4, r2, #0
- str r0, [sp, #8]
- bl MOD05_021E4C08
- str r0, [sp, #0xc]
- mov r0, #2
- mov r3, #0
- lsl r1, r5, #0x10
- lsl r0, r0, #0xe
- add r1, r1, r0
- str r1, [sp, #0x10]
- lsl r1, r4, #0x10
- add r0, r1, r0
- str r0, [sp, #0x18]
- str r3, [sp, #0x14]
- add r0, sp, #8
- str r0, [sp]
- mov r0, #0xff
- str r0, [sp, #4]
- ldr r0, [sp, #8]
- ldr r1, _021E5D4C ; =UNK05_021F76C4
- add r2, sp, #0x10
- bl MOD05_021E4DC4
- add sp, #0x1c
- pop {r4, r5, pc}
- nop
-_021E5D4C: .word UNK05_021F76C4
-
- thumb_func_start MOD05_021E5D50
-MOD05_021E5D50: ; 0x021E5D50
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r6, r0, #0
- add r5, r1, #0
- bl FUN_0206475C
- ldr r1, [r0]
- ldr r0, [r0, #4]
- mov r2, #1
- str r1, [r5, #4]
- str r0, [r5, #8]
- ldr r0, [r5, #4]
- mov r1, #0x90
- mov r3, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r4, [r5]
- ldr r0, [r5, #4]
- add r1, r4, #4
- bl MOD05_021E5294
- ldr r2, [r5, #8]
- add r0, r4, #4
- ldr r1, [r2, #0x1c]
- ldr r2, [r2, #0x10]
- bl FUN_020BB8D0
- str r0, [r4]
- ldr r3, [r5, #8]
- ldr r1, [r3, #0x1c]
- ldr r2, [r3, #0x10]
- ldr r3, [r3, #0x14]
- bl FUN_020B8110
- ldr r1, [r5, #8]
- add r0, r4, #0
- add r0, #0x18
- add r1, #8
- bl MOD05_021F5400
- add r0, r4, #0
- ldr r1, [r4]
- add r0, #0x18
- bl FUN_020B7EFC
- add r0, r6, #0
- add r1, sp, #0
- bl FUN_0206477C
- add r4, #0x18
- ldr r1, [sp]
- ldr r2, [sp, #4]
- ldr r3, [sp, #8]
- add r0, r4, #0
- bl MOD05_021F54D0
- mov r0, #1
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E5DC8
-MOD05_021E5DC8: ; 0x021E5DC8
- push {r4, lr}
- ldr r4, [r1]
- ldr r1, [r4]
- add r0, r4, #4
- bl thunk_FUN_020ae84c
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5DDC
-MOD05_021E5DDC: ; 0x021E5DDC
- push {r4, lr}
- ldr r1, [r1]
- ldr r2, [r1]
- ldr r3, [r1, #0x14]
- ldr r2, [r2, #8]
- ldrh r2, [r2, #4]
- lsl r4, r2, #0xc
- mov r2, #1
- lsl r2, r2, #0xc
- add r2, r3, r2
- str r2, [r1, #0x14]
- cmp r2, r4
- ble _021E5DFC
- bl MOD05_021E4DE4
- pop {r4, pc}
-_021E5DFC:
- ldr r0, [r1]
- str r2, [r0]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5E04
-MOD05_021E5E04: ; 0x021E5E04
- ldr r0, [r1]
- ldr r3, _021E5E0C ; =MOD05_021F5430
- add r0, #0x18
- bx r3
- .balign 4, 0
-_021E5E0C: .word MOD05_021F5430
-
- thumb_func_start MOD05_021E5E10
-MOD05_021E5E10: ; 0x021E5E10
- push {r3, r4, r5, lr}
- mov r2, #0
- mov r1, #0x38
- add r3, r2, #0
- add r5, r0, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r5, [r4]
- bl MOD05_021E5E3C
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5E2C
-MOD05_021E5E2C: ; 0x021E5E2C
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E5E74
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5E3C
-MOD05_021E5E3C: ; 0x021E5E3C
- push {r4, lr}
- sub sp, #8
- add r4, r0, #0
- add r1, r4, #0
- ldr r0, [r4]
- add r1, #0x28
- bl MOD05_021E5294
- ldr r0, [r4]
- add r1, r4, #4
- mov r2, #0x5b
- mov r3, #0
- bl MOD05_021E5224
- mov r0, #0x72
- str r0, [sp]
- mov r0, #0
- str r0, [sp, #4]
- add r1, r4, #0
- ldr r0, [r4]
- add r2, r4, #4
- add r4, #0x28
- add r1, #0x14
- add r3, r4, #0
- bl MOD05_021E5260
- add sp, #8
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5E74
-MOD05_021E5E74: ; 0x021E5E74
- push {r4, lr}
- add r4, r0, #0
- add r0, r4, #4
- bl MOD05_021F52C8
- add r0, r4, #0
- add r4, #0x28
- add r0, #0x14
- add r1, r4, #0
- bl MOD05_021F5358
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5E8C
-MOD05_021E5E8C: ; 0x021E5E8C
- push {r3, r4, lr}
- sub sp, #0x1c
- add r4, r0, #0
- bl MOD05_021E4C24
- mov r1, #0xa
- str r0, [sp, #8]
- bl MOD05_021E4C08
- str r0, [sp, #0xc]
- add r0, r4, #0
- add r1, sp, #0x10
- bl FUN_02058B5C
- add r0, r4, #0
- bl FUN_020584C4
- cmp r0, #3
- bhi _021E5EF4
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E5EBE: ; jump table
- .short _021E5EC6 - _021E5EBE - 2 ; case 0
- .short _021E5ED2 - _021E5EBE - 2 ; case 1
- .short _021E5EEA - _021E5EBE - 2 ; case 2
- .short _021E5EDE - _021E5EBE - 2 ; case 3
-_021E5EC6:
- mov r0, #1
- ldr r1, [sp, #0x18]
- lsl r0, r0, #0x10
- sub r0, r1, r0
- str r0, [sp, #0x18]
- b _021E5EF4
-_021E5ED2:
- mov r0, #1
- ldr r1, [sp, #0x18]
- lsl r0, r0, #0x10
- add r0, r1, r0
- str r0, [sp, #0x18]
- b _021E5EF4
-_021E5EDE:
- mov r0, #1
- ldr r1, [sp, #0x10]
- lsl r0, r0, #0x10
- add r0, r1, r0
- str r0, [sp, #0x10]
- b _021E5EF4
-_021E5EEA:
- mov r0, #1
- ldr r1, [sp, #0x10]
- lsl r0, r0, #0x10
- sub r0, r1, r0
- str r0, [sp, #0x10]
-_021E5EF4:
- add r0, r4, #0
- mov r1, #2
- bl FUN_0205829C
- add r1, sp, #8
- str r1, [sp]
- str r0, [sp, #4]
- ldr r0, [sp, #8]
- ldr r1, _021E5F14 ; =UNK05_021F76D8
- add r2, sp, #0x10
- mov r3, #0
- bl MOD05_021E4DC4
- add sp, #0x1c
- pop {r3, r4, pc}
- nop
-_021E5F14: .word UNK05_021F76D8
-
- thumb_func_start MOD05_021E5F18
-MOD05_021E5F18: ; 0x021E5F18
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r6, r0, #0
- add r5, r1, #0
- bl FUN_0206475C
- ldr r1, [r0]
- ldr r0, [r0, #4]
- mov r2, #1
- str r1, [r5, #4]
- str r0, [r5, #8]
- ldr r0, [r5, #4]
- mov r1, #0x90
- mov r3, #0
- bl MOD05_021E4BE8
- add r4, r0, #0
- str r4, [r5]
- ldr r0, [r5, #4]
- add r1, r4, #4
- bl MOD05_021E5294
- ldr r2, [r5, #8]
- add r0, r4, #4
- ldr r1, [r2, #0x18]
- ldr r2, [r2, #0xc]
- bl FUN_020BB8D0
- str r0, [r4]
- ldr r3, [r5, #8]
- ldr r1, [r3, #0x18]
- ldr r2, [r3, #0xc]
- ldr r3, [r3, #0x10]
- bl FUN_020B8110
- ldr r1, [r5, #8]
- add r0, r4, #0
- add r0, #0x18
- add r1, r1, #4
- bl MOD05_021F5400
- add r0, r4, #0
- ldr r1, [r4]
- add r0, #0x18
- bl FUN_020B7EFC
- add r0, r6, #0
- add r1, sp, #0
- bl FUN_0206477C
- add r4, #0x18
- ldr r1, [sp]
- ldr r2, [sp, #4]
- ldr r3, [sp, #8]
- add r0, r4, #0
- bl MOD05_021F54D0
- mov r0, #1
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E5F90
-MOD05_021E5F90: ; 0x021E5F90
- push {r4, lr}
- ldr r4, [r1]
- ldr r1, [r4]
- add r0, r4, #4
- bl thunk_FUN_020ae84c
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E5FA4
-MOD05_021E5FA4: ; 0x021E5FA4
- push {r4, lr}
- ldr r1, [r1]
- ldr r2, [r1]
- ldr r3, [r1, #0x14]
- ldr r2, [r2, #8]
- ldrh r2, [r2, #4]
- lsl r4, r2, #0xc
- mov r2, #1
- lsl r2, r2, #0xc
- add r2, r3, r2
- str r2, [r1, #0x14]
- cmp r2, r4
- ble _021E5FC4
- bl MOD05_021E4DE4
- pop {r4, pc}
-_021E5FC4:
- ldr r0, [r1]
- str r2, [r0]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E5FCC
-MOD05_021E5FCC: ; 0x021E5FCC
- ldr r0, [r1]
- ldr r3, _021E5FD4 ; =MOD05_021F5430
- add r0, #0x18
- bx r3
- .balign 4, 0
-_021E5FD4: .word MOD05_021F5430
-
- thumb_func_start MOD05_021E5FD8
-MOD05_021E5FD8: ; 0x021E5FD8
- ldr r3, _021E5FDC ; =FUN_020553D4
- bx r3
- .balign 4, 0
-_021E5FDC: .word FUN_020553D4
-
- thumb_func_start MOD05_021E5FE0
-MOD05_021E5FE0: ; 0x021E5FE0
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- mov r6, #0
- bl FUN_020553E0
- ldr r5, _021E6010 ; =UNK05_021F7734
- add r4, r0, #0
-_021E5FEE:
- mov r0, #1
- tst r0, r4
- beq _021E5FFA
- ldr r1, [r5]
- add r0, r7, #0
- blx r1
-_021E5FFA:
- add r6, r6, #1
- lsr r4, r4, #1
- add r5, r5, #4
- cmp r6, #9
- blo _021E5FEE
- add r0, r7, #0
- mov r1, #0
- bl FUN_020553DC
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E6010: .word UNK05_021F7734
-
- thumb_func_start MOD05_021E6014
-MOD05_021E6014: ; 0x021E6014
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #0
- bl FUN_020555A0
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E726C
- add r0, r4, #0
- mov r1, #0
- bl FUN_020553A8
- add r0, r4, #0
- bl FUN_02055410
- add r0, r4, #0
- bl FUN_02055454
- cmp r0, #0
- beq _021E6048
- bl MOD05_021E4DE4
-_021E6048:
- add r0, r4, #0
- mov r1, #0
- bl FUN_02055450
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6054
-MOD05_021E6054: ; 0x021E6054
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #1
- bl FUN_020555A0
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E726C
- add r0, r4, #0
- mov r1, #1
- bl FUN_020553A8
- add r0, r4, #0
- bl FUN_02055410
- add r0, r4, #0
- bl FUN_02055454
- cmp r0, #0
- beq _021E6088
- bl MOD05_021E4DE4
-_021E6088:
- add r0, r4, #0
- mov r1, #0
- bl FUN_02055450
- ldr r0, _021E6098 ; =0x00000618
- bl FUN_020054C8
- pop {r4, pc}
- .balign 4, 0
-_021E6098: .word 0x00000618
-
- thumb_func_start MOD05_021E609C
-MOD05_021E609C: ; 0x021E609C
- push {r3, r4, r5, r6, lr}
- sub sp, #4
- add r5, r0, #0
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #2
- bl FUN_020555A0
- add r1, r0, #0
- add r0, r5, #0
- bl MOD05_021E726C
- add r0, r5, #0
- mov r1, #2
- bl FUN_020553A8
- add r0, r5, #0
- bl FUN_02055410
- add r0, r5, #0
- bl FUN_02055454
- cmp r0, #0
- beq _021E60D2
- bl MOD05_021E4DE4
-_021E60D2:
- add r0, r5, #0
- mov r1, #0
- bl FUN_02055450
- add r0, r5, #0
- bl FUN_020552F8
- add r4, r0, #0
- add r0, r5, #0
- bl FUN_020553A0
- add r6, r0, #0
- bl FUN_02058738
- mov r0, #1
- mov r1, #0
- str r0, [sp]
- add r0, r6, #0
- add r2, r1, #0
- add r3, r4, #0
- bl MOD06_0224ABAC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_02055450
- add sp, #4
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E610C
-MOD05_021E610C: ; 0x021E610C
- ldr r3, _021E6114 ; =FUN_020556C8
- mov r1, #1
- bx r3
- nop
-_021E6114: .word FUN_020556C8
-
- thumb_func_start MOD05_021E6118
-MOD05_021E6118: ; 0x021E6118
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #4
- bl FUN_020555A0
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E726C
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6134
-MOD05_021E6134: ; 0x021E6134
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #6
- bl FUN_020555A0
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E726C
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6150
-MOD05_021E6150: ; 0x021E6150
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #7
- bl FUN_020555A0
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E726C
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E616C
-MOD05_021E616C: ; 0x021E616C
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #8
- bl FUN_020555A0
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E726C
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6188
-MOD05_021E6188: ; 0x021E6188
- push {r4, lr}
- add r4, r0, #0
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #9
- bl FUN_020555A0
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E726C
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E61A4
-MOD05_021E61A4: ; 0x021E61A4
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- add r6, r0, #0
- add r0, r5, #0
- add r4, r2, #0
- add r7, r3, #0
- bl FUN_020556B4
- cmp r0, #1
- bne _021E61CE
- add r0, r6, #0
- add r1, r5, #0
- add r2, r7, #0
- bl MOD05_021E68D8
- cmp r0, #1
- bne _021E61CA
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021E61CA:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021E61CE:
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_02055898
- cmp r0, #0
- bne _021E61DE
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021E61DE:
- mov r0, #0
- mvn r0, r0
- cmp r4, r0
- bne _021E61FE
- add r0, r6, #0
- add r1, r5, #0
- add r2, r4, #0
- add r3, r7, #0
- bl MOD05_021E628C
- cmp r0, #1
- bne _021E61FA
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021E61FA:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021E61FE:
- add r0, r6, #0
- add r1, r5, #0
- add r2, r4, #0
- add r3, r7, #0
- bl MOD05_021E6218
- cmp r0, #1
- bne _021E6212
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021E6212:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6218
-MOD05_021E6218: ; 0x021E6218
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- add r4, r2, #0
- add r6, r0, #0
- add r0, r5, #0
- add r1, r4, #0
- add r7, r3, #0
- bl FUN_0205714C
- str r0, [sp]
- mov r0, #1
- tst r0, r7
- beq _021E6246
- ldr r3, [sp]
- add r0, r6, #0
- add r1, r5, #0
- add r2, r4, #0
- bl MOD05_021E62B4
- cmp r0, #1
- bne _021E6246
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021E6246:
- mov r0, #2
- tst r0, r7
- beq _021E6260
- ldr r3, [sp]
- add r0, r6, #0
- add r1, r5, #0
- add r2, r4, #0
- bl MOD05_021E6714
- cmp r0, #1
- bne _021E6260
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021E6260:
- ldr r3, [sp]
- add r0, r6, #0
- add r1, r5, #0
- add r2, r4, #0
- bl MOD05_021E65EC
- cmp r0, #1
- bne _021E6274
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021E6274:
- ldr r3, [sp]
- add r0, r6, #0
- add r1, r5, #0
- add r2, r4, #0
- bl MOD05_021E6758
- cmp r0, #1
- bne _021E6288
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021E6288:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E628C
-MOD05_021E628C: ; 0x021E628C
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r6, r2, #0
- add r5, r0, #0
- add r0, r4, #0
- add r1, r6, #0
- bl FUN_0205714C
- add r3, r0, #0
- add r0, r5, #0
- add r1, r4, #0
- add r2, r6, #0
- bl MOD05_021E6758
- cmp r0, #1
- bne _021E62B0
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E62B0:
- mov r0, #0
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E62B4
-MOD05_021E62B4: ; 0x021E62B4
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- add r5, r1, #0
- add r4, r2, #0
- cmp r3, #1
- beq _021E62C4
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021E62C4:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021E727C
- add r6, r0, #0
- bne _021E62D4
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021E62D4:
- bl FUN_02058458
- cmp r0, #0x54
- beq _021E62E0
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021E62E0:
- add r0, r6, #0
- add r1, r4, #0
- bl FUN_02059918
- mov r1, #1
- bic r0, r1
- beq _021E62F2
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021E62F2:
- add r0, r4, #0
- add r1, r7, #0
- add r2, r5, #0
- add r3, r6, #0
- bl MOD05_021E6304
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6304
-MOD05_021E6304: ; 0x021E6304
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- mov r0, #0x14
- add r4, r1, #0
- add r6, r2, #0
- add r7, r3, #0
- bl MOD05_021E72B8
- add r2, r0, #0
- str r5, [r2, #4]
- str r4, [r2, #8]
- str r7, [r2, #0x10]
- ldr r1, _021E6328 ; =MOD05_021E632C
- add r0, r4, #0
- str r6, [r2, #0xc]
- bl FUN_020463CC
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E6328: .word MOD05_021E632C
-
- thumb_func_start MOD05_021E632C
-MOD05_021E632C: ; 0x021E632C
- push {r4, r5, r6, lr}
- bl FUN_0204652C
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- bl FUN_020553A0
- add r6, r0, #0
- ldr r0, [r4]
- ldr r5, [r4, #0x10]
- cmp r0, #0
- beq _021E634E
- cmp r0, #1
- beq _021E639A
- cmp r0, #2
- beq _021E63C0
- b _021E63CA
-_021E634E:
- add r0, r5, #0
- bl FUN_0205AD98
- cmp r0, #0
- beq _021E63CA
- add r0, r6, #0
- bl FUN_0205AD98
- cmp r0, #0
- bne _021E636C
- ldr r0, [r4, #0xc]
- bl FUN_020570C4
- cmp r0, #0
- beq _021E63CA
-_021E636C:
- ldr r0, [r4, #4]
- mov r1, #8
- bl FUN_0205AFDC
- add r1, r0, #0
- add r0, r5, #0
- bl FUN_0205ADDC
- ldr r0, [r4, #4]
- mov r1, #0x20
- bl FUN_0205AFDC
- add r1, r0, #0
- add r0, r6, #0
- bl FUN_0205ADDC
- ldr r0, _021E63D0 ; =0x00000627
- bl FUN_020054C8
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E63CA
-_021E639A:
- add r0, r5, #0
- bl FUN_0205AE28
- cmp r0, #0
- beq _021E63CA
- add r0, r6, #0
- bl FUN_0205AE28
- cmp r0, #0
- beq _021E63CA
- add r0, r5, #0
- bl FUN_0205AE50
- add r0, r6, #0
- bl FUN_0205AE50
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E63C0:
- add r0, r4, #0
- bl MOD05_021E72DC
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E63CA:
- mov r0, #0
- pop {r4, r5, r6, pc}
- nop
-_021E63D0: .word 0x00000627
-
- thumb_func_start MOD05_021E63D4
-MOD05_021E63D4: ; 0x021E63D4
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- mov r0, #0x2c
- add r7, r1, #0
- add r5, r2, #0
- bl MOD05_021E72B8
- add r4, r0, #0
- str r7, [r4, #4]
- str r6, [r4, #0x1c]
- ldr r0, [r6, #0x38]
- str r0, [r4, #0x20]
- bl FUN_020553A0
- add r2, r4, #0
- str r0, [r4, #0x24]
- add r2, #0xc
- ldmia r5!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r6, #0x10]
- ldr r1, _021E640C ; =MOD05_021E6484
- add r2, r4, #0
- bl FUN_0204640C
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E640C: .word MOD05_021E6484
-
- thumb_func_start MOD05_021E6410
-MOD05_021E6410: ; 0x021E6410
- push {r4, r5, r6, lr}
- sub sp, #0x10
- add r6, r2, #0
- add r5, r1, #0
- bl FUN_02046528
- add r4, r0, #0
- add r1, r6, #0
- bl MOD05_021E72E8
- add r1, r0, #0
- add r0, r4, #0
- add r2, sp, #0
- bl MOD05_021E7228
- add r0, r4, #0
- add r1, r5, #0
- add r2, sp, #0
- bl MOD05_021E63D4
- add sp, #0x10
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E643C
-MOD05_021E643C: ; 0x021E643C
- push {r4, r5, r6, lr}
- add r4, r2, #0
- add r5, r1, #0
- bl FUN_020553A0
- add r6, r0, #0
- lsl r0, r4, #0x18
- lsr r0, r0, #0x18
- bl FUN_0205481C
- cmp r0, #1
- bne _021E647E
- lsl r0, r5, #0x18
- lsr r0, r0, #0x18
- bl FUN_02054B78
- cmp r0, #1
- beq _021E646C
- lsl r0, r5, #0x18
- lsr r0, r0, #0x18
- bl FUN_02054B6C
- cmp r0, #1
- bne _021E647A
-_021E646C:
- add r0, r6, #0
- bl FUN_02058A68
- cmp r0, #1
- bne _021E647A
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E647A:
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E647E:
- mov r0, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6484
-MOD05_021E6484: ; 0x021E6484
- push {r3, r4, r5, r6, r7, lr}
- bl FUN_0204652C
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #7
- bhi _021E64D4
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E649E: ; jump table
- .short _021E64AE - _021E649E - 2 ; case 0
- .short _021E64CA - _021E649E - 2 ; case 1
- .short _021E64E2 - _021E649E - 2 ; case 2
- .short _021E6500 - _021E649E - 2 ; case 3
- .short _021E6514 - _021E649E - 2 ; case 4
- .short _021E655E - _021E649E - 2 ; case 5
- .short _021E658A - _021E649E - 2 ; case 6
- .short _021E65AC - _021E649E - 2 ; case 7
-_021E64AE:
- ldr r0, [r4, #0x1c]
- mov r1, #0
- bl FUN_0204AB20
- ldr r0, [r4, #0x1c]
- ldr r1, _021E65E8 ; =0x0000047F
- mov r2, #1
- bl FUN_0204ABDC
- ldr r0, [r4]
- add r0, r0, #1
- add r0, r0, #1
- str r0, [r4]
- b _021E65E4
-_021E64CA:
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- cmp r0, #0xa
- bgt _021E64D6
-_021E64D4:
- b _021E65E4
-_021E64D6:
- mov r0, #0
- str r0, [r4, #8]
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E65E4
-_021E64E2:
- ldr r0, [r4, #0xc]
- cmp r0, #1
- bne _021E64FA
- add r1, r4, #0
- ldr r0, [r4, #0x1c]
- add r1, #0xc
- bl MOD05_021E723C
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E65E4
-_021E64FA:
- mov r0, #4
- str r0, [r4]
- b _021E65E4
-_021E6500:
- add r0, r4, #0
- add r0, #0xc
- bl MOD05_021E7250
- cmp r0, #1
- bne _021E65E4
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E65E4
-_021E6514:
- ldr r0, [r4, #0x20]
- bl FUN_02055320
- add r5, r0, #0
- ldr r0, [r4, #4]
- bl FUN_02059BF4
- add r6, r0, #0
- ldr r0, [r4, #0x20]
- bl FUN_0205532C
- add r7, r0, #0
- ldr r0, [r4, #4]
- bl FUN_02059C00
- add r2, r0, #0
- mov r0, #0
- str r0, [sp]
- ldr r0, [r4, #0x24]
- ldr r3, [r4, #4]
- add r1, r5, r6
- add r2, r7, r2
- bl MOD06_0224ABAC
- str r0, [r4, #0x28]
- ldr r0, [r4, #0x20]
- ldr r1, [r4, #0x28]
- bl FUN_02055450
- ldr r0, [r4, #0x20]
- mov r1, #2
- bl FUN_020553A8
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E65E4
-_021E655E:
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- cmp r0, #0xa
- ble _021E65E4
- ldr r0, [r4, #0x20]
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #0
- bl FUN_020555A0
- add r1, r0, #0
- ldr r0, [r4, #0x20]
- bl MOD05_021E726C
- mov r0, #0
- str r0, [r4, #8]
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E65E4
-_021E658A:
- ldr r0, [r4, #0x24]
- bl FUN_0205AD98
- cmp r0, #1
- bne _021E65E4
- ldr r0, [r4, #4]
- mov r1, #0x34
- bl FUN_0205AFDC
- add r1, r0, #0
- ldr r0, [r4, #0x24]
- bl FUN_0205ADDC
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E65E4
-_021E65AC:
- ldr r0, [r4, #0x24]
- bl FUN_0205AE28
- cmp r0, #0
- beq _021E65E4
- ldr r0, [r4, #0x24]
- bl FUN_0205AE50
- ldr r0, [r4, #0x28]
- mov r1, #1
- bl MOD06_0224ADF8
- ldr r0, [r4, #0x20]
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #2
- bl FUN_020555A0
- add r1, r0, #0
- ldr r0, [r4, #0x20]
- bl MOD05_021E726C
- add r0, r4, #0
- bl MOD05_021E72DC
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_021E65E4:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E65E8: .word 0x0000047F
-
- thumb_func_start MOD05_021E65EC
-MOD05_021E65EC: ; 0x021E65EC
- push {r4, r5, r6, lr}
- add r6, r0, #0
- add r5, r1, #0
- add r4, r2, #0
- cmp r3, #1
- bne _021E6602
- add r0, r5, #0
- bl FUN_020553C4
- cmp r0, #2
- beq _021E6606
-_021E6602:
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E6606:
- add r0, r5, #0
- bl FUN_020553A0
- add r1, r0, #0
- add r0, r5, #0
- add r2, r4, #0
- bl FUN_02056B74
- cmp r0, #0x20
- bne _021E661E
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E661E:
- mov r1, #0x20
- bic r0, r1
- beq _021E6628
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E6628:
- add r0, r4, #0
- add r1, r6, #0
- add r2, r5, #0
- bl MOD05_021E6638
- mov r0, #1
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6638
-MOD05_021E6638: ; 0x021E6638
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- mov r0, #0x18
- add r5, r1, #0
- add r7, r2, #0
- bl MOD05_021E72B8
- add r4, r0, #0
- str r6, [r4, #4]
- str r5, [r4, #8]
- str r7, [r4, #0xc]
- add r0, r7, #0
- bl FUN_020553A0
- str r0, [r4, #0x10]
- add r0, r7, #0
- bl FUN_02055454
- str r0, [r4, #0x14]
- cmp r0, #0
- bne _021E6666
- bl ErrorHandling
-_021E6666:
- ldr r1, _021E6674 ; =MOD05_021E6678
- add r0, r5, #0
- add r2, r4, #0
- bl FUN_020463CC
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E6674: .word MOD05_021E6678
-
- thumb_func_start MOD05_021E6678
-MOD05_021E6678: ; 0x021E6678
- push {r4, lr}
- bl FUN_0204652C
- add r4, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021E668C
- cmp r0, #1
- beq _021E66CC
- b _021E6710
-_021E668C:
- ldr r0, [r4, #0x10]
- bl FUN_0205AD98
- cmp r0, #1
- bne _021E6710
- ldr r0, [r4, #0xc]
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #0
- bl FUN_020555A0
- add r1, r0, #0
- ldr r0, [r4, #0xc]
- bl MOD05_021E726C
- ldr r0, [r4, #4]
- mov r1, #0x34
- bl FUN_0205AFDC
- add r1, r0, #0
- ldr r0, [r4, #0x10]
- bl FUN_0205ADDC
- ldr r0, [r4, #0x14]
- mov r1, #0
- bl MOD06_0224ADF8
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E6710
-_021E66CC:
- ldr r0, [r4, #0x10]
- bl FUN_0205AE28
- cmp r0, #0
- beq _021E6710
- ldr r0, [r4, #0x10]
- bl FUN_0205AE50
- ldr r0, [r4, #0x14]
- bl MOD05_021E4DE4
- ldr r0, [r4, #0xc]
- mov r1, #0
- bl FUN_02055450
- ldr r0, [r4, #0xc]
- mov r1, #0
- bl FUN_020553A8
- ldr r0, [r4, #8]
- ldr r1, [r0, #0x1c]
- ldr r1, [r1]
- bl FUN_0204ABA8
- add r1, r0, #0
- ldr r0, [r4, #8]
- mov r2, #1
- bl FUN_0204ABDC
- add r0, r4, #0
- bl MOD05_021E72DC
- mov r0, #1
- pop {r4, pc}
-_021E6710:
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021E6714
-MOD05_021E6714: ; 0x021E6714
- push {r4, r5, r6, lr}
- add r4, r2, #0
- add r6, r0, #0
- add r5, r1, #0
- cmp r4, #1
- bne _021E672E
- cmp r3, #1
- bne _021E672E
- add r0, r5, #0
- bl FUN_020553C4
- cmp r0, #2
- beq _021E6732
-_021E672E:
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E6732:
- add r0, r5, #0
- add r1, r4, #0
- bl FUN_02057278
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_02054A48
- cmp r0, #0
- bne _021E674A
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E674A:
- add r0, r6, #0
- add r1, r4, #0
- bl MOD05_021E6BD8
- mov r0, #1
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6758
-MOD05_021E6758: ; 0x021E6758
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- add r0, r4, #0
- bl FUN_02055764
- cmp r0, #1
- bne _021E676C
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E676C:
- add r0, r4, #0
- bl FUN_020553A0
- bl FUN_02058720
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- add r0, r6, #0
- bl FUN_02054984
- cmp r0, #1
- beq _021E6792
- add r0, r6, #0
- bl FUN_020549A0
- cmp r0, #1
- beq _021E6792
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E6792:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021E67A0
- mov r0, #1
- pop {r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E67A0
-MOD05_021E67A0: ; 0x021E67A0
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0x10
- add r4, r1, #0
- bl MOD05_021E72B8
- add r2, r0, #0
- str r5, [r2, #8]
- ldr r1, _021E67BC ; =MOD05_021E67C0
- add r0, r5, #0
- str r4, [r2, #0xc]
- bl FUN_020463CC
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021E67BC: .word MOD05_021E67C0
-
- thumb_func_start MOD05_021E67C0
-MOD05_021E67C0: ; 0x021E67C0
- push {r4, r5, r6, r7, lr}
- sub sp, #0xc
- add r6, r0, #0
- bl FUN_0204652C
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- bl FUN_020553A0
- add r7, r0, #0
- ldr r0, [r4]
- cmp r0, #0
- beq _021E67E4
- cmp r0, #1
- beq _021E67F0
- cmp r0, #2
- beq _021E682A
- b _021E68C6
-_021E67E4:
- ldr r0, _021E68CC ; =0x00000651
- bl FUN_020054C8
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E67F0:
- add r0, r7, #0
- bl FUN_0205AD98
- cmp r0, #0
- bne _021E6804
- ldr r0, [r4, #0xc]
- bl FUN_020570C4
- cmp r0, #0
- beq _021E68C6
-_021E6804:
- ldr r0, [r4, #4]
- cmp r0, #5
- blt _021E6824
- ldr r0, _021E68D0 ; =0x00000652
- bl FUN_020054C8
- ldr r0, [r4, #0xc]
- mov r1, #1
- bl FUN_0205574C
- add r0, r4, #0
- bl MOD05_021E72DC
- add sp, #0xc
- mov r0, #1
- pop {r4, r5, r6, r7, pc}
-_021E6824:
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E682A:
- ldr r0, [r4, #0xc]
- bl FUN_020552F8
- ldr r2, _021E68D4 ; =gMain
- str r0, [sp]
- ldr r1, [r2, #0x48]
- ldr r2, [r2, #0x44]
- lsl r1, r1, #0x10
- lsl r2, r2, #0x10
- ldr r0, [r4, #0xc]
- lsr r1, r1, #0x10
- lsr r2, r2, #0x10
- bl FUN_02057020
- add r5, r0, #0
- mov r0, #0
- mvn r0, r0
- cmp r5, r0
- beq _021E68C6
- ldr r0, [sp]
- cmp r5, r0
- beq _021E68C6
- mov r0, #1
- str r0, [r4]
- ldr r0, [r4, #4]
- add r0, r0, #1
- str r0, [r4, #4]
- add r0, r7, #0
- bl FUN_02058720
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_020549A0
- cmp r0, #1
- bne _021E68A2
- add r0, r6, #0
- bl FUN_02046528
- add r1, sp, #8
- str r0, [sp, #4]
- bl MOD06_0223C08C
- cmp r0, #1
- bne _021E68A2
- ldr r0, [r4, #0xc]
- mov r1, #1
- bl FUN_0205574C
- add r0, r4, #0
- bl MOD05_021E72DC
- ldr r0, [sp, #4]
- ldr r2, [sp, #8]
- add r1, r6, #0
- bl FUN_02046A20
- add sp, #0xc
- mov r0, #0
- pop {r4, r5, r6, r7, pc}
-_021E68A2:
- ldr r0, [r4, #4]
- cmp r0, #5
- bge _021E68AC
- mov r6, #0x28
- b _021E68B6
-_021E68AC:
- add r0, r7, #0
- mov r1, #1
- mov r6, #0x30
- bl FUN_02058A18
-_021E68B6:
- add r0, r5, #0
- add r1, r6, #0
- bl FUN_0205AFDC
- add r1, r0, #0
- ldr r0, [r4, #0xc]
- bl FUN_02057260
-_021E68C6:
- mov r0, #0
- add sp, #0xc
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E68CC: .word 0x00000651
-_021E68D0: .word 0x00000652
-_021E68D4: .word gMain
-
- thumb_func_start MOD05_021E68D8
-MOD05_021E68D8: ; 0x021E68D8
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- add r0, r4, #0
- bl FUN_020553A0
- bl FUN_0205AD98
- cmp r0, #0
- bne _021E68F0
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021E68F0:
- add r0, r5, #0
- add r1, r4, #0
- bl MOD05_021E6904
- cmp r0, #1
- bne _021E6900
- mov r0, #1
- pop {r3, r4, r5, pc}
-_021E6900:
- mov r0, #0
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E6904
-MOD05_021E6904: ; 0x021E6904
- push {r4, lr}
- add r4, r1, #0
- add r0, r4, #0
- bl FUN_02055408
- cmp r0, #1
- bge _021E6916
- mov r0, #0
- pop {r4, pc}
-_021E6916:
- add r0, r4, #0
- bl FUN_02055314
- add r1, r0, #0
- add r0, r4, #0
- bl MOD05_021E727C
- add r4, r0, #0
- bne _021E692C
- mov r0, #0
- pop {r4, pc}
-_021E692C:
- bl FUN_02058458
- cmp r0, #0x76
- beq _021E6938
- mov r0, #0
- pop {r4, pc}
-_021E6938:
- add r0, r4, #0
- bl MOD05_021F1AF8
- add r0, r4, #0
- bl FUN_02057654
- ldr r0, _021E6950 ; =0x0000065B
- bl FUN_020054C8
- mov r0, #0
- pop {r4, pc}
- nop
-_021E6950: .word 0x0000065B
-
- thumb_func_start MOD05_021E6954
-MOD05_021E6954: ; 0x021E6954
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- mov r0, #0x30
- add r7, r1, #0
- add r5, r2, #0
- bl MOD05_021E72B8
- add r4, r0, #0
- str r7, [r4, #4]
- str r6, [r4, #0xc]
- ldr r0, [r6, #0x38]
- str r0, [r4, #0x10]
- bl FUN_020553A0
- add r2, r4, #0
- str r0, [r4, #0x14]
- add r2, #0x1c
- ldmia r5!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r6, #0x10]
- ldr r1, _021E698C ; =MOD05_021E69FC
- add r2, r4, #0
- bl FUN_0204640C
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E698C: .word MOD05_021E69FC
-
- thumb_func_start MOD05_021E6990
-MOD05_021E6990: ; 0x021E6990
- push {r4, r5, r6, lr}
- sub sp, #0x10
- add r6, r2, #0
- add r5, r1, #0
- bl FUN_02046528
- add r4, r0, #0
- add r1, r6, #0
- bl MOD05_021E72E8
- add r1, r0, #0
- add r0, r4, #0
- add r2, sp, #0
- bl MOD05_021E7228
- add r0, r4, #0
- add r1, r5, #0
- add r2, sp, #0
- bl MOD05_021E6954
- add sp, #0x10
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E69BC
-MOD05_021E69BC: ; 0x021E69BC
- push {r3, lr}
- cmp r1, #3
- bhi _021E69F6
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021E69CE: ; jump table
- .short _021E69D6 - _021E69CE - 2 ; case 0
- .short _021E69D6 - _021E69CE - 2 ; case 1
- .short _021E69E6 - _021E69CE - 2 ; case 2
- .short _021E69E6 - _021E69CE - 2 ; case 3
-_021E69D6:
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_020548FC
- cmp r0, #1
- bne _021E69F6
- mov r0, #1
- pop {r3, pc}
-_021E69E6:
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_02054908
- cmp r0, #1
- bne _021E69F6
- mov r0, #1
- pop {r3, pc}
-_021E69F6:
- mov r0, #0
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E69FC
-MOD05_021E69FC: ; 0x021E69FC
- push {r4, r5, r6, lr}
- bl FUN_0204652C
- ldr r6, _021E6A24 ; =UNK05_021F7714
- add r5, r0, #0
-_021E6A06:
- ldr r1, [r5]
- add r0, r5, #0
- lsl r1, r1, #2
- ldr r1, [r6, r1]
- blx r1
- add r4, r0, #0
- cmp r4, #2
- beq _021E6A06
- cmp r4, #1
- bne _021E6A20
- add r0, r5, #0
- bl MOD05_021E72DC
-_021E6A20:
- add r0, r4, #0
- pop {r4, r5, r6, pc}
- .balign 4, 0
-_021E6A24: .word UNK05_021F7714
-
- thumb_func_start MOD05_021E6A28
-MOD05_021E6A28: ; 0x021E6A28
- push {r4, lr}
- add r4, r0, #0
- add r1, r4, #0
- ldr r0, [r4, #0xc]
- add r1, #0x1c
- bl MOD05_021E723C
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021E6A40
-MOD05_021E6A40: ; 0x021E6A40
- push {r4, lr}
- add r4, r0, #0
- add r0, #0x1c
- bl MOD05_021E7250
- cmp r0, #1
- bne _021E6A54
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E6A54:
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021E6A58
-MOD05_021E6A58: ; 0x021E6A58
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x10]
- bl FUN_02055320
- add r4, r0, #0
- ldr r0, [r5, #4]
- bl FUN_02059BF4
- add r6, r0, #0
- ldr r0, [r5, #0x10]
- bl FUN_0205532C
- add r7, r0, #0
- ldr r0, [r5, #4]
- bl FUN_02059C00
- add r2, r0, #0
- mov r0, #0
- str r0, [sp]
- ldr r0, [r5, #0x14]
- ldr r3, [r5, #4]
- add r1, r4, r6
- add r2, r7, r2
- bl MOD06_0224AEE8
- str r0, [r5, #0x18]
- ldr r0, [r5, #0xc]
- bl MOD06_0224F0BC
- str r0, [r5, #0x2c]
- ldr r0, _021E6AA8 ; =0x00000627
- bl FUN_020054C8
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E6AA8: .word 0x00000627
-
- thumb_func_start MOD05_021E6AAC
-MOD05_021E6AAC: ; 0x021E6AAC
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x14]
- bl FUN_0205AD98
- cmp r0, #1
- bne _021E6AD0
- ldr r0, [r4, #4]
- mov r1, #0x34
- bl FUN_0205AFDC
- add r1, r0, #0
- ldr r0, [r4, #0x14]
- bl FUN_0205ADDC
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E6AD0:
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021E6AD4
-MOD05_021E6AD4: ; 0x021E6AD4
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x14]
- bl FUN_0205AE28
- cmp r0, #1
- bne _021E6AF0
- ldr r0, [r4]
- mov r1, #1
- add r0, r0, #1
- str r0, [r4]
- ldr r0, [r4, #0x18]
- bl MOD06_0224AF68
-_021E6AF0:
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021E6AF4
-MOD05_021E6AF4: ; 0x021E6AF4
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x14]
- bl FUN_0205AD98
- cmp r0, #1
- bne _021E6B18
- ldr r0, [r4, #4]
- mov r1, #0x10
- bl FUN_0205AFDC
- add r1, r0, #0
- ldr r0, [r4, #0x14]
- bl FUN_0205ADDC
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E6B18:
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021E6B1C
-MOD05_021E6B1C: ; 0x021E6B1C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- ldr r0, [r5, #0x14]
- bl FUN_0205AE28
- cmp r0, #0
- bne _021E6B2E
- mov r0, #0
- pop {r3, r4, r5, pc}
-_021E6B2E:
- ldr r0, [r5, #0x14]
- bl FUN_020584D4
- add r4, r0, #0
- ldr r0, [r5, #0x14]
- add r1, r4, #0
- bl FUN_02059C90
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- add r1, r4, #0
- bl MOD05_021E69BC
- cmp r0, #1
- bne _021E6B54
- mov r0, #5
- str r0, [r5]
- mov r0, #2
- pop {r3, r4, r5, pc}
-_021E6B54:
- ldr r0, [r5, #4]
- mov r1, #0x34
- bl FUN_0205AFDC
- add r1, r0, #0
- ldr r0, [r5, #0x14]
- bl FUN_0205ADDC
- mov r1, #0
- str r1, [r5, #8]
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- ldr r0, [r5, #0x18]
- bl MOD06_0224AF68
- ldr r0, [r5, #0x2c]
- bl MOD06_0224F0D0
- mov r0, #0
- str r0, [r5, #0x2c]
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E6B80
-MOD05_021E6B80: ; 0x021E6B80
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x14]
- bl FUN_0205AE28
- cmp r0, #0
- bne _021E6B92
- mov r0, #0
- pop {r4, pc}
-_021E6B92:
- ldr r0, [r4, #0x14]
- bl FUN_0205AE50
- ldr r0, [r4, #0x18]
- bl MOD05_021E4DE4
- mov r0, #1
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6BA4
-MOD05_021E6BA4: ; 0x021E6BA4
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- mov r0, #0x54
- add r7, r1, #0
- add r5, r2, #0
- bl MOD05_021E72B8
- add r4, r0, #0
- str r7, [r4, #4]
- str r6, [r4, #0x34]
- .balign 4, 0
-_021E6BB8: .word 0x63A06BB0
-
- thumb_func_start MOD05_021E6BBC
-MOD05_021E6BBC: ; 0x021E6BBC
- ldr r0, [r6, #0x38]
- bl FUN_020553A0
- str r0, [r4, #0x3c]
- cmp r5, #0
- beq _021E6BD4
- add r2, r4, #0
- add r2, #0x40
- ldmia r5!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r2!, {r0, r1}
-_021E6BD4:
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
-
- thumb_func_start MOD05_021E6BD8
-MOD05_021E6BD8: ; 0x021E6BD8
- push {r4, lr}
- mov r2, #0
- add r4, r0, #0
- bl MOD05_021E6BA4
- add r2, r0, #0
- ldr r1, _021E6BF0 ; =MOD05_021E6C30
- add r0, r4, #0
- bl FUN_020463CC
- pop {r4, pc}
- nop
-_021E6BF0: .word MOD05_021E6C30
-
- thumb_func_start MOD05_021E6BF4
-MOD05_021E6BF4: ; 0x021E6BF4
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x10
- add r7, r2, #0
- add r5, r0, #0
- add r6, r1, #0
- bl FUN_02046528
- add r4, r0, #0
- add r1, r7, #0
- bl MOD05_021E72E8
- add r1, r0, #0
- add r0, r4, #0
- add r2, sp, #0
- bl MOD05_021E7228
- add r0, r4, #0
- add r1, r6, #0
- add r2, sp, #0
- bl MOD05_021E6BA4
- add r2, r0, #0
- ldr r1, _021E6C2C ; =MOD05_021E6C30
- add r0, r5, #0
- bl FUN_0204640C
- add sp, #0x10
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E6C2C: .word MOD05_021E6C30
-
- thumb_func_start MOD05_021E6C30
-MOD05_021E6C30: ; 0x021E6C30
- push {r4, r5, r6, lr}
- bl FUN_0204652C
- ldr r6, _021E6C70 ; =UNK05_021F7700
- ldr r4, _021E6C74 ; =UNK05_021F76EC
- add r5, r0, #0
-_021E6C3C:
- ldr r0, [r5, #4]
- cmp r0, #0
- bne _021E6C4E
- ldr r1, [r5]
- add r0, r5, #0
- lsl r1, r1, #2
- ldr r1, [r4, r1]
- blx r1
- b _021E6C58
-_021E6C4E:
- ldr r1, [r5]
- add r0, r5, #0
- lsl r1, r1, #2
- ldr r1, [r6, r1]
- blx r1
-_021E6C58:
- cmp r0, #2
- beq _021E6C3C
- cmp r0, #1
- bne _021E6C6A
- add r0, r5, #0
- bl MOD05_021E72DC
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E6C6A:
- mov r0, #0
- pop {r4, r5, r6, pc}
- nop
-_021E6C70: .word UNK05_021F7700
-_021E6C74: .word UNK05_021F76EC
-
- thumb_func_start MOD05_021E6C78
-MOD05_021E6C78: ; 0x021E6C78
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x40]
- cmp r0, #1
- bne _021E6C96
- add r1, r4, #0
- ldr r0, [r4, #0x34]
- add r1, #0x40
- bl MOD05_021E723C
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- mov r0, #0
- pop {r4, pc}
-_021E6C96:
- mov r0, #2
- str r0, [r4]
- mov r0, #1
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6CA0
-MOD05_021E6CA0: ; 0x021E6CA0
- push {r4, lr}
- add r4, r0, #0
- add r0, #0x40
- bl MOD05_021E7250
- cmp r0, #1
- bne _021E6CBA
- ldr r0, _021E6CC0 ; =0x0000064D
- bl FUN_020054C8
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E6CBA:
- mov r0, #0
- pop {r4, pc}
- nop
-_021E6CC0: .word 0x0000064D
-
- thumb_func_start MOD05_021E6CC4
-MOD05_021E6CC4: ; 0x021E6CC4
- push {r4, r5, r6, lr}
- sub sp, #0x18
- add r5, r0, #0
- ldr r0, [r5, #0x3c]
- bl FUN_02058B2C
- add r4, r0, #0
- mov r0, #0
- bl FUN_02059BF4
- lsl r0, r0, #1
- add r4, r4, r0
- ldr r0, [r5, #0x3c]
- bl FUN_02058B4C
- add r6, r0, #0
- mov r0, #0
- bl FUN_02059C00
- lsl r0, r0, #1
- add r6, r6, r0
- add r2, r5, #0
- add r0, r4, #0
- add r1, r6, #0
- add r2, #0x28
- bl FUN_02059E60
- add r1, r5, #0
- ldr r0, [r5, #0x34]
- add r1, #0x28
- bl FUN_02059E9C
- str r4, [r5, #0xc]
- ldr r0, [r5, #0x2c]
- asr r1, r0, #3
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- str r0, [r5, #0x10]
- str r6, [r5, #0x14]
- ldr r0, [r5, #0x3c]
- add r1, sp, #0xc
- bl FUN_02058B5C
- ldr r1, [sp, #0x14]
- ldr r0, [r5, #0x30]
- cmp r1, r0
- bgt _021E6D2A
- bl ErrorHandling
-_021E6D2A:
- ldr r1, [sp, #0x10]
- ldr r0, [r5, #0x2c]
- cmp r1, r0
- blt _021E6D36
- bl ErrorHandling
-_021E6D36:
- mov r0, #0
- str r0, [sp]
- ldr r1, [r5, #0x2c]
- ldr r0, [sp, #0x10]
- add r3, sp, #0
- sub r2, r1, r0
- ldr r1, [r5, #0x30]
- ldr r0, [sp, #0x14]
- str r2, [sp, #4]
- sub r1, r1, r0
- asr r0, r2, #5
- lsr r0, r0, #0x1a
- add r0, r2, r0
- asr r0, r0, #6
- str r0, [sp, #4]
- asr r0, r1, #5
- lsr r0, r0, #0x1a
- add r0, r1, r0
- add r2, r5, #0
- str r1, [sp, #8]
- asr r0, r0, #6
- str r0, [sp, #8]
- ldmia r3!, {r0, r1}
- add r2, #0x1c
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- ldr r0, [r5, #0x34]
- bl MOD06_0224ED94
- str r0, [r5, #0x50]
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- mov r0, #0
- add sp, #0x18
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E6D80
-MOD05_021E6D80: ; 0x021E6D80
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r0, #0
- ldr r0, [r4, #0x3c]
- add r1, sp, #0
- bl FUN_02058B5C
- ldr r1, [sp, #4]
- ldr r0, [r4, #0x20]
- add r1, r1, r0
- str r1, [sp, #4]
- ldr r0, [r4, #0x2c]
- cmp r1, r0
- ble _021E6D9E
- str r0, [sp, #4]
-_021E6D9E:
- ldr r0, [r4, #0x3c]
- add r1, sp, #0
- bl FUN_02058B6C
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- cmp r0, #0x20
- blt _021E6DBA
- mov r0, #0
- str r0, [r4, #8]
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E6DBA:
- mov r0, #0
- add sp, #0xc
- pop {r3, r4, pc}
-
- thumb_func_start MOD05_021E6DC0
-MOD05_021E6DC0: ; 0x021E6DC0
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r0, #0
- ldr r0, [r4, #0x3c]
- add r1, sp, #0
- bl FUN_02058B5C
- ldr r1, [sp, #4]
- ldr r0, [r4, #0x20]
- add r1, r1, r0
- str r1, [sp, #4]
- ldr r0, [r4, #0x2c]
- cmp r1, r0
- ble _021E6DDE
- str r0, [sp, #4]
-_021E6DDE:
- ldr r1, [sp, #8]
- ldr r0, [r4, #0x24]
- add r1, r1, r0
- str r1, [sp, #8]
- ldr r0, [r4, #0x30]
- cmp r1, r0
- bge _021E6DEE
- str r0, [sp, #8]
-_021E6DEE:
- ldr r0, [r4, #0x3c]
- add r1, sp, #0
- bl FUN_02058B6C
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- cmp r0, #0x40
- bge _021E6E06
- add sp, #0xc
- mov r0, #0
- pop {r3, r4, pc}
-_021E6E06:
- ldr r1, [sp, #8]
- ldr r0, [r4, #0x30]
- cmp r1, r0
- beq _021E6E12
- bl ErrorHandling
-_021E6E12:
- ldr r1, [sp, #4]
- ldr r0, [r4, #0x2c]
- cmp r1, r0
- beq _021E6E1E
- bl ErrorHandling
-_021E6E1E:
- ldr r0, [r4, #0x3c]
- ldr r1, [r4, #0xc]
- bl FUN_02058B30
- ldr r0, [r4, #0x3c]
- ldr r1, [r4, #0x10]
- bl FUN_02058B40
- ldr r0, [r4, #0x3c]
- ldr r1, [r4, #0x14]
- bl FUN_02058B50
- ldr r0, [r4, #0x3c]
- bl FUN_02059C60
- ldr r0, [r4, #0x50]
- bl MOD06_0224EDA8
- mov r0, #1
- add sp, #0xc
- pop {r3, r4, pc}
-
- thumb_func_start MOD05_021E6E48
-MOD05_021E6E48: ; 0x021E6E48
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x40]
- cmp r0, #1
- bne _021E6E66
- add r1, r4, #0
- ldr r0, [r4, #0x34]
- add r1, #0x40
- bl MOD05_021E723C
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- mov r0, #0
- pop {r4, pc}
-_021E6E66:
- mov r0, #2
- str r0, [r4]
- pop {r4, pc}
-
- thumb_func_start MOD05_021E6E6C
-MOD05_021E6E6C: ; 0x021E6E6C
- push {r4, lr}
- add r4, r0, #0
- add r0, #0x40
- bl MOD05_021E7250
- cmp r0, #1
- bne _021E6E86
- ldr r0, _021E6E8C ; =0x0000064D
- bl FUN_020054C8
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E6E86:
- mov r0, #0
- pop {r4, pc}
- nop
-_021E6E8C: .word 0x0000064D
-
- thumb_func_start MOD05_021E6E90
-MOD05_021E6E90: ; 0x021E6E90
- push {r4, r5, r6, lr}
- sub sp, #0x18
- add r5, r0, #0
- ldr r0, [r5, #0x3c]
- bl FUN_02058B2C
- add r4, r0, #0
- mov r0, #1
- bl FUN_02059BF4
- lsl r0, r0, #1
- add r4, r4, r0
- ldr r0, [r5, #0x3c]
- bl FUN_02058B4C
- add r6, r0, #0
- mov r0, #1
- bl FUN_02059C00
- lsl r0, r0, #1
- add r6, r6, r0
- add r2, r5, #0
- add r0, r4, #0
- add r1, r6, #0
- add r2, #0x28
- bl FUN_02059E60
- add r1, r5, #0
- ldr r0, [r5, #0x34]
- add r1, #0x28
- bl FUN_02059E9C
- mov r0, #0
- str r0, [r5, #0x18]
- str r4, [r5, #0xc]
- ldr r0, [r5, #0x2c]
- asr r1, r0, #3
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- str r0, [r5, #0x10]
- str r6, [r5, #0x14]
- ldr r0, [r5, #0x3c]
- add r1, sp, #0xc
- bl FUN_02058B5C
- ldr r1, [sp, #0x14]
- ldr r0, [r5, #0x30]
- cmp r1, r0
- blt _021E6EFA
- bl ErrorHandling
-_021E6EFA:
- ldr r1, [sp, #0x10]
- ldr r0, [r5, #0x2c]
- cmp r1, r0
- bgt _021E6F06
- bl ErrorHandling
-_021E6F06:
- mov r0, #0
- str r0, [sp]
- ldr r1, [r5, #0x2c]
- ldr r0, [sp, #0x10]
- add r3, sp, #0
- sub r2, r1, r0
- ldr r1, [r5, #0x30]
- ldr r0, [sp, #0x14]
- str r2, [sp, #4]
- sub r1, r1, r0
- asr r0, r2, #5
- lsr r0, r0, #0x1a
- add r0, r2, r0
- asr r0, r0, #6
- str r0, [sp, #4]
- asr r0, r1, #5
- lsr r0, r0, #0x1a
- add r0, r1, r0
- add r2, r5, #0
- str r1, [sp, #8]
- asr r0, r0, #6
- str r0, [sp, #8]
- ldmia r3!, {r0, r1}
- add r2, #0x1c
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- ldr r0, [r5, #0x34]
- bl MOD06_0224ED94
- str r0, [r5, #0x50]
- ldr r0, [r5]
- add r0, r0, #1
- str r0, [r5]
- mov r0, #0
- add sp, #0x18
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E6F50
-MOD05_021E6F50: ; 0x021E6F50
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r0, #0
- ldr r0, [r4, #0x3c]
- add r1, sp, #0
- bl FUN_02058B5C
- ldr r1, [sp, #8]
- ldr r0, [r4, #0x24]
- add r1, r1, r0
- str r1, [sp, #8]
- ldr r0, [r4, #0x30]
- cmp r1, r0
- ble _021E6F70
- str r0, [sp, #8]
- b _021E6F78
-_021E6F70:
- ldr r1, [r4, #0x18]
- ldr r0, [r4, #0x24]
- add r0, r1, r0
- str r0, [r4, #0x18]
-_021E6F78:
- ldr r0, [r4, #0x3c]
- add r1, sp, #0
- bl FUN_02058B6C
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- cmp r0, #0x20
- blt _021E6F94
- mov r0, #0
- str r0, [r4, #8]
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
-_021E6F94:
- mov r0, #0
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E6F9C
-MOD05_021E6F9C: ; 0x021E6F9C
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r0, #0
- ldr r0, [r4, #0x3c]
- add r1, sp, #0
- bl FUN_02058B5C
- ldr r1, [sp, #4]
- ldr r0, [r4, #0x20]
- add r1, r1, r0
- str r1, [sp, #4]
- ldr r0, [r4, #0x2c]
- cmp r1, r0
- bge _021E6FBA
- str r0, [sp, #4]
-_021E6FBA:
- ldr r1, [sp, #8]
- ldr r0, [r4, #0x24]
- add r1, r1, r0
- str r1, [sp, #8]
- ldr r0, [r4, #0x30]
- cmp r1, r0
- ble _021E6FCC
- str r0, [sp, #8]
- b _021E6FD4
-_021E6FCC:
- ldr r1, [r4, #0x18]
- ldr r0, [r4, #0x24]
- add r0, r1, r0
- str r0, [r4, #0x18]
-_021E6FD4:
- ldr r0, [r4, #0x3c]
- add r1, sp, #0
- bl FUN_02058B6C
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- cmp r0, #0x40
- bge _021E6FEC
- add sp, #0xc
- mov r0, #0
- pop {r3, r4, pc}
-_021E6FEC:
- ldr r1, [sp, #8]
- ldr r0, [r4, #0x30]
- cmp r1, r0
- beq _021E6FF8
- bl ErrorHandling
-_021E6FF8:
- ldr r1, [sp, #4]
- ldr r0, [r4, #0x2c]
- cmp r1, r0
- beq _021E7004
- bl ErrorHandling
-_021E7004:
- ldr r0, [r4, #0x3c]
- ldr r1, [r4, #0xc]
- bl FUN_02058B30
- ldr r0, [r4, #0x3c]
- ldr r1, [r4, #0x10]
- bl FUN_02058B40
- ldr r0, [r4, #0x3c]
- ldr r1, [r4, #0x14]
- bl FUN_02058B50
- ldr r0, [r4, #0x3c]
- bl FUN_02059C60
- ldr r0, [r4, #0x50]
- bl MOD06_0224EDA8
- mov r0, #1
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7030
-MOD05_021E7030: ; 0x021E7030
- push {r3, lr}
- bl FUN_02046528
- bl MOD05_021E703C
- pop {r3, pc}
-
- thumb_func_start MOD05_021E703C
-MOD05_021E703C: ; 0x021E703C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #0x18
- bl MOD05_021E72B8
- add r4, r0, #0
- str r5, [r4]
- ldr r0, [r5, #0x38]
- str r0, [r4, #4]
- bl FUN_020553A0
- str r0, [r4, #8]
- ldr r0, [r4, #4]
- bl FUN_020553E8
- str r0, [r4, #0x10]
- ldr r0, [r5, #0x10]
- ldr r1, _021E7068 ; =MOD05_021E706C
- add r2, r4, #0
- bl FUN_0204640C
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021E7068: .word MOD05_021E706C
-
- thumb_func_start MOD05_021E706C
-MOD05_021E706C: ; 0x021E706C
- push {r4, lr}
- bl FUN_0204652C
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- cmp r0, #0
- beq _021E7084
- cmp r0, #1
- beq _021E7096
- cmp r0, #2
- beq _021E70C8
- b _021E70E2
-_021E7084:
- ldr r0, [r4, #8]
- ldr r1, _021E70E8 ; =UNK05_021F7758
- bl FUN_0205AEA4
- str r0, [r4, #0x14]
- ldr r0, [r4, #0xc]
- add r0, r0, #1
- str r0, [r4, #0xc]
- b _021E70E2
-_021E7096:
- ldr r0, [r4, #0x14]
- bl FUN_0205AEF0
- cmp r0, #1
- bne _021E70E2
- ldr r1, [r4, #0x10]
- mov r0, #5
- bl FUN_020555A0
- add r1, r0, #0
- ldr r0, [r4, #4]
- bl MOD05_021E726C
- ldr r0, [r4, #0x14]
- bl FUN_0205AEFC
- ldr r0, [r4, #8]
- ldr r1, _021E70EC ; =UNK05_021F77BC
- bl FUN_0205AEA4
- str r0, [r4, #0x14]
- ldr r0, [r4, #0xc]
- add r0, r0, #1
- str r0, [r4, #0xc]
- b _021E70E2
-_021E70C8:
- ldr r0, [r4, #0x14]
- bl FUN_0205AEF0
- cmp r0, #1
- bne _021E70E2
- ldr r0, [r4, #0x14]
- bl FUN_0205AEFC
- add r0, r4, #0
- bl MOD05_021E72DC
- mov r0, #1
- pop {r4, pc}
-_021E70E2:
- mov r0, #0
- pop {r4, pc}
- nop
-_021E70E8: .word UNK05_021F7758
-_021E70EC: .word UNK05_021F77BC
-
- thumb_func_start MOD05_021E70F0
-MOD05_021E70F0: ; 0x021E70F0
- push {r3, r4, r5, lr}
- add r4, r0, #0
- bl FUN_020553A0
- add r5, r0, #0
- bl FUN_02058934
- cmp r0, #0
- beq _021E7136
- add r0, r4, #0
- bl FUN_020553C4
- cmp r0, #0
- bne _021E7136
- add r0, r5, #0
- bl FUN_02058458
- sub r0, #0xc4
- cmp r0, #1
- bls _021E7136
- add r0, r4, #0
- bl FUN_020553E0
- add r5, r0, #0
- add r0, r4, #0
- mov r1, #0x40
- bl MOD05_021E5FD8
- add r0, r4, #0
- bl MOD05_021E5FE0
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021E5FD8
-_021E7136:
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E7138
-MOD05_021E7138: ; 0x021E7138
- push {r3, r4, r5, lr}
- add r4, r0, #0
- bl FUN_020553A0
- add r5, r0, #0
- bl FUN_02058934
- cmp r0, #0
- beq _021E7180
- add r0, r4, #0
- bl FUN_020553C4
- cmp r0, #0
- bne _021E7180
- add r0, r5, #0
- bl FUN_02058458
- cmp r0, #0xc4
- beq _021E7162
- cmp r0, #0xc5
- bne _021E7180
-_021E7162:
- add r0, r4, #0
- bl FUN_020553E0
- add r5, r0, #0
- add r0, r4, #0
- mov r1, #1
- bl MOD05_021E5FD8
- add r0, r4, #0
- bl MOD05_021E5FE0
- add r0, r4, #0
- add r1, r5, #0
- bl MOD05_021E5FD8
-_021E7180:
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7184
-MOD05_021E7184: ; 0x021E7184
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- ldr r5, [r6, #0x38]
- add r0, r5, #0
- bl FUN_020553C4
- add r7, r0, #0
- beq _021E7198
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021E7198:
- add r0, r5, #0
- bl FUN_020553A0
- str r0, [sp]
- mov r0, #4
- mov r1, #0x10
- bl AllocFromHeapAtEnd
- add r4, r0, #0
- mov r0, #0
- str r0, [r4]
- str r6, [r4, #8]
- str r5, [r4, #0xc]
- ldr r0, [sp]
- str r7, [r4, #4]
- bl FUN_02058914
- add r0, r5, #0
- mov r1, #0x80
- bl MOD05_021E5FD8
- add r0, r5, #0
- bl MOD05_021E5FE0
- ldr r0, _021E71E0 ; =MOD05_021E7218
- ldr r2, _021E71E4 ; =0x0000FFFF
- add r1, r4, #0
- bl FUN_0200CA44
- add r4, r0, #0
- bne _021E71DA
- bl ErrorHandling
-_021E71DA:
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E71E0: .word MOD05_021E7218
-_021E71E4: .word 0x0000FFFF
-
- thumb_func_start MOD05_021E71E8
-MOD05_021E71E8: ; 0x021E71E8
- push {r4, r5, r6, lr}
- add r5, r0, #0
- beq _021E7216
- bl FUN_0201B6C8
- add r6, r0, #0
- ldr r4, [r6, #0xc]
- add r0, r4, #0
- bl FUN_020553E8
- add r1, r0, #0
- mov r0, #0
- bl FUN_020555A0
- add r0, r4, #0
- bl MOD05_021E6014
- add r0, r6, #0
- bl FreeToHeap
- add r0, r5, #0
- bl FUN_0200CAB4
-_021E7216:
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E7218
-MOD05_021E7218: ; 0x021E7218
- push {r3, lr}
- ldr r0, [r1, #0xc]
- bl FUN_020553A0
- bl FUN_020586A0
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7228
-MOD05_021E7228: ; 0x021E7228
- push {r4, lr}
- add r4, r2, #0
- mov r2, #1
- str r2, [r4]
- str r1, [r4, #8]
- ldr r0, [r0, #0x38]
- bl FUN_020553E8
- str r0, [r4, #4]
- pop {r4, pc}
-
- thumb_func_start MOD05_021E723C
-MOD05_021E723C: ; 0x021E723C
- push {r4, lr}
- add r4, r1, #0
- ldr r2, [r4, #8]
- ldr r3, [r4, #4]
- mov r1, #0
- bl MOD06_0224666C
- str r0, [r4, #0xc]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7250
-MOD05_021E7250: ; 0x021E7250
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- bl MOD06_022466A0
- cmp r0, #1
- bne _021E7268
- ldr r0, [r4, #0xc]
- bl MOD06_022466AC
- mov r0, #1
- pop {r4, pc}
-_021E7268:
- mov r0, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021E726C
-MOD05_021E726C: ; 0x021E726C
- push {r4, lr}
- add r4, r1, #0
- bl FUN_020553A0
- add r1, r4, #0
- bl MOD05_021F3490
- pop {r4, pc}
-
- thumb_func_start MOD05_021E727C
-MOD05_021E727C: ; 0x021E727C
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- add r4, r0, #0
- bl FUN_02055320
- add r6, r0, #0
- add r0, r5, #0
- bl FUN_02059BF4
- add r7, r0, #0
- add r0, r4, #0
- bl FUN_0205532C
- str r0, [sp]
- add r0, r5, #0
- bl FUN_02059C00
- add r5, r0, #0
- add r0, r4, #0
- bl FUN_020553A0
- bl FUN_02058578
- ldr r2, [sp]
- add r1, r6, r7
- add r2, r2, r5
- bl FUN_02058D74
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E72B8
-MOD05_021E72B8: ; 0x021E72B8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #4
- add r1, r5, #0
- bl AllocFromHeapAtEnd
- add r4, r0, #0
- bne _021E72CC
- bl ErrorHandling
-_021E72CC:
- add r0, r4, #0
- mov r1, #0
- add r2, r5, #0
- bl memset
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E72DC
-MOD05_021E72DC: ; 0x021E72DC
- ldr r3, _021E72E4 ; =FUN_02016A8C
- add r1, r0, #0
- mov r0, #4
- bx r3
- .balign 4, 0
-_021E72E4: .word FUN_02016A8C
-
- thumb_func_start MOD05_021E72E8
-MOD05_021E72E8: ; 0x021E72E8
- push {r4, lr}
- ldr r0, [r0, #0xc]
- add r4, r1, #0
- bl SavArray_PlayerParty_get
- add r1, r4, #0
- bl GetPartyMonByIndex
- pop {r4, pc}
- .balign 4, 0
-
thumb_func_start MOD05_021E72FC
MOD05_021E72FC: ; 0x021E72FC
push {r4, r5, r6, lr}
@@ -35240,128 +31096,6 @@ _021F6428: .word MOD05_021F57F0
.section .rodata
- .global UNK05_021F7570
-UNK05_021F7570: ; 0x021F7570
- .word 0x00001000, 0x00001000, 0x00001000
-
- .global UNK05_021F757C
-UNK05_021F757C: ; 0x021F757C
- .word 0x00000080, MOD05_021E544C, MOD05_021E5490, MOD05_021E5494
- .word MOD05_021E54C0
-
- .global UNK05_021F7590
-UNK05_021F7590: ; 0x021F7590
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000
-
- .global UNK05_021F75B4
-UNK05_021F75B4: ; 0x021F75B4
- .word 0x00001000, 0x00001000, 0x00001000
-
- .global UNK05_021F75C0
-UNK05_021F75C0: ; 0x021F75C0
- .word 0x0000003C, MOD05_021E5650, MOD05_021E5698, MOD05_021E569C
- .word MOD05_021E56FC
-
- .global UNK05_021F75D4
-UNK05_021F75D4: ; 0x021F75D4
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000
-
- .global UNK05_021F75F8
-UNK05_021F75F8: ; 0x021F75F8
- .word 0x00001000, 0x00001000, 0x00001000
-
- .global UNK05_021F7604
-UNK05_021F7604: ; 0x021F7604
- .word 0x0000003C, MOD05_021E5810, MOD05_021E5858, MOD05_021E585C
- .word MOD05_021E5898
-
- .global UNK05_021F7618
-UNK05_021F7618: ; 0x021F7618
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000
-
- .global UNK05_021F763C
-UNK05_021F763C: ; 0x021F763C
- .word 0x00001000, 0x00001000, 0x00001000
-
- .global UNK05_021F7648
-UNK05_021F7648: ; 0x021F7648
- .word 0x00000040, MOD05_021E59AC, MOD05_021E59F8, MOD05_021E59FC
- .word MOD05_021E5A34
-
- .global UNK05_021F765C
-UNK05_021F765C: ; 0x021F765C
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000, 0x00001000, 0x00001000, 0x00001000
-
- .global UNK05_021F768C
-UNK05_021F768C: ; 0x021F768C
- .word 0x0000000C, MOD05_021E5B80, MOD05_021E5BF8, MOD05_021E5C0C
- .word MOD05_021E5C34
-
- .global UNK05_021F76A0
-UNK05_021F76A0: ; 0x021F76A0
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000, 0x00000000, 0x00000000, 0x00000000
- .word 0x00001000
-
- .global UNK05_021F76C4
-UNK05_021F76C4: ; 0x021F76C4
- .word 0x0000000C, MOD05_021E5D50, MOD05_021E5DC8, MOD05_021E5DDC
- .word MOD05_021E5E04
-
- .global UNK05_021F76D8
-UNK05_021F76D8: ; 0x021F76D8
- .word 0x0000000C, MOD05_021E5F18, MOD05_021E5F90, MOD05_021E5FA4
- .word MOD05_021E5FCC
-
- .global UNK05_021F76EC
-UNK05_021F76EC: ; 0x021F76EC
- .word MOD05_021E6C78, MOD05_021E6CA0, MOD05_021E6CC4, MOD05_021E6D80
- .word MOD05_021E6DC0
-
- .global UNK05_021F7700
-UNK05_021F7700: ; 0x021F7700
- .word MOD05_021E6E48, MOD05_021E6E6C, MOD05_021E6E90, MOD05_021E6F50
- .word MOD05_021E6F9C
-
- .global UNK05_021F7714
-UNK05_021F7714: ; 0x021F7714
- .word MOD05_021E6A28, MOD05_021E6A40, MOD05_021E6A58, MOD05_021E6AAC
- .word MOD05_021E6AD4, MOD05_021E6AF4, MOD05_021E6B1C, MOD05_021E6B80
-
- .global UNK05_021F7734
-UNK05_021F7734: ; 0x021F7734
- .word MOD05_021E6014, MOD05_021E6054, MOD05_021E609C, MOD05_021E610C
- .word MOD05_021E6118, MOD05_021E6134, MOD05_021E6150, MOD05_021E616C
- .word MOD05_021E6188
-
- .global UNK05_021F7758
-UNK05_021F7758: ; 0x021F7758
- .byte 0x01, 0x00, 0x01, 0x00 ;short?
- .byte 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00
- .byte 0x3C, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00
- .byte 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00
- .byte 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
- .byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
- .byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00
-
- .global UNK05_021F77BC
-UNK05_021F77BC: ; 0x021F77BC
- .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00 ;short?
- .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00
- .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00
- .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00
- .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x03, 0x00
- .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x05, 0x00
- .byte 0x01, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00
-
.global UNK05_021F7824
UNK05_021F7824: ; 0x021F7824
.word 0x00000001, 0x0000000C, 0x00000044, MOD05_021E79A8
diff --git a/arm9/src/save.c b/arm9/src/save.c
index 700029c7..85d18d06 100644
--- a/arm9/src/save.c
+++ b/arm9/src/save.c
@@ -828,10 +828,10 @@ BOOL SaveDetectFlash(void)
GF_ASSERT(lock != -3);
CARD_LockBackup((u16)lock);
u16 flash_type;
- if (CARD_IdentifyBackup(0x1302))
- flash_type = 0x1302;
- else if (CARD_IdentifyBackup(0x1202))
- flash_type = 0x1202;
+ if (CARD_IdentifyBackup(CARD_BACKUP_TYPE_FLASH_4MBITS))
+ flash_type = CARD_BACKUP_TYPE_FLASH_4MBITS;
+ else if (CARD_IdentifyBackup(CARD_BACKUP_TYPE_FLASH_2MBITS))
+ flash_type = CARD_BACKUP_TYPE_FLASH_2MBITS;
else
flash_type = 0;
CARD_UnlockBackup((u16)lock);