summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCleverking2003 <30466983+Cleverking2003@users.noreply.github.com>2020-07-22 21:54:07 +0300
committerGitHub <noreply@github.com>2020-07-22 21:54:07 +0300
commit95d03abbfc10558d4a51f38d8131d47bbded6f8e (patch)
tree45f35a52ea8ff6021fc06ba1bf4690a83ce1de2c
parent7cd7b320d3336bdfe57b0a9d12174e32b242c088 (diff)
parent618a599c5bacc80d88c0d461ecb1efac7674dd7c (diff)
Merge pull request #242 from red031000/master
split mod05_021E1374 to mod05_02E1AD8 + arm9 OS_alarm
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/OS_alarm.s350
-rw-r--r--arm9/lib/include/OS_alarm.h14
-rw-r--r--arm9/lib/include/OS_interrupt.h1
-rw-r--r--arm9/lib/include/registers.h1
-rw-r--r--arm9/lib/src/OS_alarm.c250
-rw-r--r--arm9/modules/05/asm/mod05_021E1374.s1178
-rw-r--r--arm9/modules/05/asm/mod05_021E1AD8.s2119
-rw-r--r--arm9/modules/05/asm/module_05.s3287
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