diff options
author | Revo <projectrevotpp@hotmail.com> | 2020-10-15 10:44:30 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-15 10:44:30 -0400 |
commit | e7fa21a56d7a8e12b31afdf7f1247700c56226c9 (patch) | |
tree | bb3f189674fa45677a591d5d706bd263b9b07c6c | |
parent | 5d7b49bfda5d50c9f80bf2780a8614fe210fbc38 (diff) | |
parent | 8845a46444d29d5c4ac491fa040c35af61a3428d (diff) |
Merge pull request #291 from red031000/master
split a lot more of module 5 and arm9 CARD_pullOut
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); |