diff options
-rw-r--r-- | arm9/arm9.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/OS_alarm.s | 350 | ||||
-rw-r--r-- | arm9/lib/include/OS_alarm.h | 14 | ||||
-rw-r--r-- | arm9/lib/include/OS_interrupt.h | 1 | ||||
-rw-r--r-- | arm9/lib/include/registers.h | 1 | ||||
-rw-r--r-- | arm9/lib/src/OS_alarm.c | 250 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E1374.s | 1178 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E1AD8.s | 2119 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 3287 |
9 files changed, 3564 insertions, 3638 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 9e7d2218..cfa44c60 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -530,6 +530,8 @@ Overlay MODULE_05 Object mod05_021DBE04.o Object mod05_021DBEF4.o Object mod05_021DC0B8.o + Object mod05_021E1374.o + Object mod05_021E1AD8.o Object module_05.o } diff --git a/arm9/asm/OS_alarm.s b/arm9/asm/OS_alarm.s deleted file mode 100644 index 9978bfbe..00000000 --- a/arm9/asm/OS_alarm.s +++ /dev/null @@ -1,350 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global OSi_UseAlarm -OSi_UseAlarm: ; 0x021D37BC - .space 0x4 - - .global OSi_AlarmQueue -OSi_AlarmQueue: ; 0x021D37C0 - .space 0x8 - - .text - - arm_func_start OSi_AlarmHandler -OSi_AlarmHandler: ; 0x020CCE00 - stmdb sp!, {r0,lr} - bl OSi_ArrangeTimer - ldmia sp!, {r0,lr} - bx lr - - arm_func_start OSi_ArrangeTimer -OSi_ArrangeTimer: ; 0x020CCE10 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020CCF1C ; =0x04000106 - mov r2, #0x0 - mov r0, #0x10 - strh r2, [r1, #0x0] - bl OS_DisableIrqMask - ldr r0, _020CCF20 ; =0x027E0000 - add r0, r0, #0x3000 - ldr r1, [r0, #0xff8] - orr r1, r1, #0x10 - str r1, [r0, #0xff8] - bl OS_GetTick - ldr r2, _020CCF24 ; =OSi_AlarmQueue - ldr r4, [r2, #0x0] - cmp r4, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - ldr r3, [r4, #0x10] - ldr r12, [r4, #0xc] - cmp r1, r3 - cmpeq r0, r12 - bhs _020CCE84 - mov r0, r4 - bl OSi_SetTimer - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr -_020CCE84: - ldr r1, [r4, #0x18] - cmp r1, #0x0 - moveq r0, #0x0 - streq r0, [r2, #0x4] - str r1, [r2, #0x0] - movne r0, #0x0 - strne r0, [r1, #0x14] - ldr r2, [r4, #0x1c] - ldr r1, [r4, #0x20] - mov r0, #0x0 - cmp r1, r0 - ldr r5, [r4, #0x0] - cmpeq r2, r0 - streq r0, [r4, #0x0] - cmp r5, #0x0 - beq _020CCECC - ldr r0, [r4, #0x4] - blx r5 -_020CCECC: - ldr r2, [r4, #0x1c] - ldr r0, [r4, #0x20] - mov r1, #0x0 - cmp r0, r1 - cmpeq r2, r1 - beq _020CCEF4 - mov r0, r4 - mov r2, r1 - str r5, [r4, #0x0] - bl OSi_InsertAlarm -_020CCEF4: - ldr r0, _020CCF24 ; =OSi_AlarmQueue - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - bl OSi_SetTimer - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020CCF1C: .word 0x04000106 -_020CCF20: .word 0x027E0000 -_020CCF24: .word OSi_AlarmQueue - - arm_func_start OS_CancelAlarm -OS_CancelAlarm: ; 0x020CCF28 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl OS_DisableInterrupts - ldr r1, [r5, #0x0] - mov r4, r0 - cmp r1, #0x0 - bne _020CCF58 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr -_020CCF58: - ldr r0, [r5, #0x18] - cmp r0, #0x0 - ldreq r2, [r5, #0x14] - ldreq r1, _020CCFBC ; =OSi_AlarmQueue - streq r2, [r1, #0x4] - ldrne r1, [r5, #0x14] - strne r1, [r0, #0x14] - ldr r1, [r5, #0x14] - cmp r1, #0x0 - strne r0, [r1, #0x18] - bne _020CCF98 - ldr r1, _020CCFBC ; =OSi_AlarmQueue - cmp r0, #0x0 - str r0, [r1, #0x0] - beq _020CCF98 - bl OSi_SetTimer -_020CCF98: - mov r1, #0x0 - str r1, [r5, #0x0] - str r1, [r5, #0x1c] - mov r0, r4 - str r1, [r5, #0x20] - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020CCFBC: .word OSi_AlarmQueue - - arm_func_start OS_SetAlarm -OS_SetAlarm: ; 0x020CCFC0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - movs r6, r0 - mov r5, r1 - mov r4, r2 - mov r7, r3 - beq _020CCFE8 - ldr r0, [r6, #0x0] - cmp r0, #0x0 - beq _020CCFEC -_020CCFE8: - bl OS_Terminate -_020CCFEC: - bl OS_DisableInterrupts - mov r1, #0x0 - str r1, [r6, #0x1c] - str r1, [r6, #0x20] - str r7, [r6, #0x0] - ldr r1, [sp, #0x18] - mov r7, r0 - str r1, [r6, #0x4] - bl OS_GetTick - adds r3, r5, r0 - adc r2, r4, r1 - mov r0, r6 - mov r1, r3 - bl OSi_InsertAlarm - mov r0, r7 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start OSi_InsertAlarm -OSi_InsertAlarm: ; 0x020CD038 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - ldr r4, [r8, #0x1c] - ldr r3, [r8, #0x20] - mov r0, #0x0 - cmp r3, r0 - mov r7, r1 - mov r6, r2 - cmpeq r4, r0 - beq _020CD0B4 - bl OS_GetTick - ldr r6, [r8, #0x28] - ldr r7, [r8, #0x24] - cmp r6, r1 - cmpeq r7, r0 - bhs _020CD0B4 - ldr r5, [r8, #0x1c] - ldr r4, [r8, #0x20] - subs r0, r0, r7 - mov r2, r5 - mov r3, r4 - sbc r1, r1, r6 - bl _ll_udiv - mov r2, #0x1 - adds r2, r0, r2 - adc r0, r1, #0x0 - umull r3, r1, r5, r2 - mla r1, r5, r0, r1 - mla r1, r4, r2, r1 - adds r7, r7, r3 - adc r6, r6, r1 -_020CD0B4: - str r7, [r8, #0xc] - ldr r0, _020CD174 ; =OSi_AlarmQueue - str r6, [r8, #0x10] - ldr r4, [r0, #0x0] - cmp r4, #0x0 - beq _020CD134 - mov r1, #0x0 -_020CD0D0: - ldr r2, [r4, #0xc] - ldr r0, [r4, #0x10] - subs r3, r7, r2 - sbc r2, r6, r0 - subs r0, r3, r1 - sbcs r0, r2, r1 - bge _020CD128 - ldr r0, [r4, #0x14] - str r0, [r8, #0x14] - str r8, [r4, #0x14] - str r4, [r8, #0x18] - ldr r0, [r8, #0x14] - cmp r0, #0x0 - strne r8, [r0, #0x18] - ldmneia sp!, {r4-r8,lr} - bxne lr - ldr r1, _020CD174 ; =OSi_AlarmQueue - mov r0, r8 - str r8, [r1, #0x0] - bl OSi_SetTimer - ldmia sp!, {r4-r8,lr} - bx lr -_020CD128: - ldr r4, [r4, #0x18] - cmp r4, #0x0 - bne _020CD0D0 -_020CD134: - ldr r1, _020CD174 ; =OSi_AlarmQueue - mov r0, #0x0 - str r0, [r8, #0x18] - ldr r0, [r1, #0x4] - str r8, [r1, #0x4] - str r0, [r8, #0x14] - cmp r0, #0x0 - strne r8, [r0, #0x18] - ldmneia sp!, {r4-r8,lr} - bxne lr - mov r0, r8 - str r8, [r1, #0x4] - str r8, [r1, #0x0] - bl OSi_SetTimer - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_020CD174: .word OSi_AlarmQueue - - arm_func_start OS_CreateAlarm -OS_CreateAlarm: ; 0x020CD178 - mov r1, #0x0 - str r1, [r0, #0x0] - str r1, [r0, #0x8] - bx lr - - arm_func_start OS_IsAlarmAvailable -OS_IsAlarmAvailable: ; 0x020CD188 - ldr r0, _020CD194 ; =OSi_UseAlarm - ldrh r0, [r0, #0x0] - bx lr - .balign 4 -_020CD194: .word OSi_UseAlarm - - arm_func_start OS_InitAlarm -OS_InitAlarm: ; 0x020CD198 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020CD1E8 ; =OSi_UseAlarm - ldrh r0, [r1, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - mov r0, #0x1 - strh r0, [r1, #0x0] - bl OSi_SetTimerReserved - ldr r1, _020CD1EC ; =OSi_AlarmQueue - mov r2, #0x0 - mov r0, #0x10 - str r2, [r1, #0x0] - str r2, [r1, #0x4] - bl OS_DisableIrqMask - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020CD1E8: .word OSi_UseAlarm -_020CD1EC: .word OSi_AlarmQueue - - arm_func_start OSi_SetTimer -OSi_SetTimer: ; 0x020CD1F0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - bl OS_GetTick - ldr r3, _020CD27C ; =0x04000106 - mov r2, #0x0 - strh r2, [r3, #0x0] - ldr r12, [r4, #0xc] - ldr r3, [r4, #0x10] - subs r5, r12, r0 - sbc r4, r3, r1 - ldr r1, _020CD280 ; =OSi_AlarmHandler - mov r0, #0x1 - bl OSi_EnterTimerCallback - mov r2, #0x0 - subs r0, r5, r2 - sbcs r0, r4, r2 - ldrlt r2, _020CD284 ; =0x0000FFFE - blt _020CD254 - mov r0, #0x10000 - subs r0, r5, r0 - sbcs r0, r4, r2 - mvnlt r0, r5 - movlt r0, r0, lsl #0x10 - movlt r2, r0, lsr #0x10 -_020CD254: - ldr r0, _020CD288 ; =0x04000104 - ldr r1, _020CD27C ; =0x04000106 - strh r2, [r0, #0x0] - mov r2, #0xc1 - mov r0, #0x10 - strh r2, [r1, #0x0] - bl OS_EnableIrqMask - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020CD27C: .word 0x04000106 -_020CD280: .word OSi_AlarmHandler -_020CD284: .word 0x0000FFFE -_020CD288: .word 0x04000104 diff --git a/arm9/lib/include/OS_alarm.h b/arm9/lib/include/OS_alarm.h index ebdf01ba..c8d0682d 100644 --- a/arm9/lib/include/OS_alarm.h +++ b/arm9/lib/include/OS_alarm.h @@ -6,8 +6,20 @@ #include "OS_tick.h" #include "nitro/OS_alarm_shared.h" -void OS_CancelAlarm(OSAlarm *alarm); +struct OSiAlarmQueue +{ + OSAlarm *head; + OSAlarm *tail; +}; + +static void OSi_SetTimer(OSAlarm *alarm); +void OS_InitAlarm(void); +BOOL OS_IsAlarmAvailable(void); void OS_CreateAlarm(OSAlarm *alarm); +static void OSi_InsertAlarm(OSAlarm *alarm, OSTick fire); void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg); +void OS_CancelAlarm(OSAlarm *alarm); +void OSi_AlarmHandler(void *arg); +static void OSi_ArrangeTimer(void); #endif //POKEDIAMOND_ARM9_OS_ALARM_H diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h index a828c62e..d84cae00 100644 --- a/arm9/lib/include/OS_interrupt.h +++ b/arm9/lib/include/OS_interrupt.h @@ -5,6 +5,7 @@ #include "nitro/OS_interrupt_shared.h" #define OS_IE_TIMER0 (1UL << REG_OS_IE_T0_SHIFT) +#define OS_IE_TIMER1 (1UL << REG_OS_IE_T1_SHIFT) extern OSIrqFunction OS_IRQTable[]; extern OSIrqCallbackInfo OSi_IrqCallbackInfo[8]; diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h index 75046308..37ca97e6 100644 --- a/arm9/lib/include/registers.h +++ b/arm9/lib/include/registers.h @@ -346,6 +346,7 @@ #define reg_CARD_DATA (*(REGType32v *)0x4100010) //? #define REG_OS_IE_T0_SHIFT 3 +#define REG_OS_IE_T1_SHIFT 4 #define REG_OS_TM0CNT_H_I_MASK 0x0040 #define REG_OS_TM0CNT_H_E_MASK 0x0080 diff --git a/arm9/lib/src/OS_alarm.c b/arm9/lib/src/OS_alarm.c new file mode 100644 index 00000000..1bd3ff2f --- /dev/null +++ b/arm9/lib/src/OS_alarm.c @@ -0,0 +1,250 @@ +#include "function_target.h" +#include "consts.h" +#include "OS_alarm.h" +#include "OS_interrupt.h" +#include "OS_irqTable.h" +#include "OS_terminate_proc.h" +#include "OS_system.h" + +static struct OSiAlarmQueue OSi_AlarmQueue; + +static u16 OSi_UseAlarm = FALSE; + +ARM_FUNC static void OSi_SetTimer(OSAlarm *alarm) +{ + OSTick tick = OS_GetTick(); + + OS_SetTimerControl(OS_TIMER_1, 0); + + s64 delta = (s64)(alarm->fire - tick); + + OSi_EnterTimerCallback(OS_TIMER_1, OSi_AlarmHandler, NULL); + + u16 timerCount; + if (delta < 0) + { + timerCount = (u16)~1; + } + else if (delta < 0x10000) + { + timerCount = (u16)(~delta); + } + else + { + timerCount = 0; + } + + OS_SetTimerCount((OSTimer)OS_TIMER_1, timerCount); + OS_SetTimerControl(OS_TIMER_1, (u16)OSi_TICK_TIMERCONTROL); + + (void)OS_EnableIrqMask(OS_IE_TIMER1); +} + +ARM_FUNC void OS_InitAlarm(void) +{ + if (!OSi_UseAlarm) + { + OSi_UseAlarm = TRUE; + + OSi_SetTimerReserved(OS_TIMER_1); + + OSi_AlarmQueue.head = NULL; + OSi_AlarmQueue.tail = NULL; + + (void)OS_DisableIrqMask(OS_IE_TIMER1); + } +} + +ARM_FUNC BOOL OS_IsAlarmAvailable(void) +{ + return OSi_UseAlarm; +} + +ARM_FUNC void OS_CreateAlarm(OSAlarm *alarm) +{ + alarm->handler = 0; + alarm->tag = 0; +} + +ARM_FUNC static void OSi_InsertAlarm(OSAlarm *alarm, OSTick fire) +{ + if (alarm->period > 0) + { + OSTick tick = OS_GetTick(); + + fire = alarm->start; + if (alarm->start < tick) + { + fire += alarm->period * ((tick - alarm->start) / alarm->period + 1); + } + } + + alarm->fire = fire; + + OSAlarm *prev; + OSAlarm *next; + + for (next = OSi_AlarmQueue.head; next; next = next->next) + { + if ((s64)(fire - next->fire) >= 0) + { + continue; + } + + alarm->prev = next->prev; + next->prev = alarm; + alarm->next = next; + prev = alarm->prev; + if (prev) + { + prev->next = alarm; + } + else + { + OSi_AlarmQueue.head = alarm; + OSi_SetTimer(alarm); + } + + return; + } + + alarm->next = 0; + prev = OSi_AlarmQueue.tail; + OSi_AlarmQueue.tail = alarm; + alarm->prev = prev; + if (prev) + { + prev->next = alarm; + } + else + { + OSi_AlarmQueue.head = OSi_AlarmQueue.tail = alarm; + OSi_SetTimer(alarm); + } +} + +ARM_FUNC void OS_SetAlarm(OSAlarm * alarm, OSTick tick, OSAlarmHandler handler, void *arg) +{ + if (!alarm || alarm->handler) + { + OS_Terminate(); + } + + OSIntrMode enabled = OS_DisableInterrupts(); + + alarm->period = 0; + + alarm->handler = handler; + alarm->arg = arg; + + OSi_InsertAlarm(alarm, OS_GetTick() + tick); + + (void)OS_RestoreInterrupts(enabled); +} + +ARM_FUNC void OS_CancelAlarm(OSAlarm *alarm) +{ + OSIntrMode enabled = OS_DisableInterrupts(); + + if (!alarm->handler) + { + (void)OS_RestoreInterrupts(enabled); + return; + } + + OSAlarm *next = alarm->next; + + if (!next) + { + OSi_AlarmQueue.tail = alarm->prev; + } + else + { + next->prev = alarm->prev; + } + + if (alarm->prev) + { + alarm->prev->next = next; + } + else + { + OSi_AlarmQueue.head = next; + if (next) + { + OSi_SetTimer(next); + } + } + + alarm->handler = NULL; + alarm->period = 0; + + (void)OS_RestoreInterrupts(enabled); +} + +ARM_FUNC asm void OSi_AlarmHandler(void *arg) +{ + stmfd sp!, {r0, lr} + bl OSi_ArrangeTimer + ldmfd sp!, {r0, lr} + bx lr +} + +ARM_FUNC static void OSi_ArrangeTimer(void) +{ + OS_SetTimerControl(OS_TIMER_1, 0); + + (void)OS_DisableIrqMask(OS_IE_TIMER1); + + OS_SetIrqCheckFlag(OS_IE_TIMER1); + + OSTick tick = OS_GetTick(); + + OSAlarm *alarm = OSi_AlarmQueue.head; + + if (!alarm) + { + return; + } + + if (tick < alarm->fire) + { + OSi_SetTimer(alarm); + return; + } + + OSAlarm *next = alarm->next; + OSi_AlarmQueue.head = next; + + if (!next) + { + OSi_AlarmQueue.tail = NULL; + } + else + { + next->prev = NULL; + } + + OSAlarmHandler handler = alarm->handler; + + if (!alarm->period) + { + alarm->handler = NULL; + } + + if (handler) + { + (handler)(alarm->arg); + } + + if (alarm->period > 0) + { + alarm->handler = handler; + OSi_InsertAlarm(alarm, 0); + } + + if (OSi_AlarmQueue.head) + { + OSi_SetTimer(OSi_AlarmQueue.head); + } +} diff --git a/arm9/modules/05/asm/mod05_021E1374.s b/arm9/modules/05/asm/mod05_021E1374.s new file mode 100644 index 00000000..daf7b4ce --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E1374.s @@ -0,0 +1,1178 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E1374 +MOD05_021E1374: ; 0x021E1374 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + bl FUN_02046528 + mov r1, #0x47 + add r7, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + bl AllocFromHeap + add r4, r0, #0 + bne _021E1396 + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_021E1396: + mov r2, #0x47 + mov r1, #0 + lsl r2, r2, #2 + bl memset + str r7, [r4, #4] + ldr r0, [r7, #0xc] + bl FUN_020462AC + str r0, [r4, #8] + mov r0, #0x45 + lsl r0, r0, #2 + str r6, [r4, r0] + add r0, r0, #4 + str r5, [r4, r0] + ldr r0, [sp] + ldr r1, _021E13C0 ; =MOD05_021E13C4 + add r2, r4, #0 + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E13C0: .word MOD05_021E13C4 + + thumb_func_start MOD05_021E13C4 +MOD05_021E13C4: ; 0x021E13C4 + push {r3, r4, r5, lr} + sub sp, #8 + bl FUN_0204652C + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #8 + bhi _021E13FC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E13E0: ; jump table + .short _021E13F2 - _021E13E0 - 2 ; case 0 + .short _021E1408 - _021E13E0 - 2 ; case 1 + .short _021E1456 - _021E13E0 - 2 ; case 2 + .short _021E1470 - _021E13E0 - 2 ; case 3 + .short _021E1482 - _021E13E0 - 2 ; case 4 + .short _021E149E - _021E13E0 - 2 ; case 5 + .short _021E14B0 - _021E13E0 - 2 ; case 6 + .short _021E14FA - _021E13E0 - 2 ; case 7 + .short _021E1502 - _021E13E0 - 2 ; case 8 +_021E13F2: + ldr r0, [r4, #4] + bl MOD05_021E19E0 + cmp r0, #1 + beq _021E13FE +_021E13FC: + b _021E150C +_021E13FE: + add r0, r4, #0 + mov r1, #1 + bl MOD05_021E1514 + b _021E150C +_021E1408: + bl MOD05_021E153C + add r0, r4, #0 + bl MOD05_021E1518 + cmp r0, #2 + bne _021E142A + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + strh r1, [r0] + add r0, r4, #0 + mov r1, #2 + bl MOD05_021E1514 + b _021E150C +_021E142A: + cmp r0, #0 + bne _021E1442 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + strh r1, [r0] + add r0, r4, #0 + mov r1, #6 + bl MOD05_021E1514 + b _021E150C +_021E1442: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + strh r1, [r0] + add r0, r4, #0 + mov r1, #7 + bl MOD05_021E1514 + b _021E150C +_021E1456: + mov r0, #0x62 + lsl r0, r0, #4 + bl FUN_020054C8 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_0205F42C + add r0, r4, #0 + mov r1, #3 + bl MOD05_021E1514 + b _021E150C +_021E1470: + bl MOD05_021E1794 + cmp r0, #0 + bne _021E150C + add r0, r4, #0 + mov r1, #4 + bl MOD05_021E1514 + b _021E150C +_021E1482: + bl MOD05_021E17A0 + cmp r0, #0 + bne _021E1494 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + strh r1, [r0] +_021E1494: + add r0, r4, #0 + mov r1, #5 + bl MOD05_021E1514 + b _021E150C +_021E149E: + bl MOD05_021E1794 + cmp r0, #0 + bne _021E150C + add r0, r4, #0 + mov r1, #8 + bl MOD05_021E1514 + b _021E150C +_021E14B0: + ldr r0, [r4, #8] + bl FUN_0205F41C + mov r1, #0x64 + sub r5, r1, r0 + add r0, r5, #0 + mov r1, #0xa + bl _s32_div_f + cmp r0, #0 + bne _021E14CA + mov r3, #1 + b _021E14DC +_021E14CA: + add r0, r5, #0 + mov r1, #0x64 + bl _s32_div_f + cmp r0, #0 + bne _021E14DA + mov r3, #2 + b _021E14DC +_021E14DA: + mov r3, #3 +_021E14DC: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + add r2, r5, #0 + bl FUN_0200AD38 + add r0, r4, #0 + mov r1, #8 + bl MOD05_021E1514 + b _021E150C +_021E14FA: + mov r1, #8 + bl MOD05_021E1514 + b _021E150C +_021E1502: + bl FreeToHeap + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E150C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E1514 +MOD05_021E1514: ; 0x021E1514 + str r1, [r0] + bx lr + + thumb_func_start MOD05_021E1518 +MOD05_021E1518: ; 0x021E1518 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_0205F41C + cmp r0, #0x64 + bne _021E1538 + mov r0, #0x11 + lsl r0, r0, #4 + ldrh r0, [r4, r0] + cmp r0, #0 + bne _021E1534 + mov r0, #1 + pop {r4, pc} +_021E1534: + mov r0, #2 + pop {r4, pc} +_021E1538: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E153C +MOD05_021E153C: ; 0x021E153C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp] + ldr r0, [r0, #4] + bl FUN_02034B64 + mov r2, #0 + str r0, [sp, #4] + str r2, [sp, #0x18] + cmp r0, #0 + bls _021E1562 + ldr r3, [sp] + add r1, r2, #0 +_021E1556: + ldr r0, [sp, #4] + add r2, r2, #1 + str r1, [r3, #0x10] + add r3, r3, #4 + cmp r2, r0 + blo _021E1556 +_021E1562: + ldr r0, [sp] + ldr r0, [r0, #4] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [sp] + ldr r0, [r0, #4] + ldr r0, [r0, #0x38] + bl FUN_0205532C + sub r1, r4, #7 + str r1, [sp, #0x14] + add r1, r4, #7 + str r1, [sp, #0x10] + sub r1, r0, #7 + add r0, r0, #6 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r0, #0 + bge _021E1592 + mov r0, #0 + str r0, [sp, #0x14] +_021E1592: + ldr r0, [sp, #0xc] + cmp r0, #0 + bge _021E159C + mov r0, #0 + str r0, [sp, #0xc] +_021E159C: + ldr r0, [sp, #4] + mov r6, #0 + cmp r0, #0 + bls _021E1622 + ldr r5, [sp] +_021E15A6: + ldr r0, [sp] + add r1, r6, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r4, r0, #0 + beq _021E161A + bl FUN_02058488 + cmp r0, #8 + bhi _021E161A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E15CA: ; jump table + .short _021E161A - _021E15CA - 2 ; case 0 + .short _021E15DC - _021E15CA - 2 ; case 1 + .short _021E15DC - _021E15CA - 2 ; case 2 + .short _021E161A - _021E15CA - 2 ; case 3 + .short _021E15DC - _021E15CA - 2 ; case 4 + .short _021E15DC - _021E15CA - 2 ; case 5 + .short _021E15DC - _021E15CA - 2 ; case 6 + .short _021E15DC - _021E15CA - 2 ; case 7 + .short _021E15DC - _021E15CA - 2 ; case 8 +_021E15DC: + add r0, r4, #0 + bl FUN_02058B2C + add r7, r0, #0 + add r0, r4, #0 + bl FUN_02058B4C + ldr r1, [sp, #0x14] + cmp r7, r1 + blt _021E161A + ldr r1, [sp, #0x10] + cmp r7, r1 + bgt _021E161A + ldr r1, [sp, #0xc] + cmp r0, r1 + blt _021E161A + ldr r1, [sp, #8] + cmp r0, r1 + bgt _021E161A + add r0, r4, #0 + bl FUN_02058480 + bl MOD05_021E1630 + cmp r0, #0 + bne _021E161A + ldr r0, [sp, #0x18] + str r4, [r5, #0x10] + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0x18] +_021E161A: + ldr r0, [sp, #4] + add r6, r6, #1 + cmp r6, r0 + blo _021E15A6 +_021E1622: + mov r2, #0x11 + ldr r1, [sp, #0x18] + ldr r0, [sp] + lsl r2, r2, #4 + strh r1, [r0, r2] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E1630 +MOD05_021E1630: ; 0x021E1630 + sub r0, #0x33 + cmp r0, #3 + bhi _021E164E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1642: ; jump table + .short _021E164A - _021E1642 - 2 ; case 0 + .short _021E164A - _021E1642 - 2 ; case 1 + .short _021E164A - _021E1642 - 2 ; case 2 + .short _021E164A - _021E1642 - 2 ; case 3 +_021E164A: + mov r0, #1 + bx lr +_021E164E: + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E1654 +MOD05_021E1654: ; 0x021E1654 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7, #0xc] + bl FUN_020462AC + add r4, r0, #0 + bl FUN_0205F41C + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0205F43C + add r5, r0, #0 + ldr r0, [r7, #0xc] + bl FUN_0206F158 + ldr r1, _021E16C4 ; =0x000001BB + mov r2, #1 + mov r3, #4 + bl FUN_0206EE50 + cmp r0, #1 + bne _021E1692 + cmp r6, #0x64 + bhs _021E1692 + add r1, r6, #1 + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + bl FUN_0205F42C +_021E1692: + add r0, r4, #0 + bl FUN_0205ED9C + cmp r0, #1 + bne _021E16BE + cmp r5, #0x64 + bhs _021E16AE + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0205F44C +_021E16AE: + cmp r5, #0x64 + bne _021E16BE + add r0, r4, #0 + bl FUN_0205F408 + add r0, r7, #0 + bl MOD05_021E16C8 +_021E16BE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E16C4: .word 0x000001BB + + thumb_func_start MOD05_021E16C8 +MOD05_021E16C8: ; 0x021E16C8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02034B64 + add r7, r0, #0 + ldr r5, _021E16FC ; =0x00000000 + beq _021E16F8 +_021E16D6: + ldr r0, [r6, #0x34] + add r1, r5, #0 + bl FUN_02058060 + add r4, r0, #0 + beq _021E16F2 + bl FUN_02058480 + cmp r0, #0x31 + bne _021E16F2 + add r0, r4, #0 + mov r1, #2 + bl MOD05_021E198C +_021E16F2: + add r5, r5, #1 + cmp r5, r7 + blo _021E16D6 +_021E16F8: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E16FC: .word 0x00000000 + + thumb_func_start MOD05_021E1700 +MOD05_021E1700: ; 0x021E1700 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + bl FUN_0205AEA4 + add r1, r0, #0 + ldr r0, _021E1720 ; =0x00000112 + ldrh r2, [r4, r0] + add r2, r2, #1 + strh r2, [r4, r0] + add r0, r4, #0 + bl MOD05_021E1724 + pop {r4, pc} + nop +_021E1720: .word 0x00000112 + + thumb_func_start MOD05_021E1724 +MOD05_021E1724: ; 0x021E1724 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0xc + bl AllocFromHeap + add r4, r0, #0 + bne _021E173C + bl ErrorHandling + pop {r4, r5, r6, pc} +_021E173C: + ldr r0, _021E1750 ; =MOD05_021E1754 + str r5, [r4, #8] + add r1, r4, #0 + mov r2, #0 + str r6, [r4, #4] + bl FUN_0200CA44 + str r0, [r4] + pop {r4, r5, r6, pc} + nop +_021E1750: .word MOD05_021E1754 + + thumb_func_start MOD05_021E1754 +MOD05_021E1754: ; 0x021E1754 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + bl FUN_0205AEF0 + cmp r0, #1 + bne _021E178E + ldr r1, [r4, #8] + ldr r0, _021E1790 ; =0x00000112 + ldrh r0, [r1, r0] + cmp r0, #0 + bne _021E1770 + bl ErrorHandling +_021E1770: + ldr r2, [r4, #8] + ldr r0, _021E1790 ; =0x00000112 + ldrh r1, [r2, r0] + sub r1, r1, #1 + strh r1, [r2, r0] + ldr r0, [r4, #4] + bl FUN_0205AEFC + ldr r0, [r4] + bl FUN_0200CAB4 + mov r0, #4 + add r1, r4, #0 + bl FUN_02016A8C +_021E178E: + pop {r4, pc} + .balign 4, 0 +_021E1790: .word 0x00000112 + + thumb_func_start MOD05_021E1794 +MOD05_021E1794: ; 0x021E1794 + ldr r1, _021E179C ; =0x00000112 + ldrh r0, [r0, r1] + bx lr + nop +_021E179C: .word 0x00000112 + + thumb_func_start MOD05_021E17A0 +MOD05_021E17A0: ; 0x021E17A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #4 + mov r7, #0 + ldrh r0, [r5, r0] + add r6, r7, #0 + cmp r0, #0 + ble _021E183C + add r4, r5, #0 +_021E17BE: + ldr r0, [r4, #0x10] + bl MOD05_021E1848 + add r1, r0, #0 + ldr r0, [r5, #4] + bl FUN_02039640 + cmp r0, #0 + bne _021E17DE + ldr r1, [r4, #0x10] + ldr r2, _021E1840 ; =UNK05_021F6908 + add r0, r5, #0 + bl MOD05_021E1700 + mov r7, #1 + b _021E182E +_021E17DE: + bl LCRandom + mov r1, #0x64 + bl _s32_div_f + cmp r1, #0x32 + bge _021E182E + ldr r0, [r4, #0x10] + bl MOD05_021E1978 + cmp r0, #0 + bne _021E182E + ldr r0, [r4, #0x10] + mov r1, #0x31 + bl MOD05_021E198C + ldr r1, [r4, #0x10] + ldr r2, _021E1844 ; =UNK05_021F6910 + add r0, r5, #0 + bl MOD05_021E1700 + ldr r0, [r5, #4] + ldr r1, [r4, #0x10] + mov r2, #0 + bl MOD05_021E1A30 + add r7, r0, #0 + beq _021E1826 + mov r1, #0x31 + bl MOD05_021E198C + ldr r2, _021E1844 ; =UNK05_021F6910 + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021E1700 +_021E1826: + ldr r0, [sp] + mov r7, #1 + bl FUN_0205ED7C +_021E182E: + mov r0, #0x11 + lsl r0, r0, #4 + ldrh r0, [r5, r0] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, r0 + blt _021E17BE +_021E183C: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E1840: .word UNK05_021F6908 +_021E1844: .word UNK05_021F6910 + + thumb_func_start MOD05_021E1848 +MOD05_021E1848: ; 0x021E1848 + push {r3, lr} + bl FUN_02058498 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_020395F4 + pop {r3, pc} + + thumb_func_start MOD05_021E1858 +MOD05_021E1858: ; 0x021E1858 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r0, r1, #0 + add r5, r2, #0 + bl MOD05_021E1978 + cmp r0, #0 + bne _021E186C + mov r0, #0 + pop {r3, r4, r5, pc} +_021E186C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021E189C + add r5, r0, #0 + cmp r5, #0xff + bne _021E187E + mov r0, #0 + pop {r3, r4, r5, pc} +_021E187E: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021E18BC + add r2, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021E1908 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021E1964 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E189C +MOD05_021E189C: ; 0x021E189C + ldr r3, _021E18B8 ; =UNK05_021F691C + mov r2, #0 +_021E18A0: + ldrh r0, [r3] + cmp r1, r0 + bne _021E18AC + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bx lr +_021E18AC: + add r2, r2, #1 + add r3, #0xc + cmp r2, #0xf0 + blo _021E18A0 + mov r0, #0xff + bx lr + .balign 4, 0 +_021E18B8: .word UNK05_021F691C + + thumb_func_start MOD05_021E18BC +MOD05_021E18BC: ; 0x021E18BC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0xc + ldr r2, _021E1900 ; =UNK05_021F691C + mul r0, r1 + add r0, r2, r0 + ldr r7, _021E1904 ; =0x0000FFFF + mov r4, #1 + add r5, r0, #2 +_021E18CE: + ldrh r1, [r5] + cmp r1, #0 + bne _021E18DC + sub r0, r4, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E18DC: + cmp r1, r7 + beq _021E18F0 + add r0, r6, #0 + bl FUN_02039640 + cmp r0, #0 + bne _021E18F0 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E18F0: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #6 + blt _021E18CE + sub r0, r4, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E1900: .word UNK05_021F691C +_021E1904: .word 0x0000FFFF + + thumb_func_start MOD05_021E1908 +MOD05_021E1908: ; 0x021E1908 + push {r3, r4, r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0 + add r4, r2, #0 + bl FUN_020462AC + cmp r4, #0 + beq _021E192C + add r1, r4, #0 + bl FUN_0205EEB8 + cmp r0, #0 + bne _021E192C + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E1930 + add r4, r0, #0 +_021E192C: + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E1930 +MOD05_021E1930: ; 0x021E1930 + sub r1, r1, #1 + lsl r1, r1, #0x10 + ldr r2, _021E195C ; =UNK05_021F691C + lsr r3, r1, #0x10 + beq _021E1956 + mov r1, #0xc + mul r1, r0 + add r2, r2, r1 + ldr r1, _021E1960 ; =0x0000FFFF +_021E1942: + lsl r0, r3, #1 + ldrh r0, [r2, r0] + cmp r0, r1 + beq _021E194E + add r0, r3, #0 + bx lr +_021E194E: + sub r0, r3, #1 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + bne _021E1942 +_021E1956: + mov r0, #0 + bx lr + nop +_021E195C: .word UNK05_021F691C +_021E1960: .word 0x0000FFFF + + thumb_func_start MOD05_021E1964 +MOD05_021E1964: ; 0x021E1964 + mov r2, #0xc + mul r2, r0 + ldr r0, _021E1974 ; =UNK05_021F691C + lsl r1, r1, #1 + add r0, r0, r2 + ldrh r0, [r1, r0] + bx lr + nop +_021E1974: .word UNK05_021F691C + + thumb_func_start MOD05_021E1978 +MOD05_021E1978: ; 0x021E1978 + push {r3, lr} + bl FUN_02058480 + cmp r0, #0x31 + bne _021E1986 + mov r0, #1 + pop {r3, pc} +_021E1986: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E198C +MOD05_021E198C: ; 0x021E198C + ldr r3, _021E1990 ; =FUN_02058E90 + bx r3 + .balign 4, 0 +_021E1990: .word FUN_02058E90 + + thumb_func_start MOD05_021E1994 +MOD05_021E1994: ; 0x021E1994 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + beq _021E19DC + add r0, r5, #0 + bl FUN_020584C4 + cmp r0, #0 + bne _021E19AA + mov r4, #0xe + b _021E19BC +_021E19AA: + cmp r0, #1 + bne _021E19B2 + mov r4, #0xf + b _021E19BC +_021E19B2: + cmp r0, #2 + bne _021E19BA + mov r4, #0x10 + b _021E19BC +_021E19BA: + mov r4, #0x11 +_021E19BC: + add r0, r6, #0 + add r1, r5, #0 + mov r2, #1 + bl MOD05_021E1A30 + cmp r0, #0 + beq _021E19D2 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + bl MOD05_021E198C +_021E19D2: + lsl r1, r4, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + bl MOD05_021E198C +_021E19DC: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E19E0 +MOD05_021E19E0: ; 0x021E19E0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02034B64 + ldr r5, _021E1A2C ; =0x00000000 + add r7, r0, #0 + str r5, [sp] + beq _021E1A1C +_021E19F0: + ldr r0, [r6, #0x34] + add r1, r5, #0 + bl FUN_02058060 + add r4, r0, #0 + beq _021E1A16 + bl FUN_02058854 + cmp r0, #1 + bne _021E1A10 + add r0, r4, #0 + bl FUN_02058914 + mov r0, #1 + str r0, [sp] + b _021E1A16 +_021E1A10: + add r0, r4, #0 + bl FUN_02058908 +_021E1A16: + add r5, r5, #1 + cmp r5, r7 + blo _021E19F0 +_021E1A1C: + ldr r0, [sp] + cmp r0, #0 + bne _021E1A26 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E1A26: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E1A2C: .word 0x00000000 + + thumb_func_start MOD05_021E1A30 +MOD05_021E1A30: ; 0x021E1A30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + str r0, [sp] + str r2, [sp, #4] + bl FUN_02034B64 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_02058498 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + bl FUN_020395F4 + str r0, [sp, #8] + bl FUN_0203962C + cmp r0, #0 + bne _021E1A60 + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E1A60: + mov r4, #0 + cmp r7, #0 + bls _021E1AD2 +_021E1A66: + ldr r0, [sp] + add r1, r4, #0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0 + beq _021E1ACC + ldr r1, [sp, #4] + cmp r1, #0 + bne _021E1A82 + bl FUN_02058480 + cmp r0, #0x31 + beq _021E1ACC +_021E1A82: + add r0, r5, #0 + bl FUN_02058488 + cmp r0, #8 + bhi _021E1ACC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1A98: ; jump table + .short _021E1ACC - _021E1A98 - 2 ; case 0 + .short _021E1AAA - _021E1A98 - 2 ; case 1 + .short _021E1AAA - _021E1A98 - 2 ; case 2 + .short _021E1ACC - _021E1A98 - 2 ; case 3 + .short _021E1AAA - _021E1A98 - 2 ; case 4 + .short _021E1AAA - _021E1A98 - 2 ; case 5 + .short _021E1AAA - _021E1A98 - 2 ; case 6 + .short _021E1AAA - _021E1A98 - 2 ; case 7 + .short _021E1AAA - _021E1A98 - 2 ; case 8 +_021E1AAA: + add r0, r5, #0 + bl FUN_02058498 + add r6, r0, #0 + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl FUN_020395F4 + ldr r1, [sp, #0xc] + cmp r1, r6 + beq _021E1ACC + ldr r1, [sp, #8] + cmp r1, r0 + bne _021E1ACC + add sp, #0x10 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E1ACC: + add r4, r4, #1 + cmp r4, r7 + blo _021E1A66 +_021E1AD2: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + .section .rodata + + .global UNK05_021F6908 +UNK05_021F6908: ; 0x021F6908 + .word 0x0001004B, 0x000000FE + + .global UNK05_021F6910 +UNK05_021F6910: ; 0x021F6910 + .word 0x00010001, 0x00010067, 0x000000FE + + .global UNK05_021F691C +UNK05_021F691C: ; 0x021F691C + .byte 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x73, 0x02 + .byte 0x74, 0x02, 0xFF, 0xFF, 0x75, 0x02, 0x00, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00, 0xFF, 0xFF, 0x76, 0x02, 0x77, 0x02, 0xFF, 0xFF, 0x78, 0x02 + .byte 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0xFF, 0xFF + .byte 0x79, 0x02, 0x7A, 0x02, 0xFF, 0xFF, 0x7B, 0x02, 0x4A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x02 + .byte 0xFF, 0xFF, 0x7D, 0x02, 0x4C, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x51, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x02, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x02, 0x2B, 0x02, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0xFF, 0xFF, 0x7F, 0x02, 0x80, 0x02, 0x81, 0x02, 0x00, 0x00 + .byte 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x00, 0xFF, 0xFF + .byte 0x82, 0x02, 0x83, 0x02, 0x84, 0x02, 0x00, 0x00, 0x39, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x01, 0x85, 0x02 + .byte 0x86, 0x02, 0xFF, 0xFF, 0x87, 0x02, 0x00, 0x00, 0x84, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x8C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x02, 0x00, 0x00, 0x86, 0x00, 0x86, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x89, 0x02, 0x00, 0x00 + .byte 0x57, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x10, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x01, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8A, 0x02, 0x00, 0x00 + .byte 0x7D, 0x01, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x01, 0x7E, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0x02, 0xFF, 0xFF, 0x8C, 0x02 + .byte 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x1A, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0xFF, 0xFF, 0x8D, 0x02, 0x8E, 0x02 + .byte 0xFF, 0xFF, 0x8F, 0x02, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x1D, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x1E, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0xFF, 0xFF, 0x90, 0x02, 0x91, 0x02 + .byte 0xFF, 0xFF, 0x92, 0x02, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x4B, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0x93, 0x02, 0xFF, 0xFF, 0x94, 0x02, 0x15, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0x95, 0x02, 0x2D, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x02 + .byte 0x2E, 0x02, 0x2E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x02, 0x2F, 0x02 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xAA, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0x02, 0x00, 0x00, 0x16, 0x01, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0x98, 0x02, 0xFF, 0xFF, 0x99, 0x02, 0x1A, 0x01, 0x1A, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x02 + .byte 0x34, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x02, 0x35, 0x02, 0x35, 0x02 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x02, 0x36, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x37, 0x02, 0x37, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x38, 0x02, 0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x43, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x9C, 0x02, 0x00, 0x00, 0x1E, 0x01, 0x1E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x1F, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0x02, 0xFF, 0xFF, 0x9E, 0x02, 0x3D, 0x02, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x02, 0x3E, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xA0, 0x02, 0x3F, 0x02, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x40, 0x02, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x02, 0x41, 0x02 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x02, 0x42, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x02, 0xFF, 0xFF, 0xA2, 0x02 + .byte 0x20, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x02, 0x47, 0x02, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x02, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x02 + .byte 0xFF, 0xFF, 0xA6, 0x02, 0x21, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x02 + .byte 0x49, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x02, 0x22, 0x01, 0x22, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x01, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xA9, 0x02, 0xFF, 0xFF, 0xAA, 0x02 + .byte 0x16, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0xFF, 0xFF + .byte 0xAB, 0x02, 0xFF, 0xFF, 0xAC, 0x02, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x5B, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x5C, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x99, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0x02, 0x00, 0x00, 0x9A, 0x00, 0x9A, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xAC, 0x00, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xAD, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x02, 0x00, 0x00, 0xAE, 0x00, 0xAE, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x41, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x02, 0xFF, 0xFF, 0xB0, 0x02, 0x26, 0x01, 0x26, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x02 + .byte 0xFF, 0xFF, 0xB2, 0x02, 0x54, 0x00, 0xFF, 0xFF, 0xB3, 0x02, 0xB4, 0x02, 0xFF, 0xFF, 0xB5, 0x02 + .byte 0x2C, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x02, 0x00, 0x00, 0x71, 0x00, 0x71, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x31, 0x01, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x01, 0xB9, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x02 + .byte 0xB8, 0x02, 0x00, 0x00, 0x31, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x82, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x01, 0x32, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x02 + .byte 0xFF, 0xFF, 0xBA, 0x02, 0x34, 0x01, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x45, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x02, 0x00, 0x00, 0x39, 0x01, 0x39, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xBC, 0x02, 0x4C, 0x02, 0x4C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x37, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xBD, 0x02, 0xFF, 0xFF, 0xBE, 0x02, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0xBF, 0x02, 0xC0, 0x02, 0xFF, 0xFF, 0xC1, 0x02, 0x00, 0x00 + .byte 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x01, 0xC2, 0x02 + .byte 0xC3, 0x02, 0xC4, 0x02, 0x00, 0x00, 0x00, 0x00, 0x43, 0x01, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x13, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x28, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x29, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x01, 0x46, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xC3, 0x01, 0xFF, 0xFF, 0xC5, 0x02, 0xC6, 0x02, 0xFF, 0xFF, 0xC7, 0x02 + .byte 0x0D, 0x00, 0xC8, 0x02, 0xC9, 0x02, 0xFF, 0xFF, 0xCA, 0x02, 0x00, 0x00, 0x47, 0x01, 0xFF, 0xFF + .byte 0xCB, 0x02, 0xCC, 0x02, 0xCD, 0x02, 0x00, 0x00, 0x48, 0x01, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x23, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x01, 0xCE, 0x02 + .byte 0xCF, 0x02, 0xFF, 0xFF, 0xD0, 0x02, 0x00, 0x00, 0x35, 0x00, 0xFF, 0xFF, 0xD1, 0x02, 0xD2, 0x02 + .byte 0xD3, 0x02, 0x00, 0x00, 0x58, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x59, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x5A, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x4C, 0x01, 0xFF, 0xFF, 0xD4, 0x02, 0xD5, 0x02, 0xD6, 0x02, 0x00, 0x00 + .byte 0x4D, 0x01, 0x4D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xD7, 0x02, 0xD8, 0x02, 0x53, 0x00, 0xFF, 0xFF, 0xD9, 0x02, 0xDA, 0x02, 0xFF, 0xFF, 0xDB, 0x02 + .byte 0x5E, 0x00, 0xFF, 0xFF, 0xDC, 0x02, 0xDD, 0x02, 0xFF, 0xFF, 0xDE, 0x02, 0x5F, 0x00, 0x5F, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xDF, 0x02, 0x50, 0x02, 0x50, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x51, 0x02, 0x51, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF + .byte 0xE0, 0x02, 0xE1, 0x02, 0xFF, 0xFF, 0xE2, 0x02, 0x61, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x52, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x02 + .byte 0x53, 0x02, 0x53, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x02, 0x54, 0x02 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xB4, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x51, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x02, 0xE5, 0x02, 0x52, 0x01, 0x52, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xE6, 0x02, 0x62, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x01, 0xFF, 0xFF + .byte 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x02, 0x00, 0x00, 0x46, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0xFF, 0xFF + .byte 0xEA, 0x02, 0xEB, 0x02, 0xEC, 0x02, 0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x93, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x01, 0xE8, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0x01, 0xE9, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0xEA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x5A, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x02, 0xFF, 0xFF, 0xEE, 0x02, 0xEB, 0x01, 0xEB, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x01, 0xEC, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x89, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x02, 0xF0, 0x02, 0x00, 0x00, 0x8E, 0x00, 0x8E, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x02 + .byte 0xFF, 0xFF, 0xF2, 0x02, 0x8A, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x8B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x02, 0xF4, 0x02, 0x00, 0x00, 0x90, 0x00, 0x90, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x02 + .byte 0xF6, 0x02, 0x00, 0x00, 0x67, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x68, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x9F, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xA1, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xA6, 0x00, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x00, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x02, 0xB8, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xB9, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x02 + .byte 0xBA, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x00, 0xBB, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x00, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x55, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x02 + .byte 0x56, 0x02, 0x56, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x02, 0x57, 0x02 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x02, 0x58, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x6A, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x00, 0xA2, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xA7, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x00, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x02, 0xBE, 0x00, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x02, 0xC1, 0x00, 0xC1, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x00, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xEE, 0x01, 0xEE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x59, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x02, 0x5A, 0x02, 0x5A, 0x02 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x02, 0x5B, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x5C, 0x02, 0x5C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x03 + .byte 0x01, 0x03, 0xFF, 0xFF, 0x02, 0x03, 0x00, 0x00, 0x64, 0x01, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x6B, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x04, 0x03, 0x00, 0x00 + .byte 0x66, 0x01, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x01, 0x67, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x03 + .byte 0x07, 0x03, 0x00, 0x00, 0x68, 0x01, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x69, 0x01, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0x06, 0x03, 0xFF, 0xFF, 0x08, 0x03, 0x6A, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0x09, 0x03, 0x5D, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x03 diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s new file mode 100644 index 00000000..3d877d0d --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E1AD8.s @@ -0,0 +1,2119 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E1AD8 +MOD05_021E1AD8: ; 0x021E1AD8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + ldr r1, [sp, #0x2c] + add r4, r0, #0 + add r5, r2, #0 + add r7, r3, #0 + cmp r1, #0 + bne _021E1B06 + ldr r2, _021E1BF0 ; =0x00000141 + mov r0, #1 + mov r1, #0x1a + mov r3, #4 + bl NewMsgDataFromNarc + add r1, r6, #0 + add r1, #0x8c + str r0, [r1] + add r0, r6, #0 + add r0, #0x97 + ldrb r1, [r0] + mov r0, #2 + orr r1, r0 + b _021E1B16 +_021E1B06: + add r0, r6, #0 + add r0, #0x8c + str r1, [r0] + add r0, r6, #0 + add r0, #0x97 + ldrb r1, [r0] + mov r0, #2 + bic r1, r0 +_021E1B16: + add r0, r6, #0 + add r0, #0x97 + strb r1, [r0] + add r0, r6, #0 + ldr r1, [sp, #0x24] + add r0, #0x90 + str r1, [r0] + add r0, r6, #0 + ldr r1, [sp, #0x20] + str r4, [r6] + add r0, #0xa0 + str r1, [r0] + add r0, r6, #0 + add r0, #0x97 + add r2, sp, #8 + ldrb r0, [r0] + mov r1, #1 + ldrb r3, [r2, #0x14] + bic r0, r1 + mov r1, #1 + and r1, r3 + orr r1, r0 + add r0, r6, #0 + add r0, #0x97 + strb r1, [r0] + add r1, r6, #0 + ldrb r0, [r2, #0x10] + add r1, #0x96 + mov r3, #3 + strb r0, [r1] + add r1, r6, #0 + add r1, #0x97 + ldrb r2, [r1] + mov r1, #0x40 + bic r2, r1 + add r1, r6, #0 + add r1, #0x97 + strb r2, [r1] + add r1, r6, #0 + add r1, #0x97 + ldrb r2, [r1] + mov r1, #0x80 + bic r2, r1 + add r1, r6, #0 + add r1, #0x97 + strb r2, [r1] + add r1, r6, #0 + add r1, #0x98 + strb r5, [r1] + add r1, r6, #0 + add r1, #0x99 + add r2, r6, #0 + strb r7, [r1] + mov r1, #0 + add r2, #0x9b + strb r1, [r2] + ldr r2, [sp, #0x28] + str r2, [r6, #0x18] + add r2, r6, #0 + add r2, #0x94 + strb r3, [r2] + mov r2, #0xb5 + lsl r2, r2, #2 + strh r0, [r6, r2] + add r2, r6, #0 + add r3, r1, #0 +_021E1B9A: + add r0, r2, #0 + add r0, #0xb4 + str r3, [r0] + add r0, r2, #0 + add r0, #0xb8 + add r1, r1, #1 + add r2, #8 + str r3, [r0] + cmp r1, #0x1c + blt _021E1B9A + mov r7, #0xa7 + add r1, r6, #0 + add r2, r6, #0 + mov r5, #0 + mov r0, #0xff + lsl r7, r7, #2 +_021E1BBA: + mov r4, #0x6f + lsl r4, r4, #2 + str r5, [r1, r4] + add r4, r4, #4 + str r5, [r1, r4] + strh r0, [r2, r7] + add r3, r3, #1 + add r1, #8 + add r2, r2, #2 + cmp r3, #0x1c + blt _021E1BBA + add r4, r6, #0 + mov r7, #0x50 +_021E1BD4: + add r0, r7, #0 + mov r1, #4 + bl String_ctor + str r0, [r4, #0x1c] + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #0x1c + blt _021E1BD4 + add r6, #0xa0 + ldr r1, _021E1BF4 ; =0x0000EEEE + ldr r0, [r6] + strh r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E1BF0: .word 0x00000141 +_021E1BF4: .word 0x0000EEEE + + thumb_func_start MOD05_021E1BF8 +MOD05_021E1BF8: ; 0x021E1BF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r1, #0 + mov r1, #0xb6 + add r6, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + str r2, [sp, #0x18] + add r5, r3, #0 + bl AllocFromHeap + add r4, r0, #0 + bne _021E1C18 + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021E1C18: + mov r2, #0xb6 + mov r1, #0 + lsl r2, r2, #2 + bl memset + str r5, [sp] + add r0, sp, #0x20 + ldrb r0, [r0, #0x10] + add r1, r4, #0 + add r2, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x34] + str r0, [sp, #8] + ldr r0, [sp, #0x38] + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + str r0, [sp, #0x10] + ldr r0, [sp, #0x40] + str r0, [sp, #0x14] + ldr r3, [sp, #0x18] + add r0, r6, #0 + bl MOD05_021E1AD8 + add r0, r4, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E1C4C +MOD05_021E1C4C: ; 0x021E1C4C + ldr r3, _021E1C50 ; =MOD05_021E1D38 + bx r3 + .balign 4, 0 +_021E1C50: .word MOD05_021E1D38 + + thumb_func_start MOD05_021E1C54 +MOD05_021E1C54: ; 0x021E1C54 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + bl MOD05_021E1DA8 + mov r1, #7 + tst r1, r0 + bne _021E1C68 + lsr r0, r0, #3 + b _021E1C6C +_021E1C68: + lsr r0, r0, #3 + add r0, r0, #1 +_021E1C6C: + add r1, r4, #0 + add r1, #0x97 + ldrb r1, [r1] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1f + beq _021E1C86 + add r1, r4, #0 + add r1, #0x98 + ldrb r1, [r1] + sub r2, r1, r0 + add r1, r4, #0 + add r1, #0x98 + strb r2, [r1] +_021E1C86: + add r1, r4, #0 + add r1, #0x97 + ldrb r1, [r1] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E1CA8 + add r1, r4, #0 + add r1, #0x99 + ldrb r2, [r1] + add r1, r4, #0 + add r1, #0x9b + ldrb r1, [r1] + lsl r1, r1, #1 + sub r2, r2, r1 + add r1, r4, #0 + add r1, #0x99 + strb r2, [r1] +_021E1CA8: + add r1, r4, #0 + add r1, #0x99 + ldrb r1, [r1] + lsl r0, r0, #0x18 + add r3, r4, #0 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x9b + ldrb r0, [r0] + add r1, r4, #0 + add r3, #0x98 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x3d + str r0, [sp, #0x10] + ldr r0, [r4] + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + ldr r2, _021E1D30 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r4, #0 + ldr r2, _021E1D30 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + bl MOD05_021E1DE4 + add r1, r4, #0 + add r1, #0x96 + add r0, r4, #0 + ldrb r1, [r1] + add r0, #0xa4 + mov r2, #4 + bl FUN_02001C34 + add r1, r4, #0 + add r1, #0xb0 + str r0, [r1] + ldr r0, _021E1D34 ; =MOD05_021E1E58 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + add sp, #0x14 + pop {r3, r4, pc} + nop +_021E1D30: .word 0x000003D9 +_021E1D34: .word MOD05_021E1E58 + + thumb_func_start MOD05_021E1D38 +MOD05_021E1D38: ; 0x021E1D38 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + mov r0, #0x50 + mov r1, #4 + add r6, r2, #0 + bl String_ctor + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r7, #0 + add r2, r4, #0 + bl ReadMsgDataIntoString + add r1, r5, #0 + add r1, #0x9b + ldrb r1, [r1] + add r0, r5, #0 + add r0, #0x90 + lsl r1, r1, #2 + add r1, r5, r1 + ldr r0, [r0] + ldr r1, [r1, #0x1c] + add r2, r4, #0 + bl StringExpandPlaceholders + add r0, r5, #0 + add r0, #0x9b + ldrb r2, [r0] + lsl r0, r2, #2 + add r0, r5, r0 + ldr r1, [r0, #0x1c] + lsl r0, r2, #3 + add r0, r5, r0 + add r0, #0xb4 + str r1, [r0] + add r0, r4, #0 + bl String_dtor + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + lsl r0, r0, #3 + add r0, r5, r0 + add r0, #0xb8 + str r6, [r0] + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + add r5, #0x9b + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E1DA8 +MOD05_021E1DA8: ; 0x021E1DA8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x9b + ldrb r0, [r0] + mov r6, #0 + add r4, r6, #0 + cmp r0, #0 + ble _021E1DDE + add r5, r7, #0 +_021E1DBA: + add r0, r5, #0 + add r0, #0xb4 + ldr r1, [r0] + cmp r1, #0 + beq _021E1DDE + mov r0, #0 + bl FUN_02002F9C + cmp r6, r0 + bhs _021E1DD0 + add r6, r0, #0 +_021E1DD0: + add r0, r7, #0 + add r0, #0x9b + ldrb r0, [r0] + add r4, r4, #1 + add r5, #8 + cmp r4, r0 + blt _021E1DBA +_021E1DDE: + add r6, #0xc + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E1DE4 +MOD05_021E1DE4: ; 0x021E1DE4 + add r2, r0, #0 + add r1, r0, #0 + add r2, #0xb4 + add r1, #0xa4 + str r2, [r1] + add r2, r0, #0 + add r1, r0, #0 + add r2, #8 + add r1, #0xa8 + str r2, [r1] + add r1, r0, #0 + mov r2, #0 + add r1, #0xac + strb r2, [r1] + add r1, r0, #0 + mov r2, #1 + add r1, #0xad + strb r2, [r1] + add r1, r0, #0 + add r1, #0x9b + ldrb r2, [r1] + add r1, r0, #0 + add r1, #0xae + strb r2, [r1] + add r2, r0, #0 + add r2, #0xaf + ldrb r3, [r2] + mov r2, #0xf + add r1, r0, #0 + bic r3, r2 + add r2, r0, #0 + add r2, #0xaf + strb r3, [r2] + add r2, r0, #0 + add r2, #0xaf + ldrb r3, [r2] + mov r2, #0x30 + add r1, #0xaf + bic r3, r2 + add r2, r0, #0 + add r2, #0xaf + strb r3, [r2] + add r0, #0x9b + ldrb r0, [r0] + ldrb r2, [r1] + cmp r0, #4 + blo _021E1E4E + mov r0, #0xc0 + bic r2, r0 + mov r0, #0x40 + orr r0, r2 + strb r0, [r1] + bx lr +_021E1E4E: + mov r0, #0xc0 + bic r2, r0 + strb r2, [r1] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E1E58 +MOD05_021E1E58: ; 0x021E1E58 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + add r0, #0x94 + ldrb r0, [r0] + cmp r0, #0 + beq _021E1E74 + add r0, r4, #0 + add r0, #0x94 + ldrb r0, [r0] + add r4, #0x94 + sub r0, r0, #1 + strb r0, [r4] + pop {r4, pc} +_021E1E74: + bl FUN_0200E308 + cmp r0, #0 + beq _021E1EC4 + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_02001C78 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _021E1E96 + add r1, r1, #1 + cmp r0, r1 + beq _021E1EC4 + b _021E1EB6 +_021E1E96: + add r0, r4, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E1EC4 + add r0, r4, #0 + add r0, #0xa0 + ldr r1, _021E1EC8 ; =0x0000FFFE + ldr r0, [r0] + strh r1, [r0] + add r0, r4, #0 + bl MOD05_021E1ECC + pop {r4, pc} +_021E1EB6: + add r1, r4, #0 + add r1, #0xa0 + ldr r1, [r1] + strh r0, [r1] + add r0, r4, #0 + bl MOD05_021E1ECC +_021E1EC4: + pop {r4, pc} + nop +_021E1EC8: .word 0x0000FFFE + + thumb_func_start MOD05_021E1ECC +MOD05_021E1ECC: ; 0x021E1ECC + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _021E1F30 ; =0x000005DC + bl FUN_020054C8 + add r0, r6, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r1, #0 + bl FUN_02001C5C + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl FUN_0200CCF8 + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_02019178 + mov r4, #0 + add r5, r6, #0 +_021E1EFC: + ldr r0, [r5, #0x1c] + bl String_dtor + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x1c + blt _021E1EFC + add r0, r6, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E1F22 + add r0, r6, #0 + add r0, #0x8c + ldr r0, [r0] + bl DestroyMsgData +_021E1F22: + ldr r0, [r6, #4] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FreeToHeap + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E1F30: .word 0x000005DC + + thumb_func_start MOD05_021E1F34 +MOD05_021E1F34: ; 0x021E1F34 + push {r3, r4, lr} + sub sp, #0x14 + add r4, sp, #0x10 + ldrb r4, [r4, #0x10] + str r4, [sp] + ldr r4, [sp, #0x24] + str r4, [sp, #4] + ldr r4, [sp, #0x28] + str r4, [sp, #8] + ldr r4, [sp, #0x2c] + str r4, [sp, #0xc] + ldr r4, [sp, #0x30] + str r4, [sp, #0x10] + bl MOD05_021E1BF8 + add sp, #0x14 + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E1F58 +MOD05_021E1F58: ; 0x021E1F58 + push {r3, lr} + bl MOD05_021E2094 + pop {r3, pc} + + thumb_func_start MOD05_021E1F60 +MOD05_021E1F60: ; 0x021E1F60 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + bl MOD05_021E2134 + mov r1, #7 + tst r1, r0 + bne _021E1F74 + lsr r0, r0, #3 + b _021E1F78 +_021E1F74: + lsr r0, r0, #3 + add r0, r0, #1 +_021E1F78: + add r1, r4, #0 + add r1, #0x97 + ldrb r1, [r1] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1f + beq _021E1F92 + add r1, r4, #0 + add r1, #0x98 + ldrb r1, [r1] + sub r2, r1, r0 + add r1, r4, #0 + add r1, #0x98 + strb r2, [r1] +_021E1F92: + add r1, r4, #0 + add r1, #0x97 + ldrb r1, [r1] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E1FC8 + add r1, r4, #0 + add r1, #0x9b + ldrb r3, [r1] + cmp r3, #8 + bls _021E1FB8 + add r1, r4, #0 + add r1, #0x99 + ldrb r2, [r1] + add r1, r4, #0 + add r1, #0x99 + sub r2, #0x10 + strb r2, [r1] + b _021E1FC8 +_021E1FB8: + add r1, r4, #0 + add r1, #0x99 + ldrb r2, [r1] + lsl r1, r3, #1 + sub r2, r2, r1 + add r1, r4, #0 + add r1, #0x99 + strb r2, [r1] +_021E1FC8: + add r1, r4, #0 + add r1, #0x9b + ldrb r2, [r1] + cmp r2, #8 + bls _021E2002 + add r1, r4, #0 + add r1, #0x99 + ldrb r1, [r1] + lsl r0, r0, #0x18 + add r3, r4, #0 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x3d + str r0, [sp, #0x10] + ldr r0, [r4] + add r3, #0x98 + add r1, r4, #0 + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 + b _021E2032 +_021E2002: + add r1, r4, #0 + add r1, #0x99 + ldrb r1, [r1] + lsl r0, r0, #0x18 + add r3, r4, #0 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + lsl r0, r2, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x3d + str r0, [sp, #0x10] + ldr r0, [r4] + add r3, #0x98 + add r1, r4, #0 + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 +_021E2032: + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + ldr r2, _021E208C ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r4, #0 + ldr r2, _021E208C ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + bl MOD05_021E2170 + add r2, r4, #0 + add r2, #0x96 + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r2, [r2] + add r0, r4, r0 + mov r1, #0 + mov r3, #4 + bl FUN_020010A8 + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD05_021E2434 + ldr r0, _021E2090 ; =MOD05_021E229C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + add sp, #0x14 + pop {r3, r4, pc} + .balign 4, 0 +_021E208C: .word 0x000003D9 +_021E2090: .word MOD05_021E229C + + thumb_func_start MOD05_021E2094 +MOD05_021E2094: ; 0x021E2094 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + mov r0, #0x50 + mov r1, #4 + add r7, r2, #0 + add r4, r3, #0 + bl String_ctor + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [sp] + add r2, r6, #0 + bl ReadMsgDataIntoString + add r1, r5, #0 + add r1, #0x9b + ldrb r1, [r1] + add r0, r5, #0 + add r0, #0x90 + lsl r1, r1, #2 + add r1, r5, r1 + ldr r0, [r0] + ldr r1, [r1, #0x1c] + add r2, r6, #0 + bl StringExpandPlaceholders + add r0, r5, #0 + add r0, #0x9b + ldrb r1, [r0] + lsl r0, r1, #2 + add r0, r5, r0 + lsl r1, r1, #3 + add r2, r5, r1 + mov r1, #0x6f + ldr r0, [r0, #0x1c] + lsl r1, r1, #2 + str r0, [r2, r1] + add r0, r6, #0 + bl String_dtor + cmp r4, #0xfa + bne _021E2104 + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + mov r2, #2 + mvn r2, r2 + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #7 + lsl r0, r0, #6 + str r2, [r1, r0] + b _021E2114 +_021E2104: + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #7 + lsl r0, r0, #6 + str r4, [r1, r0] +_021E2114: + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + lsl r0, r0, #1 + add r1, r5, r0 + mov r0, #0xa7 + lsl r0, r0, #2 + strh r7, [r1, r0] + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + add r5, #0x9b + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E2134 +MOD05_021E2134: ; 0x021E2134 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x9b + ldrb r0, [r0] + mov r6, #0 + add r4, r6, #0 + cmp r0, #0 + ble _021E216A + add r5, r7, #0 +_021E2146: + mov r0, #0x6f + lsl r0, r0, #2 + ldr r1, [r5, r0] + cmp r1, #0 + beq _021E216A + mov r0, #0 + bl FUN_02002F9C + cmp r6, r0 + bhs _021E215C + add r6, r0, #0 +_021E215C: + add r0, r7, #0 + add r0, #0x9b + ldrb r0, [r0] + add r4, r4, #1 + add r5, #8 + cmp r4, r0 + blt _021E2146 +_021E216A: + add r6, #0xc + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E2170 +MOD05_021E2170: ; 0x021E2170 + push {r4, r5} + mov r3, #0x6f + lsl r3, r3, #2 + add r1, r3, #0 + add r2, r0, r3 + sub r1, #0x28 + str r2, [r0, r1] + add r1, r3, #0 + mov r2, #0 + sub r1, #0x24 + str r2, [r0, r1] + add r1, r3, #0 + ldr r2, _021E2268 ; =MOD05_021E2278 + sub r1, #0x20 + str r2, [r0, r1] + add r2, r0, #0 + add r1, r3, #0 + add r2, #8 + sub r1, #0x1c + str r2, [r0, r1] + add r1, r0, #0 + add r1, #0x9b + ldrb r2, [r1] + add r1, r3, #0 + sub r1, #0x18 + strh r2, [r0, r1] + add r1, r3, #0 + mov r2, #8 + sub r1, #0x16 + strh r2, [r0, r1] + add r1, r3, #0 + mov r2, #1 + sub r1, #0x14 + strb r2, [r0, r1] + add r1, r3, #0 + mov r4, #0xc + sub r1, #0x13 + strb r4, [r0, r1] + add r1, r3, #0 + mov r4, #2 + sub r1, #0x12 + strb r4, [r0, r1] + add r1, r3, #0 + sub r1, #0x11 + ldrb r4, [r0, r1] + mov r1, #0xf + bic r4, r1 + orr r4, r2 + add r2, r3, #0 + sub r2, #0x11 + strb r4, [r0, r2] + add r2, r3, #0 + sub r2, #0x11 + ldrb r5, [r0, r2] + mov r2, #0xf0 + mov r4, #0x10 + bic r5, r2 + orr r5, r4 + add r4, r3, #0 + sub r4, #0x11 + strb r5, [r0, r4] + add r4, r3, #0 + sub r4, #0x10 + ldrb r4, [r0, r4] + bic r4, r1 + mov r1, #0xf + orr r4, r1 + add r1, r3, #0 + sub r1, #0x10 + strb r4, [r0, r1] + add r1, r3, #0 + sub r1, #0x10 + ldrb r4, [r0, r1] + mov r1, #0x20 + bic r4, r2 + add r2, r4, #0 + orr r2, r1 + add r1, r3, #0 + sub r1, #0x10 + strb r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + mov r1, #7 + bic r2, r1 + add r1, r3, #0 + sub r1, #0xe + strh r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + mov r1, #0x78 + bic r2, r1 + add r1, r3, #0 + sub r1, #0xe + strh r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + ldr r1, _021E226C ; =0xFFFFFE7F + and r2, r1 + mov r1, #0x80 + orr r2, r1 + add r1, r3, #0 + sub r1, #0xe + strh r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + ldr r1, _021E2270 ; =0xFFFF81FF + and r2, r1 + add r1, r3, #0 + sub r1, #0xe + strh r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + ldr r1, _021E2274 ; =0xFFFF7FFF + sub r3, #0xe + and r1, r2 + strh r1, [r0, r3] + pop {r4, r5} + bx lr + nop +_021E2268: .word MOD05_021E2278 +_021E226C: .word 0xFFFFFE7F +_021E2270: .word 0xFFFF81FF +_021E2274: .word 0xFFFF7FFF + + thumb_func_start MOD05_021E2278 +MOD05_021E2278: ; 0x021E2278 + push {r3, lr} + mov r2, #2 + mvn r2, r2 + cmp r1, r2 + bne _021E228E + mov r1, #3 + mov r2, #0xf + mov r3, #4 + bl FUN_020013E8 + pop {r3, pc} +_021E228E: + mov r1, #1 + mov r2, #0xf + mov r3, #2 + bl FUN_020013E8 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E229C +MOD05_021E229C: ; 0x021E229C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + add r0, #0x94 + ldrb r0, [r0] + cmp r0, #0 + beq _021E22B8 + add r0, r5, #0 + add r0, #0x94 + ldrb r0, [r0] + add r5, #0x94 + sub r0, r0, #1 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021E22B8: + bl FUN_0200E308 + cmp r0, #0 + beq _021E235A + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02001204 + add r4, r0, #0 + mov r0, #0x6d + mov r1, #0xb5 + lsl r0, r0, #2 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, r0] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0xb5 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _021E22EE + ldr r0, _021E235C ; =0x000005DC + bl FUN_020054C8 +_021E22EE: + ldr r0, _021E2360 ; =gUnknown21C48B8 + mov r1, #0x40 + ldr r0, [r0, #0x4c] + tst r1, r0 + bne _021E230A + mov r1, #0x80 + tst r1, r0 + bne _021E230A + mov r1, #0x20 + tst r1, r0 + bne _021E230A + mov r1, #0x10 + tst r0, r1 + beq _021E2310 +_021E230A: + add r0, r5, #0 + bl MOD05_021E2434 +_021E2310: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _021E2320 + add r0, r0, #1 + cmp r4, r0 + beq _021E235A + b _021E2346 +_021E2320: + add r0, r5, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E235A + ldr r0, _021E235C ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0xa0 + ldr r1, _021E2364 ; =0x0000FFFE + ldr r0, [r0] + strh r1, [r0] + add r0, r5, #0 + bl MOD05_021E2368 + pop {r4, r5, r6, pc} +_021E2346: + ldr r0, _021E235C ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + strh r4, [r0] + add r0, r5, #0 + bl MOD05_021E2368 +_021E235A: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E235C: .word 0x000005DC +_021E2360: .word gUnknown21C48B8 +_021E2364: .word 0x0000FFFE + + thumb_func_start MOD05_021E2368 +MOD05_021E2368: ; 0x021E2368 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _021E23CC ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x6d + lsl r0, r0, #2 + mov r1, #0 + ldr r0, [r6, r0] + add r2, r1, #0 + bl FUN_02001300 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_0200CCF8 + add r0, r6, #0 + add r0, #8 + bl FUN_02019178 + mov r4, #0 + add r5, r6, #0 +_021E2398: + ldr r0, [r5, #0x1c] + bl String_dtor + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x1c + blt _021E2398 + add r0, r6, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E23BE + add r0, r6, #0 + add r0, #0x8c + ldr r0, [r0] + bl DestroyMsgData +_021E23BE: + ldr r0, [r6, #4] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FreeToHeap + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E23CC: .word 0x000005DC + + thumb_func_start MOD05_021E23D0 +MOD05_021E23D0: ; 0x021E23D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + str r1, [sp, #0xc] + mov r0, #0x50 + mov r1, #4 + add r7, r2, #0 + bl String_ctor + add r4, r0, #0 + mov r0, #0x50 + mov r1, #4 + bl String_ctor + add r6, r0, #0 + ldr r0, [r5, #0x18] + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [sp, #0xc] + add r2, r4, #0 + bl ReadMsgDataIntoString + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + add r1, r6, #0 + add r2, r4, #0 + bl StringExpandPlaceholders + mov r3, #0 + str r3, [sp] + str r7, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #1 + add r2, r6, #0 + bl FUN_0201BD84 + add r0, r4, #0 + bl String_dtor + add r0, r6, #0 + bl String_dtor + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E2434 +MOD05_021E2434: ; 0x021E2434 + push {r4, lr} + mov r1, #0x6d + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, r1, #6 + add r1, r4, r1 + bl FUN_0200143C + ldr r0, _021E2460 ; =0x000001BA + ldrh r1, [r4, r0] + add r0, #0xe2 + lsl r1, r1, #1 + add r1, r4, r1 + ldrh r1, [r1, r0] + cmp r1, #0xff + beq _021E245E + add r0, r4, #0 + mov r2, #0 + bl MOD05_021E23D0 +_021E245E: + pop {r4, pc} + .balign 4, 0 +_021E2460: .word 0x000001BA + + thumb_func_start MOD05_021E2464 +MOD05_021E2464: ; 0x021E2464 + push {r4, r5, lr} + sub sp, #0x14 + mov r4, #0 + str r4, [sp] + str r3, [sp, #4] + ldr r3, [sp, #0x20] + str r3, [sp, #8] + str r4, [sp, #0xc] + add r3, r4, #0 + str r4, [sp, #0x10] + bl MOD05_021E1BF8 + add r5, r0, #0 + add r0, r4, #0 + add r1, r0, #0 + bl FUN_02002E4C + lsl r1, r0, #3 + mov r0, #7 + tst r0, r1 + bne _021E2492 + lsr r4, r1, #3 + b _021E2496 +_021E2492: + lsr r0, r1, #3 + add r4, r0, #1 +_021E2496: + add r0, r5, #0 + add r0, #0x99 + ldrb r0, [r0] + add r3, r5, #0 + add r1, r5, #0 + str r0, [sp] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xdd + str r0, [sp, #0x10] + ldr r0, [r5] + add r3, #0x98 + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5] + ldr r2, _021E2538 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r5, #0 + ldr r2, _021E2538 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + lsl r0, r4, #0x13 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0 + add r0, #8 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + mov r2, #0 + add r0, r5, #0 + mov r1, #0xf + add r3, r2, #0 + bl MOD05_021E2540 + mov r1, #0x10 + add r0, r5, #0 + mov r2, #0x20 + add r3, r1, #0 + bl MOD05_021E2540 + add r0, r5, #0 + add r1, r5, #0 + add r0, #8 + add r1, #0xa8 + str r0, [r1] + bl FUN_020191D0 + ldr r0, _021E253C ; =MOD05_021E25A4 + add r1, r5, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + add sp, #0x14 + pop {r4, r5, pc} + nop +_021E2538: .word 0x000003D9 +_021E253C: .word MOD05_021E25A4 + + thumb_func_start MOD05_021E2540 +MOD05_021E2540: ; 0x021E2540 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #0xc] + add r5, r0, #0 + mov r0, #0x50 + mov r1, #4 + str r2, [sp, #0x10] + add r7, r3, #0 + bl String_ctor + add r4, r0, #0 + mov r0, #0x50 + mov r1, #4 + bl String_ctor + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [sp, #0xc] + add r2, r4, #0 + bl ReadMsgDataIntoString + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + add r1, r6, #0 + add r2, r4, #0 + bl StringExpandPlaceholders + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + add r5, #8 + ldr r3, [sp, #0x10] + add r0, r5, #0 + add r2, r6, #0 + bl FUN_0201BD84 + add r0, r4, #0 + bl String_dtor + add r0, r6, #0 + bl String_dtor + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E25A4 +MOD05_021E25A4: ; 0x021E25A4 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldrh r1, [r0] + ldr r0, _021E2604 ; =0x0000FFFF + cmp r1, r0 + bne _021E2602 + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl FUN_0200CCF8 + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_02019178 + mov r4, #0 + add r5, r6, #0 +_021E25D0: + ldr r0, [r5, #0x1c] + bl String_dtor + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x1c + blt _021E25D0 + add r0, r6, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E25F6 + add r0, r6, #0 + add r0, #0x8c + ldr r0, [r0] + bl DestroyMsgData +_021E25F6: + ldr r0, [r6, #4] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FreeToHeap +_021E2602: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E2604: .word 0x0000FFFF + + thumb_func_start MOD05_021E2608 +MOD05_021E2608: ; 0x021E2608 + cmp r0, #0x89 + bgt _021E2646 + bge _021E269E + cmp r0, #0x68 + bgt _021E2638 + bge _021E2682 + cmp r0, #0xe + bgt _021E2632 + add r1, r0, #0 + sub r1, #0xb + bmi _021E26C2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E262A: ; jump table + .short _021E26B2 - _021E262A - 2 ; case 0 + .short _021E26B6 - _021E262A - 2 ; case 1 + .short _021E26BA - _021E262A - 2 ; case 2 + .short _021E26BE - _021E262A - 2 ; case 3 +_021E2632: + cmp r0, #0x67 + beq _021E267E + b _021E26C2 +_021E2638: + cmp r0, #0x70 + bgt _021E2640 + beq _021E268E + b _021E26C2 +_021E2640: + cmp r0, #0x71 + beq _021E2692 + b _021E26C2 +_021E2646: + cmp r0, #0x96 + bgt _021E2668 + cmp r0, #0x8c + blt _021E265A + beq _021E26AA + cmp r0, #0x8d + beq _021E26AE + cmp r0, #0x96 + beq _021E268A + b _021E26C2 +_021E265A: + cmp r0, #0x8a + bgt _021E2662 + beq _021E26A2 + b _021E26C2 +_021E2662: + cmp r0, #0x8b + beq _021E26A6 + b _021E26C2 +_021E2668: + ldr r1, _021E26C8 ; =0x000001CD + cmp r0, r1 + bgt _021E2676 + bge _021E2696 + cmp r0, #0xa4 + beq _021E2686 + b _021E26C2 +_021E2676: + add r1, r1, #1 + cmp r0, r1 + beq _021E269A + b _021E26C2 +_021E267E: + mov r0, #1 + bx lr +_021E2682: + mov r0, #0 + bx lr +_021E2686: + mov r0, #0 + bx lr +_021E268A: + mov r0, #1 + bx lr +_021E268E: + mov r0, #1 + bx lr +_021E2692: + mov r0, #0 + bx lr +_021E2696: + mov r0, #1 + bx lr +_021E269A: + mov r0, #0 + bx lr +_021E269E: + mov r0, #4 + bx lr +_021E26A2: + mov r0, #3 + bx lr +_021E26A6: + mov r0, #2 + bx lr +_021E26AA: + mov r0, #1 + bx lr +_021E26AE: + mov r0, #0 + bx lr +_021E26B2: + mov r0, #3 + bx lr +_021E26B6: + mov r0, #2 + bx lr +_021E26BA: + mov r0, #1 + bx lr +_021E26BE: + mov r0, #0 + bx lr +_021E26C2: + mov r0, #1 + bx lr + nop +_021E26C8: .word 0x000001CD + + thumb_func_start MOD05_021E26CC +MOD05_021E26CC: ; 0x021E26CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r6, r1, #0 + bl MOD05_021E1DA8 + mov r1, #7 + tst r1, r0 + bne _021E26E2 + lsr r7, r0, #3 + b _021E26E6 +_021E26E2: + lsr r0, r0, #3 + add r7, r0, #1 +_021E26E6: + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + add r1, r6, #0 + str r0, [sp, #0x14] + bl _s32_div_f + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x14] + add r1, r6, #0 + bl _s32_div_f + cmp r1, #0 + beq _021E270A + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_021E270A: + add r0, r5, #0 + add r0, #0x99 + ldrb r0, [r0] + add r3, r5, #0 + add r1, r5, #0 + str r0, [sp] + add r0, r7, #0 + mul r0, r6 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + lsl r0, r4, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x3d + str r0, [sp, #0x10] + ldr r0, [r5] + add r3, #0x98 + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5] + ldr r2, _021E2794 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r5, #0 + ldr r2, _021E2794 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD05_021E279C + add r1, r5, #0 + add r1, #0x96 + add r0, r5, #0 + ldrb r1, [r1] + add r0, #0xa4 + mov r2, #4 + bl FUN_02001C34 + add r1, r5, #0 + add r1, #0xb0 + str r0, [r1] + ldr r0, _021E2798 ; =MOD05_021E1E58 + add r1, r5, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E2794: .word 0x000003D9 +_021E2798: .word MOD05_021E1E58 + + thumb_func_start MOD05_021E279C +MOD05_021E279C: ; 0x021E279C + push {r3, r4} + add r4, r0, #0 + add r3, r0, #0 + add r4, #0xb4 + add r3, #0xa4 + str r4, [r3] + add r4, r0, #0 + add r3, r0, #0 + add r4, #8 + add r3, #0xa8 + str r4, [r3] + add r3, r0, #0 + mov r4, #0 + add r3, #0xac + strb r4, [r3] + add r3, r0, #0 + add r3, #0xad + strb r1, [r3] + add r1, r0, #0 + add r1, #0xae + strb r2, [r1] + add r1, r0, #0 + add r1, #0xaf + ldrb r2, [r1] + mov r1, #0xf + bic r2, r1 + add r1, r0, #0 + add r1, #0xaf + strb r2, [r1] + add r1, r0, #0 + add r1, #0xaf + ldrb r2, [r1] + mov r1, #0x30 + add r0, #0xaf + bic r2, r1 + strb r2, [r0] + pop {r3, r4} + bx lr + + thumb_func_start MOD05_021E27E8 +MOD05_021E27E8: ; 0x021E27E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + mov r0, #4 + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + str r6, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, r4, #0 + mov r2, #3 + add r3, r7, #0 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5, #8] + ldr r2, _021E2888 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + ldr r2, _021E2888 ; =0x000003D9 + add r0, r4, #0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + mov r1, #0xf + bl FUN_02019620 + mov r2, #0x7a + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl NewMsgDataFromNarc + mov r1, #0x12 + add r7, r0, #0 + bl NewString_ReadMsgData + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r4, #0 + add r2, r6, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r7, #0 + bl DestroyMsgData + add r0, r6, #0 + bl String_dtor + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E28A0 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E2888: .word 0x000003D9 + + thumb_func_start MOD05_021E288C +MOD05_021E288C: ; 0x021E288C + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r4, #0 + mov r1, #1 + bl FUN_020191A4 + pop {r4, pc} + + thumb_func_start MOD05_021E28A0 +MOD05_021E28A0: ; 0x021E28A0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0x50 + str r0, [sp] + mov r3, #0x10 + add r0, r5, #0 + mov r1, #0xf + mov r2, #0 + str r3, [sp, #4] + bl FUN_020196F4 + mov r2, #0x7a + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl NewMsgDataFromNarc + str r0, [sp, #0xc] + mov r0, #4 + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #0x10 + mov r1, #4 + bl String_ctor + add r4, r0, #0 + ldr r0, [sp, #0xc] + mov r1, #0x13 + bl NewString_ReadMsgData + str r0, [sp, #0x10] + ldr r0, [r7, #0xc] + bl FUN_020238F4 + bl FUN_02023A10 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r6, #0 + mov r1, #0 + mov r3, #6 + bl FUN_0200AD38 + ldr r2, [sp, #0x10] + add r0, r6, #0 + add r1, r4, #0 + bl StringExpandPlaceholders + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x50 + sub r3, r1, r0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r5, #0 + add r2, r4, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + bl String_dtor + add r0, r4, #0 + bl String_dtor + add r0, r6, #0 + bl FUN_0200AB18 + ldr r0, [sp, #0xc] + bl DestroyMsgData + add r0, r5, #0 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E2950 +MOD05_021E2950: ; 0x021E2950 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + mov r0, #4 + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + str r6, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x29 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, r4, #0 + mov r2, #3 + add r3, r7, #0 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5, #8] + ldr r2, _021E29B0 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + ldr r2, _021E29B0 ; =0x000003D9 + add r0, r4, #0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E29C8 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E29B0: .word 0x000003D9 + + thumb_func_start MOD05_021E29B4 +MOD05_021E29B4: ; 0x021E29B4 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r4, #0 + mov r1, #1 + bl FUN_020191A4 + pop {r4, pc} + + thumb_func_start MOD05_021E29C8 +MOD05_021E29C8: ; 0x021E29C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + str r1, [sp, #0xc] + add r0, r1, #0 + mov r1, #0xf + bl FUN_02019620 + ldr r2, _021E2A6C ; =0x00000141 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl NewMsgDataFromNarc + add r7, r0, #0 + mov r0, #4 + bl FUN_0200AA80 + add r5, r0, #0 + mov r0, #0x10 + mov r1, #4 + bl String_ctor + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0xc5 + bl NewString_ReadMsgData + str r0, [sp, #0x10] + ldr r0, [r6, #0xc] + bl FUN_0202390C + bl FUN_02028930 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #5 + bl FUN_0200AD38 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl StringExpandPlaceholders + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x50 + sub r3, r1, r0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r2, r4, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + bl String_dtor + add r0, r4, #0 + bl String_dtor + add r0, r5, #0 + bl FUN_0200AB18 + add r0, r7, #0 + bl DestroyMsgData + ldr r0, [sp, #0xc] + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E2A6C: .word 0x00000141 + + thumb_func_start MOD05_021E2A70 +MOD05_021E2A70: ; 0x021E2A70 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + mov r0, #4 + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + str r6, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x29 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, r4, #0 + mov r2, #3 + add r3, r7, #0 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5, #8] + ldr r2, _021E2AD0 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + ldr r2, _021E2AD0 ; =0x000003D9 + add r0, r4, #0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E2AD4 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E2AD0: .word 0x000003D9 + + thumb_func_start MOD05_021E2AD4 +MOD05_021E2AD4: ; 0x021E2AD4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + str r1, [sp, #0xc] + add r0, r1, #0 + mov r1, #0xf + bl FUN_02019620 + ldr r2, _021E2B7C ; =0x00000141 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl NewMsgDataFromNarc + add r7, r0, #0 + mov r0, #4 + bl FUN_0200AA80 + add r5, r0, #0 + mov r0, #0x10 + mov r1, #4 + bl String_ctor + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0xe6 + bl NewString_ReadMsgData + str r0, [sp, #0x10] + ldr r0, [r6, #0xc] + bl FUN_0202A8D8 + mov r1, #0 + add r2, r1, #0 + bl FUN_0202A3B4 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #5 + bl FUN_0200AD38 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl StringExpandPlaceholders + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x50 + sub r3, r1, r0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r2, r4, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + bl String_dtor + add r0, r4, #0 + bl String_dtor + add r0, r5, #0 + bl FUN_0200AB18 + add r0, r7, #0 + bl DestroyMsgData + ldr r0, [sp, #0xc] + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E2B7C: .word 0x00000141 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 3aba12d9..ec878fb7 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -3,3102 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD05_021E1374 -MOD05_021E1374: ; 0x021E1374 - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - add r5, r1, #0 - add r6, r2, #0 - bl FUN_02046528 - mov r1, #0x47 - add r7, r0, #0 - mov r0, #4 - lsl r1, r1, #2 - bl AllocFromHeap - add r4, r0, #0 - bne _021E1396 - bl ErrorHandling - pop {r3, r4, r5, r6, r7, pc} -_021E1396: - mov r2, #0x47 - mov r1, #0 - lsl r2, r2, #2 - bl memset - str r7, [r4, #4] - ldr r0, [r7, #0xc] - bl FUN_020462AC - str r0, [r4, #8] - mov r0, #0x45 - lsl r0, r0, #2 - str r6, [r4, r0] - add r0, r0, #4 - str r5, [r4, r0] - ldr r0, [sp] - ldr r1, _021E13C0 ; =MOD05_021E13C4 - add r2, r4, #0 - bl FUN_0204640C - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E13C0: .word MOD05_021E13C4 - - thumb_func_start MOD05_021E13C4 -MOD05_021E13C4: ; 0x021E13C4 - push {r3, r4, r5, lr} - sub sp, #8 - bl FUN_0204652C - add r4, r0, #0 - ldr r1, [r4] - cmp r1, #8 - bhi _021E13FC - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021E13E0: ; jump table - .short _021E13F2 - _021E13E0 - 2 ; case 0 - .short _021E1408 - _021E13E0 - 2 ; case 1 - .short _021E1456 - _021E13E0 - 2 ; case 2 - .short _021E1470 - _021E13E0 - 2 ; case 3 - .short _021E1482 - _021E13E0 - 2 ; case 4 - .short _021E149E - _021E13E0 - 2 ; case 5 - .short _021E14B0 - _021E13E0 - 2 ; case 6 - .short _021E14FA - _021E13E0 - 2 ; case 7 - .short _021E1502 - _021E13E0 - 2 ; case 8 -_021E13F2: - ldr r0, [r4, #4] - bl MOD05_021E19E0 - cmp r0, #1 - beq _021E13FE -_021E13FC: - b _021E150C -_021E13FE: - add r0, r4, #0 - mov r1, #1 - bl MOD05_021E1514 - b _021E150C -_021E1408: - bl MOD05_021E153C - add r0, r4, #0 - bl MOD05_021E1518 - cmp r0, #2 - bne _021E142A - mov r0, #0x45 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - strh r1, [r0] - add r0, r4, #0 - mov r1, #2 - bl MOD05_021E1514 - b _021E150C -_021E142A: - cmp r0, #0 - bne _021E1442 - mov r0, #0x45 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - strh r1, [r0] - add r0, r4, #0 - mov r1, #6 - bl MOD05_021E1514 - b _021E150C -_021E1442: - mov r0, #0x45 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #2 - strh r1, [r0] - add r0, r4, #0 - mov r1, #7 - bl MOD05_021E1514 - b _021E150C -_021E1456: - mov r0, #0x62 - lsl r0, r0, #4 - bl FUN_020054C8 - ldr r0, [r4, #8] - mov r1, #0 - bl FUN_0205F42C - add r0, r4, #0 - mov r1, #3 - bl MOD05_021E1514 - b _021E150C -_021E1470: - bl MOD05_021E1794 - cmp r0, #0 - bne _021E150C - add r0, r4, #0 - mov r1, #4 - bl MOD05_021E1514 - b _021E150C -_021E1482: - bl MOD05_021E17A0 - cmp r0, #0 - bne _021E1494 - mov r0, #0x45 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #3 - strh r1, [r0] -_021E1494: - add r0, r4, #0 - mov r1, #5 - bl MOD05_021E1514 - b _021E150C -_021E149E: - bl MOD05_021E1794 - cmp r0, #0 - bne _021E150C - add r0, r4, #0 - mov r1, #8 - bl MOD05_021E1514 - b _021E150C -_021E14B0: - ldr r0, [r4, #8] - bl FUN_0205F41C - mov r1, #0x64 - sub r5, r1, r0 - add r0, r5, #0 - mov r1, #0xa - bl _s32_div_f - cmp r0, #0 - bne _021E14CA - mov r3, #1 - b _021E14DC -_021E14CA: - add r0, r5, #0 - mov r1, #0x64 - bl _s32_div_f - cmp r0, #0 - bne _021E14DA - mov r3, #2 - b _021E14DC -_021E14DA: - mov r3, #3 -_021E14DC: - mov r0, #1 - str r0, [sp] - str r0, [sp, #4] - mov r0, #0x46 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - add r2, r5, #0 - bl FUN_0200AD38 - add r0, r4, #0 - mov r1, #8 - bl MOD05_021E1514 - b _021E150C -_021E14FA: - mov r1, #8 - bl MOD05_021E1514 - b _021E150C -_021E1502: - bl FreeToHeap - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, pc} -_021E150C: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E1514 -MOD05_021E1514: ; 0x021E1514 - str r1, [r0] - bx lr - - thumb_func_start MOD05_021E1518 -MOD05_021E1518: ; 0x021E1518 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #8] - bl FUN_0205F41C - cmp r0, #0x64 - bne _021E1538 - mov r0, #0x11 - lsl r0, r0, #4 - ldrh r0, [r4, r0] - cmp r0, #0 - bne _021E1534 - mov r0, #1 - pop {r4, pc} -_021E1534: - mov r0, #2 - pop {r4, pc} -_021E1538: - mov r0, #0 - pop {r4, pc} - - thumb_func_start MOD05_021E153C -MOD05_021E153C: ; 0x021E153C - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - str r0, [sp] - ldr r0, [r0, #4] - bl FUN_02034B64 - mov r2, #0 - str r0, [sp, #4] - str r2, [sp, #0x18] - cmp r0, #0 - bls _021E1562 - ldr r3, [sp] - add r1, r2, #0 -_021E1556: - ldr r0, [sp, #4] - add r2, r2, #1 - str r1, [r3, #0x10] - add r3, r3, #4 - cmp r2, r0 - blo _021E1556 -_021E1562: - ldr r0, [sp] - ldr r0, [r0, #4] - ldr r0, [r0, #0x38] - bl FUN_02055320 - add r4, r0, #0 - ldr r0, [sp] - ldr r0, [r0, #4] - ldr r0, [r0, #0x38] - bl FUN_0205532C - sub r1, r4, #7 - str r1, [sp, #0x14] - add r1, r4, #7 - str r1, [sp, #0x10] - sub r1, r0, #7 - add r0, r0, #6 - str r0, [sp, #8] - ldr r0, [sp, #0x14] - str r1, [sp, #0xc] - cmp r0, #0 - bge _021E1592 - mov r0, #0 - str r0, [sp, #0x14] -_021E1592: - ldr r0, [sp, #0xc] - cmp r0, #0 - bge _021E159C - mov r0, #0 - str r0, [sp, #0xc] -_021E159C: - ldr r0, [sp, #4] - mov r6, #0 - cmp r0, #0 - bls _021E1622 - ldr r5, [sp] -_021E15A6: - ldr r0, [sp] - add r1, r6, #0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x34] - bl FUN_02058060 - add r4, r0, #0 - beq _021E161A - bl FUN_02058488 - cmp r0, #8 - bhi _021E161A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E15CA: ; jump table - .short _021E161A - _021E15CA - 2 ; case 0 - .short _021E15DC - _021E15CA - 2 ; case 1 - .short _021E15DC - _021E15CA - 2 ; case 2 - .short _021E161A - _021E15CA - 2 ; case 3 - .short _021E15DC - _021E15CA - 2 ; case 4 - .short _021E15DC - _021E15CA - 2 ; case 5 - .short _021E15DC - _021E15CA - 2 ; case 6 - .short _021E15DC - _021E15CA - 2 ; case 7 - .short _021E15DC - _021E15CA - 2 ; case 8 -_021E15DC: - add r0, r4, #0 - bl FUN_02058B2C - add r7, r0, #0 - add r0, r4, #0 - bl FUN_02058B4C - ldr r1, [sp, #0x14] - cmp r7, r1 - blt _021E161A - ldr r1, [sp, #0x10] - cmp r7, r1 - bgt _021E161A - ldr r1, [sp, #0xc] - cmp r0, r1 - blt _021E161A - ldr r1, [sp, #8] - cmp r0, r1 - bgt _021E161A - add r0, r4, #0 - bl FUN_02058480 - bl MOD05_021E1630 - cmp r0, #0 - bne _021E161A - ldr r0, [sp, #0x18] - str r4, [r5, #0x10] - add r0, r0, #1 - add r5, r5, #4 - str r0, [sp, #0x18] -_021E161A: - ldr r0, [sp, #4] - add r6, r6, #1 - cmp r6, r0 - blo _021E15A6 -_021E1622: - mov r2, #0x11 - ldr r1, [sp, #0x18] - ldr r0, [sp] - lsl r2, r2, #4 - strh r1, [r0, r2] - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021E1630 -MOD05_021E1630: ; 0x021E1630 - sub r0, #0x33 - cmp r0, #3 - bhi _021E164E - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E1642: ; jump table - .short _021E164A - _021E1642 - 2 ; case 0 - .short _021E164A - _021E1642 - 2 ; case 1 - .short _021E164A - _021E1642 - 2 ; case 2 - .short _021E164A - _021E1642 - 2 ; case 3 -_021E164A: - mov r0, #1 - bx lr -_021E164E: - mov r0, #0 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E1654 -MOD05_021E1654: ; 0x021E1654 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - ldr r0, [r7, #0xc] - bl FUN_020462AC - add r4, r0, #0 - bl FUN_0205F41C - add r6, r0, #0 - add r0, r4, #0 - bl FUN_0205F43C - add r5, r0, #0 - ldr r0, [r7, #0xc] - bl FUN_0206F158 - ldr r1, _021E16C4 ; =0x000001BB - mov r2, #1 - mov r3, #4 - bl FUN_0206EE50 - cmp r0, #1 - bne _021E1692 - cmp r6, #0x64 - bhs _021E1692 - add r1, r6, #1 - lsl r1, r1, #0x10 - add r0, r4, #0 - lsr r1, r1, #0x10 - bl FUN_0205F42C -_021E1692: - add r0, r4, #0 - bl FUN_0205ED9C - cmp r0, #1 - bne _021E16BE - cmp r5, #0x64 - bhs _021E16AE - add r0, r5, #1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0 - add r1, r5, #0 - bl FUN_0205F44C -_021E16AE: - cmp r5, #0x64 - bne _021E16BE - add r0, r4, #0 - bl FUN_0205F408 - add r0, r7, #0 - bl MOD05_021E16C8 -_021E16BE: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E16C4: .word 0x000001BB - - thumb_func_start MOD05_021E16C8 -MOD05_021E16C8: ; 0x021E16C8 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - bl FUN_02034B64 - add r7, r0, #0 - ldr r5, _021E16FC ; =0x00000000 - beq _021E16F8 -_021E16D6: - ldr r0, [r6, #0x34] - add r1, r5, #0 - bl FUN_02058060 - add r4, r0, #0 - beq _021E16F2 - bl FUN_02058480 - cmp r0, #0x31 - bne _021E16F2 - add r0, r4, #0 - mov r1, #2 - bl MOD05_021E198C -_021E16F2: - add r5, r5, #1 - cmp r5, r7 - blo _021E16D6 -_021E16F8: - pop {r3, r4, r5, r6, r7, pc} - nop -_021E16FC: .word 0x00000000 - - thumb_func_start MOD05_021E1700 -MOD05_021E1700: ; 0x021E1700 - push {r4, lr} - add r4, r0, #0 - add r0, r1, #0 - add r1, r2, #0 - bl FUN_0205AEA4 - add r1, r0, #0 - ldr r0, _021E1720 ; =0x00000112 - ldrh r2, [r4, r0] - add r2, r2, #1 - strh r2, [r4, r0] - add r0, r4, #0 - bl MOD05_021E1724 - pop {r4, pc} - nop -_021E1720: .word 0x00000112 - - thumb_func_start MOD05_021E1724 -MOD05_021E1724: ; 0x021E1724 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r0, #4 - mov r1, #0xc - bl AllocFromHeap - add r4, r0, #0 - bne _021E173C - bl ErrorHandling - pop {r4, r5, r6, pc} -_021E173C: - ldr r0, _021E1750 ; =MOD05_021E1754 - str r5, [r4, #8] - add r1, r4, #0 - mov r2, #0 - str r6, [r4, #4] - bl FUN_0200CA44 - str r0, [r4] - pop {r4, r5, r6, pc} - nop -_021E1750: .word MOD05_021E1754 - - thumb_func_start MOD05_021E1754 -MOD05_021E1754: ; 0x021E1754 - push {r4, lr} - add r4, r1, #0 - ldr r0, [r4, #4] - bl FUN_0205AEF0 - cmp r0, #1 - bne _021E178E - ldr r1, [r4, #8] - ldr r0, _021E1790 ; =0x00000112 - ldrh r0, [r1, r0] - cmp r0, #0 - bne _021E1770 - bl ErrorHandling -_021E1770: - ldr r2, [r4, #8] - ldr r0, _021E1790 ; =0x00000112 - ldrh r1, [r2, r0] - sub r1, r1, #1 - strh r1, [r2, r0] - ldr r0, [r4, #4] - bl FUN_0205AEFC - ldr r0, [r4] - bl FUN_0200CAB4 - mov r0, #4 - add r1, r4, #0 - bl FUN_02016A8C -_021E178E: - pop {r4, pc} - .balign 4, 0 -_021E1790: .word 0x00000112 - - thumb_func_start MOD05_021E1794 -MOD05_021E1794: ; 0x021E1794 - ldr r1, _021E179C ; =0x00000112 - ldrh r0, [r0, r1] - bx lr - nop -_021E179C: .word 0x00000112 - - thumb_func_start MOD05_021E17A0 -MOD05_021E17A0: ; 0x021E17A0 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #4] - ldr r0, [r0, #0xc] - bl FUN_020462AC - str r0, [sp] - mov r0, #0x11 - lsl r0, r0, #4 - mov r7, #0 - ldrh r0, [r5, r0] - add r6, r7, #0 - cmp r0, #0 - ble _021E183C - add r4, r5, #0 -_021E17BE: - ldr r0, [r4, #0x10] - bl MOD05_021E1848 - add r1, r0, #0 - ldr r0, [r5, #4] - bl FUN_02039640 - cmp r0, #0 - bne _021E17DE - ldr r1, [r4, #0x10] - ldr r2, _021E1840 ; =UNK05_021F6908 - add r0, r5, #0 - bl MOD05_021E1700 - mov r7, #1 - b _021E182E -_021E17DE: - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - cmp r1, #0x32 - bge _021E182E - ldr r0, [r4, #0x10] - bl MOD05_021E1978 - cmp r0, #0 - bne _021E182E - ldr r0, [r4, #0x10] - mov r1, #0x31 - bl MOD05_021E198C - ldr r1, [r4, #0x10] - ldr r2, _021E1844 ; =UNK05_021F6910 - add r0, r5, #0 - bl MOD05_021E1700 - ldr r0, [r5, #4] - ldr r1, [r4, #0x10] - mov r2, #0 - bl MOD05_021E1A30 - add r7, r0, #0 - beq _021E1826 - mov r1, #0x31 - bl MOD05_021E198C - ldr r2, _021E1844 ; =UNK05_021F6910 - add r0, r5, #0 - add r1, r7, #0 - bl MOD05_021E1700 -_021E1826: - ldr r0, [sp] - mov r7, #1 - bl FUN_0205ED7C -_021E182E: - mov r0, #0x11 - lsl r0, r0, #4 - ldrh r0, [r5, r0] - add r6, r6, #1 - add r4, r4, #4 - cmp r6, r0 - blt _021E17BE -_021E183C: - add r0, r7, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E1840: .word UNK05_021F6908 -_021E1844: .word UNK05_021F6910 - - thumb_func_start MOD05_021E1848 -MOD05_021E1848: ; 0x021E1848 - push {r3, lr} - bl FUN_02058498 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_020395F4 - pop {r3, pc} - - thumb_func_start MOD05_021E1858 -MOD05_021E1858: ; 0x021E1858 - push {r3, r4, r5, lr} - add r4, r0, #0 - add r0, r1, #0 - add r5, r2, #0 - bl MOD05_021E1978 - cmp r0, #0 - bne _021E186C - mov r0, #0 - pop {r3, r4, r5, pc} -_021E186C: - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021E189C - add r5, r0, #0 - cmp r5, #0xff - bne _021E187E - mov r0, #0 - pop {r3, r4, r5, pc} -_021E187E: - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021E18BC - add r2, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - bl MOD05_021E1908 - add r1, r0, #0 - add r0, r5, #0 - bl MOD05_021E1964 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E189C -MOD05_021E189C: ; 0x021E189C - ldr r3, _021E18B8 ; =UNK05_021F691C - mov r2, #0 -_021E18A0: - ldrh r0, [r3] - cmp r1, r0 - bne _021E18AC - lsl r0, r2, #0x10 - lsr r0, r0, #0x10 - bx lr -_021E18AC: - add r2, r2, #1 - add r3, #0xc - cmp r2, #0xf0 - blo _021E18A0 - mov r0, #0xff - bx lr - .balign 4, 0 -_021E18B8: .word UNK05_021F691C - - thumb_func_start MOD05_021E18BC -MOD05_021E18BC: ; 0x021E18BC - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - mov r0, #0xc - ldr r2, _021E1900 ; =UNK05_021F691C - mul r0, r1 - add r0, r2, r0 - ldr r7, _021E1904 ; =0x0000FFFF - mov r4, #1 - add r5, r0, #2 -_021E18CE: - ldrh r1, [r5] - cmp r1, #0 - bne _021E18DC - sub r0, r4, #1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - pop {r3, r4, r5, r6, r7, pc} -_021E18DC: - cmp r1, r7 - beq _021E18F0 - add r0, r6, #0 - bl FUN_02039640 - cmp r0, #0 - bne _021E18F0 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - pop {r3, r4, r5, r6, r7, pc} -_021E18F0: - add r4, r4, #1 - add r5, r5, #2 - cmp r4, #6 - blt _021E18CE - sub r0, r4, #1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E1900: .word UNK05_021F691C -_021E1904: .word 0x0000FFFF - - thumb_func_start MOD05_021E1908 -MOD05_021E1908: ; 0x021E1908 - push {r3, r4, r5, lr} - ldr r0, [r0, #0xc] - add r5, r1, #0 - add r4, r2, #0 - bl FUN_020462AC - cmp r4, #0 - beq _021E192C - add r1, r4, #0 - bl FUN_0205EEB8 - cmp r0, #0 - bne _021E192C - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021E1930 - add r4, r0, #0 -_021E192C: - add r0, r4, #0 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021E1930 -MOD05_021E1930: ; 0x021E1930 - sub r1, r1, #1 - lsl r1, r1, #0x10 - ldr r2, _021E195C ; =UNK05_021F691C - lsr r3, r1, #0x10 - beq _021E1956 - mov r1, #0xc - mul r1, r0 - add r2, r2, r1 - ldr r1, _021E1960 ; =0x0000FFFF -_021E1942: - lsl r0, r3, #1 - ldrh r0, [r2, r0] - cmp r0, r1 - beq _021E194E - add r0, r3, #0 - bx lr -_021E194E: - sub r0, r3, #1 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - bne _021E1942 -_021E1956: - mov r0, #0 - bx lr - nop -_021E195C: .word UNK05_021F691C -_021E1960: .word 0x0000FFFF - - thumb_func_start MOD05_021E1964 -MOD05_021E1964: ; 0x021E1964 - mov r2, #0xc - mul r2, r0 - ldr r0, _021E1974 ; =UNK05_021F691C - lsl r1, r1, #1 - add r0, r0, r2 - ldrh r0, [r1, r0] - bx lr - nop -_021E1974: .word UNK05_021F691C - - thumb_func_start MOD05_021E1978 -MOD05_021E1978: ; 0x021E1978 - push {r3, lr} - bl FUN_02058480 - cmp r0, #0x31 - bne _021E1986 - mov r0, #1 - pop {r3, pc} -_021E1986: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E198C -MOD05_021E198C: ; 0x021E198C - ldr r3, _021E1990 ; =FUN_02058E90 - bx r3 - .balign 4, 0 -_021E1990: .word FUN_02058E90 - - thumb_func_start MOD05_021E1994 -MOD05_021E1994: ; 0x021E1994 - push {r4, r5, r6, lr} - add r6, r0, #0 - add r5, r1, #0 - beq _021E19DC - add r0, r5, #0 - bl FUN_020584C4 - cmp r0, #0 - bne _021E19AA - mov r4, #0xe - b _021E19BC -_021E19AA: - cmp r0, #1 - bne _021E19B2 - mov r4, #0xf - b _021E19BC -_021E19B2: - cmp r0, #2 - bne _021E19BA - mov r4, #0x10 - b _021E19BC -_021E19BA: - mov r4, #0x11 -_021E19BC: - add r0, r6, #0 - add r1, r5, #0 - mov r2, #1 - bl MOD05_021E1A30 - cmp r0, #0 - beq _021E19D2 - lsl r1, r4, #0x10 - lsr r1, r1, #0x10 - bl MOD05_021E198C -_021E19D2: - lsl r1, r4, #0x10 - add r0, r5, #0 - lsr r1, r1, #0x10 - bl MOD05_021E198C -_021E19DC: - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E19E0 -MOD05_021E19E0: ; 0x021E19E0 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - bl FUN_02034B64 - ldr r5, _021E1A2C ; =0x00000000 - add r7, r0, #0 - str r5, [sp] - beq _021E1A1C -_021E19F0: - ldr r0, [r6, #0x34] - add r1, r5, #0 - bl FUN_02058060 - add r4, r0, #0 - beq _021E1A16 - bl FUN_02058854 - cmp r0, #1 - bne _021E1A10 - add r0, r4, #0 - bl FUN_02058914 - mov r0, #1 - str r0, [sp] - b _021E1A16 -_021E1A10: - add r0, r4, #0 - bl FUN_02058908 -_021E1A16: - add r5, r5, #1 - cmp r5, r7 - blo _021E19F0 -_021E1A1C: - ldr r0, [sp] - cmp r0, #0 - bne _021E1A26 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021E1A26: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E1A2C: .word 0x00000000 - - thumb_func_start MOD05_021E1A30 -MOD05_021E1A30: ; 0x021E1A30 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r1, #0 - str r0, [sp] - str r2, [sp, #4] - bl FUN_02034B64 - add r7, r0, #0 - add r0, r4, #0 - bl FUN_02058498 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0xc] - bl FUN_020395F4 - str r0, [sp, #8] - bl FUN_0203962C - cmp r0, #0 - bne _021E1A60 - add sp, #0x10 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021E1A60: - mov r4, #0 - cmp r7, #0 - bls _021E1AD2 -_021E1A66: - ldr r0, [sp] - add r1, r4, #0 - ldr r0, [r0, #0x34] - bl FUN_02058060 - add r5, r0, #0 - beq _021E1ACC - ldr r1, [sp, #4] - cmp r1, #0 - bne _021E1A82 - bl FUN_02058480 - cmp r0, #0x31 - beq _021E1ACC -_021E1A82: - add r0, r5, #0 - bl FUN_02058488 - cmp r0, #8 - bhi _021E1ACC - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E1A98: ; jump table - .short _021E1ACC - _021E1A98 - 2 ; case 0 - .short _021E1AAA - _021E1A98 - 2 ; case 1 - .short _021E1AAA - _021E1A98 - 2 ; case 2 - .short _021E1ACC - _021E1A98 - 2 ; case 3 - .short _021E1AAA - _021E1A98 - 2 ; case 4 - .short _021E1AAA - _021E1A98 - 2 ; case 5 - .short _021E1AAA - _021E1A98 - 2 ; case 6 - .short _021E1AAA - _021E1A98 - 2 ; case 7 - .short _021E1AAA - _021E1A98 - 2 ; case 8 -_021E1AAA: - add r0, r5, #0 - bl FUN_02058498 - add r6, r0, #0 - lsl r0, r6, #0x10 - lsr r0, r0, #0x10 - bl FUN_020395F4 - ldr r1, [sp, #0xc] - cmp r1, r6 - beq _021E1ACC - ldr r1, [sp, #8] - cmp r1, r0 - bne _021E1ACC - add sp, #0x10 - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} -_021E1ACC: - add r4, r4, #1 - cmp r4, r7 - blo _021E1A66 -_021E1AD2: - mov r0, #0 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021E1AD8 -MOD05_021E1AD8: ; 0x021E1AD8 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - ldr r1, [sp, #0x2c] - add r4, r0, #0 - add r5, r2, #0 - add r7, r3, #0 - cmp r1, #0 - bne _021E1B06 - ldr r2, _021E1BF0 ; =0x00000141 - mov r0, #1 - mov r1, #0x1a - mov r3, #4 - bl NewMsgDataFromNarc - add r1, r6, #0 - add r1, #0x8c - str r0, [r1] - add r0, r6, #0 - add r0, #0x97 - ldrb r1, [r0] - mov r0, #2 - orr r1, r0 - b _021E1B16 -_021E1B06: - add r0, r6, #0 - add r0, #0x8c - str r1, [r0] - add r0, r6, #0 - add r0, #0x97 - ldrb r1, [r0] - mov r0, #2 - bic r1, r0 -_021E1B16: - add r0, r6, #0 - add r0, #0x97 - strb r1, [r0] - add r0, r6, #0 - ldr r1, [sp, #0x24] - add r0, #0x90 - str r1, [r0] - add r0, r6, #0 - ldr r1, [sp, #0x20] - str r4, [r6] - add r0, #0xa0 - str r1, [r0] - add r0, r6, #0 - add r0, #0x97 - add r2, sp, #8 - ldrb r0, [r0] - mov r1, #1 - ldrb r3, [r2, #0x14] - bic r0, r1 - mov r1, #1 - and r1, r3 - orr r1, r0 - add r0, r6, #0 - add r0, #0x97 - strb r1, [r0] - add r1, r6, #0 - ldrb r0, [r2, #0x10] - add r1, #0x96 - mov r3, #3 - strb r0, [r1] - add r1, r6, #0 - add r1, #0x97 - ldrb r2, [r1] - mov r1, #0x40 - bic r2, r1 - add r1, r6, #0 - add r1, #0x97 - strb r2, [r1] - add r1, r6, #0 - add r1, #0x97 - ldrb r2, [r1] - mov r1, #0x80 - bic r2, r1 - add r1, r6, #0 - add r1, #0x97 - strb r2, [r1] - add r1, r6, #0 - add r1, #0x98 - strb r5, [r1] - add r1, r6, #0 - add r1, #0x99 - add r2, r6, #0 - strb r7, [r1] - mov r1, #0 - add r2, #0x9b - strb r1, [r2] - ldr r2, [sp, #0x28] - str r2, [r6, #0x18] - add r2, r6, #0 - add r2, #0x94 - strb r3, [r2] - mov r2, #0xb5 - lsl r2, r2, #2 - strh r0, [r6, r2] - add r2, r6, #0 - add r3, r1, #0 -_021E1B9A: - add r0, r2, #0 - add r0, #0xb4 - str r3, [r0] - add r0, r2, #0 - add r0, #0xb8 - add r1, r1, #1 - add r2, #8 - str r3, [r0] - cmp r1, #0x1c - blt _021E1B9A - mov r7, #0xa7 - add r1, r6, #0 - add r2, r6, #0 - mov r5, #0 - mov r0, #0xff - lsl r7, r7, #2 -_021E1BBA: - mov r4, #0x6f - lsl r4, r4, #2 - str r5, [r1, r4] - add r4, r4, #4 - str r5, [r1, r4] - strh r0, [r2, r7] - add r3, r3, #1 - add r1, #8 - add r2, r2, #2 - cmp r3, #0x1c - blt _021E1BBA - add r4, r6, #0 - mov r7, #0x50 -_021E1BD4: - add r0, r7, #0 - mov r1, #4 - bl String_ctor - str r0, [r4, #0x1c] - add r5, r5, #1 - add r4, r4, #4 - cmp r5, #0x1c - blt _021E1BD4 - add r6, #0xa0 - ldr r1, _021E1BF4 ; =0x0000EEEE - ldr r0, [r6] - strh r1, [r0] - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E1BF0: .word 0x00000141 -_021E1BF4: .word 0x0000EEEE - - thumb_func_start MOD05_021E1BF8 -MOD05_021E1BF8: ; 0x021E1BF8 - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r7, r1, #0 - mov r1, #0xb6 - add r6, r0, #0 - mov r0, #4 - lsl r1, r1, #2 - str r2, [sp, #0x18] - add r5, r3, #0 - bl AllocFromHeap - add r4, r0, #0 - bne _021E1C18 - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021E1C18: - mov r2, #0xb6 - mov r1, #0 - lsl r2, r2, #2 - bl memset - str r5, [sp] - add r0, sp, #0x20 - ldrb r0, [r0, #0x10] - add r1, r4, #0 - add r2, r7, #0 - str r0, [sp, #4] - ldr r0, [sp, #0x34] - str r0, [sp, #8] - ldr r0, [sp, #0x38] - str r0, [sp, #0xc] - ldr r0, [sp, #0x3c] - str r0, [sp, #0x10] - ldr r0, [sp, #0x40] - str r0, [sp, #0x14] - ldr r3, [sp, #0x18] - add r0, r6, #0 - bl MOD05_021E1AD8 - add r0, r4, #0 - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021E1C4C -MOD05_021E1C4C: ; 0x021E1C4C - ldr r3, _021E1C50 ; =MOD05_021E1D38 - bx r3 - .balign 4, 0 -_021E1C50: .word MOD05_021E1D38 - - thumb_func_start MOD05_021E1C54 -MOD05_021E1C54: ; 0x021E1C54 - push {r3, r4, lr} - sub sp, #0x14 - add r4, r0, #0 - bl MOD05_021E1DA8 - mov r1, #7 - tst r1, r0 - bne _021E1C68 - lsr r0, r0, #3 - b _021E1C6C -_021E1C68: - lsr r0, r0, #3 - add r0, r0, #1 -_021E1C6C: - add r1, r4, #0 - add r1, #0x97 - ldrb r1, [r1] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1f - beq _021E1C86 - add r1, r4, #0 - add r1, #0x98 - ldrb r1, [r1] - sub r2, r1, r0 - add r1, r4, #0 - add r1, #0x98 - strb r2, [r1] -_021E1C86: - add r1, r4, #0 - add r1, #0x97 - ldrb r1, [r1] - lsl r1, r1, #0x18 - lsr r1, r1, #0x1f - beq _021E1CA8 - add r1, r4, #0 - add r1, #0x99 - ldrb r2, [r1] - add r1, r4, #0 - add r1, #0x9b - ldrb r1, [r1] - lsl r1, r1, #1 - sub r2, r2, r1 - add r1, r4, #0 - add r1, #0x99 - strb r2, [r1] -_021E1CA8: - add r1, r4, #0 - add r1, #0x99 - ldrb r1, [r1] - lsl r0, r0, #0x18 - add r3, r4, #0 - str r1, [sp] - lsr r0, r0, #0x18 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x9b - ldrb r0, [r0] - add r1, r4, #0 - add r3, #0x98 - lsl r0, r0, #0x19 - lsr r0, r0, #0x18 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - mov r0, #0x3d - str r0, [sp, #0x10] - ldr r0, [r4] - ldrb r3, [r3] - ldr r0, [r0, #8] - add r1, #8 - mov r2, #3 - bl FUN_02019064 - mov r0, #0 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r4] - ldr r2, _021E1D30 ; =0x000003D9 - ldr r0, [r0, #8] - mov r1, #3 - mov r3, #0xb - bl FUN_0200CB00 - add r0, r4, #0 - ldr r2, _021E1D30 ; =0x000003D9 - add r0, #8 - mov r1, #1 - mov r3, #0xb - bl FUN_0200CCA4 - add r0, r4, #0 - bl MOD05_021E1DE4 - add r1, r4, #0 - add r1, #0x96 - add r0, r4, #0 - ldrb r1, [r1] - add r0, #0xa4 - mov r2, #4 - bl FUN_02001C34 - add r1, r4, #0 - add r1, #0xb0 - str r0, [r1] - ldr r0, _021E1D34 ; =MOD05_021E1E58 - add r1, r4, #0 - mov r2, #0 - bl FUN_0200CA44 - str r0, [r4, #4] - add sp, #0x14 - pop {r3, r4, pc} - nop -_021E1D30: .word 0x000003D9 -_021E1D34: .word MOD05_021E1E58 - - thumb_func_start MOD05_021E1D38 -MOD05_021E1D38: ; 0x021E1D38 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - mov r0, #0x50 - mov r1, #4 - add r6, r2, #0 - bl String_ctor - add r4, r0, #0 - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0] - add r1, r7, #0 - add r2, r4, #0 - bl ReadMsgDataIntoString - add r1, r5, #0 - add r1, #0x9b - ldrb r1, [r1] - add r0, r5, #0 - add r0, #0x90 - lsl r1, r1, #2 - add r1, r5, r1 - ldr r0, [r0] - ldr r1, [r1, #0x1c] - add r2, r4, #0 - bl StringExpandPlaceholders - add r0, r5, #0 - add r0, #0x9b - ldrb r2, [r0] - lsl r0, r2, #2 - add r0, r5, r0 - ldr r1, [r0, #0x1c] - lsl r0, r2, #3 - add r0, r5, r0 - add r0, #0xb4 - str r1, [r0] - add r0, r4, #0 - bl String_dtor - add r0, r5, #0 - add r0, #0x9b - ldrb r0, [r0] - lsl r0, r0, #3 - add r0, r5, r0 - add r0, #0xb8 - str r6, [r0] - add r0, r5, #0 - add r0, #0x9b - ldrb r0, [r0] - add r5, #0x9b - add r0, r0, #1 - strb r0, [r5] - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E1DA8 -MOD05_021E1DA8: ; 0x021E1DA8 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r0, #0x9b - ldrb r0, [r0] - mov r6, #0 - add r4, r6, #0 - cmp r0, #0 - ble _021E1DDE - add r5, r7, #0 -_021E1DBA: - add r0, r5, #0 - add r0, #0xb4 - ldr r1, [r0] - cmp r1, #0 - beq _021E1DDE - mov r0, #0 - bl FUN_02002F9C - cmp r6, r0 - bhs _021E1DD0 - add r6, r0, #0 -_021E1DD0: - add r0, r7, #0 - add r0, #0x9b - ldrb r0, [r0] - add r4, r4, #1 - add r5, #8 - cmp r4, r0 - blt _021E1DBA -_021E1DDE: - add r6, #0xc - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021E1DE4 -MOD05_021E1DE4: ; 0x021E1DE4 - add r2, r0, #0 - add r1, r0, #0 - add r2, #0xb4 - add r1, #0xa4 - str r2, [r1] - add r2, r0, #0 - add r1, r0, #0 - add r2, #8 - add r1, #0xa8 - str r2, [r1] - add r1, r0, #0 - mov r2, #0 - add r1, #0xac - strb r2, [r1] - add r1, r0, #0 - mov r2, #1 - add r1, #0xad - strb r2, [r1] - add r1, r0, #0 - add r1, #0x9b - ldrb r2, [r1] - add r1, r0, #0 - add r1, #0xae - strb r2, [r1] - add r2, r0, #0 - add r2, #0xaf - ldrb r3, [r2] - mov r2, #0xf - add r1, r0, #0 - bic r3, r2 - add r2, r0, #0 - add r2, #0xaf - strb r3, [r2] - add r2, r0, #0 - add r2, #0xaf - ldrb r3, [r2] - mov r2, #0x30 - add r1, #0xaf - bic r3, r2 - add r2, r0, #0 - add r2, #0xaf - strb r3, [r2] - add r0, #0x9b - ldrb r0, [r0] - ldrb r2, [r1] - cmp r0, #4 - blo _021E1E4E - mov r0, #0xc0 - bic r2, r0 - mov r0, #0x40 - orr r0, r2 - strb r0, [r1] - bx lr -_021E1E4E: - mov r0, #0xc0 - bic r2, r0 - strb r2, [r1] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E1E58 -MOD05_021E1E58: ; 0x021E1E58 - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - add r0, #0x94 - ldrb r0, [r0] - cmp r0, #0 - beq _021E1E74 - add r0, r4, #0 - add r0, #0x94 - ldrb r0, [r0] - add r4, #0x94 - sub r0, r0, #1 - strb r0, [r4] - pop {r4, pc} -_021E1E74: - bl FUN_0200E308 - cmp r0, #0 - beq _021E1EC4 - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - bl FUN_02001C78 - mov r1, #1 - mvn r1, r1 - cmp r0, r1 - beq _021E1E96 - add r1, r1, #1 - cmp r0, r1 - beq _021E1EC4 - b _021E1EB6 -_021E1E96: - add r0, r4, #0 - add r0, #0x97 - ldrb r0, [r0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - cmp r0, #1 - bne _021E1EC4 - add r0, r4, #0 - add r0, #0xa0 - ldr r1, _021E1EC8 ; =0x0000FFFE - ldr r0, [r0] - strh r1, [r0] - add r0, r4, #0 - bl MOD05_021E1ECC - pop {r4, pc} -_021E1EB6: - add r1, r4, #0 - add r1, #0xa0 - ldr r1, [r1] - strh r0, [r1] - add r0, r4, #0 - bl MOD05_021E1ECC -_021E1EC4: - pop {r4, pc} - nop -_021E1EC8: .word 0x0000FFFE - - thumb_func_start MOD05_021E1ECC -MOD05_021E1ECC: ; 0x021E1ECC - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r0, _021E1F30 ; =0x000005DC - bl FUN_020054C8 - add r0, r6, #0 - add r0, #0xb0 - ldr r0, [r0] - mov r1, #0 - bl FUN_02001C5C - add r0, r6, #0 - add r0, #0xa8 - ldr r0, [r0] - mov r1, #0 - bl FUN_0200CCF8 - add r0, r6, #0 - add r0, #0xa8 - ldr r0, [r0] - bl FUN_02019178 - mov r4, #0 - add r5, r6, #0 -_021E1EFC: - ldr r0, [r5, #0x1c] - bl String_dtor - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #0x1c - blt _021E1EFC - add r0, r6, #0 - add r0, #0x97 - ldrb r0, [r0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - cmp r0, #1 - bne _021E1F22 - add r0, r6, #0 - add r0, #0x8c - ldr r0, [r0] - bl DestroyMsgData -_021E1F22: - ldr r0, [r6, #4] - bl FUN_0200CAB4 - add r0, r6, #0 - bl FreeToHeap - pop {r4, r5, r6, pc} - .balign 4, 0 -_021E1F30: .word 0x000005DC - - thumb_func_start MOD05_021E1F34 -MOD05_021E1F34: ; 0x021E1F34 - push {r3, r4, lr} - sub sp, #0x14 - add r4, sp, #0x10 - ldrb r4, [r4, #0x10] - str r4, [sp] - ldr r4, [sp, #0x24] - str r4, [sp, #4] - ldr r4, [sp, #0x28] - str r4, [sp, #8] - ldr r4, [sp, #0x2c] - str r4, [sp, #0xc] - ldr r4, [sp, #0x30] - str r4, [sp, #0x10] - bl MOD05_021E1BF8 - add sp, #0x14 - pop {r3, r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E1F58 -MOD05_021E1F58: ; 0x021E1F58 - push {r3, lr} - bl MOD05_021E2094 - pop {r3, pc} - - thumb_func_start MOD05_021E1F60 -MOD05_021E1F60: ; 0x021E1F60 - push {r3, r4, lr} - sub sp, #0x14 - add r4, r0, #0 - bl MOD05_021E2134 - mov r1, #7 - tst r1, r0 - bne _021E1F74 - lsr r0, r0, #3 - b _021E1F78 -_021E1F74: - lsr r0, r0, #3 - add r0, r0, #1 -_021E1F78: - add r1, r4, #0 - add r1, #0x97 - ldrb r1, [r1] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1f - beq _021E1F92 - add r1, r4, #0 - add r1, #0x98 - ldrb r1, [r1] - sub r2, r1, r0 - add r1, r4, #0 - add r1, #0x98 - strb r2, [r1] -_021E1F92: - add r1, r4, #0 - add r1, #0x97 - ldrb r1, [r1] - lsl r1, r1, #0x18 - lsr r1, r1, #0x1f - beq _021E1FC8 - add r1, r4, #0 - add r1, #0x9b - ldrb r3, [r1] - cmp r3, #8 - bls _021E1FB8 - add r1, r4, #0 - add r1, #0x99 - ldrb r2, [r1] - add r1, r4, #0 - add r1, #0x99 - sub r2, #0x10 - strb r2, [r1] - b _021E1FC8 -_021E1FB8: - add r1, r4, #0 - add r1, #0x99 - ldrb r2, [r1] - lsl r1, r3, #1 - sub r2, r2, r1 - add r1, r4, #0 - add r1, #0x99 - strb r2, [r1] -_021E1FC8: - add r1, r4, #0 - add r1, #0x9b - ldrb r2, [r1] - cmp r2, #8 - bls _021E2002 - add r1, r4, #0 - add r1, #0x99 - ldrb r1, [r1] - lsl r0, r0, #0x18 - add r3, r4, #0 - str r1, [sp] - lsr r0, r0, #0x18 - str r0, [sp, #4] - mov r0, #0x10 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - mov r0, #0x3d - str r0, [sp, #0x10] - ldr r0, [r4] - add r3, #0x98 - add r1, r4, #0 - ldrb r3, [r3] - ldr r0, [r0, #8] - add r1, #8 - mov r2, #3 - bl FUN_02019064 - b _021E2032 -_021E2002: - add r1, r4, #0 - add r1, #0x99 - ldrb r1, [r1] - lsl r0, r0, #0x18 - add r3, r4, #0 - str r1, [sp] - lsr r0, r0, #0x18 - str r0, [sp, #4] - lsl r0, r2, #0x19 - lsr r0, r0, #0x18 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - mov r0, #0x3d - str r0, [sp, #0x10] - ldr r0, [r4] - add r3, #0x98 - add r1, r4, #0 - ldrb r3, [r3] - ldr r0, [r0, #8] - add r1, #8 - mov r2, #3 - bl FUN_02019064 -_021E2032: - mov r0, #0 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r4] - ldr r2, _021E208C ; =0x000003D9 - ldr r0, [r0, #8] - mov r1, #3 - mov r3, #0xb - bl FUN_0200CB00 - add r0, r4, #0 - ldr r2, _021E208C ; =0x000003D9 - add r0, #8 - mov r1, #1 - mov r3, #0xb - bl FUN_0200CCA4 - add r0, r4, #0 - bl MOD05_021E2170 - add r2, r4, #0 - add r2, #0x96 - mov r0, #0x65 - lsl r0, r0, #2 - ldrb r2, [r2] - add r0, r4, r0 - mov r1, #0 - mov r3, #4 - bl FUN_020010A8 - mov r1, #0x6d - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r4, #0 - bl MOD05_021E2434 - ldr r0, _021E2090 ; =MOD05_021E229C - add r1, r4, #0 - mov r2, #0 - bl FUN_0200CA44 - str r0, [r4, #4] - add sp, #0x14 - pop {r3, r4, pc} - .balign 4, 0 -_021E208C: .word 0x000003D9 -_021E2090: .word MOD05_021E229C - - thumb_func_start MOD05_021E2094 -MOD05_021E2094: ; 0x021E2094 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - str r1, [sp] - mov r0, #0x50 - mov r1, #4 - add r7, r2, #0 - add r4, r3, #0 - bl String_ctor - add r6, r0, #0 - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0] - ldr r1, [sp] - add r2, r6, #0 - bl ReadMsgDataIntoString - add r1, r5, #0 - add r1, #0x9b - ldrb r1, [r1] - add r0, r5, #0 - add r0, #0x90 - lsl r1, r1, #2 - add r1, r5, r1 - ldr r0, [r0] - ldr r1, [r1, #0x1c] - add r2, r6, #0 - bl StringExpandPlaceholders - add r0, r5, #0 - add r0, #0x9b - ldrb r1, [r0] - lsl r0, r1, #2 - add r0, r5, r0 - lsl r1, r1, #3 - add r2, r5, r1 - mov r1, #0x6f - ldr r0, [r0, #0x1c] - lsl r1, r1, #2 - str r0, [r2, r1] - add r0, r6, #0 - bl String_dtor - cmp r4, #0xfa - bne _021E2104 - add r0, r5, #0 - add r0, #0x9b - ldrb r0, [r0] - mov r2, #2 - mvn r2, r2 - lsl r0, r0, #3 - add r1, r5, r0 - mov r0, #7 - lsl r0, r0, #6 - str r2, [r1, r0] - b _021E2114 -_021E2104: - add r0, r5, #0 - add r0, #0x9b - ldrb r0, [r0] - lsl r0, r0, #3 - add r1, r5, r0 - mov r0, #7 - lsl r0, r0, #6 - str r4, [r1, r0] -_021E2114: - add r0, r5, #0 - add r0, #0x9b - ldrb r0, [r0] - lsl r0, r0, #1 - add r1, r5, r0 - mov r0, #0xa7 - lsl r0, r0, #2 - strh r7, [r1, r0] - add r0, r5, #0 - add r0, #0x9b - ldrb r0, [r0] - add r5, #0x9b - add r0, r0, #1 - strb r0, [r5] - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E2134 -MOD05_021E2134: ; 0x021E2134 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r0, #0x9b - ldrb r0, [r0] - mov r6, #0 - add r4, r6, #0 - cmp r0, #0 - ble _021E216A - add r5, r7, #0 -_021E2146: - mov r0, #0x6f - lsl r0, r0, #2 - ldr r1, [r5, r0] - cmp r1, #0 - beq _021E216A - mov r0, #0 - bl FUN_02002F9C - cmp r6, r0 - bhs _021E215C - add r6, r0, #0 -_021E215C: - add r0, r7, #0 - add r0, #0x9b - ldrb r0, [r0] - add r4, r4, #1 - add r5, #8 - cmp r4, r0 - blt _021E2146 -_021E216A: - add r6, #0xc - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021E2170 -MOD05_021E2170: ; 0x021E2170 - push {r4, r5} - mov r3, #0x6f - lsl r3, r3, #2 - add r1, r3, #0 - add r2, r0, r3 - sub r1, #0x28 - str r2, [r0, r1] - add r1, r3, #0 - mov r2, #0 - sub r1, #0x24 - str r2, [r0, r1] - add r1, r3, #0 - ldr r2, _021E2268 ; =MOD05_021E2278 - sub r1, #0x20 - str r2, [r0, r1] - add r2, r0, #0 - add r1, r3, #0 - add r2, #8 - sub r1, #0x1c - str r2, [r0, r1] - add r1, r0, #0 - add r1, #0x9b - ldrb r2, [r1] - add r1, r3, #0 - sub r1, #0x18 - strh r2, [r0, r1] - add r1, r3, #0 - mov r2, #8 - sub r1, #0x16 - strh r2, [r0, r1] - add r1, r3, #0 - mov r2, #1 - sub r1, #0x14 - strb r2, [r0, r1] - add r1, r3, #0 - mov r4, #0xc - sub r1, #0x13 - strb r4, [r0, r1] - add r1, r3, #0 - mov r4, #2 - sub r1, #0x12 - strb r4, [r0, r1] - add r1, r3, #0 - sub r1, #0x11 - ldrb r4, [r0, r1] - mov r1, #0xf - bic r4, r1 - orr r4, r2 - add r2, r3, #0 - sub r2, #0x11 - strb r4, [r0, r2] - add r2, r3, #0 - sub r2, #0x11 - ldrb r5, [r0, r2] - mov r2, #0xf0 - mov r4, #0x10 - bic r5, r2 - orr r5, r4 - add r4, r3, #0 - sub r4, #0x11 - strb r5, [r0, r4] - add r4, r3, #0 - sub r4, #0x10 - ldrb r4, [r0, r4] - bic r4, r1 - mov r1, #0xf - orr r4, r1 - add r1, r3, #0 - sub r1, #0x10 - strb r4, [r0, r1] - add r1, r3, #0 - sub r1, #0x10 - ldrb r4, [r0, r1] - mov r1, #0x20 - bic r4, r2 - add r2, r4, #0 - orr r2, r1 - add r1, r3, #0 - sub r1, #0x10 - strb r2, [r0, r1] - add r1, r3, #0 - sub r1, #0xe - ldrh r2, [r0, r1] - mov r1, #7 - bic r2, r1 - add r1, r3, #0 - sub r1, #0xe - strh r2, [r0, r1] - add r1, r3, #0 - sub r1, #0xe - ldrh r2, [r0, r1] - mov r1, #0x78 - bic r2, r1 - add r1, r3, #0 - sub r1, #0xe - strh r2, [r0, r1] - add r1, r3, #0 - sub r1, #0xe - ldrh r2, [r0, r1] - ldr r1, _021E226C ; =0xFFFFFE7F - and r2, r1 - mov r1, #0x80 - orr r2, r1 - add r1, r3, #0 - sub r1, #0xe - strh r2, [r0, r1] - add r1, r3, #0 - sub r1, #0xe - ldrh r2, [r0, r1] - ldr r1, _021E2270 ; =0xFFFF81FF - and r2, r1 - add r1, r3, #0 - sub r1, #0xe - strh r2, [r0, r1] - add r1, r3, #0 - sub r1, #0xe - ldrh r2, [r0, r1] - ldr r1, _021E2274 ; =0xFFFF7FFF - sub r3, #0xe - and r1, r2 - strh r1, [r0, r3] - pop {r4, r5} - bx lr - nop -_021E2268: .word MOD05_021E2278 -_021E226C: .word 0xFFFFFE7F -_021E2270: .word 0xFFFF81FF -_021E2274: .word 0xFFFF7FFF - - thumb_func_start MOD05_021E2278 -MOD05_021E2278: ; 0x021E2278 - push {r3, lr} - mov r2, #2 - mvn r2, r2 - cmp r1, r2 - bne _021E228E - mov r1, #3 - mov r2, #0xf - mov r3, #4 - bl FUN_020013E8 - pop {r3, pc} -_021E228E: - mov r1, #1 - mov r2, #0xf - mov r3, #2 - bl FUN_020013E8 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E229C -MOD05_021E229C: ; 0x021E229C - push {r4, r5, r6, lr} - add r5, r1, #0 - add r0, r5, #0 - add r0, #0x94 - ldrb r0, [r0] - cmp r0, #0 - beq _021E22B8 - add r0, r5, #0 - add r0, #0x94 - ldrb r0, [r0] - add r5, #0x94 - sub r0, r0, #1 - strb r0, [r5] - pop {r4, r5, r6, pc} -_021E22B8: - bl FUN_0200E308 - cmp r0, #0 - beq _021E235A - mov r0, #0x6d - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02001204 - add r4, r0, #0 - mov r0, #0x6d - mov r1, #0xb5 - lsl r0, r0, #2 - lsl r1, r1, #2 - ldrh r6, [r5, r1] - ldr r0, [r5, r0] - add r1, r5, r1 - bl FUN_0200143C - mov r0, #0xb5 - lsl r0, r0, #2 - ldrh r0, [r5, r0] - cmp r6, r0 - beq _021E22EE - ldr r0, _021E235C ; =0x000005DC - bl FUN_020054C8 -_021E22EE: - ldr r0, _021E2360 ; =gUnknown21C48B8 - mov r1, #0x40 - ldr r0, [r0, #0x4c] - tst r1, r0 - bne _021E230A - mov r1, #0x80 - tst r1, r0 - bne _021E230A - mov r1, #0x20 - tst r1, r0 - bne _021E230A - mov r1, #0x10 - tst r0, r1 - beq _021E2310 -_021E230A: - add r0, r5, #0 - bl MOD05_021E2434 -_021E2310: - mov r0, #1 - mvn r0, r0 - cmp r4, r0 - beq _021E2320 - add r0, r0, #1 - cmp r4, r0 - beq _021E235A - b _021E2346 -_021E2320: - add r0, r5, #0 - add r0, #0x97 - ldrb r0, [r0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - cmp r0, #1 - bne _021E235A - ldr r0, _021E235C ; =0x000005DC - bl FUN_020054C8 - add r0, r5, #0 - add r0, #0xa0 - ldr r1, _021E2364 ; =0x0000FFFE - ldr r0, [r0] - strh r1, [r0] - add r0, r5, #0 - bl MOD05_021E2368 - pop {r4, r5, r6, pc} -_021E2346: - ldr r0, _021E235C ; =0x000005DC - bl FUN_020054C8 - add r0, r5, #0 - add r0, #0xa0 - ldr r0, [r0] - strh r4, [r0] - add r0, r5, #0 - bl MOD05_021E2368 -_021E235A: - pop {r4, r5, r6, pc} - .balign 4, 0 -_021E235C: .word 0x000005DC -_021E2360: .word gUnknown21C48B8 -_021E2364: .word 0x0000FFFE - - thumb_func_start MOD05_021E2368 -MOD05_021E2368: ; 0x021E2368 - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r0, _021E23CC ; =0x000005DC - bl FUN_020054C8 - mov r0, #0x6d - lsl r0, r0, #2 - mov r1, #0 - ldr r0, [r6, r0] - add r2, r1, #0 - bl FUN_02001300 - mov r0, #0x1a - lsl r0, r0, #4 - ldr r0, [r6, r0] - mov r1, #0 - bl FUN_0200CCF8 - add r0, r6, #0 - add r0, #8 - bl FUN_02019178 - mov r4, #0 - add r5, r6, #0 -_021E2398: - ldr r0, [r5, #0x1c] - bl String_dtor - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #0x1c - blt _021E2398 - add r0, r6, #0 - add r0, #0x97 - ldrb r0, [r0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - cmp r0, #1 - bne _021E23BE - add r0, r6, #0 - add r0, #0x8c - ldr r0, [r0] - bl DestroyMsgData -_021E23BE: - ldr r0, [r6, #4] - bl FUN_0200CAB4 - add r0, r6, #0 - bl FreeToHeap - pop {r4, r5, r6, pc} - .balign 4, 0 -_021E23CC: .word 0x000005DC - - thumb_func_start MOD05_021E23D0 -MOD05_021E23D0: ; 0x021E23D0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r0, #0 - str r1, [sp, #0xc] - mov r0, #0x50 - mov r1, #4 - add r7, r2, #0 - bl String_ctor - add r4, r0, #0 - mov r0, #0x50 - mov r1, #4 - bl String_ctor - add r6, r0, #0 - ldr r0, [r5, #0x18] - mov r1, #0xf - bl FUN_02019620 - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0] - ldr r1, [sp, #0xc] - add r2, r4, #0 - bl ReadMsgDataIntoString - add r0, r5, #0 - add r0, #0x90 - ldr r0, [r0] - add r1, r6, #0 - add r2, r4, #0 - bl StringExpandPlaceholders - mov r3, #0 - str r3, [sp] - str r7, [sp, #4] - str r3, [sp, #8] - ldr r0, [r5, #0x18] - mov r1, #1 - add r2, r6, #0 - bl FUN_0201BD84 - add r0, r4, #0 - bl String_dtor - add r0, r6, #0 - bl String_dtor - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021E2434 -MOD05_021E2434: ; 0x021E2434 - push {r4, lr} - mov r1, #0x6d - add r4, r0, #0 - lsl r1, r1, #2 - ldr r0, [r4, r1] - add r1, r1, #6 - add r1, r4, r1 - bl FUN_0200143C - ldr r0, _021E2460 ; =0x000001BA - ldrh r1, [r4, r0] - add r0, #0xe2 - lsl r1, r1, #1 - add r1, r4, r1 - ldrh r1, [r1, r0] - cmp r1, #0xff - beq _021E245E - add r0, r4, #0 - mov r2, #0 - bl MOD05_021E23D0 -_021E245E: - pop {r4, pc} - .balign 4, 0 -_021E2460: .word 0x000001BA - - thumb_func_start MOD05_021E2464 -MOD05_021E2464: ; 0x021E2464 - push {r4, r5, lr} - sub sp, #0x14 - mov r4, #0 - str r4, [sp] - str r3, [sp, #4] - ldr r3, [sp, #0x20] - str r3, [sp, #8] - str r4, [sp, #0xc] - add r3, r4, #0 - str r4, [sp, #0x10] - bl MOD05_021E1BF8 - add r5, r0, #0 - add r0, r4, #0 - add r1, r0, #0 - bl FUN_02002E4C - lsl r1, r0, #3 - mov r0, #7 - tst r0, r1 - bne _021E2492 - lsr r4, r1, #3 - b _021E2496 -_021E2492: - lsr r0, r1, #3 - add r4, r0, #1 -_021E2496: - add r0, r5, #0 - add r0, #0x99 - ldrb r0, [r0] - add r3, r5, #0 - add r1, r5, #0 - str r0, [sp] - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - mov r0, #0xdd - str r0, [sp, #0x10] - ldr r0, [r5] - add r3, #0x98 - ldrb r3, [r3] - ldr r0, [r0, #8] - add r1, #8 - mov r2, #3 - bl FUN_02019064 - mov r0, #0 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r5] - ldr r2, _021E2538 ; =0x000003D9 - ldr r0, [r0, #8] - mov r1, #3 - mov r3, #0xb - bl FUN_0200CB00 - add r0, r5, #0 - ldr r2, _021E2538 ; =0x000003D9 - add r0, #8 - mov r1, #1 - mov r3, #0xb - bl FUN_0200CCA4 - lsl r0, r4, #0x13 - lsr r0, r0, #0x10 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - add r0, r5, #0 - mov r2, #0 - add r0, #8 - mov r1, #0xf - add r3, r2, #0 - bl FUN_020196F4 - mov r2, #0 - add r0, r5, #0 - mov r1, #0xf - add r3, r2, #0 - bl MOD05_021E2540 - mov r1, #0x10 - add r0, r5, #0 - mov r2, #0x20 - add r3, r1, #0 - bl MOD05_021E2540 - add r0, r5, #0 - add r1, r5, #0 - add r0, #8 - add r1, #0xa8 - str r0, [r1] - bl FUN_020191D0 - ldr r0, _021E253C ; =MOD05_021E25A4 - add r1, r5, #0 - mov r2, #0 - bl FUN_0200CA44 - str r0, [r5, #4] - add sp, #0x14 - pop {r4, r5, pc} - nop -_021E2538: .word 0x000003D9 -_021E253C: .word MOD05_021E25A4 - - thumb_func_start MOD05_021E2540 -MOD05_021E2540: ; 0x021E2540 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - str r1, [sp, #0xc] - add r5, r0, #0 - mov r0, #0x50 - mov r1, #4 - str r2, [sp, #0x10] - add r7, r3, #0 - bl String_ctor - add r4, r0, #0 - mov r0, #0x50 - mov r1, #4 - bl String_ctor - add r6, r0, #0 - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0] - ldr r1, [sp, #0xc] - add r2, r4, #0 - bl ReadMsgDataIntoString - add r0, r5, #0 - add r0, #0x90 - ldr r0, [r0] - add r1, r6, #0 - add r2, r4, #0 - bl StringExpandPlaceholders - str r7, [sp] - mov r0, #0xff - str r0, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - add r5, #8 - ldr r3, [sp, #0x10] - add r0, r5, #0 - add r2, r6, #0 - bl FUN_0201BD84 - add r0, r4, #0 - bl String_dtor - add r0, r6, #0 - bl String_dtor - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E25A4 -MOD05_021E25A4: ; 0x021E25A4 - push {r4, r5, r6, lr} - add r6, r1, #0 - add r0, r6, #0 - add r0, #0xa0 - ldr r0, [r0] - ldrh r1, [r0] - ldr r0, _021E2604 ; =0x0000FFFF - cmp r1, r0 - bne _021E2602 - add r0, r6, #0 - add r0, #0xa8 - ldr r0, [r0] - mov r1, #0 - bl FUN_0200CCF8 - add r0, r6, #0 - add r0, #0xa8 - ldr r0, [r0] - bl FUN_02019178 - mov r4, #0 - add r5, r6, #0 -_021E25D0: - ldr r0, [r5, #0x1c] - bl String_dtor - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #0x1c - blt _021E25D0 - add r0, r6, #0 - add r0, #0x97 - ldrb r0, [r0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - cmp r0, #1 - bne _021E25F6 - add r0, r6, #0 - add r0, #0x8c - ldr r0, [r0] - bl DestroyMsgData -_021E25F6: - ldr r0, [r6, #4] - bl FUN_0200CAB4 - add r0, r6, #0 - bl FreeToHeap -_021E2602: - pop {r4, r5, r6, pc} - .balign 4, 0 -_021E2604: .word 0x0000FFFF - - thumb_func_start MOD05_021E2608 -MOD05_021E2608: ; 0x021E2608 - cmp r0, #0x89 - bgt _021E2646 - bge _021E269E - cmp r0, #0x68 - bgt _021E2638 - bge _021E2682 - cmp r0, #0xe - bgt _021E2632 - add r1, r0, #0 - sub r1, #0xb - bmi _021E26C2 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021E262A: ; jump table - .short _021E26B2 - _021E262A - 2 ; case 0 - .short _021E26B6 - _021E262A - 2 ; case 1 - .short _021E26BA - _021E262A - 2 ; case 2 - .short _021E26BE - _021E262A - 2 ; case 3 -_021E2632: - cmp r0, #0x67 - beq _021E267E - b _021E26C2 -_021E2638: - cmp r0, #0x70 - bgt _021E2640 - beq _021E268E - b _021E26C2 -_021E2640: - cmp r0, #0x71 - beq _021E2692 - b _021E26C2 -_021E2646: - cmp r0, #0x96 - bgt _021E2668 - cmp r0, #0x8c - blt _021E265A - beq _021E26AA - cmp r0, #0x8d - beq _021E26AE - cmp r0, #0x96 - beq _021E268A - b _021E26C2 -_021E265A: - cmp r0, #0x8a - bgt _021E2662 - beq _021E26A2 - b _021E26C2 -_021E2662: - cmp r0, #0x8b - beq _021E26A6 - b _021E26C2 -_021E2668: - ldr r1, _021E26C8 ; =0x000001CD - cmp r0, r1 - bgt _021E2676 - bge _021E2696 - cmp r0, #0xa4 - beq _021E2686 - b _021E26C2 -_021E2676: - add r1, r1, #1 - cmp r0, r1 - beq _021E269A - b _021E26C2 -_021E267E: - mov r0, #1 - bx lr -_021E2682: - mov r0, #0 - bx lr -_021E2686: - mov r0, #0 - bx lr -_021E268A: - mov r0, #1 - bx lr -_021E268E: - mov r0, #1 - bx lr -_021E2692: - mov r0, #0 - bx lr -_021E2696: - mov r0, #1 - bx lr -_021E269A: - mov r0, #0 - bx lr -_021E269E: - mov r0, #4 - bx lr -_021E26A2: - mov r0, #3 - bx lr -_021E26A6: - mov r0, #2 - bx lr -_021E26AA: - mov r0, #1 - bx lr -_021E26AE: - mov r0, #0 - bx lr -_021E26B2: - mov r0, #3 - bx lr -_021E26B6: - mov r0, #2 - bx lr -_021E26BA: - mov r0, #1 - bx lr -_021E26BE: - mov r0, #0 - bx lr -_021E26C2: - mov r0, #1 - bx lr - nop -_021E26C8: .word 0x000001CD - - thumb_func_start MOD05_021E26CC -MOD05_021E26CC: ; 0x021E26CC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r5, r0, #0 - add r6, r1, #0 - bl MOD05_021E1DA8 - mov r1, #7 - tst r1, r0 - bne _021E26E2 - lsr r7, r0, #3 - b _021E26E6 -_021E26E2: - lsr r0, r0, #3 - add r7, r0, #1 -_021E26E6: - add r0, r5, #0 - add r0, #0x9b - ldrb r0, [r0] - add r1, r6, #0 - str r0, [sp, #0x14] - bl _s32_div_f - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, [sp, #0x14] - add r1, r6, #0 - bl _s32_div_f - cmp r1, #0 - beq _021E270A - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_021E270A: - add r0, r5, #0 - add r0, #0x99 - ldrb r0, [r0] - add r3, r5, #0 - add r1, r5, #0 - str r0, [sp] - add r0, r7, #0 - mul r0, r6 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #4] - lsl r0, r4, #0x19 - lsr r0, r0, #0x18 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - mov r0, #0x3d - str r0, [sp, #0x10] - ldr r0, [r5] - add r3, #0x98 - ldrb r3, [r3] - ldr r0, [r0, #8] - add r1, #8 - mov r2, #3 - bl FUN_02019064 - mov r0, #0 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r5] - ldr r2, _021E2794 ; =0x000003D9 - ldr r0, [r0, #8] - mov r1, #3 - mov r3, #0xb - bl FUN_0200CB00 - add r0, r5, #0 - ldr r2, _021E2794 ; =0x000003D9 - add r0, #8 - mov r1, #1 - mov r3, #0xb - bl FUN_0200CCA4 - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl MOD05_021E279C - add r1, r5, #0 - add r1, #0x96 - add r0, r5, #0 - ldrb r1, [r1] - add r0, #0xa4 - mov r2, #4 - bl FUN_02001C34 - add r1, r5, #0 - add r1, #0xb0 - str r0, [r1] - ldr r0, _021E2798 ; =MOD05_021E1E58 - add r1, r5, #0 - mov r2, #0 - bl FUN_0200CA44 - str r0, [r5, #4] - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E2794: .word 0x000003D9 -_021E2798: .word MOD05_021E1E58 - - thumb_func_start MOD05_021E279C -MOD05_021E279C: ; 0x021E279C - push {r3, r4} - add r4, r0, #0 - add r3, r0, #0 - add r4, #0xb4 - add r3, #0xa4 - str r4, [r3] - add r4, r0, #0 - add r3, r0, #0 - add r4, #8 - add r3, #0xa8 - str r4, [r3] - add r3, r0, #0 - mov r4, #0 - add r3, #0xac - strb r4, [r3] - add r3, r0, #0 - add r3, #0xad - strb r1, [r3] - add r1, r0, #0 - add r1, #0xae - strb r2, [r1] - add r1, r0, #0 - add r1, #0xaf - ldrb r2, [r1] - mov r1, #0xf - bic r2, r1 - add r1, r0, #0 - add r1, #0xaf - strb r2, [r1] - add r1, r0, #0 - add r1, #0xaf - ldrb r2, [r1] - mov r1, #0x30 - add r0, #0xaf - bic r2, r1 - strb r2, [r0] - pop {r3, r4} - bx lr - - thumb_func_start MOD05_021E27E8 -MOD05_021E27E8: ; 0x021E27E8 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - add r7, r1, #0 - add r6, r2, #0 - mov r0, #4 - mov r1, #1 - bl FUN_02018FF4 - add r4, r0, #0 - str r6, [sp] - mov r0, #0xa - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - ldr r0, [r5, #8] - add r1, r4, #0 - mov r2, #3 - add r3, r7, #0 - bl FUN_02019064 - mov r0, #0 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r5, #8] - ldr r2, _021E2888 ; =0x000003D9 - mov r1, #3 - mov r3, #0xb - bl FUN_0200CB00 - ldr r2, _021E2888 ; =0x000003D9 - add r0, r4, #0 - mov r1, #1 - mov r3, #0xb - bl FUN_0200CCA4 - add r0, r4, #0 - mov r1, #0xf - bl FUN_02019620 - mov r2, #0x7a - mov r0, #0 - mov r1, #0x1a - lsl r2, r2, #2 - mov r3, #4 - bl NewMsgDataFromNarc - mov r1, #0x12 - add r7, r0, #0 - bl NewString_ReadMsgData - mov r1, #0 - add r6, r0, #0 - str r1, [sp] - mov r0, #0xff - str r0, [sp, #4] - add r0, r4, #0 - add r2, r6, #0 - add r3, r1, #0 - str r1, [sp, #8] - bl FUN_0201BD84 - add r0, r7, #0 - bl DestroyMsgData - add r0, r6, #0 - bl String_dtor - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021E28A0 - add r0, r4, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021E2888: .word 0x000003D9 - - thumb_func_start MOD05_021E288C -MOD05_021E288C: ; 0x021E288C - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - bl FUN_0200CCF8 - add r0, r4, #0 - mov r1, #1 - bl FUN_020191A4 - pop {r4, pc} - - thumb_func_start MOD05_021E28A0 -MOD05_021E28A0: ; 0x021E28A0 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r7, r0, #0 - add r5, r1, #0 - mov r0, #0x50 - str r0, [sp] - mov r3, #0x10 - add r0, r5, #0 - mov r1, #0xf - mov r2, #0 - str r3, [sp, #4] - bl FUN_020196F4 - mov r2, #0x7a - mov r0, #0 - mov r1, #0x1a - lsl r2, r2, #2 - mov r3, #4 - bl NewMsgDataFromNarc - str r0, [sp, #0xc] - mov r0, #4 - bl FUN_0200AA80 - add r6, r0, #0 - mov r0, #0x10 - mov r1, #4 - bl String_ctor - add r4, r0, #0 - ldr r0, [sp, #0xc] - mov r1, #0x13 - bl NewString_ReadMsgData - str r0, [sp, #0x10] - ldr r0, [r7, #0xc] - bl FUN_020238F4 - bl FUN_02023A10 - add r2, r0, #0 - mov r0, #1 - str r0, [sp] - str r0, [sp, #4] - add r0, r6, #0 - mov r1, #0 - mov r3, #6 - bl FUN_0200AD38 - ldr r2, [sp, #0x10] - add r0, r6, #0 - add r1, r4, #0 - bl StringExpandPlaceholders - mov r0, #0 - add r1, r4, #0 - add r2, r0, #0 - bl FUN_02002E14 - mov r1, #0x50 - sub r3, r1, r0 - mov r0, #0x10 - str r0, [sp] - mov r0, #0xff - str r0, [sp, #4] - mov r1, #0 - add r0, r5, #0 - add r2, r4, #0 - str r1, [sp, #8] - bl FUN_0201BD84 - ldr r0, [sp, #0x10] - bl String_dtor - add r0, r4, #0 - bl String_dtor - add r0, r6, #0 - bl FUN_0200AB18 - ldr r0, [sp, #0xc] - bl DestroyMsgData - add r0, r5, #0 - bl FUN_02019220 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021E2950 -MOD05_021E2950: ; 0x021E2950 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - add r7, r1, #0 - add r6, r2, #0 - mov r0, #4 - mov r1, #1 - bl FUN_02018FF4 - add r4, r0, #0 - str r6, [sp] - mov r0, #0xa - str r0, [sp, #4] - mov r0, #2 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - mov r0, #0x29 - str r0, [sp, #0x10] - ldr r0, [r5, #8] - add r1, r4, #0 - mov r2, #3 - add r3, r7, #0 - bl FUN_02019064 - mov r0, #0 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r5, #8] - ldr r2, _021E29B0 ; =0x000003D9 - mov r1, #3 - mov r3, #0xb - bl FUN_0200CB00 - ldr r2, _021E29B0 ; =0x000003D9 - add r0, r4, #0 - mov r1, #1 - mov r3, #0xb - bl FUN_0200CCA4 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021E29C8 - add r0, r4, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021E29B0: .word 0x000003D9 - - thumb_func_start MOD05_021E29B4 -MOD05_021E29B4: ; 0x021E29B4 - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - bl FUN_0200CCF8 - add r0, r4, #0 - mov r1, #1 - bl FUN_020191A4 - pop {r4, pc} - - thumb_func_start MOD05_021E29C8 -MOD05_021E29C8: ; 0x021E29C8 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r0, #0 - str r1, [sp, #0xc] - add r0, r1, #0 - mov r1, #0xf - bl FUN_02019620 - ldr r2, _021E2A6C ; =0x00000141 - mov r0, #0 - mov r1, #0x1a - mov r3, #4 - bl NewMsgDataFromNarc - add r7, r0, #0 - mov r0, #4 - bl FUN_0200AA80 - add r5, r0, #0 - mov r0, #0x10 - mov r1, #4 - bl String_ctor - add r4, r0, #0 - add r0, r7, #0 - mov r1, #0xc5 - bl NewString_ReadMsgData - str r0, [sp, #0x10] - ldr r0, [r6, #0xc] - bl FUN_0202390C - bl FUN_02028930 - add r2, r0, #0 - mov r0, #1 - str r0, [sp] - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #0 - mov r3, #5 - bl FUN_0200AD38 - ldr r2, [sp, #0x10] - add r0, r5, #0 - add r1, r4, #0 - bl StringExpandPlaceholders - mov r0, #0 - add r1, r4, #0 - add r2, r0, #0 - bl FUN_02002E14 - mov r1, #0x50 - sub r3, r1, r0 - mov r1, #0 - str r1, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r0, [sp, #0xc] - add r2, r4, #0 - str r1, [sp, #8] - bl FUN_0201BD84 - ldr r0, [sp, #0x10] - bl String_dtor - add r0, r4, #0 - bl String_dtor - add r0, r5, #0 - bl FUN_0200AB18 - add r0, r7, #0 - bl DestroyMsgData - ldr r0, [sp, #0xc] - bl FUN_02019220 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_021E2A6C: .word 0x00000141 - - thumb_func_start MOD05_021E2A70 -MOD05_021E2A70: ; 0x021E2A70 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - add r7, r1, #0 - add r6, r2, #0 - mov r0, #4 - mov r1, #1 - bl FUN_02018FF4 - add r4, r0, #0 - str r6, [sp] - mov r0, #0xa - str r0, [sp, #4] - mov r0, #2 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - mov r0, #0x29 - str r0, [sp, #0x10] - ldr r0, [r5, #8] - add r1, r4, #0 - mov r2, #3 - add r3, r7, #0 - bl FUN_02019064 - mov r0, #0 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r5, #8] - ldr r2, _021E2AD0 ; =0x000003D9 - mov r1, #3 - mov r3, #0xb - bl FUN_0200CB00 - ldr r2, _021E2AD0 ; =0x000003D9 - add r0, r4, #0 - mov r1, #1 - mov r3, #0xb - bl FUN_0200CCA4 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021E2AD4 - add r0, r4, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021E2AD0: .word 0x000003D9 - - thumb_func_start MOD05_021E2AD4 -MOD05_021E2AD4: ; 0x021E2AD4 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r0, #0 - str r1, [sp, #0xc] - add r0, r1, #0 - mov r1, #0xf - bl FUN_02019620 - ldr r2, _021E2B7C ; =0x00000141 - mov r0, #0 - mov r1, #0x1a - mov r3, #4 - bl NewMsgDataFromNarc - add r7, r0, #0 - mov r0, #4 - bl FUN_0200AA80 - add r5, r0, #0 - mov r0, #0x10 - mov r1, #4 - bl String_ctor - add r4, r0, #0 - add r0, r7, #0 - mov r1, #0xe6 - bl NewString_ReadMsgData - str r0, [sp, #0x10] - ldr r0, [r6, #0xc] - bl FUN_0202A8D8 - mov r1, #0 - add r2, r1, #0 - bl FUN_0202A3B4 - add r2, r0, #0 - mov r0, #1 - str r0, [sp] - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #0 - mov r3, #5 - bl FUN_0200AD38 - ldr r2, [sp, #0x10] - add r0, r5, #0 - add r1, r4, #0 - bl StringExpandPlaceholders - mov r0, #0 - add r1, r4, #0 - add r2, r0, #0 - bl FUN_02002E14 - mov r1, #0x50 - sub r3, r1, r0 - mov r1, #0 - str r1, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r0, [sp, #0xc] - add r2, r4, #0 - str r1, [sp, #8] - bl FUN_0201BD84 - ldr r0, [sp, #0x10] - bl String_dtor - add r0, r4, #0 - bl String_dtor - add r0, r5, #0 - bl FUN_0200AB18 - add r0, r7, #0 - bl DestroyMsgData - ldr r0, [sp, #0xc] - bl FUN_02019220 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_021E2B7C: .word 0x00000141 - thumb_func_start MOD05_021E2B80 MOD05_021E2B80: ; 0x021E2B80 add r2, r0, #0 @@ -43528,197 +40432,6 @@ _021F6428: .word MOD05_021F57F0 .section .rodata - .global UNK05_021F6908 -UNK05_021F6908: ; 0x021F6908 - .word 0x0001004B, 0x000000FE - - .global UNK05_021F6910 -UNK05_021F6910: ; 0x021F6910 - .word 0x00010001, 0x00010067, 0x000000FE - - .global UNK05_021F691C -UNK05_021F691C: ; 0x021F691C - .byte 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x73, 0x02 - .byte 0x74, 0x02, 0xFF, 0xFF, 0x75, 0x02, 0x00, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00, 0xFF, 0xFF, 0x76, 0x02, 0x77, 0x02, 0xFF, 0xFF, 0x78, 0x02 - .byte 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0xFF, 0xFF - .byte 0x79, 0x02, 0x7A, 0x02, 0xFF, 0xFF, 0x7B, 0x02, 0x4A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x02 - .byte 0xFF, 0xFF, 0x7D, 0x02, 0x4C, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x51, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x02, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x02, 0x2B, 0x02, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0xFF, 0xFF, 0x7F, 0x02, 0x80, 0x02, 0x81, 0x02, 0x00, 0x00 - .byte 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x00, 0xFF, 0xFF - .byte 0x82, 0x02, 0x83, 0x02, 0x84, 0x02, 0x00, 0x00, 0x39, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x01, 0x85, 0x02 - .byte 0x86, 0x02, 0xFF, 0xFF, 0x87, 0x02, 0x00, 0x00, 0x84, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x8C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x02, 0x00, 0x00, 0x86, 0x00, 0x86, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x89, 0x02, 0x00, 0x00 - .byte 0x57, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x10, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x01, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8A, 0x02, 0x00, 0x00 - .byte 0x7D, 0x01, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x01, 0x7E, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0x02, 0xFF, 0xFF, 0x8C, 0x02 - .byte 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x1A, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0xFF, 0xFF, 0x8D, 0x02, 0x8E, 0x02 - .byte 0xFF, 0xFF, 0x8F, 0x02, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x1D, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x1E, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0xFF, 0xFF, 0x90, 0x02, 0x91, 0x02 - .byte 0xFF, 0xFF, 0x92, 0x02, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x4B, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0x93, 0x02, 0xFF, 0xFF, 0x94, 0x02, 0x15, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0x95, 0x02, 0x2D, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x02 - .byte 0x2E, 0x02, 0x2E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x02, 0x2F, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xAA, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0x02, 0x00, 0x00, 0x16, 0x01, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0x98, 0x02, 0xFF, 0xFF, 0x99, 0x02, 0x1A, 0x01, 0x1A, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x02 - .byte 0x34, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x02, 0x35, 0x02, 0x35, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x02, 0x36, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x37, 0x02, 0x37, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x38, 0x02, 0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x43, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x9C, 0x02, 0x00, 0x00, 0x1E, 0x01, 0x1E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x1F, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0x02, 0xFF, 0xFF, 0x9E, 0x02, 0x3D, 0x02, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x02, 0x3E, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xA0, 0x02, 0x3F, 0x02, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x40, 0x02, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x02, 0x41, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x02, 0x42, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x02, 0xFF, 0xFF, 0xA2, 0x02 - .byte 0x20, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x02, 0x47, 0x02, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x02, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x02 - .byte 0xFF, 0xFF, 0xA6, 0x02, 0x21, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x02 - .byte 0x49, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x02, 0x22, 0x01, 0x22, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x01, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xA9, 0x02, 0xFF, 0xFF, 0xAA, 0x02 - .byte 0x16, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0xFF, 0xFF - .byte 0xAB, 0x02, 0xFF, 0xFF, 0xAC, 0x02, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x5B, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x5C, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x99, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0x02, 0x00, 0x00, 0x9A, 0x00, 0x9A, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xAC, 0x00, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xAD, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x02, 0x00, 0x00, 0xAE, 0x00, 0xAE, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x41, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x02, 0xFF, 0xFF, 0xB0, 0x02, 0x26, 0x01, 0x26, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x02 - .byte 0xFF, 0xFF, 0xB2, 0x02, 0x54, 0x00, 0xFF, 0xFF, 0xB3, 0x02, 0xB4, 0x02, 0xFF, 0xFF, 0xB5, 0x02 - .byte 0x2C, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x02, 0x00, 0x00, 0x71, 0x00, 0x71, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x31, 0x01, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x01, 0xB9, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x02 - .byte 0xB8, 0x02, 0x00, 0x00, 0x31, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x82, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x01, 0x32, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x02 - .byte 0xFF, 0xFF, 0xBA, 0x02, 0x34, 0x01, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x45, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x02, 0x00, 0x00, 0x39, 0x01, 0x39, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xBC, 0x02, 0x4C, 0x02, 0x4C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x37, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xBD, 0x02, 0xFF, 0xFF, 0xBE, 0x02, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0xBF, 0x02, 0xC0, 0x02, 0xFF, 0xFF, 0xC1, 0x02, 0x00, 0x00 - .byte 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x01, 0xC2, 0x02 - .byte 0xC3, 0x02, 0xC4, 0x02, 0x00, 0x00, 0x00, 0x00, 0x43, 0x01, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x13, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x28, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x29, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x01, 0x46, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xC3, 0x01, 0xFF, 0xFF, 0xC5, 0x02, 0xC6, 0x02, 0xFF, 0xFF, 0xC7, 0x02 - .byte 0x0D, 0x00, 0xC8, 0x02, 0xC9, 0x02, 0xFF, 0xFF, 0xCA, 0x02, 0x00, 0x00, 0x47, 0x01, 0xFF, 0xFF - .byte 0xCB, 0x02, 0xCC, 0x02, 0xCD, 0x02, 0x00, 0x00, 0x48, 0x01, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x23, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x01, 0xCE, 0x02 - .byte 0xCF, 0x02, 0xFF, 0xFF, 0xD0, 0x02, 0x00, 0x00, 0x35, 0x00, 0xFF, 0xFF, 0xD1, 0x02, 0xD2, 0x02 - .byte 0xD3, 0x02, 0x00, 0x00, 0x58, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x59, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x5A, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x4C, 0x01, 0xFF, 0xFF, 0xD4, 0x02, 0xD5, 0x02, 0xD6, 0x02, 0x00, 0x00 - .byte 0x4D, 0x01, 0x4D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xD7, 0x02, 0xD8, 0x02, 0x53, 0x00, 0xFF, 0xFF, 0xD9, 0x02, 0xDA, 0x02, 0xFF, 0xFF, 0xDB, 0x02 - .byte 0x5E, 0x00, 0xFF, 0xFF, 0xDC, 0x02, 0xDD, 0x02, 0xFF, 0xFF, 0xDE, 0x02, 0x5F, 0x00, 0x5F, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xDF, 0x02, 0x50, 0x02, 0x50, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x51, 0x02, 0x51, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF - .byte 0xE0, 0x02, 0xE1, 0x02, 0xFF, 0xFF, 0xE2, 0x02, 0x61, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x52, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x02 - .byte 0x53, 0x02, 0x53, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x02, 0x54, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xB4, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x51, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x02, 0xE5, 0x02, 0x52, 0x01, 0x52, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xE6, 0x02, 0x62, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x01, 0xFF, 0xFF - .byte 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x02, 0x00, 0x00, 0x46, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0xFF, 0xFF - .byte 0xEA, 0x02, 0xEB, 0x02, 0xEC, 0x02, 0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x93, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x01, 0xE8, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0x01, 0xE9, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0xEA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x5A, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x02, 0xFF, 0xFF, 0xEE, 0x02, 0xEB, 0x01, 0xEB, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x01, 0xEC, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x89, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x02, 0xF0, 0x02, 0x00, 0x00, 0x8E, 0x00, 0x8E, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x02 - .byte 0xFF, 0xFF, 0xF2, 0x02, 0x8A, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x8B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x02, 0xF4, 0x02, 0x00, 0x00, 0x90, 0x00, 0x90, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x02 - .byte 0xF6, 0x02, 0x00, 0x00, 0x67, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x68, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x9F, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xA1, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xA6, 0x00, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x00, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x02, 0xB8, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xB9, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x02 - .byte 0xBA, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x00, 0xBB, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x00, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x55, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x02 - .byte 0x56, 0x02, 0x56, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x02, 0x57, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x02, 0x58, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x6A, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x00, 0xA2, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xA7, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x00, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x02, 0xBE, 0x00, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x02, 0xC1, 0x00, 0xC1, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x00, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xEE, 0x01, 0xEE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x59, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x02, 0x5A, 0x02, 0x5A, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x02, 0x5B, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x5C, 0x02, 0x5C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x03 - .byte 0x01, 0x03, 0xFF, 0xFF, 0x02, 0x03, 0x00, 0x00, 0x64, 0x01, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x6B, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x04, 0x03, 0x00, 0x00 - .byte 0x66, 0x01, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x01, 0x67, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x03 - .byte 0x07, 0x03, 0x00, 0x00, 0x68, 0x01, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x69, 0x01, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0x06, 0x03, 0xFF, 0xFF, 0x08, 0x03, 0x6A, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0x09, 0x03, 0x5D, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x03 - .global UNK05_021F745C UNK05_021F745C: ; 0x021F745C .byte 0x00, 0x02, 0x05, 0x07, 0x01, 0x06, 0x03, 0x04 |